←2008-04-03 2008-04-04 2008-04-05→ ↑2008 ↑all
01:06:22 <GregorR> http://www.codu.org/jsmips/ // now with a non-working example!
01:08:48 <ais523|busy> +quit
01:08:49 -!- thutubot has quit ("ThutuBot quitting").
01:08:50 -!- ais523|busy has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
01:09:04 <wildhalcyon> Alright
01:09:09 <wildhalcyon> lovely mips
01:09:36 <wildhalcyon> What is it supposed to do?
01:09:44 <GregorR> Print Hello, 3!\n
01:09:51 <GregorR> Instead, it just prints Hello, 3
01:09:56 <GregorR> And then dies a horrible death.
01:10:51 <wildhalcyon> and what, exactly, is mips?
01:11:00 <GregorR> A processor [family]
01:11:17 <wildhalcyon> Oh
01:11:42 <wildhalcyon> Right, the one the bunny was named after
01:11:52 <pikhq> One that Gregor is implementing in Javascript for no good reason.
01:12:00 <wildhalcyon> Well, its nice
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:12:43 <pikhq> Fair 'nough.
01:12:50 <pikhq> x86? :p
01:13:00 <GregorR> Also, MMIX is practically CISC compared to MIPS.
01:13:34 <wildhalcyon> vim in your browser eh?
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:43 <wildhalcyon> Drivers are the bane of my existance
01:14:44 <GregorR> Pretty sure everyone is :P
01:14:48 <pikhq> (my kernel courtesy of docs from osdev.org)
01:14:59 <wildhalcyon> well, I wasn't aware until quite recently
01:15:22 <wildhalcyon> and I've had a fantastic time with it.
01:15:32 <wildhalcyon> I'm taking an OS class in a few months...
01:17:20 <pikhq> Whereas I, in a few months, am entering college.
01:17:31 <wildhalcyon> congrats pikhq
01:17:47 <GregorR> I, in a few months, am entering grad school.
01:17:52 <pikhq> Bastard.
01:18:00 <pikhq> Of course, oerjan has all of us beat.
01:18:06 <pikhq> Mr. Ph.D. . . :p
01:18:12 <wildhalcyon> lol
01:18:22 <GregorR> You mean DOCTOR Ph.D.
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:11 <pikhq> Mmkay.
01:19:22 <GregorR> When (if) I get my Ph.D, I'll change my nickname to DrGregor :P
01:19:30 <pikhq> LMAO
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:15 <wildhalcyon> I'm gonna change mine to Bill
01:20:25 <GregorR> Hahah
01:20:30 <pikhq> Hey, if Gene Gray can declare himself a Doctor of Cubic, then so can I.
01:20:31 <pikhq> :p
01:20:34 <GregorR> I could get a non-accredited Ph.D - HEY, I just did!
01:20:51 <pikhq> ;)
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:24 <pikhq> Kickass.
01:21:31 <wildhalcyon> Its "Awesomology"
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:56 <pikhq> :p
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:08 <wildhalcyon> burn
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:21 <wildhalcyon> Goddamn lament is fucking right... >:(
01:25:31 <wildhalcyon> I should just program in smalltalk
01:25:47 <lament> ouch! that really sucks!
01:26:00 <wildhalcyon> Its just really frustrating
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:27:32 <wildhalcyon> That happens to everyone
01:27:43 <wildhalcyon> seriously though, smalltalk is brilliant
01:27:48 <lament> yes
01:27:53 <lament> it really is
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:29:34 <lament> these days, at least
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:32:03 <lament> "on human condition"
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:39:38 <wildhalcyon> I saw that quote
01:39:41 <wildhalcyon> and it made me like him
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:12 <wildhalcyon> wildhalcyon needs to think 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:46:02 <wildhalcyon> why did he say that?
01:46:04 <olsner> I see
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:48:22 <wildhalcyon> sorry, had it backwards ;-)
01:49:08 <pikhq> Consider that C itself is better than C++ for most intents and purposes.
01:49:10 <pikhq> :p
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:50:41 <wildhalcyon> well, I'm saying if I was forced to use C
01:50:53 <wildhalcyon> which has happened, recently
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:51:31 <wildhalcyon> haha, nice
01:51:38 <pikhq> Exclusively.
01:52:19 <pikhq> int main(){volatile asm ("; program code here.");}
01:53:19 <wildhalcyon> int main(){malbolge(...);}
01:53:44 <boily> pardon my C ignorance, but whate is the meaning of volatile?
01:53:47 <boily> s/whate/what/
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:56:50 <wildhalcyon> (to prevent it from caching the result)
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:01:42 <wildhalcyon> exactly
02:11:29 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
02:12:01 -!- Judofyr has joined.
02:15:09 -!- boily has quit ("Schtroumpf!").
02:20:40 * pikhq nods
02:32:44 <wildhalcyon> right then
02:39:50 <GregorR> s/In GNU C/In C/
02:40:11 <GregorR> It means it could change at ANY MOMENT ZOMG, so you can't cache it etc.
02:44:00 <pikhq> GregorR: Ah.
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:44 <GregorR> Stupid "Hello, 3"
02:45:46 <wildhalcyon> it hates you
02:45:50 <pikhq> I have another interpretation that I thought of. . .
02:45:59 <pikhq> volatile = "You can't touch this".
02:45:59 <pikhq> :p
02:46:11 <GregorR> Uhhh, that's just plain incorrect.
02:46:15 <pikhq> I know.
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.
02:48:55 <wildhalcyon> you can't modify consts
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:06:43 <pikhq> Oh. That sucks.
03:07:03 <pikhq> wildhalcyon: My version of 'you can't touch this' is what you described.
03:08:23 <wildhalcyon> See? Everyone's right
03:09:26 -!- Tritonio_ has joined.
03:09:49 <pikhq> 'Cept for MC Hammer.
03:10:53 <wildhalcyon> Yeah, those pants were wrong
03:30:11 -!- adu has joined.
03:45:18 <wildhalcyon> alright, I'm out
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:09:00 <GregorR-L> ...
04:09:00 <GregorR-L> 400628: afa50594 sw a1,1428(sp)
04:09:06 <GregorR-L> This cannot POSSIBLY be right.
04:10:35 <GregorR-L> Does anyone else agree here?
04:12:41 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
04:14:29 <RodgerTheGreat> experimental comics time!
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:17:38 <RodgerTheGreat> GregorR-L?
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:19:50 <GregorR-L> I'm confused.
04:20:00 <RodgerTheGreat> it's kinda "arty"
04:20:08 <RodgerTheGreat> hence "experimental comics time"
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:27:38 <RodgerTheGreat> "there is beauty here, if you know how to see it."
04:40:20 <lament> RodgerTheGreat: i like it
04:40:27 <RodgerTheGreat> thanks, lament
04:40:47 <RodgerTheGreat> what did you come away from it with?
04:40:49 <lament> also, cool photo :D
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:42:49 <RodgerTheGreat> yeah, it's all good
04:43:00 <lament> your sig is weird
04:43:21 <RodgerTheGreat> it's a stylized "JE"
04:44:42 <lament> ah
04:44:58 <RodgerTheGreat> what did it look like to you?
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:04 <RodgerTheGreat> haha- cool
04:46:23 <RodgerTheGreat> can you link me to an image of the "rain" character?
04:46:49 <lament> http://z.about.com/d/chineseculture/1/0/v/Y/rain.gif
04:47:07 <RodgerTheGreat> I like it
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:53:22 <lament> yes, very. Why?
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:01:39 <lament>
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:02:29 <lament> sick
05:02:39 <RodgerTheGreat> poetic
05:02:51 <lament> same thing :)
05:25:29 <RodgerTheGreat> haha
05:25:31 -!- GreaseMonkey has joined.
05:25:37 <RodgerTheGreat> hey, GreaseMonkey
05:25:46 <GreaseMonkey> 'lo
05:52:22 <GregorR-L> l
05:57:13 <RodgerTheGreat> good night everyone
05:57:23 -!- RodgerTheGreat has quit.
06:31:01 -!- Sgeo has quit ("Ex-Chat").
06:31:05 -!- GregorR-L has quit ("Leaving").
06:32:48 -!- atsampson has quit (Read error: 113 (No route to host)).
07:34:38 <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:54 <GregorR> OMFG O_O
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:31:53 <Iskr> ahahahah
10:32:07 <ais523> GregorR: why not?
10:32:11 <ais523> is it a problem in printf?
10:41:32 <GregorR> Haven't diagnosed it yet.
10:41:46 <GregorR> It's going into a perhaps-infinite loop in memchr
10:50:33 <ais523> +quit
10:50:34 -!- thutubot has quit ("ThutuBot quitting").
10:50:38 -!- ais523 has quit ("food, will be back later").
11:11:12 -!- ais523 has joined.
11:11:16 -!- thutubot has joined.
11:21:32 -!- thutubot has quit (Read error: 104 (Connection reset by peer)).
11:24:08 -!- ais523 has quit (Read error: 104 (Connection reset by peer)).
11:42:36 <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:47:49 <AnMaster> that bad, didn't expect it
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:17 <AnMaster> yeah I know that
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:53:47 <AnMaster> I tried on freebsd
11:53:51 <AnMaster> but well that is still gcc
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:54:45 <AnMaster> 3.4 I think I tried
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:56:54 <AnMaster> lcc hm?
11:57:14 <AnMaster> there is always mingw I guess
11:57:22 <fizzie> I don't think lcc-win32 has the posix combattability things mingw has, though.
11:57:28 <AnMaster> hm true
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:20 <AnMaster> functions*
13:52:38 <AnMaster> and strdup not in normal header?
13:52:59 <Deewiant> mkdir is posix
13:53:14 <AnMaster> and strdup?
13:53:16 <Deewiant> and strdup is docced at http://msdn2.microsoft.com/en-us/library/ms235454(VS.80).aspx
13:53:24 <Deewiant> according to google anyway
13:53:26 <Deewiant> see what they say
13:54:37 <AnMaster> guess too old mingw maybe
13:54:47 <AnMaster> as I gave up on msvc
13:58:07 <AnMaster> CMakeFiles/cfunge.dir/src/instructions/sysinfo.obj(.text+0x2fb):sysinfo.c: undefined reference to `environ'
13:58:09 <AnMaster> lovely
13:59:00 <Deewiant> environ doesn't exist
14:01:07 <AnMaster> #ifdef __WIN32__
14:01:07 <AnMaster> / Fake it!
14:01:07 <AnMaster> static const char * environ[] = { "SYSTEM=wincrap", "SUPPORTS=not environ at least, get a sane system" };
14:01:07 <AnMaster> #else
14:01:07 <AnMaster> # ifndef _GNU_SOURCE
14:01:09 <AnMaster> extern char **environ;
14:01:11 <AnMaster> # endif
14:01:13 <AnMaster> #endif
14:01:15 <AnMaster> there we go
14:01:17 <AnMaster> :)
14:02:01 <Deewiant> AnMaster: that's crap >_<
14:02:12 <AnMaster> Deewiant, not my fault the system isn't sane
14:02:19 <AnMaster> but yes I said it, wincrap
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:02:57 <AnMaster> Deewiant, oh?
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:43 <AnMaster> POSIX in this case
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> extern char **environ;
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:45 <Deewiant> yep
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:10:16 <AnMaster> hah
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:15:11 <ais523> s/complian/complain/
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:23 <ais523> int finite;
14:44:28 <AnMaster> eh?
14:44:29 <ais523> to get C++ programs to link under DJGPP
14:44:33 <AnMaster> well yes I did do that
14:44:42 <AnMaster> what?
14:44:44 <AnMaster> a new line yes
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> "SYSTEM=windows crap",
14:44:53 <AnMaster> "SUPPORTS=not environ at least, get a sane system if you want this to work."
14:44:53 <AnMaster> };
14:44:55 <ais523> but the link fails if I don't do that
14:44:56 <AnMaster> was my final version
14:45:09 <AnMaster> ais523, what is int finite?
14:45:19 <ais523> it doesn't do anything obvious
14:45:25 <AnMaster> where is it used?
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:17 <AnMaster> mhm
14:46:21 <AnMaster> well whatever
14:46:30 <AnMaster> ais523, I do not target dos
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:10 <AnMaster> I write C99 + POSIX
14:47:35 <ais523> some of C99 is good
14:47:38 <ais523> but it never really caught on
14:47:47 <AnMaster> well, it is in future I hope
14:47:51 <AnMaster> stdint.h :)
14:59:22 <AnMaster> ais523:
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:00:14 <AnMaster> was just about to say that
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:21 <ais523> fork() : 0 parameters
15:01:27 <ais523> CreateProcessEx() : 7 parameters
15:01:27 <AnMaster> ais523, eh?
15:01:40 <ais523> the Win32 API is really quite bloated
15:01:44 <AnMaster> yes indeed
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:07 <AnMaster> heh
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:43 <ais523> yes
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:14 <AnMaster> oh yes tmpfile and tempfile
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:28 <AnMaster> well yes
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:04:34 <AnMaster> that would be a valid case
15:04:45 <AnMaster> ais523, um that short?
15:04:54 <ais523> 127 chars, I think
15:04:59 <AnMaster> oh that is short
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:24 <AnMaster> that is one reason for xargs
15:05:43 <AnMaster> ais523, I remember reaching it in one project, so many different *.o all on one line
15:05:51 <AnMaster> in the final link line
15:06:15 * ais523 runs ls -l `find .` in their home directory just to see if it will work
15:06:42 <ais523> somehow I doubt it
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:02 <AnMaster> obfuscated C?
15:08:13 <ais523> yes
15:08:18 <AnMaster> ais523, oh interesting, you needed to cast a lot of things then I assume?
15:08:22 <AnMaster> anyway link to that thing?
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:09:05 <AnMaster> IOCCC winner iirc
15:10:07 * ais523 tries to find the file
15:10:12 <ais523> it's on here somewhere, I think
15:10:40 <AnMaster> hm
15:10:48 <AnMaster> ais523, -Wall -Wextra ? ;)
15:11:04 <ais523> failed really badly
15:11:14 <AnMaster> because I bet you need to cast things a lot
15:11:18 <AnMaster> ais523, failed how?
15:11:23 <ais523> at -Wall
15:11:26 <AnMaster> ah
15:11:29 <ais523> because there were lots of statements with no effect
15:11:33 <ais523> that I put there deliberately
15:11:36 <AnMaster> ah I see
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:12 <AnMaster> heh
15:14:13 <ais523> is the compile line
15:14:26 <AnMaster> wow
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:02 <AnMaster> I think it is signed char?
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:15:43 <AnMaster> ok
15:15:47 <AnMaster> what does the program do?
15:15:53 <ais523> lots
15:16:00 <AnMaster> I don't dare to run it
15:16:06 <AnMaster> I can't review it to be safe
15:16:17 <ais523> there are 10 programs hidden in there
15:16:32 <AnMaster> brainfuck too it seems?
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:26 <AnMaster> hm?
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:23 <AnMaster> ah -E helps a bit
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:35 <AnMaster> shows the pre-processes code
15:18:37 <AnMaster> still weird
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:11 <AnMaster> $ ./ioccc5
15:19:11 <AnMaster> Segmentation fault
15:19:16 <AnMaster> is that supposed to happen?
15:19:17 <ais523> AnMaster: that's expected
15:19:21 <AnMaster> why?
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:57 <AnMaster> does nothing?
15:19:59 <ais523> sorry, ./ioccc5 "`cat ./ioccc5`"
15:20:08 <AnMaster> ýýýýýýýýýýýýJGGGGGGA>>>>>>]ZZZZZZNKKKKKK?<<<<<<NKKKKKKC@@@@@@PMMMMMM;888888qnnnnnntqqqqqq]ZZZZZZQNNNNNNCC
15:20:09 <AnMaster> right?
15:20:16 <ais523> hmm
15:20:31 <AnMaster> same result with -m32
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:20:52 <AnMaster> doing nothing
15:20:54 <ais523> type some input
15:21:13 <AnMaster> ok looks like it runs befunge?
15:21:15 <AnMaster> err
15:21:17 <AnMaster> brainfuck
15:21:18 <AnMaster> I meant
15:21:20 <ais523> yes
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:21:58 <ais523> ah, it doesn't
15:21:58 <AnMaster> sure
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:19 <ais523> no
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:23:56 <AnMaster> yep
15:24:00 <AnMaster> perl does nothing
15:24:03 <AnMaster> whatsoever
15:24:09 <AnMaster> $ cat ./ioccc5o1.c | perl ./ioccc5o1.c
15:24:10 <AnMaster> $
15:24:12 <ais523> http://pastebin.ca/971083
15:24:13 <AnMaster> that's all
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:42 <AnMaster> no clue what perl -p does
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:21 <AnMaster> why do I get that a lot
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:36 <ais523> no, unfortunately
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:37 <AnMaster> says diff
15:28:39 <ais523> yes
15:28:47 <ais523> different language, so different extension
15:28:50 <ais523> it's created using cp
15:28:53 <AnMaster> and that was cat iirc?
15:28:58 <AnMaster> or?
15:29:01 <ais523> not quite cat
15:29:04 <ais523> it's an RLE decompressor
15:29:07 <AnMaster> eh
15:29:18 <ais523> using tab as a metacharacter to talk about repetition
15:29:27 <AnMaster> I see
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:31:24 <AnMaster> oh
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:32:47 <ais523> I don't know either
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:34:24 <AnMaster> newline.txt
15:34:27 <AnMaster> what is that one for?
15:35:00 <ais523> AnMaster: it's a file containing just one newline
15:35:06 <AnMaster> but why?
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:27 <AnMaster> ah you could use echo >> file
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:51 <AnMaster> or just
15:35:56 <AnMaster> cat $1 newline.txt | sed -f ioccc5.sed > temp.sh
15:35:59 <AnMaster> convert to
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:01 <ais523> AnMaster: I didn't
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:17 <AnMaster> ah
15:37:38 <ais523> AnMaster: rmdir exists on UNIX with the same semantics as it has in DOS
15:37:52 <AnMaster> mhm
15:37:54 <ais523> so I removed them by deleting all entries in them and then using rmdir
15:38:04 <AnMaster> -_-
15:38:10 <AnMaster> crazy
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:38:47 <AnMaster> what about man?
15:38:59 <ais523> I knew about man
15:39:04 <AnMaster> ah
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:25 <AnMaster> ais523, ah? man man ;D
15:39:38 <ais523> I started learning a lot faster once I thought of that
15:39:51 <AnMaster> heheh
15:39:58 <ais523> note, however that throughout all this, I /still/ preferred UNIX to Windows
15:40:07 <AnMaster> I see
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:41 <AnMaster> heh
15:41:46 <AnMaster> ais523, how long ago was this?
15:41:55 <ais523> over a year
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:21 <AnMaster> that recently
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:37 <AnMaster> and I didn't even know DOS
15:42:39 <AnMaster> I came from Mac
15:42:49 <ais523> put it this way, it was 2006 and yet the system was still running CDE
15:42:51 <AnMaster> red hat 5.1 or 5.0 or such
15:43:01 <AnMaster> ais523, what OS was it then? solaris?
15:43:04 <ais523> yes
15:43:07 <AnMaster> hah
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:18 <AnMaster> not 100% sure
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:40 <AnMaster> it did load the file faster
15:46:49 <AnMaster> slightly
15:46:51 <Deewiant> AnMaster: you want GetEnvironmentStrings and FreeEnvironmentStrings
15:46:57 <Deewiant> assuming you want, that is.
15:46:57 <AnMaster> Deewiant, not really
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:45 <AnMaster> or something like that
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:13 <AnMaster> ais523, ouch that hurts
15:48:29 <AnMaster> ais523, well add munmap to that list actually
15:48:40 <ais523> OK
15:48:47 <ais523> although that's more unlocking, then freeing
15:48:53 <AnMaster> hm ok
15:48:57 <AnMaster> haven't used mmap a lot
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:24 <Deewiant> and pre-9x
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:50:35 <Deewiant> but they're different
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:47 <AnMaster> and that is retarded
15:51:53 <ais523> the API gives me the strong suspicious than all objects are refcounted, for instance
15:52:01 <AnMaster> ais523, indeed
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:46 <AnMaster> ais523, well nor is xp
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:13 <AnMaster> after an application crashed
15:53:15 <AnMaster> Deewiant, ^
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:45 <AnMaster> read about it, very common
15:53:48 <Deewiant> if the process is gone, its locks are gone
15:53:55 <AnMaster> though think only Swedish ppl complained
15:53:56 <AnMaster> hm
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:10 <AnMaster> heh
15:54:12 <Deewiant> but the task manager is crap
15:54:14 <Deewiant> heh
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:22 * AnMaster prefers gettext
15:54:24 -!- boily has joined.
15:54:38 <AnMaster> ais523, yeah that too
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:36 <AnMaster> that is just insane
15:55:48 <AnMaster> I updated glibc in multi user mode with no issues
15:55:54 <AnMaster> without reboot after
15:56:34 <ais523> AnMaster: Windows requires reboots for more or less everything
15:56:39 <AnMaster> ais523, exactly
15:56:49 <Deewiant> aye, and that sucks
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:56:56 <Deewiant> yep
15:57:01 <AnMaster> ais523, yes and another thing
15:57:01 <Deewiant> yep
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:43 <AnMaster> then removes the file
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:58:33 <AnMaster> pervasive?
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:24 <AnMaster> after all it is based on *bsd
15:59:34 <ais523> in theory you could use syscalls directly instead, which can't be done in Windows
15:59:46 <AnMaster> ais523, static binaries yes
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:17 <AnMaster> and it does it in one go
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:00:43 <AnMaster> "not dynamically linked"
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:25 <AnMaster> or device drivers
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:09 <AnMaster> don't what?
16:02:21 <AnMaster> and user mode device drivers?
16:02:34 <AnMaster> like fuse? file system in userspace?
16:02:37 <ais523> AnMaster: don't work
16:02:45 <AnMaster> ah
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:43 <AnMaster> exactly
16:03:50 <ais523> however, they're apparently the main cause of BSODs on Windows
16:04:00 <AnMaster> indeed on NT/XP at least
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:12 <ais523> you had two choices
16:05:24 <ais523> you could press [ESC], and it would ignore the error and attempt to continue
16:05:33 <AnMaster> or?
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:21 <AnMaster> lol
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:36 <AnMaster> and if you meant some other?
16:07:42 <ais523> then you were screwed
16:07:51 <ais523> you would try to alt-tab to it first, I suppose
16:07:57 <AnMaster> reminds me of pre-OSX macos
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:08:33 <AnMaster> ais523, indeed
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:09:53 <ais523> )
16:10:01 <AnMaster> indeed
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:11:38 <AnMaster> in future
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:45 <AnMaster> ais523, and that sounds silly
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:40:10 <ais523> I know I did
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:01 <AnMaster> ON THE WAY TO %d\n"
16:42:04 <AnMaster> hm
16:42:15 <AnMaster> that one didn't have a descriptive comment
16:42:17 <AnMaster> what is it for
16:42:35 <ais523> use of a unary operator that doesn't exist in your current base
16:42:38 <ais523> such as BUT in base 2
16:42:45 <AnMaster> *blink*
16:42:51 <ais523> (base 2: AND, OR, XOR)
16:42:59 <ais523> (base 3: AND, OR, BUT, XOR, sharkfin)
16:43:07 <AnMaster> what is BUT for?
16:43:14 <AnMaster> oh and sharkfin?!
16:43:22 <ais523> AnMaster: noncarrying addition
16:43:27 <ais523> is sharkfin
16:43:31 <ais523> BUT is a bit harder to explain
16:43:37 <AnMaster> tell me
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:44 <AnMaster> hm?
16:45:48 <AnMaster> #define W128 "128 SYSLIB IS OPTIMIZED FOR OBFUSCATION\n\
16:45:49 <AnMaster> ON THE WAY TO %d\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:24 <AnMaster> um intercal is obfuscated?
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:29 <AnMaster> anyway why not change syslib?
16:47:33 <AnMaster> to not use that thing
16:47:39 <ais523> AnMaster: sacrilege!
16:47:42 <AnMaster> eh?
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:48:43 <AnMaster> mhm
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:36 <AnMaster> nor does the warnings
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:25 <AnMaster> why not gettext
16:54:34 <AnMaster> to allow say ETT TVÅ in Swedish
16:54:42 <AnMaster> as it asks "what language"
16:54:47 <ais523> AnMaster: it allows a lot of languages already
16:54:48 <AnMaster> it make me think of that
16:54:53 <AnMaster> ais523, oh?
16:54:55 <ais523> they're just not ones that you're likely to have heard of
16:55:01 * ais523 finds the list
16:55:03 <AnMaster> ais523, Klingon?
16:55:18 <ais523> AnMaster: there were attempts to add Klingon but it ran into problems, so it isn't supported
16:55:23 <AnMaster> hahah
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:06 <AnMaster> Sanskrit I know of
16:56:10 <AnMaster> India iirc
16:56:22 <AnMaster> Basque spain iirc?
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:05 <AnMaster> ah ok
16:57:17 <ais523> you can find out about the others in Wikipedia
16:57:22 <AnMaster> mhm
16:57:32 <ais523> (in fact, many of the languages have a Wikipedia written in them nowadays)
16:57:39 <AnMaster> hhe
16:57:40 <AnMaster> heh*
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:26 <AnMaster> or was it "Romans go home"?
16:58:31 <ais523> AnMaster: only one that looked like numbers in one of the languages above
16:58:36 <AnMaster> ah right
16:58:37 <AnMaster> :/
16:58:44 <AnMaster> you seen Life of Brian?
16:58:52 <ais523> AnMaster: only bits of it
16:58:56 <AnMaster> oh ok
16:59:08 <AnMaster> what I said was a reference to a scene in it
16:59:35 <AnMaster> #ifdef __GNUC__
16:59:35 <AnMaster> __attribute__ ((noreturn))
16:59:35 <AnMaster> #endif
16:59:37 <AnMaster> why that?
16:59:49 <AnMaster> I prefer this in a header
16:59:51 <AnMaster> #ifndef __GNUC__
16:59:51 <AnMaster> # define __attribute__(x) /* NO-OP */
16:59:51 <AnMaster> #endif
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:30 <ais523> it calls exit()
17:00:51 <AnMaster> and it is void
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:08 <AnMaster> ais523, ?
17:01:11 <AnMaster> oh
17:01:11 <ais523> AnMaster: because its source is not available during compilation
17:01:29 <AnMaster> eh
17:01:39 <ais523> AnMaster: I compile each .c file separately
17:01:44 <AnMaster> yes so do I
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:04 <ais523> yes
17:02:07 <AnMaster> right
17:02:26 <AnMaster> ais523, tell me if astyle works on ick_loose.c
17:02:28 <AnMaster> I think it would
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:39 <AnMaster> eh
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:15 <AnMaster> or
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:25 <AnMaster> makes no difference basically
17:04:35 <AnMaster> ais523, even if it is a different file
17:04:39 <ais523> I know
17:04:50 <ais523> but the declarations were inside functions originally, where it did make a difference
17:04:51 <AnMaster> variables need extern
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:10 <ais523> int i, j, getopt();
17:05:18 <AnMaster> *blink*
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:06:40 <AnMaster> bbl food
17:13:47 <AnMaster> #if ICK_HAVE_STDINT_H+1 == 2
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:08 <ais523> +1 == 2 is false
17:14:11 <ais523> 1+1 == 2 is true
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:15:38 <AnMaster> I see..
17:16:03 <AnMaster> ais523, "" == 1 is still faalse
17:16:06 <AnMaster> false*
17:16:12 <ais523> It isn't defined as ""
17:16:12 <Deewiant> AnMaster: it's not "", it's nothing at all
17:16:14 <ais523> it's defined as
17:16:17 <Deewiant> it's just blank
17:16:20 <Deewiant> #define foo
17:16:21 <AnMaster> hm
17:16:26 <AnMaster> right
17:16:31 <AnMaster> but is that equal to 1?
17:16:36 <Deewiant> +1 == 1
17:16:41 <ais523> so +1 != 2
17:16:44 <Deewiant> it could also be -1 == -1
17:16:52 <AnMaster> #define foo
17:16:56 <AnMaster> #if foo == 1
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:07 <Deewiant> nope
17:17:10 <ais523> Deewiant: yes, but I tend to think in terms of unsigned arithmetic while programming INTERCAL
17:17:13 <Deewiant> but foo+1==2 would be
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:25 <ais523> yes, normally
17:18:37 <AnMaster> normally?
17:18:40 <ais523> you get those by #including "config.h"
17:18:53 <AnMaster> yep
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:16 <AnMaster> say ick_conf.h
17:19:19 <AnMaster> or whatever you want
17:19:25 <ais523> AnMaster: it's not config.h that's the problem, but the identifiers it #defines
17:19:34 <AnMaster> hm ok
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:06 <AnMaster> but less likely yeah
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:23 <ais523> Deewiant: I did
17:20:32 <Deewiant> correct
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:20:53 <AnMaster> mhm
17:21:13 <AnMaster> that is one thing c++ got right, namespaces
17:21:17 <AnMaster> it is a good idea
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:38 <AnMaster> tgmath?
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:49 <AnMaster> not sure gcc does it?
17:22:53 <ais523> AnMaster: it's a C99 header, #include <tgmath.h>
17:23:04 <AnMaster> ais523, yeah
17:23:32 <AnMaster> ooh 4.1 got the header
17:23:58 <AnMaster> ais523, btw did you know about pahole?
17:24:09 <ais523> AnMaster: no
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 <Deewiant> AnMaster: pragma pack?
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:33 <Deewiant> it doesn't do rearranging?
17:25:34 <ais523> reordering elements is more efficient if you can get away with it
17:25:38 <ais523> Deewiant: no
17:25:44 <Deewiant> damn, it sucks :-P
17:25:52 <Deewiant> or is there a good reason for that
17:26:06 <AnMaster> there is
17:26:06 <ais523> Deewiant: the C standard
17:26:13 <Deewiant> which says what
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:34 <Deewiant> or is it, nowadays?
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:52 <AnMaster> or 32-bit on 32-bit
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:46 <Deewiant> nope
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:01 <AnMaster> kind of
17:28:03 <Deewiant> implib -> dll to lib
17:28:09 <Deewiant> coff2omf -> change object format
17:28:11 <Deewiant> and then compile
17:28:18 * ais523 has also used implib
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:50 <Deewiant> of course
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:00 <Deewiant> but it is a lib file :-)
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:18 <AnMaster> hm
17:31:20 <ais523> a #pragma shrink would be more interesting
17:31:22 <AnMaster> I was wondering about that
17:31:25 <AnMaster> Deewiant, it seems wrong
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:33 <AnMaster> from man page
17:31:44 <ais523> 64 is a Microsoft extension
17:31:45 <AnMaster> says glibc specific though
17:31:48 <Deewiant> AnMaster: "instead of the standard"
17:31:53 <AnMaster> ah
17:31:54 <Deewiant> AnMaster: meaning, %lld is the standard
17:31:55 <AnMaster> right
17:31:57 <AnMaster> yeah
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:33:54 <AnMaster> ais523, and that fails here
17:34:07 <Deewiant> ais523: ah, I think irssi displays tabs as inverted-color I
17:34:09 <AnMaster> Deewiant, oh?
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:42 <Deewiant> only I breaks
17:34:52 <ais523> B, C, and G as well for me
17:34:57 <Deewiant> ah, true
17:35:00 <Deewiant> don't see them at all
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:07 <AnMaster> is what I see here
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:23 <Deewiant> where I is inverted-colour
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:35:57 <Deewiant> ais523: probably.
17:36:45 <AnMaster> Deewiant, I saw %H %J
17:36:50 <AnMaster> as a space in between
17:37:13 <AnMaster> %B%C and %G were simply missing
17:37:52 <Deewiant> yes, I saw your message
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:21 <ais523> abcdef
17:38:22 <AnMaster> some clients can't show unicode
17:38:24 <AnMaster> but if you paste it
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:00 <AnMaster> ais523, likely color code
17:39:03 <AnMaster> but it is blocked here
17:39:05 <AnMaster> +c mode
17:39:14 <AnMaster> of course since irc doesn't echo
17:39:17 <ais523> ah, that would explain a lot
17:39:18 <AnMaster> the client can't know that
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:39:52 <AnMaster> don't think it kicks anywhere
17:40:02 <AnMaster> on freenode I think +c strips
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:40:42 <AnMaster> or something like that
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:47 <AnMaster> ais523, of course
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:09 <AnMaster> not part of standard is it?
17:43:14 <ais523> I thought it was in the original RFC
17:43:17 * ais523 searches
17:43:26 <AnMaster> ais523, even if it is, no one would care
17:43:31 <AnMaster> no one follow the standard
17:43:47 <Deewiant> sure they do
17:43:52 <Deewiant> they just limit it or extend it in some ways
17:44:17 <AnMaster> see
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:26 <AnMaster> "recommended" eh
17:44:27 <ais523> RFC 1459 says that it's possible to send to a comma-separated list of receivers
17:44:39 <Deewiant> AnMaster: so?
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:27 <AnMaster> Deewiant, indeed
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:45:55 <AnMaster> it*
17:46:02 <ais523> AnMaster: yes, if you put multiple channels there, or hundreds of people
17:46:03 <ais523> but 3?
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:23 <AnMaster> Deewiant, :)
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:35 <Deewiant> or whatever
17:47:53 <Deewiant> with minimal bandwidth use
17:47:54 <AnMaster> Deewiant, of course you could add one to the counter for each recipients
17:48:06 <AnMaster> heh
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:48:24 <AnMaster> Deewiant, indeed
17:48:53 <Deewiant> sauna now ->
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:49:17 <AnMaster> operserv*
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:48 <AnMaster> ON THE WAY TO %d\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:18 <AnMaster> ah
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:16 <AnMaster> or overwrite it's arguments
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:53:49 <ais523> that's it
17:54:27 <AnMaster> ICK_EC_FUNC_START(ick_my_custom_syslib) <-- I hate that way of doing a function
17:54:28 <AnMaster> :/
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:17 <AnMaster> ais523, mhm?
17:55:34 <AnMaster> ais523, now THAT could be a problem for astyle
17:55:35 <AnMaster> I bet
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:31 <ais523> break 2;
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:57:43 <ais523> no, it doesn't
17:57:49 <AnMaster> in bash it does
17:58:06 <ais523> does it allow expressions in place of the constant 2?
17:58:15 <AnMaster> in bash? probably
17:58:17 <ais523> that would be the INTERCAL-style method of doing things
17:58:19 <AnMaster> haven't tried
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:20 <AnMaster> ais523, mhm mad
17:59:27 <AnMaster> of course it is intercal
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
17:59:56 <AnMaster> what is abstain exactly?
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:40 <AnMaster> in fact what is 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:44 <AnMaster> in this case
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:14 <AnMaster> uhu
18:01:23 <AnMaster> ais523, but why?
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:49 <ais523> that's it
18:03:55 <AnMaster> allowing some variables perhaps?
18:03:58 <ais523> yes
18:04:05 <ais523> #{1} means any constant
18:04:08 <AnMaster> ah
18:04:21 <AnMaster> and where is that in the output?
18:04:31 <ais523> x2 fetches the value of #{1}2
18:04:40 <AnMaster> ah
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:01 <ais523> there isn't
18:05:04 <AnMaster> do you use \ to escape?
18:05:11 <ais523> AnMaster: it's not textual substitution
18:05:15 <ais523> it's matching parse trees
18:05:19 <AnMaster> aha
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:06:56 <ais523> AnMaster: no
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:20 <AnMaster> ais523, no it doesn't
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:04 <AnMaster> commands*
18:09:10 <AnMaster> ais523, I'll try to find url
18:09:28 <ais523> Befunge-93 is easier to interpret than INTERCAL, although harder to compile
18:09:53 <AnMaster> first befunge in unefunge
18:09:54 <AnMaster> http://www.quote-egnufeb-quote-greaterthan-colon-hash-comma-underscore-at.info/befunge/unebef.php
18:10:03 <AnMaster> then befunge in befunge:
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:24 <ais523> yes, it should
18:13:31 <ais523> and you can stay well out of its program space
18:13:40 <AnMaster> exactly
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:07 <AnMaster> indeed
18:14:18 <AnMaster> ais523, yet the befunge in unefunge is totally mad
18:16:45 <AnMaster> ais523, this is a cool tool
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:23 <Deewiant> aye, but only -93
18:17:28 <AnMaster> indeed
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:25:53 <AnMaster> it's perl
18:25:54 <AnMaster> eww
18:26:39 <Deewiant> doesn't look that bad to me
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:58 <ais523> +quit
18:51:59 -!- thutubot has quit ("ThutuBot quitting").
18:53:52 -!- thutubot has joined.
18:54:03 <ais523> +ul (:aSS):aSS
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:27 <ais523> good, it didn't reply
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:32 <AnMaster> Deewiant, seen it happen
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:06 <ais523> wow, that was quick
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
18:59:25 <ais523> olsner: Underloa
18:59:28 <ais523> s/$/d/
18:59:36 <ais523> it's an itoa program
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:28 <ais523> +quit
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:19 <thutubot> 1024
19:01:22 <ais523> that got it thinking
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:00 <AnMaster> hm
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:12 <ais523> AnMaster: Underload
19:04:14 <AnMaster> ah
19:04:26 <ais523> (that is, overlong in time taken to run)
19:05:01 <thutubot> 2048
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:40 <thutubot> 13
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:10:52 <ais523> +hello
19:10:52 <thutubot> Hello, ais523!
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:11:57 <ais523> I have to go, anyway
19:12:02 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
19:46:59 <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:47:48 <AnMaster> C library of course
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:04 <SimonRC> well, I don't like it
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:07:59 <SimonRC> blither
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:13:57 <SimonRC> waitamo...
20:14:10 -!- RodgerTheGreat has joined.
20:14:14 <SimonRC> # Not a torch or a match in your in-ven-to-ry #
20:14:23 <SimonRC> RodgerTheGreat: hi
20:14:24 <RodgerTheGreat> howdy
20:14:40 <SimonRC> RodgerTheGreat: waddya think of MC Frontalot?
20:14:45 <RodgerTheGreat> SimonRC: you-are-like-ly-to-be-eaten-by-a-grue
20:14:58 <Deewiant> s/eaten/ea-ten/
20:15:03 <SimonRC> nonono, that's not the rhythm
20:15:29 <RodgerTheGreat> you/are-like-ly/to be/eaten-by-a-grue
20:15:56 <RodgerTheGreat> I'm not familiar with too many of his songs, but what I've heard I liked
20:15:59 <SimonRC> eyah, approx
20:16:06 <SimonRC> *yeah
20:16:16 <SimonRC> ok...
20:16:19 <RodgerTheGreat> kinda a Jonathan Coulton vibe except more hip-hop
20:16:41 <SimonRC> MC Frontalot, Lemon Demon, Tom Lehrer, and Weird Al.
20:16:44 <SimonRC> need moar
20:17:12 <SimonRC> also, need less songs about relationships
20:17:21 <Deewiant> flight of the conchords
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:30 <SimonRC> yes
20:18:49 <SimonRC> or the love of man and crayola
20:21:54 <AnMaster> what is "MC Frontalot"?
20:24:07 <SimonRC> http://frontalot.com/index.php/
20:24:21 <SimonRC> the populariser of nerdcore rap
20:36:04 <AnMaster> nerdcore?
20:36:08 <AnMaster> wtf is that?
20:41:34 -!- vixey has joined.
20:42:49 -!- vixey has set topic: http://bespin.org/~nef/logs/esoteric/ --> STRING p="STRING p=?;print(p[:9]+REPR 34+p+REPR 34+p[11:])";print(p[:9]+REPR 34+p+REPR 34+p[11:]).
20:43:05 <vixey> I bring quines of ALGOL
20:43:27 <vixey> 68
20:43:54 <RodgerTheGreat> hooray
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:17 <vixey> cool good find
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:34 <vixey> :o
20:45:39 <RodgerTheGreat> definitely worth $.25
20:45:42 <SimonRC> ahh, SNOBOL
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:45:58 <vixey> language
20:45:59 <RodgerTheGreat> it's by "Terrence W Pratt"
20:46:24 <RodgerTheGreat> if I recall correctly. It's SNOBOL4, specificially.
20:46:35 * SimonRC wonders how history would have been different had K&R met Charlse Moore
20:46:45 <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:47:25 <SimonRC> s
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:01 <SimonRC> indeed
20:50:11 <SimonRC> well, some tings would have been better
20:50:33 <AnMaster> others would be worse?
20:50:36 <RodgerTheGreat> well, it would've decreased the chance of C++ taking hold, so that would definitely be better
20:50:44 <Deewiant> we'd have FORTH++ instead
20:50:44 <AnMaster> RodgerTheGreat, true
20:50:51 <AnMaster> but C itself is good
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:10 <SimonRC> Deewiant: yes
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:48 <SimonRC> hahaha
20:51:53 <AnMaster> RodgerTheGreat, what about elisp?
20:51:55 <AnMaster> :)
20:51:56 <Deewiant> give mr. stroustrup two hours alone with any language and I'm sure he can ;-)
20:52:05 <SimonRC> ansi forth is big(ish)
20:52:21 <RodgerTheGreat> AnMaster: thus, "In theory"
20:52:26 <AnMaster> RodgerTheGreat, hah
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:52:58 <vixey> o_O
20:53:05 <RodgerTheGreat> I use Scheme when I feel lambda-ey
20:53:11 <vixey> how can you say that Simon..
20:53:21 <RodgerTheGreat> lovely R5S5
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:54:50 <RodgerTheGreat> lament: and therein lies the problem.
20:55:00 <RodgerTheGreat> but MzScheme fixes that nicely
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:55:36 <SimonRC> *higher-order
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:56:45 <SimonRC> I don't think so
20:56:50 <RodgerTheGreat> dang
20:57:04 <SimonRC> or at least, not clearly
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:28 <SimonRC> RodgerTheGreat: teaching?
20:57:29 <RodgerTheGreat> lament: I don't hate it yet, but we'll see how that develops
20:57:37 <RodgerTheGreat> SimonRC: yeah, like a workshop
20:57:40 <SimonRC> ok
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:21 <SimonRC> oh gods, another thing
20:58:30 <RodgerTheGreat> hm. That really does depend.
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:02 * RodgerTheGreat high-fives vixey
20:59:04 <SimonRC> no, heavywieght for the programmer
20:59:16 <vixey> a bit of reflection goes a long way ;P
20:59:34 <RodgerTheGreat> <3 optimistic JIT compilation
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:05 <SimonRC> fun
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:28 <RodgerTheGreat> and perhaps an interface
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:13 <SimonRC> hmm
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:03:59 <SimonRC> hmm
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:07:48 <GregorR> (I has kitty)
21:07:54 <SimonRC> huh?
21:08:13 <GregorR> I HAVE A PUSSY ... IN MY LAP
21:09:30 <RodgerTheGreat> damnit, now I miss my cats
21:09:53 <Deewiant> http://arcanux.org/lambdacats/io-monad.jpg
21:10:21 <RodgerTheGreat> haha
21:10:51 * vixey feels like the kant haskell today cat :(
21:11:42 <RodgerTheGreat> I feel like drawing something. Requests/ideas anyone?
21:11:55 <GregorR> PUSSY
21:12:04 <GregorR> (Your choice of interpretation of that word)
21:12:14 <SimonRC> RodgerTheGreat: me (as you imagine me)
21:12:21 <GregorR> Hahahah
21:12:21 <SimonRC> in fact, us, (as you imagine us)
21:12:27 <GregorR> English, right?
21:12:31 <SimonRC> yes
21:12:43 <GregorR> So, bad teeth clenching a pipe and a top hat?
21:12:50 <vixey> lol
21:12:50 <SimonRC> *snork*
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:13:46 <SimonRC> ok
21:14:25 <SimonRC> not good
21:14:42 <RodgerTheGreat> this is why I like source images
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:36 <SimonRC> eh?
21:15:44 <GregorR> Hey, I'm not a formless ball!
21:15:48 <GregorR> I'm a very formfull ball!
21:15:52 <GregorR> I'm ball-formed!
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:17:10 <RodgerTheGreat> haha
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:17 <RodgerTheGreat> http://rodger.nonlogic.org/comics/Comic016.png
21:18:24 <GregorR> I think I'm going to make that "people from the internet" picture my avatar.
21:18:34 <RodgerTheGreat> GregorR: haha- awesome
21:18:58 <vixey> hehe
21:19:02 <RodgerTheGreat> I heard that my sister set this as her desktop: http://www.nonlogic.org/dump/images/1202607439-DrumsCantMakeAMinorsRetards.png
21:20:44 <SimonRC> heh
21:21:06 <RodgerTheGreat> and this image is currently winning the Nonlogic Dump War: http://www.nonlogic.org/dump/images/1203194372-saur.png
21:21:55 <RodgerTheGreat> so, any other suggestions?
21:22:50 * SimonRC suddenly finds an old pic he did
21:23:12 -!- timotiis has joined.
21:23:27 -!- oklopol has joined.
21:25:56 <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:29 <RodgerTheGreat> I never bash anyone's drawing skills
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:28:28 <SimonRC> *of
21:29:12 <RodgerTheGreat> oh yes, I think I remember the discussion this spawned last time
21:29:19 <SimonRC> ok
21:29:24 <vixey> nice dragons
21:29:46 <SimonRC> vixey: dragon-shaped, but technically not dragons
21:29:52 <RodgerTheGreat> vixey: do you draw at all?
21:30:07 <vixey> yeah sometimes, not like I used to though
21:30:23 <RodgerTheGreat> ooh, can we see some of your stuff?
21:30:25 <vixey> what are they, if not dragons?
21:30:32 <SimonRC> Kigdatsi
21:30:41 <SimonRC> don't bother with Google
21:30:45 <vixey> I don't have anything online
21:30:52 <RodgerTheGreat> :<
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:12 <RodgerTheGreat> definitely
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:33:52 * SimonRC is in a ranty mood
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:04 <SimonRC> hmm
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:40:54 <SimonRC> hmm
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:41:36 <SimonRC> RodgerTheGreat: yes
21:42:05 <SimonRC> I wonder if that same would work for smell
21:42:13 <SimonRC> ysee...
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:51 <SimonRC> vixey: no
21:42:58 <SimonRC> for each position there is a color
21:43:00 <SimonRC> roughly
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:43:49 <SimonRC> I am approximating
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:35 <vixey> eeh
21:44:46 <vixey> "pixels" sounds like a bad term
21:44:49 <SimonRC> indeed
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:22 <SimonRC> yes, yes, yes, yes
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:45:55 <SimonRC> yes also
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:46:53 <SimonRC> RodgerTheGreat: hmm
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:47:17 <SimonRC> hmm
21:49:18 <RodgerTheGreat> anyway, bbl- gotta get some food
21:50:04 <SimonRC> well, smell would be simpler if we only had a few dimensions of it...
21:50:12 * SimonRC thinks of ideas...
21:50:25 <oerjan> like taste...
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:21 <SimonRC> OTOH
21:54:48 <SimonRC> If a few scents are considered much more important than others, you can concentraste on those for representationality
21:54:55 <SimonRC> *concentrate
21:56:52 -!- pikhq_ has joined.
21:59:36 <GregorR> SUPER DANCE EXPLOSION TIME
22:00:07 <SimonRC> did you know...
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:32 <SimonRC> um, I think
22:02:37 <SimonRC> I might be BSing here
22:02:49 <GregorR> char a = 2;
22:02:56 <GregorR> bool b = *(cast(bool*) &a);
22:02:57 <SimonRC> GregorR: that is not a boolean
22:03:05 <GregorR> You are not patient :P
22:03:06 <SimonRC> oh, waitamo...
22:03:22 <SimonRC> does that actually work?
22:03:26 <SimonRC> or is it restricted
22:03:27 <GregorR> In D? Sure.
22:03:36 <GregorR> I don't speak C# :P
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:41 <SimonRC> ew
22:04:52 <SimonRC> ok, so I hadn't heard of that
22:04:59 <GregorR> ?
22:05:46 <SimonRC> I didn't know D did 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:08:09 <RodgerTheGreat> I have returned
22:08:13 <GregorR> lies
22:08:36 <RodgerTheGreat> no lies, only heresy
22:09:11 <SimonRC> ooh
22:09:23 <SimonRC> it seems that .NET booleans are 32-bit actually
22:09:51 <RodgerTheGreat> wtf
22:10:07 <RodgerTheGreat> although that may be related to how their VM is designed
22:10:21 <SimonRC> in arguments, at least
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:19 <SimonRC> "holographic projector"?
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:18:16 <RodgerTheGreat> like I said, it's a really, really stupid idea
22:18:27 <RodgerTheGreat> "impractical" doesn't do it justice
22:18:40 <SimonRC> waitamo...
22:18:51 <SimonRC> how does one type on it?
22:18:55 <SimonRC> or surf the web
22:19:01 -!- pikhq_ has quit (Read error: 104 (Connection reset by peer)).
22:19:01 <SimonRC> or, well, anything
22:19:14 <RodgerTheGreat> "free of the burden of user interfaces", that's how.
22:19:22 <RodgerTheGreat> which means jack
22:19:31 <RodgerTheGreat> bbl
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:22:32 <SimonRC> stoned on what?
22:22:37 <lament> pot
22:22:38 <SimonRC> erm...
22:22:40 <SimonRC> ok
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:48 <SimonRC> hmm
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:09 <SimonRC> yo
22:35:38 <vixey> lol
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:43:57 <oerjan> a quine i guess
22:44:07 <vixey> ALGOL
22:44:08 <SimonRC> well yes
22:44:11 <SimonRC> vixey: ah, ok
22:52:17 -!- RedDak has quit (Remote closed the connection).
22:56:51 -!- jix has quit ("This computer has gone to sleep").
23:10:54 -!- oerjan has quit ("Good night").
23:25:47 <GregorR> RodgerTheGreat: Actually, do you mind if I put that (people from the Internet) on a T-shirt?
23:25:48 * SimonRC goes
23:33:43 <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:17 <oklofok> lament: what
23:56:19 <oklofok> ...
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
←2008-04-03 2008-04-04 2008-04-05→ ↑2008 ↑all