01:06:22 <GregorR> http://www.codu.org/jsmips/ // now with a non-working example!
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:51 <GregorR> Instead, it just prints Hello, 3
01:09:56 <GregorR> And then dies a horrible death.
01:11:52 <pikhq> One that Gregor is implementing in Javascript for no good reason.
01:12:02 <GregorR> For one GREAT reason: VIM IN MY BROWSER
01:12:18 <pikhq> Might I recommend MMIX instead?
01:12:34 <GregorR> I already tried MMIX - intolerably slow at 64 bits.
01:13:00 <GregorR> Also, MMIX is practically CISC compared to MIPS.
01:13:43 <pikhq> You know, writing an OS is trivial if you don't run more than one program on it. :p
01:13:45 <wildhalcyon> Vim is nice, I suppose. A browser variant could be.. helpful?
01:14:06 <pikhq> Really, all you need is the ability to load executables. ;p
01:14:08 <GregorR> OK, so right now I can BARELY do "Hello, world", but still, I'm on my way to vim :P
01:14:29 <pikhq> (and, arguably, drivers.)
01:14:30 <wildhalcyon> osdev.org is a fun site about OS development
01:14:37 <pikhq> wildhalcyon: Well aware.
01:14:44 <GregorR> Pretty sure everyone is :P
01:14:48 <pikhq> (my kernel courtesy of docs from osdev.org)
01:17:20 <pikhq> Whereas I, in a few months, am entering college.
01:17:47 <GregorR> I, in a few months, am entering grad school.
01:18:00 <pikhq> Of course, oerjan has all of us beat.
01:18:52 <pikhq> GregorR: I thought 'Mr. Foo, Ph.D.' as acceptable, as was 'Dr. Foo'?
01:19:05 <GregorR> Yeah, I'm just making a joke X-P
01:19:22 <GregorR> When (if) I get my Ph.D, I'll change my nickname to DrGregor :P
01:19:46 <pikhq> I suppose mine would have to become DrPikhq.
01:20:14 <pikhq> Of course, I could get a (non-accredited) Ph.D. tonight.
01:20:30 <pikhq> Hey, if Gene Gray can declare himself a Doctor of Cubic, then so can I.
01:20:34 <GregorR> I could get a non-accredited Ph.D - HEY, I just did!
01:21:08 <pikhq> 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:38 <wildhalcyon> any REAL student of awesomology knows that.
01:21:55 <pikhq> wildhalcyon: Yes, and it's the New Reformed Judaic Front.
01:21:58 <GregorR> Awesomeology is to Awesomeositism as Astrology is to Astronomy
01:21:59 <wildhalcyon> But awesomologists are also notorious spellers
01:22:23 <wildhalcyon> 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 <pikhq> Or should I say, '|>|-|.|) 1|\| 1337'?
01:23:24 * GregorR scribbles "Ph.D. in 1337, granted 1337" on a cocktail napkin.
01:25:47 <lament> ouch! that really sucks!
01:26:17 <wildhalcyon> every time I come up with some freakin' language idea, it turns out its part of smalltalk.
01:26:17 <lament> oklopol claims to have invented smalltalk, too.
01:26:35 <lament> i think i'm the only person here who hasn't invented smalltalk.
01:26:44 <lament> well, except that one time...
01:27:00 <wildhalcyon> lament, we're not concerned with drunken smalltalk inventing
01:28:21 <lament> it has stability issues due to everything being so open
01:28:35 <wildhalcyon> I've been working on creating a dynamic language, and they really got most of it incredibly right
01:28:39 <lament> which alan kay considers to be a plus ("nobody's a user, everybody's a programmer")
01:28:51 <lament> wildhalcyon: alan kay is a genius
01:28:56 <lament> i suggest you read stuff by him
01:29:17 <wildhalcyon> I've been reading everything I can about the language. I'll try to look up some stuff by him
01:29:30 <lament> he's mostly interested in education
01:30:02 <lament> this is interesting: http://www.vpri.org/pdf/Pisa_RN_2007_007_a.pdf
01:30:11 <wildhalcyon> I think there's areas where smalltalk could be improved (and I'm not talking about syntax now...)
01:30:35 <oklopol> lament: well, i still don't know much about smalltalk
01:30:42 <oklopol> so i *may* have invented it
01:31:57 <lament> actually, instead, http://www.vpri.org/pdf/human_condition.pdf
01:37:49 <lament> he also said "Actually I made up the term "object-oriented", and I can tell you I did not have C++ in mind."
01:40:08 <lament> he must be quite disappointed
01:40:35 <lament> he and the team he was with developed OO, modern GUI, wysiwig word processor, laptop ~40 years ago
01:40:55 <lament> 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:38 <pikhq> That goes without saying.
01:45:13 <olsner> was that intentional or do you not know the secret of /me?
01:45:34 <wildhalcyon> I know the secret.. I just wasn't thinking
01:45:53 <lament> alan kay also said about smalltalk that it was only interesting in the 70s
01:47:02 <lament> wildhalcyon: he doesn't think it's good enough
01:47:09 <lament> hence the whole reinventing computing project
01:47:19 <wildhalcyon> Well, its not good enough, but its still better than C++
01:47:49 <lament> pretty much everything is better than C++
01:47:55 <lament> why is that even a "but"
01:48:11 <lament> of course it's better than c++, but it's not good enough
01:49:08 <pikhq> Consider that C itself is better than C++ for most intents and purposes.
01:49:29 <pikhq> (if you need objects, though, don't use C. . . GObject *will* give you nightmares.)
01:49:51 <wildhalcyon> If I needed objects I'd just fake it with structs
01:50:33 <lament> why not just use... python or something
01:51:06 <pikhq> If I were forced to use C, I'd make whoever forced me into it regret it.
01:51:15 <pikhq> And use the asm keyword.
01:52:19 <pikhq> int main(){volatile asm ("; program code here.");}
01:53:44 <boily> pardon my C ignorance, but whate is the meaning of volatile?
01:54:24 <pikhq> boily: In GNU C, it indicates that any optimisation surrounding that asm keyword is a Bad Idea(TM).
01:55:18 <pikhq> 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 <pikhq> (although anyone fiddling with those from C deserves to be shot. :p)
01:56:10 <boily> thanks! a very interesting keyword indeed.
01:56:34 <wildhalcyon> Its used in multi-process environments too
01:58:46 <wildhalcyon> 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 <boily> hence, they are volatile. am I correct?
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:40:11 <GregorR> It means it could change at ANY MOMENT ZOMG, so you can't cache it etc.
02:44:12 <pikhq> Fine. volatile, as it applies to the asm keyword. ;p
02:44:32 <GregorR> Oh, I assumed you meant volatile on a variable.
02:44:50 <GregorR> Right, volatile on asm is the same idea - either way, it prevents optimizations.
02:45:28 <pikhq> As I explained, and someone else explained in slightly more detail.
02:45:41 <GregorR> I again don't know why JSMIPS isn't working >_<
02:45:50 <pikhq> I have another interpretation that I thought of. . .
02:45:59 <pikhq> volatile = "You can't touch this".
02:46:11 <GregorR> Uhhh, that's just plain incorrect.
02:46:18 <GregorR> const = "You can't touch this" :P
02:46:22 <pikhq> But that song's stuck in my head.
02:47:27 <wildhalcyon> It depends on who "you" is in the context. For pikhq's version, "you" would be the optimizer
02:47:42 <wildhalcyon> for gregorR's version, "you" is the programmer, or.. anyone else.
02:48:29 <GregorR> 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 <wildhalcyon> for MC Hammer's version, "you" would be anyone attempting to touch whatever the hell he was talking about it.
03:05:28 <wildhalcyon> Learning smalltalk has really taught me how much I don't know about the history of computer science
03:06:02 <pikhq> wildhalcyon: Which is what I was thinking.
03:06:29 <pikhq> BTW, I prefer thinking about how much I *do* know.
03:06:36 <wildhalcyon> pikhq: That I didn't know anything about computer science?
03:06:37 <pikhq> And, meanwhile, I WANT A RELAY MACHINE!!!
03:07:03 <pikhq> wildhalcyon: My version of 'you can't touch this' is what you described.
03:09:26 -!- Tritonio_ has joined.
03:09:49 <pikhq> 'Cept for MC Hammer.
03:30:11 -!- adu has joined.
03:45:33 -!- wildhalcyon has left (?).
04:08:44 -!- GregorR-L has joined.
04:09:00 <GregorR-L> 4005fc: 27bdfa70 addiu sp,sp,-1424
04:12:41 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
04:14:30 <RodgerTheGreat> http://www.nonlogic.org/dump/images/1207278828-walls.png
04:14:44 <RodgerTheGreat> I'd really like to hear what people have to say about this idea.
04:15:48 -!- Sgeo has joined.
04:18:08 <GregorR-L> It's reserving 1424 bytes, then storing to 1428.
04:18:25 <RodgerTheGreat> I understand MIPS assembly. I was asking for your opinion.
04:18:40 <GregorR-L> Oh, I hadn't read it, I'm on #mipslinux hoping for some help with that X-P
04:20:42 <GregorR-L> Unfortunately, I'm generally incapable of appreciating art >_>
04:20:50 <RodgerTheGreat> http://193.33.156.5/Database/Filestore/allyouneedislove.jpg
04:26:44 <RodgerTheGreat> 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:40:20 <lament> RodgerTheGreat: i like it
04:42:27 <lament> i can't say i come away from it with much... i just like it
04:42:39 <lament> (that's also true of all the great masterpieces, don't feel bad)
04:45:52 <lament> either an i ching pattern, or a little like the chinese character for rain
04:45:59 <lament> but clearly something asian :)
04:46:49 <lament> http://z.about.com/d/chineseculture/1/0/v/Y/rain.gif
04:47:16 <lament> chinese characters in general are amazingly cool
04:48:15 <RodgerTheGreat> of all the things for my signature to resemble... rain. fitting.
04:56:42 <RodgerTheGreat> 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 <lament> i like rain, but i don't like grey skies.
05:02:06 <lament> that's a traditional chinese character meaning "education"
05:02:13 <lament> the bottom half is a child
05:02:27 <lament> the top half is stuff falling into the child's open head
05:25:31 -!- GreaseMonkey has joined.
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 <GregorR> 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 <GregorR> 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:58 <GregorR> newlib was actually broken O_O
10:08:20 <GregorR> 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 <GregorR> unsigned long is 32-bits on ... uh, just about everything, including the default MIPS ABI.
10:08:49 <GregorR> So it was shifting off the edge >_<
10:16:12 <GregorR> http://www.codu.org/jsmips/ YAY
10:16:17 <GregorR> OK, next step ... fibonacci?
10:25:32 <GregorR> OK, can't print numbers greater than 9 X-D
10:32:11 <ais523> is it a problem in printf?
10:41:46 <GregorR> It's going into a perhaps-infinite loop in memchr
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 <AnMaster> 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 <Deewiant> AnMaster: VC doesn't support C99
11:43:56 <Deewiant> 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 <Deewiant> since your printfs won't work, for instance
11:44:39 <Deewiant> although maybe, since you're using only the format strings defined in the std headers, they might work... dunno
11:44:48 <Deewiant> (e.g. %I64d instead of the standard %lld)
11:45:02 <Deewiant> assuming the MinGW headers are smart enough to define stuff the way the libraries are
11:47:42 <AnMaster> Deewiant, so basically Windows doesn't do C99?
11:48:12 -!- ais523 has joined.
11:48:41 -!- thutubot has joined.
11:49:01 <AnMaster> Deewiant, I was planning to add #ifdef to allow non-posix, but if it can't even do C99...
11:49:43 <AnMaster> 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 <AnMaster> Deewiant, anyway know any non-gcc compiler that can actually do C99?
11:52:57 <fizzie> GCC doesn't do C99. It only does most of it. http://gcc.gnu.org/gcc-4.3/c99status.html
11:53:07 <fizzie> Granted, it's a lot more of C99 than MSVC.
11:53:35 <AnMaster> 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 <AnMaster> I know I can compile on non-glibc
11:54:39 <AnMaster> fizzie, anyway the code worked fine under gcc 3.x last I tried (about a week ago, may not work any longer)
11:55:17 <AnMaster> I normally use 4.1.2, but it works on 4.2 too
11:56:30 <fizzie> 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:57:22 <fizzie> I don't think lcc-win32 has the posix combattability things mingw has, though.
11:57:55 -!- ais523 has quit (Read error: 104 (Connection reset by peer)).
11:58:01 <AnMaster> I do use posix stuff but well I aim for #ifdefs where needed
11:58:09 <fizzie> 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 <AnMaster> fizzie, I use use the defines from inttypes.h for that
12:01:11 <fizzie> 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 <Deewiant> AnMaster: the mingw headers do appear to be correct for MSVCRT, checked
12:54:46 <Deewiant> 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 <AnMaster> Deewiant, hm no mkdir/chdir/rmdir function!?
13:52:38 <AnMaster> and strdup not in normal header?
13:53:16 <Deewiant> and strdup is docced at http://msdn2.microsoft.com/en-us/library/ms235454(VS.80).aspx
13:58:07 <AnMaster> CMakeFiles/cfunge.dir/src/instructions/sysinfo.obj(.text+0x2fb):sysinfo.c: undefined reference to `environ'
14:01:07 <AnMaster> static const char * environ[] = { "SYSTEM=wincrap", "SUPPORTS=not environ at least, get a sane system" };
14:02:12 <AnMaster> Deewiant, not my fault the system isn't sane
14:02:34 <Deewiant> AnMaster: "sanity" is relative
14:02:47 <Deewiant> I don't think the existence of extern char**environ defines sanity ;-)
14:03:09 <AnMaster> Deewiant, it is how it is supposed to be declared
14:03:35 <Deewiant> and who decides what's "supposed to be" :-)
14:03:52 <AnMaster> 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 <AnMaster> 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 <AnMaster> pointer. The null pointer terminating the argv array is not counted in argc.
14:04:10 <Deewiant> AnMaster: Windows is older than POSIX :-)
14:04:18 <AnMaster> Deewiant, unix is even older :)
14:04:19 <Deewiant> so you could argue that POSIX is insane ;-)
14:04:23 <AnMaster> and it did it that way too iirc
14:04:47 <Deewiant> 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 <Deewiant> AnMaster: so now you're calling amiga "insane", too? ;-)
14:05:31 <ais523> it's possible to download things from Microsoft such that Windows is POSIX-compliant, apparently
14:05:53 <Deewiant> or take the simpler alternative and use cygwin
14:05:55 <ais523> 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 <ais523> (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 <ais523> BTW, the echo says 'This is a diagnostic message. Compilation successful'
14:07:43 <ais523> or something along those lines
14:07:50 <ais523> the diagnostic message is very important, though
14:12:29 <ais523> (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 <ais523> (and if the original program was standards-compliant, your diagnostic is just a compiler warning)
14:13:15 <ais523> 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 <ais523> 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:22:31 -!- oklopol has quit (Read error: 110 (Connection timed out)).
14:44:15 <ais523> <AnMaster> static const char * environ[] = { "SYSTEM=wincrap", "SUPPORTS=not environ at least, get a sane system" };
14:44:21 <ais523> I find I need to write a line
14:44:29 <ais523> to get C++ programs to link under DJGPP
14:44:49 <ais523> there isn't a finite defined anywhere in any standard relevant to that AFAIK
14:44:53 <AnMaster> static const char * environ[] = {
14:44:53 <AnMaster> "SUPPORTS=not environ at least, get a sane system if you want this to work."
14:44:55 <ais523> but the link fails if I don't do that
14:45:19 <ais523> it doesn't do anything obvious
14:45:30 <ais523> I thing libstdcxx references it by mistake
14:45:47 <ais523> it certainly shouldn't be referencing it deliberately because it's in my namespace
14:45:55 <ais523> but if it's not there I get a link error
14:46:48 <ais523> most people don't nowadays
14:46:59 <AnMaster> ais523, and MSVC I gave up on, but it does compile and run, with many warnings, under win32 using mingw
14:47:00 <ais523> but of course, if you write strictly conforming C89, you target /everything/
14:47:38 <ais523> but it never really caught on
14:59:24 <AnMaster> "but I won't fix any bugs that can't be reproduced on a POSIX
14:59:24 <AnMaster> system. Patches are welcome if they don't mess up source too much (anything
14:59:24 <AnMaster> 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 <ais523> I doubt it, though, because POSIX functions are generally lowercase, and Win32 API functions are generally CamelCase
15:01:06 <AnMaster> 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:27 <ais523> CreateProcessEx() : 7 parameters
15:01:40 <ais523> the Win32 API is really quite bloated
15:02:00 <AnMaster> and they failed to get it right first time
15:02:05 <AnMaster> so that is why there is the Ex one
15:02:08 <ais523> thus the Ex at the end of the name
15:02:33 <AnMaster> though of course POSIX isn't perfect either, consider tmpfile/mkstemp and whatever
15:02:56 <ais523> tmpfile was in C89, though, so it's probably the best one to use from a portability perspective
15:03:07 <ais523> there's nothing in its definition that suggests that it has to be insecure, either
15:03:20 <AnMaster> never got the difference between them
15:03:36 <ais523> (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 <AnMaster> ais523, thankfully I currently don't need any temp files
15:04:03 <ais523> C-INTERCAL has been known to use quite a few
15:04:12 <ais523> temp .c files to feed to gcc, mostly
15:04:34 <ais523> 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:05:14 <AnMaster> ais523, even on POSIX the command line may have a limit
15:05:21 -!- RedDak has joined.
15:05:22 <ais523> yes, but I don't reach it
15:05:43 <AnMaster> ais523, I remember reaching it in one project, so many different *.o all on one line
15:06:15 * ais523 runs ls -l `find .` in their home directory just to see if it will work
15:06:48 <ais523> but it's possible that bash can handle that sort of thing
15:07:03 <ais523> GNU tend not to like hard-coded limits
15:07:04 <AnMaster> 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 <AnMaster> ais523, hm I think in recent kernels the space for command line arguments is dynamic
15:07:43 <AnMaster> 2.6.20 or later or something like that
15:07:46 <ais523> AnMaster: I once wrote an IOCCC entry which defined no variables
15:07:56 <ais523> it used the argv space, which is editable, to do all its calculations
15:08:18 <AnMaster> ais523, oh interesting, you needed to cast a lot of things then I assume?
15:08:36 <ais523> AnMaster: it's not publically online, but as it lost I may as well paste it
15:08:58 <AnMaster> I remember seeing something like a very simple flight sim with the source in the shape of a plane
15:10:07 * ais523 tries to find the file
15:10:12 <ais523> it's on here somewhere, I think
15:11:14 <AnMaster> because I bet you need to cast things a lot
15:11:29 <ais523> because there were lots of statements with no effect
15:11:33 <ais523> that I put there deliberately
15:11:41 <ais523> 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 <ais523> http://pastebin.ca/971073
15:13:53 <ais523> it should have a blank line at the start but pastebin.ca keeps removing it for some reason
15:14:11 <ais523> 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:40 <ais523> argv isn't unsigned char** in theory
15:14:43 <ais523> but it has to be in practice
15:14:47 <ais523> so I write unsigned char** in the program
15:15:06 <ais523> 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 <ais523> AnMaster: it's plain char
15:15:18 <ais523> which is either signed or unsigned depending on the implementation
15:15:27 <ais523> on gcc you can choose which it is with command line arguments
15:15:37 <ais523> that's what the -funsigned-char is for
15:16:17 <ais523> there are 10 programs hidden in there
15:16:33 <ais523> and don't worry, it doesn't make any library calls but putchar and getchar
15:16:43 <ais523> AnMaster: yes, the program's legal BF
15:16:50 <ais523> legal Perl too, if you hadn't guessed
15:17:11 <AnMaster> I can't see putchar mentioned anywhere?
15:17:18 <ais523> it's in the gcc command line
15:17:24 <ais523> so as not to spoil the appearance of the program
15:17:25 <AnMaster> ioccc5o1.c:25:10: warning: trigraph ??) ignored, use -trigraphs to enable
15:17:37 <ais523> sorry, I forgot to specify -trigraph
15:17:44 <ais523> it's needed for the code to work properly
15:17:56 <ais523> oh wait, -ansi turns it on
15:18:30 <ais523> (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:49 <ais523> at least it helps you figure out which of the underscores are macro calls
15:19:08 <AnMaster> $ 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 <ais523> (I use _ for a lot, because it's the only identifier I could use in that program, pretty much)
15:19:17 <ais523> AnMaster: that's expected
15:19:28 <ais523> because you didn't give it a command-line arg
15:19:36 <AnMaster> and what command line to give?
15:19:47 <ais523> try ./ioccc5 `cat ./ioccc5`
15:19:59 <ais523> sorry, ./ioccc5 "`cat ./ioccc5`"
15:20:08 <AnMaster> ýýýýýýýýýýýýJGGGGGGA>>>>>>]ZZZZZZNKKKKKK?<<<<<<NKKKKKKC@@@@@@PMMMMMM;888888qnnnnnntqqqqqq]ZZZZZZQNNNNNNCC
15:20:31 <ais523> try ./ioccc5 "a[-],[.[-],]"
15:20:35 <ais523> that should give it away
15:20:50 <AnMaster> no output, it just stands there
15:21:13 <AnMaster> ok looks like it runs befunge?
15:21:30 <ais523> tape length is half the length of the original program
15:21:36 <ais523> and it discards the first character of input
15:21:50 <ais523> here, let me paste the shell script I wrote to extract the other programs from there
15:21:52 <AnMaster> still this does not explain why it should work on it's own binary?
15:22:01 <ais523> it works on its own source
15:22:07 <ais523> which is legal BF, after all
15:22:36 <AnMaster> yes let me see the perl source
15:22:46 <AnMaster> is that another brainfuck interpreter?
15:23:24 <ais523> no two programs do the same
15:23:42 <ais523> incidentally, if any program needs input, giving it its own source code is often a good place to start
15:23:48 <ais523> and remember that the file actually starts with a newline
15:24:09 <AnMaster> $ cat ./ioccc5o1.c | perl ./ioccc5o1.c
15:24:12 <ais523> http://pastebin.ca/971083
15:24:22 <ais523> extracts all the programs hidden in the original
15:24:29 <ais523> and you need to use perl -p
15:24:53 <ais523> puts the entire program in an implicit while(<>) loop
15:25:01 <ais523> to prevent me needing to write a literal while in the program
15:25:17 <AnMaster> temp.sh: line 71: ioccc5: command not found
15:25:25 <AnMaster> Generating the tab-removal program...
15:25:25 <AnMaster> temp.sh: line 71: ioccc5: command not found
15:25:27 <ais523> AnMaster: oh, I had . in my path
15:25:33 <ais523> I forgot other people normally don't
15:25:43 <ais523> change ioccc5 to ./ioccc5 throughout and it'll work
15:27:29 <AnMaster> any of those is a quine of the thing?
15:27:53 <ais523> there are programs to do RLE compression and decompression of BF files
15:28:27 <ais523> 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 <ais523> (both compressor and decompressor are written in BF)
15:28:36 <AnMaster> bfunzip.b is the same as ioccc5o1.c
15:28:47 <ais523> different language, so different extension
15:29:04 <ais523> it's an RLE decompressor
15:29:18 <ais523> using tab as a metacharacter to talk about repetition
15:29:34 <ais523> hmm... pastebin may have eaten the tabs in the input, I'll paste it in filebin too
15:29:57 <ais523> http://filebin.ca/dvpqm/ioccc5o1.c
15:30:18 <ais523> oh, BTW, about one quarter of that big square of BF-like code at the top is just junk
15:30:23 <ais523> but the other 3/4 are meaningful
15:30:41 <ais523> also, I like the way I hid the actual cat program
15:30:54 <ais523> you get it by uuencoding the original source with the filename [[
15:31:21 <ais523> and interpreting the result as BF
15:32:34 <AnMaster> ais523, how come your code lost?
15:32:43 <AnMaster> oh wait, not all the programs where C? maybe that?
15:33:03 <ais523> they've released the names of last year's winning programs
15:33:11 <ais523> but not the programs themselves
15:33:18 <ais523> so I don't know what the winners were like yet
15:33:43 <ais523> also, not all 10 programs are all that useful
15:33:53 <ais523> some are just extracting other programs from the original source
15:35:00 <ais523> AnMaster: it's a file containing just one newline
15:35:12 <ais523> it's catted onto the end of files to ensure that they end with a newline
15:35:18 <ais523> because otherwise sed discards the last line
15:35:36 <ais523> I didn't know that at the time
15:35:51 <ais523> note that I use rm 2>/dev/null rather than rm -f, for instance
15:35:56 <AnMaster> cat $1 newline.txt | sed -f ioccc5.sed > temp.sh
15:36:10 <AnMaster> ( cat $1; echo; ) | sed -f ioccc5.sed > temp.sh
15:36:31 <ais523> yes, there were many better ways
15:36:38 <AnMaster> ais523, yeah why the "rm 2>/dev/null"?
15:36:41 <ais523> but 1) I didn't know shellscript at the time
15:36:53 <ais523> 2) that system had tcsh as the default shell, so you couldn't expect me to learn
15:36:55 <AnMaster> everyone must know of rm -f at least
15:37:13 <ais523> I grew up on DOS, and that was towards the start of my use of UNIX
15:37:13 <AnMaster> ais523, how did you remove directories locally then?
15:37:38 <ais523> AnMaster: rmdir exists on UNIX with the same semantics as it has in DOS
15:37:54 <ais523> so I removed them by deleting all entries in them and then using rmdir
15:38:26 <ais523> I knew about rm, cp, ls, cd and that was about it
15:38:36 <ais523> to put it in perspective, it was a while before I discovered pwd
15:39:07 <ais523> but I needed to know what argument to give it
15:39:14 <ais523> and I was unaware of man -k
15:39:17 <AnMaster> well the command would be a nice one
15:39:38 <ais523> I started learning a lot faster once I thought of that
15:39:58 <ais523> note, however that throughout all this, I /still/ preferred UNIX to Windows
15:40:22 <ais523> (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 <ais523> (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 <ais523> (and of course, neither of them work particularly well on many modern websites that aren't well-designed)
15:41:46 <AnMaster> ais523, how long ago was this?
15:42:02 <ais523> maybe about two years ago
15:42:18 <ais523> actually, thinking about it, it must have been december 2006
15:42:29 <ais523> but the system I was on was really old, and hadn't been updated in years
15:42:33 <AnMaster> ais523, I was in that phase around red hat 5.0
15:42:49 <ais523> put it this way, it was 2006 and yet the system was still running CDE
15:43:01 <AnMaster> ais523, what OS was it then? solaris?
15:43:20 <ais523> but all UNIXes are similar until you get down into the very technical details
15:43:26 <AnMaster> still SPARC is a quite CPU really
15:44:02 <AnMaster> ais523, indeed they are thanks to posix
15:44:35 <AnMaster> 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 <AnMaster> ie, #ifdef foo instead of #if defined(foo) && (foo != -1)
15:45:10 <AnMaster> #if defined(_POSIX_ADVISORY_INFO) && (_POSIX_ADVISORY_INFO != -1)
15:45:16 <AnMaster> *seems* to be the correct way to check
15:45:28 <ais523> ah, the ehird-annoying microoptimisations
15:45:38 <AnMaster> ais523, indeed, freebsd doesn't implement it
15:45:41 <ais523> when I resort to microoptimisations, I generally do them in assembly
15:45:49 <Deewiant> AnMaster: you can't get envvars without the winapi
15:46:04 <AnMaster> Deewiant, well then windows basically sucks
15:46:04 <ais523> if the project is one where using assembly isn't practical, then microoptimisation is the wrong idea
15:46:22 <Deewiant> 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 <AnMaster> ais523, well I did notice a difference, I tested on a 10 MB large file from /dev/urandom
15:46:51 <Deewiant> AnMaster: you want GetEnvironmentStrings and FreeEnvironmentStrings
15:46:58 <ais523> 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 <ais523> 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 <AnMaster> ais523, nah it was generated with dd if=/dev/urandom of=test count=10M
15:47:46 <ais523> whereas in POSIX, close(), fclose() and free() are enough for most things
15:48:06 <ais523> in Windows, how you free a string depends on which function you got it from...
15:48:29 <AnMaster> ais523, well add munmap to that list actually
15:48:47 <ais523> although that's more unlocking, then freeing
15:49:09 <ais523> (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 <AnMaster> ais523, was thinking of anonymous backed memory, then munmap may be more like freeing actually
15:49:22 <Deewiant> ais523: well, I think that makes sense because then you don't have to change your code if the upstream changes
15:49:24 <ais523> (and using resource data is much like mmapping a file)
15:49:42 <AnMaster> btw, I think there is a zsh extension to provide mmaped IO in zsh scripts
15:49:42 <ais523> Deewiant: the whole point of Windows is that the upstream never changes, ever
15:49:51 <ais523> because people distribute things as binaries, not source
15:50:08 <ais523> so if the upstream changed, maybe you wouldn't have to change your source, but the binaries would stop working
15:50:09 <Deewiant> ais523: between kernels, stuff changes
15:50:19 <Deewiant> ais523: 9x/me vs 2000/xp vs vista
15:50:29 <ais523> Deewiant: yes, but they leave the old libraries there anyway
15:50:32 <Deewiant> of course, they require huge compatibility layers
15:51:03 <Deewiant> 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 <ais523> 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 <Deewiant> since it might be that freeEnvStrings used to be only free, but now does something more complicated/different anyway
15:51:41 <ais523> Deewiant: I can see the reasoning in some cases
15:51:53 <ais523> the API gives me the strong suspicious than all objects are refcounted, for instance
15:52:21 <ais523> 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 <ais523> (or wasn't around 9x when I learnt this stuff)
15:52:40 <Deewiant> well, 9x ran on top of DOS :-)
15:52:49 <Deewiant> I can see how that might make cleaning stuff up harder
15:53:06 <AnMaster> unused directories or files that can't be removed because they are in use are quite common
15:53:10 <Deewiant> or multiprocess handling in general
15:53:19 <Deewiant> AnMaster: eh? never come across that
15:53:26 <AnMaster> Deewiant, happens a lot to me on xp
15:53:36 <Deewiant> never even heard of that happening
15:53:48 <Deewiant> if the process is gone, its locks are gone
15:53:55 <AnMaster> though think only Swedish ppl complained
15:54:07 <Deewiant> 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 <AnMaster> maybe translations go into the core and break something
15:54:20 <ais523> 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:24 -!- boily has joined.
15:54:43 <Deewiant> ais523: I haven't used such peripherals much, so that might be
15:55:34 <AnMaster> oh and then requiring reboots for a library update
15:55:48 <AnMaster> I updated glibc in multi user mode with no issues
15:56:34 <ais523> AnMaster: Windows requires reboots for more or less everything
15:56:51 <ais523> I think because it doesn't have the concept of temporarily stopping a daemon while you change it
15:56:56 <ais523> and also because you can't remove open files
15:57:41 <AnMaster> 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:50 <AnMaster> and allow you to replace it with a new one
15:58:14 <ais523> also, Linux *.so files are not as pervasive as Windows .dll files
15:58:31 <ais523> as in, glibc might be important, but at least it doesn't tie up your entire API/windowing system
15:59:03 <AnMaster> ais523, yeah indeed, I can upgrade stuff just fine while running
15:59:07 <ais523> the most important dlls such as user, GDI and system (which ironically have a .exe extension) are in use constantly
15:59:16 <AnMaster> it is odd that Mac OS X seems to want reboots every now and then
15:59:18 <ais523> whereas glibc is just required for C programs to run
15:59:34 <ais523> in theory you could use syscalls directly instead, which can't be done in Windows
15:59:57 <ais523> there are no Windows static binary
16:00:07 <ais523> 'static' basically just means 'uses only GDI, user and system'
16:00:13 <AnMaster> 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:20 <Deewiant> ais523: and the C runtime, usually
16:00:32 <AnMaster> ais523, I meant as in gcc -static
16:00:38 <ais523> in my experience that was statically linked when I did a static build
16:01:05 <AnMaster> as in "not depending on ld.so to be able to load"
16:01:08 <ais523> that's what's wrong with Windows: all user programs link against the operating system
16:01:22 <AnMaster> ais523, well I wonder how the OS is compiled
16:01:23 <ais523> that simple fact explains quite a lot
16:01:52 <ais523> 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:34 <AnMaster> like fuse? file system in userspace?
16:02:48 <ais523> user mode device drivers aren't common on Windows
16:02:59 <ais523> but on Linux, many printer drivers are user mode, for instance
16:03:14 <ais523> meaning that you can run them without linking them to the kernel, all you need is to be root
16:03:24 <AnMaster> ais523, well windows need some kernel mode device drivers, IDE controller, or keyboard for example
16:03:26 <ais523> whereas for a kernel device driver you need modprobe or similar to run them
16:03:35 <ais523> AnMaster: all OSs need kernel mode device drivers
16:03:50 <ais523> however, they're apparently the main cause of BSODs on Windows
16:04:13 <AnMaster> 9x may actually BSOD from anything
16:04:38 <ais523> (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 <AnMaster> BSODs were recoverable in 3.1?
16:05:24 <ais523> you could press [ESC], and it would ignore the error and attempt to continue
16:05:37 <ais523> that worked sometimes, and if it failed you could bring the BSOD back up with Ctrl-Alt-Del
16:05:45 <ais523> or you could press [Enter], which killed the process
16:06:04 <ais523> and the process-kill actually worked, although it didn't deallocate memory so you often had to reboot after that
16:06:30 -!- boily has quit ("Schtroumpf!").
16:06:49 <ais523> 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 <ais523> and the BSOD was a useful tool for correcting unruly computers
16:07:22 <AnMaster> how would you select what process to kill?
16:07:26 <ais523> AnMaster: it chose for you
16:07:32 <ais523> it tried to guess the one you were using at the time
16:07:51 <ais523> you would try to alt-tab to it first, I suppose
16:08:21 <AnMaster> they also tried to guess, think it was Alt-Apple-Esc
16:08:22 <ais523> I'm not saying that this is a good system, just am amused that it was more reliable and useful than 9x's
16:09:17 <ais523> actually, thinking about it, it's about as useful as XP's is
16:09:51 <ais523> (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:11:13 <AnMaster> ais523, any progress on your mad plans for funge and intercal
16:11:31 <ais523> AnMaster: no, I'm busy with other things in RL at the moment, try asking again next week
16:11:35 <AnMaster> also I have been thinking about producing a trefunge version as well
16:20:26 <AnMaster> compile time option probably for speed
16:22:25 <ais523> 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 <AnMaster> of course there is no test suite for trefunge so ....
16:22:37 <ais523> of course, doing it like that would be insane
16:24:58 <Deewiant> including your code into itself? O_o
16:25:58 <ais523> Deewiant: that's one way to have most of it duplicated in the binary
16:26:07 <ais523> of course, you need to guard it properly to avoid an infinite loop
16:26:37 <ais523> 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 <Deewiant> what rc/funge does is that it has an #ifdef every time it pops a vector, I think
16:27:02 <ais523> 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 <ais523> wow: http://thedailywtf.com/Comments/The-Test-of-Truth.aspx#188082
16:30:01 <ais523> 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 <AnMaster> well I store vectors as structs
16:37:13 <ais523> you could still do it by doing name-mangling in the preprocessor
16:37:26 <AnMaster> so only funge space and anything meddling with z dimension would need changing
16:37:42 <ais523> as a sort of compile-time low-tech C++ alternative that loses no speed
16:37:56 <ais523> however, I do not recommend doing it this way given your coding style
16:38:52 <AnMaster> 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 <AnMaster> may be a chance to learn flex and such
16:39:32 * ais523 tries hard not to mention INTERCAL
16:40:06 <ais523> 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:41:55 <AnMaster> ais523, I was reading ick_loose.h
16:42:01 <AnMaster> #define IE997 "997 ILLEGAL POSSESSION OF A CONTROLLED UNARY OPERATOR.\n\
16:42:15 <AnMaster> that one didn't have a descriptive comment
16:42:35 <ais523> use of a unary operator that doesn't exist in your current base
16:42:51 <ais523> (base 2: AND, OR, XOR)
16:42:59 <ais523> (base 3: AND, OR, BUT, XOR, sharkfin)
16:43:22 <ais523> AnMaster: noncarrying addition
16:43:31 <ais523> BUT is a bit harder to explain
16:43:50 <ais523> in base 2, a AND b returns 0 if either a or b is 0, and 1 otherwise
16:44:02 <ais523> likewise, in base 2, a OR b returns 1 if either a or b is 1, and 0 otherwise
16:44:23 <ais523> 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 <AnMaster> ON THE WAY TO %d == line number?
16:44:37 <ais523> 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 <AnMaster> ais523, yeah but where does BUT fit in into that?
16:44:56 <ais523> 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 <ais523> 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 <ais523> normally the line after the line the error is on, but not always
16:45:43 <AnMaster> /* (AIS) That stupid idiom in syslib was used. */
16:45:48 <AnMaster> #define W128 "128 SYSLIB IS OPTIMIZED FOR OBFUSCATION\n\
16:46:00 <ais523> sorry, it's one of the things that annoys me
16:46:03 <ais523> sloppy INTERCAL coding
16:46:19 <ais523> they use a complicated mingled sequence to right-shift a 32-bit number, where a simple select would do
16:46:35 <ais523> AnMaster: it's often described as a self-obfuscating language
16:46:36 <AnMaster> ais523, you realize this is intercal you are talking about?
16:46:47 <ais523> AnMaster: yes, but I see no reason for inefficient coding
16:47:20 <ais523> it's like the x == true ? (x == false ? false : true) : (x == false ? false : true) that was featured on thedailywtf.com today
16:47:28 <ais523> I don't like terribly redundant code in any language
16:47:52 <ais523> actually, syslib could do with a spring-clean
16:48:13 <ais523> so far it's been preserved as close to the original manual as it could be whilst working
16:48:15 <AnMaster> well implementing parts of it in C maybe? as gcc __builtin__ kind of?
16:48:21 <ais523> AnMaster: I've done that already
16:48:29 <ais523> ick -eE yourprogram.i syslibc
16:48:36 <ais523> it was the first expansion library I wrote
16:49:49 <ais523> http://elliotthird.org/mirror/c-intercal/ick-0.28/pit/explib/syslibc.c
16:50:10 <AnMaster> oh and numbers seem totally out of order?
16:50:12 <ais523> that should give you a good idea about how the C <-> INTERCAL linkage works
16:50:25 <ais523> AnMaster: the error numbers don't follow any pattern as far as I know
16:50:40 <ais523> 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 <ais523> (e.g. the warnings that warn about a certain runtime error have error numbers closely related to those of those errors)
16:54:21 <AnMaster> ais523, idea: for input of ONE TWO and such
16:54:34 <AnMaster> to allow say ETT TVÅ in Swedish
16:54:47 <ais523> AnMaster: it allows a lot of languages already
16:54:55 <ais523> they're just not ones that you're likely to have heard of
16:55:18 <ais523> AnMaster: there were attempts to add Klingon but it ran into problems, so it isn't supported
16:55:51 <ais523> C-INTERCAL from version 0.10
16:55:51 <ais523> onwards accepts English, Sanskrit, Basque, Tagalog, Classical Nahuatl,
16:55:51 <ais523> Georgian, and Kwakiutl; also Volapu"k from version 0.11 onwards, and
16:55:51 <ais523> Latin from version 0.20 onwards.
16:56:01 <ais523> (quote directly from info C-INTERCAL)
16:56:38 <ais523> J-INTERCAL supports Esperanto, and CLC-INTERCAL supports Scottish Gaelic, in addition to that list
16:56:42 <AnMaster> Georgian, I guess is the country
16:56:59 <ais523> Volapuk was all the rage before Esperanto came along
16:57:00 <AnMaster> ais523, ok, what about the ones I didn't identify?
16:57:17 <ais523> you can find out about the others in Wikipedia
16:57:32 <ais523> (in fact, many of the languages have a Wikipedia written in them nowadays)
16:58:13 <ais523> actually, the grammar of the language itself also accepts Latin
16:58:16 <AnMaster> ais523, what spelling of "go home Romans" would it accept? ;)
16:58:31 <ais523> AnMaster: only one that looked like numbers in one of the languages above
16:58:52 <ais523> AnMaster: only bits of it
16:59:08 <AnMaster> what I said was a reference to a scene in it
16:59:51 <AnMaster> # define __attribute__(x) /* NO-OP */
16:59:52 <ais523> AnMaster: to suppress warnings about falling off the end of a function without returning
17:00:07 <AnMaster> means I don't have to repeat the __GNUC__ every time
17:00:13 <ais523> but I only use it once
17:00:20 <AnMaster> ais523, it does return that function?
17:00:23 <ais523> (well, twice, the other time's in ick_ec.h though so it doesn't count)
17:00:28 <ais523> ick_lose doesn't return
17:00:59 <AnMaster> so can't see why it would give a warning from gcc?
17:01:01 <ais523> FAC ADVENIRE DE (1666)
17:01:11 <ais523> AnMaster: because its source is not available during compilation
17:01:39 <ais523> AnMaster: I compile each .c file separately
17:02:00 <ais523> so without the __attribute__ gcc doesn't know that ick_lose never returns while compiling perpet.c, for instance
17:02:00 <AnMaster> oh you mean prevent warning in some *other* function?
17:02:26 <AnMaster> ais523, tell me if astyle works on ick_loose.c
17:02:59 <AnMaster> ais523, also why "extern" for all functions in headers, that actually prevents some optimizing that gcc can do otherwise
17:03:27 <ais523> AnMaster: because they are extern, it wouldn't work otherwise
17:03:33 <ais523> and astyle does work on ick_lose.c
17:03:51 <AnMaster> ais523, well if you just link those C files together it will work
17:03:59 <ais523> the functions are called in lots of different files; if they weren't they'd be marked as static
17:04:14 <AnMaster> extern void ick_lwarn(char *m, int n, /*@null@*/ char *s);
17:04:16 <ais523> so the file which doesn't define the function needs the function marked extern in the header
17:04:19 <AnMaster> void ick_lwarn(char *m, int n, /*@null@*/ char *s);
17:04:35 <AnMaster> ais523, even if it is a different file
17:04:50 <ais523> but the declarations were inside functions originally, where it did make a difference
17:05:03 <AnMaster> ais523, yes and that is bad style of coding
17:05:05 <ais523> when I came to the code it was full of things like this:
17:05:30 <ais523> so in some sense it's saner now than when I first came across it
17:05:40 <ais523> because I changed all of those to proper prototyped declarations eventually
17:05:42 <AnMaster> well you won't need extern any more
17:06:01 <ais523> what difference does it make, by the way?
17:06:13 <ais523> I thought it was completely irrelevant in that context
17:06:36 <AnMaster> ais523, not really, it prevents inlining inside the same source file as defines the function iirc
17:13:53 <AnMaster> ais523, care to explain the logic there?
17:14:06 <ais523> AnMaster: I'm differentiating between null string and 1
17:14:32 <AnMaster> try #if defined(ICK_HAVE_STDINT_H) && (ICK_HAVE_STDINT_H == 1) ?
17:14:47 <ais523> AnMaster: it is defined, just as the null string, to say that STDINT_H isn't available
17:16:03 <AnMaster> ais523, "" == 1 is still faalse
17:16:12 <ais523> It isn't defined as ""
17:16:12 <Deewiant> AnMaster: it's not "", it's nothing at all
17:16:59 <Deewiant> and then the check would be foo-1 == 0
17:17:00 <AnMaster> that would not be true would it?
17:17:10 <ais523> Deewiant: yes, but I tend to think in terms of unsigned arithmetic while programming INTERCAL
17:17:23 <ais523> AnMaster: #if == 1 is a syntax error, which is what your example would expand to
17:17:25 <Deewiant> ais523: whatever makes sense, either is fine
17:17:45 <ais523> Deewiant: I know, I was just analysing why I picked unary + rather than unary - for the test
17:17:59 <AnMaster> ais523, wouldn't it be easier to just use #ifdef and only define it if it is available?
17:18:08 <ais523> AnMaster: blame autoconf
17:18:19 <AnMaster> I think autoconf does #undef for those?
17:18:40 <ais523> you get those by #including "config.h"
17:18:56 <ais523> but in this case, the code is potentially in someone else's code, so it has to be name-mangled
17:19:03 <ais523> so instead I pass the value in via -D on the command line
17:19:12 <AnMaster> well you can tell autoconf to use something else than config.h
17:19:25 <ais523> AnMaster: it's not config.h that's the problem, but the identifiers it #defines
17:19:36 <ais523> they don't start with ICK_ or ick_ and therefore could clash with user code
17:20:01 <AnMaster> ais523, well ick_* could also clash, ick is not a registered trademark or anything ;)
17:20:13 <ais523> AnMaster: I tell people not to use those indentifiers in the C-INTERCAL manual
17:20:15 <Deewiant> AnMaster: no, but at least you can document that if you use ick_* it's your fault :-P
17:20:19 <ais523> s/indentifiers/identifiers/
17:20:32 <AnMaster> 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 <AnMaster> some use FUNGE_* but far from all
17:20:47 <ais523> AnMaster: that's why I mangled at my end
17:21:13 <AnMaster> that is one thing c++ got right, namespaces
17:21:54 <ais523> that, and the parts of the template system that don't cause bloat
17:22:08 <ais523> in C you have to resort to tgmath macros to do that sort of thing
17:22:12 <Deewiant> a proper module system would be nicer
17:22:15 <AnMaster> ais523, also why are two of the error defines duplicated in ick_ec.h?
17:22:16 <ais523> also, // comments, but they're in C99
17:22:28 <ais523> AnMaster: because ick_ec.h is the only header included in foreign programs
17:22:44 <ais523> so it has to do everything itself and avoid anything that might clash with the program it's included in
17:22:53 <ais523> AnMaster: it's a C99 header, #include <tgmath.h>
17:23:58 <AnMaster> ais523, btw did you know about pahole?
17:24:13 <AnMaster> nice tool that analyzes debug info in binary and finds holes in structs
17:24:26 <AnMaster> and shows (hopefully) what re-arranging would help make it smaller
17:24:57 <ais523> AnMaster: so far I haven't had a need to micro-optimise C-INTERCAL
17:25:02 <AnMaster> ais523, developed for linux kernel
17:25:03 <AnMaster> http://rafb.net/p/l6jKMH41.html
17:25:14 <AnMaster> is the result for any structures with at least one hole in cfunge
17:25:21 <AnMaster> Deewiant, performance issues with that
17:25:25 <ais523> Deewiant: that causes misaligned accesses
17:25:30 <AnMaster> Deewiant, and breaks on some arches
17:25:34 <ais523> reordering elements is more efficient if you can get away with it
17:25:52 <Deewiant> or is there a good reason for that
17:26:06 <ais523> Deewiant: the C standard
17:26:17 <AnMaster> ais523, anyway what makes it more complex for cfunge is that some stuff can be either 32-bit or 64-bit
17:26:19 <ais523> also, imagine if two different compilers reordered in different ways
17:26:32 <Deewiant> well pragma pack isn't standard anyway
17:26:40 <ais523> Deewiant: it says that struct elements are in the same order in memory as they are in the program
17:26:45 <ais523> and no, #pragma pack isn't standard
17:26:49 <AnMaster> ais523, s_ImplementedFingerprintEntry is in fact optimal for 64-bit data types on 64-bit systems
17:26:57 <ais523> the standard pragmas all go #pragma STDC
17:27:05 <AnMaster> but not 32-bit funge types on 64-bit
17:27:22 <Deewiant> ais523: but since you need to use the same compiler anyway, it doesn't matter, or?
17:27:40 <ais523> Deewiant: have you never linked together programs from different compilers before?
17:27:49 <ais523> it used to be very common back in the days of DOS
17:27:56 <Deewiant> or if I have, I've used a converter tool in between
17:27:58 <AnMaster> ais523, it still is on windows
17:28:00 <ais523> and you effectively have to do it like that if the programs are written in different languages
17:28:09 <Deewiant> coff2omf -> change object format
17:28:27 <ais523> but it doesn't translate the dll into a lib
17:28:39 <ais523> it just generates bindings for the dll that can be linked into a program
17:28:57 <ais523> /* This is ugly but unless gcc gets appropriate builtins we have to do
17:28:57 <ais523> something like this. Don't ask how it works. */
17:29:07 <ais523> (a comment from the version of tgmath.h on my system)
17:29:28 -!- boily has joined.
17:29:38 <Deewiant> 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 <ais523> Deewiant: yes, that's a good reason to use pahole instead
17:30:41 <ais523> but one purpose of pragma pack is to conform with a known byte pattern that another compiler has produced
17:30:41 <Deewiant> so why can't #pragma pack do rearranging
17:31:05 <ais523> e.g. you know that you need to access a struct consisting of a char followed by a misaligned int
17:31:07 <Deewiant> assume we've told it to just "make this struct as small as possible"
17:31:11 <ais523> so you write the appropriate struct
17:31:17 <AnMaster> <Deewiant> (e.g. %I64d instead of the standard %lld)
17:31:20 <ais523> a #pragma shrink would be more interesting
17:31:29 <AnMaster> 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 <AnMaster> give Arabic-Indic digits in the Persian (`fa_IR') locale.
17:31:44 <ais523> 64 is a Microsoft extension
17:31:48 <Deewiant> AnMaster: "instead of the standard"
17:31:54 <Deewiant> AnMaster: meaning, %lld is the standard
17:32:21 -!- boily has quit (Client Quit).
17:32:30 <ais523> I meant to say 64 is a microsoft extension, but my client ate the for some reason
17:32:55 <ais523> hmm... it seems to eat it even in the middle of lines
17:32:55 <Deewiant> your client is something weird on %I
17:32:57 <AnMaster> Deewiant, anyway, consider cache size
17:33:05 <AnMaster> you want the members in order of access too
17:33:16 <AnMaster> say you use one almost all the time, but another member very seldom
17:33:16 <Deewiant> ais523: I, at least, see an inverted-color I in place of %I for your messages
17:33:33 <ais523> my client puts everything between the two symbols into italics
17:33:49 <ais523> and thutubot sees it as a tab
17:33:53 <Deewiant> AnMaster: you'd have to have the whole struct in cache anyway, you can't separate it
17:34:07 <Deewiant> ais523: ah, I think irssi displays tabs as inverted-color I
17:34:14 <AnMaster> Deewiant, you can load a part of it
17:34:18 <ais523> AnMaster: I'm not doing it deliberately, juts wondering why my client's doing that
17:34:35 <ais523> testing: %a%b%c%d%e%f%g%h%i%j%k %A%D%E%F%H%J%K
17:34:52 <ais523> B, C, and G as well for me
17:35:03 <AnMaster> <ais523> testing: %a%b%c%d%e%f%g%h%i%j%k %A%D%E%F%H %J%K
17:35:14 <ais523> yes, it's what ThutuBot sees too
17:35:14 -!- RedDak has quit (Read error: 104 (Connection reset by peer)).
17:35:15 <Deewiant> ( ais523) testing: %a%b%c%d%e%f%g%h%i%j%k %A%D%E%F%HI%J%K
17:35:29 <Deewiant> but I think that's an irssi setting of some kind
17:35:51 <ais523> I was wondering if it was because Control-I = tab
17:35:52 <AnMaster> ais523, anyway the 32-bit/64-bit mix does complicate things heh
17:37:13 <AnMaster> %B%C and %G were simply missing
17:38:08 <ais523> 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 <AnMaster> Deewiant, well since it was a copy paste I was afraid it would be like unicode
17:38:22 <AnMaster> some clients can't show unicode
17:38:32 <AnMaster> it looks like unicode to the sender again
17:38:47 <ais523> hmm, and the % followed by C turns the rest of the line to black, from its default red-for-messages-I-sent
17:39:14 <AnMaster> of course since irc doesn't echo
17:39:17 <ais523> ah, that would explain a lot
17:39:31 <ais523> I thought +c kicked people who used colour, rather than just blocking it
17:39:45 <ais523> but if it's that easy to type by mistake, I can see why it's implemented this way now
17:39:47 <AnMaster> ais523, on some it strips, other it blocks
17:40:10 <ais523> what's the difference between strips and blocks here
17:40:12 <AnMaster> on unreal and inspircd, +S strips, and +c just blocks
17:40:19 <ais523> do you mean blocks as in the message doesn't get through?
17:40:20 <AnMaster> ais523, no difference, there is none to block here
17:40:25 <AnMaster> ais523, yep that is what I mean
17:40:38 <AnMaster> as in "sorry you can't use colors when sending to this channel"
17:41:03 <AnMaster> ais523, somewhat like trying to talk when +m is set (+m is mode all non-"voice or above")
17:41:45 <AnMaster> voice being +v, +o being op, some ircds got other levels, like "half op", "administrator" and "channel owner"
17:42:00 <AnMaster> or an arbitrary subset of them heh
17:42:05 <AnMaster> all seems to have +v and +o though
17:42:23 <ais523> 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 <ais523> but freenode errored, saying I could only send to 1 recipient at a time
17:42:46 <ais523> that's a violation of the standard, isn't it?
17:42:52 <ais523> 3 recipients doesn't seem excessive anyway
17:43:02 <AnMaster> ais523, um sending to several targets is an extension I think
17:43:14 <ais523> I thought it was in the original RFC
17:43:26 <AnMaster> ais523, even if it is, no one would care
17:43:52 <Deewiant> they just limit it or extend it in some ways
17:44:19 <AnMaster> "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:27 <ais523> RFC 1459 says that it's possible to send to a comma-separated list of receivers
17:44:50 <AnMaster> Deewiant, irc used to allow any user to kill
17:44:55 <ais523> AnMaster: and services should also be allowed to kill users
17:45:08 <AnMaster> ais523, yes but any user was the original
17:45:09 <ais523> that fits within the spirit of that restriction, though
17:45:14 <Deewiant> AnMaster: yeah, because back then only smart people were on the internet
17:45:20 <AnMaster> anyway services didn't exist back at RFC 1459
17:45:36 <ais523> 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 <ais523> (e.g. killing your own ghost?)
17:45:46 <Deewiant> spamming and script kiddies and such was an unknown concept
17:45:47 <AnMaster> ais523, anyway comma-separated list of receivers is easy to abuse for spamming
17:45:53 <Deewiant> ais523: that's how I understand it
17:45:53 <AnMaster> so I can see why freenode doesn't do ti
17:46:02 <ais523> AnMaster: yes, if you put multiple channels there, or hundreds of people
17:46:11 <ais523> [407] PRIVMSG Too many recipients. Only 1 processed
17:46:11 <Deewiant> ais523: 3 is still 3 times more than 1
17:46:25 <ais523> Deewiant: sending a message to #esoteric is a whole lot more than 1
17:46:25 <Deewiant> consider that you're limited in the number of lines you can send
17:46:37 <AnMaster> ais523, ah but they could just part
17:46:44 <Deewiant> ais523: okay, so I guess it could handle channels and users separately
17:47:15 <Deewiant> but the thing is, if you can send, say, 3 lines per second
17:47:31 <Deewiant> then wheras you could previously spam 3 dudes per second you could then spam 9, 12, or 15 dudes per second
17:47:54 <AnMaster> Deewiant, of course you could add one to the counter for each recipients
17:48:16 <Deewiant> so since people rarely want to send stuff to multiple people, just limit it to 1 to minimize spamming possibilities
17:49:14 <AnMaster> 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:51:48 <AnMaster> /* More than one COME FROM references the same label. */
17:51:48 <AnMaster> #define IE555 "555 FLOW DIAGRAM IS EXCESSIVELY CONNECTED\n\
17:51:57 <AnMaster> ais523, didn't you say that was for threading?
17:52:14 <ais523> the error is for the absence of threading
17:52:34 <AnMaster> anyway I don't see anything in ick_ec.h for removing comefrom?
17:52:46 <ais523> what do you mean by 'removing' here?
17:53:04 <AnMaster> ais523, as in someone using p in fungespace to overwrite the come from marker
17:53:23 <ais523> ick_ec.h can't be used directly to interface with Befunge
17:53:30 <ais523> it's designed to link to C
17:53:44 <AnMaster> ah so you would make ick_ebef.h or such?
17:54:27 <AnMaster> ICK_EC_FUNC_START(ick_my_custom_syslib) <-- I hate that way of doing a function
17:54:50 <ais523> AnMaster: that's because it has to place a wrapper around your function
17:54:58 <ais523> so it translates into some code with unbalanced braces
17:55:34 <AnMaster> ais523, now THAT could be a problem for astyle
17:55:48 <ais523> when checking for COME FROMs, your function is called, but the code inside it doesn't execute
17:56:16 <ais523> 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 <AnMaster> no goto in cfunge, the only one I got is in a function that I took from gnulib
17:57:09 <AnMaster> maybe hash library got something too
17:57:22 <AnMaster> what C *should* have is a break statement to break multiple levels
17:57:32 <AnMaster> that would remove the last remaining need for goto really
17:57:38 <AnMaster> ais523, doesn't work in C iirc?
17:58:06 <ais523> does it allow expressions in place of the constant 2?
17:58:17 <ais523> that would be the INTERCAL-style method of doing things
17:58:42 <AnMaster> ais523, but for break I can't really see the need for that
17:58:48 <ais523> but of course, bash is interpreted, making that sort of thing easy
17:59:03 <ais523> AnMaster: in INTERCAL-72 that sort of thing is the only way to make a conditional branch
17:59:39 <ais523> well, you have computed ABSTAIN and computed COME FROM too in modern C-INTERCAL
17:59:47 <ais523> I find computed ABSTAIN to be the least insane method
18:00:22 <ais523> tells a particular command not to be executed
18:00:25 <AnMaster> also what is latin1.bin and idiotism.oil?
18:00:42 <ais523> latin1.bin is a binary file containing a description of the latin-1 character set, for use by convickt
18:00:49 <ais523> idiotism.oil is a set of optimiser idioms
18:01:02 <ais523> and OIL was a language I invented specifically to write them in (it stands for Optimiser Idiom Language)
18:01:13 <ais523> there's a description of it in the C-INTERCAL docs
18:01:29 <ais523> previously they were written in C, but that became unmaintainable
18:02:31 <ais523> 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 <ais523> OIL was the best solution to managing the optimiser idioms that I could think of
18:03:17 <AnMaster> how does gcc does it's optimizing?
18:03:44 <AnMaster> ((_1 ^ #{1}2) << #{1}3)->((_1 << _3) ^ #{x2<<x3}0) <-- that basically means "replace what is before the -> with what is after it?
18:03:55 <AnMaster> allowing some variables perhaps?
18:04:05 <ais523> #{1} means any constant
18:04:21 <AnMaster> and where is that in the output?
18:04:31 <ais523> x2 fetches the value of #{1}2
18:04:43 <ais523> and is used in an expression used to calculate a constant that appears on the RHS
18:04:55 <AnMaster> ais523, and what do you do if there is a literal such thing in the source?
18:05:11 <ais523> AnMaster: it's not textual substitution
18:05:15 <ais523> it's matching parse trees
18:05:22 <ais523> so syntax errors aren't matched against, for instance
18:05:36 <ais523> INTERCAL doesn't use parens for expression grouping, so that's a giveaway
18:05:59 <AnMaster> well I don't really know intercal
18:06:37 <AnMaster> ais523, anyone wrote an intercal interpreter in intercal yet?
18:06:54 <ais523> the _1 above on the LHS matches any expression, and on the RHS inserts a copy of expression 1
18:07:04 <ais523> INTERCAL's a hard language to write interps for anyway
18:07:36 <AnMaster> there is a befunge93 interpreter in befunge93, almost exact except it reserves a few columns at the edge iirc
18:07:41 <ais523> and it's still harder to compile, although still possible
18:07:56 <ais523> AnMaster: presumably it just loads the input into fungespace and transfers control to it?
18:08:41 <ais523> ah, it uses fungespace to store the input but implements all the commands
18:08:48 <AnMaster> it requires the files to be pre-combined because befunge93 doesn't have file io
18:09:01 <AnMaster> and it does implement all the comands
18:09:28 <ais523> Befunge-93 is easier to interpret than INTERCAL, although harder to compile
18:09:54 <AnMaster> http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/unebef.php
18:10:05 <AnMaster> http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/jbefbef.php
18:12:28 <ais523> 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 <AnMaster> ah haven't looked that closely
18:13:12 <AnMaster> ais523, but well befunge93 interpreter in funge98 should probably be way easier
18:13:31 <ais523> and you can stay well out of its program space
18:13:46 <ais523> hmm... a befunge98 in trefunge98 would be interesting
18:13:49 <AnMaster> not that I'm going to write it
18:13:57 <ais523> you could hide from its program space there too
18:14:18 <AnMaster> ais523, yet the befunge in unefunge is totally mad
18:16:45 <AnMaster> http://www.frox25.no-ip.org/~mtve/code/eso/bef/bef_bef/befbef2.png
18:17:15 <ais523> tracing program execution, I take it?
18:17:47 <AnMaster> but if the source is available I may be able to do something based on it
18:17:59 <AnMaster> it would really help when fuzz tests go wrong
18:18:48 <Deewiant> 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 <ais523> you could even write it in Funge, along the lines of that TURT quine
18:20:33 <AnMaster> Deewiant, indeed but I'm still working on details
18:21:24 <ais523> hmm... I wonder if anyone's ever written a quine like that in Logo?
18:25:51 <AnMaster> Deewiant, indeed I won't touch http://www.frox25.no-ip.org/~mtve/code/eso/bef/bef_vis/
18:27:13 <Deewiant> 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:59 -!- thutubot has quit ("ThutuBot quitting").
18:53:52 -!- thutubot has joined.
18:54:24 <ais523> aha, it obeys the IRC standard properly now, unlike the other bots in here that send messages
18:54:46 <ais523> auto-generated messages are meant to be notices, so as to avoid infinite loops like the one I set up earlier
18:56:12 <ais523> may as well check it in the other direction too
18:56:38 -!- jix has quit (Nick collision from services.).
18:56:48 -!- jix has joined.
18:57:51 <AnMaster> ais523, bad idea, for many clients that cause a beep
18:58:06 <AnMaster> ais523, better make it send errors as /notice only
18:58:07 <ais523> is this a case of things not obeying the standard again, then
18:58:20 <ais523> I'll change it back to privmsg
18:58:25 <Deewiant> clients bell on notices? O_ooo
18:58:33 <ais523> but first I want to test this
18:58:44 <AnMaster> ais523, oh and many ircds got a mode to block channel notices
18:58:56 <ais523> +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:11 <ais523> +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 <olsner> hmm, what language is that?
18:59:21 <ais523> slightly longer that time
19:00:01 <ais523> 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:29 -!- thutubot has quit ("ThutuBot quitting").
19:00:58 -!- thutubot has joined.
19:01:00 <ais523> +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:33 <olsner> underloa got a webpage?
19:01:40 <ais523> http://esolangs.org/wiki/Underload
19:01:59 <olsner> oh, *that's* what you meant with s/$/d/
19:02:22 <ais523> and BTW, Thutubot's written entirely in Thutu piped both ways to netcat, including its Underload interp
19:02:34 <ais523> don't put invalid syntax in, though, because it makes it infinite-loop at the moment
19:03:12 <ais523> and don't put infinite loops in, because they make it infinite-loop too
19:03:44 <ais523> +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 <olsner> you mean you haven't solved the halting problem yet? that's trivial!
19:04:06 <AnMaster> ais523, what language is that exactly?
19:04:09 <ais523> I haven't implemented any sort of cutoff for overlong programs, either
19:04:26 <ais523> (that is, overlong in time taken to run)
19:05:08 <olsner> hmm, isn't thutu basically sed but with differenet flow control?
19:05:21 <ais523> olsner: that's one way to think of it
19:05:25 <ais523> but they feel different to write in
19:06:02 <ais523> Thutu doesn't have a hold space, for instance
19:06:07 <ais523> but it's really important in sed
19:06:40 <ais523> +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:57 <olsner> hmm, I guess string rewriting is just string rewriting after all
19:07:13 <ais523> but it's nice to have regular expressions to do it with
19:08:50 <ais523> +ul (()(*))(:^:S*a~^a~!~*:(/)S)::::::::::::************^
19:08:51 <thutubot> */*/**/***/*****/********/*************/*********************/**********************************/*******************************************************/*****************************************************************************************/************************************************************************************************************************************************/******************************************************************
19:10:36 <ais523> +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:03 <ais523> +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 <ais523> OK, I think I messed up somewhere
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 <AnMaster> Deewiant, I'm working on a library for the debug protocol now
19:47:45 <AnMaster> to make it simpler to write both clients and interpreters supporting it
19:48:02 <AnMaster> 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 <SimonRC> Also, gratuitous mutation sucks.
20:06:29 <SimonRC> So, you want to create a list that is a filtered version of another list.
20:07:54 <SimonRC> 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:08:39 * SimonRC decides that a license should be needed to use the iterator mutation functions
20:09:13 <SimonRC> # you are likely to be beaten by a grue #
20:09:26 <SimonRC> # If this fate seems particularly cruel, #
20:09:49 <SimonRC> # Consider whose fault, it could be #
20:10:12 <SimonRC> # Not a lamp or a match in your inv-ent-or-y #
20:14:10 -!- RodgerTheGreat has joined.
20:14:14 <SimonRC> # Not a torch or a match in your in-ven-to-ry #
20:14:40 <SimonRC> RodgerTheGreat: waddya think of MC Frontalot?
20:15:03 <SimonRC> nonono, that's not the rhythm
20:15:56 <RodgerTheGreat> I'm not familiar with too many of his songs, but what I've heard I liked
20:16:41 <SimonRC> MC Frontalot, Lemon Demon, Tom Lehrer, and Weird Al.
20:17:12 <SimonRC> also, need less songs about relationships
20:17:22 <SimonRC> or rather, don't need more
20:17:29 <Deewiant> see http://www.youtube.com/watch?v=WGoi1MSGu64 for instance
20:17:39 <RodgerTheGreat> unless they ALSO include secret lairs on skullcrusher mountain
20:17:57 <SimonRC> RodgerTheGreat: or S&M, or really bad pairing, or etc
20:18:22 <RodgerTheGreat> because those things are funny and creative in many cases
20:18:49 <SimonRC> or the love of man and crayola
20:24:07 <SimonRC> http://frontalot.com/index.php/
20:24:21 <SimonRC> the populariser of nerdcore rap
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 <vixey> I bring quines of ALGOL
20:44:25 <RodgerTheGreat> I found an awesome book today at a book sale entitled "Programming Languages: Design and Implementation" from 1975. It's great.
20:44:39 <RodgerTheGreat> it doesn't even *mention* C or C++ (for obvious reasons).
20:45:28 <vixey> I'm reading CTM it's totally great
20:45:29 <RodgerTheGreat> the main "case study" chapters talk about FORTRAN, ALGOL 60, COBOL, SNOBOL, PL/I, APL and LISP 1.5
20:45:43 <vixey> I'm going to check for this at the library
20:45:52 <SimonRC> one fo the great forgotten languagers
20:45:56 <vixey> SNOBOL is this slick text processer?
20:46:35 * SimonRC wonders how history would have been different had K&R met Charlse Moore
20:46:45 <RodgerTheGreat> I didn't know much about it aside from the name, but I intend to find out
20:47:04 <SimonRC> Well, for a start the unix kernel would have likely been written in Forth...
20:47:24 <SimonRC> SNOBOL was high-level, ISTR, with sirst-class string
20:49:00 <SimonRC> of course, it came before structured programming won...
20:49:54 <RodgerTheGreat> If FORTH had become the defacto standard for systems programming, everything would be awesome
20:50:11 <SimonRC> well, some tings would have been better
20:50:36 <RodgerTheGreat> well, it would've decreased the chance of C++ taking hold, so that would definitely be better
20:50:52 <SimonRC> OTOH, the forth we would be using would be huge and warty
20:51:04 <SimonRC> it would be the Forth equivalent of C's C++
20:51:35 <RodgerTheGreat> 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:53 <AnMaster> RodgerTheGreat, what about elisp?
20:51:56 <Deewiant> give mr. stroustrup two hours alone with any language and I'm sure he can ;-)
20:52:45 <RodgerTheGreat> Deewiant: I think Stroustrup is the human incarnation of the "Ugly Stick" as far as languages are concerned.
20:52:47 <SimonRC> RodgerTheGreat: *cough* COMMON LISP *cough*
20:53:11 <vixey> how can you say that Simon..
20:53:41 <SimonRC> well, Common LISP is rather bigger than Scheme
20:53:47 <RodgerTheGreat> (even if it's missing some critically useful features like a random number generator and a system timer...)
20:54:01 <lament> r5rs isa nice core specification
20:54:12 <lament> it doesn't need a random number generator, that's a part of the standard library
20:54:12 <SimonRC> and it has wonderful shit like symbol nil = variable nil = empty list = false
20:54:17 <AnMaster> RodgerTheGreat, well, that's extreme, befunge got both
20:54:19 <lament> unfortunately scheme does not HAVE a standard library :(
20:55:31 <SimonRC> I am currently working on some Java that is in desperate need of light-order functions, or macros, or preferrably both
20:56:32 <RodgerTheGreat> 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:57:12 <lament> RodgerTheGreat: but everybody hates mzscheme
20:57:14 <RodgerTheGreat> So, on mildly related terms, I'm teaching a class this afternoon about Applet programming
20:57:19 <SimonRC> and anonymous classes are not obscure in this code
20:57:29 <RodgerTheGreat> lament: I don't hate it yet, but we'll see how that develops
20:58:10 <SimonRC> but the things that Java has that are theoretically equivalent to other languages' cool stuff are too heavy-weight
20:58:44 <vixey> btw you can do really neat stuff in java
20:58:54 <RodgerTheGreat> there are a lot of things that Java does that may seem heavyweight and are actually optimized out at runtime
20:59:01 <vixey> you don't need macros
20:59:04 <SimonRC> no, heavywieght for the programmer
20:59:16 <vixey> a bit of reflection goes a long way ;P
20:59:44 <SimonRC> 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 <SimonRC> which means you can't add new methods that are only applicable to some modules
21:00:50 <RodgerTheGreat> SimonRC: did you know that in Java6 you can compile and load source files on the fly?
21:01:24 <RodgerTheGreat> yeah, it's pretty psychotic when you really think about it but damned if it isn't nifty
21:01:49 <SimonRC> (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 <SimonRC> or you get alarming collections of private static methods with lots of instanceofs
21:02:22 <RodgerTheGreat> that sounds like it could be solved with container classes?
21:02:49 <SimonRC> ah, but these objects are in a big tree
21:03:08 <SimonRC> and every time you get any children out of anything you would have to put them in containers
21:03:28 <RodgerTheGreat> 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 <SimonRC> we already have 3 parallel trees
21:03:47 <GregorR> RodgerTheGreat: Did you know that in $YOUR_FAVORITE_DYNAMIC_LANGUAGE you can compile and load source files on the fly?
21:03:49 <RodgerTheGreat> then all your method-extender container classes implement that single interface
21:04:26 <RodgerTheGreat> GregorR: Did you know that $YOUR_FAVORITE_DYNAMIC_LANGUAGE probably doesn't JIT as fast as HotSpot can?
21:04:59 <GregorR> $MY_FAVORITE_DYNAMIC_LANGUAGE doesn't have a JIT as-is :P
21:06:25 -!- Tritonio_ has quit (Remote closed the connection).
21:08:13 <GregorR> I HAVE A PUSSY ... IN MY LAP
21:09:53 <Deewiant> http://arcanux.org/lambdacats/io-monad.jpg
21:10:51 * vixey feels like the kant haskell today cat :(
21:12:04 <GregorR> (Your choice of interpretation of that word)
21:12:14 <SimonRC> RodgerTheGreat: me (as you imagine me)
21:12:21 <SimonRC> in fact, us, (as you imagine us)
21:12:43 <GregorR> So, bad teeth clenching a pipe and a top hat?
21:13:14 <RodgerTheGreat> SimonRC: this is from the last time someone suggested I do that: http://www.nonlogic.org/dump/images/1203125875-tetsuoooo.png
21:14:59 <SimonRC> there is a small chance I might find you one...
21:15:25 <RodgerTheGreat> "oh, cool, that's one person who isn't a formless ball or brain in a jar"
21:15:44 <GregorR> Hey, I'm not a formless ball!
21:16:06 <RodgerTheGreat> Gregor, for example, appears to be human because he has extensive photographic evidence of himself wearing amazing hats
21:16:26 <GregorR> Either that, or he has a really good model for POV-ray.
21:16:46 <RodgerTheGreat> alternately, people can *describe* themselves and I will render my minds-eye version of that, but they tend to be inaccurate
21:16:48 <SimonRC> 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 <SimonRC> surely not a co-incidence?
21:18:14 <SimonRC> (COBOL Bill is off of Mandatory Fun Day, to worst (and only) webcomic ever to be part of TDWTF.)
21:18:24 <GregorR> I think I'm going to make that "people from the internet" picture my avatar.
21:19:02 <RodgerTheGreat> I heard that my sister set this as her desktop: http://www.nonlogic.org/dump/images/1202607439-DrumsCantMakeAMinorsRetards.png
21:21:06 <RodgerTheGreat> and this image is currently winning the Nonlogic Dump War: http://www.nonlogic.org/dump/images/1203194372-saur.png
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 <SimonRC> Well, please excuse my poor artistic skill...
21:27:22 <SimonRC> and a warning in view of what happened last thime I shew it to people...
21:27:44 <SimonRC> 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 <SimonRC> the wings really do get in the way or drawing them
21:29:12 <RodgerTheGreat> oh yes, I think I remember the discussion this spawned last time
21:29:46 <SimonRC> vixey: dragon-shaped, but technically not dragons
21:30:07 <vixey> yeah sometimes, not like I used to though
21:30:25 <vixey> what are they, if not dragons?
21:30:45 <vixey> I don't have anything online
21:31:08 <vixey> if I draw anything good in the future ill upload :p
21:31:20 <RodgerTheGreat> I have a great image host if you ever need one: http://www.nonlogic.org/dump/
21:31:49 <SimonRC> well, the usual way to get good any drawing (well anything) is lots of enthusiasm which causes lots of practice
21:32:37 <SimonRC> also, make it *difficult* practice
21:32:51 <RodgerTheGreat> 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 <SimonRC> if you only do stuff you are confident in, then you end up re-doing the same thing 50 times
21:33:22 <SimonRC> like this guy (not me): http://ebondragonart.com/dragon_art_gallery.html
21:33:42 <SimonRC> ("how about a new angle, like, *not* from the side?")
21:34:35 <RodgerTheGreat> that's one of the reasons I really like doing comics- lots of opportunities to try out new ideas compositionally
21:37:15 <SimonRC> Suppose dogs (or similar) did visual arts
21:37:30 <SimonRC> how would they show who was who?
21:37:56 <SimonRC> because they recognise more by smell and less by appearance than humans do
21:38:49 <SimonRC> maybe some system of symbols near each subject's arse that sybolically represent their smell
21:39:25 <RodgerTheGreat> 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 <SimonRC> alas, there are far more components to smell than to color, especially to a dog
21:40:01 <SimonRC> so composing would be hard
21:40:42 <RodgerTheGreat> 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:41:24 <RodgerTheGreat> 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 <SimonRC> oil paintings have a much easier job: colour only has a few components
21:42:05 <SimonRC> I wonder if that same would work for smell
21:42:33 <SimonRC> vision is like a map from R^2 to R^3
21:42:44 <vixey> other way around no?
21:42:47 <SimonRC> smell is rather like a member of R^9999
21:42:58 <SimonRC> for each position there is a color
21:43:36 <SimonRC> the pixels in our eyes are arranged in an array with directions in it
21:43:38 <RodgerTheGreat> SimonRC: you're tremendously oversimplifying vision, seriously.
21:44:21 <SimonRC> smell sensors aren't arranged in any particular order
21:44:30 <SimonRC> you can't have a "line" in the nose
21:44:46 <vixey> "pixels" sounds like a bad term
21:45:10 <SimonRC> I am talking about the problem of vision more than the solution that we have
21:45:11 <RodgerTheGreat> "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:29 -!- oerjan has joined.
21:45:49 <RodgerTheGreat> some people even have four types of cones, rather than 3 (mostly women, I think, because it's a dual-X trait)
21:46:03 <SimonRC> I was considering all of those
21:46:35 <RodgerTheGreat> 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:47:08 <RodgerTheGreat> 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:50:04 <SimonRC> well, smell would be simpler if we only had a few dimensions of it...
21:50:38 <SimonRC> oerjan: tongue taste, at least
21:51:33 <SimonRC> the problem of detecting the spectra of light coming in from various angles is a regular one
21:52:04 <SimonRC> whereas the collection of airborne molecules is just a big semi-irregular collection
21:52:41 <SimonRC> if I give you all directions, you can sort them roughly as to how close they are to a given direction
21:53:21 <SimonRC> if I give you (in description) all pure frequencies of light, you can sort them in an obvious order
21:53:48 <SimonRC> if I give you (by description) all small scented molecules, you can classify them in 10001 ways
21:54:48 <SimonRC> If a few scents are considered much more important than others, you can concentraste on those for representationality
21:56:52 -!- pikhq_ has joined.
21:59:36 <GregorR> SUPER DANCE EXPLOSION TIME
22:00:39 <SimonRC> 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 <SimonRC> because boolean is an 8-bit type, but C# on has the literals true (1) and false (0)
22:01:16 <GregorR> That's true in plenty of languages.
22:01:46 <SimonRC> but for C#, other .net languages might produce other values for a byte
22:02:16 <SimonRC> 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:56 <GregorR> bool b = *(cast(bool*) &a);
22:02:57 <SimonRC> GregorR: that is not a boolean
22:03:55 <GregorR> My point was that that's not even remotely rare.
22:04:11 <SimonRC> GregorR: you can't do bool b = 2 then?
22:04:34 <GregorR> 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:52 <SimonRC> ok, so I hadn't heard of that
22:06:00 <GregorR> I don't know if D does that (bool b = 2), it may just be a type error :P
22:09:23 <SimonRC> it seems that .NET booleans are 32-bit actually
22:10:07 <RodgerTheGreat> although that may be related to how their VM is designed
22:10:46 <SimonRC> but there may be a protocol for compressing multiple bool arguments together
22:11:07 <RodgerTheGreat> 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:33 <SimonRC> we can't do free-standing holograms yet
22:16:34 -!- jix has quit ("This computer has gone to sleep").
22:19:01 -!- pikhq_ has quit (Read error: 104 (Connection reset by peer)).
22:21:54 -!- pikhq has joined.
22:22:20 <lament> so yesterday i got really stoned and had an epiphany
22:22:32 <lament> that will hopefully make me a much better mandolin player
22:23:19 <vixey> well there were some kids smoking outside my house
22:23:29 <lament> 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 <vixey> so I played whitehouse really loud at them and they all left ^-^
22:23:53 <vixey> they couldn't handle it
22:28:57 <lament> also it's depressing how crappy guitars are, in comparison
22:29:19 <lament> in terms of it being harder to see where the right notes are
22:35:02 -!- jix has joined.
22:35:44 -!- jix has quit (Client Quit).
22:36:31 <SimonRC> 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 <SimonRC> what is that thing in the topic?
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 <GregorR> RodgerTheGreat: Actually, do you mind if I put that (people from the Internet) on a T-shirt?
23:33:43 <GregorR> 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:30 <oklofok> lament: what's mandolin's errr
23:57:12 <oklofok> okay i can't find a word for this, i'll just google :-)
23:58:27 <oklofok> cgcg is better than eadgbe?
23:58:34 <oklofok> i will have to disagree on that one
23:59:22 <oklofok> frets work as they do in a guitar, i'm sure
23:59:28 <oklofok> it's just how you tune the strings that matters