01:06:22 http://www.codu.org/jsmips/ // now with a non-working example! 01:08:48 +quit 01:08:49 -!- thutubot has quit ("ThutuBot quitting"). 01:08:50 -!- ais523|busy has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1""). 01:09:04 Alright 01:09:09 lovely mips 01:09:36 What is it supposed to do? 01:09:44 Print Hello, 3!\n 01:09:51 Instead, it just prints Hello, 3 01:09:56 And then dies a horrible death. 01:10:51 and what, exactly, is mips? 01:11:00 A processor [family] 01:11:17 Oh 01:11:42 Right, the one the bunny was named after 01:11:52 One that Gregor is implementing in Javascript for no good reason. 01:12:00 Well, its nice 01:12:02 For one GREAT reason: VIM IN MY BROWSER 01:12:18 Might I recommend MMIX instead? 01:12:34 I already tried MMIX - intolerably slow at 64 bits. 01:12:43 Fair 'nough. 01:12:50 x86? :p 01:13:00 Also, MMIX is practically CISC compared to MIPS. 01:13:34 vim in your browser eh? 01:13:43 You know, writing an OS is trivial if you don't run more than one program on it. :p 01:13:45 Vim is nice, I suppose. A browser variant could be.. helpful? 01:14:06 Really, all you need is the ability to load executables. ;p 01:14:08 OK, so right now I can BARELY do "Hello, world", but still, I'm on my way to vim :P 01:14:29 (and, arguably, drivers.) 01:14:30 osdev.org is a fun site about OS development 01:14:37 wildhalcyon: Well aware. 01:14:43 Drivers are the bane of my existance 01:14:44 Pretty sure everyone is :P 01:14:48 (my kernel courtesy of docs from osdev.org) 01:14:59 well, I wasn't aware until quite recently 01:15:22 and I've had a fantastic time with it. 01:15:32 I'm taking an OS class in a few months... 01:17:20 Whereas I, in a few months, am entering college. 01:17:31 congrats pikhq 01:17:47 I, in a few months, am entering grad school. 01:17:52 Bastard. 01:18:00 Of course, oerjan has all of us beat. 01:18:06 Mr. Ph.D. . . :p 01:18:12 lol 01:18:22 You mean DOCTOR Ph.D. 01:18:52 GregorR: I thought 'Mr. Foo, Ph.D.' as acceptable, as was 'Dr. Foo'? 01:19:05 Yeah, I'm just making a joke X-P 01:19:11 Mmkay. 01:19:22 When (if) I get my Ph.D, I'll change my nickname to DrGregor :P 01:19:30 LMAO 01:19:46 I suppose mine would have to become DrPikhq. 01:20:14 Of course, I could get a (non-accredited) Ph.D. tonight. 01:20:15 I'm gonna change mine to Bill 01:20:25 Hahah 01:20:30 Hey, if Gene Gray can declare himself a Doctor of Cubic, then so can I. 01:20:31 :p 01:20:34 I could get a non-accredited Ph.D - HEY, I just did! 01:20:51 ;) 01:21:08 Ah, but I have a doctorate in doctoral studies! 01:21:12 * GregorR scribbles "Ph.D. IN AWESOMEOSITISM" on a cocktail napkin and nails it to the wall. 01:21:24 Kickass. 01:21:31 Its "Awesomology" 01:21:38 any REAL student of awesomology knows that. 01:21:55 wildhalcyon: Yes, and it's the New Reformed Judaic Front. 01:21:56 :p 01:21:58 Awesomeology is to Awesomeositism as Astrology is to Astronomy 01:21:59 But awesomologists are also notorious spellers 01:22:08 burn 01:22:23 sorry then. How about we compromise on awesomonomy? 01:22:39 * GregorR scribbles "Ph.D. IN AWESOMONOMY" on a cocktail napkin and nails it to the wall. 01:22:57 * pikhq scribbles 'Ph.D. in 1337' on the wall 01:23:24 Or should I say, '|>|-|.|) 1|\| 1337'? 01:23:24 * GregorR scribbles "Ph.D. in 1337, granted 1337" on a cocktail napkin. 01:25:21 Goddamn lament is fucking right... >:( 01:25:31 I should just program in smalltalk 01:25:47 ouch! that really sucks! 01:26:00 Its just really frustrating 01:26:17 every time I come up with some freakin' language idea, it turns out its part of smalltalk. 01:26:17 oklopol claims to have invented smalltalk, too. 01:26:35 i think i'm the only person here who hasn't invented smalltalk. 01:26:44 well, except that one time... 01:27:00 lament, we're not concerned with drunken smalltalk inventing 01:27:32 That happens to everyone 01:27:43 seriously though, smalltalk is brilliant 01:27:48 yes 01:27:53 it really is 01:28:21 it has stability issues due to everything being so open 01:28:35 I've been working on creating a dynamic language, and they really got most of it incredibly right 01:28:39 which alan kay considers to be a plus ("nobody's a user, everybody's a programmer") 01:28:51 wildhalcyon: alan kay is a genius 01:28:56 i suggest you read stuff by him 01:29:17 I've been reading everything I can about the language. I'll try to look up some stuff by him 01:29:30 he's mostly interested in education 01:29:34 these days, at least 01:30:02 this is interesting: http://www.vpri.org/pdf/Pisa_RN_2007_007_a.pdf 01:30:11 I think there's areas where smalltalk could be improved (and I'm not talking about syntax now...) 01:30:35 lament: well, i still don't know much about smalltalk 01:30:42 so i *may* have invented it 01:31:57 actually, instead, http://www.vpri.org/pdf/human_condition.pdf 01:32:03 "on human condition" 01:37:49 he also said "Actually I made up the term "object-oriented", and I can tell you I did not have C++ in mind." 01:39:38 I saw that quote 01:39:41 and it made me like him 01:40:08 he must be quite disappointed 01:40:35 he and the team he was with developed OO, modern GUI, wysiwig word processor, laptop ~40 years ago 01:40:55 he expected the world to be in much better shape by this point 01:40:59 -!- boily has joined. 01:42:49 * lament needs to play with squeak more 01:44:03 * pikhq needs to code his kernel more 01:44:12 wildhalcyon needs to think more 01:44:38 That goes without saying. 01:45:13 was that intentional or do you not know the secret of /me? 01:45:34 I know the secret.. I just wasn't thinking 01:45:53 alan kay also said about smalltalk that it was only interesting in the 70s 01:46:02 why did he say that? 01:46:04 I see 01:47:02 wildhalcyon: he doesn't think it's good enough 01:47:09 hence the whole reinventing computing project 01:47:19 Well, its not good enough, but its still better than C++ 01:47:49 pretty much everything is better than C++ 01:47:55 why is that even a "but" 01:48:11 of course it's better than c++, but it's not good enough 01:48:22 sorry, had it backwards ;-) 01:49:08 Consider that C itself is better than C++ for most intents and purposes. 01:49:10 :p 01:49:29 (if you need objects, though, don't use C. . . GObject *will* give you nightmares.) 01:49:51 If I needed objects I'd just fake it with structs 01:50:33 why not just use... python or something 01:50:41 well, I'm saying if I was forced to use C 01:50:53 which has happened, recently 01:51:06 If I were forced to use C, I'd make whoever forced me into it regret it. 01:51:15 And use the asm keyword. 01:51:31 haha, nice 01:51:38 Exclusively. 01:52:19 int main(){volatile asm ("; program code here.");} 01:53:19 int main(){malbolge(...);} 01:53:44 pardon my C ignorance, but whate is the meaning of volatile? 01:53:47 s/whate/what/ 01:54:24 boily: In GNU C, it indicates that any optimisation surrounding that asm keyword is a Bad Idea(TM). 01:55:18 Common cases where it should be used include anything fiddling with the IDT, the GDT, the page table, the address size, etc. 01:55:38 (although anyone fiddling with those from C deserves to be shot. :p) 01:56:10 thanks! a very interesting keyword indeed. 01:56:34 Its used in multi-process environments too 01:56:50 (to prevent it from caching the result) 01:58:46 Sorry, I should explain that better. The keyword can be used to prevent caching of variables that might be accessed by multiple processes to ensure they always get the current, accurate content. 02:00:14 hence, they are volatile. am I correct? 02:01:42 exactly 02:11:29 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 02:12:01 -!- Judofyr has joined. 02:15:09 -!- boily has quit ("Schtroumpf!"). 02:20:40 * pikhq nods 02:32:44 right then 02:39:50 s/In GNU C/In C/ 02:40:11 It means it could change at ANY MOMENT ZOMG, so you can't cache it etc. 02:44:00 GregorR: Ah. 02:44:12 Fine. volatile, as it applies to the asm keyword. ;p 02:44:32 Oh, I assumed you meant volatile on a variable. 02:44:50 Right, volatile on asm is the same idea - either way, it prevents optimizations. 02:45:28 As I explained, and someone else explained in slightly more detail. 02:45:41 I again don't know why JSMIPS isn't working >_< 02:45:44 Stupid "Hello, 3" 02:45:46 it hates you 02:45:50 I have another interpretation that I thought of. . . 02:45:59 volatile = "You can't touch this". 02:45:59 :p 02:46:11 Uhhh, that's just plain incorrect. 02:46:15 I know. 02:46:18 const = "You can't touch this" :P 02:46:22 But that song's stuck in my head. 02:47:27 It depends on who "you" is in the context. For pikhq's version, "you" would be the optimizer 02:47:42 for gregorR's version, "you" is the programmer, or.. anyone else. 02:48:29 In my version (that is, volatile on variables), you CAN modify it - it's just saying that it could ALSO be modified by forces unknown. 02:48:34 for MC Hammer's version, "you" would be anyone attempting to touch whatever the hell he was talking about it. 02:48:55 you can't modify consts 03:05:28 Learning smalltalk has really taught me how much I don't know about the history of computer science 03:06:02 wildhalcyon: Which is what I was thinking. 03:06:29 BTW, I prefer thinking about how much I *do* know. 03:06:36 pikhq: That I didn't know anything about computer science? 03:06:37 And, meanwhile, I WANT A RELAY MACHINE!!! 03:06:43 Oh. That sucks. 03:07:03 wildhalcyon: My version of 'you can't touch this' is what you described. 03:08:23 See? Everyone's right 03:09:26 -!- Tritonio_ has joined. 03:09:49 'Cept for MC Hammer. 03:10:53 Yeah, those pants were wrong 03:30:11 -!- adu has joined. 03:45:18 alright, I'm out 03:45:33 -!- wildhalcyon has left (?). 04:08:44 -!- GregorR-L has joined. 04:09:00 4005fc: 27bdfa70 addiu sp,sp,-1424 04:09:00 ... 04:09:00 400628: afa50594 sw a1,1428(sp) 04:09:06 This cannot POSSIBLY be right. 04:10:35 Does anyone else agree here? 04:12:41 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)). 04:14:29 experimental comics time! 04:14:30 http://www.nonlogic.org/dump/images/1207278828-walls.png 04:14:44 I'd really like to hear what people have to say about this idea. 04:15:48 -!- Sgeo has joined. 04:17:38 GregorR-L? 04:18:08 It's reserving 1424 bytes, then storing to 1428. 04:18:25 I understand MIPS assembly. I was asking for your opinion. 04:18:40 Oh, I hadn't read it, I'm on #mipslinux hoping for some help with that X-P 04:19:50 I'm confused. 04:20:00 it's kinda "arty" 04:20:08 hence "experimental comics time" 04:20:42 Unfortunately, I'm generally incapable of appreciating art >_> 04:20:50 http://193.33.156.5/Database/Filestore/allyouneedislove.jpg 04:26:44 I guess if I was going to define my "statement", the idea came to me from looking at a lot of pictures of graffiti. People carrying conversations and shouting out their proclamations to the world without saying a word, and for all the pain, hatred and suffering, there is still joy and optimisim. 04:27:38 "there is beauty here, if you know how to see it." 04:40:20 RodgerTheGreat: i like it 04:40:27 thanks, lament 04:40:47 what did you come away from it with? 04:40:49 also, cool photo :D 04:42:27 i can't say i come away from it with much... i just like it 04:42:39 (that's also true of all the great masterpieces, don't feel bad) 04:42:49 yeah, it's all good 04:43:00 your sig is weird 04:43:21 it's a stylized "JE" 04:44:42 ah 04:44:58 what did it look like to you? 04:45:52 either an i ching pattern, or a little like the chinese character for rain 04:45:59 but clearly something asian :) 04:46:04 haha- cool 04:46:23 can you link me to an image of the "rain" character? 04:46:49 http://z.about.com/d/chineseculture/1/0/v/Y/rain.gif 04:47:07 I like it 04:47:16 chinese characters in general are amazingly cool 04:48:15 of all the things for my signature to resemble... rain. fitting. 04:53:22 yes, very. Why? 04:56:42 I like rain. For so many people it seems to represent sadness, but I find joy in the rain. I want to live under the grey skies of my home state again. 04:58:08 i like rain, but i don't like grey skies. 05:01:39 學 05:02:06 that's a traditional chinese character meaning "education" 05:02:13 the bottom half is a child 05:02:27 the top half is stuff falling into the child's open head 05:02:29 sick 05:02:39 poetic 05:02:51 same thing :) 05:25:29 haha 05:25:31 -!- GreaseMonkey has joined. 05:25:37 hey, GreaseMonkey 05:25:46 'lo 05:52:22 l 05:57:13 good night everyone 05:57:23 -!- RodgerTheGreat has quit. 06:31:01 -!- Sgeo has quit ("Ex-Chat"). 06:31:05 -!- GregorR-L has quit ("Leaving"). 06:32:48 -!- atsampson has quit (Read error: 113 (No route to host)). 07:34:38 Well, I got a little bit farther with JSMIPS ... and now I'm having the malloc problem again (y'know, the problem I fixed) 07:35:46 ARGH - damn it. My "fix" to malloc, I've just realized, was actually a bug I inadvertently introduced while trying to fix something else. Now I've fixed that bug X_X 07:54:13 -!- Iskr has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:33:45 -!- atsampson has joined. 08:37:16 -!- ais523 has joined. 08:37:47 -!- thutubot has joined. 08:56:29 -!- adu has quit ("Bye"). 09:07:44 -!- atsampson has quit (Read error: 113 (No route to host)). 09:33:46 -!- atsampson has joined. 09:49:13 -!- GreaseMonkey has quit ("zzz"). 10:07:54 OMFG O_O 10:07:58 newlib was actually broken O_O 10:08:20 It was trying to mark bins as used or unused, but it expected 'unsigned long' to be 64 bits, so it could mark 64 bins. 10:08:36 unsigned long is 32-bits on ... uh, just about everything, including the default MIPS ABI. 10:08:49 So it was shifting off the edge >_< 10:16:12 http://www.codu.org/jsmips/ YAY 10:16:17 OK, next step ... fibonacci? 10:25:32 OK, can't print numbers greater than 9 X-D 10:31:53 ahahahah 10:32:07 GregorR: why not? 10:32:11 is it a problem in printf? 10:41:32 Haven't diagnosed it yet. 10:41:46 It's going into a perhaps-infinite loop in memchr 10:50:33 +quit 10:50:34 -!- thutubot has quit ("ThutuBot quitting"). 10:50:38 -!- ais523 has quit ("food, will be back later"). 11:11:12 -!- ais523 has joined. 11:11:16 -!- thutubot has joined. 11:21:32 -!- thutubot has quit (Read error: 104 (Connection reset by peer)). 11:24:08 -!- ais523 has quit (Read error: 104 (Connection reset by peer)). 11:42:36 Deewiant, I tried to build cfunge on windows using MSVC++ Express, it didn't hit a POSIX issue, it failed to find stdint.h and that is C99................... 11:43:31 AnMaster: VC doesn't support C99 11:43:56 AnMaster: and in any case, the windows C runtime library (MSVCRT) doesn't support C99 stuff so even using MinGW doesn't help 11:44:07 since your printfs won't work, for instance 11:44:39 although maybe, since you're using only the format strings defined in the std headers, they might work... dunno 11:44:48 (e.g. %I64d instead of the standard %lld) 11:45:02 assuming the MinGW headers are smart enough to define stuff the way the libraries are 11:47:42 Deewiant, so basically Windows doesn't do C99? 11:47:49 that bad, didn't expect it 11:48:12 -!- ais523 has joined. 11:48:41 -!- thutubot has joined. 11:49:01 Deewiant, I was planning to add #ifdef to allow non-posix, but if it can't even do C99... 11:49:43 Deewiant, I may get access to a solaris on ultrasparc system next week (or it may be freebsd on ultrasparc), plan to test it on it if I can 11:50:43 Deewiant, anyway know any non-gcc compiler that can actually do C99? 11:52:57 GCC doesn't do C99. It only does most of it. http://gcc.gnu.org/gcc-4.3/c99status.html 11:53:07 Granted, it's a lot more of C99 than MSVC. 11:53:17 yeah I know that 11:53:35 fizzie, and I don't use most of it, what I want to make sure is that I'm not using GCC extensions 11:53:43 I know I can compile on non-glibc 11:53:47 I tried on freebsd 11:53:51 but well that is still gcc 11:54:39 fizzie, anyway the code worked fine under gcc 3.x last I tried (about a week ago, may not work any longer) 11:54:45 3.4 I think I tried 11:55:17 I normally use 4.1.2, but it works on 4.2 too 11:56:30 If you're speaking of Windows compilation, lcc-win32 is free-for-non-commercial-use and claims to support "95 %" of c99 (according to it's author), but I wouldn't know any details about that. 11:56:54 lcc hm? 11:57:14 there is always mingw I guess 11:57:22 I don't think lcc-win32 has the posix combattability things mingw has, though. 11:57:28 hm true 11:57:55 -!- ais523 has quit (Read error: 104 (Connection reset by peer)). 11:58:01 I do use posix stuff but well I aim for #ifdefs where needed 11:58:09 There was a printf patch on the mingw mailing list which made it automagically convert %..ll to %..I64 on Windows, but I couldn't find out whether they actually applied it. 11:58:53 fizzie, I use use the defines from inttypes.h for that 12:01:11 Well, that would work. At least in my /usr/i586-mingw32msvc/include/inttypes.h it has the correct prefix. 12:01:27 -!- thutubot has quit (Read error: 104 (Connection reset by peer)). 12:38:32 -!- ais523 has joined. 12:39:32 -!- thutubot has joined. 12:39:45 -!- atsampson has quit (Read error: 104 (Connection reset by peer)). 12:44:28 -!- atsampson has joined. 12:54:28 AnMaster: the mingw headers do appear to be correct for MSVCRT, checked 12:54:46 and it appears fizzie already told you, too 13:04:08 -!- jix has joined. 13:12:53 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 13:13:06 -!- Judofyr has joined. 13:46:39 -!- Tritonio_ has quit (Remote closed the connection). 13:52:17 Deewiant, hm no mkdir/chdir/rmdir function!? 13:52:20 functions* 13:52:38 and strdup not in normal header? 13:52:59 mkdir is posix 13:53:14 and strdup? 13:53:16 and strdup is docced at http://msdn2.microsoft.com/en-us/library/ms235454(VS.80).aspx 13:53:24 according to google anyway 13:53:26 see what they say 13:54:37 guess too old mingw maybe 13:54:47 as I gave up on msvc 13:58:07 CMakeFiles/cfunge.dir/src/instructions/sysinfo.obj(.text+0x2fb):sysinfo.c: undefined reference to `environ' 13:58:09 lovely 13:59:00 environ doesn't exist 14:01:07 #ifdef __WIN32__ 14:01:07 / Fake it! 14:01:07 static const char * environ[] = { "SYSTEM=wincrap", "SUPPORTS=not environ at least, get a sane system" }; 14:01:07 #else 14:01:07 # ifndef _GNU_SOURCE 14:01:09 extern char **environ; 14:01:11 # endif 14:01:13 #endif 14:01:15 there we go 14:01:17 :) 14:02:01 AnMaster: that's crap >_< 14:02:12 Deewiant, not my fault the system isn't sane 14:02:19 but yes I said it, wincrap 14:02:34 AnMaster: "sanity" is relative 14:02:47 I don't think the existence of extern char**environ defines sanity ;-) 14:02:57 Deewiant, oh? 14:03:09 Deewiant, it is how it is supposed to be declared 14:03:35 and who decides what's "supposed to be" :-) 14:03:43 POSIX in this case 14:03:52 where argc is the argument count and argv is an array of character pointers to the arguments themselves. In addition, the following variable: 14:03:52 extern char **environ; 14:03:52 is initialized as a pointer to an array of character pointers to the environment strings. The argv and environ arrays are each terminated by a null 14:03:52 pointer. The null pointer terminating the argv array is not counted in argc. 14:04:10 AnMaster: Windows is older than POSIX :-) 14:04:18 Deewiant, unix is even older :) 14:04:19 so you could argue that POSIX is insane ;-) 14:04:23 and it did it that way too iirc 14:04:47 probably, that's what the POSIX standard is mostly based on 14:05:09 * ais523 had heard that Windows was an insane implementation of POSIX 14:05:16 AnMaster: so now you're calling amiga "insane", too? ;-) 14:05:31 it's possible to download things from Microsoft such that Windows is POSIX-compliant, apparently 14:05:45 yep 14:05:53 or take the simpler alternative and use cygwin 14:05:55 but the result is the POSIX equivalent of a DS9K; yes, technically it complies with the spec, but nobody else does things like that 14:06:40 (also: cpp plus echo form a conforming C89 implementation, and cat is a conforming DIS29500 implementation, because sometimes the bars for conformance are set really low) 14:07:18 BTW, the echo says 'This is a diagnostic message. Compilation successful' 14:07:43 or something along those lines 14:07:50 the diagnostic message is very important, though 14:10:16 hah 14:12:29 (effectively, the standard says that you can implement anything you like as an extension, but have to put up at least one diagnostic when you do this) 14:12:47 (and if the original program was standards-compliant, your diagnostic is just a compiler warning) 14:13:15 the hardest part of complying with C89 is handling #error, which has to cause compilation to fail, but cpp can do that for you 14:15:04 the OOXML compliance rules, however, seem to be there just so people can't complian to Microsoft that they don't comply with their own spec 14:15:11 s/complian/complain/ 14:22:31 -!- oklopol has quit (Read error: 110 (Connection timed out)). 14:44:15 static const char * environ[] = { "SYSTEM=wincrap", "SUPPORTS=not environ at least, get a sane system" }; 14:44:21 I find I need to write a line 14:44:23 int finite; 14:44:28 eh? 14:44:29 to get C++ programs to link under DJGPP 14:44:33 well yes I did do that 14:44:42 what? 14:44:44 a new line yes 14:44:49 there isn't a finite defined anywhere in any standard relevant to that AFAIK 14:44:53 static const char * environ[] = { 14:44:53 "SYSTEM=windows crap", 14:44:53 "SUPPORTS=not environ at least, get a sane system if you want this to work." 14:44:53 }; 14:44:55 but the link fails if I don't do that 14:44:56 was my final version 14:45:09 ais523, what is int finite? 14:45:19 it doesn't do anything obvious 14:45:25 where is it used? 14:45:30 I thing libstdcxx references it by mistake 14:45:47 it certainly shouldn't be referencing it deliberately because it's in my namespace 14:45:55 but if it's not there I get a link error 14:46:17 mhm 14:46:21 well whatever 14:46:30 ais523, I do not target dos 14:46:48 most people don't nowadays 14:46:59 ais523, and MSVC I gave up on, but it does compile and run, with many warnings, under win32 using mingw 14:47:00 but of course, if you write strictly conforming C89, you target /everything/ 14:47:10 I write C99 + POSIX 14:47:35 some of C99 is good 14:47:38 but it never really caught on 14:47:47 well, it is in future I hope 14:47:51 stdint.h :) 14:59:22 ais523: 14:59:24 "but I won't fix any bugs that can't be reproduced on a POSIX 14:59:24 system. Patches are welcome if they don't mess up source too much (anything 14:59:24 using win32 API counts as messing up)." 14:59:50 * ais523 wonders if any win32 functions happen to be the same as POSIX functions by chance 15:00:06 I doubt it, though, because POSIX functions are generally lowercase, and Win32 API functions are generally CamelCase 15:00:14 was just about to say that 15:01:06 Deewiant, how can you get environment variables on windows just using C99 and NOT using windows API 15:01:20 * AnMaster changes that to Win32/64 just in case 15:01:21 fork() : 0 parameters 15:01:27 CreateProcessEx() : 7 parameters 15:01:27 ais523, eh? 15:01:40 the Win32 API is really quite bloated 15:01:44 yes indeed 15:02:00 and they failed to get it right first time 15:02:05 so that is why there is the Ex one 15:02:07 heh 15:02:08 thus the Ex at the end of the name 15:02:33 though of course POSIX isn't perfect either, consider tmpfile/mkstemp and whatever 15:02:43 yes 15:02:56 tmpfile was in C89, though, so it's probably the best one to use from a portability perspective 15:03:07 there's nothing in its definition that suggests that it has to be insecure, either 15:03:14 oh yes tmpfile and tempfile 15:03:20 never got the difference between them 15:03:36 (I was actually shocked to find that tmpfiles were often created on disk, because creating them entirely in memory complies with the standard just fine) 15:03:52 ais523, thankfully I currently don't need any temp files 15:04:03 C-INTERCAL has been known to use quite a few 15:04:12 temp .c files to feed to gcc, mostly 15:04:28 well yes 15:04:34 but on DOS, it also needs to create a response file to tell gcc what its command line is, because there's a limit on command line length in DOS 15:04:34 that would be a valid case 15:04:45 ais523, um that short? 15:04:54 127 chars, I think 15:04:59 oh that is short 15:05:14 ais523, even on POSIX the command line may have a limit 15:05:21 -!- RedDak has joined. 15:05:22 yes, but I don't reach it 15:05:24 that is one reason for xargs 15:05:43 ais523, I remember reaching it in one project, so many different *.o all on one line 15:05:51 in the final link line 15:06:15 * ais523 runs ls -l `find .` in their home directory just to see if it will work 15:06:42 somehow I doubt it 15:06:48 but it's possible that bash can handle that sort of thing 15:07:03 GNU tend not to like hard-coded limits 15:07:04 ais523, and of course the build system deciding to use something like build/x86_64-unknown-linux-gnu/src/blah.o for each entry didn't help 15:07:25 ais523, hm I think in recent kernels the space for command line arguments is dynamic 15:07:43 2.6.20 or later or something like that 15:07:46 AnMaster: I once wrote an IOCCC entry which defined no variables 15:07:56 it used the argv space, which is editable, to do all its calculations 15:08:02 obfuscated C? 15:08:13 yes 15:08:18 ais523, oh interesting, you needed to cast a lot of things then I assume? 15:08:22 anyway link to that thing? 15:08:36 AnMaster: it's not publically online, but as it lost I may as well paste it 15:08:58 I remember seeing something like a very simple flight sim with the source in the shape of a plane 15:09:05 IOCCC winner iirc 15:10:07 * ais523 tries to find the file 15:10:12 it's on here somewhere, I think 15:10:40 hm 15:10:48 ais523, -Wall -Wextra ? ;) 15:11:04 failed really badly 15:11:14 because I bet you need to cast things a lot 15:11:18 ais523, failed how? 15:11:23 at -Wall 15:11:26 ah 15:11:29 because there were lots of statements with no effect 15:11:33 that I put there deliberately 15:11:36 ah I see 15:11:41 and yes, the operator precedences were meant to be confusing 15:11:53 * AnMaster waits for ais523 to pastebin it 15:12:02 * ais523 waits for ais523 to find it 15:13:42 http://pastebin.ca/971073 15:13:53 it should have a blank line at the start but pastebin.ca keeps removing it for some reason 15:14:11 gcc '-D_(a,b,_,d,e)=while(a(d(e(_?putchar(b):(c=getchar())<0?b:c))))' -Dunsigned= -funsigned-char -ansi -o ioccc5 -O2 ioccc5o1.c 15:14:12 heh 15:14:13 is the compile line 15:14:26 wow 15:14:40 argv isn't unsigned char** in theory 15:14:43 but it has to be in practice 15:14:47 so I write unsigned char** in the program 15:15:02 I think it is signed char? 15:15:06 and then use -Dunsigned= -funsigned-char to make the program strictly conforming when I've told the compiler not to mess it up 15:15:09 AnMaster: it's plain char 15:15:18 which is either signed or unsigned depending on the implementation 15:15:27 on gcc you can choose which it is with command line arguments 15:15:37 that's what the -funsigned-char is for 15:15:43 ok 15:15:47 what does the program do? 15:15:53 lots 15:16:00 I don't dare to run it 15:16:06 I can't review it to be safe 15:16:17 there are 10 programs hidden in there 15:16:32 brainfuck too it seems? 15:16:33 and don't worry, it doesn't make any library calls but putchar and getchar 15:16:43 AnMaster: yes, the program's legal BF 15:16:50 legal Perl too, if you hadn't guessed 15:17:11 I can't see putchar mentioned anywhere? 15:17:18 it's in the gcc command line 15:17:24 so as not to spoil the appearance of the program 15:17:25 ioccc5o1.c:25:10: warning: trigraph ??) ignored, use -trigraphs to enable 15:17:26 hm? 15:17:37 sorry, I forgot to specify -trigraph 15:17:44 it's needed for the code to work properly 15:17:56 oh wait, -ansi turns it on 15:18:23 ah -E helps a bit 15:18:30 (trigraphs are an obscure and rarely-used C89 feature, but this time I was using them to type chars like ] with a sequence of characters that was nop in Brainfuck) 15:18:35 shows the pre-processes code 15:18:37 still weird 15:18:49 at least it helps you figure out which of the underscores are macro calls 15:19:08 $ gcc '-D_(a,b,_,d,e)=while(a(d(e(_?putchar(b):(c=getchar())<0?b:c))))' -Dunsigned= -funsigned-char -trigraphs -O2 ioccc5o1.c 15:19:09 (I use _ for a lot, because it's the only identifier I could use in that program, pretty much) 15:19:11 $ ./ioccc5 15:19:11 Segmentation fault 15:19:16 is that supposed to happen? 15:19:17 AnMaster: that's expected 15:19:21 why? 15:19:28 because you didn't give it a command-line arg 15:19:36 and what command line to give? 15:19:47 try ./ioccc5 `cat ./ioccc5` 15:19:57 does nothing? 15:19:59 sorry, ./ioccc5 "`cat ./ioccc5`" 15:20:08 ýýýýýýýýýýýýJGGGGGGA>>>>>>]ZZZZZZNKKKKKK?<<<<< right? 15:20:16 hmm 15:20:31 same result with -m32 15:20:31 try ./ioccc5 "a[-],[.[-],]" 15:20:35 that should give it away 15:20:50 no output, it just stands there 15:20:52 doing nothing 15:20:54 type some input 15:21:13 ok looks like it runs befunge? 15:21:15 err 15:21:17 brainfuck 15:21:18 I meant 15:21:20 yes 15:21:30 tape length is half the length of the original program 15:21:36 and it discards the first character of input 15:21:50 here, let me paste the shell script I wrote to extract the other programs from there 15:21:52 still this does not explain why it should work on it's own binary? 15:21:58 ah, it doesn't 15:21:58 sure 15:22:01 it works on its own source 15:22:07 which is legal BF, after all 15:22:36 yes let me see the perl source 15:22:46 is that another brainfuck interpreter? 15:23:19 no 15:23:24 no two programs do the same 15:23:42 incidentally, if any program needs input, giving it its own source code is often a good place to start 15:23:48 and remember that the file actually starts with a newline 15:23:56 yep 15:24:00 perl does nothing 15:24:03 whatsoever 15:24:09 $ cat ./ioccc5o1.c | perl ./ioccc5o1.c 15:24:10 $ 15:24:12 http://pastebin.ca/971083 15:24:13 that's all 15:24:22 extracts all the programs hidden in the original 15:24:29 and you need to use perl -p 15:24:42 no clue what perl -p does 15:24:53 puts the entire program in an implicit while(<>) loop 15:25:01 to prevent me needing to write a literal while in the program 15:25:17 temp.sh: line 71: ioccc5: command not found 15:25:21 why do I get that a lot 15:25:25 Generating the tab-removal program... 15:25:25 temp.sh: line 71: ioccc5: command not found 15:25:27 AnMaster: oh, I had . in my path 15:25:33 I forgot other people normally don't 15:25:43 change ioccc5 to ./ioccc5 throughout and it'll work 15:27:29 any of those is a quine of the thing? 15:27:36 no, unfortunately 15:27:53 there are programs to do RLE compression and decompression of BF files 15:28:27 they don't quite roundtrip, though, because the compressor can't handle tabs in the input and the decompressor leaves stray tabs in the output 15:28:34 (both compressor and decompressor are written in BF) 15:28:36 bfunzip.b is the same as ioccc5o1.c 15:28:37 says diff 15:28:39 yes 15:28:47 different language, so different extension 15:28:50 it's created using cp 15:28:53 and that was cat iirc? 15:28:58 or? 15:29:01 not quite cat 15:29:04 it's an RLE decompressor 15:29:07 eh 15:29:18 using tab as a metacharacter to talk about repetition 15:29:27 I see 15:29:34 hmm... pastebin may have eaten the tabs in the input, I'll paste it in filebin too 15:29:57 http://filebin.ca/dvpqm/ioccc5o1.c 15:30:18 oh, BTW, about one quarter of that big square of BF-like code at the top is just junk 15:30:23 but the other 3/4 are meaningful 15:30:41 also, I like the way I hid the actual cat program 15:30:54 you get it by uuencoding the original source with the filename [[ 15:31:21 and interpreting the result as BF 15:31:24 oh 15:32:34 ais523, how come your code lost? 15:32:43 oh wait, not all the programs where C? maybe that? 15:32:47 I don't know either 15:33:03 they've released the names of last year's winning programs 15:33:11 but not the programs themselves 15:33:18 so I don't know what the winners were like yet 15:33:43 also, not all 10 programs are all that useful 15:33:53 some are just extracting other programs from the original source 15:34:24 newline.txt 15:34:27 what is that one for? 15:35:00 AnMaster: it's a file containing just one newline 15:35:06 but why? 15:35:12 it's catted onto the end of files to ensure that they end with a newline 15:35:18 because otherwise sed discards the last line 15:35:27 ah you could use echo >> file 15:35:36 I didn't know that at the time 15:35:51 note that I use rm 2>/dev/null rather than rm -f, for instance 15:35:51 or just 15:35:56 cat $1 newline.txt | sed -f ioccc5.sed > temp.sh 15:35:59 convert to 15:36:10 ( cat $1; echo; ) | sed -f ioccc5.sed > temp.sh 15:36:31 yes, there were many better ways 15:36:38 ais523, yeah why the "rm 2>/dev/null"? 15:36:41 but 1) I didn't know shellscript at the time 15:36:53 2) that system had tcsh as the default shell, so you couldn't expect me to learn 15:36:55 everyone must know of rm -f at least 15:37:01 AnMaster: I didn't 15:37:13 I grew up on DOS, and that was towards the start of my use of UNIX 15:37:13 ais523, how did you remove directories locally then? 15:37:17 ah 15:37:38 AnMaster: rmdir exists on UNIX with the same semantics as it has in DOS 15:37:52 mhm 15:37:54 so I removed them by deleting all entries in them and then using rmdir 15:38:04 -_- 15:38:10 crazy 15:38:26 I knew about rm, cp, ls, cd and that was about it 15:38:36 to put it in perspective, it was a while before I discovered pwd 15:38:47 what about man? 15:38:59 I knew about man 15:39:04 ah 15:39:07 but I needed to know what argument to give it 15:39:14 and I was unaware of man -k 15:39:17 well the command would be a nice one 15:39:25 ais523, ah? man man ;D 15:39:38 I started learning a lot faster once I thought of that 15:39:51 heheh 15:39:58 note, however that throughout all this, I /still/ preferred UNIX to Windows 15:40:07 I see 15:40:22 (I remember originally finding the web browser by typing in the names of web browsers I knew until one of them worked) 15:41:07 (which is why I found the ancient version of Netscape, and used it for a while, before I found the merely very old version of Mozilla) 15:41:21 (and of course, neither of them work particularly well on many modern websites that aren't well-designed) 15:41:41 heh 15:41:46 ais523, how long ago was this? 15:41:55 over a year 15:42:02 maybe about two years ago 15:42:18 actually, thinking about it, it must have been december 2006 15:42:21 that recently 15:42:29 but the system I was on was really old, and hadn't been updated in years 15:42:33 ais523, I was in that phase around red hat 5.0 15:42:37 and I didn't even know DOS 15:42:39 I came from Mac 15:42:49 put it this way, it was 2006 and yet the system was still running CDE 15:42:51 red hat 5.1 or 5.0 or such 15:43:01 ais523, what OS was it then? solaris? 15:43:04 yes 15:43:07 hah 15:43:20 but all UNIXes are similar until you get down into the very technical details 15:43:26 still SPARC is a quite CPU really 15:44:02 ais523, indeed they are thanks to posix 15:44:35 without posix cfunge would not run on say freebsd, needed just one change, because I checked a certain optional posix feature incorrectly 15:44:57 ie, #ifdef foo instead of #if defined(foo) && (foo != -1) 15:45:10 #if defined(_POSIX_ADVISORY_INFO) && (_POSIX_ADVISORY_INFO != -1) 15:45:16 *seems* to be the correct way to check 15:45:18 not 100% sure 15:45:28 ah, the ehird-annoying microoptimisations 15:45:38 ais523, indeed, freebsd doesn't implement it 15:45:41 when I resort to microoptimisations, I generally do them in assembly 15:45:49 AnMaster: you can't get envvars without the winapi 15:46:04 Deewiant, well then windows basically sucks 15:46:04 if the project is one where using assembly isn't practical, then microoptimisation is the wrong idea 15:46:22 AnMaster: well, extern char**environ is the part of the POSIX API, so it makes sense that windows has its own API :-P 15:46:35 ais523, well I did notice a difference, I tested on a 10 MB large file from /dev/urandom 15:46:40 it did load the file faster 15:46:49 slightly 15:46:51 AnMaster: you want GetEnvironmentStrings and FreeEnvironmentStrings 15:46:57 assuming you want, that is. 15:46:57 Deewiant, not really 15:46:58 oh, for a moment I thought you were going to say that the difference was that /dev/urandom was different between the two systems 15:47:32 Deewiant: oh no, you just reminded me that in the Windows API all the functions which allocate resources have their own corresponding deallocators 15:47:41 ais523, nah it was generated with dd if=/dev/urandom of=test count=10M 15:47:45 or something like that 15:47:46 whereas in POSIX, close(), fclose() and free() are enough for most things 15:48:06 in Windows, how you free a string depends on which function you got it from... 15:48:13 ais523, ouch that hurts 15:48:29 ais523, well add munmap to that list actually 15:48:40 OK 15:48:47 although that's more unlocking, then freeing 15:48:53 hm ok 15:48:57 haven't used mmap a lot 15:49:09 (in Windows, things like resource data have to be allocated then locked, then once you're done with them unlocked then freed) 15:49:21 ais523, was thinking of anonymous backed memory, then munmap may be more like freeing actually 15:49:22 ais523: well, I think that makes sense because then you don't have to change your code if the upstream changes 15:49:24 (and using resource data is much like mmapping a file) 15:49:42 btw, I think there is a zsh extension to provide mmaped IO in zsh scripts 15:49:42 Deewiant: the whole point of Windows is that the upstream never changes, ever 15:49:51 because people distribute things as binaries, not source 15:50:08 so if the upstream changed, maybe you wouldn't have to change your source, but the binaries would stop working 15:50:09 ais523: between kernels, stuff changes 15:50:19 ais523: 9x/me vs 2000/xp vs vista 15:50:24 and pre-9x 15:50:29 Deewiant: yes, but they leave the old libraries there anyway 15:50:32 of course, they require huge compatibility layers 15:50:35 but they're different 15:51:03 ais523: so if you use free instead of freeEnvStrings your program might not work on a later kernel regardless of the fact that there's a compat layer available 15:51:08 I thought they left the old libraries there for old applications to link against, and added new ones implementing most of the new functions for the new ones 15:51:22 since it might be that freeEnvStrings used to be only free, but now does something more complicated/different anyway 15:51:41 Deewiant: I can see the reasoning in some cases 15:51:47 and that is retarded 15:51:53 the API gives me the strong suspicious than all objects are refcounted, for instance 15:52:01 ais523, indeed 15:52:21 but when the refcounting relies on the honesty of the applications you link against, it's no wonder that Windows isn't very good at cleaning up after crashed applications 15:52:30 (or wasn't around 9x when I learnt this stuff) 15:52:40 well, 9x ran on top of DOS :-) 15:52:46 ais523, well nor is xp 15:52:49 I can see how that might make cleaning stuff up harder 15:53:06 unused directories or files that can't be removed because they are in use are quite common 15:53:10 or multiprocess handling in general 15:53:13 after an application crashed 15:53:15 Deewiant, ^ 15:53:19 AnMaster: eh? never come across that 15:53:26 Deewiant, happens a lot to me on xp 15:53:36 never even heard of that happening 15:53:45 read about it, very common 15:53:48 if the process is gone, its locks are gone 15:53:55 though think only Swedish ppl complained 15:53:56 hm 15:54:07 AnMaster: what I can understand is if only the 'task' is gone from the task manager, the process might still be running 15:54:09 maybe translations go into the core and break something 15:54:10 heh 15:54:12 but the task manager is crap 15:54:14 heh 15:54:20 Deewiant: I've known it to be impossible to remove a USB stick safely because I opened a program from it with a badly behaved program earlier 15:54:22 * AnMaster prefers gettext 15:54:24 -!- boily has joined. 15:54:38 ais523, yeah that too 15:54:43 ais523: I haven't used such peripherals much, so that might be 15:55:34 oh and then requiring reboots for a library update 15:55:36 that is just insane 15:55:48 I updated glibc in multi user mode with no issues 15:55:54 without reboot after 15:56:34 AnMaster: Windows requires reboots for more or less everything 15:56:39 ais523, exactly 15:56:49 aye, and that sucks 15:56:51 I think because it doesn't have the concept of temporarily stopping a daemon while you change it 15:56:56 and also because you can't remove open files 15:56:56 yep 15:57:01 ais523, yes and another thing 15:57:01 yep 15:57:41 on linux removing a *.so loaded into a program causes no issues, the kernel make sure to read any bits of the file into memory that weren't before 15:57:43 then removes the file 15:57:50 and allow you to replace it with a new one 15:58:14 also, Linux *.so files are not as pervasive as Windows .dll files 15:58:31 as in, glibc might be important, but at least it doesn't tie up your entire API/windowing system 15:58:33 pervasive? 15:59:03 ais523, yeah indeed, I can upgrade stuff just fine while running 15:59:07 the most important dlls such as user, GDI and system (which ironically have a .exe extension) are in use constantly 15:59:16 it is odd that Mac OS X seems to want reboots every now and then 15:59:18 whereas glibc is just required for C programs to run 15:59:24 after all it is based on *bsd 15:59:34 in theory you could use syscalls directly instead, which can't be done in Windows 15:59:46 ais523, static binaries yes 15:59:57 there are no Windows static binary 16:00:07 'static' basically just means 'uses only GDI, user and system' 16:00:13 I think that is used to install glibc, or in the case of portage all the libraries are already loaded into the binary before it copies 16:00:17 and it does it in one go 16:00:20 ais523: and the C runtime, usually 16:00:32 ais523, I meant as in gcc -static 16:00:38 in my experience that was statically linked when I did a static build 16:00:43 "not dynamically linked" 16:01:05 as in "not depending on ld.so to be able to load" 16:01:08 that's what's wrong with Windows: all user programs link against the operating system 16:01:22 ais523, well I wonder how the OS is compiled 16:01:23 that simple fact explains quite a lot 16:01:25 or device drivers 16:01:52 AnMaster: user-mode device drivers would link against the OS. I don't know how kernel-mode device drivers work in Windows, usually they just don't 16:02:09 don't what? 16:02:21 and user mode device drivers? 16:02:34 like fuse? file system in userspace? 16:02:37 AnMaster: don't work 16:02:45 ah 16:02:48 user mode device drivers aren't common on Windows 16:02:59 but on Linux, many printer drivers are user mode, for instance 16:03:14 meaning that you can run them without linking them to the kernel, all you need is to be root 16:03:24 ais523, well windows need some kernel mode device drivers, IDE controller, or keyboard for example 16:03:26 whereas for a kernel device driver you need modprobe or similar to run them 16:03:35 AnMaster: all OSs need kernel mode device drivers 16:03:43 exactly 16:03:50 however, they're apparently the main cause of BSODs on Windows 16:04:00 indeed on NT/XP at least 16:04:13 9x may actually BSOD from anything 16:04:38 (apart from Windows 3.1, where most BSODs were recoverable; my favourite one was the 'please swap disks' bluescreen you got when using A: and B: simultaneously on a single-floppy-drive machine, not harmful at all and in fact useful) 16:04:54 BSODs were recoverable in 3.1? 16:05:12 you had two choices 16:05:24 you could press [ESC], and it would ignore the error and attempt to continue 16:05:33 or? 16:05:37 that worked sometimes, and if it failed you could bring the BSOD back up with Ctrl-Alt-Del 16:05:45 or you could press [Enter], which killed the process 16:06:04 and the process-kill actually worked, although it didn't deallocate memory so you often had to reboot after that 16:06:21 lol 16:06:30 -!- boily has quit ("Schtroumpf!"). 16:06:49 Ctrl-Alt-Del gave you a /voluntary/ BSOD in those days, so you could kill processes even if they'd done nothing that seemed wrong to the OS 16:07:05 and the BSOD was a useful tool for correcting unruly computers 16:07:22 how would you select what process to kill? 16:07:26 AnMaster: it chose for you 16:07:32 it tried to guess the one you were using at the time 16:07:36 and if you meant some other? 16:07:42 then you were screwed 16:07:51 you would try to alt-tab to it first, I suppose 16:07:57 reminds me of pre-OSX macos 16:08:21 they also tried to guess, think it was Alt-Apple-Esc 16:08:22 I'm not saying that this is a good system, just am amused that it was more reliable and useful than 9x's 16:08:33 ais523, indeed 16:09:17 actually, thinking about it, it's about as useful as XP's is 16:09:51 (the issue with XP's is that you need to bring up Task Manager, which runs along with your other programs, rather than being a 'behind the scenes' sort of emergency mechanism that couldn't be disrupted by the rest of your system 16:09:53 ) 16:10:01 indeed 16:11:13 ais523, any progress on your mad plans for funge and intercal 16:11:31 AnMaster: no, I'm busy with other things in RL at the moment, try asking again next week 16:11:35 also I have been thinking about producing a trefunge version as well 16:11:38 in future 16:20:26 compile time option probably for speed 16:22:25 nah, you could make it a command-line option sacrificing hardly any speed, by using defines between the Befunge/Trefunge version, #including your code into itself (appropriately guarded), and writing an appropriately guarded wrapper main() 16:22:25 of course there is no test suite for trefunge so .... 16:22:37 of course, doing it like that would be insane 16:24:58 including your code into itself? O_o 16:25:58 Deewiant: that's one way to have most of it duplicated in the binary 16:26:07 of course, you need to guard it properly to avoid an infinite loop 16:26:37 I also used it once when writing my own archiving utility that output C files that output the original files stored in the archive 16:27:01 what rc/funge does is that it has an #ifdef every time it pops a vector, I think 16:27:02 so that I could write C files whose functionality could be changed merely by appending to them, in completely standard C89 C 16:29:40 wow: http://thedailywtf.com/Comments/The-Test-of-Truth.aspx#188082 16:30:01 that's the sort of solution I'd like to have thought of, but I've never had to solve that particular problem before 16:36:54 well I store vectors as structs 16:37:13 you could still do it by doing name-mangling in the preprocessor 16:37:26 so only funge space and anything meddling with z dimension would need changing 16:37:42 as a sort of compile-time low-tech C++ alternative that loses no speed 16:37:45 ais523, and that sounds silly 16:37:56 however, I do not recommend doing it this way given your coding style 16:38:52 anyway after cfunge is done what I want to do is write an interpreter for some simple imperative language that uses multi char instructions 16:39:01 may be a chance to learn flex and such 16:39:32 * ais523 tries hard not to mention INTERCAL 16:40:06 that's not a particularly easy example to start with, but you'll learn a lot of flex and bison writing code to handle it 16:40:10 I know I did 16:41:55 ais523, I was reading ick_loose.h 16:42:01 #define IE997 "997 ILLEGAL POSSESSION OF A CONTROLLED UNARY OPERATOR.\n\ 16:42:01 ON THE WAY TO %d\n" 16:42:04 hm 16:42:15 that one didn't have a descriptive comment 16:42:17 what is it for 16:42:35 use of a unary operator that doesn't exist in your current base 16:42:38 such as BUT in base 2 16:42:45 *blink* 16:42:51 (base 2: AND, OR, XOR) 16:42:59 (base 3: AND, OR, BUT, XOR, sharkfin) 16:43:07 what is BUT for? 16:43:14 oh and sharkfin?! 16:43:22 AnMaster: noncarrying addition 16:43:27 is sharkfin 16:43:31 BUT is a bit harder to explain 16:43:37 tell me 16:43:50 in base 2, a AND b returns 0 if either a or b is 0, and 1 otherwise 16:44:02 likewise, in base 2, a OR b returns 1 if either a or b is 1, and 0 otherwise 16:44:23 in base 3, a AND b returns 0 if either a or b is 0, otherwise 2 if either a or b is 2, otherwise 1 16:44:30 ON THE WAY TO %d == line number? 16:44:37 and a OR b returns 2 if either a or b is 2, otherwise 1 if eitehr a or b is 1, otherwise 0 16:44:55 ais523, yeah but where does BUT fit in into that? 16:44:56 BUT is the remaining case that returns 1 if either a or b is 1, otherwise 0 if either a or b is 0, otherwise 2 16:45:21 as for ON THE WAY TO %d, it returns a prediction made by compile-time static analysis about which line would be the next one executed 16:45:30 normally the line after the line the error is on, but not always 16:45:43 /* (AIS) That stupid idiom in syslib was used. */ 16:45:44 hm? 16:45:48 #define W128 "128 SYSLIB IS OPTIMIZED FOR OBFUSCATION\n\ 16:45:49 ON THE WAY TO %d\n" 16:46:00 sorry, it's one of the things that annoys me 16:46:03 sloppy INTERCAL coding 16:46:19 they use a complicated mingled sequence to right-shift a 32-bit number, where a simple select would do 16:46:24 um intercal is obfuscated? 16:46:35 AnMaster: it's often described as a self-obfuscating language 16:46:36 ais523, you realize this is intercal you are talking about? 16:46:47 AnMaster: yes, but I see no reason for inefficient coding 16:47:20 it's like the x == true ? (x == false ? false : true) : (x == false ? false : true) that was featured on thedailywtf.com today 16:47:28 I don't like terribly redundant code in any language 16:47:29 anyway why not change syslib? 16:47:33 to not use that thing 16:47:39 AnMaster: sacrilege! 16:47:42 eh? 16:47:52 actually, syslib could do with a spring-clean 16:48:13 so far it's been preserved as close to the original manual as it could be whilst working 16:48:15 well implementing parts of it in C maybe? as gcc __builtin__ kind of? 16:48:21 AnMaster: I've done that already 16:48:29 ick -eE yourprogram.i syslibc 16:48:36 it was the first expansion library I wrote 16:48:43 mhm 16:49:49 http://elliotthird.org/mirror/c-intercal/ick-0.28/pit/explib/syslibc.c 16:50:10 oh and numbers seem totally out of order? 16:50:12 that should give you a good idea about how the C <-> INTERCAL linkage works 16:50:25 AnMaster: the error numbers don't follow any pattern as far as I know 16:50:36 nor does the warnings 16:50:40 except that sometimes I've tried to keep related errors with related numbers, but that's only the errors I've added 16:51:06 (e.g. the warnings that warn about a certain runtime error have error numbers closely related to those of those errors) 16:54:21 ais523, idea: for input of ONE TWO and such 16:54:25 why not gettext 16:54:34 to allow say ETT TVÅ in Swedish 16:54:42 as it asks "what language" 16:54:47 AnMaster: it allows a lot of languages already 16:54:48 it make me think of that 16:54:53 ais523, oh? 16:54:55 they're just not ones that you're likely to have heard of 16:55:01 * ais523 finds the list 16:55:03 ais523, Klingon? 16:55:18 AnMaster: there were attempts to add Klingon but it ran into problems, so it isn't supported 16:55:23 hahah 16:55:51 C-INTERCAL from version 0.10 16:55:51 onwards accepts English, Sanskrit, Basque, Tagalog, Classical Nahuatl, 16:55:51 Georgian, and Kwakiutl; also Volapu"k from version 0.11 onwards, and 16:55:51 Latin from version 0.20 onwards. 16:56:01 (quote directly from info C-INTERCAL) 16:56:06 Sanskrit I know of 16:56:10 India iirc 16:56:22 Basque spain iirc? 16:56:38 J-INTERCAL supports Esperanto, and CLC-INTERCAL supports Scottish Gaelic, in addition to that list 16:56:42 Georgian, I guess is the country 16:56:59 Volapuk was all the rage before Esperanto came along 16:57:00 ais523, ok, what about the ones I didn't identify? 16:57:05 ah ok 16:57:17 you can find out about the others in Wikipedia 16:57:22 mhm 16:57:32 (in fact, many of the languages have a Wikipedia written in them nowadays) 16:57:39 hhe 16:57:40 heh* 16:58:13 actually, the grammar of the language itself also accepts Latin 16:58:16 ais523, what spelling of "go home Romans" would it accept? ;) 16:58:26 or was it "Romans go home"? 16:58:31 AnMaster: only one that looked like numbers in one of the languages above 16:58:36 ah right 16:58:37 :/ 16:58:44 you seen Life of Brian? 16:58:52 AnMaster: only bits of it 16:58:56 oh ok 16:59:08 what I said was a reference to a scene in it 16:59:35 #ifdef __GNUC__ 16:59:35 __attribute__ ((noreturn)) 16:59:35 #endif 16:59:37 why that? 16:59:49 I prefer this in a header 16:59:51 #ifndef __GNUC__ 16:59:51 # define __attribute__(x) /* NO-OP */ 16:59:51 #endif 16:59:52 AnMaster: to suppress warnings about falling off the end of a function without returning 17:00:07 means I don't have to repeat the __GNUC__ every time 17:00:13 but I only use it once 17:00:20 ais523, it does return that function? 17:00:23 (well, twice, the other time's in ick_ec.h though so it doesn't count) 17:00:28 ick_lose doesn't return 17:00:30 it calls exit() 17:00:51 and it is void 17:00:59 so can't see why it would give a warning from gcc? 17:01:01 FAC ADVENIRE DE (1666) 17:01:08 ais523, ? 17:01:11 oh 17:01:11 AnMaster: because its source is not available during compilation 17:01:29 eh 17:01:39 AnMaster: I compile each .c file separately 17:01:44 yes so do I 17:02:00 so without the __attribute__ gcc doesn't know that ick_lose never returns while compiling perpet.c, for instance 17:02:00 oh you mean prevent warning in some *other* function? 17:02:04 yes 17:02:07 right 17:02:26 ais523, tell me if astyle works on ick_loose.c 17:02:28 I think it would 17:02:59 ais523, also why "extern" for all functions in headers, that actually prevents some optimizing that gcc can do otherwise 17:03:27 AnMaster: because they are extern, it wouldn't work otherwise 17:03:33 and astyle does work on ick_lose.c 17:03:39 eh 17:03:51 ais523, well if you just link those C files together it will work 17:03:59 the functions are called in lots of different files; if they weren't they'd be marked as static 17:04:14 extern void ick_lwarn(char *m, int n, /*@null@*/ char *s); 17:04:15 or 17:04:16 so the file which doesn't define the function needs the function marked extern in the header 17:04:19 void ick_lwarn(char *m, int n, /*@null@*/ char *s); 17:04:25 makes no difference basically 17:04:35 ais523, even if it is a different file 17:04:39 I know 17:04:50 but the declarations were inside functions originally, where it did make a difference 17:04:51 variables need extern 17:05:03 ais523, yes and that is bad style of coding 17:05:05 when I came to the code it was full of things like this: 17:05:10 int i, j, getopt(); 17:05:18 *blink* 17:05:30 so in some sense it's saner now than when I first came across it 17:05:40 because I changed all of those to proper prototyped declarations eventually 17:05:42 well you won't need extern any more 17:06:01 what difference does it make, by the way? 17:06:13 I thought it was completely irrelevant in that context 17:06:36 ais523, not really, it prevents inlining inside the same source file as defines the function iirc 17:06:40 bbl food 17:13:47 #if ICK_HAVE_STDINT_H+1 == 2 17:13:53 ais523, care to explain the logic there? 17:14:06 AnMaster: I'm differentiating between null string and 1 17:14:08 +1 == 2 is false 17:14:11 1+1 == 2 is true 17:14:32 try #if defined(ICK_HAVE_STDINT_H) && (ICK_HAVE_STDINT_H == 1) ? 17:14:47 AnMaster: it is defined, just as the null string, to say that STDINT_H isn't available 17:15:38 I see.. 17:16:03 ais523, "" == 1 is still faalse 17:16:06 false* 17:16:12 It isn't defined as "" 17:16:12 AnMaster: it's not "", it's nothing at all 17:16:14 it's defined as 17:16:17 it's just blank 17:16:20 #define foo 17:16:21 hm 17:16:26 right 17:16:31 but is that equal to 1? 17:16:36 +1 == 1 17:16:41 so +1 != 2 17:16:44 it could also be -1 == -1 17:16:52 #define foo 17:16:56 #if foo == 1 17:16:59 and then the check would be foo-1 == 0 17:17:00 that would not be true would it? 17:17:07 nope 17:17:10 Deewiant: yes, but I tend to think in terms of unsigned arithmetic while programming INTERCAL 17:17:13 but foo+1==2 would be 17:17:23 AnMaster: #if == 1 is a syntax error, which is what your example would expand to 17:17:25 ais523: whatever makes sense, either is fine 17:17:45 Deewiant: I know, I was just analysing why I picked unary + rather than unary - for the test 17:17:59 ais523, wouldn't it be easier to just use #ifdef and only define it if it is available? 17:18:08 AnMaster: blame autoconf 17:18:19 I think autoconf does #undef for those? 17:18:25 yes, normally 17:18:37 normally? 17:18:40 you get those by #including "config.h" 17:18:53 yep 17:18:56 but in this case, the code is potentially in someone else's code, so it has to be name-mangled 17:19:03 so instead I pass the value in via -D on the command line 17:19:12 well you can tell autoconf to use something else than config.h 17:19:16 say ick_conf.h 17:19:19 or whatever you want 17:19:25 AnMaster: it's not config.h that's the problem, but the identifiers it #defines 17:19:34 hm ok 17:19:36 they don't start with ICK_ or ick_ and therefore could clash with user code 17:20:01 ais523, well ick_* could also clash, ick is not a registered trademark or anything ;) 17:20:06 but less likely yeah 17:20:13 AnMaster: I tell people not to use those indentifiers in the C-INTERCAL manual 17:20:15 AnMaster: no, but at least you can document that if you use ick_* it's your fault :-P 17:20:19 s/indentifiers/identifiers/ 17:20:23 Deewiant: I did 17:20:32 correct 17:20:32 ais523, anyway it is very likely cfunge got stuff that could clash, but I didn't intend it to be included anywhere 17:20:39 some use FUNGE_* but far from all 17:20:47 AnMaster: that's why I mangled at my end 17:20:53 mhm 17:21:13 that is one thing c++ got right, namespaces 17:21:17 it is a good idea 17:21:54 that, and the parts of the template system that don't cause bloat 17:22:08 in C you have to resort to tgmath macros to do that sort of thing 17:22:12 a proper module system would be nicer 17:22:15 ais523, also why are two of the error defines duplicated in ick_ec.h? 17:22:16 also, // comments, but they're in C99 17:22:28 AnMaster: because ick_ec.h is the only header included in foreign programs 17:22:38 tgmath? 17:22:44 so it has to do everything itself and avoid anything that might clash with the program it's included in 17:22:49 not sure gcc does it? 17:22:53 AnMaster: it's a C99 header, #include 17:23:04 ais523, yeah 17:23:32 ooh 4.1 got the header 17:23:58 ais523, btw did you know about pahole? 17:24:09 AnMaster: no 17:24:13 nice tool that analyzes debug info in binary and finds holes in structs 17:24:26 and shows (hopefully) what re-arranging would help make it smaller 17:24:57 AnMaster: so far I haven't had a need to micro-optimise C-INTERCAL 17:25:02 ais523, developed for linux kernel 17:25:03 http://rafb.net/p/l6jKMH41.html 17:25:14 AnMaster: pragma pack? 17:25:14 is the result for any structures with at least one hole in cfunge 17:25:21 Deewiant, performance issues with that 17:25:25 Deewiant: that causes misaligned accesses 17:25:30 Deewiant, and breaks on some arches 17:25:33 it doesn't do rearranging? 17:25:34 reordering elements is more efficient if you can get away with it 17:25:38 Deewiant: no 17:25:44 damn, it sucks :-P 17:25:52 or is there a good reason for that 17:26:06 there is 17:26:06 Deewiant: the C standard 17:26:13 which says what 17:26:17 ais523, anyway what makes it more complex for cfunge is that some stuff can be either 32-bit or 64-bit 17:26:19 also, imagine if two different compilers reordered in different ways 17:26:32 well pragma pack isn't standard anyway 17:26:34 or is it, nowadays? 17:26:40 Deewiant: it says that struct elements are in the same order in memory as they are in the program 17:26:45 and no, #pragma pack isn't standard 17:26:49 ais523, s_ImplementedFingerprintEntry is in fact optimal for 64-bit data types on 64-bit systems 17:26:52 or 32-bit on 32-bit 17:26:57 the standard pragmas all go #pragma STDC 17:27:05 but not 32-bit funge types on 64-bit 17:27:22 ais523: but since you need to use the same compiler anyway, it doesn't matter, or? 17:27:40 Deewiant: have you never linked together programs from different compilers before? 17:27:46 nope 17:27:49 it used to be very common back in the days of DOS 17:27:56 or if I have, I've used a converter tool in between 17:27:58 ais523, it still is on windows 17:28:00 and you effectively have to do it like that if the programs are written in different languages 17:28:01 kind of 17:28:03 implib -> dll to lib 17:28:09 coff2omf -> change object format 17:28:11 and then compile 17:28:18 * ais523 has also used implib 17:28:27 but it doesn't translate the dll into a lib 17:28:39 it just generates bindings for the dll that can be linked into a program 17:28:50 of course 17:28:57 /* This is ugly but unless gcc gets appropriate builtins we have to do 17:28:57 something like this. Don't ask how it works. */ 17:29:00 but it is a lib file :-) 17:29:07 (a comment from the version of tgmath.h on my system) 17:29:28 -!- boily has joined. 17:29:38 ais523: but, uh, if one compiler #pragma packs a struct then you can't reliably use the resulting object file with other compilers anyway 17:30:09 Deewiant: yes, that's a good reason to use pahole instead 17:30:41 but one purpose of pragma pack is to conform with a known byte pattern that another compiler has produced 17:30:41 so why can't #pragma pack do rearranging 17:31:05 e.g. you know that you need to access a struct consisting of a char followed by a misaligned int 17:31:07 assume we've told it to just "make this struct as small as possible" 17:31:11 so you write the appropriate struct 17:31:17 (e.g. %I64d instead of the standard %lld) 17:31:18 hm 17:31:20 a #pragma shrink would be more interesting 17:31:22 I was wondering about that 17:31:25 Deewiant, it seems wrong 17:31:29 I For decimal integer conversion (i, d, u) the output uses the locale's alternative output digits, if any. For example, since glibc 2.2.3 this will 17:31:30 give Arabic-Indic digits in the Persian (`fa_IR') locale. 17:31:33 from man page 17:31:44 64 is a Microsoft extension 17:31:45 says glibc specific though 17:31:48 AnMaster: "instead of the standard" 17:31:53 ah 17:31:54 AnMaster: meaning, %lld is the standard 17:31:55 right 17:31:57 yeah 17:32:21 -!- boily has quit (Client Quit). 17:32:30 I meant to say 64 is a microsoft extension, but my client ate the for some reason 17:32:55 hmm... it seems to eat it even in the middle of lines 17:32:55 your client is something weird on %I 17:32:57 Deewiant, anyway, consider cache size 17:33:05 you want the members in order of access too 17:33:16 say you use one almost all the time, but another member very seldom 17:33:16 ais523: I, at least, see an inverted-color I in place of %I for your messages 17:33:33 my client puts everything between the two symbols into italics 17:33:49 and thutubot sees it as a tab 17:33:53 AnMaster: you'd have to have the whole struct in cache anyway, you can't separate it 17:33:54 ais523, and that fails here 17:34:07 ais523: ah, I think irssi displays tabs as inverted-color I 17:34:09 Deewiant, oh? 17:34:14 Deewiant, you can load a part of it 17:34:18 AnMaster: I'm not doing it deliberately, juts wondering why my client's doing that 17:34:35 testing: %a%b%c%d%e%f%g%h%i%j%k %A%D%E%F%H%J%K 17:34:42 only I breaks 17:34:52 B, C, and G as well for me 17:34:57 ah, true 17:35:00 don't see them at all 17:35:03 testing: %a%b%c%d%e%f%g%h%i%j%k %A%D%E%F%H %J%K 17:35:07 is what I see here 17:35:14 yes, it's what ThutuBot sees too 17:35:14 -!- RedDak has quit (Read error: 104 (Connection reset by peer)). 17:35:15 ( ais523) testing: %a%b%c%d%e%f%g%h%i%j%k %A%D%E%F%HI%J%K 17:35:23 where I is inverted-colour 17:35:29 but I think that's an irssi setting of some kind 17:35:51 I was wondering if it was because Control-I = tab 17:35:52 ais523, anyway the 32-bit/64-bit mix does complicate things heh 17:35:57 ais523: probably. 17:36:45 Deewiant, I saw %H %J 17:36:50 as a space in between 17:37:13 %B%C and %G were simply missing 17:37:52 yes, I saw your message 17:38:08 well, for me the %J and %K were in bold italics, the %D, %E, and %F were in bold, and % followed by G had been replaced by a square 17:38:15 Deewiant, well since it was a copy paste I was afraid it would be like unicode 17:38:21 abcdef 17:38:22 some clients can't show unicode 17:38:24 but if you paste it 17:38:32 it looks like unicode to the sender again 17:38:47 hmm, and the % followed by C turns the rest of the line to black, from its default red-for-messages-I-sent 17:39:00 ais523, likely color code 17:39:03 but it is blocked here 17:39:05 +c mode 17:39:14 of course since irc doesn't echo 17:39:17 ah, that would explain a lot 17:39:18 the client can't know that 17:39:31 I thought +c kicked people who used colour, rather than just blocking it 17:39:45 but if it's that easy to type by mistake, I can see why it's implemented this way now 17:39:47 ais523, on some it strips, other it blocks 17:39:52 don't think it kicks anywhere 17:40:02 on freenode I think +c strips 17:40:10 what's the difference between strips and blocks here 17:40:12 on unreal and inspircd, +S strips, and +c just blocks 17:40:19 do you mean blocks as in the message doesn't get through? 17:40:20 ais523, no difference, there is none to block here 17:40:25 ais523, yep that is what I mean 17:40:38 as in "sorry you can't use colors when sending to this channel" 17:40:42 or something like that 17:41:03 ais523, somewhat like trying to talk when +m is set (+m is mode all non-"voice or above") 17:41:45 voice being +v, +o being op, some ircds got other levels, like "half op", "administrator" and "channel owner" 17:42:00 or an arbitrary subset of them heh 17:42:05 all seems to have +v and +o though 17:42:23 hmm, I tried to privmsg me, you and Deewiant the same thing that I sent to the channel to see what happened when the +c wasn't on 17:42:38 but freenode errored, saying I could only send to 1 recipient at a time 17:42:46 that's a violation of the standard, isn't it? 17:42:47 ais523, of course 17:42:52 3 recipients doesn't seem excessive anyway 17:43:02 ais523, um sending to several targets is an extension I think 17:43:09 not part of standard is it? 17:43:14 I thought it was in the original RFC 17:43:17 * ais523 searches 17:43:26 ais523, even if it is, no one would care 17:43:31 no one follow the standard 17:43:47 sure they do 17:43:52 they just limit it or extend it in some ways 17:44:17 see 17:44:19 "It is recommended that only Operators be allowed to kill other users with KILL message. In an ideal world not even operators would need to do this and it would be left to servers to deal with." 17:44:26 "recommended" eh 17:44:27 RFC 1459 says that it's possible to send to a comma-separated list of receivers 17:44:39 AnMaster: so? 17:44:50 Deewiant, irc used to allow any user to kill 17:44:55 AnMaster: and services should also be allowed to kill users 17:45:08 ais523, yes but any user was the original 17:45:09 that fits within the spirit of that restriction, though 17:45:14 AnMaster: yeah, because back then only smart people were on the internet 17:45:20 anyway services didn't exist back at RFC 1459 17:45:27 Deewiant, indeed 17:45:36 so killing a user was a technical means to prevent IRC collapsing, rather than a social means to get rid of someone? 17:45:44 (e.g. killing your own ghost?) 17:45:46 spamming and script kiddies and such was an unknown concept 17:45:47 ais523, anyway comma-separated list of receivers is easy to abuse for spamming 17:45:53 ais523: that's how I understand it 17:45:53 so I can see why freenode doesn't do ti 17:45:55 it* 17:46:02 AnMaster: yes, if you put multiple channels there, or hundreds of people 17:46:03 but 3? 17:46:11 [407] PRIVMSG Too many recipients. Only 1 processed 17:46:11 ais523: 3 is still 3 times more than 1 17:46:23 Deewiant, :) 17:46:25 Deewiant: sending a message to #esoteric is a whole lot more than 1 17:46:25 consider that you're limited in the number of lines you can send 17:46:37 ais523, ah but they could just part 17:46:44 ais523: okay, so I guess it could handle channels and users separately 17:47:15 but the thing is, if you can send, say, 3 lines per second 17:47:31 then wheras you could previously spam 3 dudes per second you could then spam 9, 12, or 15 dudes per second 17:47:35 or whatever 17:47:53 with minimal bandwidth use 17:47:54 Deewiant, of course you could add one to the counter for each recipients 17:48:06 heh 17:48:16 so since people rarely want to send stuff to multiple people, just limit it to 1 to minimize spamming possibilities 17:48:24 Deewiant, indeed 17:48:53 sauna now -> 17:49:14 I only wanted to send to many on an irc network I'm oper on, and there I wanted to send to *everyone*, therefore pperserv global 17:49:17 operserv* 17:51:48 /* More than one COME FROM references the same label. */ 17:51:48 #define IE555 "555 FLOW DIAGRAM IS EXCESSIVELY CONNECTED\n\ 17:51:48 ON THE WAY TO %d\n" 17:51:57 ais523, didn't you say that was for threading? 17:52:14 the error is for the absence of threading 17:52:18 ah 17:52:34 anyway I don't see anything in ick_ec.h for removing comefrom? 17:52:46 what do you mean by 'removing' here? 17:53:04 ais523, as in someone using p in fungespace to overwrite the come from marker 17:53:16 or overwrite it's arguments 17:53:23 ick_ec.h can't be used directly to interface with Befunge 17:53:30 it's designed to link to C 17:53:44 ah so you would make ick_ebef.h or such? 17:53:49 that's it 17:54:27 ICK_EC_FUNC_START(ick_my_custom_syslib) <-- I hate that way of doing a function 17:54:28 :/ 17:54:50 AnMaster: that's because it has to place a wrapper around your function 17:54:58 so it translates into some code with unbalanced braces 17:55:17 ais523, mhm? 17:55:34 ais523, now THAT could be a problem for astyle 17:55:35 I bet 17:55:48 when checking for COME FROMs, your function is called, but the code inside it doesn't execute 17:56:16 instead it just uses goto to jump from one ick_comefrom to the next, and eventually returns with information about whether any of the COME FROMs there were aiming at the line label, and if so which one 17:57:00 no goto in cfunge, the only one I got is in a function that I took from gnulib 17:57:09 maybe hash library got something too 17:57:22 what C *should* have is a break statement to break multiple levels 17:57:31 break 2; 17:57:32 that would remove the last remaining need for goto really 17:57:38 ais523, doesn't work in C iirc? 17:57:43 no, it doesn't 17:57:49 in bash it does 17:58:06 does it allow expressions in place of the constant 2? 17:58:15 in bash? probably 17:58:17 that would be the INTERCAL-style method of doing things 17:58:19 haven't tried 17:58:42 ais523, but for break I can't really see the need for that 17:58:48 but of course, bash is interpreted, making that sort of thing easy 17:59:03 AnMaster: in INTERCAL-72 that sort of thing is the only way to make a conditional branch 17:59:20 ais523, mhm mad 17:59:27 of course it is intercal 17:59:39 well, you have computed ABSTAIN and computed COME FROM too in modern C-INTERCAL 17:59:47 I find computed ABSTAIN to be the least insane method 17:59:56 what is abstain exactly? 18:00:22 tells a particular command not to be executed 18:00:25 also what is latin1.bin and idiotism.oil? 18:00:40 in fact what is oil? 18:00:42 latin1.bin is a binary file containing a description of the latin-1 character set, for use by convickt 18:00:44 in this case 18:00:49 idiotism.oil is a set of optimiser idioms 18:01:02 and OIL was a language I invented specifically to write them in (it stands for Optimiser Idiom Language) 18:01:13 there's a description of it in the C-INTERCAL docs 18:01:14 uhu 18:01:23 ais523, but why? 18:01:29 previously they were written in C, but that became unmaintainable 18:02:31 look at temp/idiotism.c (the compiled version of the OIL) and you'll see why; all the C looked like that originally 18:03:09 OIL was the best solution to managing the optimiser idioms that I could think of 18:03:17 how does gcc does it's optimizing? 18:03:44 ((_1 ^ #{1}2) << #{1}3)->((_1 << _3) ^ #{x2< with what is after it? 18:03:49 that's it 18:03:55 allowing some variables perhaps? 18:03:58 yes 18:04:05 #{1} means any constant 18:04:08 ah 18:04:21 and where is that in the output? 18:04:31 x2 fetches the value of #{1}2 18:04:40 ah 18:04:43 and is used in an expression used to calculate a constant that appears on the RHS 18:04:55 ais523, and what do you do if there is a literal such thing in the source? 18:05:01 there isn't 18:05:04 do you use \ to escape? 18:05:11 AnMaster: it's not textual substitution 18:05:15 it's matching parse trees 18:05:19 aha 18:05:22 so syntax errors aren't matched against, for instance 18:05:36 INTERCAL doesn't use parens for expression grouping, so that's a giveaway 18:05:59 well I don't really know intercal 18:06:37 ais523, anyone wrote an intercal interpreter in intercal yet? 18:06:54 the _1 above on the LHS matches any expression, and on the RHS inserts a copy of expression 1 18:06:56 AnMaster: no 18:07:04 INTERCAL's a hard language to write interps for anyway 18:07:36 there is a befunge93 interpreter in befunge93, almost exact except it reserves a few columns at the edge iirc 18:07:41 and it's still harder to compile, although still possible 18:07:56 AnMaster: presumably it just loads the input into fungespace and transfers control to it? 18:08:20 ais523, no it doesn't 18:08:41 ah, it uses fungespace to store the input but implements all the commands 18:08:48 it requires the files to be pre-combined because befunge93 doesn't have file io 18:09:01 and it does implement all the comands 18:09:04 commands* 18:09:10 ais523, I'll try to find url 18:09:28 Befunge-93 is easier to interpret than INTERCAL, although harder to compile 18:09:53 first befunge in unefunge 18:09:54 http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/unebef.php 18:10:03 then befunge in befunge: 18:10:05 http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/jbefbef.php 18:12:28 AnMaster: it still cheats slightly; operations which don't affect flow control are implemented by effectively evalling the instruction by copying it into the interpreter's space 18:12:44 ah haven't looked that closely 18:13:12 ais523, but well befunge93 interpreter in funge98 should probably be way easier 18:13:24 yes, it should 18:13:31 and you can stay well out of its program space 18:13:40 exactly 18:13:46 hmm... a befunge98 in trefunge98 would be interesting 18:13:49 not that I'm going to write it 18:13:57 you could hide from its program space there too 18:14:07 indeed 18:14:18 ais523, yet the befunge in unefunge is totally mad 18:16:45 ais523, this is a cool tool 18:16:45 http://www.frox25.no-ip.org/~mtve/code/eso/bef/bef_bef/befbef2.png 18:17:15 tracing program execution, I take it? 18:17:23 aye, but only -93 18:17:28 indeed 18:17:47 but if the source is available I may be able to do something based on it 18:17:59 it would really help when fuzz tests go wrong 18:18:48 AnMaster: implement your debugger API and then it should be fairly easy to write something which takes trace output + a source file and draws something like that 18:19:42 you could even write it in Funge, along the lines of that TURT quine 18:20:33 Deewiant, indeed but I'm still working on details 18:21:24 hmm... I wonder if anyone's ever written a quine like that in Logo? 18:25:51 Deewiant, indeed I won't touch http://www.frox25.no-ip.org/~mtve/code/eso/bef/bef_vis/ 18:25:53 it's perl 18:25:54 eww 18:26:39 doesn't look that bad to me 18:27:13 but if you know GD / any graphics lib you might be better off starting from scratch, yes 18:30:54 -!- RedDak has joined. 18:32:22 -!- Tritonio_ has joined. 18:35:09 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 18:35:41 -!- Judofyr has joined. 18:51:58 +quit 18:51:59 -!- thutubot has quit ("ThutuBot quitting"). 18:53:52 -!- thutubot has joined. 18:54:03 +ul (:aSS):aSS 18:54:24 aha, it obeys the IRC standard properly now, unlike the other bots in here that send messages 18:54:46 auto-generated messages are meant to be notices, so as to avoid infinite loops like the one I set up earlier 18:56:12 may as well check it in the other direction too 18:56:27 good, it didn't reply 18:56:38 -!- jix has quit (Nick collision from services.). 18:56:48 -!- jix has joined. 18:57:51 ais523, bad idea, for many clients that cause a beep 18:58:06 ais523, better make it send errors as /notice only 18:58:07 is this a case of things not obeying the standard again, then 18:58:20 I'll change it back to privmsg 18:58:25 clients bell on notices? O_ooo 18:58:32 Deewiant, seen it happen 18:58:33 but first I want to test this 18:58:44 ais523, oh and many ircds got a mode to block channel notices 18:58:56 +ul (:*:*:*:*:*:*:*:*)()~()~(((a(:^)*a(!!!!!!!!!^)~*^):^))~^a(((*)~a*^(((((1)S!^)((1)S!!^))~^)(!(((2)S!^)((2)S!!^))~^)(!!(((3)S!^)((3)S!!^))~^)(!!!(((4)S!^)((4)S!!^))~^)(!!!!(((5)S!^)((5)S!!^))~^)(!!!!!(((6)S!^)((6)S!!^))~^)(!!!!!!(((7)S!^)((7)S!!^))~^)(!!!!!!!(((8)S!^)((8)S!!^))~^)(!!!!!!!!(((9)S!^)((9)S!!^))~^)(!!!!!!!!!(((0)S!^)(()S!^))~^((a(:^)*a(!!!!!!!!!^)~*^):^)))~a(:^)*~^):^)~*^^^!^!^!^!^!^!!!!!!!!!!!!()~((0)S!)~^^ 18:59:06 wow, that was quick 18:59:11 +ul (:*:*:*:*:*:*:*:*:*)()~()~(((a(:^)*a(!!!!!!!!!^)~*^):^))~^a(((*)~a*^(((((1)S!^)((1)S!!^))~^)(!(((2)S!^)((2)S!!^))~^)(!!(((3)S!^)((3)S!!^))~^)(!!!(((4)S!^)((4)S!!^))~^)(!!!!(((5)S!^)((5)S!!^))~^)(!!!!!(((6)S!^)((6)S!!^))~^)(!!!!!!(((7)S!^)((7)S!!^))~^)(!!!!!!!(((8)S!^)((8)S!!^))~^)(!!!!!!!!(((9)S!^)((9)S!!^))~^)(!!!!!!!!!(((0)S!^)(()S!^))~^((a(:^)*a(!!!!!!!!!^)~*^):^)))~a(:^)*~^):^)~*^^^!^!^!^!^!^!!!!!!!!!!!!()~((0)S!)~^^ 18:59:19 hmm, what language is that? 18:59:21 slightly longer that time 18:59:25 olsner: Underloa 18:59:28 s/$/d/ 18:59:36 it's an itoa program 19:00:01 at the moment it does numbers up to 6 digits; it's trivial to make it handle bignums, but that makes it exponentially slower 19:00:28 +quit 19:00:29 -!- thutubot has quit ("ThutuBot quitting"). 19:00:58 -!- thutubot has joined. 19:01:00 +ul (:*:*:*:*:*:*:*:*:*:*)()~()~(((a(:^)*a(!!!!!!!!!^)~*^):^))~^a(((*)~a*^(((((1)S!^)((1)S!!^))~^)(!(((2)S!^)((2)S!!^))~^)(!!(((3)S!^)((3)S!!^))~^)(!!!(((4)S!^)((4)S!!^))~^)(!!!!(((5)S!^)((5)S!!^))~^)(!!!!!(((6)S!^)((6)S!!^))~^)(!!!!!!(((7)S!^)((7)S!!^))~^)(!!!!!!!(((8)S!^)((8)S!!^))~^)(!!!!!!!!(((9)S!^)((9)S!!^))~^)(!!!!!!!!!(((0)S!^)(()S!^))~^((a(:^)*a(!!!!!!!!!^)~*^):^)))~a(:^)*~^):^)~*^^^!^!^!^!^!^!!!!!!!!!!!!()~((0)S!)~^^ 19:01:19 1024 19:01:22 that got it thinking 19:01:33 underloa got a webpage? 19:01:40 http://esolangs.org/wiki/Underload 19:01:59 oh, *that's* what you meant with s/$/d/ 19:02:22 and BTW, Thutubot's written entirely in Thutu piped both ways to netcat, including its Underload interp 19:02:34 don't put invalid syntax in, though, because it makes it infinite-loop at the moment 19:03:12 and don't put infinite loops in, because they make it infinite-loop too 19:03:44 +ul (:*:*:*:*:*:*:*:*:*:*:*)()~()~(((a(:^)*a(!!!!!!!!!^)~*^):^))~^a(((*)~a*^(((((1)S!^)((1)S!!^))~^)(!(((2)S!^)((2)S!!^))~^)(!!(((3)S!^)((3)S!!^))~^)(!!!(((4)S!^)((4)S!!^))~^)(!!!!(((5)S!^)((5)S!!^))~^)(!!!!!(((6)S!^)((6)S!!^))~^)(!!!!!!(((7)S!^)((7)S!!^))~^)(!!!!!!!(((8)S!^)((8)S!!^))~^)(!!!!!!!!(((9)S!^)((9)S!!^))~^)(!!!!!!!!!(((0)S!^)(()S!^))~^((a(:^)*a(!!!!!!!!!^)~*^):^)))~a(:^)*~^):^)~*^^^!^!^!^!^!^!!!!!!!!!!!!()~((0)S!)~^^ 19:03:49 you mean you haven't solved the halting problem yet? that's trivial! 19:04:00 hm 19:04:06 ais523, what language is that exactly? 19:04:09 I haven't implemented any sort of cutoff for overlong programs, either 19:04:12 AnMaster: Underload 19:04:14 ah 19:04:26 (that is, overlong in time taken to run) 19:05:01 2048 19:05:08 hmm, isn't thutu basically sed but with differenet flow control? 19:05:21 olsner: that's one way to think of it 19:05:25 but they feel different to write in 19:06:02 Thutu doesn't have a hold space, for instance 19:06:07 but it's really important in sed 19:06:40 +ul (::*::**:**)()~()~(((a(:^)*a(!!!!!!!!!^)~*^):^))~^a(((*)~a*^(((((1)S!^)((1)S!!^))~^)(!(((2)S!^)((2)S!!^))~^)(!!(((3)S!^)((3)S!!^))~^)(!!!(((4)S!^)((4)S!!^))~^)(!!!!(((5)S!^)((5)S!!^))~^)(!!!!!(((6)S!^)((6)S!!^))~^)(!!!!!!(((7)S!^)((7)S!!^))~^)(!!!!!!!(((8)S!^)((8)S!!^))~^)(!!!!!!!!(((9)S!^)((9)S!!^))~^)(!!!!!!!!!(((0)S!^)(()S!^))~^((a(:^)*a(!!!!!!!!!^)~*^):^)))~a(:^)*~^):^)~*^^^!^!^!^!^!^!!!!!!!!!!!!()~((0)S!)~^^ 19:06:40 13 19:06:57 hmm, I guess string rewriting is just string rewriting after all 19:07:13 but it's nice to have regular expressions to do it with 19:08:50 +ul (()(*))(:^:S*a~^a~!~*:(/)S)::::::::::::************^ 19:08:51 */*/**/***/*****/********/*************/*********************/**********************************/*******************************************************/*****************************************************************************************/************************************************************************************************************************************************/****************************************************************** 19:10:36 +ul ((:*)(::**))(:^:()~()~(((a(:^)*a(!!!!!!!!!^)~*^):^))~^a(((*)~a*^(((((1)S!^)((1)S!!^))~^)(!(((2)S!^)((2)S!!^))~^)(!!(((3)S!^)((3)S!!^))~^)(!!!(((4)S!^)((4)S!!^))~^)(!!!!(((5)S!^)((5)S!!^))~^)(!!!!!(((6)S!^)((6)S!!^))~^)(!!!!!!(((7)S!^)((7)S!!^))~^)(!!!!!!!(((8)S!^)((8)S!!^))~^)(!!!!!!!!(((9)S!^)((9)S!!^))~^)(!!!!!!!!!(((0)S!^)(()S!^))~^((a(:^)*a(!!!!!!!!!^)~*^):^)))~a(:^)*~^):^)~*^^^!^!^!^!^!^!!!!!!!!!!!!()~((0)S!)~^^*a~^a~!~*:( )S) 19:10:52 +hello 19:10:52 Hello, ais523! 19:11:03 +ul ((:*)(::**))(:^:()~()~(((a(:^)*a(!!!!!!!!!^)~*^):^))~^a(((*)~a*^(((((1)S!^)((1)S!!^))~^)(!(((2)S!^)((2)S!!^))~^)(!!(((3)S!^)((3)S!!^))~^)(!!!(((4)S!^)((4)S!!^))~^)(!!!!(((5)S!^)((5)S!!^))~^)(!!!!!(((6)S!^)((6)S!!^))~^)(!!!!!!(((7)S!^)((7)S!!^))~^)(!!!!!!!(((8)S!^)((8)S!!^))~^)(!!!!!!!!(((9)S!^)((9)S!!^))~^)(!!!!!!!!!(((0)S!^)(()S!^))~^((a(:^)*a(!!!!!!!!!^)~*^):^)))~a(:^)*~^):^)~*^^^!^!^!^!^!^!!!!!!!!!!!!()~((0)S!)~^^*a~^a~!~*:( )S)::::::::********^ 19:11:43 -!- thutubot has quit (Remote closed the connection). 19:11:54 OK, I think I messed up somewhere 19:11:57 I have to go, anyway 19:12:02 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1""). 19:46:59 Deewiant, I'm working on a library for the debug protocol now 19:47:45 to make it simpler to write both clients and interpreters supporting it 19:47:48 C library of course 19:48:02 but no fancy calling conventions in it, just C99 19:55:49 -!- Sgeo has joined. 20:05:40 * SimonRC decides he likes MC Frontalot 20:05:53 Also, gratuitous mutation sucks. 20:06:04 well, I don't like it 20:06:29 So, you want to create a list that is a filtered version of another list. 20:07:54 Do you [a] allocate a new empty list, and add all applicable items from the old list or [b] allocate a new list with the same contents as the old one, grab its iterator, and use Iterator.remove() to remove all the stuff you don't like? 20:07:59 blither 20:08:39 * SimonRC decides that a license should be needed to use the iterator mutation functions 20:09:13 # you are likely to be beaten by a grue # 20:09:26 # If this fate seems particularly cruel, # 20:09:49 # Consider whose fault, it could be # 20:10:12 # Not a lamp or a match in your inv-ent-or-y # 20:13:57 waitamo... 20:14:10 -!- RodgerTheGreat has joined. 20:14:14 # Not a torch or a match in your in-ven-to-ry # 20:14:23 RodgerTheGreat: hi 20:14:24 howdy 20:14:40 RodgerTheGreat: waddya think of MC Frontalot? 20:14:45 SimonRC: you-are-like-ly-to-be-eaten-by-a-grue 20:14:58 s/eaten/ea-ten/ 20:15:03 nonono, that's not the rhythm 20:15:29 you/are-like-ly/to be/eaten-by-a-grue 20:15:56 I'm not familiar with too many of his songs, but what I've heard I liked 20:15:59 eyah, approx 20:16:06 *yeah 20:16:16 ok... 20:16:19 kinda a Jonathan Coulton vibe except more hip-hop 20:16:41 MC Frontalot, Lemon Demon, Tom Lehrer, and Weird Al. 20:16:44 need moar 20:17:12 also, need less songs about relationships 20:17:21 flight of the conchords 20:17:22 or rather, don't need more 20:17:29 see http://www.youtube.com/watch?v=WGoi1MSGu64 for instance 20:17:39 unless they ALSO include secret lairs on skullcrusher mountain 20:17:57 RodgerTheGreat: or S&M, or really bad pairing, or etc 20:18:22 because those things are funny and creative in many cases 20:18:30 yes 20:18:49 or the love of man and crayola 20:21:54 what is "MC Frontalot"? 20:24:07 http://frontalot.com/index.php/ 20:24:21 the populariser of nerdcore rap 20:36:04 nerdcore? 20:36:08 wtf is that? 20:41:34 -!- vixey has joined. 20:42:49 -!- vixey has set topic: http://bespin.org/~nef/logs/esoteric/ --> STRING p="STRING p=?;print(p[:9]+REPR 34+p+REPR 34+p[11:])";print(p[:9]+REPR 34+p+REPR 34+p[11:]). 20:43:05 I bring quines of ALGOL 20:43:27 68 20:43:54 hooray 20:44:25 I found an awesome book today at a book sale entitled "Programming Languages: Design and Implementation" from 1975. It's great. 20:44:39 it doesn't even *mention* C or C++ (for obvious reasons). 20:45:17 cool good find 20:45:28 I'm reading CTM it's totally great 20:45:29 the main "case study" chapters talk about FORTRAN, ALGOL 60, COBOL, SNOBOL, PL/I, APL and LISP 1.5 20:45:34 :o 20:45:39 definitely worth $.25 20:45:42 ahh, SNOBOL 20:45:43 I'm going to check for this at the library 20:45:52 one fo the great forgotten languagers 20:45:56 SNOBOL is this slick text processer? 20:45:58 language 20:45:59 it's by "Terrence W Pratt" 20:46:24 if I recall correctly. It's SNOBOL4, specificially. 20:46:35 * SimonRC wonders how history would have been different had K&R met Charlse Moore 20:46:45 I didn't know much about it aside from the name, but I intend to find out 20:47:04 Well, for a start the unix kernel would have likely been written in Forth... 20:47:24 SNOBOL was high-level, ISTR, with sirst-class string 20:47:25 s 20:49:00 of course, it came before structured programming won... 20:49:54 If FORTH had become the defacto standard for systems programming, everything would be awesome 20:50:01 indeed 20:50:11 well, some tings would have been better 20:50:33 others would be worse? 20:50:36 well, it would've decreased the chance of C++ taking hold, so that would definitely be better 20:50:44 we'd have FORTH++ instead 20:50:44 RodgerTheGreat, true 20:50:51 but C itself is good 20:50:52 OTOH, the forth we would be using would be huge and warty 20:51:04 it would be the Forth equivalent of C's C++ 20:51:10 Deewiant: yes 20:51:35 I'm not sure you can really *make* FORTH that huge and warty. It's so clean, ugly parts slide off, like (in theory) LISP. 20:51:48 hahaha 20:51:53 RodgerTheGreat, what about elisp? 20:51:55 :) 20:51:56 give mr. stroustrup two hours alone with any language and I'm sure he can ;-) 20:52:05 ansi forth is big(ish) 20:52:21 AnMaster: thus, "In theory" 20:52:26 RodgerTheGreat, hah 20:52:45 Deewiant: I think Stroustrup is the human incarnation of the "Ugly Stick" as far as languages are concerned. 20:52:47 RodgerTheGreat: *cough* COMMON LISP *cough* 20:52:58 o_O 20:53:05 I use Scheme when I feel lambda-ey 20:53:11 how can you say that Simon.. 20:53:21 lovely R5S5 20:53:41 well, Common LISP is rather bigger than Scheme 20:53:47 (even if it's missing some critically useful features like a random number generator and a system timer...) 20:54:01 r5rs isa nice core specification 20:54:12 it doesn't need a random number generator, that's a part of the standard library 20:54:12 and it has wonderful shit like symbol nil = variable nil = empty list = false 20:54:17 RodgerTheGreat, well, that's extreme, befunge got both 20:54:19 unfortunately scheme does not HAVE a standard library :( 20:54:50 lament: and therein lies the problem. 20:55:00 but MzScheme fixes that nicely 20:55:31 I am currently working on some Java that is in desperate need of light-order functions, or macros, or preferrably both 20:55:36 *higher-order 20:56:32 Java does not have a preprocessor, so you're slightly S.O.L. there. Is there a possibility that this could be fixed with some of the obscure features Java *does* have like gotos and anonymous classes? 20:56:45 I don't think so 20:56:50 dang 20:57:04 or at least, not clearly 20:57:12 RodgerTheGreat: but everybody hates mzscheme 20:57:14 So, on mildly related terms, I'm teaching a class this afternoon about Applet programming 20:57:19 and anonymous classes are not obscure in this code 20:57:28 RodgerTheGreat: teaching? 20:57:29 lament: I don't hate it yet, but we'll see how that develops 20:57:37 SimonRC: yeah, like a workshop 20:57:40 ok 20:58:10 but the things that Java has that are theoretically equivalent to other languages' cool stuff are too heavy-weight 20:58:21 oh gods, another thing 20:58:30 hm. That really does depend. 20:58:44 btw you can do really neat stuff in java 20:58:54 there are a lot of things that Java does that may seem heavyweight and are actually optimized out at runtime 20:59:01 you don't need macros 20:59:02 * RodgerTheGreat high-fives vixey 20:59:04 no, heavywieght for the programmer 20:59:16 a bit of reflection goes a long way ;P 20:59:34 <3 optimistic JIT compilation 20:59:44 dynamic dispatch can only be done on the "first argument" to a method, *and* all methods must be declared in the class of their "first argument" <-- killer combo 21:00:26 which means you can't add new methods that are only applicable to some modules 21:00:50 SimonRC: did you know that in Java6 you can compile and load source files on the fly? 21:01:05 fun 21:01:24 yeah, it's pretty psychotic when you really think about it but damned if it isn't nifty 21:01:49 (e.g. you want to stick graphics methods on things for when you draw them, and parsing methods for when you parse them, and generation methods for when you generate things on them, and so on, and before you know it every class is a huge pile fo semi-related shit. 21:02:15 or you get alarming collections of private static methods with lots of instanceofs 21:02:22 that sounds like it could be solved with container classes? 21:02:28 and perhaps an interface 21:02:49 ah, but these objects are in a big tree 21:03:08 and every time you get any children out of anything you would have to put them in containers 21:03:13 hmm 21:03:28 make, for example a ParseBox class that is passed a Box via the constructor. Depending on how you do things, you could make ParseBox implement, say, BoxAdapter 21:03:45 we already have 3 parallel trees 21:03:47 RodgerTheGreat: Did you know that in $YOUR_FAVORITE_DYNAMIC_LANGUAGE you can compile and load source files on the fly? 21:03:49 then all your method-extender container classes implement that single interface 21:03:59 hmm 21:04:26 GregorR: Did you know that $YOUR_FAVORITE_DYNAMIC_LANGUAGE probably doesn't JIT as fast as HotSpot can? 21:04:59 $MY_FAVORITE_DYNAMIC_LANGUAGE doesn't have a JIT as-is :P 21:06:25 -!- Tritonio_ has quit (Remote closed the connection). 21:07:48 (I has kitty) 21:07:54 huh? 21:08:13 I HAVE A PUSSY ... IN MY LAP 21:09:30 damnit, now I miss my cats 21:09:53 http://arcanux.org/lambdacats/io-monad.jpg 21:10:21 haha 21:10:51 * vixey feels like the kant haskell today cat :( 21:11:42 I feel like drawing something. Requests/ideas anyone? 21:11:55 PUSSY 21:12:04 (Your choice of interpretation of that word) 21:12:14 RodgerTheGreat: me (as you imagine me) 21:12:21 Hahahah 21:12:21 in fact, us, (as you imagine us) 21:12:27 English, right? 21:12:31 yes 21:12:43 So, bad teeth clenching a pipe and a top hat? 21:12:50 lol 21:12:50 *snork* 21:13:14 SimonRC: this is from the last time someone suggested I do that: http://www.nonlogic.org/dump/images/1203125875-tetsuoooo.png 21:13:46 ok 21:14:25 not good 21:14:42 this is why I like source images 21:14:59 there is a small chance I might find you one... 21:15:25 "oh, cool, that's one person who isn't a formless ball or brain in a jar" 21:15:36 eh? 21:15:44 Hey, I'm not a formless ball! 21:15:48 I'm a very formfull ball! 21:15:52 I'm ball-formed! 21:16:06 Gregor, for example, appears to be human because he has extensive photographic evidence of himself wearing amazing hats 21:16:26 Either that, or he has a really good model for POV-ray. 21:16:46 alternately, people can *describe* themselves and I will render my minds-eye version of that, but they tend to be inaccurate 21:16:48 oh, BTW, these are not source images: COBOL Bill: http://img.thedailywtf.com/images/mfd/mfd1_0800200c9a66.png My old SEng lecturer: http://www.cs.loyola.edu/~kbg/kbgsmiling.JPG 21:17:02 surely not a co-incidence? 21:17:10 haha 21:18:14 (COBOL Bill is off of Mandatory Fun Day, to worst (and only) webcomic ever to be part of TDWTF.) 21:18:17 http://rodger.nonlogic.org/comics/Comic016.png 21:18:24 I think I'm going to make that "people from the internet" picture my avatar. 21:18:34 GregorR: haha- awesome 21:18:58 hehe 21:19:02 I heard that my sister set this as her desktop: http://www.nonlogic.org/dump/images/1202607439-DrumsCantMakeAMinorsRetards.png 21:20:44 heh 21:21:06 and this image is currently winning the Nonlogic Dump War: http://www.nonlogic.org/dump/images/1203194372-saur.png 21:21:55 so, any other suggestions? 21:22:50 * SimonRC suddenly finds an old pic he did 21:23:12 -!- timotiis has joined. 21:23:27 -!- oklopol has joined. 21:25:56 Well, please excuse my poor artistic skill... 21:27:22 and a warning in view of what happened last thime I shew it to people... 21:27:29 I never bash anyone's drawing skills 21:27:44 note that *no* genetalia/reproductive organs/whatever are involved in this pic. http://users.durge.org/~sc/Kigdatsi/pics/invite-only/Kig_20070922.png 21:28:02 the wings really do get in the way or drawing them 21:28:28 *of 21:29:12 oh yes, I think I remember the discussion this spawned last time 21:29:19 ok 21:29:24 nice dragons 21:29:46 vixey: dragon-shaped, but technically not dragons 21:29:52 vixey: do you draw at all? 21:30:07 yeah sometimes, not like I used to though 21:30:23 ooh, can we see some of your stuff? 21:30:25 what are they, if not dragons? 21:30:32 Kigdatsi 21:30:41 don't bother with Google 21:30:45 I don't have anything online 21:30:52 :< 21:31:08 if I draw anything good in the future ill upload :p 21:31:20 I have a great image host if you ever need one: http://www.nonlogic.org/dump/ 21:31:49 well, the usual way to get good any drawing (well anything) is lots of enthusiasm which causes lots of practice 21:32:12 definitely 21:32:37 also, make it *difficult* practice 21:32:51 many times getting a new tool gives me inspiration, too. I spent at least 5 hours a day for week after I got my tablet doodling on my computer 21:33:04 if you only do stuff you are confident in, then you end up re-doing the same thing 50 times 21:33:22 like this guy (not me): http://ebondragonart.com/dragon_art_gallery.html 21:33:42 ("how about a new angle, like, *not* from the side?") 21:33:52 * SimonRC is in a ranty mood 21:34:35 that's one of the reasons I really like doing comics- lots of opportunities to try out new ideas compositionally 21:37:04 hmm 21:37:15 Suppose dogs (or similar) did visual arts 21:37:30 how would they show who was who? 21:37:56 because they recognise more by smell and less by appearance than humans do 21:38:49 maybe some system of symbols near each subject's arse that sybolically represent their smell 21:39:25 I'd imagine a smell-oriented artist would use substances with different smell properties rather than pigments, and I bet composition would work quite a bit differently because rather than shapes in space you're concerned with the mixing of smell carriers in the air 21:39:53 alas, there are far more components to smell than to color, especially to a dog 21:40:01 so composing would be hard 21:40:42 well, are you suggesting that oil paintings capture anywhere near as many properties of light and color as our eyes are capable of experiencing? Art is representational 21:40:54 hmm 21:41:24 I mean, look at my cartoons- they look almost *nothing* like actual people you interact with in real life, but you still recognize them as people 21:41:31 oil paintings have a much easier job: colour only has a few components 21:41:36 RodgerTheGreat: yes 21:42:05 I wonder if that same would work for smell 21:42:13 ysee... 21:42:33 vision is like a map from R^2 to R^3 21:42:44 other way around no? 21:42:47 smell is rather like a member of R^9999 21:42:51 vixey: no 21:42:58 for each position there is a color 21:43:00 roughly 21:43:36 the pixels in our eyes are arranged in an array with directions in it 21:43:38 SimonRC: you're tremendously oversimplifying vision, seriously. 21:43:49 I am approximating 21:44:21 smell sensors aren't arranged in any particular order 21:44:30 you can't have a "line" in the nose 21:44:35 eeh 21:44:46 "pixels" sounds like a bad term 21:44:49 indeed 21:45:10 I am talking about the problem of vision more than the solution that we have 21:45:11 "pixels" in our eyes are not arranged in a uniform pattern. Cone response to color is not restricted to their main target color, and different cone types are not overlaid, they're staggered randomly 21:45:22 yes, yes, yes, yes 21:45:29 -!- oerjan has joined. 21:45:49 some people even have four types of cones, rather than 3 (mostly women, I think, because it's a dual-X trait) 21:45:55 yes also 21:46:03 I was considering all of those 21:46:35 every degree of complexity you can ascribe to smell can also be ascribed to color, so saying "Smell is more complex and Color is easy" is a tremendously ignorant assertion. 21:46:47 * oerjan prefers 3 ice cream scoops rather than 3 cones 21:46:53 RodgerTheGreat: hmm 21:47:08 I'd posit that the main reason you come to this conclusion is because you're more familiar with technology for reproducing visual imagery 21:47:17 hmm 21:49:18 anyway, bbl- gotta get some food 21:50:04 well, smell would be simpler if we only had a few dimensions of it... 21:50:12 * SimonRC thinks of ideas... 21:50:25 like taste... 21:50:38 oerjan: tongue taste, at least 21:51:33 the problem of detecting the spectra of light coming in from various angles is a regular one 21:52:04 whereas the collection of airborne molecules is just a big semi-irregular collection 21:52:41 if I give you all directions, you can sort them roughly as to how close they are to a given direction 21:53:21 if I give you (in description) all pure frequencies of light, you can sort them in an obvious order 21:53:48 if I give you (by description) all small scented molecules, you can classify them in 10001 ways 21:54:21 OTOH 21:54:48 If a few scents are considered much more important than others, you can concentraste on those for representationality 21:54:55 *concentrate 21:56:52 -!- pikhq_ has joined. 21:59:36 SUPER DANCE EXPLOSION TIME 22:00:07 did you know... 22:00:39 in C#, booleans can be other values than true or false, but there is no easy way to write that in C#? 22:01:06 because boolean is an 8-bit type, but C# on has the literals true (1) and false (0) 22:01:16 That's true in plenty of languages. 22:01:46 but for C#, other .net languages might produce other values for a byte 22:02:16 so you can acquire a boolean that is represented as a byte containing two, but you can't actually produce it, in C# 22:02:32 um, I think 22:02:37 I might be BSing here 22:02:49 char a = 2; 22:02:56 bool b = *(cast(bool*) &a); 22:02:57 GregorR: that is not a boolean 22:03:05 You are not patient :P 22:03:06 oh, waitamo... 22:03:22 does that actually work? 22:03:26 or is it restricted 22:03:27 In D? Sure. 22:03:36 I don't speak C# :P 22:03:55 My point was that that's not even remotely rare. 22:04:11 GregorR: you can't do bool b = 2 then? 22:04:34 Idonno, you might be able to, but it would probably implicitly cast to 'true' if you did, and so b would actually be 00000001 22:04:41 ew 22:04:52 ok, so I hadn't heard of that 22:04:59 ? 22:05:46 I didn't know D did that 22:06:00 I don't know if D does that (bool b = 2), it may just be a type error :P 22:08:09 I have returned 22:08:13 lies 22:08:36 no lies, only heresy 22:09:11 ooh 22:09:23 it seems that .NET booleans are 32-bit actually 22:09:51 wtf 22:10:07 although that may be related to how their VM is designed 22:10:21 in arguments, at least 22:10:46 but there may be a protocol for compressing multiple bool arguments together 22:11:07 am I allowed to say this is really, really stupid, or would that make me a fascist that doesn't appreciate "art"? http://dvice.com/archives/2008/03/cup_pc_concept.php 22:11:11 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 22:11:21 -!- Judofyr has joined. 22:12:13 -!- pikhq has quit (Read error: 110 (Connection timed out)). 22:12:19 "holographic projector"? 22:12:33 we can't do free-standing holograms yet 22:16:34 -!- jix has quit ("This computer has gone to sleep"). 22:18:16 like I said, it's a really, really stupid idea 22:18:27 "impractical" doesn't do it justice 22:18:40 waitamo... 22:18:51 how does one type on it? 22:18:55 or surf the web 22:19:01 -!- pikhq_ has quit (Read error: 104 (Connection reset by peer)). 22:19:01 or, well, anything 22:19:14 "free of the burden of user interfaces", that's how. 22:19:22 which means jack 22:19:31 bbl 22:21:54 -!- pikhq has joined. 22:22:20 so yesterday i got really stoned and had an epiphany 22:22:32 that will hopefully make me a much better mandolin player 22:22:32 stoned on what? 22:22:37 pot 22:22:38 erm... 22:22:40 ok 22:23:19 well there were some kids smoking outside my house 22:23:29 part of the epiphany is that mandolin is a really kick-ass instrument for playing melody (its fretboard maps particularly well to the underlying structure of western tonality) 22:23:29 so I played whitehouse really loud at them and they all left ^-^ 22:23:53 they couldn't handle it 22:28:48 hmm 22:28:57 also it's depressing how crappy guitars are, in comparison 22:29:19 in terms of it being harder to see where the right notes are 22:35:02 -!- jix has joined. 22:35:09 yo 22:35:38 lol 22:35:44 -!- jix has quit (Client Quit). 22:36:31 otoh, that cup would be the perfect thing to dring Google Gulp from: http://www.google.com/googlegulp/ 22:39:56 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)). 22:40:34 -!- Judofyr has joined. 22:40:45 -!- jix has joined. 22:43:32 what is that thing in the topic? 22:43:57 a quine i guess 22:44:07 ALGOL 22:44:08 well yes 22:44:11 vixey: ah, ok 22:52:17 -!- RedDak has quit (Remote closed the connection). 22:56:51 -!- jix has quit ("This computer has gone to sleep"). 23:10:54 -!- oerjan has quit ("Good night"). 23:25:47 RodgerTheGreat: Actually, do you mind if I put that (people from the Internet) on a T-shirt? 23:25:48 * SimonRC goes 23:33:43 It's later, show up already :P 23:35:43 -!- oklofok has joined. 23:36:32 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 23:56:17 lament: what 23:56:19 ... 23:56:30 lament: what's mandolin's errr 23:57:12 okay i can't find a word for this, i'll just google :-) 23:58:27 cgcg is better than eadgbe? 23:58:34 i will have to disagree on that one 23:59:22 frets work as they do in a guitar, i'm sure 23:59:28 it's just how you tune the strings that matters