00:02:11 pikhq: opinions? 00:02:30 pikhq: I've used UMSDOS 00:03:19 seemed to work fine 00:03:40 pikhq: hmm 00:03:40 one way to do IPC 00:03:40 would be very simple 00:03:53 you can send off an opaque message -- (void *) -- to a process 00:03:53 my latop hd was too small to partition, so win95 and linux shared the drive 00:03:59 then use poll() or whatever to get a response, async 00:04:14 if IO is a process, then all IO becomes async 00:06:14 best period 1260 sequence (5 moves): L F' R2 L U' 00:06:40 pikhq: p.s. i've seen this passed around http://www.jamesmolloy.co.uk/tutorial_html/index.html 00:06:45 maybe better than bran's tutorial 00:08:40 pikhq: it seems to be more modern & thorough 00:09:20 Tutorial, shmootorial. 00:09:49 pikhq: hey, i haven't seen one "COPY 'N PASTE THIS" in it yet 00:09:59 & it has even a chapter on multitasking 00:10:02 so i'd say -- worth a look 00:10:12 calamari: i found a wikipedia article on the Rubik's Cube group, but nothing about its largest element order 00:10:23 pikhq: heh, the gdt stuff is nice and long 00:10:26 & actually explains it ;) 00:10:45 -!- Sgeo has joined. 00:10:48 oerjan: I'm having success combining that sequence with color-based turns 00:11:08 ehird: I'm still proud of doing it myself. :p 00:11:09 -!- jix has quit ("CommandQ"). 00:11:20 oerjan: for example if the upper right color is red, turn the right side 00:12:18 oerjan: so far I've gone out to a million iterations and it's not too bad.. right now tweaking it for the most even distribution 00:12:21 pikhq: I would still take a look at the stuff there. 00:13:36 you mean it hasn't come back after a million iterations? 00:14:10 oerjan: if it had, then the distribution would badly skew 00:14:27 hm wait, are you actually iterating the same exact moves? 00:14:34 yes 00:14:51 those 5 moves, plus 1 color based move 00:15:20 no i mean, the color based move does not necessarily repeat after a while 00:15:33 only if the cube does 00:15:37 it might not be reversible 00:15:47 that's a good thing, isn't it? 00:16:24 i mean you might _never_ get back to the original state 00:16:31 perhaps not 00:16:57 calamari: you should check if any intermediate states repeat 00:17:01 yes I should 00:17:09 but I am not sure how to do that 00:17:15 -!- oklofok has joined. 00:17:32 do you know of an algorithm that doesn't use a linear amount of ram? 00:17:44 there's a simple way - you keep the states at time n and 2*n 00:17:56 -!- oklopol has quit (Connection reset by peer). 00:18:33 you can easily calculate those incrementally 00:18:34 what do mean? 00:19:03 pikhq: http://www.jamesmolloy.co.uk/tutorial_html/7.-The%20Heap.html this kind of thing jus treminds you that malloc()ing small blocks frequently should probably be considered harmful ;) 00:19:08 (1) put your original state in two variables 00:19:30 (2) do one iteration on the first copy, two iterations on the second 00:19:47 (3) check if they have become equal. if not, go to (2) 00:19:54 nice 00:20:11 thank you.. I will do that immediately 00:21:06 this will show if they repeat, although not necessarily the first point at which a repetition occurs 00:21:58 is there a name for that algorithm? 00:22:05 don't know 00:22:07 I'd like to read more about it on wikipedia 00:22:25 ahh ok.. well thanks :) it's good 00:29:12 boom.. repeated 00:29:23 * oerjan is not surprised 00:29:25 so it's not good enough yet 00:30:07 -!- timotiis has quit ("leaving"). 00:31:00 well it'll have to repeat eventually since there are only ~45-48 bits of state in a rubiks cube 00:31:23 but I'm sure that look much less time than 45 bits 00:31:27 tool 00:31:32 argh... 00:31:35 took 00:36:01 sorry, but i just googled for "rubik's-cube period 1260" and the first result contains the text "Maximum order for the Rubik's Cube is known to be 1260". 00:37:34 pikhq: Hmm. mallocd. 00:37:35 :-) 00:37:39 :) 00:38:11 pikhq: mallocd is, of course, started by procd, which while doing the internal book-keeping required to start mallocd, utilizes mallocd to allocate its structures. 00:38:19 :D 00:39:06 heh, if mallocd existed: 00:39:28 And I assume you've got mallocd running in ring 1? 00:40:39 hmm 00:40:46 i'm not sure how you'd send stuff off to the malloc process 00:40:53 a normal 'fd' sounds tempting, but somehow wrong :) 00:40:55 pikhq: heh, guess so 00:41:02 but that recursive dependencys kinda the main nag! 00:41:05 Message-passing, of course. 00:41:17 pikhq: yes 00:41:22 but through which method 00:41:26 FDs would be the unixy way 00:42:17 oerjan: however that is when applying the algorithm without taking color into account 00:42:19 pikhq: e.g., assuming 'write' is the syscall.. 00:42:25 how do you represent sending over a size_t? 00:42:32 since write takes a const void * 00:42:45 & you can't reliably cast 00:43:04 but anyway, PSEUDOcode for malloc: 00:43:22 sorry, what are you guys doing? 00:43:31 looks like an operating systems class in here 00:43:58 calamari: heh 00:44:03 calamari: pikhq's writing a little kernel 00:44:07 i'm throwing around batty ideas 00:44:21 posix? 00:44:27 calamari: that's his intention 00:44:31 nifty 00:44:38 calamari: yeah. i think if you have a sufficiently complicated test you should be able to take a tour around the longest path of the _graph_ of the cube, which surely must be longer 00:45:02 (graph of configurations) 00:45:31 yeah I figure there's no algorith that'll result in every combination being used in the sequence 00:45:37 pikhq: http://www.exclaim-project.org/ I would admire the progress on this toy OS if the creator didn't take it so ?$()%@?! seriously 00:45:59 He seriously thinks that some day not far from now it could be actually used on real systems in place of linux 00:46:06 /sigh 00:46:24 calamari: that's essentially the question of whether the configuration graph has a hamiltonian path 00:46:37 right 00:47:24 * oerjan wonders if that is even known, this being NP-complete to check and all 00:47:50 pikhq: ah, i know how mallocd could exist 00:47:58 the kernel 'pretends' to be multiple processes 00:48:01 procd, mallocd, etc 00:48:09 they act just like regular, good ol' fashioned processes 00:48:19 but they're actually coupled into the kernel core, because well -- they are core 00:48:32 pikhq: good idea? 00:49:22 oerjan: thanks for all the help with this :) 00:49:44 Evil. 00:49:48 But that'd work. 00:49:55 Is there a point to Exclaim? 00:50:05 mallocd? 00:50:07 Probably not. 00:50:38 what's mallocd? 00:52:06 A malloc daemon. 00:52:32 WHY would there be a malloc daemon? 00:52:43 * Sgeo goes insane 00:52:45 Sgeo: You didn't even know what malloc was before I told you. 00:52:52 I don't think you really should be questioning things like that ;) 00:53:07 However, mallocd may be a bit overkill, but still pretty awesome. 00:53:34 Make all library stuff a separate process while we're at it! 00:53:47 brb 00:53:53 Sgeo: Welcome to microkernel. 00:54:27 calamari: Actually, my plan is to just provide enough syscalls to easily port over some good library. 00:54:37 (POSIX/C library, of course) 00:54:56 pikhq: There's a nice one of them specifically deisgned for hobby OSes 00:54:57 let me find it.. 00:55:02 who was talking about newlib the other day? 00:55:19 libgloss? 00:55:59 I was. 00:56:19 pikhq: Here you go 00:56:19 http://sourceforge.net/projects/pdclib 00:56:26 Plus it's public domain-ey-ness. 00:56:28 Which is nice. 00:56:35 And the configuration to bind it into your kernel is really simple. 00:57:21 How does one go about making a kernel? 00:57:31 Sgeo: Oh god, please don't. 00:57:31 With much pain and agony. 00:57:42 If you don't grok C, don't bother. 00:57:46 I do *not* want to have to support the design desicions of Sgeokern. 00:57:48 not that much pain or agony.. depending on the kernel :) 00:57:55 if lgdt [eax] makes you run in fear, then don't. 00:57:58 pikhq: C knowledge is hardly enough; you need to know quite a bit about how the actual machine works.. 00:58:08 calamari: He doesn't use C, as far as I know. 00:58:08 for various values of 'quite a bit' 00:58:14 I guess Python doesn't cut it 00:58:22 pikhq: ahh that's right .. hehe 00:58:24 Sgeo: What lead you to make that deduction? 00:58:32 Sheer cunning intellect? :-) 00:58:33 although my BOS kernel was written in x86 asm 00:58:33 ehird: True, but if you don't know C, then you *don't* know enough about how the machine works. 00:58:40 pikhq: Quite true. 00:58:46 Although, why can't Python be compiled into x86 instructions? 00:58:53 calamari: Okay, if you write it in assembly, you've *proven* that you know enough. 00:58:55 Sgeo: that wouldn't help 00:59:00 -!- sebbu has quit ("@+"). 00:59:01 you still need lower-level access than python exposes 00:59:07 plus, python is pretty uncompilable 00:59:12 Sgeo: How would you make Python write to an arbitrary address? 00:59:14 youd just compile it down to some vm opcodes, basically. 00:59:17 it's been done. 00:59:21 it's just too dynamic. 00:59:35 besides, if you DO do that, AND then strap on the low-level tweaks into python.. 00:59:41 you've just lost any advantage of python and made it a pain. 00:59:49 there's a reason C is so close to the metal in all aspects. :) 00:59:54 And you would've spent less time learning C and assembly. 01:00:11 Also, if you're doing kernel C you learn to be edgy. 01:00:31 In Python code, you just throw anything around and the gc will mostly make everything go peachy in the end. 01:00:33 Are there other C-likes that are easy like Python, but still compilable and can access low-level stuff? 01:00:38 Whereas in a kernel... 01:00:38 pikhq: so are you planning on using newlib then? probably a gcc compiled for it so you don't have to go through that pain 01:00:42 Sgeo: hee 01:00:54 calamari: Probably. 01:00:56 'I want to write a kernel!! But that low-level stuff frightens and confuses me, so I don't want to really learn it.' 01:01:03 Compiling GCC for it is *not* that big of a deal. . . 01:01:06 I've done worse. 01:01:11 pikhq: check out pdclib! 01:01:21 (Setting up a Hurd cross-dev environment? *shudder*) 01:01:38 * Sgeo looks up libc 01:01:51 Sgeo: Sure there is. It's called *C*. 01:01:58 :p 01:02:31 I forget the compiler option used for compiling kernels 01:02:36 Doesn't at least some of the ker.. no, I guess you write in C, compile it on an already-made system, and it works as a kernel, and you could possibly compile the source on that kernel now that exists 01:02:38 pikhq: But C is haaaard! Let's go shopping. 01:03:10 ehird: no need to mock 01:03:15 calamari: that's a meme :) 01:03:24 Sgeo: Yes, at least some of the kernel needs to be in assembly. 01:03:36 ehird: you didn't know C at one time too.. hehe 01:03:57 ..but why? Can't C be compiled into x86? Isn't that why C is used? 01:03:57 * pikhq looks at gdt_asm.s. . . 01:03:59 calamari: No actually 01:04:04 I learned C before my conception 01:04:11 God gave me the power as soon as I was formed 01:04:12 Sgeo: Because C doesn't expose *everything*. 01:04:19 ehird: what was your return code when you came out ? 01:04:22 Like, say, the registers. ;) 01:04:23 Aborting me would be a henious crime indeed, because all my genius was already there! 01:04:27 calamari: pi. 01:04:41 ehird: float or double? 01:04:43 calamari: in http://www.math.niu.edu/~rusin/known-math/00_incoming/dirac Chip Eastham makes an educated guess that the graph does not have a hamiltonian path 01:04:56 I'm curious, though. . . Would it be possible, or even *sane*, to implement my asm_gdt_load function via just some inline assembly? 01:05:05 calamari: No. Every digit. 01:05:08 Do you need direct access to registers to make a kernel? 01:05:09 The truly godly type! 01:05:12 Sgeo: Yes. 01:05:14 ehird: you need to go back to C class 01:05:17 ehird, why? 01:05:22 Sgeo: You need direct access to *everything* 01:05:33 * Sgeo doesn't quite see why.. 01:05:37 If the thing at the root of your system doesn't access every part, what are they going to do? sit around being bored? :) 01:06:07 calamari: Shush. 01:06:18 Nature's 4-day harmonious time cube allowed me to do it. 01:06:35 People who say that the real pi cannot be a return value are educated stupid! 01:07:08 * pikhq returns pi 01:07:11 Base pi, of course. 01:07:16 Although I guess the libc needs to be partially in asm.. although what if libc is compiled with another libc, then once that preliminary version is done, compile it with itself? 01:07:19 lol, #awesome is being invaded by people, apparently related to a project called awesome :P 01:07:53 oerjan: great link, thanks 01:07:54 Sgeo: I can make *libc* without assembly. 01:08:05 ehird: :DD 01:08:15 owned those bastards! 01:08:17 Assuming that my syscall interface has a function entering the kernel at a specified address. . . 01:08:26 Hmmmmmmmm 01:08:40 If I made a project called libjesus, I'll bet I could protest FreeNode and take over #jesus . 01:08:48 Anyways, are people here going to test PSOX 1.0b1 when it comes out? 01:08:52 Sgeo: libc is basically all in C 01:09:01 because, well, it 01:09:07 's the *C library* 01:09:08 :) 01:09:09 Then, I need only do (kernel_entry)(syscall, args); 01:09:10 brb 01:09:10 GregorR: just make sure it's your project otherwise you'll only get ##jesus :( 01:09:20 ehird: It sometimes has inline assembly. 01:10:03 hmmm... actually that means the current channel should be ## too 01:10:06 Specifically, asm("foo. . ." /* Load args to the syscall in registers.*/ "int $0x80" /* Enter the kernel. */); 01:11:20 calamari: yes 01:11:23 but once we get irc.eso-std.org ;) 01:11:27 we can have # ! 01:11:31 ooh 01:11:35 #!/bin/esoteric 01:12:00 Does anyone in here besides myself even care about PSOX? 01:12:02 # is a valid channel name! 01:12:03 it works, it exists. 01:12:17 Sgeo: i mostly care about your mother, tbh 01:12:17 ehird: yeah 01:12:22 Sgeo: More people did before you started whining about how nobody cares about it and bothering everyone about that fact :-D 01:13:02 Sgeo: well, I thought I'd try to be interested, but you shot down every one of my ideas and suggestions without giving them a moment's though.. so yeah then I lost interest.. oops :) 01:13:34 calamari, um.. oO log link? 01:13:44 calamari is one bitter bitch 01:13:45 ! 01:13:59 actually 01:14:01 we could have + 01:14:08 oklofok: people try to eat me, so I became bitter to dissuade them 01:14:10 calamari: so true, so true 01:14:41 :D 01:14:44 Sgeo should learn to phrase his questions as 'anyone want to reaffirm the way i'm doing this?' :) 01:14:52 * oerjan notes that neither #islam, #muhammed nor #buddha exist... 01:15:27 this is fun, i went to sleep at about 22.00 so that i could wake up early... 01:15:34 [00:15] * Cannot join #christian (Channel is invite only). 01:15:34 woke up at 1:14 01:15:37 is that appropriate for freenode 01:15:37 :| 01:15:58 let's report them! 01:16:06 [00:15] * You have left channel #anus (requested by ChanServ: "GODDAMNED*WANKERS") 01:16:10 i wanted to be in anus 01:16:12 :( 01:16:38 I think I made a comment about it needing and/or/xor 01:17:19 ..and it does 01:17:24 * oerjan imagines GregorR going to protest #jesus and Freenode staff answering, "Oh no, the channel owner gave us conclusive proof that he is representing Jesus. Unfortunately we are not at liberty to disclose it" :D 01:17:28 What else did you suggest? 01:18:53 * Sgeo pokes calamari 01:19:05 Sgeo: that kind of incessant prodding is why people have been ignoring psox 01:19:10 can't you be .. a little more patient? 01:19:55 KjSDKLFjsdf;jsdjsdfsdfsdf 01:19:58 #awesome is REGGD 01:20:12 awesome. 01:20:32 Hm, a discussion about the LNUM/LBYTES format 01:20:35 umm... by you? 01:21:04 between myself and calamari 01:21:41 * oerjan pokes calamari with some salt and pepper, and olive oil 01:22:02 http://bespin.org/~nef/logs/esoteric/08.02.17 01:22:36 ircbrowse.com 01:22:37 srsly 01:23:35 * pikhq realises that it is possible to implement *hard links* using FAT. 01:24:03 fat is not a REAL MAN 01:32:53 pikhq: I want driectory hard links :P 01:33:27 pikhq: what about a file system whose structure is a filesystem 01:33:28 I use mount --bind for that now.. so never mind :) 01:33:30 not an opaque amount of bits 01:33:33 ditto for that one 01:33:37 turtles, down, all the way 01:33:58 ehird: need a base case to end the recursion 01:34:04 calamari: nonsense 01:34:08 just use an infinity machine 01:34:20 the empty system, of course. if it works for ZFC... 01:34:21 the #1 preferred platform of choice for turtle-system designers & implementers 01:34:32 Infinity machine: http://www.chiark.greenend.org.uk/~sgtatham/infinity.html 01:35:01 hmm, has anyone coded the empty os yet? 01:35:02 If endeavour was written, I'd pronounce that as '@what infinity machine=http://www.chiark.greenend.org.uk/~sgtatham/infinity.html' 01:35:15 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)). 01:35:33 that would be ...well, awesome 01:35:36 oklofok: it was coded by Zen Buddhist monks in the early 9th century 01:35:48 oh, i see 01:36:08 they didn't need to invent hardware for it, since it was empty. 01:36:24 oh, and if i ever decided i was pasting '@what infinity machine' to people too much after mentioning it, 01:36:27 i'd do something like: 01:36:42 '@counter infinity machine=@what infinity machine' 01:36:47 where @counter msg=cmd 01:36:57 means 'whenever i say something which contains msg, run cmd.' 01:36:57 :D 01:37:01 need to make an ipod shuffle os 01:37:14 calamari: no uclinux support 01:37:15 :) 01:37:21 Somebody should make an emulator for the infinity machine that always displays just how much slower than realtime it's going :P 01:37:30 ehird: yeah.. guess I need the compiler first don't I 01:38:30 pikhq: linux boots slow on my ipod video.. at least make yours boot really fast :) 01:38:54 -!- Sgeo has joined. 01:38:59 you know what a really good infinity machinie program would be? 01:39:02 Back 01:39:06 ehird: the universe? 01:39:07 What did I miss? 01:39:11 one that somehow interacted with a normal webserver machine 01:39:12 basically 01:39:21 it would accept programs 01:39:25 over the web 01:39:28 check them for safety 01:39:31 then send it off to the infinity machine 01:39:37 which would run them 01:39:42 and then send its computation result over the wire 01:39:45 back to the browser 01:39:56 also a web service with api bindings to most langauges 01:40:03 infinite computing made easy, for everyone! 01:40:25 and since it can speed everything up infinitely, it will only EVER take about a millisecond more than the network lag for any computation 01:40:51 Way to aim high. 01:41:40 GregorR: to be honest 01:41:45 if you have a web server 01:41:48 and an infinity machine 01:41:52 it would be a few weeks project 01:42:07 safety checking -- the infinity machine would probably have stuff for that anyway, see the article 01:42:30 My last statement was what we in the biz call "sarcasm" 01:42:34 so, all it has to do is splice in 'infinity's at every step possible, so that even non-'infinity'-using code will run fast 01:42:39 GregorR: Still. :p 01:43:30 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)). 01:44:06 GregorR: Would be pretty useful. 01:44:07 -!- bsmntbombdood has joined. 01:44:14 Especially since you'd only ever need a one function api. 01:44:21 string -> ? 01:44:27 hi bsmntbombdood 01:44:32 an optionally a 'cluster' thingy 01:44:40 to specify a custom infinity machine 01:45:57 GregorR: :D 01:47:07 pikhq: hmm 01:47:13 procd handles sending messages to procs 01:47:16 but it does this through a message 01:47:24 > solve(CONUNDRUM); 01:48:14 Hmm. 01:48:36 Your kernel would need to handle the message-passing system. 01:48:59 pikhq: But the kernel only manifests itself in the multiple processes it pretends to be. 01:49:44 messaged. 01:49:45 ; 01:49:47 ;p 01:50:05 -!- CakeProphet has quit ("haaaaaaaaaa"). 01:50:06 pikhq: Well, messaged would just essentially split up about 2 parts of procd for no reason and retain the same problem 01:50:06 :P 01:50:13 Fine, fine. 01:50:22 I guess I could have TWO primitives.. 01:50:29 That is, the send, and the async-get-response 01:50:34 Yeah. 01:50:37 who here linked the bogosort paper? 01:50:41 was it faxathisia? 01:50:43 pikhq: Of course when programming an app you shouldn't worry about any of this stuff 01:50:45 And optimise the fuck out of that. 01:50:48 pikhq: it's low level, behind the scenes stuff 01:50:52 you'll have to do 01:51:04 #include 01:51:08 and they'll haev names like 01:51:18 MyOS_send_ 01:51:24 the trailing underscore means BEWARE 01:51:37 but yeah, in most apps you'll just use everything like normal. 01:51:56 except that if you want to use asynchronous IO you can use the stadard posix interfaces with one difference.. 01:52:06 everything will seem a lot snappier, because in the background, that's what its doing natively :) 01:53:24 :) 01:53:51 oh, and of course 01:54:03 it will include a user-level version of that message passing stuff 01:54:15 to make asynchronous server and client programming <3, even in C 01:54:20 pikhq: awesome idea, or pwnsome idea? 01:54:33 and ofc you could easily port the api to an inferior OS by emulating the ipc interface it uses :) 01:56:31 pikhq: hmm, i think the main user-level interface will be this 01:56:49 err 01:56:51 better post an example 01:56:51 heh 02:00:28 -!- olsner has quit ("Leaving"). 02:03:20 pikhq: behold -- 02:03:31 http://pastebin.ca/935965 actually nice-looking event based programming thingy in c 02:04:25 hmm, wait 02:04:28 need a null terminator there 02:05:10 pikhq: new - http://pastebin.ca/935970 02:06:00 typedef struct {char *name; size_t ac; void *fp;} LWmessage_t; 02:06:07 i wish i could give you a scary funcptr type 02:06:12 but that's all that iwll work :) 02:07:38 pikhq: I like my cheap interning trick though 02:09:05 hm 02:09:07 need a cast 02:09:08 :) 02:12:33 err 02:12:34 no char 02:12:51 wow 02:12:58 const *const is a valid type on c 02:13:00 all on its own?! 02:13:04 wtf 02:14:59 defaults to int perhaps? 02:15:09 like short int = short 02:19:21 And const = const int. 02:30:32 * Sgeo is bored 02:30:43 And I really should be doing homework 02:36:41 -!- ehird has quit ("This computer has gone to sleep"). 02:38:06 -!- oerjan has quit ("leaving"). 02:44:16 -!- Sgeo has quit (Remote closed the connection). 02:45:11 -!- Corun has quit (Read error: 110 (Connection timed out)). 02:47:53 -!- Sgeo has joined. 03:00:30 i just realized the translation of "windows for workgroupsversion 3.11" on my old comp was wrong 03:01:12 quite dazzzzzling 03:01:25 also, i need a better keyboard 03:33:49 -!- Sgeo has quit ("Ex-Chat"). 03:34:09 -!- Sgeo has joined. 03:41:51 wow, spacewar on PDP-1 actually looked really pretty. 03:41:52 http://en.wikipedia.org/wiki/Image:Spacewar%21-PDP-1-20070512.jpg 03:43:58 cool 03:44:51 Well, of course. The PDP1 wasn't this piece of crap that we have on our desks. . . 03:45:10 Oh, you meant it actually *looked* pretty, not that its code was elegant. 03:45:11 :p 03:55:50 yes, it looks pretty 03:56:02 compare with http://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/KSpaceDuel1.1.png/800px-KSpaceDuel1.1.png 03:56:07 ewww 04:13:32 -!- AnMaster has quit (Connection timed out). 04:14:34 -!- AnMaster has joined. 04:20:39 -!- calamari has quit ("Leaving"). 04:23:40 -!- calamari has joined. 05:16:52 Bye all 05:16:56 -!- Sgeo has quit ("Ex-Chat"). 06:48:36 -!- calamari has quit ("Leaving"). 07:51:16 -!- BMeph has quit ("calls it a night"). 07:59:59 -!- clog has quit (ended). 08:05:29 -!- clog has joined. 08:05:29 -!- olsner has joined. 09:23:38 -!- oerjan has joined. 09:48:57 -!- olsner has quit ("Leaving"). 09:53:05 http://obsoleteskills.com/Skills/Skills 10:14:42 -!- faxathisia has quit ("If there are any aliens, time travellers or espers here, come join me!"). 10:18:10 -!- AnMaster has quit (Connection timed out). 10:19:31 -!- AnMaster has joined. 10:41:48 -!- puzzlet has quit (Remote closed the connection). 11:06:01 -!- Xion has joined. 11:06:43 Carlos Castaneda rulezZ 11:07:07 FIGHT! 11:08:35 * oerjan informs Xion that #esoteric is about esoteric programming languages. Our topic has just been a bit anarchic of late. 11:10:00 Ouch 11:10:10 Although it doesn't mention castenada 11:10:17 indeed not 11:13:46 -!- Xion has left (?). 11:32:57 now excuse me while i go to refill my Qi... 11:33:00 -!- oerjan has quit ("leaving"). 14:18:20 -!- Corun has joined. 14:24:51 -!- timotiis has joined. 14:43:48 -!- atsampso1 has quit (Read error: 113 (No route to host)). 15:26:14 -!- Corun has quit ("This computer has gone to sleep"). 15:38:28 -!- RedDak has joined. 16:11:31 -!- faxathisia has joined. 16:12:03 :/ 16:12:05 http://pb.eso-std.org/ 16:12:33 does not load 16:12:42 -!- BMeph has joined. 17:04:49 -!- sebbu has joined. 17:08:57 -!- RedDak has quit (Remote closed the connection). 17:15:22 -!- timotiis has quit (Read error: 104 (Connection reset by peer)). 17:33:59 -!- ais523 has joined. 17:34:38 slereah__: INTERCAL's unary operators work by opping the number and the number rotated to the left 17:34:56 e.g. #V2 is #6 (...0010 or ...0100) 17:43:47 -!- Tritonio_ has quit (Remote closed the connection). 17:50:17 -!- timotiis has joined. 18:26:53 -!- boily has joined. 18:28:12 -!- boily has quit (Client Quit). 18:40:45 is there a programming language with macros that are easy to write? 18:46:04 lament: depends on what you mean by "macros" 18:46:13 and "easy to write", for that matter 18:46:47 well, i'm looking at scheme and CL macros... 18:46:52 and they just seem way too complicated 18:46:57 to actually use extensively 18:47:17 unlike scheme and lisp, which are nice languages, scheme and lisp macros are not nice languages. 18:47:49 i'd rather do my pattern matching and substitution with some other, better-suited tool. 18:47:50 lament: you could use m4 18:47:58 although it's not all that easy to write due to issues with nested quoting 18:48:11 (it's a TC language based entirely on macros, and almost an esolang) 18:48:39 yeah, i know about m4, but it seems a good macro system should be aware of the syntax of the language (as it is in lisp) 18:49:39 i guess the real problem is that each macro definition is a compiler 18:49:58 and to write a lot of compilers you want a very powerful language 18:50:23 which syntax-rules doesn't strike me as :) 18:51:45 ISTR there was an assembler which used Brainfuck as a macro language 18:51:52 but I'm pretty sure it was an esolanger who wrote it 18:51:56 haha 18:53:18 oh, i actually haven't looked at r6rs macros 18:54:49 (r6rs seems pretty cool...) 19:03:16 -!- ais523 has quit ("Moving to a different connection."). 19:13:38 -!- ais523 has joined. 19:19:36 -!- jix has joined. 19:48:24 Deewiant, there? 19:48:26 /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/../../../../include/d/4.1.2/tango/core/Array.d:141: Error: cannot implicitly convert expression ('\xff') of type char to char[1LU] 19:48:26 /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/../../../../include/d/4.1.2/tango/core/Array.d:152: Error: cannot implicitly convert expression ('\xff') of type char to char[1LU] 19:48:31 when I try to build ccbi 19:48:54 and: 19:48:54 ccbi/mini/funge.d: In function 'loadMiniFunge': 19:48:54 ccbi/mini/funge.d:103: error: conversion to non-scalar type requested 19:49:02 tango-0.99.5 19:49:16 the former sounds like a tango problem 19:49:23 or rather a GDC problem 19:49:49 Deewiant, I can't change gdc version 19:49:56 it would be painful 19:49:58 I haven't tested tango 0.99.5, can't guarantee that will work 19:50:07 Deewiant, what one have you used then? 19:50:16 $ gcc --version 19:50:17 gcc (GCC) 4.1.2 20070214 ( (gdc 0.24, using dmd 1.020)) (Gentoo 4.1.2 p1.0.2) 19:50:23 like it says on the page, tango 0.99.4 19:50:26 ah, gdc 0.24 19:50:27 I installed tango from source 19:50:30 there's a note about that on the page as well 19:50:33 Deewiant, I did the change 19:50:35 for it 19:50:44 "If you’re using GDC 0.24, you’ll need to make a slight change in utils.d for compilation to work, replacing the line:" <-- that one 19:50:45 yeah, it looks like the same change has to be done in mini/funge.d 19:50:47 followed that 19:50:53 since the line is identical 19:50:59 do the same change there 19:51:51 i'm learning emacs!! 19:52:00 Deewiant, and the tango thing? downgrading is not an option, I got other apps needing the latter version 19:52:12 i'm earning lemacs!! 19:52:39 lament: good to hear it 19:52:44 AnMaster: I think that's your only option. there's nothing in my code that uses tango.core.Array so it's a problem within Tango 19:52:45 just out of interest, did you already know vi? 19:52:58 AnMaster: or rather, the problem is that your version of GDC is too ancient for Tango 19:53:01 i predict i'll learn emacs for about 5 minutes, then stop 19:53:04 Deewiant, hm 19:53:06 yes, i use vim 19:53:11 lament, emacs here 19:53:50 lament: you can get by with the arrow keys and backspace (or C-f C-b C-n C-p C-d if your terminal is really old) 19:54:04 Deewiant, I can't find 0.99.4 anywhere 19:54:17 AnMaster: http://www.dsource.org/projects/tango/wiki/PreviousReleases 19:54:21 ais523: i know, but everything else seems really difficult 19:54:25 but you only really get the gain over GUI editors when you learn some of the more useful shortcuts; C-s and C-M-% are good ones 19:54:43 lament: the docs give a misleading view of what it's like, in my mind 19:54:52 because different people use different shortcuts 19:55:02 ais523: a lot of the time, a list of completions appears in a different window and it's so many keystrokes to switch to that window, select an appropirate completion and switch back. Is there a fast way to do that? 19:55:20 lament: type the first letter that you haven't written so far and hit tab again 19:55:26 it's bolded in recent versions 19:55:46 (if that isn't unique, then you type another letter and so on) 19:56:13 i don't get it 19:56:18 well 19:56:21 they're not completions sometimes 19:56:36 like when you want to switch to another buffer (C-x C-b) 19:56:45 you get a list of buffers, itself in another window 19:57:05 lament: C-x C-b is different from C-x b 19:57:18 one puts up the list, the other lets you tab-complete the name on the minibuffer line 19:57:27 (unfortunately, I can never remember which is which) 19:57:32 oh, true 19:57:39 i'd like both at once, of course 19:57:46 show a list of all buffers, and tab-complete the name 19:57:55 can emacs do that? 19:58:19 lament: go to the minibuffer-entry version, then hit tab twice 19:58:27 that puts up a list of things for everything that tab-completes 19:58:30 (just like in bash) 19:58:37 oh, cool 19:59:01 -!- atsampson has joined. 19:59:06 Deewiant, that older tango fails to build 19:59:06 thanks 19:59:11 warning - gcx.d:319: Error: implicit conversion of expression ((p - *(pool + 0LU)) / 1L / 16L) of type long to uint can cause loss of data 19:59:30 baah 19:59:40 make things easy and get DMD 19:59:53 or the latest SVN version of GDC 20:00:12 Deewiant, then I'd rather skip ccbi, *shrugs* 20:00:31 and this tango thing doesn't even want to install to a prefix 20:00:34 imo that's shitty 20:00:44 I don't know about tango, join #d.tango and complain 20:00:56 it works for me using DMD just fine 20:00:59 Deewiant, I'm writing a conformat c one :) 20:01:23 already GOOD up to k test, k is not yet implemented 20:01:41 Deewiant, C99 btw :) 20:01:52 go ahead 20:02:14 http://rafb.net/p/Y44uBK56.html 20:02:16 so far 20:02:24 started coding on it yesterday 20:02:35 nice :-) 20:03:01 Deewiant, I have some issues with finding a sparse matrix library or something for C though 20:03:23 currently I just allocate a rather large array and use an abstraction so it should be easy to replace with something sane later 20:03:27 got any good idea? 20:05:31 AnMaster: http://pastebin.ca/936934 is the changes I had to make to ccbi to get it to run under gdc 20:05:43 (mostly on Deewiant's guidance) 20:06:26 err 20:06:30 what file is first change in 20:06:34 the diff isn't valid 20:06:46 it's missing a line 20:07:21 diff -r ccbi_src/fingerprints/rcfunge98/base.d ../ccbi_fixed/fingerprints/rcfunge98/base.d 20:07:31 sorry, missed it off my copy&paste somehow 20:07:38 ais523: I've since changed that code so it no longer uses tango.core.Array 20:07:43 OK 20:07:56 but hmm, I'm getting this tango error with DMD on Linux myself 20:07:57 am investigating 20:08:12 Deewiant, with the current tango? heh 20:08:42 AnMaster: not sure which version it is, SVN HEAD from a few weeks back i think 20:09:04 I think I know what could cause it but I'm not sure how to fix it 20:16:02 Deewiant, should k work on z btw? 20:16:09 IMO it should 20:16:12 but not on space 20:16:25 but when looking at CCBI source it looks like it ignores z too? 20:16:35 the specs aren't clear on that point 20:17:08 well, it ignores z because it doesn't matter 20:17:16 but it only reflects on space and ; IIRC 20:17:17 it does when concurrent doesn't it? 20:17:23 k always takes one tick 20:17:27 ah right 20:17:37 if (i == ' ' || i == ';' || i == 'z') 20:17:37 return; 20:17:45 looks like it doesn't reflect on either? 20:17:50 AnMaster: you got that tango.core.Array problem with the latest tango (0.99.5) correct? 20:17:52 apparently not :-P 20:18:00 Deewiant, indeed it was 0.99.5 20:18:03 doesn't matter, the spec is so unclear 20:18:06 AnMaster: alright, thanks 20:18:11 and 0.99.4 fails to compile 20:19:42 I got a minimal sample which doesn't compile due to that error 20:20:01 I'll see if it's fixable or a bug 20:25:07 looks like it's an ages-old compiler bug which everybody hates but for some reason has never been fixed 20:25:26 so what will you do, if it affects both gdb and dmd? 20:25:36 I'll fix the code 20:25:45 the problem is that I'm calling "tango.text.Regex.find" 20:25:51 send me a patch for ccbi when you fixed it 20:25:57 but there's no function called 'find' in that module any moore 20:25:58 pastebin that is 20:26:10 so why don't it report that error instead? 20:26:22 -!- olsner has joined. 20:26:24 tango.text.Regex privately imports tango.core.Array 20:26:42 this should mean that trying to call regex.find would fail since there is no find 20:27:05 but due to the private import and the age-old bug, which is that fully qualifying names like that ("regex.find" as opposed to just "find") bypasses private imports, it tries to call tango.core.Array.find 20:27:11 and, of course, fails since the param types don't match 20:27:21 *sigh* I HATE this bug 20:27:34 reported it myself, about 20 months ago 20:27:40 -!- Corun has joined. 20:28:00 ah well, so what I need to do is figure out the right way of doing regex matching with the new tango.text.Regex 20:30:11 here we go 20:30:46 AnMaster: there's a function called 'help' in ccbi.d 20:30:54 yes? 20:30:56 replace its definition with the following 20:30:59 static bool help(char[] s) { return (regex.Regex("^(--?|/)([?]|h(e?lp)?)$", "i").test(s)); } 20:31:19 aaaagh, no don't 20:31:20 darn 20:31:26 it compiles, but doesn't work :-P 20:31:34 ok *waits* 20:31:49 * AnMaster is trying to get the darn k to work 20:31:59 Deewiant, ccbi is "gpl 2 or later" right? 20:32:21 I think it's BSD actually 20:32:29 ah, can still use it 20:32:33 my project is gpl3 20:32:34 :) 20:32:45 I just need to read your code to understand how k should work 20:33:06 heh 20:33:28 the bit about moving if executing k did move it is complex 20:33:36 yes, it is 20:33:45 scope (exit) 20:33:45 and that's the main reason why I didn't implement nested k 20:33:45 if (ip.x == x && ip.y == y && ip.dx == dx && ip.dy == dy) 20:33:45 ip.move(); 20:33:47 wtf is that 20:34:03 Deewiant, mine will reflect on nested k, and print a warning 20:34:22 (with warnings enabled that is) 20:34:50 mine just does something random :-) 20:35:22 I try to make all undefined cases sane and also clean up the standard at the same time 20:35:28 AnMaster: I pastebinned the nested k stuff last time, so you can have a look-see there too 20:35:29 still waiting for answer on that though 20:35:44 Deewiant, yes I did, and your code really makes it much clearer 20:35:52 and I'm not going to do nested k 20:36:33 AnMaster: if you reflect on nested k, wouldn't it be possible to form an infinite loop by jumping into the middle of three ks? 20:36:34 that scope(exit) stuff is why it's tricky to get stuff like 4k] right as well 20:36:36 * AnMaster notes all instructions apart from k are inlined into the case blocks for the instructions in ExecuteInstruction function 20:36:48 ais523, gaaa! 20:37:13 ais523, then it's a problem of the programmer IMO 20:37:13 not that 111#kkk is particularly useful, anyway 20:37:15 AnMaster: okay, it seems that the fact it doesn't work is a problem on my end (not using 0.99.5), try what I said earlier 20:37:42 ais523: at that point it's prudent to ask "what did you expect?" :-) 20:37:47 ccbi/stdlib.d:238: function ccbi.stdlib.RawCoutFilter!(false).RawCoutFilter.write of type ulong(void[] src) overrides but is not covariant with tango.io.Conduit.OutputFilter.write of type uint(void[] src) 20:37:47 ccbi/stdlib.d:238: function ccbi.stdlib.RawCoutFilter!(false).RawCoutFilter.write function write does not override any 20:37:47 ccbi/stdlib.d:386: template instance ccbi.stdlib.RawCoutFilter!(false) error instantiating 20:37:51 I get that now 20:38:04 O_o 20:38:09 dammit 20:38:15 Deewiant, what does that mean 20:38:21 * AnMaster is a C programmer! 20:38:35 AnMaster: my function returns ulong while the library function returns uint or vice versa 20:38:55 or no, incorrect 20:39:01 this is due to the fact that you're on x86_64 20:39:03 sec 20:39:11 Deewiant, indeed I am :) 20:39:28 Deewiant, don't you have some intptr_t or such for your pointers? :P 20:39:40 so you can always get the same type as standard libraries 20:39:51 -!- fizzie has quit (Read error: 60 (Operation timed out)). 20:39:54 AnMaster: I'm using size_t 20:39:59 AnMaster: but it appears the code uses uint :-P 20:40:05 hah 20:40:06 I just assumed it would be size_t 20:40:17 AnMaster: just change the return type of write from size_t to uint 20:40:25 Deewiant, where should I do so? 20:40:44 AnMaster: ccbi/stdlib.d:238 as it says :-) 20:40:46 Deewiant, btw rebuild failed to build until I did: ln -s . ccbi 20:40:56 just FYI 20:41:05 AnMaster: yeah, because I'm an idiot and packaged the code under ccbi_src directory instead of ccbi 20:41:10 AnMaster: I noticed that myself :-) 20:41:55 oh god! 20:42:06 obj/ccbi.ccbi.o: In function `_Dmain': 20:42:06 ccbi.d:(.text+0x711): undefined reference to `_D5tango4core9Exception24IllegalArgumentException7__ClassZ' 20:42:06 ccbi.d:(.text+0x72c): undefined reference to `_D5tango4core9Exception24IllegalArgumentException5_ctorMFAaZC5tango4core9Exception24IllegalArgumentException' 20:42:10 LOTS of things like that 20:42:12 O_o 20:42:15 maybe 2-3 screens 20:42:34 are you using rebuild? 20:42:37 I am 20:42:43 AnMaster: are you recursing into the source directories, and linking tango? 20:42:45 from dsss-0.75 20:42:51 ais523, ? 20:42:59 WTF? I click off of a D channel, and find D talk. 20:43:00 I had that sort of error when I built, due to only linking files in the main src directory 20:43:03 but not its subdirs 20:43:03 and it outputs a six-line command line when it tries to build? 20:43:07 GregorR: :-) 20:43:09 I installed tango following http://dsource.org/projects/tango/wiki/UnixInstallGdc 20:43:12 ais523, ^ 20:43:49 Deewiant, err? 20:44:01 now it says: ccbi.d(19): module instructions cannot read file 'ccbi/instructions.d' 20:44:02 instead 20:44:03 wtf 20:44:14 AnMaster: i.e. a huge "gcc tango/core/Exception.d" etc. 20:44:14 oh wait it removed the symlink 20:44:17 that was needed 20:44:21 for it to build 20:44:28 * AnMaster renames source dir instead 20:44:51 AnMaster: did you see the "Troubleshooting" section on that page? 20:44:56 May I ask: Since when do so many people in #esoteric use D? 20:45:05 GregorR: only I do, and people can't get stuff to compile :-P 20:45:07 GregorR: it's the language in which CCBI was written 20:45:10 Deewiant, aha 20:45:24 * GregorR strokes his nonexistent beard. 20:45:29 * GregorR then goes to eat lunch :P 20:45:36 GregorR is the D guru 20:45:37 GregorR: tango + GDC 0.24 isn't a good combination 20:45:45 /usr/bin/gdmd 20:45:45 /usr/bin/x86_64-pc-linux-gnu-gdmd 20:45:45 /usr/x86_64-pc-linux-gnu/gcc-bin/4.1.2/gdmd 20:45:45 /usr/x86_64-pc-linux-gnu/gcc-bin/4.1.2/x86_64-pc-linux-gnu-gdmd 20:45:46 what one? 20:45:48 ask him !! 20:46:03 /usr/bin/gdmd is some gentoo specific wrapper 20:46:12 to select version of gcc 20:46:20 AnMaster: probably the third but I'd check all to be sure 20:46:35 ah a perl script 20:47:40 -!- oklofok has changed nick to oklopol. 20:48:40 err 20:48:48 now it fails to build 20:48:50 new tango that is 20:49:17 * AnMaster tries clean sources 20:49:19 heh 20:49:44 if that also fails I guess my gdc install got borked because of tango 20:49:59 and I'm not going to recompile gcc and gdc 20:50:05 takes too long 20:50:16 shouldn't be necessary 20:50:32 the binaries are the same, after all 20:51:35 nop just fails still 20:51:42 ar -qsv libtango-cc-tango.a core/BitManip.o core/Exception.o core/Memory.o core/Runtime.o core/Thread.o core/ThreadASM.o stdc/wrap.o stdc/posix/pthread_darwin.o 20:51:42 ar: creating libtango-cc-tango.a 20:51:42 ar: core/BitManip.o: No such file or directory 20:51:42 gmake[1]: *** [libtango-cc-tango.a] Error 1 20:51:43 how does it fail 20:51:50 in that way ^ 20:51:55 odd 20:52:03 -!- oerjan has joined. 20:52:22 look, it replaced libgphobos.a it seems 20:52:25 so I blame tango for it 20:52:48 it didn't even create a backup 20:52:48 AnMaster: you can always compile lib/common/core/BitManip.d yourself 20:52:55 Deewiant, how? 20:53:17 AnMaster: "gdmd -c lib/common/core/BitManip.d" or whatever :-) 20:53:57 but it cleans it out on a new build 20:54:08 make it not clean it out 20:55:33 AnMaster: tell you what, see if http://iki.fi/deewiant/ccbi works for you 20:56:24 it can execute yes 20:56:34 $ ./ccbi --help 20:56:34 tango.core.Exception.ArrayBoundsException@/u/opi/48/mniemenm/bin/../opt/dmd/import/tango/core/Array.d(2131): Array index out of bounds 20:56:35 hah 20:56:42 oh yeah, right 20:56:47 that's because I don't have 0.99.5 20:56:52 and the trunk I do have is buggy :-P 20:56:54 so it won't work for me then? 20:57:08 well, I guess not since it dies if it gets command line arguments :-) 20:57:12 I'll get 0.99.5 and build a new one 20:57:16 $ ./ccbi ~/bashfunge/trunk/mycology/mycology.b98 20:57:17 tango.core.Exception.ArrayBoundsException@/u/opi/48/mniemenm/bin/../opt/dmd/import/tango/core/Array.d(2131): Array index out of bounds 20:57:21 very nice 20:57:23 exactly :-) 21:02:07 yay k works as it should now I just got the f93 space issue (will fix later when I restructure some things) and now: 21:02:07 Unknown instruction at x=11 y=49: ' (39) 21:02:07 BAD: ' reflects 21:02:07 * AnMaster implements 21:02:29 -!- BMeph has quit (Read error: 104 (Connection reset by peer)). 21:03:21 -!- sebbu2 has joined. 21:05:37 * AnMaster implements x 21:06:40 AnMaster: what lang are you writing the implementation in? 21:06:55 ais523, C, using several C99 features 21:06:59 BAD: wraparound with non-cardinal delta doesn't work 21:07:03 * AnMaster ponders that one 21:07:20 it's hard to solve 21:07:49 AnMaster: not really, you just reverse the direction of the pointer, not executing any commands en route, and reverse it again when you hit the edge of the playfield a second time 21:08:25 ais523, yes, but that is slow and painful, *me is caching edges for each column and row* 21:08:29 -!- SimonRC has quit (Read error: 110 (Connection timed out)). 21:08:46 my INTERCAL debugger, for instance, implements the 'set next instruction' command by putting a loop around the program, preventing any commands executing until the right point is reached, and running the program until it reaches the right point 21:08:48 and then there is the stack stack thingy 21:09:17 ais523, err what? 21:09:31 it's the whole ABSTAIN thing 21:09:40 assume I don't know intercal 21:09:43 you just need a way to make things tickless (if threading), and to prevent commands running 21:09:51 so you have a flag in your interp which makes all commands into NOPs 21:10:01 ais523, yes I got a mode enum 21:10:10 then, every time you hit the playfield edge, you toggle the flag and change the IP direction 21:10:15 like ipmCODE ipmSTRING and so on 21:10:28 ais523, yes I know that version 21:10:30 right 21:10:44 but still... 21:11:24 you only need to do it for non-cardinal directions 21:11:33 how on earth to find if this is the edge or not when traveling non-cardinal! 21:11:41 I can't see how I could find it 21:11:49 AnMaster: try again? 21:11:58 AnMaster: err, referring to CCBI of course :-P 21:12:01 Deewiant, wgetting same binary? 21:12:04 yeah 21:12:12 appears to work on my end, at least :-) 21:12:52 Deewiant, also where does one find docs on the official catseye extensions 21:13:05 reverse engineering your code = not fun 21:13:07 AnMaster: I believe I linked there last time 21:13:16 Deewiant, yes the registry 21:13:19 AnMaster: same place as the funge-98 spec, move one directory up 21:13:22 but that is dead and broken 21:13:36 AnMaster: as in, http://catseye.tc/projects/funge98/ 21:13:41 aha 21:13:42 the library/*.html 21:14:20 -!- SimonRC has joined. 21:17:02 -!- sebbu has quit (No route to host). 21:17:03 -!- sebbu2 has changed nick to sebbu. 21:17:40 Deewiant, if you got a matrix that you can acccess using x and y, how would you find edge or not when traveling non-cardinal? 21:18:06 store some sort of bounding box and reflect only when you hit it? 21:18:14 err not reflect, but wrap I mean 21:18:38 in 2D, if you know for certain you're going non-cardinal, then technically speaking you only need to store the top and bottom 21:18:49 because anything that goes off the left or right edge will hit the top or bottom eventually 21:19:01 unless it goes directly left or right 21:19:04 AnMaster: what I do is keep track of min/max X and Y 21:19:26 AnMaster: which isn't 100% accurate (c.f. the mycology tests on wrap at edge of file/line) but works 21:19:48 Deewiant, ah, so a kind of bounding box then 21:19:54 AnMaster: check against each edge in turn and drop it down at the one it leaves first, i think 21:19:55 in 3D 21:19:56 2d* 21:20:01 aye 21:20:04 so really bounding rect 21:20:08 there are other ways, too 21:20:21 yeah 21:20:23 I think GLfunge98 did something cool, but I can't remember for sure 21:20:24 right, can't do that though until I get the final fungespace thing to work 21:20:34 AnMaster: the CCBI bin works? 21:20:41 such as having some 'uninitialised' value on the playfield that magically turns into 32 when you try to read it 21:20:44 Deewiant, it passes mycology at least 21:20:51 AnMaster: alright, good enough :-) 21:21:12 Deewiant, but it isn't 64-bit :( 21:21:23 don't have a 64-bit machine, sorry 21:21:30 compile it yourself if that's a problem ;-) 21:21:46 Deewiant, you know the problems that cause 21:22:06 AnMaster: AFAIK GDC's 64-bit support is a bit flaky anyway 21:22:30 anyway I'll fix my fungespace later, I got a abstraction anyway, so it is easy to replace get/set/wrap/loadfile with something else 21:23:02 because current is just extended 800x2500 array, until I find some sparse matrix that work XD 21:23:38 (oh and setting -1,-1 would still work, it wraps to positive value, so even if you jumped there, mycology would never know) 21:23:48 (but it breaks cardinal wrap) 21:24:56 Deewiant, err your y is not correct it seems, it leaves out some utf8 from env variables? 21:25:11 AnMaster: how's that 21:25:28 the envvar support on linux is fairly untested 21:25:29 LC_ALL=sv_SE.UTF8 one env variable contains a ö 21:25:44 AnMaster: pipe it to a file and see what comes out at that pos 21:25:46 Deewiant, you don't run a real OS normally? 21:25:52 * AnMaster pipes 21:25:56 AnMaster: no, I like my computer games :-) 21:26:14 Deewiant, no ö 21:26:23 just empty in that place 21:26:27 AnMaster: just nothing? like "aäb" becomes "ab"? 21:26:29 hrm 21:26:32 * AnMaster notes CCBI is NOT conforming :P 21:26:35 * AnMaster runs 21:26:38 :-) 21:28:26 Deewiant, if I make a new standard (that is I'm still waiting for answer on my mail about license) I'm going to define all the undefs 21:28:47 possibly in some cases to other values than what ccbi does, (though I will keep those I find sane) 21:29:23 hmm... does anyone here know of a command (preferably POSIX, or something else reasonably available on Linux) that looks for two identical lines in a file, but doesn't need to read in the whole file before it can check? 21:29:48 ais523, you mean uniq -d ? 21:29:54 that style of thing? 21:29:58 AnMaster: no, the lines needn't be consecutive 21:30:09 I'm trying to verify that my infinite loop program is actually working 21:30:09 ais523, ah like sort -n | uniq -d ? 21:30:18 AnMaster: yes 21:30:26 ais523, try seen trick in awk 21:30:27 :O 21:30:29 :P* 21:30:46 awk '!seen[$0]++' # Remove second and subsequent instances of each input line, without having to sort them first. 21:30:55 adapt to your case 21:31:00 I assume you know awk 21:31:08 AnMaster: actually I don't 21:31:21 ais523, I don't very well either, just the basics 21:31:25 I know sed and perl, though 21:31:33 don't know those 21:31:40 but I'm sure you could do it in them 21:31:51 heck, you could even do it in befunge if you wanted, it is turing complete 21:32:07 * ais523 runs that awk script through a2p 21:32:15 although I could guess what it did anyway 21:32:35 a2p? 21:32:48 awk to perl compiler 21:32:58 a useful thing to have around if you don't know awk 21:33:02 because it compiles almost literally 21:33:09 without making too much of a mess of the code 21:33:21 AnMaster: export A=ä; and then running Mycology works just fine here 21:33:31 Deewiant, interesting 21:33:49 -!- slereah_ has joined. 21:34:06 yes, my infinite loop works! 21:34:20 #!/usr/bin/env underlambda 21:34:20 (((x)\x)(((((z)y(z)x^)\z^)\y^)\x^)((y)(y)z^)\y\z)((x)x^)\x^| 21:34:21 AnMaster: the code for getting the env vars is quite pointer-mathy and should be understandable for a C coder like you, if you see the problem let me know ;-) 21:34:37 Deewiant, if I have time that is 21:34:41 of course, it's possible to write that much more simply as (:^):^, but I wanted to do it Unlambda-style 21:34:51 AnMaster: yes, of course 21:35:03 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)). 21:35:13 (what I've written there is almost literally ```sii``sii, except that to save space I lambdad ``sii in `xx) 21:35:20 Deewiant, hm I wonder, a sandbox mode, that doesn't allow file, and restricts some extensions partly, would that be nice? 21:35:32 AnMaster: definitely 21:35:34 AnMaster: for CCBI? 21:36:04 Deewiant, for funge08 as a flag it can check with y to see if the interpreter is in that mode 21:36:05 someday I have a plan of running an esogolfing site that sandboxes by restricting the capability of interps and compilers to be able to do evil things 21:36:06 bleh, grammer 21:36:10 grammar* 21:36:17 AnMaster: well, y already says whether files are supported 21:36:26 AnMaster: so if the interpreter is in that mode it can just say so in y 21:36:28 Deewiant, some extensions allow IO right? 21:36:44 not all interps have to support all fingerprints anyway 21:36:45 AnMaster: yes, and you can tell that they don't work by the fact that you try and load them and it fails ;-) 21:36:46 like say, that drawing thing 21:36:59 TURT, DIRF, FILE, some others maybe, yes. 21:37:09 Deewiant, but some may have useful stuff that does work in a sandbox but other parts that don't? 21:37:30 AnMaster: none of those do, and I think it's poor style to make a fingerprint which does 21:37:38 Deewiant, hm ok 21:37:48 AnMaster: of course "useful" is relative :-P 21:38:00 AnMaster: but if the output doesn't work, the corresponding instruction just reflects 21:38:05 so I don't think it's that bad 21:38:18 a conforming script should just say "output failed" at that point and not die 21:38:30 Deewiant, btw, mycology did some very interesting thing when I had an error in turn right code that meant dy changed but dx didn't 21:38:37 or maybe it was turn left 21:38:41 anyway, one of them 21:38:47 AnMaster: I can't test for every possible bug 21:38:53 Deewiant, indeed not hehe 21:39:27 AnMaster: if your ] is the equivalent of 0"/ fr- mr"x it's not my fault that Mycology runs a ] expecting it to work .-P 21:39:40 x or =? 21:39:44 ais523: darn, good point 21:39:53 but either way, really :-P 21:40:12 that'd set the IP's delta to (109,114) and leave some crap on the stack 21:40:18 I can't test for that, either :-P 21:40:31 well, you can, because they're pretty large numbers, but you probably shouldn't 21:40:31 Deewiant, how can you write strings backwards in your head 21:40:37 I still don't get that 21:40:50 I can only give as much output as possible and then the developer can see what did work and look at the src to see what didn't 21:40:52 ysae s'ti 21:40:55 AnMaster: 1 year of writing Befunge :-D 21:41:02 hahah 21:41:08 ais523, :( 21:41:26 hmm... 21:41:28 Deewiant, if mycology was easier to read :/ 21:41:30 but no, I usually had a program reverse long strings for me 21:41:38 retsaMnA ,:( 21:41:52 d-: '325sıɐ 21:41:55 haha that actually makes sense in Swedish backwards 21:41:56 ais523, ^ 21:42:04 retsam = teasing 21:42:18 and you are doing that! 21:42:30 dǝʎ 21:42:49 ok now you are just crasy, using uncide to write upside down 21:42:50 ... 21:42:52 Deewiant: are you copy-pasting those upside-down letters from a character map, or do you happen to know how to type them offhand? 21:42:55 so it's not the same as retvis? 21:43:11 AnMaster: suggestion if you haven't done so already - implement a "trace mode" (or full-blown debugging) 21:43:14 Deewiant, btw this test suite I use to test some basic things (it is longer than this): http://rafb.net/p/uCth5W27.html 21:43:18 much easier to read 21:43:26 ais523: lɯʇɥ˙dılɟ/ɯoɔ˙pɐɟʌǝɹ˙ʍʍʍ//:dʇʇɥ 21:43:42 pɐɟʌǝɹ? 21:43:50 my font fails on that 21:43:53 partly 21:43:55 AnMaster: you put the question mark at the wrong end of that word 21:43:59 it's revfad upside-down 21:44:05 AnMaster: yeah, that was my mistake really 21:44:14 AnMaster: at the start I didn't expect it to become nearly as long as it did 21:44:20 (my font managed it fine) 21:44:31 AnMaster: the Befunge-93 area had to be squashed since it has to fit in 80x25 21:44:34 Deewiant, heh, yes mine just does 38 basic tests 21:44:40 AnMaster: after that I figured maybe 80x200 would fit the whole thing 21:44:45 Deewiant, hah 21:44:52 or you could have used several files 21:44:55 AnMaster: rather 200x25 21:45:02 I decided against that early on 21:45:05 hmm... now we need a reversible esolang in which writing a string upside-down reverses what a function does 21:45:08 Deewiant, why? 21:45:17 because I wanted it to be easy to use 21:45:26 that way you don't need all instructions to be self-inverse, but still have symmetry 21:45:27 "foo mycology.b98" and bam, you know whether your interpreter works or not 21:45:48 fungus is much more annoying than that - it tries to load parts of itself using y and i 21:45:49 incidentally, the upside-down i and l are wrong 21:46:17 Deewiant: at least it doesn't try to load parts of itself using compression and p 21:46:21 Deewiant, interesting 21:46:22 so if y and/or i aren't supported properly you get all kinds of problems 21:46:34 Deewiant, but, so does mycology, it tries to load the randomness thing 21:46:40 yeah, but that's late 21:46:46 and it should fail nicely 21:46:51 it does 21:47:01 and it continues despite that 21:47:02 Deewiant, where do you find fungus? 21:47:09 probably linked from my page 21:47:13 J^4's site 21:47:20 J^4? 21:47:27 http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/fungus.php 21:47:39 guy who made !Befunge 21:47:41 wow at that domain name 21:47:53 yeah, he's proud of it, a domain name which is valid befunge code :-) 21:48:04 hehehe 21:48:07 Deewiant: aren't all strings valid Befunge code? 21:48:15 look, I bet there isn't any fight over that domain 21:48:44 ais523: ...and does something meaningful and doesn't loop infinitely 21:48:57 OK, that's harder 21:49:25 although I suppose if you run sed s/at/@/g you'll get many non-infinite-looping domain names 21:49:43 but I guess the idea is that it spells out some code, not that it is code in itself :-) 21:56:40 wow, there's a Befunge-in-INTERCAL there 21:56:43 * ais523 tests it 21:56:57 if it works, I'm going to ask for permission to add it to the C-INTERCAL distribution 21:57:24 it hit an error when I first tried to run it, though 22:00:33 Deewiant: mycology is unfortunately more than 80 chars wide 22:00:45 is there an 80x25 version for use with Befunge-93 interpreters? 22:04:42 ais523, there is 22:04:56 ais523, the first 80x25 chars in mycology is 93 testsuite 22:05:01 so just discard the rest 22:05:03 yes, I just realised that 22:05:05 like a interpreter should 22:05:17 that's a nonconformance in the INTERCAL interp already, then 22:05:36 indeed 22:06:58 * oerjan is suddenly surprised there isn't a befunge debugger named penicillin 22:07:41 oerjan, heh? most times you can output such in interpreters 22:07:42 or something like that 22:07:46 like a trace mode 22:07:48 or whatever 22:08:10 i mean i am surprised no one has used that name... 22:09:29 oerjan: I don't see anything obvious about it 22:09:56 in other news, interfunge passes Mycology-93 22:10:10 penicillin is made from a fungus... 22:11:44 ais523, interfunge? 22:11:54 ah intercal fungus 22:12:00 AnMaster: it seems J^4 wrote a Befunge interp in INTERCAL 22:12:01 ah well 22:12:10 ais523, ok that's insane 22:12:23 next you are going to tell me someone did that in brainfuck 22:12:26 oerjan wrote an Unlambda interp in INTERCAL, though, so I'm not sure which is more insane 22:12:35 and I'm just waiting for a befunge98 interpreter in befunge98 22:12:38 -_- 22:12:39 and AnMaster: brainfuck is marginally easier to program in than INTERCAL, in most cases 22:12:51 ais523, ah, that's amazing 22:12:59 except for those cases where INTERCAL's more advanced features come in useful 22:13:09 ais523, PLEASE COME FROM? 22:13:10 ;P 22:13:23 INTERCAL's probably better for really complex programs, but writing such in esolangs is normally inadvisable anyway 22:13:26 (no idea what that would do) 22:13:36 AnMaster: threading and backtracking can be useful 22:13:47 AnMaster: PLEASE COME FROM by itself is a syntax error 22:13:50 ais523, isn't there some threaded brainfuck versions? 22:14:06 ais523, look I don't know intercal! I just know a few words 22:14:10 although there are expressions starting with ?, so it needn't be a syntax error depending on what's on the next line 22:14:16 and yes, there's Brainfork 22:14:23 but INTERCAL's threading model is more elegant IMO 22:14:41 ais523, look, anything is more elegant than threading in esoteric languages IMO 22:14:52 * AnMaster points to nptl on linux 22:14:59 you can't get much more elegant than aiming two COME FROMs at the same line 22:15:12 ais523, what would that do? 22:15:23 AnMaster: multithread and run both 22:15:28 oh god 22:15:47 what did you expect it to do? 22:17:34 no clue 22:17:36 error out maybe 22:18:19 it does that if multithreading is disabled 22:20:14 BTW, the backtracking model is more general than Prolog's 22:39:57 I don't know prolog either 22:39:58 tell me 22:40:02 what is backtracking? 22:40:39 do you know what a continuation is? 22:40:47 if you do, it's slightly easier to explain 22:41:13 ais523, isn't that something like passing some code and it's context around? 22:41:24 the context itself is the continuation 22:41:32 you were describing Continuation Passing Style 22:41:33 note: I'm an imperative and object orientated guy! 22:41:46 backtracking is an imperativish version 22:41:56 mhm 22:42:02 go on, I'll join in when I can 22:42:10 basically, at a point in the program, you can decide to MAYBE perform an action (with MAYBE being an INTERCAL keyword; other languages have other ways to specify it) 22:42:21 so for instance, you could MAYBE assign a value to a variable 22:42:33 right, no problem if (random() %1) 22:42:34 :) 22:42:47 should likley be uniform or close enough 22:42:51 the assignment is done, but the software remembers the state when it was done 22:43:14 and at any time later in the program, you can GO BACK to before the assignment was done, and run the code instead in an alternate version where the assignment wasn't done 22:43:31 ais523, I see, useful for debugging, but not much else? 22:43:33 or you can GO AHEAD and forget the saved state just before the assignment 22:43:42 AnMaster: it's useful not just for debugging 22:43:48 for instance if you want to implement regexps 22:43:53 or a parser 22:44:04 yes, I'd use pcre, or for parser, bison/yacc/whatever 22:44:11 for instance, you might not be sure what a particular symbol means without reading more context 22:44:20 lex I mean probably 22:44:25 or whether a particular bit of a regexp matches here or later 22:44:36 ais523, ah, evil lookaheads :P 22:44:37 for instance, consider /ab/ matching "cdaefabg" 22:44:50 yep it does 22:44:59 instead of looking-ahead, you can MAYBE match the a of /ab/ to the first a in the string 22:45:18 ais523, but that is likely to be slower? 22:45:20 and when you find the b doesn't match, you can GO BACK and match the a to the second a instead 22:45:29 and backtracking is infamous for being slow 22:45:43 then it's pointless *true C programmer* 22:45:45 and also producing useless debug info in the case that none of the options match 22:46:00 but sometimes it's the easiest option 22:46:07 ais523, it isn't the best still 22:46:10 (in that way it's sort of like recursion; slow but sometimes easiest) 22:46:42 ais523, I still wouldn't do recursion if I could avoid it! 22:47:16 in fact, while gcc think my function that does looping will recurse, and therefore won't inline it, it won't recurse 22:47:27 because I won't excute looped k instructions in funge 22:47:40 but I can hardly blame gcc for not being smart enough 22:48:18 for an example, you can look at http://pastebin.ca/937153 22:48:30 it's permute.i from the C-INTERCAL examples, and its documentation 22:49:41 it's actually pretty easy to read for an INTERCAL program, which is 'not very' 22:49:45 horrible 22:50:20 look, at least befunge got some kind of elegance! 22:53:42 INTERCAL has its own kind of elegance 22:53:51 there's a translation into a weird C/INTERCAL/Prolog mix lower down the page 22:54:05 yes and that is equally hard to read 22:54:11 I don't know prolog 22:54:18 I don't know intercal 22:54:22 I DO know C 22:54:43 the program, as written, is basically impossible to express in C 22:54:53 (even though I compile into C) 22:55:01 you have to write it really differently 22:55:08 * ais523 goes to paste the C it compiles into 22:55:56 I guess a lot of goto could do it 22:56:18 http://pastebin.ca/937166 22:56:22 AnMaster: worse. setjmp 22:56:30 eww 22:56:40 and you have to save all the variables involved, too 22:56:44 ick_? 22:56:55 AnMaster: it's the INTERCAL compiler's name 22:57:03 I understand it 22:57:08 ick is how I feel over that code 22:57:08 the ick_ is the name-mangle prefix it uses so as not to clash with other people's code 22:57:19 that's only half of it 22:57:36 because you have to link in libickmt too, which contains most of the heavy work for the backtracking 22:57:42 wait a sec, how does rand differ from random 22:57:49 I see it use rand function 22:57:54 AnMaster: it's standard C89, rather than POSIX 22:58:10 CONFORMING TO 22:58:10 The functions rand() and srand() conform to SVr4, 4.3BSD, C89, C99, POSIX.1-2001. The function rand_r() is from POSIX.1-2001. 22:58:12 and although there's no reason for it in either standard, random tends to be more random 22:58:16 ah ok 22:58:28 ais523, ah that's good, I use random() 22:58:48 weird man srand works, but man 3 rand gives me an openssl man page 22:58:49 stupid 22:59:58 ais523, what about drand48 then? 23:00:13 are they more or less random? 23:00:14 no idea 23:00:16 than random() 23:00:21 http://www.muppetlabs.com/~breadbox/intercal-man/blotch.gif 23:00:25 What's this symbol? 23:00:33 slereah_: it doesn't actually mean anything 23:00:43 it was listed in the original spec as being available for future expansion 23:00:59 slereah_, inkblot? 23:01:06 But does it exist in an actual character set? 23:01:14 you get it by overprinting a whole load of punctuation marks 23:01:24 Oh. 23:01:25 I think it's [^H]^H-^H# but I'm not sure 23:01:35 Punching the fuck out of the punch card? 23:01:51 hey, at least two INTERCAL-72 operators were overpunches 23:02:05 but they've since been added to Unicode 23:02:05 That's why I ask! 23:02:11 ais523, oh god 23:02:14 wait a second 23:02:15 Even the rabbit one? 23:02:21 no, not the rabbit 23:02:32 intercal used PUNCH CARDS? 23:02:36 the bookworm is the mathematical for-all symbol 23:02:48 and the change symbol is a cent sign 23:02:49 AnMaster: yes 23:02:52 someone was stupid enough to do an esoteric language on punch cards!? 23:02:54 -_- 23:02:55 it dates from the days of EBCDIC 23:03:02 it was invented in 1972, after all 23:03:03 that's just, fucked up 23:03:04 Well, it was all that was available 23:03:18 slereah_, what about MULTICS thing? 23:03:22 CLC-INTERCAL still accepts the "Hollerith" input format 23:03:42 I tried to find some punch card computer or something, but there's only one company that sells them, and it isn't cheap :o 23:03:48 MULTICS? 23:03:54 or whatever 23:03:59 before unix 23:04:17 http://en.wikipedia.org/wiki/Multics 23:04:19 that one 23:04:19 I'm not old enough, AnMaster 23:04:28 slereah_, nor am I 23:04:39 I'm also not that computer savvy 23:04:45 ah, I'm that 23:05:05 AnMaster: if you feel insane enough, read http://filebin.ca/vjsonz/unravel.c 23:05:15 The internet really let me down when it comes to punch cards. 23:05:21 bah bad mimetype 23:05:37 it's the multithreading/backtracking part of C-INTERCAL's runtime library 23:05:43 oh god 23:05:49 that interacts with the compiled-from-INTERCAL program I pasted recently 23:06:23 look you can do that *without setjmp 23:06:29 you just need some goto 23:06:35 yes, in theory you can do anything without setjmp 23:06:44 in this case, though, the setjmp jumps out of the library and into the user program 23:06:46 ais523, and even it's easy here now 23:07:00 in most special cases it's easy 23:07:11 but have you even seen what the general case looks like? It's horrific 23:08:02 I don't want to read more of that file 23:08:07 it's a well commented mess 23:08:09 horrible 23:08:38 any budding open source programmer is invited to refactor if they feel they're up to the challenge 23:08:58 no that's way below me 23:09:11 I don't want to mess with INTERCAL ever in compiled form 23:09:52 unravel.c manages to safely contain most of the really gnarly stuff, anyway 23:09:59 Deewiant, there? 23:10:03 the rest of the compiler is completely sane by comparison 23:10:14 Deewiant, I find my interpreter faster up to the point where it fails mycology 23:10:17 :P 23:10:47 (incidentally, anyone reading this in the logs, if the filebin link has gone you can extract the file from the tarball at http://intercal.freeshell.org/download) 23:11:27 AnMaster: My client flags Deewiant as being away, so you're unlikely to get an answer immediately 23:11:34 I know 23:11:37 but then it flags you as beeing away too 23:11:44 ais523, I should be 23:11:48 but I'm not 23:11:53 * AnMaster really needs to sleep 23:13:24 Deewiant, huh, think I found a bug in CCBI on returning from the request 18 of y instruction 23:13:30 -!- Corun has quit (brown.freenode.net irc.freenode.net). 23:13:32 -!- GregorR has quit (brown.freenode.net irc.freenode.net). 23:13:53 -!- Corun has joined. 23:13:53 -!- GregorR has joined. 23:14:18 Deewiant, n29*y <-- shouldn't that return 1? because there is one item on the single stack, the top stack 23:17:00 Deewiant, further, ccbi gets into an infinite loop or something on mycouser if I do this: 23:17:01 Assuming Befunge-98 instructions work... 23:17:02 Which base to read input in? 3 23:17:02 Selected base 3 23:17:02 Input a number in that base: 47 23:17:09 hehe 23:17:40 Which base to read input in? 473 23:17:40 Selected base 473 23:17:40 Input a number in that base: 23:17:45 didn't let me input anything :( 23:21:19 wow: http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/tquine.php 23:21:30 that's certainly a new twist on the notion of a quine 23:22:11 -!- RedDak has joined. 23:22:21 Awesome 23:23:00 wonderful domain name too 23:23:08 ais523, indeed 23:25:49 * ais523 has to go, anyway 23:25:51 -!- ais523 has quit ("Bye!"). 23:26:08 Found this in the vintage computer section : http://cgi.ebay.com/chinese-ABACUS-WITH-LEATHER-DRAGON-PHOENIX-WOOD_W0QQitemZ180222253443QQihZ008QQcategoryZ1247QQssPageNameZWDVWQQrdZ1QQcmdZViewItem 23:27:32 heh, "vintage computer" 23:27:50 Item location:??, ??, China 23:29:05 http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/jbefbef.php <-- heh 23:29:31 http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/unebef.php <-- befunge interpreter in unefunge :( 23:30:13 -!- oerjan has quit ("Good night"). 23:55:49 -!- jix has quit ("CommandQ").