00:02:43 -!- azaq23 has quit (Ping timeout: 258 seconds).
00:34:30 -!- pikhq has quit (Quit: Reconnecting).
00:34:59 -!- pikhq has joined.
00:41:00 <zzo38> When you die, are you going to make sure you die laughing?
00:45:22 <pikhq> I can make no guarantees.
00:46:09 -!- azaq23 has joined.
01:06:30 -!- azaq23 has quit (Ping timeout: 276 seconds).
01:06:53 -!- BeholdMyGlory has quit (Remote host closed the connection).
01:24:19 <pikhq> Buffer overflow in a SELF loader's header check.
01:26:58 -!- coppro has quit (Ping timeout: 260 seconds).
01:28:37 <pikhq> ... And it gets you the bootldr keys.
01:31:13 <pikhq> ... That's the entire chain of trust.
01:31:20 <pikhq> Sony accidentally the chain of trust.
01:31:56 -!- copumpkin has joined.
01:36:19 <pikhq> Yup, seems that as soon as someone bothers to dump/leak the lv0 keys, the PS3 will be *permanently* hacked.
01:38:57 -!- poiuy_qwert has quit (Quit: This computer has gone to sleep).
01:47:07 <zzo38> pikhq: Someone should do that, then. And then watch Sony earn a lot of money because of that, and yet, still, they will discontinue the product.
01:49:51 <pikhq> zzo38: I probably would, and post it via Tor, if my PS3 still worked.
01:49:59 <zzo38> Even worse, nobody (not even the people who work at Sony in a few years) will know the reason why it would be discontinues.
01:51:16 * pikhq needs to buy some thermal paste and give it a bake
01:52:36 <zzo38> Is the PS3 broken?
01:53:18 <zzo38> If so, what makes it broke?
01:53:33 <pikhq> I need to do a reflow on it; it's exhibiting the symptoms of the solder joints on the GPU having gone bad...
01:53:46 <pikhq> Damned lead-free solder.
02:02:21 <pikhq> Shame it's not a 360.
02:02:31 <pikhq> The 360, you can do a solder reflow on by making it overheat.
02:17:58 -!- variable has quit (Read error: Operation timed out).
02:33:37 <zzo38> Does vi/vim have the mode to ding when reaching a certain column?
02:55:06 <pikhq> I seem to have come down with a cold. That sucks.
02:59:07 <pikhq> And I seem to be short on pastimes ATM.
02:59:34 <pikhq> And, of course, reddit is down.
03:00:20 <zzo38> Then make up something else.
03:01:54 <pikhq> Screw you and your logic!
03:03:08 <pikhq> I resent "logic", therefore colorless green dreams sleep furiously!
03:03:21 -!- pikhq has quit (Quit: Lost terminal).
03:18:19 -!- azaq23 has joined.
03:19:05 <zzo38> I have to make up the new D&D character for a separate campaign, by Monday at 16:00J. It is 5th level (6th level for multiclassed characters). I have to try to make decision, such as: Is there colors of chalk? Is there colors of marbles? Does this game have magnetic marbles?
03:22:11 <fizzie> Also important: have you lost your marbles?
03:23:21 <zzo38> fizzie: No, but they have lost terminal. I did not even select any equipment yet, so there is nothing to lose, yet.
03:27:40 <Gregor> http://i.imgur.com/dMoYQ.jpg
03:44:12 -!- variable has joined.
03:50:36 -!- pikhq has joined.
03:50:48 * pikhq has discovered that Jagermeister tastes amazing.
03:51:26 <pikhq> The primary flavor in it is liquorice.
03:51:42 <pikhq> And I <3 liquorice.
03:53:37 <pikhq> Damn straight you do.
03:58:31 -!- azaq231 has joined.
03:58:45 <copumpkin> but actual licorice, not the red sweet candy stuff that's like twizzlers
03:59:09 <pikhq> The red sweet candy stuff is also nice at times. But that's not fucking liquorice.
03:59:18 <pikhq> Actual liquorice is the flavor of the gods.
03:59:35 -!- azaq23 has quit (Read error: Operation timed out).
04:00:24 <pikhq> (incidentally, if you really want the red sweet candy stuff, Red Vines > Twizzlers so fucking much)
04:01:01 <copumpkin> I've tried the stuff they sell at Trader Joe's
04:01:08 <copumpkin> it's not bad, but it's kinda sweet
04:01:37 <pikhq> Hmm, may not be a national brand...
04:02:12 <pikhq> I know it's out of California, and fairly readily available in Colorado.
04:16:45 <Sgeo> I am now incredibly fed up with xkcd
04:19:08 <Sgeo> The current xkcd is pretty much the same as a previous xkcd
04:20:22 <pikhq> Oh, look, devoid of humor.
04:20:41 <pikhq> No, wait, it has negative humor value.
04:22:13 <Sgeo> It's not that. It's that it's essentially the same as a previous one.
04:26:56 <pikhq> There's a birth defect which results in the formation of a cloaca.
04:28:05 <Gregor> It's called "not being a mammal" :P
04:28:29 <pikhq> Gregor: First, the monotremes have cloacas.
04:28:35 <pikhq> Gregor: Second, I meant "in humans".
04:29:34 <Gregor> I hereby expel the monotremes from mammalia.
04:30:30 <pikhq> The marsupial genitalia are also completely and utterly bizarre.
04:32:00 <pikhq> They have two-pronged penises and two vaginas attached to seperate uteruses.
04:32:23 <Gregor> Redundancy: It's good for you.
04:32:53 <pikhq> And the fetus is fed via a yolk.
04:33:39 <pikhq> Yes, they give live birth basically by not shelling the egg.
04:33:55 <Gregor> Heywait, nobody ever answered: Subtract and branch if zero is TC, right?
04:34:27 <pikhq> I don't see why not.
04:34:46 <pikhq> After all, subtract and branch if less than or equal to zero is TC...
04:35:01 <pikhq> Seems it'd just make some branching code even more tedious.
04:35:24 <Gregor> Tedium is irrelevant, all that matters is brevity :P
04:36:19 <Gregor> I'm trying to find the non-cheating useful[1] language with the shortest working interpreter (in C). [1]: Useful means either TC, or non-TC for reasons of limited types not fundamental to the semantics of the language.
04:37:09 <Gregor> With my condition as equality to zero, I can use a simple ?: on the subtraction op, rather than having a comparison :P
04:39:45 <Gregor> Also, it has to be a non-cheating language, no system() :P
04:39:59 <pikhq> I see no reason that SBZ wouldn't be TC.
04:40:22 <pikhq> It has branching, self-modification, and arithmetic.
04:40:23 <Gregor> I'm down to 86 characters, bounded storage machine, plus IO just for lols.
04:40:39 <Gregor> Also it uses gets because I'm awesome.
04:41:24 <Gregor> http://sprunge.us/RQVd
04:41:48 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
04:42:01 <Gregor> I could shave off some space in one easy way I choose not to, plus it actually depends on the signedness of chars which sucks >_>
04:42:32 <Gregor> Oh, plus it's some horrible amalgam of C99 and pre-ANSI C :P
04:43:24 <pikhq> Well, since you're already doing GNU C, you can just do -fsigned-char or -funsigned-char. :P
04:43:50 <Gregor> Mmmm, I don't think this strictly depends on GNU C.
04:44:02 <pikhq> "C99 and pre-ANSI C"
04:44:16 <pikhq> That working is a GNU-ism. :P
04:44:35 <Gregor> Does C99 allow "main(){}" as a program? I don't think so ...
04:44:54 <Gregor> Right, yeah, that's why.
04:45:04 <Gregor> I would need five extra chars for "void ", unless it doesn't even allow main to be void.
04:45:42 <pikhq> You could remove a space by doing "char*a,b[9<<9]={0};"
04:45:49 <pikhq> And main can't be void, no.
04:46:09 <Gregor> You're not allowed to modify b, are you?
04:46:36 <Gregor> Then I'm wasting craploads on 'a' maintenance :P
04:46:44 <pikhq> It's an array on the stack that is all 0s.
04:46:58 <pikhq> {0} is an initialiser, not a constant.
04:47:06 <Gregor> Nonono, I don't mean the content of the array.
04:47:20 <Gregor> Of course I can modify the content :P
04:47:44 <pikhq> ... I doubt it, but GNU might allow it in spite of standards and common sense.
04:48:05 <Gregor> I'd really rather not STRICTLY depend on GNU X-D
04:49:45 <Gregor> I'll bet clang could compile it too :P
04:51:07 <Gregor> Wait, char b[1024]={0} is C99, right?
04:51:35 <Gregor> Bleh, I'd need memset to accomplish that otherwise >_>
04:51:45 <Gregor> memset is six characters! :P
04:52:05 <pikhq> char*a,b[9<<9];main(){...}
04:52:25 <pikhq> Globals are 0-filled by default.
04:52:37 <Gregor> Is that guaranteed to be zero by the C standard? I thought it just happened to be guaranteed to be zero by Unix/ELF/nonsense.
04:52:49 <pikhq> Yes, that is a guarantee.
04:53:08 <pikhq> Which is *why* .bss exists.
04:53:13 <Gregor> Still, b[9<<9] is definitely not OK since 9<<9 isn't a literal :P
04:53:42 <Gregor> You know what I just realized .... 9<<9 is smaller than 9999 >_<
04:53:54 <pikhq> Well, there you go. :)
04:54:53 <Gregor> Muahaha, works and 81 chars >: )
04:55:48 <pikhq> Now, how do you feel about making it also confusing?
04:56:19 <pikhq> Array indexing is commutative. >:D
04:56:50 <pikhq> (as *(a+1) == *(1+a)
04:56:53 <zzo38> (x[y]==*(x+y)) I think, it is same thing, as additional commutate
04:57:02 <Gregor> Except that typeof(1) !== typeof(a)
04:57:08 <pikhq> Gregor: Irrelevant.
04:57:18 <pikhq> Gregor: Array indexing does not work how you think it does.
04:57:30 <pikhq> Gregor: a[b] *is* *(a+b) forall a,b.
04:57:57 <zzo38> One of them is a number the other is a pointer. It has to be, because it is not sense to add two pointers together. Therefore is allow to be commutative.
04:58:46 <Gregor> pikhq: Wow, that shit compiles with -ansi -pedantic *brain explodes*
04:59:12 <pikhq> Gregor: It's entirely valid and well-formed ANSI C.
04:59:15 <zzo38> Is because it is valid, there is no good reason to make non-valid such things!!!
04:59:40 <Gregor> zzo38: Except of course for basic sanity >_>
04:59:54 <Gregor> pikhq: Still, I'm going for brevity, I'm not attacking clarity for the sake of attacking clarity.
05:00:19 <pikhq> It does so amuse me to do that, though.
05:00:37 <zzo38> But it should be compile error to write (*42) because you should need an explicit cast between numbers and pointers; implicit cast should be disallowed (but it isn't, it is only warning, too bad)
05:00:50 <Gregor> But come on, I've got a bounded storage machine interpreter for a pseudouseful language in 81 bytes of C!
05:00:57 <pikhq> zzo38: I'm pretty sure it is at least a warning.
05:01:18 <zzo38> pikhq: Yes it is a warning. It ought to be error to make such implicit cast.
05:01:56 <pikhq> In the few cases where you really *mean* it, you're probably doing an explicit cast anyways.
05:03:17 <pikhq> Gregor: If only you could make use of the arguments to main to get some variables for cheap.
05:03:46 <Gregor> pikhq: I was thinking about using an arg instead of getsing my code, but I couldn't find a way to do it in less characters.
05:04:02 <pikhq> main(int n,char*a){// Write over n, a immediately}
05:04:14 <pikhq> So very nice if you need an integer and a char pointer.
05:04:32 <zzo38> The only case should be an implicit cast from literal zero (or a constant expression making zero, such as (5-5)) to pointer is null pointer, and pointer to boolean, in similar way. But explicit cast such as ((char*)0) ought to always correspond to actually address zero instead.
05:04:38 <pikhq> Yeah, I was merely lamenting that.
05:04:59 <zzo38> pikhq: Yes even in codegolf, Anarchy golf, it can be done like that, I do like that.
05:05:02 <pikhq> zzo38: It's not an implicit cast from zero to null pointer.
05:05:15 -!- lament has joined.
05:05:15 <pikhq> zzo38: "0" *is* a null pointer.
05:05:36 <pikhq> Minor distinction that is utterly irrelevant.
05:05:50 <zzo38> pikhq: I think zero should be an implicit cast to a null pointer, but if you use an explicit cast, instead corresponds to address 0 (usually also the null pointer, though).
05:06:41 <pikhq> How many systems are there around where NULL isn't expressed as 0, anyways?
05:06:54 <pikhq> I mean, uh, there's Lisp machines which had NULL expressed as nil...
05:07:01 -!- asiekierka has joined.
05:07:10 <zzo38> pikhq: I do not know if there are any such system. I am just saying what would be my opinion.
05:07:18 <Gregor> pikhq: I love how you go straight from pedantry to practicality :P
05:07:34 <pikhq> zzo38: I named one.
05:09:09 <zzo38> I think it is OK to have 1[a] and a[1] same thing, by commutative addition, make sense. (Gregor's comment about sanity, although not wrong, is wrong because you cannot always sanity, please. I can sometimes sanity, please.)
05:09:44 <Gregor> `addquote <zzo38> ... you cannot always sanity, please. I can sometimes sanity, please.
05:09:47 <HackEgo> 376) <zzo38> ... you cannot always sanity, please. I can sometimes sanity, please.
05:18:20 <zzo38> Is there a way to tell the compiler that the program uses more stack?
05:24:40 <pikhq> No, because the compiler doesn't determine the size of the program's stack.
05:25:01 <pikhq> The stack is allocated by the kernel on process creation.
05:25:24 <pikhq> The closest you could get is allocating a new stack and switching to it.
05:25:32 -!- azaq231 has quit (Quit: Leaving.).
05:28:35 <zzo38> pikhq: How can you make that while not being specific to only one computer?
05:30:00 <pikhq> zzo38: The setcontext family of functions in POSIX lets you switch stacks.
05:31:54 <zzo38> Does gdb have a command to check the amount of stack usage?
05:32:12 <zzo38> And to trap in case of too much?
05:33:33 <pikhq> If you find one, let me know.
05:34:03 <pikhq> BTW, if you use setcontext et al, be aware that it is very hard to debug screwups.
05:34:59 <zzo38> OK I will try to let you know.
05:35:09 <pikhq> I tried using it for continuations in C... I'm not sure how, but I got a null pointer as the return address for a function.
05:35:23 <pikhq> Needless to say, gdb is no help.
05:36:29 <zzo38> I was looking for something I also found libunwind, does that help at all?
05:36:40 <zzo38> (I mean, with what you are doing)
05:53:00 <Ilari> Oh, yesterday's stats: APNIC (2x/32 IPv6): 4x1k+/32 to Australia, 3x1k to China, 1k to Indonesia, 1k to India, 4x1k+/32 to Japan, 2x1k to Sri Lanka, 2x1k to New Zealand, 1k to Singapore, 1k to Thailand.
05:56:53 -!- lament has quit (Ping timeout: 248 seconds).
05:59:23 <pikhq> Any reason for using /32s as the unit?
05:59:47 <pikhq> Wouldn't it make more sense to use /22, i.e. the minimum allocation unit at APNIC?
06:01:27 <Ilari> The minimum unit is really a /24. I don't know if that can be allocated, but at least it can be assigned.
06:03:09 <pikhq> /22 is the minimum APNIC will allocate itself.
06:20:05 -!- coppro has joined.
06:32:13 <oklopol> "<Gregor> People who use twitter: What's twitterese for "Send answers by tagging @whoever"?" <<< no one uses twitter
06:35:23 <pikhq> In reality, Twitter is a test case for AI research.
06:38:49 <oklopol> i understand that people had to use twitter and facebook before irc was invented, but now they just feel like ancient history
06:44:15 <pikhq> `addquote <oklopol> i understand that people had to use twitter and facebook before irc was invented, but now they just feel like ancient history
06:44:18 <HackEgo> 377) <oklopol> i understand that people had to use twitter and facebook before irc was invented, but now they just feel like ancient history
06:47:18 <coppro> pikhq: you should sue the government for violating treaties
06:47:24 <coppro> under the supremacy clause of the constitution
06:48:15 <pikhq> coppro: Precedent is that I do not have standing to sue unless I can demonstrate that I have been significantly affected by it.
06:48:21 <pikhq> Yes, this is bullshit.
06:49:45 <Sgeo> What is Flatland doing in the non-fiction section? I mean, I see why it's in Science (although imo it should be Math), and that of course is in Non-fiction
06:49:54 <Sgeo> But... it's just
06:50:01 <Sgeo> http://www.feedbooks.com/books/categories
06:50:19 <Sgeo> Hope you don't hit a 500
06:50:35 <coppro> pikhq: you should orchestrate yourself into that then
06:50:44 <coppro> just make a career out of getting standing to sue and suing
06:51:11 <pikhq> Sgeo: Victorian-era satire is apparently non-fiction.
06:51:20 <pikhq> coppro: Non-trivial but awesome.
06:51:53 <pikhq> coppro: Problem is, the treaties I care about would be *very* hard to make applicable without being at high risk of death.
07:02:19 <pikhq> How, exactly, do you propose that I sue the government for violations of the Convention Against Torture without being in a really shitty state?
07:16:02 <coppro> pikhq: could you argue that your faith in the constitution as the supreme law of the land is shaken?
07:17:50 <pikhq> coppro: I'd be laughed out of court.
07:17:56 <pikhq> Thereby demonstrating my point.
07:18:37 <coppro> pikhq: it's the tort of emotional distress
07:18:47 <coppro> they have violated the law and made you feel bad
07:20:54 <pikhq> *Moreover*, the government could no doubt succesfully argue sovereign immunity.
07:25:52 <coppro> fuck I have to live there for thre emonths
07:26:18 -!- zzo38 has quit (Quit: Something Russia is famous for: Russians.).
07:37:00 <pikhq> It's the only country I'm legally permitted to live in.
07:51:29 <coppro> I'm legally permitted to live in it until October
07:59:29 -!- oerjan has joined.
08:14:17 -!- pikhq has quit (Quit: Lost terminal).
08:34:02 <Vorpal> <Phantom_Hoover> Vorpal, well, I know now, but I'm not going to tell you because it took me about 30 seconds. <-- it translates to "birds" for me...
09:05:25 -!- MigoMipo has joined.
09:51:42 -!- monqy has quit (Quit: hello).
10:28:41 -!- oerjan has quit (Quit: leaving).
10:32:42 -!- crystal-cola has joined.
10:36:32 -!- Phantom_Hoover has joined.
10:45:58 -!- asiekierka has quit (Remote host closed the connection).
10:46:06 -!- asiekierka has joined.
10:46:52 -!- asiekierka has quit (Remote host closed the connection).
10:48:03 -!- asiekierka has joined.
11:01:45 -!- asiekierka has quit (Remote host closed the connection).
11:14:05 <Phantom_Hoover> http://www.mspaintadventures.com/storyfiles/hs2/01961_1.gif
11:14:17 <Phantom_Hoover> OK this is quite probably the most ridiculous thing ever.
11:17:02 <cheater99> http://www.impredicative.com/ur/demo/
11:57:42 -!- BeholdMyGlory has joined.
12:08:04 -!- jix has quit (Ping timeout: 260 seconds).
12:19:31 -!- asiekierka has joined.
12:26:53 <Sgeo> It's official: My favorite candy is marshmellows
12:37:21 <cheater99> i always thought candy was like more "solid" stuff
12:37:27 -!- KingOfKarlsruhe has joined.
12:37:35 <cheater99> a marshmallow is almost like whipped cream... and you wouldn't call that candy
12:38:02 <cheater99> where be the fine thin line between marshmallow and jelly?
12:46:23 <Gregor> I would say the thing it's most similar to is meringue.
12:46:37 <Gregor> Which isn't considered a candy /per se/, but then in many contexts marshmallow isn't considered a candy /per se/.
12:47:02 <cheater99> yeah, i'm a bit on the border with this
12:47:22 -!- yorick_ has changed nick to yorick.
12:47:23 <cheater99> Candy, specifically sugar candy, is a confection made from a concentrated solution of sugar in water, to which flavorings and colorants are added.
12:47:35 <cheater99> i think a marshmallow is made from sugar syrup
12:47:50 <cheater99> so technically you could say by ingredients it's a sort of candy.
12:49:02 <crystal-cola> the stuff you buy in shops is probably synthesized from cow brains
12:49:10 <crystal-cola> but you can make them from sugar and egg white
12:54:09 <cheater99> anytime i ask a question related to haskell, i end up arriving at an answer from dons
12:54:34 <cheater99> right now i've asked a question in #haskell, searched around for hours, and he's written a paper answering it in full, many years ago
12:59:15 -!- jos_ali_joe has joined.
13:15:42 -!- jos_ali_joe has quit.
13:21:00 -!- ais523 has joined.
13:24:53 -!- aloril has quit (Ping timeout: 248 seconds).
13:35:17 -!- copumpkin has joined.
13:36:42 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.86.1 [Firefox 3.6.16/20110319135224]).
13:41:35 -!- aloril has joined.
13:50:45 <crystal-cola> show that x^15 + y^3 = 34^34 has no integer solutions
14:00:17 <ais523> gah, diophantine equation!
14:00:58 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:01:42 <Slereah> Diphantus wouldn't like that either!
14:09:07 -!- Wamanuz5 has quit (Remote host closed the connection).
14:16:03 <Gregor> wtf, apparently the Open Watcom compiler has unsigned chars by default >_>
14:16:18 <ais523> Gregor: both signed and unsigned char by default are legal
14:16:24 <ais523> and unsigned char is more plausible in some senses
14:16:46 <Gregor> ais523: But I'm writing an interpreter in the fewest possible characters, so I assume signed char to save characters :P
14:16:56 <Sgeo> Prove that a^n+b^n=c^n has no integer solutions a, b, and c for n>2
14:16:59 -!- TeruFSX has quit (Ping timeout: 252 seconds).
14:17:32 <ais523> Gregor: apparently MSVC++ throws an exception at runtime on an attempt to cast a signed int to a signed short, if the value overflows a short
14:17:46 <ais523> that's legal too, but I thought it was completely absurd
14:18:41 <Sgeo> [I did get that right, right?]
14:18:49 <Gregor> ais523: YOU ARE NOT HELPING
14:19:02 <crystal-cola> Sgeo: I don't think that can be solved by elementry methods
14:19:04 <Gregor> I don't want my 79-char interpreter to balloon because of friggin' portability issues :P
14:19:34 <ais523> just use int everywhere, it's one integer shorter than char
14:20:04 <ais523> you should probably put "nonzero" in there somewhere
14:20:59 <ais523> => xyz(n+2)(n+1)n(n-1)(n-2) = 0
14:22:33 <cheater99> Sgeo: that's easy, i just wrote it down on a napkin.. but i had to blow my nose
14:23:06 <ais523> crystal-cola: it's very easy to prove true for n <= -3, given a proof for n >= 3
14:23:08 <cheater99> anyone know what the smallest complete computer system is that ghc can compile efficient code for?
14:23:25 <ais523> it's false at those values
14:23:26 <cheater99> would an Atom based system be the smallest thing they'd reasonably run with?
14:23:44 <ais523> 1/3 + 1/6 = 1/2 for n=-1 is probably the simplest example
14:24:08 <augur> crystal-cola: what are you doing, capacitance calculations? gtfo.
14:24:41 <Sgeo> augur, crystal-cola appears to have left troll-mod.
14:24:56 <Sgeo> So why are you yelling at em?
14:25:07 -!- Wamanuz has joined.
14:25:09 <ais523> and 1/15^2 + 1/20^2 = 1/12^2
14:26:56 <augur> there are ofcourse infinitely many solutions to that equation
14:27:01 <augur> and are easy enough to find
14:27:12 <augur> without using fractions, no less!
14:28:10 <augur> you dont, since theres an infinite number of them
14:28:17 <augur> you can only constraint your search one way or another
14:29:23 <augur> or at least im pretty sure there are infinitely many
14:30:48 <augur> yes, there are infinitely many
14:30:53 <augur> tho probably not many interesting ones
14:31:00 <augur> well, maybe lots of interesting ones
14:31:23 <augur> atleast a little bit
14:37:20 * Gregor refuses absolutely to add "signed " :P
14:44:49 <ais523> why does it need to be signed, anyway?
14:47:14 <Gregor> Because it's an offset, and if it's unsigned then I can only go forwards, so I can't e.g. loop at all :P
14:49:25 <Gregor> But explicitly calling it signed makes it 86 characters! D-8
14:49:57 -!- copumpkin has joined.
14:50:02 -!- copumpkin has quit (Changing host).
14:50:03 -!- copumpkin has joined.
14:50:28 <ais523> Gregor: why does it have to be a char, then?
14:50:30 <crystal-cola> ,0,1,1,0,1,0,1,1,0,1,1,0,1,0,1,1,0,1,0,1,1,0,1,1,0,1,0,1,1,0,1,1,0,1,0,1,1,0,1,0,1,1,0,1,1,0,1,0,1,1,0,1,0,1,1,0,1,1,0,1,0,1,1,0,1,1,0,1,0,1,1,0,1,0,1,1,0,1,1,0,1,0,1,1,0,1,1,0,1,0,1,1,0,1,0,1,1,0,1,1
14:50:38 <Gregor> ais523: Because I gets it.
14:50:49 <Gregor> ais523: If it's not a char, then I have endianness issues, and that's even grottier.
14:50:52 <crystal-cola> it's like it's trying to be periodic but ise't
14:51:05 <ais523> you're reading a char... with gets?
14:51:23 <Gregor> I'm reading a char ARRAY
14:51:47 <Gregor> Fundamentally this is subtract-and-branch-if-zero, with word size 8 bits.
14:52:06 <ais523> you're unlikely to beat MiniMAX
14:52:25 <ais523> which is actually TC even with bounded inputs, unlike many other OISCs
14:52:25 <crystal-cola> nested reccurences have some weird ability to do this
14:52:45 <ais523> Vorpal: Gregor, because he's golfing
14:52:54 <Gregor> ais523: How many chars is MiniMAX?
14:53:04 <ais523> Gregor: 8 bytes of machine code, for the main loop
14:53:15 <Gregor> I don't care about machine code, I care about chars of C :P
14:53:17 <ais523> if you want I/O and that sort of thing, you have to go up to 32 or so
14:53:32 <ais523> Gregor: char[] main = "insert shellcode here"
14:53:51 <Gregor> ais523: Even my assume-char-is-signed C code is an effload more portable than that :P
14:54:22 <ais523> Vorpal: have you never seen that trick before?
14:54:38 <Vorpal> ais523, looks utterly unportable yeah
14:54:41 <ais523> the trick itself is at least moderately portable, although obviously the shellcode isn't
14:54:51 <Gregor> Well of course the trick itself is portable :P
14:55:00 <Gregor> Plus it'd take lots of bytes to \x \x \x :P
14:55:05 <Vorpal> ais523, I can't imagine that it would work. Presumably it would end up in .data?
14:55:17 <Vorpal> ais523, which would have NX flag turned on. So it couldn't execute
14:55:30 <ais523> the first IOCCC, the winning entry worked like that, but with a polyglot between the two most common machine codes of the time
14:55:35 <ais523> and it predated people turning on NX out of habit
14:55:43 <Vorpal> ais523, "out of habit"?
14:55:58 <ais523> Vorpal: well, in their linker defaults
14:56:07 <Vorpal> I think in general it is a good thing to have. If you really don't want it you can turn it off. But it is a good default to have it on
14:56:26 <ais523> also, your last sentence sounded worryingly zzo38ish
14:56:46 <ais523> I don't mind zzo38 talking like that, but from anyone else it's pretty scary
14:57:36 <Gregor> My rules for myself include "no cheating", which to me meant "no using system() or exec*()", but I think can easily be extended to "no writing machine code in C" :P
14:57:56 -!- elliott has joined.
14:57:59 <Vorpal> ais523, I didn't make as many grammatical errors I think?
14:58:04 <Gregor> I did not, however, define how portable that C had to be, which is why I'm in an ethical quandry of signedness :P
14:58:12 <lambdabot> elliott: You have 3 new messages. '/msg lambdabot @messages' to read them.
14:58:16 <elliott> Gregor: Is this about the jit stuff?
14:58:28 <elliott> Gregor: That relies on signed overflow :P
14:58:28 <ais523> elliott: Gregor's golfing a TC interpreter
14:58:43 <elliott> Relying on signed overflow is So Bad.
14:58:46 <ais523> oh, any language as the language it interprets
14:58:50 <elliott> ais523: What language b- right.
14:58:52 <ais523> but both are relevant when golfing
14:58:53 <Gregor> elliott: This is about golfing a useful[1] interpreter. [1]: Useful means TC, or TC except for a bounded word (and hence) memory size, so computationally equivalent to a computer.
14:58:57 <elliott> Shorter than lifthrasiir's BF one?
14:59:04 <Gregor> elliott: I'm at 79 bytes.
14:59:22 <ais523> <ais523> Gregor: apparently MSVC++ throws an exception at runtime on an attempt to cast a signed int to a signed short, if the value overflows a short
14:59:24 <Vorpal> Gregor, which language does it interpret?
14:59:31 <Gregor> Vorpal: Subtract-and-branch-if-zero.
14:59:40 <ais523> elliott: rare to see languages actually treating signed overflow like MSVC++, though...
14:59:47 <elliott> Gregor: Tried ByteByteJump or similar?
15:00:07 <elliott> uint32_t *pc = (uint32_t *)mem;
15:00:07 <elliott> pc = (uint32_t *)(mem + pc[2]);
15:00:25 <elliott> You can easily do while(some condition on pc) to get a halt instruction.
15:00:32 <elliott> And IO can be memory-mapped.
15:00:37 <Vorpal> ais523, hm. That would be easy to exploit to write a program that is quite a bit slower in MSVC++ than in gcc
15:00:37 <Gregor> elliott: That is so much more than 79 bytes :P
15:00:45 <elliott> Gregor: Because it's ungolfed.
15:00:52 <Gregor> Also, I forgot I fixed it up a bit, and I'm at 77 bytes.
15:01:01 <ais523> Vorpal: I'm not entirely sure that you could catch the resulting exception in a vaguely portable way
15:01:07 <ais523> because I'm not even convinced it's a C++ exception
15:01:15 <ais523> but a more general Windows exception, of which C++ exceptions are a special case
15:01:30 <Vorpal> ais523, well, it has to check for it, even if it doesn't occur
15:01:45 -!- oerjan has joined.
15:01:51 <Gregor> elliott: Also, your has the portability issues I was concerned about ... my only portability issue is it assumes that chars are signed, yours interprets a different language for big-endian and little-endian machines ...
15:02:02 <Vorpal> that means testing if a flag was set, and branching to "throw exception" code.
15:02:21 <ais523> Vorpal: that's going to make a negligible differnce
15:02:39 <ais523> a correctly predicted test-overflow-and-branch is incredibly quick compared to a single memory access
15:02:52 <ais523> (and an incorrectly predicted one slow only because it needs to make memory accesses to load the code you branch to)
15:03:17 <Gregor> elliott: Are you kidding me? Of course it does.
15:03:30 <elliott> Gregor: Are you going to clarify how or just keep stating that :P
15:03:41 <ais523> <Slashdot> An anonymous reader writes "Amazon has officially denied that the recent outage of its EC2 and Elastic Block Storage cloud platforms was the result of an attack from Cyberdyne Systems' Skynet sentient computer system, declaring humanity safe after all. 'From the information I have and to answer your questions,' a spokesperson explained, 'Skynet did not have anything to do with the service event at this time.'
15:03:45 <elliott> Gregor: It's UB C-wise because it overflows a signed value, but I don't know any CPU that does that wrongly, and gcc accepts it fine.
15:04:04 <elliott> 23:39:25: <Gregor> People who use twitter: What's twitterese for "Send answers by tagging @whoever"?
15:04:12 <elliott> Gregor: "Reply to [at]whoever" or similar, surely
15:04:20 <elliott> Since [at]whoever is used as both an identifier of the person and the account
15:04:29 <Gregor> elliott: You're aliasing an 8-bit and 32-bit value, then setting the PC based on the reading the /32/-bit value, after setting the /8/-bit value.
15:04:29 <elliott> And talking to someone always involves mentioning their [at]whatever
15:04:34 <Gregor> elliott: You're in endianness hell.
15:04:39 <Vorpal> ais523, I *assume* that the quote is invented.
15:04:43 <elliott> Gregor: Where the heck does eight bits come in.
15:04:57 <elliott> Gregor: Which instruction are you talking about
15:05:09 <elliott> Gregor: You're referring to the ByteByteJump code which I didn't write?
15:05:13 <elliott> And instead copied from the wiki?
15:05:18 <elliott> I thought you were talking about my Fythe stuff X_X
15:05:24 <Vorpal> (a person asked such a question would probably say something different, and be rather confused by the question)
15:05:29 <Gregor> elliott: I'm talking about language golfing here :P
15:05:34 <Gregor> elliott: Your Fythe code is fine :P
15:05:42 <elliott> Gregor: Yah, I'm just saying that something like ByteByteJump MIGHT BE SIMPLER :P
15:05:45 <elliott> And provided that as an example.
15:06:01 <ais523> I'm personally wondering about cyclic tag, but that might cause memory management problems in C
15:06:12 <elliott> ugh, cyclic tag in C would be horrible
15:06:14 <ais523> if you don't just want to use a cyclic buffer
15:07:05 <elliott> http://www.netaddiction.com/ "Internet chat rooms cause social disorders in teens and adults."
15:07:44 <elliott> author of "Breaking Free of the Web: Catholics and Internet addiction"
15:07:47 <oerjan> elliott: why? don't you just need a pointer to the beginning and to the end, and suitable bounds checking?
15:07:59 <elliott> oerjan: but Gregor has it in seventy-nine bytes
15:08:04 <elliott> that sounds like at least eighty already :D
15:08:08 <elliott> Gregor: Can I see your code btw?
15:09:10 <oerjan> <elliott> FILTHY LIES <-- YEAH LET'S GO SET FIRE TO HIS HOUSE AS PUNISHMENT
15:09:28 <elliott> oerjan: AND GAMBLE ONLINE TO SPITE HER
15:09:35 <elliott> Gregor: I wanna try and make it portable :P
15:09:39 <Gregor> elliott: http://sprunge.us/RbfK
15:09:48 <elliott> Gregor: Pastebin for a single line, noice :P
15:09:56 <Gregor> elliott: Dats rite bich
15:10:04 <oerjan> BUT I CANNOT AFFORD GAMBLING, I'M USING ALL MY MONEY ON DRUGS
15:10:05 <elliott> Gregor: So this is K[and]R C, right?
15:10:23 <oerjan> and on internet, of course
15:10:40 <elliott> "main()" is only valid in K[and]R C.
15:10:43 <Gregor> elliott: Well, it's semitraditional C in that it doesn't have a return type --- yeah :P
15:10:50 <elliott> Gregor: You also assume that sizeof(char pointer) == sizeof(int), because you don't have a prototype for gets or puts.
15:11:02 <elliott> This is Blatantly False on large numbers of architectures.
15:11:05 <Gregor> elliott: I don't use their return values either.
15:11:14 <elliott> Gregor: That's just an error-checking problem.
15:11:22 <elliott> Gregor: This is a portability problem :P
15:11:34 <elliott> Gregor: Remember that char-pointers and ints could have _different calling conventions_.
15:11:40 <elliott> And I'll be damned if there isn't a machine where they do.
15:12:14 <Gregor> elliott: What is the standard for how arguments are passed to no-prototype functions? I don't think it's int, int, int. I think it's like varargs. But I don't recall.
15:12:51 <elliott> Gregor: Hmm, you might be right. Still, I don't think there's any guarantee puts and gets will work with that convention.
15:12:54 <elliott> Kinda the point of prototypes :P
15:13:01 <elliott> Darn, 9<<9 is smaller than 9999.
15:13:09 <Gregor> elliott: Yeah, I already did that :P
15:13:47 <Gregor> elliott: Since I'm already assuming chars are signed, I think I've consigned myself to allowing such nonportable assumptions as "the machine is even vaguely sane"
15:13:50 <elliott> Gregor: BTW, I'm not sure less than ten kibibytes (not octets, bytes) of memory counts as "Useful" :P
15:13:57 <Gregor> (Not that the latter implies the former)
15:14:03 <oerjan> 12:53:47: <cheater99> dons is scaring me
15:14:03 <oerjan> 12:54:09: <cheater99> anytime i ask a question related to haskell, i end up arriving at an answer from dons
15:14:07 <elliott> Also, I'm trying to remove such assumptions... OK, only the char one.
15:14:10 <crystal-cola> Find all natural x,y,z such that 5^x - 3^y = z^2
15:14:18 <oerjan> there's no reason to be scared until you start hitting oleg papers instead
15:14:24 <Gregor> elliott: If you do, you'll blow it up for no good reason.
15:14:25 <elliott> Gregor: Why can't you just use an int array?
15:14:43 <elliott> OK, so the code has to handle setting all the high bits.
15:14:53 <elliott> Actually, gets will write to it properly, I think.
15:15:01 <elliott> As in, [four-or-whatever] bytes to the int.
15:15:31 <elliott> Gregor: btw, your second argument is already an array pointers to chars... you could use that as memory... just sayin'
15:16:51 <Gregor> elliott: Yeah, I thought about doing it in args, but bleh, that's so grotty, even for a golflang :P
15:17:10 <elliott> Gregor: I assume you have seen the shortest BF interp?
15:17:13 <Gregor> elliott: I'm trying to make this to be a challenge for someone to decode and write a program for, not to just be retarded, btw.
15:17:26 <elliott> Oh. MY DESIRE TO MODIFY IT LESSENS
15:17:49 <Gregor> elliott: I'm not sure I have ...
15:18:06 <Gregor> I'd be surprised if it's <77 bytes :P
15:18:08 <elliott> s[99],*r=s,*d,c;main(a,b){char*v=1[d=b];for(;c=*v++%93;)for(b=c&2,b=c%7?a&&(c&17
15:18:08 <elliott> ?c&1?(*r+=b-1):(r+=b-1):syscall(4-!b,b,r,1),0):v;b&&c|a**r;v=d)main(!c,&a);d=v;}
15:18:09 <elliott> http://j.mearie.org/post/1181041789/brainfuck-interpreter-in-2-lines-of-c
15:18:22 <elliott> Yeah, it relies on Unix, but still :P
15:18:27 <Gregor> ... why does it need to be two lines? X-P
15:18:33 <elliott> (Linux and BSD have the right syscalls (read and write).)
15:18:41 <elliott> Gregor: Because people like to measure things in lines of code, and it's two eighty-char lines.
15:19:09 <elliott> Anyway, if you want int memory, you can omit "char" entirely.
15:19:24 <elliott> b[9999],*a;main(){gets(a=b);while(*a)a+=(a[*a]-=a[a[1]])?3:a[2];puts(b);}
15:19:29 <elliott> I maed it shorter and moar portable
15:19:40 <Gregor> ... no, you made it LESS portable, now it depends on endianness.
15:20:01 <Gregor> At least with chars you can give most compilers -flol-make-your-chars-signed-kthx
15:20:20 <Gregor> You can't do -flol-be-big-endian-now-just-for-kicks
15:20:37 <elliott> It should be a processor flag.
15:21:20 <Gregor> It is on some processor, but even on those it has to be specified once and for all for the whole runtime, not per-program.
15:21:21 <Vorpal> <elliott> It should be a processor flag. <-- some CPUs work like that
15:21:41 <Vorpal> Gregor, hah, one second before you (on my side)
15:21:52 <Gregor> Vorpal: Mine is more usefully detailed :P
15:21:58 <elliott> Gregor: Nope nope nope, you should be able to flip it at arbitrary times, followed by a jump instruction.
15:22:06 <elliott> Then OSes would just flip it in their multitasking stuff.
15:22:14 -!- FireFly has joined.
15:22:18 <elliott> And you could change endianness HALF WAY THROUGH THE PROGRAM to take advantage of either.
15:22:22 <Gregor> elliott: Yes, that was my point, even the ones that do aren't sufficient.
15:22:26 <ais523> elliott: oh, I thought you mean they'd change the endianness of the jump addresses
15:22:31 <ais523> so as to make a primitive sort of jump table
15:22:34 <elliott> Gregor: Yes. Clearly we must rectify this issue.
15:23:13 <Vorpal> elliott, I think PPC (32-bit ones) used to have something like that. I distinctly remember reading that some virtualisation software for PC that ran on classical mac used it to speed up things, but G5 lacked it, so the program had to be rewritten a bit
15:23:45 <Vorpal> elliott, no. As in macs emulating x86
15:23:58 <elliott> I still remember seeing a Mac box with "PowerPC" on it, and I assumed that was the box that made it able to run Windows, and the real Mac was underneath the desk, out of sight :D
15:24:00 <Vorpal> like, for running windows back on OS 9
15:24:25 <elliott> http://esolangs.org/w/index.php?title=Surround_notation&curid=3828&diff=22129&oldid=22126
15:24:29 <elliott> TehZ is retarded, discuss?
15:24:41 <elliott> the C example isn't even a C example of that
15:25:02 <elliott> "Prefix notation is one of the four operator notations. It is sometimes combined with surround (when it needs a variable amount of arguments). It is one of the three powerful notations (Prefix, Postfix notation, Surround notation)."
15:25:08 <elliott> ITT: TehZ has never heard of the ternary operator.
15:25:48 <Gregor> elliott: BTW, even if the whole memory is only 9999 bytes, I'm not confident that you can USEFULLY access more than 256 bytes :P
15:25:58 <elliott> Vorpal: Oh wait, "one of the three _powerful_ notations"
15:26:03 <elliott> Can someone just delete those three articles on account of being fucking stupid.
15:26:10 <elliott> "Infix notation is one of the 4 possible ways to describe a program. It is not as powerful as the others, so people usually add parenthesis, which makes it a combined notation (Infix-Surround)."
15:26:20 <elliott> esolangs.org/TehZ's_opinions_blog/
15:26:28 <elliott> esolangs.org/TehZ's_opinions_blog/my_terminology_is_correct/
15:27:15 <elliott> ais523: Administrative opinion on the NPOVness and pointlessness of those worthless articles? :P
15:27:36 <elliott> `addquote <pikhq> o.O <pikhq> There's a birth defect which results in the formation of a cloaca. <Gregor> It's called "not being a mammal" :P
15:27:40 <HackEgo> 378) <pikhq> o.O <pikhq> There's a birth defect which results in the formation of a cloaca. <Gregor> It's called "not being a mammal" :P
15:27:51 <crystal-cola> ais523: did you like this one? 2^(2^m+2^n)|F_n^(F_m-1)-1
15:27:59 <elliott> ais523: clearly /wiki/ means that in TehZ's native language
15:28:21 <crystal-cola> actually now that I look at it again it's not as crazy
15:28:33 <elliott> which is why we have four wonderful articles, one of which's name he just made up, and one of them referring to Infix as a non-powerful notation because you also need his (made-up-name) surround notation of parentheses to use it fully
15:28:44 <elliott> and referring to prefix, postfix and surround as "powerful" notations
15:28:50 <elliott> despite surround being unary, and so not "powerful" by his definition
15:28:59 <elliott> and despite the fact that the ternary operator, and array indexing, don't fall in to any of those categories
15:29:19 <elliott> "Infix notation is one of the 4 possible ways to describe a program." ;; also, there is no relation to programs, it is merely a way operators can be used
15:29:27 <elliott> yeah ok every single word in these articles is wrong
15:30:18 <elliott> 04:45:04: <Gregor> I would need five extra chars for "void ", unless it doesn't even allow main to be void.
15:30:24 <elliott> Gregor: main cannot return void in any standard ever.
15:30:32 <elliott> I don't even think it's strictly valid GNU C.
15:30:45 <Gregor> elliott: Yeah, we came to that conclusion, but I'm golfin' here :P
15:31:30 <Gregor> elliott: I just wanted all of the C features it used to be from the same decade X-D
15:31:39 <elliott> 04:53:13: <Gregor> Still, b[9<<9] is definitely not OK since 9<<9 isn't a literal :P
15:31:59 <elliott> because you can do [foo+bar]
15:32:08 <ais523> elliott: actually, C89 and C99 both allow freestanding implementations to change the return value of main if necessary
15:32:08 <Gregor> It's irrelevant though since it's less than 9999 :P
15:32:17 <elliott> lol at Gregor realising that one[x] works :P
15:32:28 <elliott> ais523: puts and gets ain't freestanding :P
15:32:30 <Gregor> elliott: MY BRAIN HATES IT SO MUCH
15:33:18 <Gregor> I wish I could express a[a[1]] more succinctly.
15:33:54 <ais523> void _exit(int rv) { (void)rv; goto *(void*)0; }
15:33:59 <elliott> [asterisk](a + [asterisk](a + [one]))
15:34:17 <elliott> Yah, I think you are fucked :P
15:34:23 <Gregor> ais523: goto *(void*)0; isn't portable.
15:34:35 <ais523> Gregor: do you have a portable definition of _exit?
15:34:47 <oerjan> <elliott> TehZ is retarded, discuss? <-- maybe not in so strong words. but yeah those last articles seem a bit ill-considered.
15:35:24 <elliott> oerjan: I was also basing this on the fact that all the languages of his that I've seen are stupid :)
15:35:37 <elliott> http://esolangs.org/wiki/Compute/IO <-- yes, we really need this.
15:36:41 <elliott> http://esolangs.org/wiki/Java%27
15:36:43 <ais523> elliott: it's from gcc-bf; I was trying to remember if I'd used an unportable sort of main, but I didn't (I just call main by hand from some C code that actually starts the program)
15:36:45 <elliott> http://esolangs.org/wiki/Java%27%27
15:36:50 <elliott> which we agreed were the worst pages ever, I believe :)
15:36:57 <elliott> ais523: The goto is unportable, though :P
15:36:59 <ais523> but there's that great definition of exit
15:37:05 <elliott> ais523: What's with the (void)rv :P
15:37:10 <Gregor> wtf, I logged in and answered from a different computer, and it went nowhere >_<
15:37:13 <ais523> elliott: to mark it as unused
15:37:15 <elliott> ais523: Putting it into a "register"?
15:37:24 <elliott> You can still use rv afterwards.
15:37:32 <ais523> it's a common portable idiom to mark an argument as unused
15:37:33 <elliott> Is your interpretation of those semantics conformant
15:37:37 <ais523> and it does nothing except stop lint complaining
15:37:50 <ais523> as in, you don't get an unused argument error after doing that
15:37:56 <ais523> and even compilers which don't know the idiom will just ignore it
15:38:03 <ais523> it's much the same thing as writing if((a=b))
15:38:09 <Gregor> OK, wtf, am I actually connected at all? CAN YOU HEAR ME?
15:38:18 <Gregor> <Gregor> ais523: void _exit(int rv) { (void)rv; *((int*)0) = 0; } is exactly as portable.
15:38:20 <Gregor> <Gregor> ais523: Unless you find me a system that disallows writing to NULL but allows jumping to NULL :)
15:38:22 <Gregor> <Gregor> Err, rather, it's exactly as system-portable, while also being substantially more compiler-portable.
15:38:28 <elliott> ais523: Even with -ansi -pedantic -Wall -Wextra -Werror?
15:38:33 <ais523> Gregor: I didn't hear that
15:38:35 <Gregor> Finally that went through.
15:38:43 <ais523> anyway, jumping to NULL is what I needed to do there
15:38:51 <elliott> Gregor: It's not really lag, more the fact that freenode's new ircd sucks balls.
15:38:52 <ais523> writing to NULL wouldn't accomplish anything useful at al
15:39:26 <Gregor> ais523: So what you're saying is, you've found me a system that allows writing to NULL but disallows jumping to NULL :P
15:39:42 <ais523> no, the other way round
15:39:54 <ais523> gcc-bf disallows writing to NULL, but allows jumping to NULL
15:39:59 <ais523> well, jumping to *NULL, to be precise
15:40:13 <Gregor> Oh, this is all about gcc-bf? Is it being developed?
15:40:22 <ais523> goto *(void*)0; is definitely undefined behaviour
15:40:28 <elliott> ais523: it's GNU C only, too
15:40:36 -!- jix has joined.
15:40:37 <ais523> so I can make it do what I like
15:40:56 <elliott> ais523: what I'm saying is
15:41:02 <elliott> because it's not even C code
15:41:07 <elliott> it's a simple parse error, even
15:41:10 <Gregor> It's "syntax error" in C :)
15:41:10 <ais523> does the standard define it?
15:41:23 <elliott> the standard defines what Undefined Behaviour means
15:41:26 <ais523> elliott: it's not bullshit, it's actually how the standard works
15:41:36 <elliott> or is it just Not a Program?
15:41:50 <ais523> anything it doesn't define is undefined, in addition to things specifically marked as undefined
15:42:07 <ais523> #if __SOME_IMPLEMENENTATION_NAMESPACE_FOO
15:42:29 <elliott> it is an invalid program IFF that thing is set
15:42:32 <ais523> (it needs the last line to be valid C, as you have to have at least one declaration or definition per file)
15:42:34 <elliott> I would totally bother to read the standard to prove you wrong, but I'm far too lazy to, so I'll ping fizzie instead.
15:42:46 <Gregor> Are we SERIOUSLY arguing about whether a syntax error is UNDEFINED BEHAVIOR? >_<
15:42:52 <ais523> Gregor: indeed, we are
15:43:08 <ais523> the only thing that's definitively defined as making a program incorrect is #error
15:43:12 <elliott> Gregor: No, we're not, because fizzie is going to reply with two paragraphs from the standard that prove us right :-P
15:43:13 <Gregor> IT ISN'T EVEN BEHAVIOR, DEFINED OR OTHERWISE
15:43:16 <ais523> anything else is implementation-defined or UB
15:43:59 <elliott> 05:06:41: <pikhq> How many systems are there around where NULL isn't expressed as 0, anyways?
15:43:59 <elliott> 05:06:54: <pikhq> I mean, uh, there's Lisp machines which had NULL expressed as nil...
15:44:14 -!- variable has quit (Read error: Operation timed out).
15:44:22 <Deewiant> "A conforming implementation shall produce at least one diagnostic message (identified in an implementation-defined manner) if a preprocessing translation unit or translation unit contains a violation of any syntax rule or constraint, even if the behavior is also explicitly specified as undefined or implementation-defined."
15:44:37 <ais523> 4.2: If a ‘‘shall’’ or ‘‘shall not’’ requirement that appears outside of a constraint is violated, the behavior is undefined. Undefined behavior is otherwise indicated in this International Standard by the words ‘‘undefined behavior’’ or by the omission of any explicit definition of behavior. There is no difference in emphasis among these three; they all describe
15:44:38 <ais523> ‘‘behavior that is undefined’’.
15:44:47 <elliott> OK, so Deewiant proves ais523 half-right :P
15:44:53 <elliott> But also us half-right because you still have to whine about it.
15:45:02 <ais523> I proved me the other half right
15:45:12 <ais523> although I should probably have reformatted that copy-paste from a PDF
15:45:16 <elliott> no, you added no new information to what Deewiant said
15:45:28 <elliott> `run sed -i 's/\.\.\. you cannot/[...] you cannot/' quotes
15:45:33 <HackEgo> 376) <zzo38> [...] you cannot always sanity, please. I can sometimes sanity, please.
15:45:58 <ais523> elliott: Deewiant's quote says that syntax errors should produce diagnostics even if also explicitly specified as UB
15:46:01 <ais523> mine says that they're specified as UB
15:46:17 <elliott> ais523: that's only true if there is no paragraph stating what a syntax error is, or similar
15:46:25 <elliott> other things can override that
15:46:37 <ais523> no, it says that if a ''shall'' / ''shall not'' that appears outside of a constraint is violated, the behaviour's undefined
15:46:49 <ais523> is the grammar of C a constraint? no
15:47:01 <elliott> ais523: you know how Agora rules can override universal quantifications in other rules?
15:47:16 <ais523> only if sufficiently powerful
15:47:27 <oerjan> > let a = 1:zipWith(-)[2..](map((undefined:a)!!)a) in a
15:47:28 <lambdabot> [1,1,2,3,3,4,4,5,6,6,7,8,8,9,9,10,11,11,12,12,13,14,14,15,16,16,17,17,18,19...
15:47:32 <elliott> ais523: the C standard is all the same power.
15:47:44 <ais523> yep, so a contradiction between rules would be an error in the standard
15:47:51 <ais523> thus, there are no relevant contradictions, thus that rule is correct
15:48:07 <oerjan> > let a = 1:zipWith(-)[2..](map((undefined:a)!!)a) in zipWith(-)(tail a)a
15:48:08 <lambdabot> [0,1,1,0,1,0,1,1,0,1,1,0,1,0,1,1,0,1,0,1,1,0,1,1,0,1,0,1,1,0,1,1,0,1,0,1,1,...
15:48:12 * elliott wonders whether Agora really is notable...
15:48:31 <elliott> ais523: you're trolling again
15:48:41 <ais523> I don't think it is, because there are no newspaper articles, etc., about it, and you'd expect there to be if it were
15:48:42 <elliott> because parts of standards blatantly do override generalisations in other parts
15:48:54 <elliott> are you sure there aren't?
15:49:05 <ais523> no, but I think we'd likely have noticed if there were
15:49:19 <elliott> maybe there was in the nineties
15:49:31 <ais523> 6.8.6.1.1 "The identifier in a goto statement shall name a label located somewhere in the enclosing function."
15:49:42 <ais523> it says "shall", no contradiction with the other rule, no attempt to take scope
15:49:44 <elliott> ais523: irrelevant, what matters is the syntatic definition
15:49:52 <elliott> it can't name a label in _another_ scope
15:49:54 <ais523> oh, wait, that's a constraint
15:49:57 <elliott> which is not a syntax error
15:50:41 <elliott> we will haven't found out if syntax errors are defined in a way that, through overriding or otherwise, doesn't count that catch-all
15:51:04 <ais523> jump-statement : goto identifier ; | continue ; | break ; | return expression_opt ;
15:51:12 <elliott> yep, but we need a more general statement about syntax errors
15:51:18 <elliott> <ais523> 6.8.6.1.1 "The identifier in a goto statement shall name a label located somewhere in the enclosing function."
15:51:31 <elliott> this sentence is meaningless if a goto statement contains something that isn't an identifier instead
15:51:46 <Gregor> Yeah, we haven't even gotten to "it's a goto statement"
15:51:55 <elliott> ais523: and I don't think something can be UB if making it valid would make a sentence in the standard meaningless
15:52:22 <ais523> there is no such thing as an invalid program in C, unless it contains #error
15:52:23 <elliott> Gregor: it isn't, by that jump-statement rule
15:52:31 <ais523> just programs that require diagnostics, and programs that don't
15:52:37 <elliott> ais523: <elliott> ais523: and I don't think something can be UB if making it valid would make a sentence in the standard meaningless
15:52:47 <elliott> if you're complaining about
15:52:54 <elliott> this is C-pedantry, not English-pedantry
15:53:22 <elliott> if something is UB but can't, in any way, be given an interpretation without making lines in the standard meaningless or wrong
15:53:30 <elliott> then that's a perfectly acceptable definition of "invalid" to me
15:54:19 <ais523> elliott: what makes you think that goto *(void*)0; is a goto statement?
15:54:22 <ais523> rather than some other sort of statement?
15:54:32 <elliott> it isn't, but you seem to be arguing it is
15:54:38 <ais523> it clearly doesn't fit the syntax for goto statements, it might just be coincidence that it has the keyword "goto" in
15:54:50 <ais523> I'm not, I'm just arguing it's UB because the standard doesn't define it
15:55:33 * elliott ponders going into hash-hash-c and asking for help with the program "}][K()VPOLE{A:">,z00"
15:55:45 <ais523> although here's a nice statement, the definition of UB: " behavior, upon use of a nonportable or erroneous program construct or of erroneous data, for which this International Standard imposes no requirements"
15:55:55 <elliott> "I know it's UB, but it's perfectly defined on my system, so can you just help me fix my problem, which is in the ANSI C part?"
15:55:57 <ais523> so as far as I can tell, the burden's on you to find an actual requirement that's imposed
15:56:01 <ais523> although I'm looking for one here
15:56:21 <elliott> 06:38:49: <oklopol> i understand that people had to use twitter and facebook before irc was invented, but now they just feel like ancient history
15:56:27 <ais523> elliott: I'd go into comp.lang.c and say I had a question about the meaning of the standard, as to whether the program in question is completely meaningless or merely UB
15:56:52 <elliott> ais523: ah, I don't think you understand the part where I'm trying to annoy hash-hash-c because they're shitheads :)
15:57:02 <ais523> but you generally don't take threads there until comp.lang.c has told you to
15:57:02 <elliott> with any luck, PoppaVic wouldn't shut up for a whole day
15:57:34 <ais523> I can call out 4.7 on you, too
15:57:46 <ais523> which basically says that a program is conforming if at least one conforming C implementation accepts it
15:57:57 <ais523> so that would be the question, I suppose
15:58:03 <elliott> GNU C isn't conforming, when it accepts statements like that
15:58:31 <ais523> can an implementation that merely diagnostics on, rather than rejecting, goto *(void*)0; be conforming?
15:59:07 <ais523> my guess is yes, because conforming implementations are allowed extensions that don't affect the behaviour of any strictly conforming programs
15:59:19 <elliott> are we on the fast-track to saying that every object is a valid C program
15:59:21 <ais523> and I doubt you can use that line, other than in a string or ifdeffed out, in a strictly conforming function
15:59:25 <Deewiant> "The intent is that an implementation should identify the nature of, and where possible localize, each violation. Of course, an implementation is free to produce any number of diagnostics as long as a valid program is still correctly translated. It may also successfully translate an invalid program."
15:59:30 <elliott> because in platonic space, there is a perfectly conforming C implementation that accepts any object
15:59:33 <ais523> elliott: unless it has a #error directive in it that isn't ifdeffed out, yes
15:59:42 <elliott> ais523: invalid IS defined
15:59:53 <ais523> elliott: that shows that it's used
16:00:12 <Deewiant> (That was a footnote for "[d]iagnostic messages need not be produced in other circumstances.")
16:00:23 <ais523> also, the footnotes aren't normative
16:00:24 <Deewiant> (Which follows my previous paste)
16:00:40 <ais523> anyway, cpp $1 && echo "This is a diagnostic." is a valid C compiler
16:00:50 <elliott> the C standard is a crock of shit, let's argue about RRRRRS instead
16:00:55 <elliott> the C standard is a crock of shit, let's argue about RRRRRRS instead
16:01:05 <ais523> the cpp step's only needed to catch #error
16:01:17 <ais523> and RRRRRRS is only R5RS
16:01:26 <elliott> one, R[seven]RS is not out now, you are wrong
16:01:34 <ais523> oh, it's in beta or something?
16:01:43 <elliott> It's called a draft of Small Scheme.
16:01:49 <elliott> I don't even know if any work has been done on Big Scheme.
16:01:54 <crystal-cola> But that's okay since R6RS was a huge step backwards
16:01:56 <ais523> elliott: they named it something else, IIRC
16:02:01 <ais523> the people who liked it
16:02:02 <elliott> But I don't really give a damn because the committee has lost all respect.
16:02:14 <ais523> and then pretended it wasn't Scheme
16:02:21 <elliott> I have no idea what you're talking about
16:02:48 <ais523> I can't remember, but it was something about the people who liked R6RS made a trivial derivative and renamed it, then pretended it wasn't Scheme, for some sort of reason I don't understand
16:03:05 <elliott> I haven't heard anything about that, but everyone who likes R6RS is basically insane, so nothing can surprise me.
16:03:40 <elliott> Incidentally, Small Scheme as defined by the R[Seven]RS draft is pretty much identical to R[Five]RS, except for the removal of two random functions and one or two changes that seem stupid.
16:03:56 <elliott> e.g. adding a module system, which is useful for /systems/, which is not the target market of R[Five]RS family languages like Small Scheme
16:04:25 <ais523> anyway, I can't find any evidence of my statement
16:04:35 <ais523> so either a) I was mistaken, or b) I was completely accurate but nobody cared
16:06:56 <ais523> ah, it was a group of people on Reddit, who may or may not have been lying, claiming that Racket went and forked R6RS (the spec), then removed all references to it being Scheme
16:07:05 <ais523> and based on their website, that does indeed seem to be the case
16:07:27 <elliott> It astonishes me how often ais523 seems to take things from reddit, distort them utterly, and then immediately start to present them as fact.
16:07:28 <ais523> <Wikipedia> On June 7th, 2010, PLT Scheme was renamed Racket to emphasize how far it had diverged from the original Scheme programming language.
16:07:41 <elliott> For a start, Racket is not a fork of R[six]RS.
16:07:51 <ais523> elliott: but everyone knows reddit's view of reality is distorted! I'm just distorting it back again!
16:08:03 <elliott> PLT Scheme is a derivative of R[five]RS. It is significantly different.
16:08:09 <elliott> They decided to rebrand to Racket because
16:08:19 <elliott> (one) Schemers were pissed off that it was called Scheme, and
16:08:26 <elliott> (two) they were pissed off that people thought it was Scheme.
16:08:35 <ais523> actually, it seems that there was a flamewar on reddit over the point
16:08:39 <ais523> with people quoting statistics at each other
16:08:47 <elliott> A flamewar on reddit? SHOCKING
16:08:57 <ais523> about whether the PLT Scheme/MzScheme people were responsible for R6RS or not
16:09:12 <elliott> well, they all voted for it :)
16:09:40 <ais523> oh well, it's not like I care too much about Scheme anyway
16:09:51 <elliott> Yeah, it's so inelegant because it has quote.
16:10:10 <ais523> what, as in 'x or (quote x)?
16:10:17 <ais523> oh, you're talking to me?
16:10:27 <ais523> yes, I find Lisp/Scheme-style macros incredibly inelegant and ugly
16:10:32 <elliott> I have no idea, you just seem to hate special forms because of [incomprehensible].
16:10:34 <elliott> Special forms are not macros.
16:10:36 <ais523> all special forms, in fact
16:10:53 <elliott> Yes. The lambda calculus would be far better.
16:10:57 <elliott> Lambda is a special form too.
16:11:13 <elliott> OMG YOU MEAN THAT LANGUAGES HAVE PRIMITIVE ELEMENTES??////////////////////////
16:11:18 <ais523> crystal-cola: well, I prefer to keep the number down, not encourage proliferation
16:11:34 <ais523> I consider combinatory calculus nicer than lambda calculus specifically because it doesn't have to track lambdas
16:11:48 <elliott> but S and K and I are primitives
16:11:55 <elliott> therefore they're pretty close to special forms
16:12:06 -!- lament has joined.
16:12:23 <ais523> elliott: well, the thing's parametric on them
16:12:39 <ais523> you can have them as an FFI to a different language, if you liek
16:13:15 <ais523> (in the compiler I'm writing at work at the moment, all the constants are in fact implemented via FFI, apart from integers because it would be a pain to have to implement each integer separately, and the fixed-point operator because it's too polymorphic)
16:13:28 <elliott> Can I replace Feather with the SKI+RRI calculus that has complete definitions of all of those in terms of themselves?
16:13:49 <ais523> err, I'm not sure what you mean by replacing Feather
16:13:59 <elliott> As in, use Feather to turn Feather into
16:14:54 <ais523> I fear it'd take more sanity than I have left just to fully understand the question
16:15:00 <ais523> so I hope I don't have to answer it
16:15:19 <elliott> ais523: OK, let me rephrase.
16:15:37 <elliott> ais523: Can I use Feather to create an SKI environment in which SKI are /not/ primitives, but defined, despite the fact that there is no lambda?
16:15:47 <elliott> It can also have RRI or some other similarly Feather Operator, so long as it is also defined.
16:16:13 <ais523> it'd have to be metacircular-by-cheating, I think
16:16:22 <ais523> but it could be done in such a way that there'd be no way to prove it
16:17:40 <ais523> (I'm talking Gregor levels of metacircular, here
16:18:13 <Gregor> HEY, mine totally was not cheating.
16:18:23 <Gregor> The environments were still strictly segregated.
16:18:48 <ais523> I still haven't actually seen it
16:19:12 <ais523> because even after I temporarily broke my no-github policy to try to look at it, I was then unable to see it because github requires JS or something silly like that
16:19:47 <Gregor> Yes, it requires JS for pull requests (which is weird)
16:20:14 <elliott> You have a no /visiting/ GitHub policy?
16:20:27 <ais523> elliott: its ToS used to disallow my browser
16:20:36 <elliott> ais523: you never agreed to its ToS, it only applies to registering
16:20:37 <ais523> it's been changed to be slightly saner since, but it's still a little ridiculous
16:20:45 <ais523> elliott: I know, but it's the principle of the thing
16:20:54 <elliott> Sometimes I wonder if ais523 exists purely to remind everyone in the universe that someone will always make things awkward.
16:21:11 <ais523> elliott: in this case, github
16:22:40 <Gregor> ais523: http://sprunge.us/LSPX
16:23:02 <ais523> Gregor: that's pretty much exactly what I guessed it was
16:23:17 <ais523> not in the details, but in the concept
16:23:17 <elliott> Gregor: You should have pasted it in-channel to be annoying :P
16:23:29 <Vorpal> <ais523> elliott: its ToS used to disallow my browser <-- huh?
16:23:46 <elliott> Vorpal: It forbid blocking ads, despite the fact that there were no ads and as such the clause was inactive.
16:24:01 <elliott> It now no longer does so but ais523 upholds his policy because it's inconvenient, or something.
16:24:05 <Gregor> ais523: Right, and it's TOTALLY NOT CHEATING, it's straight-up metacircularity!
16:24:05 <Vorpal> elliott, okay, that is somewhat silly in the TOS indeed.
16:24:15 <elliott> Also it only applies to registered accounts, which ais523 never created, and so it was doubly-irrelevant.
16:24:18 <ais523> function isValidIdentifierChar(ch, first) { var x = {}; x["x"+ch] = true; x[ch] = true; try { return (eval("(x." + (first?"":"x") + ch + ")") ? true : false); } catch (ex) { return false; } }
16:24:26 <ais523> I don't see why that can't be pasted in-channel
16:24:34 <elliott> function isValidIdentifierChar(ch, first) {
16:24:34 <elliott> // create an object to test this in
16:24:39 <elliott> return (eval("(x." + (first?"":"x") + ch + ")") ? true : false);
16:24:51 <elliott> you stripped valuable things, like the comment
16:24:52 <ais523> elliott: you didn't reformat it first? shame on you
16:24:56 <elliott> you stripped valuable things, like the comment
16:25:07 <elliott> technically i skipped a blank line
16:25:07 <ais523> that wasn't particularly valuable, and besides, it'd have commented out the rest of the line
16:25:16 <elliott> precisely, so your method of pasting was bad
16:25:21 <ais523> I thought about changing the comments to /* */ instead, though
16:25:30 <ais523> but the point is the meaning of the code
16:25:32 <Vorpal> didn't hackego or some other bot in here had a wolfram alpha interface iirc?
16:26:01 <ais523> elliott: no; would you consider posting a disassembly of .NET or jvm code to be lying?
16:26:06 <Gregor> "then try" = most valuable comment ever.
16:26:25 <ais523> and if not, why would you consider preprocessing code mentally slightly to be lying?
16:26:41 <ais523> bear in mind that I've posted Python oneliners in here before
16:26:45 <elliott> Vorpal's filtering of all-caps comments are also lying.
16:27:06 <Vorpal> no, I'm pre-processing them to not be all caps
16:27:12 <ais523> of the form exec " if x:\n do this\n else:\n do that"
16:27:18 <ais523> assuming I've got the Python syntax right
16:27:22 <ais523> it's something like that, anyway
16:27:29 <Vorpal> besides, the only person I would be "lying" to would be myself.
16:27:38 <ais523> (note that this is a great argument for one-char indentation; using any more would make it even harder to read)
16:27:58 <ais523> Vorpal: heh, you have a script/replace that lowercases allcaps comments?
16:28:04 <elliott> ais523: just use Enterprise Braces Syntax instead
16:28:07 <ais523> I have an interrobang remover, but it doesn't actually work
16:28:22 <Gregor> Y'know, even though I've typed "unsigned char" uncountably many times, it makes more sense for it to be signed by default, since that's consistent with all the other types.
16:28:33 <elliott> Gregor: char makes no fucking sense in general :P
16:28:40 <ais523> Phantom_Hoover: is that one interrobang plus four regular question marks?
16:28:49 <ais523> and if not, wtf is my interrobang remover doing?
16:29:11 <elliott> Gregor: There should be a signed "byte" type, and an unsigned "char" type. That's a lie, but that's how it should have been back when ASCII made any sense at all.
16:29:12 <ais523> elliott: no, that wouldn't make a difference
16:29:16 <ais523> it's replacing... all but the first?
16:29:20 <Vorpal> ais523, yes, a few days ago elliott was using upper case for almost every line, this went on for about 5 screens of scrollback
16:29:36 <elliott> Gregor: Really there should be a signed byte type and a unsigned-twenty-one-bits-or-more-with-undefined-overflow "codepoint" type :P
16:29:37 <ais523> you know what IRC clients should do? combine all lines spoken in a row by one person together
16:29:40 <Gregor> elliott: "byte" is too specific a name for C. It should be "reallyshort" :P
16:29:45 <ais523> although it'd mean you'd always be one line behind
16:30:03 <Vorpal> ais523, but actually it is somewhat more advanced, than "all caps" in deciding if to lower case a line or not
16:30:29 <ais523> there was actually an argument on comp.lang.c as to whether short short int; should be added to the standard in preparation for 128 bits becoming a common length for int
16:30:51 <ais523> or, well, 64-bit int, 128-bit long
16:31:02 <ais523> so how do you specify both 16 and 32?
16:32:16 <Vorpal> ais523, I can see an issue here if we get more lengths. We can get up to 128 on the current scheme (int = 32, long = 64, long long = 128) but after that we start getting silly names like long long long long for 512 bits.
16:32:55 <Vorpal> of course, stacking short at the other end would only mitigate the issue temporarily.
16:33:22 <Vorpal> why not move everything and call 16-bit "long char"
16:34:36 <Vorpal> so, short short char, short char, char, long char, long long char, short short int, short int, int, long int, long long int.
16:35:03 <Vorpal> hm is short int valid in current C?
16:35:42 <ais523> it means the same thing as short
16:35:49 <Vorpal> ais523, but char int isn't I presume?
16:36:49 <Vorpal> wait, you could extend the above scheme by applying the same principle as used for a compass orientation like "ENE"
16:37:01 <Vorpal> so you could have long short char and so on
16:40:12 <elliott> why /isn't/ "char int" valid?
16:40:16 <elliott> it is the stupidest of the types.
16:40:27 <Vorpal> elliott, in the name, yes indeed
16:40:37 <elliott> but why isn't it just a modifier like short?
16:44:03 <Vorpal> ais523, another way to solve the issue would be to not define the extra types but instead depend on stdint.h. Which is perfectly fine to implement using some implementation specific way
16:47:51 <oerjan> cheater99: JUST BE HAPPY YOU DON'T KNOW
16:48:27 <cheater99> oerjan: tell me... i want to be prepared
16:48:43 <ais523> you know what's annoying? websites that modify cookies whenever you change which form field has focus
16:49:04 <cheater99> oerjan: also, earlier today i google images'd dons' real name, and i came up with a photo of john holmes, a porno star.
16:49:17 <oerjan> http://okmij.org/ftp/ don't say i didn't warn you
16:49:42 <cheater99> which is even more funnier given the fact that john holmes once used a screen name of eddie haskell.
16:50:01 <cheater99> oerjan: i've actually had that open in another tab already.
16:50:50 <elliott> they were in the type system
16:52:56 -!- aloril has quit (Ping timeout: 240 seconds).
16:53:32 <oerjan> theory: oleg is an FAI which has uploaded us all into its type system
16:56:41 -!- Phantom_Hoover has quit (Ping timeout: 250 seconds).
16:58:44 -!- Phantom_Hoover has joined.
17:05:41 <Vorpal> <oerjan> http://okmij.org/ftp/ don't say i didn't warn you <-- that url reminds me, I had a dream tonight, where someone insisted on that "ftp" was an acronym for "friendly teleport protocol"
17:08:04 <crystal-cola> The reason reddit is so good is because they rewrote their program from lisp to python
17:08:31 <oerjan> this friendly teleport protocol is very reliable, consistently teleporting at least 90% of your body
17:09:29 -!- aloril has joined.
17:09:44 <Vorpal> oerjan, the only issue with the usual teleport devices is that they are not reliable in the presence of plot devices.
17:09:48 <oerjan> crystal-cola: if a random person said that sentence in that way i would consider them trolling
17:13:54 -!- Slereah has quit (Ping timeout: 258 seconds).
17:17:54 -!- zzo38 has joined.
17:19:37 -!- Slereah has joined.
17:33:20 -!- asiekierka has quit (Remote host closed the connection).
17:40:22 -!- Slereah has quit (Ping timeout: 276 seconds).
17:41:03 <elliott> ais523: anyway, ZEPTO has no special forms.
17:41:07 <elliott> well, it does, but all it has is special forms.
17:46:16 -!- Slereah has joined.
17:53:32 -!- ais523 has quit (Remote host closed the connection).
17:53:34 -!- Slereah has quit (Ping timeout: 276 seconds).
17:53:43 <Vorpal> elliott, how could a language have no special forms?
17:53:55 <elliott> By only having primitives.
17:54:02 <elliott> And not evaluating arguments by default
17:54:16 <elliott> i.e. quote is implemented like you'd implement "id".
17:54:22 -!- monqy has joined.
17:54:25 <elliott> And there's a function layer implemented on top, that evaluates all the arguments before passing them.
17:54:37 <Vorpal> elliott, then how would you force evaluation?
17:54:56 <Vorpal> elliott, isn't eval then a special form?
17:55:16 <elliott> Technically it evaluates its argument twice.
17:55:23 <elliott> But only because everything evaluates its argument one less time than normal.
17:55:31 <elliott> (define (id x) (eval x)) (id (+ 9 9)) -> a number I can't type
17:55:45 <elliott> (define (quote x) x) (id (+ 9 9)) -> (+ 9 9)
17:55:56 <elliott> Except that "define" would actually be a different name.
17:56:04 <elliott> Because the normal definition mechanism would automatically add argument-evaluation code in.
17:56:13 <Vorpal> elliott, define is surely a special form?
17:56:25 <elliott> Like I said, ARGUMENTS ARE NOT EVALUATED BY DEFAULT
17:56:33 <elliott> That is the same as normal-Lisp (define '(quote x) 'x).
17:56:44 <elliott> You need PRIMITIVES, but no special forms.
17:56:53 -!- asiekierka has joined.
17:57:09 <Vorpal> elliott, so eval and define would be primitives?
17:57:11 -!- Slereah has joined.
18:04:51 -!- asiekierka has quit (Remote host closed the connection).
18:06:55 -!- auroraxxx9 has joined.
18:08:06 -!- auroraxxx9 has left.
18:27:17 -!- Gregor has quit (Excess Flood).
18:27:25 -!- Gregor has joined.
18:27:51 -!- Gregor has changed nick to Guest8478.
18:27:53 <Guest8478> http://i.imgur.com/IDxMq.png <-- my 77-byte interpreter: Totally portable :P
18:28:15 <elliott> Guest8478: But did you use OpenWatcom to compile it????
18:28:22 -!- Guest8478 has changed nick to Gregor.
18:28:37 <elliott> Use the kind of Watcom that actually runs on DOS :P
18:28:40 <Gregor> And it's a .COM file :P
18:28:42 <elliott> And also install real DOS (Yes, you can do that in DOSBox).
18:28:47 <Gregor> OpenWatcom runs on DOS, it just doesn't have an installer.
18:28:56 <elliott> OK but it doesn't count because that isn't real DOS.
18:28:59 <Gregor> Of course you can do that in DOSBox, it's just pointlessly painful.
18:29:13 <elliott> It's just like using qemu though :P
18:29:27 <Gregor> Except that `dosbox .` = awesomesauce :P
18:29:34 <Gregor> THE POINT IS MY 77-BYTE INTERPRETER WORKS ON 16-BIT DOS :P
18:34:18 -!- asiekierka has joined.
18:34:41 <Vorpal> elliott, hm is openwatcom any good?
18:37:41 <Vorpal> elliott, was that a remark about how I spelled it or was it a remark intended to convey that it is in some way unique/weird/special?
18:38:18 <elliott> Gregor has used it, I haven't (well, I did once, in Windows Ninety-Five.)
18:39:14 <Gregor> Take a compiler that was tolerable for DOS, then make it run on Windows and even Linux.
18:39:27 <Vorpal> Gregor, does that mean the end results suck?
18:39:48 <Gregor> The results are probably just fine, not as good as GCC of course, but decent.
18:39:55 <Gregor> The interface is just ... classique.
18:40:18 <Vorpal> Gregor, oh, let me guess... it uses / for flags even under *nix?
18:40:19 <elliott> Gregor: They prefer "vintage". Like fine wine.
18:40:52 <Gregor> Vorpal: Actually it went whole-hog to - for flags everywhere (I think it still "legacy" accepts / on non-Unix, but the help text has -s), but e.g. the linker takes a linker script.
18:41:04 <Gregor> wlink system dos file lolsomefile file lolsomeotherfile file wtfareflags
18:41:20 <Vorpal> Gregor, um. The GNU linker also takes linker scripts
18:41:36 <Gregor> Vorpal: ld has flags. It takes linker scripts as SCRIPTS, not arguments :P
18:41:52 <Gregor> See command line above :P
18:42:03 <Gregor> Also, and the 32-bit compiler is wcc386
18:42:11 <Vorpal> Gregor, can you link using GNU ld instead?
18:42:18 <Gregor> Umm, probably? Lemme check.
18:42:37 <Vorpal> Gregor, also, hm, does it support C99 nowdays?
18:43:19 <Gregor> BAHAHAHA AWESOME, observe:
18:43:48 <Gregor> OK, hold a bit then observe :P
18:44:13 <elliott> 07:26:18: -!- zzo38 has quit (Quit: Something Russia is famous for: Russians.).
18:44:14 <Gregor> interp: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, not stripped
18:44:51 <elliott> So it's... as bad as gcc, except it uses a reasonable output filename :P
18:45:01 <Gregor> elliott: ... it's the FORMAT you're supposed to be looking at.
18:45:47 <Gregor> It's not an ELF .o (which doesn't REALLY matter, but is pretty lols), and it's not even a 32-bit format (presumably?) :P
18:46:01 <Gregor> So long story short: No, you cannot use GNU ld :P
18:46:11 <Vorpal> Gregor, um to gcc you need to give -c to get object files out
18:46:21 <Gregor> Vorpal: This is not GCC, now is it.
18:46:35 <Vorpal> Gregor, so presumably there is some other flag for it?
18:46:53 <Gregor> Vorpal: The compiler is just a compiler, not a compiler frontend.
18:47:23 <Gregor> (It also includes "owcc" as a compiler frontend, but that's new)
18:47:30 <elliott> <Gregor> It's not an ELF .o (which doesn't REALLY matter, but is pretty lols), and it's not even a 32-bit format (presumably?) :P
18:47:31 <elliott> <Gregor> interp: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, not stripped
18:47:40 <elliott> Looks like a thirty-two bit ELF executable to me?
18:47:46 <elliott> Are you SURE it's not the final binary? :P
18:47:52 <Gregor> I'M - TALKING - ABOUT - THE - .o - FORMAT - YOU - DIPSHIT
18:47:54 <elliott> It has the CPU exactly right.
18:48:17 <Gregor> Obviously it figures out the final format, or it wouldn't even run >_<
18:48:18 <Vorpal> what a strange .o format though
18:48:34 <Vorpal> Gregor, is that .o actually not an executable binary?
18:48:47 <Gregor> OK, I give up on you people.
18:49:59 <elliott> Gregor: at least I give up after one try
18:50:06 <elliott> Vorpal just asks without reading first
18:50:49 <Gregor> Long story short: Open Watcom is the screwiest compiler you can get to run on a modern system without too much difficulty :P
18:50:53 <Vorpal> Gregor, I meant as in "did you try it"?
18:51:27 <Gregor> Vorpal: Are you kidding me? Even if "relocatable" didn't mean "relocatable object file", my kernel wouldn't know how to load it.
18:51:33 <Vorpal> Gregor, BECAUSE it seems so absurd to make the object file format use the flags in the ELF headers so it looks like an executable
18:52:08 <Vorpal> well. It is a damn strange object file, that is my point
18:52:30 <Gregor> That was my point, but you seem to think it's substantially more strange than it is :P
18:53:23 <Gregor> One of my lines didn't go through :P
18:53:29 <elliott> Gregor: That _was_ teh point?
18:53:36 <elliott> OK, I didn't realise it wasn't actually the output binary.
18:53:50 <Gregor> elliott: I didn't get that with the [lolsymbol]s :P
18:54:08 <Gregor> interp.o: 8086 relocatable (Microsoft)
18:54:19 <Vorpal> Gregor, okay *that* explains everything
18:54:28 <Vorpal> I wonder why that line got lost
18:54:31 <Gregor> My apologies for Freenode going "haw I'mma eat that line now"
18:54:34 <Vorpal> <elliott> [dollar] file foo.o
18:54:34 <Vorpal> <elliott> [dollar] file a.out
18:54:45 <Gregor> <Gregor> elliott: I didn't get that with the [lolsymbol]s :P
18:55:09 <Gregor> <elliott> let's talk entirely by quoting each other 8D
18:55:30 <elliott> <Gregor> I'm secretly gay for Vorpal.
18:55:34 <elliott> another line dropped by freenode
18:56:11 <Gregor> <elliott> I'm secretly straight for (female) red slime mold
18:56:27 <elliott> Well, they /are/ delicious.
18:56:43 <Vorpal> Gregor, iirc they have more than two genders?
18:58:43 <elliott> And that is why they are so delicious.
18:58:47 <elliott> HERE I AM MAKING A NETHACK REFERENCE
18:58:51 <elliott> AND EVERYONE IS ALL ASEXUALLYING ME
18:59:23 <Gregor> elliott: You're the one fucking slime molds.
18:59:40 <Vorpal> Phantom_Hoover, "They begin life as amoeba-like cells. These unicellular amoebae are commonly haploid and multiply if they encounter their favorite food, bacteria. These amoebae can mate if they encounter the correct mating type and form zygotes which then grow into plasmodia. [...]"
18:59:45 <Vorpal> I'm not sure what that counts as
19:00:30 <Vorpal> Phantom_Hoover, they reproduce asexually as well as far as I understand
19:02:21 <elliott> Someone please confirm to me that seahorses can in fact impregnate themselves.
19:03:45 <lament> slime molds are so cool
19:03:52 <lament> macroscopic, but single-cell
19:05:39 <elliott> http://www.youtube.com/watch?v=x2CA0UE6yRQ ;; downright pornographic to Gregor
19:12:15 -!- variable has joined.
19:14:52 -!- Wamanuz2 has joined.
19:15:02 -!- Wamanuz has quit (Ping timeout: 258 seconds).
19:16:07 -!- ais523 has joined.
19:24:14 -!- asiekierka has quit (Remote host closed the connection).
19:29:31 <Vorpal> is there any easy way to convert a wavelength in the spectrum (at a given intensity) to a value in sRGB (or the closest approximation if it falls outside sRGB)
19:29:57 <Vorpal> it doesn't have to be perfect, it only has to be good enough to look reasonable
19:30:36 <elliott> that sounds like a hard problem tm
19:30:50 <Vorpal> elliott, hm I suspected that
19:32:33 <Vorpal> elliott, one way would be to use an image of a spectrum as a lookup table. And for the use I have in mind, the intensity can be fixed in advance
19:32:42 <oerjan> you'd think there'd be a table somewhere
19:33:15 <Vorpal> (and interpolate in between values in your lookup table)
19:34:13 <Vorpal> oh google seems to indicate you can do it as a matrix multiplication
19:34:46 <Vorpal> doesn't explain how you go from wavelength to xyz
19:36:31 -!- Slereah has quit.
19:37:11 -!- ais523_ has joined.
19:38:13 <Vorpal> Phantom_Hoover, CIE XYZ colour space yes
19:38:55 <Vorpal> anyway found an article on it
19:38:59 <Vorpal> looks rather complicated
19:39:15 <elliott> Vorpal: So basically it only explains an algorithm for CIE XYZ to sRGB, which has nothing to do with wavelength to anything :P
19:39:34 <cheater99> Vorpal: also, i have finally figured out what your nick means. it's a mutilation of Voralp, which is the general area where bavaria is located.
19:39:37 -!- ais523 has quit (Ping timeout: 250 seconds).
19:39:40 <Vorpal> elliott, except wavelength -> XYZ seems to be the first step
19:39:47 <Vorpal> elliott, I found an article that explains the full thing
19:39:59 <elliott> xyz = wavelength_to_xyz(wl); // implementation left as an exercise to the reader
19:40:10 <Vorpal> elliott, the first article was like that yes
19:40:39 <cheater99> Vorpal: what ever you're doing with color, you'll probably need color space compression
19:40:43 <Vorpal> anyway, I'm not sure I require the full thing. For what I wanted this seems like WAAAY overkill
19:41:08 <elliott> Says the author of cfunge.
19:41:11 <oerjan> http://en.wikipedia.org/wiki/CIE_1931_color_space#Color_matching_functions
19:42:01 <Vorpal> elliott, All I wanted was to use the natural spectrum to colourise datapoints in a graph. It seemed like a good one. More detail than just a red-yellow-green scale or such
19:42:19 <Vorpal> elliott, so yeah, the full blown thing seems like way overkill
19:42:19 <elliott> Overkill is the best kind of kill
19:42:21 <Phantom_Hoover> Vorpal, you can only inject wavelength into a spectrum.
19:42:32 <Vorpal> elliott, I think you mean "there is no kill like overkill"?
19:42:40 <oerjan> you realise that almost _all_ natural spectral colors are outside of rgb, right? :D
19:42:41 <Vorpal> (tvtropes made that up, not me)
19:43:07 <Vorpal> Phantom_Hoover, hm yes? I know it doesn't give intensity
19:43:34 <Gregor> I saw "color matching function" and thought "who's on my TURF?"
19:43:42 <Vorpal> oerjan, as long as it looks plausible. Doesn't have to be fully accurate.
19:44:03 <Vorpal> oerjan, but good enough that you would say "oh, that looks like a spectrum"
19:47:39 -!- ais523_ has changed nick to ais523.
19:48:35 <Vorpal> elliott, anyway, it seems quite straightforward (though tedious): http://www.fourmilab.ch/documents/specrend/
19:48:55 <elliott> IS THERE ANYTHING THAT JOHN WALKER HASN'T GOT HIS GRUBBY MITTS IN
19:49:17 <elliott> Original author of AutoCAD, owner of a way too big website.
19:49:42 <elliott> As well as SO MUCH OTHER SHIT
19:49:42 <Vorpal> elliott, you mean http://www.fourmilab.ch/ ? Yeah it seems rather comprehensive.
19:50:32 <Vorpal> elliott, oh, a random number service
19:50:37 -!- Slereah has joined.
19:50:54 <elliott> Vorpal: More relevantly, the first true RNG on the internet.
19:50:57 <elliott> Except maybe that lava lamp-based one.
19:51:08 <elliott> LavaRnd is only two thousand.
19:51:13 <elliott> Yeah, hotbits is the oldes.
19:51:48 * Gregor continues to lol at the numberlessness.
19:51:54 <Gregor> I'm surprised you didn't type one99six
19:52:35 <elliott> Like BEFORE THEY INVENTED DIGITS
19:52:47 <Vorpal> elliott, hm where does lava lamps come into lavarnd?
19:53:41 <elliott> BTW: LavaRndtm does not use LAVA LITE ® lamps. LAVA LITE lamps were used in SGI classic lavarandtm. See the difference between SGI classic lavarand and our LavaRnd for details. For information on what LavaRnd does use, see the LavaRnd process in detail.
19:53:58 <elliott> Theirs is bullshit because it doesn't actually use lava light.
19:54:12 <elliott> But http://www.lavarnd.org/news/lavadiff.html
19:54:22 <elliott> From 1997 through 2001,[2] there was a web site at http://lavarand.sgi.com/ demonstrating the technique. Landon Curt Noll, one of the originators, went on to help develop LavaRnd, which does not use lava lamps. Despite the short life of lavarand.sgi.com, it is often cited as an example of an online random number source.[3][4]
19:54:59 <oerjan> what we need is clearly a random number source using actual _lava_
19:55:40 -!- copumpkin has changed nick to elitist.
19:56:38 <Vorpal> elliott, anwyay, what is your opinion of John Walker?
19:57:01 <Vorpal> elliott, easy to hit keys in wrong order
20:01:31 <ais523> elliott: gah, Have I Got News For You just put up a subtitle-like thing at the bottom of the screen saying "#HIGNFY", without elaboration
20:01:42 <ais523> and it seems very likely to refer to Twitter
20:01:59 <ais523> which means that Twitter have successively captured the # followed by letters notation in the public imagination
20:02:27 <Vorpal> why do we use sRGB still. It is so limited. Something significantly larger should be easily possible with modern monitor technology.
20:03:10 <Vorpal> ais523, I would assume IRC channel
20:03:30 <ais523> Vorpal: without a server specified?
20:03:36 <ais523> I mean, on here it'd be obvious
20:03:45 <ais523> but on a TV program, there's no reason to guess any IRC server over any other
20:03:46 <Vorpal> ais523, yeah it's strange.
20:03:55 <Vorpal> wait, it was a TV program?
20:04:09 <ais523> is, in fact, it's on at the moment
20:04:16 <elliott> lol at HIGNFY having an IRC channel
20:04:26 <Vorpal> ais523, is it some news program or?
20:04:32 <elliott> It is totally a news program.
20:04:37 <elliott> It has people talking about the news.
20:04:48 <Vorpal> elliott, so, meta-news?
20:04:52 <oerjan> that settles it, then.
20:04:55 <elliott> Yes. Exactly. You have it exactly right.
20:05:00 <elliott> thats all there is to say on the matter
20:05:12 <Vorpal> based on what you said, I googled it
20:06:22 <oerjan> Nytt på nytt er et norsk TV-program, og er en norsk versjon av det britiske satireprogrammet Have I Got News for You, [...]
20:07:04 <elliott> wow norwegian is just like a bad version of english
20:07:15 <elliott> http://upload.wikimedia.org/wikipedia/commons/3/32/Nyttpaanytt.jpg
20:07:31 <elliott> i like how they only have like three scraps of newspaper there as opposed to the hundreds in HIGNFY
20:07:58 <elliott> oerjan: google translate detected "sier du det" as swedish
20:08:01 <elliott> apparently it means "you finance it"
20:08:11 <elliott> "Fabric of the program is delivered partly by members of the author quartet The rocking Seismologists ."
20:08:14 <Vorpal> elliott, I see none: http://en.wikipedia.org/wiki/File:HIGNFY_set_empty.jpg
20:08:15 <elliott> that is the best band name ever
20:08:32 <oerjan> `translatefromto sv en sier
20:08:34 <elliott> Vorpal: They make up the letters, I think. Or, what, that looks wrong. Whatever.
20:08:38 <elliott> oerjan: THE ROCKING SEISMOLOGISTS
20:08:52 <Vorpal> <oerjan> `translatefromto sv en sier <-- what
20:08:59 <Vorpal> oerjan, "sier" is not Swedish
20:09:00 <oerjan> Vorpal: is that actually correctly translated? O_O
20:09:48 -!- elitist has changed nick to copumpkin.
20:09:56 -!- crystal-cola has quit (Quit: leaving).
20:10:09 <Vorpal> oerjan, nope, not in SAOL
20:10:30 <Vorpal> oerjan, what language is it really?
20:11:47 <Gregor> "no en sier" => "no one says" <trollface/>
20:12:00 <Gregor> `translatefromto no en sier
20:12:06 <elliott> <Gregor> "no en sier" => "no one says" <trollface/>
20:12:10 <elliott> Oh man I was wondering wtf was going on X-D
20:12:20 <elliott> Gah why didn't I add translatefrom.
20:12:27 <Gregor> `file bin/translatefrom
20:12:28 <HackEgo> bin/translatefrom: ERROR: cannot open `bin/translatefrom' (No such file or directory)
20:12:36 <Ilari> APNIC (IPv6 1x/32): /32 to Australia.
20:12:37 <Vorpal> oerjan, for Swedish "says" would be "säger"
20:13:21 <oerjan> also the "rocking" there has nothing to do with rocks, it means the movement
20:14:05 <elliott> oerjan: I don't care. Best name.
20:14:07 <Vorpal> oerjan, so it has nothing to do with music either?
20:14:14 <elliott> oerjan: What's a better translation of the name?
20:14:39 <elliott> Because, you know, The Rocking Seismologists is the best band name in English, maybe it's boring in Norwegian.
20:15:10 <oerjan> except neither is quite precise
20:15:21 <Vorpal> oerjan, what is the Norwegian word?
20:15:28 <elliott> The Shivering Seismologists?
20:15:41 <elliott> is it like shaking in fear
20:15:41 <ais523> coppro: there are opinion polls coming out on the alternative vote vote here in the UK; they seem to be massively in favour of first-past-the-post, unfortunately
20:15:54 <elliott> ais523: the FUD is in full swing
20:15:58 <Vorpal> elliott, no, "rocking" as in a rocking boat would
20:16:06 <ais523> at least, that's what all the journalists are saying; they aren't giving the actual results, though
20:16:09 <Vorpal> at least gunga in Swedish has that meaning
20:16:37 <oerjan> yeah that's it, it's just rocking has the music connotation which gyngende doesn't
20:16:51 <Vorpal> ais523, so... people don't want the voting system to change?
20:16:58 <elliott> How on earth is that "wtf"
20:17:11 <elliott> Most people don't have a problem with it, and it's easy to FUD
20:17:26 <elliott> Imagine AV being proposed in the US :P
20:17:26 <ais523> coppro: the real problem is that the Liberal Democrats really want STV, rather than AV
20:17:34 <Phantom_Hoover> elliott, HIGNFY is on, and they have a Tory MP who's FUDing.
20:17:36 <coppro> but they should just take AV
20:17:37 <Vorpal> elliott, AV? Audio Video?
20:17:38 <oerjan> <elliott> BUDGET <-- strangely it is one of norway's most popular tv shows, but of course that doesn't mean they need to waste money...
20:17:39 <ais523> and so they aren't trying too hard to push it
20:17:41 <coppro> and campaign hard for it
20:17:44 <elliott> Phantom_Hoover: BUT THEY HAVE A TWITTER HASH MARK
20:17:44 <ais523> Phantom_Hoover: you're watching it too?
20:17:47 <coppro> if they don't get AV they won't get STV
20:17:48 <elliott> coppro: everybody hates the lib dems
20:17:51 <ais523> I'm not watching it deliberately, but someone else in the room is
20:17:52 <elliott> coppro: they should probably just shut up
20:18:00 <elliott> ais523: HIGNFY is awesome.
20:18:12 <ais523> coppro: I suspect they're going on the basis that if AV passes, they'll never be able to persuade anyone to change the voting system /again/
20:18:22 <Vorpal> coppro, what would STV be?
20:18:29 <coppro> Vorpal: single transferable
20:18:34 <ais523> AV is a special case of STV where you only elect one person
20:18:39 <oerjan> elliott: oh and the "fabric" is a rather bad translation of "stoff" in this case
20:18:45 <coppro> ais523: yeah, but if it doesn't pass, how are they going to get to STV if people rejected AV?
20:18:45 <Phantom_Hoover> elliott, she's saying "with AV there'll be a coalition EVERY SINGLE TIME!"
20:18:53 <elliott> Phantom_Hoover: I like how that makes no sense at all.
20:19:02 <elliott> coppro: they should clearly switch to my totally-untested Recursive Condorcet method
20:19:24 <coppro> describe moar so I may steal the idea and write a paper
20:19:29 <Vorpal> elliott, huh. I thought you were a fan of stochastic?
20:19:36 <elliott> Vorpal: I am, but that has even less of a chance ;D
20:19:37 <Gregor> http://www.theonion.com/articles/a,20076/ "... it is also fine to masturbate to the mentally challengeda reversal of previous guidelines and an affirmation that all persons may provide erotic inspiration, regardless of cognitive capacity."
20:19:42 <Phantom_Hoover> elliott, and then she went for "3 countries use AV, the rest use FPTP and get along fine."
20:19:58 <elliott> coppro: Condorcet is basically mathematically perfect apart from the fact that it sometimes fails to give a result.
20:20:06 <Phantom_Hoover> Whereupon Hislop responded "Most of the world is starving, that's a pretty good argument for not eating."
20:20:11 <elliott> coppro: So, here's the SILLY ALGORITHM:
20:20:34 <elliott> coppro: Run any Condorcet method. If it gives a result, we're done. Otherwise,
20:20:43 <ais523> elliott: you mean "the Condorcet method"
20:20:46 <coppro> elliott: define "any" Condorcet method
20:20:53 <ais523> there is only the one if you fail when it doesn't give a result
20:21:04 <ais523> as the only difference between Condorcet-based methods is the tiebreak rules
20:21:11 <elliott> coppro: Run any Condorcet method. If it gives a result, we're done. Otherwise,
20:21:17 <oerjan> elliott: in your quote above
20:21:22 <elliott> Rank every (ranking,candidate) pair by the sum of all their rankings.
20:21:38 <elliott> As in, a candidate sorts higher than another if the sum of all the rankings given to them is greater than the other's.
20:21:50 <elliott> Pick the last element of the resulting list, i.e. the least popular candidate by that criterion.
20:21:58 <elliott> Say they are called "rubbish".
20:22:11 <ais523> elliott: there might not be one, though
20:22:15 <elliott> Replace every pair (ranking,rubbish) with (ranking,almostrubbish), where almostrubbish is the second-last element of that list.
20:22:21 <elliott> ais523: you mean there could be multiple, or what?
20:22:26 <ais523> the resulting list almost certainly won't be unique, and may well not even be well-founded
20:22:40 <elliott> ais523: you're doing that stupid thing again
20:22:45 <elliott> where you assume I mean the result of the Condorcet process somehow
20:22:50 <elliott> when I'm just talking about the raw rankings given in the input
20:23:09 <ais523> so if I mark candidates 1, 3, 5, 7, my vote has more of an influence than if I mark them 1, 2, 3, 4?
20:23:22 <Vorpal> elliott, what if there are three persons being voted for and everyone get exactly 1/3rd of the votes say?
20:23:33 <elliott> ais523: Well, OK, yes, flatten everything before doing it.
20:23:34 <ais523> you're adding together rankings, right?
20:23:36 <elliott> By flatten I mean linearise.
20:23:48 <coppro> elliott: please write out a formal description of the algorithm
20:24:04 <elliott> <elliott> coppro: Run any Condorcet method. If it gives a result, we're done. Otherwise,
20:24:05 <elliott> <elliott> Rank every (ranking,candidate) pair by the sum of all their rankings.
20:24:05 <elliott> <elliott> As in, a candidate sorts higher than another if the sum of all the rankings given to them is greater than the other's.
20:24:06 <elliott> <elliott> Pick the last element of the resulting list, i.e. the least popular candidate by that criterion.
20:24:08 <elliott> <elliott> Say they are called "rubbish".
20:24:10 <elliott> <elliott> Replace every pair (ranking,rubbish) with (ranking,almostrubbish), where almostrubbish is the second-last element of that list.
20:24:23 <elliott> Vorpal: yes it is, it's just not pseudocode
20:24:24 <Gregor> Isn't instant-runoff voting Condorcett-compatible plus fairly practical?
20:24:45 <Vorpal> elliott, still: <Vorpal> elliott, what if there are three persons being voted for and everyone get exactly 1/3rd of the votes say?
20:25:17 <elliott> Vorpal: Then the result of the algorithm is undefined because that never fucking happens.
20:25:24 <elliott> A more reasonable objection is that two people get only one vote each or whatever.
20:25:37 <elliott> In which case you just need to pick one to reassign arbitrarily, it doesn't really matter at all.
20:25:42 <elliott> coppro: Argh, my description is wrong.
20:25:47 <elliott> coppro: Run the Condorcet method.
20:26:04 <Vorpal> elliott, hm. So it doesn't always give results
20:26:06 <elliott> If it fails, then find the least-liked candidate X (where liked is determined by summing with the orders of the rankings, like I explained).
20:26:07 <coppro> I now failed to produce a result
20:26:21 <coppro> What do you mean "summing with the orders of the rankings"
20:26:28 <elliott> I EXPLAINED THAT PERFECTLY LAST TIME
20:26:43 <elliott> GIVEN A CANDIDATE C, CONSIDER ALL VOTES (R,C)
20:26:46 <elliott> SUM ALL THE RS OF THESE VOTES
20:26:50 <elliott> THEN SORT ALL CANDIDATES BY THAT SUM
20:27:04 <elliott> coppro: Now, consider every ballot that has a vote for X.
20:27:22 <elliott> coppro: Then look at their preference one higher.
20:27:29 <elliott> (If it is their top vote, consider their second instead. TOTAL HACK LOL)
20:27:50 <elliott> coppro: Say the one higher preference is (RA,Y) and the preference for X is (RB,X).
20:28:01 <elliott> Reassign the (RB,X) pair to be (RA,X) (yes, causing a duplicate ranking).
20:28:07 <elliott> Once this is done for all candidates that voted for X, re-run the algorithm.
20:28:14 <Gregor> 'When one of the first two interpretations is used, the method can be restated as: "Disregard the weakest pairwise defeat until one candidate is unbeaten."' <-- this is minimax, but I thought it was instant-runoff ... now I'm not sure what the distinction is, but this is what I was thinking of.
20:28:35 <elliott> coppro: Apart from the hack that I noted, it's a pretty good algorithm :P
20:28:55 <elliott> coppro: It basically says "if Condorcet doesn't give a result, reassign all votes for the least-liked candidate".
20:29:22 <Gregor> Oh right, instant-runoff is just straight-up voting amongst the #1s, then remove the worst #1 and repeat.
20:29:27 <Gregor> Yeah, that's totes different, loller.
20:34:09 <Vorpal> hm you can do a completely fair system easily if you don't care about parties or the geographical location of the voters. Just make the whole country one riding. Then tally the votes. Sort candidates by number of votes. Give the most favoured person a place in the parliament and remove him/her from the list. Repeat until the parliament is full.
20:34:46 <Vorpal> the same work for parties if you don't consider individual candidates
20:34:49 <coppro> Vorpal: no, that's not fair
20:34:55 <coppro> Vorpal: strategic voting abounds
20:35:30 <Vorpal> coppro, oh? If there are no parties it works fine, no?
20:36:08 <coppro> what if there is a candidate who I think will be on the edge of getting in
20:36:23 <coppro> my favored candidate is nearly certain to win
20:36:49 <coppro> do I vote for my preferred candidate or try to keep the other guy out of the legislative body?
20:36:50 <Vorpal> well, your favorite candidate surely? If there are just those two that you gave
20:37:05 <Vorpal> coppro, how would you do the latter
20:37:15 -!- Mathnerd314 has joined.
20:37:24 <coppro> Vorpal: by voting someone else to lower the ranking of the guy I hate
20:38:15 <Vorpal> coppro, there is a large risk that won't work though
20:38:56 -!- aloril has quit (Ping timeout: 240 seconds).
20:39:08 <coppro> Vorpal: so? I lose nothing by doing it
20:39:23 <coppro> any voting system where my optimal move is not to vote for my preferred candidate is broken
20:39:26 <Vorpal> coppro, you would if enough people think like you
20:39:47 <Vorpal> coppro, what if nearly everyone who favours that candidate you favored do the same
20:39:57 <elliott> <coppro> any voting system where my optimal move is not to vote for my preferred candidate is broken
20:40:03 <Vorpal> but yes I see the issue
20:40:16 <elliott> Apart from Condorcet, which breaks that as soon as you introduce tiebreakers :P
20:40:24 <Vorpal> elliott, actually straight up "who get the most votes" work if you are electing a single person
20:40:42 <elliott> Vorpal: That is so egregiously wrong that I can't even think of anything to say.
20:40:48 <coppro> elliott: Some voting systems are less broken than others
20:41:02 <elliott> coppro: Four votes good, two votes bad.
20:41:07 <Vorpal> elliott, okay, so what about presidential elections, what is a fair voting system there?
20:41:19 <elliott> Vorpal: I'm sorry, but if you'll excuse me, I am busy gawping.
20:41:24 <elliott> It is an intensive process.
20:41:26 <coppro> Vorpal: see Arrow's Theorem
20:51:57 -!- aloril has joined.
20:53:35 <elliott> hmm, can mmap be used to align allocations to four bytes?
20:55:13 <Vorpal> elliott, anonymous mapping?
20:55:24 <Vorpal> elliott, I think it will be aligned to a page in memory
20:55:31 <elliott> Right. Which is annoying, because these allocations will be small.
20:55:33 <Vorpal> not sure if that is guaranteed
20:55:38 <elliott> Gigantic heap allocation with copying GC it is.
20:56:04 <elliott> "mark-and-don't-sweep" Best GC style ever.
20:56:25 <Vorpal> elliott, building a freelist?
20:56:35 <Vorpal> elliott, doesn't glibc malloc() align to 8 bytes?
20:56:40 <elliott> A mark and don't sweep garbage collector, like the mark-and-sweep, maintains a bit with each object to record whether it is white or black; the gray set is either maintained as a separate list (such as the process stack) or using another bit. There are two key differences here. First, black and white mean different things than they do in the mark and sweep collector. In a "mark and don't sweep" system, all reachable objects are always black. An o
20:56:40 <elliott> bject is marked black at the time it is allocated, and it will stay black even if it becomes unreachable. A white object is unused memory and may be allocated. Second, the interpretation of the black/white bit can change. Initially, the black/white bit may have the sense of (0=white, 1=black). If an allocation operation ever fails to find any available (white) memory, that means all objects are marked used (black). The sense of the black/white bi
20:56:40 <elliott> t is then inverted (for example, 0=black, 1=white). Everything becomes white. This momentarily breaks the invariant that reachable objects are black, but a full marking phase follows immediately, to mark them black again. Once this is done, all unreachable memory is white. No "sweep" phase is necessary.
20:56:44 <Vorpal> of course it has a few bytes of overhead
20:56:44 <elliott> <Vorpal> elliott, doesn't glibc malloc() align to 8 bytes?
20:56:50 <elliott> I need the bottom three bits to be zero.
20:56:58 <elliott> So I need to align to eight, actually.
20:57:06 <Vorpal> elliott, posix_memalign,
20:58:26 <elliott> Maintaining my own heap == ten times the fun.
20:58:41 <Vorpal> elliott, why is memalign so gross?
20:58:59 <elliott> And it's in the fucking "ADVANCED REALTIME" section.
20:59:07 <elliott> "The posix_memalign() function is part of the Advisory Information option and need not be provided on all implementations."
21:00:54 <elliott> "Such a tangled web. It is a web full of flaming irons and mixed metaphors."
21:00:58 <Vorpal> elliott, valloc, it has the most complicated description in the man page of what defines make the prototype visible
21:01:20 <Vorpal> (_XOPEN_SOURCE >= 500 ||
21:01:20 <Vorpal> _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) &&
21:01:20 <Vorpal> !(_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600)
21:09:47 <elliott> spot the mistake that gave me a "duplicate case" error
21:10:26 <monqy> mmm nice going there
21:11:00 <Gregor> Every time I've needed aligned memory I've done it with mmap of double then munmap twice :P
21:11:55 <elliott> Gregor: How does that even make any sense.
21:12:00 <Vorpal> elliott, oh, so writing another lisp?
21:12:07 <elliott> Vorpal: Just porting Zepto from Python to C.
21:12:16 <elliott> It is a stupidly simple language, so this will not be difficult.
21:12:27 <Gregor> elliott: If you mmap (size you need + alignment) you're guaranteed to have the aligned area within the allocated space.
21:12:44 <Gregor> Since every situation I've ended up needing this has involved alignment to the size I need, I just allocate double.
21:13:01 <Vorpal> Gregor, why munmap at all?
21:13:35 <elliott> Oh, allocate double... Hmm.
21:13:38 <Gregor> ................. munmap can unmap a partial range, free can't ................ also wtf, malloc() for huge spaces = retarded.
21:13:43 <elliott> Gregor: Does that even make sense though???
21:13:48 <elliott> I didn't realise you could violate page-alignment like that.
21:13:59 <elliott> That seems to Defeat the Point.
21:14:06 <Gregor> elliott: I never use it to violate page alignment, size-I-need is always a power of 2.
21:14:08 <Vorpal> Gregor, anyway, mmap will only allocate on a previously unused page
21:14:24 <elliott> Gregor: Maybe I am misunderstanding page alignment.
21:14:26 <Vorpal> Gregor, so if your allocation is less than a page large it is rather wasteful
21:14:31 <elliott> Won't that be stupidly fragmented for shitloads of small allocations?
21:14:48 <Gregor> This is what I use when I need /HUGE/ spaces.
21:14:53 <Vorpal> elliott, it would be absurdly stupid for your case
21:15:57 <elliott> Hmm, yay, I think I can do a copying GC without going over every object twice, but it involves maintaining a huge stack :P
21:16:45 <Vorpal> Gregor, why would you ever need alignment when doing huge stuff that doesn't start at a page boundary?
21:16:52 <Vorpal> or that starts at something larger than a page boundary
21:17:55 <Gregor> Vorpal: Because I want the beginning to have all the lower bits be zero.
21:17:59 <Gregor> So I can always get to the beginning with a mask.
21:18:13 <Gregor> This == supafast GC pools.
21:18:27 <elliott> Gregor: Not as supafast as the Zepto Silly Allocation SystemXXX
21:18:34 <elliott> I should make it ZEST somehow.
21:18:41 <elliott> Zepto Egregiously Silly Tallocationsystem.
21:19:04 <oerjan> zepto zeriouzly zilly zallocationzyztem
21:19:16 <Gregor> The non-native-English-speaker-professors are considering renaming the lab I'm in from SSS (Secure Software Systems (???)) to The CLAP (Compilers and Languages At Purdue)
21:20:22 <elliott> Compiler-Understanding Native Teleologists
21:21:50 <Gregor> Vorpal: Because we have nothing whatsoever to do with security.
21:21:52 <elliott> Because the current name is creeper.
21:21:57 <Gregor> Vorpal: The expansion is a much better name :P
21:22:11 <elliott> Gregor: Call it the CALAP in protest.
21:22:12 <Vorpal> Gregor, then why specifically non-native speakers?
21:22:23 <elliott> Gonorrhea - Wikipedia, the free encyclopedia
21:22:24 <elliott> Gonorrhea (also colloquially known as the clap) is a common sexually transmitted infection caused by the bacterium Neisseria gonorrhoeae. ...
21:22:24 <oerjan> incidentally the university here in town has the english name Norwegian University of Science and Technology. apparently there was a hasty reordering involved.
21:22:28 <Gregor> Vorpal: By not knowing the issue, you're proving my point about non-native speakers :P
21:22:38 <elliott> Gregor: Might that be an Americanism :P
21:22:41 <Vorpal> elliott, you know, you can "clap your hands"
21:22:47 <Gregor> elliott: Oh? I thought it was all Englishes.
21:22:49 <Vorpal> elliott, that was what I thought of
21:23:14 <oerjan> (also the computer nvg club had nuts.edu registered for a while)
21:23:17 <elliott> Gregor: Well, I've never heard about it, but I don't really talk about gonorrhea :P
21:27:19 <elliott> You know what sucks? Hash tables.
21:27:32 -!- MigoMipo has quit (Read error: Connection reset by peer).
21:27:33 <elliott> I AM GOING TO USE LINKED LISTS INSTEAD
21:28:32 <oerjan> no use a sorted array, then you can use binary search
21:28:37 <Phantom_Hoover> elliott, I AM SORRY ARE HASH TABLES NOT THE BEST OF THE MUNDANE FETCH MODI
21:28:52 <Vorpal> elliott, try an self-balancing binary tree?
21:29:00 <Vorpal> elliott, an AVL tree is dead-easy to implement
21:29:39 -!- pikhq has joined.
21:29:45 <elliott> Vorpal: Too many algorithms.
21:29:48 <elliott> LINKED LISTS ARE THE BEST.
21:29:51 <Phantom_Hoover> Vorpal, but that's not a particularly interesting fetch modus.
21:30:52 <Vorpal> elliott, what? You mean, too many variants to choose from?
21:31:04 <Vorpal> elliott, go for AVL tree, it is a good general purpose one
21:31:14 <Vorpal> elliott, dude, I have done an AVL tree in C in half an hour...
21:31:34 <elliott> Phantom_Hoover: Yes. All the codes are required for an AVL tree.
21:31:59 <Vorpal> elliott, anyway want my AVL tree implementation? It just does the basics, leave allocation and so on to the application
21:32:55 <Vorpal> elliott, it has tiny overhead thus. you define a struct that starts with the tree node header struct.
21:33:27 <Vorpal> elliott, what are you using it for
21:33:40 <elliott> WHICH I REFUSE TO IMPLEMENT WITH A HASH TABLE
21:33:53 <elliott> This is Zepto, performance is irrelevant, all that matters is some sort of vaguely-defined sense of aesthetics based around being slow.
21:34:11 <Vorpal> you... implement a hash table with a linked list?
21:35:51 <zzo38> http://en.wikipedia.org/wiki/File:Tsumeshogi-classic.svg I invented a ASCII notation for tsumeshogi that one on Wikipedia would use the notation: 3H.3hzh1.4C1.1L
21:36:51 <zzo38> (B=foot soldier, D=fragrance chariot, F=honor horse, H=silver general, J=gold general, L=angle mover, N=flying chariot, Z=king; use next letter of alphabet for promotion)
21:36:54 -!- elliott_ has joined.
21:37:14 <zzo38> Oops I made a mistake. It should be: 3H.3hzh1.4C1.1M
21:37:22 <elliott_> can someone ghost elliott for me
21:37:31 -!- elliott has quit (Disconnected by services).
21:37:35 -!- elliott_ has changed nick to elliott.
21:37:39 -!- elliott has quit (Changing host).
21:37:40 -!- elliott has joined.
21:37:43 <Vorpal> <elliott_> can someone ghost elliott for me
21:37:43 <Vorpal> <elliott_> i can't type its password
21:37:54 <Vorpal> who would know your password except you
21:37:57 <elliott> * elliott has quit (Disconnected by services)
21:38:13 <Vorpal> elliott, didn't you do it?
21:38:16 <zzo38> How can you your normal account without password?
21:38:26 <elliott> Vorpal: how could I? I can't type my password.
21:38:32 <Vorpal> zzo38, missing a verb?
21:38:38 <elliott> zzo38: Ubuntu automatically logs in by default. also, you accidentally a verb.
21:38:39 <Vorpal> elliott, copy and paste
21:38:52 <elliott> i'm not so insecure as to store my password on disk
21:39:31 <Vorpal> <elliott> zzo38: Ubuntu automatically logs in by default. also, you accidentally a verb. <elliott> i'm not so insecure as to store my password on disk
21:39:50 <elliott> your insult is unacceptable
21:40:01 <elliott> nobody else has this computer apart from me!
21:40:06 <zzo38> What opinion about this kind of tsumeshogi notation? Is there anything you think wrong?
21:40:37 <Vorpal> -elliott- VERSION xchat 2.8.8 Ubuntu <-- look in ~/.xchat/_servlist.conf or some such file for it. ls ~/.xchat*/*serv* should find it anyway
21:40:57 <elliott> don't be silly, i don't use my account password for irc
21:41:25 <Vorpal> elliott, who said you did
21:41:29 <Vorpal> + [elliott] is logged in as elliott
21:41:44 <elliott> yes, my client does that automatically.
21:41:57 <Vorpal> elliott, and that is where it stores the password
21:42:06 <Vorpal> elliott, which is the relevant password for ghosting
21:42:16 <elliott> As we have already gone over, someone else ghosted it, not me.
21:42:19 <Vorpal> oh wait, you meant the system password
21:42:33 <Vorpal> elliott, shouldn't you urgently change the password then
21:43:06 <elliott> Why? Because someone was kind?
21:43:22 <elliott> Gregor: Oh man, interior pointers -- the best kind??
21:43:37 <Phantom_Hoover> <elliott> i'm not so insecure as to store my password on disk
21:43:44 <Vorpal> elliott, anyway, iirc you can ghost as long as you are logged in to the account. Without using the password I mean
21:44:16 <elliott> Vorpal: But elliott_ isn't linked.
21:44:27 <Vorpal> elliott, but actually you don't need that
21:44:29 <elliott> Phantom_Hoover: That was total lies, I use my account password for IRC and everything else too. I'm just trolling Vorpal and it seems to be working brilliantly ;D
21:44:44 <elliott> He didn't notice I used an exclamation mark, proving that I had an on-screen keyboard up.
21:44:46 <Vorpal> elliott, if your client does /ns accountname password
21:45:08 <Vorpal> elliott, no I didn't consider that. *shrug*
21:45:21 <elliott> Vorpal: I use the server password "fg9axm6 :elliott".
21:45:38 -!- Zuu has quit (Ping timeout: 276 seconds).
21:46:12 <Vorpal> elliott, I'm not going to test :P
21:46:56 <Vorpal> elliott, and the rest of the channel?
21:47:05 <elliott> We are all nice people here.
21:47:15 <elliott> Except for sshc, but he is GONE FOREVER.
21:47:40 <Vorpal> elliott, and the logs are public
21:48:10 <Vorpal> anyway I know you are not idiotic enough to post your true password
21:49:43 <elliott> Gregor appears NONPLUSSED about INTERIOR POINTERS.
21:51:19 <elliott> http://software-lab.de/doc64/structures I love how unreadable this is.
21:51:46 <elliott> Oh, I see how it's done. Maybe.
21:52:19 <elliott> It's still an interior pointer though FFFUUUUU
21:52:21 <elliott> I wonder how they handle it.
21:54:16 <Vorpal> <elliott> http://software-lab.de/doc64/structures I love how unreadable this is. <-- err, what is it for?
21:54:24 <elliott> Internal structures of PicoLisp that I am copying BUT BETTER.
21:56:23 <elliott> The problem being that NIL has to point to (NIL . NIL), so I have no idea how I can avoid interior pointers.
21:57:58 <pikhq> Interior pointers make the garbage collector sad.
21:59:40 <pikhq> Comes at a cost, of course.
21:59:41 <Vorpal> elliott, wait, why does NIL point to (NIL . NIL)?
22:00:08 <elliott> Vorpal: Because (CAR NIL) => NIL and (CDR NIL) => NIL.
22:00:23 <elliott> As seen in every Lisp apart from Scheme, which does not have NIL.
22:01:29 <Vorpal> elliott, you could special case car and cdr code instead?
22:02:04 <Vorpal> elliott, or you could special case GC handling of NIL
22:02:47 -!- pikhq_ has joined.
22:02:56 -!- pikhq has quit (Disconnected by services).
22:02:59 -!- pikhq_ has changed nick to pikhq.
22:14:54 <Vorpal> elliott, why wouldn't it?
22:24:08 -!- Phantom_Hoover has quit (Quit: Leaving).
22:35:34 <elliott> "You're the dum8est omniscient person I ever met."
22:35:35 -!- pikhq has quit (Quit: Lost terminal).
22:39:01 -!- TeruFSX2 has joined.
22:43:21 <Vorpal> elliott, well, you could put NIL in a special non-GCed place. Every reference of nil pointing to it
22:43:34 <Vorpal> elliott, then any references to it will point to it
22:43:46 <Vorpal> elliott, no need to track interior pointers inside this nil object
22:43:53 <Vorpal> elliott, what is the issue?
22:44:17 <elliott> Vorpal: What do the interior pointers have to do with NIL?
22:44:37 <Vorpal> <elliott> The problem being that NIL has to point to (NIL . NIL), so I have no idea how I can avoid interior pointers.
22:44:41 -!- TeruFSX2 has quit (Read error: Connection reset by peer).
22:44:51 <elliott> Because NIL also has to be a symbol, and symbols have names, and so the string "N I
22:44:58 <elliott> "N I L" must be in there somewhere.
22:45:02 -!- TeruFSX2 has joined.
22:45:09 <Vorpal> elliott, you don't use an atom table?
22:45:23 -!- oerjan has quit (Quit: Good night).
22:45:32 <elliott> That has nothing to do with this.
22:47:23 -!- ais523 has quit (Remote host closed the connection).
22:53:55 <elliott> Vorpal: Or does an atom table (Erlang terminology...) somehow prevent storing symbol names in symbols??
22:54:17 -!- Sgeo has quit (Read error: Connection reset by peer).
22:54:31 <variable> a naive implementation of war is O(2^N) worst case - right?
22:54:45 * variable wants to make sure my analyses skills are not going bad
22:55:13 <variable> elliott: war, as in the card game
22:55:21 -!- augur has quit (Remote host closed the connection).
22:57:05 -!- TeruFSX2 has quit (Read error: Connection reset by peer).
22:57:12 <elliott> but being surprised when you get punned is forbidden here :D
22:57:29 -!- augur has joined.
22:57:33 <elliott> why, if oerjan was here...
22:57:41 <elliott> "Phil Sophie" -- what Google Translate thinks the German word "Philsophie" is in English
23:03:56 -!- pikhq has joined.
23:05:49 * pikhq wonders at byuu's seeming adoration for including far too many headers...
23:06:23 * variable points pikhq to https://code.google.com/p/include-what-you-use/
23:07:29 <pikhq> In essence, he makes a per-module header file which includes every single thing that anything *in the module* uses, and then each compilation unit includes that.
23:09:00 <elliott> variable: looks C++-specific
23:09:09 <elliott> or at least biased, because it just talks about .cc files, no .c
23:09:18 <pikhq> elliott: Probably C and C++.
23:09:28 <pikhq> It's using clang, after all.
23:09:31 <elliott> pikhq: no such thing, they are completely different languages.
23:09:40 <pikhq> elliott: I *know that*.
23:09:47 <pikhq> elliott: But clang handles both C and C++.
23:09:51 <elliott> since such a program has to do semantic language (are any of these objects or structures used in the including file?),
23:09:55 <elliott> then the C and C++ logic must be separate
23:09:58 <pikhq> elliott: Hence a tool using it for lexical analysis *probably* handles both.
23:10:09 <elliott> lexical analysis isn't the hard part, though :)
23:10:14 <pikhq> (though, of course, not necessarily)
23:10:39 <elliott> by "C and C++" I suspect it means "the subset of C code that has the same semantics when used as C++ code"
23:10:43 <pikhq> "For instance, we only run this on C++ code, not C or Objective C."
23:10:46 <pikhq> I stand corrected.
23:11:13 <pikhq> https://code.google.com/p/include-what-you-use/wiki/InstructionsForUsers
23:11:44 <elliott> "WARNING: include-what-you-use only analyzes .cc (or .cpp) files built by make"
23:11:48 <elliott> i bet they just tested it on one C file
23:11:54 <elliott> and decided that counts as support
23:12:05 <pikhq> Actually, they never say they support c.
23:12:11 <pikhq> .cc is a C++ extension.
23:12:20 <elliott> "A tool for use with clang to analyze #includes in C and C++ source files"
23:12:25 <pikhq> Also, this almost certainly would give up on bsnes's source code...
23:12:26 <elliott> that's the single place they claim it supports C
23:13:18 <elliott> HOW DOES ONE GC WITH INTERNAL POINTERS EVER
23:13:32 <pikhq> Anyways. As it is, I could change a single header and cause a rebuild of the entire tree.
23:13:49 <elliott> pikhq: let's be fair, that applies to every C++ program :)
23:13:52 <pikhq> A large amount of the rebuilding would be unnecessary.
23:14:18 <pikhq> elliott: Okay, true, C++ definitely makes it such that that's a common case.
23:15:00 <pikhq> And byuu doesn't do himself any favors by NIH'ing the STL.
23:15:47 <variable> <elliott> variable: looks C++-specific ---> patch it
23:15:55 -!- Lymia has joined.
23:16:09 <elliott> I neither have endless free time or the patience to deal with maintainers :)
23:16:22 <elliott> OK, I do have endless free time, but it's taken up by all the actually interesting[one] code I'm writing.
23:17:06 <elliott> Its progress is impeded by the fact that it's written in C and I can't produce asterisks.
23:17:13 <elliott> variable: Bargain basement Lisp.
23:17:15 * pikhq isn't even kidding: bsnes is in C++ and never uses the STL.
23:17:40 <Gregor> <elliott> HOW DOES ONE GC WITH INTERNAL POINTERS EVER // I know, right?
23:17:50 <elliott> Gregor: No but seriously how do people do it.
23:17:52 <elliott> IT DOES NOT MAKE SENSE TO ME.
23:18:10 <Gregor> Sorry, couldn't tell ya', I honestly don't know myself.
23:18:32 <variable> Gregor: pikhq any thoughts on my question re war: a naive implementation of playing through the game is O(N^2) ?
23:18:37 <elliott> Gregor: BUT MY ARCHITECTURE DEMANDS IT.
23:18:53 <elliott> Gregor: OK technically it doesn't demand an interior pointer, just a pointer to something that has a pointer tacked on one before it.
23:19:00 <Gregor> variable: I don't remember (or care :P ) how that card (?) game works.
23:19:03 <elliott> Which is kind of the same thing except that the interior pointer is aligned, and the tacked-on one isn't.
23:19:48 <Gregor> elliott: I can only guess that they don't allocate over card boundaries, and to figure out the start of an object they go to the start of a card and follow a linked list to the correct object.
23:19:56 <variable> Gregor: I don't care how the card game works per se. I just want to make sure my skills are not going insane ;-|
23:20:02 <elliott> Gregor: Not even using cards bro ;D
23:20:22 <elliott> I'm using the Zepto Bargain Basement Copying Collector And Heap Expander, made by Fly By Wire industries.
23:20:24 <Gregor> elliott: Then s/card/page/ or s/card/pool/ or s/card/whatever-your-allocation-block-thingy-is/
23:20:40 <Gregor> elliott: Just use GGGGC >: )
23:20:43 <elliott> Gregor: But my pool is a jumble of bytes, I have no idea how I could go over it like that :P
23:20:56 <elliott> GGGGC isn't Bargain Basement and it can't align my allocations to eight bytes. Can it?
23:20:59 <Gregor> elliott: Well then to support interior pointers you PROBABLY need a better pool.
23:21:10 <Gregor> elliott: It could be adapted to.
23:21:12 <pikhq> Gregor: The card "game" is essentially an algorithm performed upon two piles of cards.
23:21:20 <elliott> When I traverse, I know the type.
23:21:22 <Gregor> elliott: In fact, it does on 64-bit platforms.
23:21:26 <elliott> So I know when something is a symbol.
23:21:35 <elliott> So I know when something has an object pointer before it.
23:21:41 <pikhq> Gregor: There is literally no nondeterminism in it outside of the initial shuffle.
23:21:45 <variable> pikhq: yeah. many (most?) game theorists will say it is not a game because there is no choice
23:21:49 <elliott> My design is so shitty. I love it.
23:22:21 <variable> Gregor: https://secure.wikimedia.org/wikipedia/en/wiki/War_(card_game)
23:22:34 * Gregor refuses to read on the grounds that no.
23:23:02 <variable> pikhq: any thoughts on the complexity ?
23:23:15 <pikhq> variable: I could buy O(n^2) worst-case.
23:23:48 <elliott> Gregor: Sweet, if I offer type-tag casting, my whole GC and everything breaks :D
23:23:52 * variable is thinking about how to formally prove it
23:24:33 <pikhq> "If the order the winning cards are placed is fixed it is possible to create an infinite loop wherein neither side will win and the game will not end."
23:24:54 <Gregor> I was just thinking that might be possible.
23:24:57 <pikhq> Seems worst-case is _|_
23:25:05 <elliott> Gregor: What, the breakingness? :P
23:25:13 <variable> pikhq: o.O; lets say random placement
23:25:17 <Gregor> elliott: No, never-ending war (what is it good for?)
23:25:25 <elliott> variable: The RNG is your enemy. Worst case is O(inf).
23:25:27 <Gregor> variable: "Worst case" + "random placement" = you're talkin' bullshit.
23:25:40 <elliott> Gregor: Uh huh!... absolutely INFINITE AMOUNTS OF NOTHING
23:25:49 <variable> Gregor: I didn't even think about that
23:26:35 <Gregor> I imagine, based on nothing whatsoever, that the average case is something around O(nlogn), but it could be as high as O(n^2)
23:26:57 <elliott> #esoteric: where the experts come to bullshit.
23:27:09 <variable> pikhq: strictly speaking I arrived at the question seeing if I could "solve" the game without going through the complete game (given omniscience over the cards)
23:27:27 * variable wonders if that is possible at all
23:27:37 <variable> Gregor: any pointers to start thinking about it?
23:29:45 <Gregor> Twitter would be a lolsy place for submissions to a programming golf tournament :P
23:30:16 <elliott> Using Twitter: So faggy??????
23:30:35 <Gregor> Yeah, it's pretty terrible :P
23:30:41 * elliott immediately tracks down and follows Gregor.
23:30:44 <Gregor> But hey, I HAD to register to spam the Lawson video wall!
23:31:04 <elliott> http://twitter.com/#!/CaptainHats
23:31:14 <elliott> You sort of said it in-channel yesterday.
23:31:28 <elliott> Although presumably you were posting or planning to post on another account, since you found it necessary to give your username.
23:31:45 <elliott> Which would be ridiculous if you were already posting it as CaptainHats, which would be a bad idea because that's a terrible username.
23:32:08 <pikhq> And has insufficient G's.
23:32:39 <Gregor> And my point is I was asking how to tweet a "challenge" with an added "tweet your responses back to me", but in very few characters :P
23:33:04 <elliott> Gregor: Uhh... you don't :P
23:33:19 <elliott> Anyone who doesn't realise to reply to you is too stupid to golf :P
23:33:46 <Gregor> A) The thing is, this goes up on the Lawson video wall, not straight into my hordes of non-followers, B) not golfing
23:34:05 <elliott> (A) OK, so like I said, not delivering it through blah :P
23:34:09 <elliott> (B) Well it should be golfing?
23:34:38 <elliott> http://twitter.com/#!/lawsonwall/followers ;; everyone Gregor knows
23:34:52 <pikhq> Non-followers? You mean that you've got it set up so that you talk to everyone who *doesn't* follow you?
23:35:17 <Gregor> <elliott> (A) OK, so like I said, not delivering it through blah :P // this ... this is not a sentence.
23:35:18 <elliott> Suddenly, Gregor amasses the largest number of followers EVAR
23:35:37 <elliott> Gregor: Your face isn't either but I don't quote it, append the comment characters used in all the worst languages, and snark at it.
23:35:51 <elliott> Gregor's face // Haha, what is this, answer: it is shit
23:36:14 <Gregor> I want to reply to your (A)
23:36:19 <Gregor> Because I have no idea what it says.
23:36:29 <elliott> And if you don't reply, that means I'm right.
23:36:46 <elliott> Gregor: "OK, so like I said, not delivering it through [at]CaptainHats but actually not Twitter at all so aiuhfgjlksdtjhgfdsknfgjdksbvckjcd bvjcknxvb dszjiznvbckxoijfhgziyvws9 x,.v/"
23:36:53 -!- FireFly has quit (Quit: swatted to death).
23:37:03 <elliott> Think I hit FireFly by mistake there while I was mashing my keys.
23:37:19 <Gregor> elliott: I deliver it via twitter to the lawson wall (it shows things tagged properly), people respond to me via twitter.
23:38:19 -!- zzo38 has quit (Quit: Q).
23:38:49 <pikhq> Everyone knows the only valid comment sequence is LALAlALALalaTHISIsACOMment{}--///*\n*/##{--}BANGSPLAT
23:39:00 <pikhq> Case-sensitive, of course.
23:39:05 <elliott> That's how I mark all my comments.
23:39:09 <elliott> i++; LALAlALALalaTHISIsACOMment{}--///*\n*/##{--}BANGSPLAT increment i by one
23:39:48 <elliott> pikhq: Terminated by TALPSGNAB}--{##/*\n*///--}{tnemMOCAsISIHTalaLALAlALAL, right?
23:40:05 <elliott> Where the \n THERE is a literal newline.
23:40:18 <pikhq> elliott: No, no, no.
23:40:35 <pikhq> You have to remove the newline to get the comment variant that doesn't go to the end of the line.
23:40:52 <pikhq> But otherwise, you've got the idea.
23:45:00 -!- Sgeo has joined.
23:50:54 <pikhq> "The issue presented in this case is whether a resolution banning all 'First Amendment activities' at Los Angeles International Airport (LAX) violates the First Amendment."
23:51:10 <pikhq> Quote from a real Supreme Court case.
23:51:49 <pikhq> For obvious reasons, the court unanimously found that banning all 'First Amendment activities' was a violation of said amendment.