00:00:06 <elliott> Ilari: Now you'll get Gregor started. 
00:00:15 <Gregor> I don't defend the DOM. 
00:00:29 <elliott> Yep, but you do defend JS as being separate from the DOM :P 
00:00:31 <Gregor> The DOM is a mess of incompatible garbage thrown in from a bunch of different places with incompatible APIs. 
00:00:59 -!- poiuy_qwert has quit (Read error: Operation timed out). 
00:01:29 <Sgeo> Aren't things like jQuery supposed to paper over the DOM? 
00:05:29 <quintopia> is there anyway to put collapsible spoilers into the wiki? 
00:06:11 <quintopia> because ais's explanation of waterfall3 is almost as long as the program it describes. 
00:06:25 <elliott> quintopia: yes, it's called a scrollbar 
00:06:33 <elliott> his explanation is valuable, no need to compact it 
00:06:52 <elliott> it needs more formatting though. 
00:06:53 <quintopia> listen. i need a way to compact that wall of text 
00:07:03 <elliott> it looks like it has them but the formatting is breaking them 
00:07:20 <quintopia> that's like an entire article's worth of info :/ 
00:07:35 <quintopia> some articles are only a few paragraphs 
00:07:53 <elliott> fixed the paragraph breaks. could do with a bit more, but that's ais' job 
00:08:05 -!- TLUL has joined. 
00:08:10 <elliott> it takes about 1s to scroll past it with a scroll wheel, dude :P 
00:08:12 <quintopia> imagine if every program that goes on that page from now on has that much description :/ 
00:08:26 <elliott> quintopia: that will only apply if every program that gets added is that complex 
00:08:32 <elliott> in which case, a long description is warranted 
00:08:53 <elliott> if we get like five programs with longcat-is-long descriptions after another, we can make them all spoiler-type things if possible, or separate articles 
00:08:58 <elliott> but for now I hardly think it matters :P 
00:09:05 <elliott> ais isn't exactly known for his concision, though :) 
00:09:20 <elliott> don't do that, i mentally pronounced feyn as feign 
00:09:59 <elliott> lol, i clicked the trace link for waterfall3 
00:10:11 <elliott> the animation is really slow though 
00:10:16 <elliott> i guess the warning is useful then :P 
00:10:22 <elliott> my browser hates me with that page open 
00:10:29 <elliott> Gregor: THIS IS WHY YOU NEED TO MAKE THE TRACE SCROLLABLE 
00:10:59 -!- cheater00 has joined. 
00:11:41 <quintopia> i would be down with moving the list of major programs to its own article. There's no doubt that that section is as long as the rest of the article and is only going to get longer. 
00:11:54 -!- Mathnerd314 has quit (Disconnected by services). 
00:13:10 <elliott> quintopia: btw so far your new page organisation has driven one person to ask in here what on earth the winning condition _is_ >:D. shouldn't mention that, i promised to rewrite it after all. 
00:13:38 <quintopia> yes, yes you did. but you seem to be far too lazy. 
00:14:12 <quintopia> (also, that person must have been stupid, considering how blatantly i spelled out the winning condition) 
00:14:16 -!- poiuy_qwert has joined. 
00:14:30 -!- cheater- has quit (Ping timeout: 246 seconds). 
00:14:36 <elliott> quintopia: blatantly, but when you Emphasise Absolutely Everything, you emphasise nothing and it gets lost in noise 
00:14:43 <elliott> also, it was http://esolangs.org/wiki/User:calamari 
00:15:12 <elliott> oh, http://esolangs.org/wiki/Jeffry_Johnston is maybe a better link 
00:17:53 <quintopia> well, i didn't know that anything in particular needed to be emphasized over anything else, so i just organized it the same way a manual for a board game would organize it, and emphasized nothing. 
00:19:13 <elliott> quintopia: well, you "blatantly spelled" everything out :P 
00:19:25 <elliott> did Gregor ever implement the fixed-point scoring? 
00:20:08 <quintopia> the top scorer would no longer be in the 50-60% range 
00:22:21 -!- wareya has quit (Quit: leaving). 
00:22:42 -!- wareya has joined. 
00:24:03 <quintopia> i don't know which code to edit or how to get eigenvectors in C 
00:25:28 <elliott> quintopia: btw, I strongly disagree that it's most useful to consider the tape to have negative numbers 
00:25:38 <elliott> I find that interpretation extremely unintuitive 
00:26:54 <quintopia> so you think it should be a setting in egojsout to have the tape at the bottom and all the decoys above the line? 
00:27:40 <elliott> quintopia: well, that's how *I* would have done it. but: 
00:27:47 <elliott> I think it's OK for visualisation 
00:27:53 <elliott> but I never think about the tape that way, and I don't think most people do either 
00:28:10 <elliott> I don't see "negative" values in egojsout either, anyway, it's just an arbitrary division from my POV 
00:28:11 -!- iconmaster_ has joined. 
00:28:19 <elliott> but then, I don't really think the animations are *that* useful 
00:28:31 <elliott> (I think the traces are visual enough while providing information useful to /fix/ your program) 
00:28:47 -!- rodgort has quit (Quit: ERC Version 5.3 (IRC client for Emacs)). 
00:28:52 <elliott> (but then that's from the perspective of a cheating little single-target author :P) 
00:28:55 <quintopia> i just find it easier to think about it as "distance from zero" since settign something to zero is the goal 
00:29:02 <iconmaster_> Hi guys. The craziest thing happened to me today. 
00:29:15 <elliott> iconmaster_: You... gave birth? 
00:29:53 <iconmaster_> I have an essay in English class. For fun, I passed the essay through a Markov text generator and printed it. 
00:30:50 <iconmaster_> She looked at it for 10 minuotes, read it all, and told me it was a 'really great essay.' 
00:31:22 <Sgeo> Maybe she's not a native English speaker... 
00:31:45 <Sgeo> ^^techncailyly irrelevant 
00:31:58 -!- rodgort has joined. 
00:32:06 <iconmaster_> Its at my sxhool computer, ill pastebin it tomorrow 
00:32:11 <elliott> <elliottcable> I’m going to sound like a dick for saying this, but I really wish I’d registered elliott when I had the chance. Then I could be even more of a dick now and just ghost him. <,< 
00:34:52 <iconmaster_> An exerpt from the printed essay:  Napoleon was sucsessful in Spain touched on these honorable or corrupt and made his brother Europe. He improved cheap food, drinks, establishing stop his life was promoted the Hôtel des Invalides. 
00:35:12 <elliott> oerjan: http://www.cs.berkeley.edu/~megacz/coq-in-ghc/HelloWorld.pdf 
00:35:24 <elliott> iconmaster_: That's basically the best two sentences ever written in the English language right there. 
00:35:33 <elliott> Especially "sucsessful", though that one was probably your innovation :P 
00:36:06 <elliott> oerjan: A proof that main = putStrLn "Hello, world!" (or similar) is well-typed, in natural deduction style. 
00:36:11 <elliott> (http://www.cs.berkeley.edu/~megacz/coq-in-ghc/) 
00:37:50 <iconmaster_> Another one:  After his departure tge Peninsular leader- Honor, Courage, and Honor, Courage and honorable leader- Honor, could be charmless. 
00:38:17 <elliott> Ah yes, the famous tge Peninsular leader, whose motto was Honor, Courage, and Honor, Courage. 
00:39:39 <elliott> iconmaster_: No no no, that was his honorable leader, Honor. 
00:39:43 <elliott> Honor could be charmless, but usually chose not to. 
00:40:40 <iconmaster_> @ the first quote: HAVE YOU TURNED A SIBLING INTO ANY CONTINITES LATELY? 
00:42:23 <elliott> Quite interesting that we're all (well, OK, a good portion of this channel is) living in Napoleon's brother. 
00:42:50 <elliott> I wonder if this channel is actually predominantly European... the idlers must throw off the stats a bit. 
00:43:02 <elliott> But then three very-regulars are American, so maybe the idlers are the key to European purity. 
00:44:54 <Sgeo> elliott, but beginning my fear is a very Siney thing to do! 
00:46:57 <oerjan> quintopia: so what will you do if the eigenvector isn't unique *MWAHAHAHA* 
00:47:32 <oerjan> (probably not very likely, but...) 
00:47:34 <Sgeo> oerjan's been taking "Lose Your Marbles" too seriously 
00:47:40 <Sgeo> [I loved that game once] 
00:47:49 <oerjan> Sgeo: never heard of it 
00:49:12 <quintopia> oerjan: that's not possible i think 
00:49:56 -!- iconmaster_ has quit (Read error: Connection reset by peer). 
00:50:08 <oerjan> quintopia: if the warriors divide into two blocks that always draw against each other >:) 
00:50:14 <quintopia> i know the transition function is aperiodic. pretty sure that it's also irreducible since every program plays every other program 
00:50:40 <quintopia> does that make two non-communicating classes though? 
00:51:01 <oerjan> it was my impression that it would 
00:52:41 <quintopia> it can be modified slightly so that draws are a benefit to the underdog, and that would remove that possibility. however, i'm willing to gamble on the vanishingly small odds that that would happen. 
00:54:24 <Sgeo> In case anyone cares, this is probably the fourth time Other has asked me "Who are you?" 
00:58:17 * oerjan keeps thinking of The Other from Girl Genius 
00:58:21 <quintopia> oerjan: actually, i think it already does that. if they draw, each program pays half 1/n of its score to the other. thus, if the two blocks always tie, they are still completely interconnected. so yeah, that wouldn't ever happen. the eigenvector is unique. 
00:58:30 <oerjan> just be glad she doesn't squish you like the bug you are 
00:59:13 <Sgeo> I am not an error! 
00:59:26 <oerjan> quintopia: um i thought it said no points were exchanged in the case of a draw 
01:00:45 <oerjan> also it doesn't actually help paying both ways if the actual matrix entry ends up 0 
01:01:14 <quintopia> oerjan: ohhhh, you're saying that EVERY SINGLE ROUND of EVERY MATCH between the two classes is a draw 
01:01:23 <oerjan> Sgeo: The Other would consider you one 
01:01:24 <quintopia> i thought you just meant every match was a draw 
01:01:36 <elliott> Other is a terrible name. I deem her to be TA-TK, That Alluded-To Kitty-kat. 
01:01:36 <oerjan> quintopia: yeah every round.  i didn't say this was likely :D 
01:01:47 <elliott> KT-AT 2: Electric Boogaloo is also acceptable. 
01:04:10 -!- zzo38 has joined. 
01:04:58 <oerjan> quintopia: it would happen if a warrior is submitted twice, wouldn't it?  still doesn't turn the entire matrix into two blocks, though 
01:05:22 <quintopia> oerjan: wouldn't averaging together all the eigenvalues take care of it? 
01:05:50 <oerjan> quintopia: yeah but which average do you take 
01:06:33 <oerjan> Sgeo: quintopia's matrix-based BF Joust scoring system 
01:06:45 <quintopia> oerjan: the scores don't have to make sense man! as long as the final leaderboard shows the top warrior of each class as outranking all the other warriors in the same class, i call it a success 
01:07:07 <quintopia> (and so on down the line, of course) 
01:07:41 <quintopia> a straight mean of the 1-valued eigenvectors would get you that 
01:08:39 <quintopia> (which is to say, the mean of the basis of the 1-valued eigenspace) 
01:10:22 <elliott> Design overview of the Tunes Migration Subproject: "Modules are migrated according to heuristics. These heuristics are computed according to static and dynamic feedback." 
01:11:10 <Sgeo> I thought Tunes was dead? 
01:11:38 <oerjan> just very, very static 
01:12:31 <quintopia> oerjan: it took you way too long to notice i didn't sign the scoring post btw. i realized i didn't sign it like 30 minutes after i posted it, but it took you half a month :P 
01:12:46 <oerjan> quintopia: perhaps you could weight each eigenvector according to its number of non-0 coordinates 
01:12:53 * oerjan swats quintopia -----### 
01:13:18 -!- poiuy_qwert has quit (Read error: Operation timed out). 
01:15:10 -!- poiuy_qwert has joined. 
01:15:33 <quintopia> oerjan: so that the champion of the larger class gets more credit? what if the largest class is one mediocre program and a bunch of shitty programs designed to lose to it but draw with every other program? 
01:15:56 <quintopia> what if all the programs are shitty? 
01:16:03 <quintopia> what if all the programs are shudder? 
01:16:10 <oerjan> quintopia: it's just that i think that is closest to your description of "assign equal points to all warriors, then iterate" 
01:16:53 <oerjan> it fails if there's a warrior that always loses, though, since its coordinate would get 0 always 
01:17:39 <quintopia> where both classes have only 1 good program 
01:17:48 <quintopia> they both have exactly 1 non-0 coordinate 
01:18:32 <oerjan> however you could say that if a warrior always loses, you should simply throw it out completely 
01:19:01 <quintopia> that is what we do anyway, isn't? that's how suiciding-as-deleting is made to work 
01:19:03 <oerjan> and then that weighting gives the result, i think 
01:19:08 <elliott> the tunes critique of Scheme is fun 
01:19:29 <elliott> <oerjan> however you could say that if a warrior always loses, you should simply throw it out completely 
01:19:29 <elliott> <quintopia> that is what we do anyway, isn't? that's how suiciding-as-deleting is made to work 
01:19:34 <elliott> it only happens on the _next_ submit 
01:19:40 <elliott> because whenever a program is added, the bottom one is thrown off 
01:19:45 <elliott> and < always goes to the bottom 
01:20:19 <quintopia> elliott: then how do we get less than the maximum number of programs on the hill? i think all suiciders get deleted after their score is posted 
01:20:34 <elliott> quintopia: we don't, usually 
01:20:43 <elliott> quintopia: check report.txt in some seconds: 
01:20:52 <elliott> !bfjoust WHOAAAAAA_IM_STILL_ALIVE_YEAAAAAH < 
01:21:01 <oerjan> quintopia: maybe if there's a tie for the bottom? 
01:21:18 <quintopia> same difference for what we're considering though 
01:21:29 <oerjan> yeah throwing out all 0 would be that too 
01:21:51 <Gregor> The hill always adds new warriors, then reports the result, THEN throws away any low ranking adversaries. 
01:22:00 <quintopia> and when you write the leaderboard, you put all the zeroes at the bottom in whatever order. 
01:22:49 <oerjan> elliott: accountability? 
01:23:04 <oerjan> you'll have immediate losers at least registered that way 
01:23:42 <Gregor> So the report will have "more" than the limit whenever new ones are added. 
01:23:42 <Gregor> (It's not really more, since I already kicked them off, they're just putzing around 'til somebody touches it again :P ) 
01:23:57 <Gregor> elliott: So that you can always at least be shown on the report :P 
01:24:05 <Gregor> Otherwise it may seem like nothing even happened if you add a shitty competitor. 
01:24:23 <elliott> Gregor: It'll make sense once you get the absolutely-fucking-terrible result back :P 
01:24:30 <elliott> Also, "any low ranking adversaries" -- what definition of low ranking? 
01:24:55 <quintopia> Gregor: do you know which is the most standard library for doing diagonalization in C? 
01:25:13 <Gregor> elliott: Beyond the hill size limit. 
01:25:16 <elliott> quintopia: http://cantor.org/ 
01:25:34 <EgoBot> Score for elliott_WHOAAAAAA_IM_STILL_ALIVE_YEAAAAAH: 0.0 
01:26:21 <elliott> quintopia: http://libgeorg.cantor.org/ 
01:26:27 <elliott> libgeorg, from the cantor project 
01:26:34 <elliott> great for diagonalization. 
01:26:50 <elliott> quintopia: WHOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOSSSSSSSSSSSSSSSSSSSSSSSSHHHHHHHHHHHHHHHHHHHHHHHHHH 
01:26:55 <elliott> gale force fuckin' WIND of whoosh 
01:27:59 * oerjan swats elliott -----### 
01:28:35 <elliott> LAPACK is the "industry standard" thing. 
01:28:44 <elliott> but Gregor was very adamant about not using LAPACK in a fuckin' bf joust scoring system. 
01:28:46 <Sgeo> Yesterday, my statistics professor was trying to get us to understand how there's an infinite amount of numbers between two numbers 
01:28:49 <elliott> It'll certainly be fast :-P 
01:29:36 <Sgeo> And he did the whole "Divide into two unequal pieces thing, etc. etc.". I mean, sure, that's good enough for teaching, and it is adequate, but.. I guess it bothers me that it doesn't illustrate everything. I think 
01:29:46 <Sgeo> No, I did not complain 
01:29:53 <Sgeo> There's nothing to complain about 
01:30:03 <Sgeo> I think I'll just shut up now. 
01:30:50 <quintopia> i feel like every high schooler should be given a completely sequence of Hilbert's Grand Hotel problems in calculus. 
01:31:06 <quintopia> up to the point of showing 2^N is uncountable 
01:39:01 <zzo38> I want to see what is differences in different processors which best way of machine codes to reverse a C string in-place? 
01:40:45 -!- pingveno has quit (Ping timeout: 276 seconds). 
01:41:58 -!- pingveno has joined. 
01:43:04 -!- poiuy_qwert has quit (Ping timeout: 246 seconds). 
01:43:36 -!- poiuy_qwert has joined. 
01:48:13 -!- pikhq has quit (Ping timeout: 240 seconds). 
01:48:16 -!- pikhq_ has joined. 
01:50:21 <invariable> quintopia: don't kill their chances of *enjoying* that type of math by teaching it in high school 
01:50:51 <elliott> Perhaps quintopia would change the rest of high school too :-P 
01:51:07 <coppro> easy solution: reduce the halting problem to it 
01:51:39 <invariable> elliott: I would eliminate high school; move university earlier; and start having students doing research from yr 1 
01:52:03 <quintopia> i would do high math like lockhart 
01:52:03 <elliott> invariable: Year 1 as in, first year of any school at all? 
01:52:17 <elliott> invariable: I think you'll find that a good portion of students would not be interested in doing research ... 
01:52:23 <quintopia> already i'm making it more fun...the infinite hotel is fun! 
01:52:28 <invariable> elliott: erm - I was thinking yr 1 of new university; also it wouldn't be _required_ 
01:52:42 <Sgeo> "We tried to put a Mardi Gras mask on and ended up with a Mardi Gras subnet mask. Only residents on Bourbon St. can connect now." 
01:52:45 <elliott> invariable: Lame! Year 1 of schooling! :p 
01:52:48 <elliott> Really, a *good* reform of the schooling system would require the full cooperation extremely well-educated, rational-minded parents. 
01:52:57 <elliott> And those are in extremely short supply. 
01:53:17 <invariable> elliott: then again my dream world students would not be anti-learning because they wouldn't have been through was passes for education 
01:53:57 <elliott> I firmly believe that children could be advancing at a much, much faster rate than they do now, but it would require exceptional parenting. 
01:54:13 <invariable> I think most of calculation should not be taught 
01:54:22 <elliott> (A large part of our current schooling system's brokenness is that we try and teach things that require logical thought, like mathematics, without even touching on the subject of logical thought itself.) 
01:54:22 <invariable> and programming should be taught instead 
01:54:49 -!- augur has quit (Remote host closed the connection). 
01:54:58 <elliott> Of course having explicit "logic lessons" isn't going to work, so you have to figure out how to teach logical thought itself from scratch -- and that's not easy. 
01:55:33 <invariable> elliott: it is not easy - but not hard. Encourage *questions* and work with students on developing those questions 
01:55:34 <elliott> ...aaand this may provide a good clue why the more intelligent tend not to particularly want kids: gotta do it right! 
01:55:47 <invariable> also remember that younger kids tend to think concretely 
01:55:50 <elliott> invariable: Good luck explaining a fallacy to a kid, though. 
01:56:18 <elliott> Once you teach them one, the rest are probably much easier. 
01:56:41 <elliott> The failure to do so leads to mass pandemics like religion ;) 
01:57:25 <invariable> elliott: I can't find it now - but I read an article about a third grade class publishing a research paper 
01:57:37 <Zwaarddijk> there's few people as annoying as atheists that are irrational 
01:57:42 <Zwaarddijk> because they have no excuse for being irrational 
01:57:51 <Zwaarddijk> I grasp why religious people fail at understanding it 
01:57:56 <elliott> Zwaarddijk: see richard dawkins forum >:) 
01:58:16 <elliott> I'm quite happily unaware. 
01:58:26 <Zwaarddijk> where the majority of people from the rd forum went 
01:58:30 <elliott> It's quite a shame because Richard Dawkins himself is a fine guy. 
01:58:32 <invariable> elliott: yeah - there was a massive fallout with the moderators 
01:58:47 <Zwaarddijk> where rationality only is tolerated some days 
01:59:02 <Zwaarddijk> in fact, any claim that makes a religion look bad is automatically true 
01:59:19 <Zwaarddijk> so if I claim that Moses raped Mickey Mouse in front of his daughter 
01:59:30 <Zwaarddijk> that claim would probably be held to be true by a majority there 
01:59:49 <elliott> Everyone knows the Bible is infallible. 
02:00:51 <elliott> This channel has such a high rate of mentions of "Hitler". 
02:01:01 <elliott> * Topic for ##unavailable is: You've tried to join an unavailable channel. Perhaps the group was never here or has moved off-network ( http://freenode.net/policy.shtml#termination ). Check their website for more information. Your client may be flapping in and out of channel; in this case, check with channel staff. The channel may be clone-infested; please consult freenode network staff. 
02:01:04 <elliott> #hitler: BANNED ON FREENODE 
02:01:43 <zzo38> I can create Hitler channel in my own server if you request it and have good reason for it. 
02:01:51 <zzo38> But you should specify good reason at first. 
02:01:57 <elliott> zzo38: For discussion of Hitler. 
02:02:31 <zzo38> OK, just wait a few minutes while I configure it 
02:02:54 <zzo38> (If I do configure it, that is...) 
02:06:33 <zzo38> Hopefully I did configure it and I am not just lying. 
02:06:40 <zzo38> O no, now it is bad because Hitler used it. 
02:07:21 <Sgeo> It's kind of sick to say this, but I'm.. morbidly amused by " She was buried, at her request, next to her father at the Church of St. Mary Magdalene in Hucknall, Nottingham." 
02:07:50 -!- pikhq has joined. 
02:07:55 -!- pikhq_ has quit (Ping timeout: 250 seconds). 
02:08:23 <zzo38> The #hitler channel in Freenode you cannot join, you must be invited. And you cannot be invited either even if you KNOCK. Because, they configured that channel to be broken and unusable that's why. 
02:08:31 <Gregor> HitlOS would be a good name for an OS. 
02:08:51 <oerjan> the final solution to all your OS problems 
02:09:13 <zzo38> Gregor: OK. Find someone whose name is Hitler and then write "this operating system is bad because Hitler used it" and then write that such logic is wrong logic and that such thing does not make it bad. 
02:09:19 <elliott> just to make sure even fewer people use that 
02:09:38 <elliott> invariable: see, this is what we need to be teaching our children!111 
02:09:41 <elliott> I demand Hitler be used as the example 
02:09:49 <Zwaarddijk> a Swedish newspaper in the early 40s found a guy with the family name Hitler, and another with the name Stalin, and had them meet up 
02:10:06 <elliott> Zwaarddijk: and then they got married and adopted kids 
02:10:12 <elliott> This is my brother, Hitler Stalin. 
02:10:37 <Sgeo> Hitler supposedly liked dogs 
02:11:13 <Zwaarddijk> but .. the fact that they were union members, makes you think, doesn't it? 
02:11:18 <elliott> STALIN MEETS HITLER FOR A CHAT 
02:11:40 <zzo38> I read that someone their children was named "Hitler" so they wanted to order a cake but the cake service refused to write "Hitler" on it, so they should write it themself at home, instead 
02:11:49 <Gregor> Surely by now any living people with the name Hitler have it because they're white supremacists, and not because it's a long-lasting family name. 
02:11:57 <elliott> Naming your child Hitler. What a brilliant idea! 
02:12:02 <elliott> If it was their first name, that is. 
02:12:16 <elliott> To be honest, I think the family name Hitler is pretty much fucked at this point :P 
02:12:21 <Gregor> elliott: The child's name was actually something like Adolf Hitler <last name> 
02:12:34 <invariable> zzo38: erm no; #hitler -> ##unavailable 
02:12:36 <Sgeo> Campbell? Cambell? 
02:12:37 <zzo38> O, so Hitler was their middle name. 
02:12:38 <elliott> What's a stereotypically Jewish surname Gregor 
02:12:41 <elliott> invariable: BROKEN AND UNUSABLE 
02:12:52 <Gregor> elliott: Anything ending in "stein" 
02:13:02 <elliott> Was the kid named Adolf Hitler Goldstein 
02:13:09 <zzo38> invariable: It results in "you must be invited" if you have usermode +Q 
02:13:10 <elliott> Because that's the best name ever? 
02:13:30 <Sgeo> I was right, it was Campbell 
02:13:39 <Sgeo> http://www.huffingtonpost.com/2010/08/05/adolf-hitler-campbells-pa_n_672045.html 
02:13:46 <zzo38> invariable: It does that too. 
02:13:56 <invariable> zzo38: what does +Q do? googling is not helpful 
02:14:48 <Sgeo> zzo38 is mortally offended by Google. 
02:14:52 <elliott> * umode :         +Q     - Prevents you from being affected by channel forwarding. 
02:14:55 <elliott> invariable: /raw help umode 
02:14:59 <elliott> invariable: prepare for zzo38 rant on how your client is broken 
02:15:02 <zzo38> It is not forbidden, but you should not use it all the time, especially in this case. 
02:15:14 <elliott> invariable: no, it just provides its own help command 
02:15:17 <elliott> that is probably more useful than freenode's 
02:15:25 <Sgeo> I feel like I'm kaing fun of zzo38 when I shouldn't 
02:15:57 <invariable> elliott: it should forward other commands it doesn't know about to the server... 
02:16:04 -!- augur has joined. 
02:16:27 <elliott> invariable: it knows about /help, though 
02:16:38 <elliott> so it tells you there's no help to give 
02:16:40 <zzo38> It is not a client command it is a command to send to server, please. 
02:17:03 <zzo38> Therefore you have to specify it as such. 
02:19:21 <zzo38> elliott: Of course there is no UMODE command but it is a help topic on the server, so there is help to give. 
02:19:59 <Sgeo> zzo38, elliott was explaining to invariable 
02:20:25 <zzo38> Sgeo: I know, but still, there actually is such a help topic. 
02:22:01 <Gregor> You have 3 .so Landrush Application(s). If you are the only applicant for a domain at the end of the Landrush period (1st March 2011) then you will be awarded the domain. 
02:22:10 <zzo38> I made a game that says "This game is bad because Hitler played it" 
02:23:27 <elliott> Gregor: Can I have an email redirect @libc.so, that would be possibly the most amazing thing ever :-P 
02:23:44 <Gregor> elliott: I will give out redirects, but only of valid libc functions. 
02:23:53 <Gregor> I reserve a few memory-related ones for myself. 
02:23:55 <elliott> I want to be known as gets@libc.so forever. 
02:24:01 <Gregor> elliott: Uhhh, if you want gets ... 
02:24:11 <elliott> Gregor: I'm just trying to capitalise on all the famous ones :P 
02:24:22 <elliott> Gregor: posix_fadvise@libc.so 
02:24:35 <Gregor> This all depends on whether I actually get it though :P 
02:24:36 <elliott> I am making good decisions today 
02:24:52 <zzo38> elliott: Are you sure? 
02:25:04 <elliott> Gregor: libc.a would be better... quick, let's find a country whose name starts with A that has no TLD. 
02:25:14 <elliott> And give them a fibre-optic link. 
02:25:24 <elliott> Preferably a country just called "A", so that you can't have a second letter in the TLD. 
02:25:28 <Gregor> All country codes are two characters :P 
02:25:29 <elliott> Let's ask Sealand to rename themselves. 
02:25:33 <Gregor> They would probably make that .aa 
02:25:41 <elliott> This standard defines for most of the countries and dependent areas in the world: 
02:25:41 <elliott> a two letter (ISO 3166-1 alpha-2) 
02:25:41 <elliott> a three-letter (ISO 3166-1 alpha-3), and 
02:25:41 <elliott> a three-digit numeric (ISO 3166-1 numeric) code. 
02:25:56 <elliott> (OK, so the relevant ones are two-letter.) 
02:26:06 * Sgeo ponders neural nets for cartoon character recognition 
02:26:18 <elliott> User-assigned code elements are codes at the disposal of users who need to add further names of countries, territories, or other geographical entities to their in-house application of ISO 3166-1, and the ISO 3166/MA will never use these codes in the updating process of the standard. The following alpha-2 codes can be user-assigned: AA, QM to QZ, XA to XZ, and ZZ. For example: 
02:27:44 <elliott> Gregor: Register sudo.su :P 
02:28:08 <Gregor> elliott: Even if it wasn't taken, .su domains are CRAZY-expensive. 
02:28:17 <Gregor> Since they're "trying" to phase them out. 
02:28:18 <elliott> Really? I've seen individuals with them before. 
02:28:22 <elliott> But I guess that was an old registration. 
02:28:41 <elliott> Gregor: But yah, it will never be phased out ever :P 
02:28:50 <zzo38> In Soviet Russia, domain name register YOU!! That is why you cannot register them easily 
02:29:00 <elliott> Gregor: Nope it will be phased out, or nope, I agree, it will never be phased out ever? 
02:29:14 <elliott> zzo38: Congratulations, you're as funny as Yakov Smirnoff. 
02:29:31 <Gregor> elliott: I agree, it will never be phased out. 
02:29:57 <elliott> Gregor: One day, the most well-known legacy of the Soviet Union will be its TLD, which will still be around in post-Singularity 3142 AD. 
02:30:08 <elliott> And we *still* won't have migrated off IPv6 yet, grumble, sigh. 
02:30:25 <elliott> (Turns out that incredibly-advanced alien cultures have a SHITLOAD of sentient beings who want personal websites.) 
02:30:29 <Gregor> Off? We won't have migrated TO IPv6 yet :P 
02:31:03 <elliott> Gregor: The Singularity did that for us. 
02:31:10 <elliott> After resigning us all to Five Minutes Self-Hatred for not having done it yet. 
02:32:46 <zzo38> Is there any kind of 'patamagic that you like? Is there any kind of metamagic that you like? 
02:33:54 <Sgeo> I like terminating zzo38 because he's an INFRARED and is wearing white clothes... 
02:34:26 <zzo38> I am not wearing white clothes right now. 
02:34:37 <zzo38> But at least some of it is almost white. 
02:34:55 <Sgeo> How dare you question Friend Computer?! 
02:35:34 <oerjan> what color clothes _are_ infrareds allowed to wear, anyhow 
02:35:58 <Sgeo> Black, I'd assume. 
02:36:18 <Sgeo> INFRARED stuff is black, ULTRAVIOLET is white 
02:36:31 <zzo38> Actually I have blue clothes at this time, and white socks. 
02:40:28 <invariable> Gregor: how do you apply for a .so domain? 
02:40:46 <Gregor> invariable: Carefully. 
02:41:09 <zzo38> What country is that? 
02:41:15 * invariable wants a vanity domain name - but all the good ones are taken 
02:42:16 <Sgeo> Gregor, did you get yours? 
02:42:18 -!- GreaseMonkey has joined. 
02:42:18 <zzo38> invariable: Which vanity domain names did you want? 
02:42:32 <Gregor> Sgeo: If I knew, I wouldn't have had that message to paste :P 
02:42:51 <invariable> zzo38: I wanted 0xdeadbeef.com, cryp.to, a few others 
02:43:14 <invariable> Gregor: where does one apply for the domains? 
02:43:57 <Gregor> invariable: Presently you can't buy .so domains, as the landrush period has ended but general availability hasn't started yet. General availability is April 1st. 
02:44:09 <Gregor> invariable: nic.so has a list of registrars 
02:44:29 <invariable> If you would like to sell .so domains, please feel free to contact us below. ---> interesting 
02:44:51 <Gregor> invariable doesn't know much about the domain name system, does 'e :P 
02:45:22 <invariable> Gregor: considering I follow dns-operations and nanog I'd say I'd know some things - I don't follow the politics of it though 
02:45:46 <Sgeo> Is it interestling like "She requested to be buried in XYZ" interesting? 
02:45:54 <Sgeo> As in, it seems weird if you don't think about it 
02:45:59 <invariable> Gregor: curious what data you think I do not know. I'm always open to learning new things 
02:46:19 <Sgeo> Or did invariable actually not think about it, and think it makes no sense? 
02:46:20 <Gregor> invariable: Well, it's just that "If you would like to sell .so domains, please feel free to contact us below." is not interesting at all, as that's how almost every TLD works :P 
02:46:29 <Gregor> They always delegate to general registrars. 
02:46:41 <Sgeo> Hah! I was right! 
02:46:47 <invariable> Gregor: my interesting was "oh - maybe I'll sign up" 
02:46:56 <Gregor> invariable: Sign up ... to be a registrar? 
02:47:01 <Sgeo> Isn't being a registrar.. expensive? 
02:47:11 <invariable> Sgeo: to contact them doesn't cost monies 
02:47:23 <invariable> I want to see how much they charge and what proccess they go thru 
02:47:33 <Gregor> Why do you want to be a registrar? 
02:48:09 <invariable> <invariable> I want to see how much they charge and what proccess they go thru 
02:48:11 <Sgeo> He wants to know what it takes to be a registrar 
02:48:16 <Gregor> OK, well I'm sufficiently boggled :P 
02:48:19 <Gregor> Anyway I just want libc.so 
02:48:24 <Gregor> I'm probably not getting it, but I WANT IT 
02:48:32 <invariable> Gregor: darn it. I'd love that domain too 
02:48:36 <Sgeo> What do you mean, "probably not getting it"? 
02:48:51 <Gregor> Sgeo: Landrush = any number of people can register, if more than one do then they auction it. 
02:49:01 <Gregor> I registered during landrush, but don't yet know if anybody else did. 
02:49:05 <Gregor> invariable: I registered libm too :P 
02:49:08 <Sgeo> Also, shouldn't you find a country with country code 6? 
02:49:43 <Gregor> invariable: I couldn't tell people :P 
02:49:49 <Gregor> invariable: I didn't want any competition! 
02:49:56 <invariable> Gregor: as I said - all the good vanity domain names are taken 
02:50:15 <Sgeo> Is it libc.so.6? Or something else? 
02:50:17 <Gregor> I've been wanting libc.so for YEARS, I actually had a cron job to check nic.so every week :P 
02:50:52 <elliott> Gregor: You are one dedicated motherfucka. 
02:50:55 <Sgeo> Did nic.so exist in any form back then? 
02:50:58 <elliott> <Gregor> I'm probably not getting it, but I WANT IT 
02:51:02 <elliott> Is only some small subset being granted? 
02:51:03 <oerjan> gregor, the strangest person to root for somalian government 
02:51:03 <Sgeo> Or were you guessing 
02:51:07 <invariable> elliott: <Gregor> Sgeo: Landrush = any number of people can register, if more than one do then they auction it. 
02:51:07 <elliott> Or do you think someone else is as genius as you? 
02:51:17 <Gregor> elliott: That's my fear :P 
02:51:20 <elliott> Most people aren't as brilliant as Gregor. 
02:51:23 <elliott> This is not because Gregor is brilliant. 
02:51:27 <elliott> This is just because most people are stupid. 
02:51:35 <Gregor> There only needs to be one more on Earth :P 
02:51:59 <Gregor> codu.org is a good domain name :P 
02:52:03 <elliott> Gregor: Yeah, but it's also someone as brilliant as you, *and dedicated enough to spend bucks on it*. 
02:52:09 <elliott> Unless the starting bid is ridiculous. 
02:52:55 <Gregor> Anyway, Somalia is still lettin' me down here :P 
02:53:01 <Gregor> I should know whether I got it any week ago. 
02:53:18 <Sgeo> Gregor, imagine if you typoed your email address... 
02:53:26 <elliott> Gregor: Oblig. http://www.weebls-stuff.com/songs/Somalia/ 
02:53:51 <elliott> Gregor: "Oblig." for a reason. 
02:54:25 <Sgeo> agooddomainname.com 
02:54:31 <elliott> I would have registered ehird.org by now, but elliott@ehird.org is ugly. 
02:55:15 <invariable> Sgeo: taken http://www.einsteinindustries.com/ 
02:55:17 <Gregor> invariable: I could give you a vanity email address @libc.so :P 
02:55:28 <elliott> Gregor: But only if it's a libc function. 
02:55:33 -!- wareya has quit (Read error: Operation timed out). 
02:55:38 <Gregor> Well, not necessarily function, but symbol 
02:55:39 -!- wareya has joined. 
02:55:39 <elliott> invariable seems like a memset guy to me. 
02:55:52 <elliott> Gregor: What about a libc macro? 
02:55:52 <Gregor> I'll give you errno if you want it. 
02:55:56 <elliott> That's not technically in the .so. 
02:56:03 <Gregor> elliott: I said stderr is OK :P 
02:56:06 <elliott> invariable: I WILL BATTLE YOU TO THE DEATH 
02:56:12 <elliott> invariable: You can have it :P 
02:56:19 <elliott> Gregor reserved "some memory allocation functions". 
02:56:22 <elliott> I'm guessing this includes malloc. 
02:56:26 <Gregor> I've reserved malloc, free, realloc, brk and sbrk for me. 
02:56:31 <elliott> But what if I changed my gender and name to Mary Alloc? 
02:56:37 <elliott> Gregor: Would you say you have... 
02:56:40 <Sgeo> I want calloc@libc.so 
02:56:44 <elliott> YEAAAAAAAAAAAAAAAAAAAAAAAAAHHHHHHHHHHHHHHHHH 
02:56:54 * Gregor punches elliott in the face. 
02:56:58 <Sgeo> [It's just I noticed you didn't mention it] 
02:57:11 <elliott> Gregor: Can I have common Unix syscalls 
02:57:13 <Sgeo> What're brk and sbrk? 
02:57:16 <elliott> sbrk isn't actually in libc. 
02:57:22 <invariable> Gregor: could I have puts@ and gets@ ? 
02:57:33 <elliott> invariable: ALREADY RESERVED GETS 
02:57:39 <Gregor> invariable: elliott asked for gets, I don't understand why that's such a popular choice :P 
02:57:46 <Gregor> gets: Shittiest function ever. 
02:57:48 <elliott> Because it's terrible and being removed in C1x :P 
02:58:04 <elliott> (It's technically in libm though :P) 
02:58:09 <elliott> (But I don't think libm is POSIX.) 
02:58:17 <Gregor> If I get libm.so, you can have that @libm.so :P 
02:58:28 <elliott> j0@libm.so would be good for someone called Jo or Joe. 
02:58:46 <Gregor> jn@libm.so would be good for Jane! 
02:58:54 <elliott> Gregor: ULLONG_MAX@libc.so plz 
02:59:05 <elliott> Gregor: Can we have things that are going to be in C1x? 
02:59:15 <Sgeo> #include@libc.so 
02:59:20 <elliott> That's like twenty you've reserved now :P 
02:59:20 <Gregor> elliott: Ultimately it just comes down to whether I think it's lolly enough :P 
02:59:27 <elliott> write@libc.so actually has quite a nice ring to it... 
02:59:37 <Gregor> Nobody's reserved anything, and I'll give one person EXACTLY ONE. 
02:59:59 <elliott> Gregor: fegetexceptflag@ plz 
03:00:08 <elliott> I'm just going through Wikipedia's list at this point :P 
03:00:29 <Gregor> "What's your email address?" "Faggot except flag at libc dot so." 
03:00:55 <invariable> why does everyone else get all the good domains :-( 
03:00:59 <elliott> Gregor: creal@libc.so, for my rapper friend C. Real 
03:01:09 <Gregor> invariable: So far I don't have ti :P 
03:01:37 <elliott> Gregor: Also _IOLBF@libc.so 
03:01:40 <invariable> Gregor: but also things like cryp.to, 0xdeadbeed, blah blah blah -> every domain I think of someone has taken 
03:01:40 <Sgeo> oh, right, C doesn't even cast like that 
03:01:45 <Gregor> Sgeo: None of your @s are libc symbols X_X 
03:01:53 <Sgeo> Gregor, I know 
03:01:59 <Sgeo> Wait, none? I thought I had one earlier? 
03:02:14 <Sgeo> calloc isn't a libc thing? 
03:02:22 <elliott> Gregor: xor_eq@libc.so. Thanks. 
03:02:28 <elliott> (It's a macro that expands to ^=. Seriously.) 
03:02:28 <Gregor> sin@libm.so is gonna be hotly debated :P 
03:02:36 <elliott> http://en.wikipedia.org/wiki/Iso646.h 
03:02:56 <elliott> What's your email address? 
03:03:18 <Sgeo> reinterpret_cast@libc.so 
03:03:19 <invariable> why do I get the feeling that elliott loves abbot and Costello 
03:03:29 <elliott> Gregor: LDBL_MIN_10_EXP@libc.so 
03:04:03 <Sgeo> Gregor, I want reinterpret_cast@libc.so 
03:04:09 * Sgeo ducks into a postincrement 
03:04:14 <elliott> Gregor: __bool_true_false_are_defined@libc.so 
03:04:15 -!- invariable has changed nick to variable. 
03:04:36 <Sgeo> Gregor, you know I'm doing this deliberately, right? 
03:04:39 <elliott> Whatever game we're playing, I just won it. 
03:05:10 <elliott> qsort might be a good one. 
03:05:19 <Sgeo> I even went outside C. How much more blatant can I get/ 
03:05:54 <Sgeo> unsafePerformIO@libc.so 
03:06:22 <Sgeo> Gregor, are you going to call that fail? 
03:06:37 <elliott> Gregor: zPLR@libc.so. Hey, it's in my strings(1) output. 
03:06:40 <oerjan> of course not, fail is properly monadic 
03:06:44 <elliott> __gconv_transform_ucs4le_internal 
03:06:48 <elliott> __gconv_transform_ucs4le_internal@libc.so 
03:07:09 <Sgeo> What symbols are only in glibc? 
03:07:15 <elliott> ((((__const uint32_t *) (sin6->sin6_addr.__in6_u.__u6_addr32))[0] == 0) && (((__const uint32_t *) (sin6->sin6_addr.__in6_u.__u6_addr32))[1] == 0) && (((__const uint32_t *) (sin6->sin6_addr.__in6_u.__u6_addr32))[2] == (__extension__ ({ register unsigned int __v, __x = (0xffff); if (__builtin_constant_p (__x)) __v = ((((__x) & 0xff000000) >> 24) | (((__x) & 0x00ff0000) >> 8) | (((__x) & 0x0000ff00) << 8) 
03:07:15 <elliott>  | (((__x) & 0x000000ff) << 24)); else __asm__ ("bswap %0" : "=r" (__v) : "0" (__x)); __v; }))))@libc.so? 
03:07:18 <elliott> (Also in my strings output.) 
03:07:18 <Sgeo> As opposed to regular libc? 
03:07:29 -!- MrMandelbrot has joined. 
03:07:37 <elliott> __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (&zone_names[info->idx]) && __builtin_constant_p (__tzname[tp->tm_isdst]) && (__s1_len = __builtin_strlen (&zone_names[info->idx]), __s2_len = __builtin_strlen (__tzname[tp->tm_isdst]), (!((size_t)(const void *)((&zone_names[info->idx]) + 1) - (size_t)(const void *)(&zone_names[info->idx]) == 1) || __s1_len >= 4) && (!((size_t)(const voi 
03:07:37 <elliott> d *)((__tzname[tp->tm_isdst]) + 1) - (size_t)(const void *)(__tzname[tp->tm_isdst]) == 1) || __s2_len >= 4)) ? __builtin_strcmp (&zone_names[info->idx], __tzname[tp->tm_isdst]) : (__builtin_constant_p (&zone_names[info->idx]) && ((size_t)(const void *)((&zone_names[info->idx]) + 1) - (size_t)(const void *)(&zone_names[info->idx]) == 1) && (__s1_len = __builtin_strlen (&zone_names[info->idx]), __s1_len 
03:07:38 <elliott> < 4) ? (__builtin_constant_p (__tzname[tp->tm_isdst]) && ((size_t)(const void *)((__tzname[tp->tm_isdst]) + 1) - (size_t)(const void *)(__tzname[tp->tm_isdst]) == 1) ? __builtin_strcmp (&zone_names[info->idx], __tzname[tp->tm_isdst]) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) (__tzname[tp->tm_isdst]); register int __result = (((__const unsigned char *) 
03:07:42 <elliott> (__const char *) (&zone_names[info->idx]))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (&zone_names[info->idx]))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (&zone_names[info->idx]))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__co 
03:07:47 <elliott> nst char *) (&zone_names[info->idx]))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (__tzname[tp->tm_isdst]) && ((size_t)(const void *)((__tzname[tp->tm_isdst]) + 1) - (size_t)(const void *)(__tzname[tp->tm_isdst]) == 1) && (__s2_len = __builtin_strlen (__tzname[tp->tm_isdst]), __s2_len < 4) ? (__builtin_constant_p (&zone_names[info->idx]) && ((size_t)(const void *)((&zone_names[info->idx]) 
03:07:56 <elliott> And at that, my IRC client decided I couldn't enter more. 
03:07:59 <elliott> But it's longer than that. 
03:08:25 <zzo38> What does __extension__ means? 
03:09:07 <elliott> Lets you use GNU statement expressions in ANSI-strict code. 
03:09:12 <Sgeo> elliott, that may be close to being a legal email address 
03:10:07 <elliott> It's the IO interface to Elliott. 
03:10:28 <elliott> Best thing Gregor? Best thing? 
03:11:24 <oerjan> ET, the Elliott transformer 
03:13:34 -!- MrMandelbrot has left (?). 
03:14:15 <elliott> olsner: so what's the longer-term plan for your OS? 
03:14:21 <elliott> I mean, once it can actually do tasks 
03:18:36 -!- azaq23 has quit (Quit: Leaving.). 
03:25:01 <elliott> maybe I will have another stab at implementing my OS 
03:27:51 <elliott> "I'm not at all an expert in either linux nor the Mac OS 10.6 flavour of it." 
03:28:09 <elliott> quintopia: someone clearly thinks that os x is based on linux 
03:28:12 <elliott> because, you know, it's unix! 
03:28:18 <oerjan> elliott: I'M GONNA TRUST HIS JUDGEMENT ON THAT 
03:28:40 <pikhq> ... OS X isn't even very GNUy. 
03:28:50 <quintopia> elliott: the question is where did you find a person who believes this 
03:29:03 <elliott> pikhq: nope, in fact OS X is closer to real Unix than a lot of operating systems; certified after all (but that is meaninglses) 
03:29:23 <pikhq> elliott: Somewhat more importantly, OS X is genetic Unix. 
03:29:28 <elliott> pikhq: although it's horribly broken in several respects, of course, and the User Operating System layered on top of it -- the graphical interface and applications -- is almost completely unrelated to Unix 
03:29:46 <elliott> making OS X about as tempting a Unix environment as Windows + coLinux or similar 
03:30:33 <Gregor> Honey is REALLY tricky. 
03:30:40 <Gregor> It's so freaking acidic. 
03:30:45 <Gregor> And nowhere near as sweet as it should be. 
03:30:54 <Gregor> elliott: Just as a sweetener/acidifier, not primary flavorant. 
03:30:58 <elliott> Also, are we talking like... 
03:31:03 <elliott> Honey is nowhere near as sweet as it should be, what. 
03:31:08 <elliott> Honey is, like, one of the sweetest things. 
03:31:20 <elliott> Gregor: P.S. Do maple syrup next. I am in a committed relationship with maple syrup. 
03:31:21 <Gregor> It's not as sweet as sugar, it's not even as sweet as corn syrup. 
03:31:25 <elliott> It is the best thing and goes with everything. 
03:31:29 <elliott> And IS sweeter than anything :P 
03:31:38 <elliott> Though I guess it's not terribly acidic, but who cares, maple syrup. 
03:31:40 <Gregor> Yes, maple syrup is definitely crazysweet. 
03:31:54 <Gregor> It doesn't have to be acidic, I can always use citric acid *shrugs* 
03:32:08 <Gregor> I have maple extract :P 
03:32:16 <Gregor> But I failed HARD at making maple soda by using maple extract. 
03:32:32 <elliott> My experience with maple syrup is that, whenever you feel like using sugar, just use maple syrup instead and it'll be so amazing. 
03:33:30 -!- pikhq_ has joined. 
03:33:41 -!- pikhq has quit (Ping timeout: 250 seconds). 
03:35:37 <zzo38> My experience with maple syrup is that, using with waffle/pancake. 
03:38:54 <quintopia> my experience with maple syrup is that it's acidic and gross 
03:39:05 <quintopia> maple-flavored corn syrup is clearly superior 
03:41:16 <pikhq_> Maple syrup is the embodiment of delicious. 
03:41:27 <quintopia> you're probably one of those people who likes tomatoes and olives too 
03:41:47 <pikhq_> I only like either as ingredients. 
03:42:47 <Gregor> I like to take two tomato slices and put olives and mayo between them 
03:43:33 <elliott> pikhq_: He's joking, you moron :P 
03:43:39 <elliott> Unless he's really really stupid. 
03:43:48 <elliott> Also, I hate tomatoes and olives :P 
03:44:19 <Sgeo> elliott, I have no idea if he's joking or not. I have little experience comparing food. Does this make me stupid? 
03:46:53 <elliott> Hey quintopia, give me endless grant money to work on @. 
03:47:30 <oerjan> endless £ or endless $? 
03:47:33 -!- copumpkin has joined. 
03:47:49 <elliott> oerjan: the former, much better rates 
03:47:54 <Sgeo> endless Zorkmids! 
03:48:20 <quintopia> elliott: i'll give you one hundred billion ZWD right now 
03:48:37 <elliott> quintopia: (ZWD got reset recently.) 
03:48:42 <elliott> quintopia: (Well, right before it got deprecated.) 
03:48:44 -!- pikhq_ has quit (Ping timeout: 276 seconds). 
03:48:45 <elliott> So that's a fair amount of money. 
03:49:06 <elliott> On February 2, 2009, the RBZ announced that a further 12 zeros were to be taken off the currency, with 1,000,000,000,000 (third) Zimbabwe dollars being exchanged for 1 new (fourth) dollar.[21] New banknotes were introduced with a face value of Z$1, Z$5, Z$10, Z$20, Z$50, Z$100 and Z$500.[22] The banknotes of the fourth dollar circulated alongside the third dollar, which had to remain legal tender until 
03:49:06 <elliott>  30 June 2009.[23] The new currency code was ZWL.[24] 
03:49:09 <quintopia> i only have the bills from before the reset. sorry. 
03:49:35 <elliott> love this caption: "The 100 trillion Zimbabwean dollar banknote (1014 dollars), equal to 10627 pre-2006 dollars." 
03:49:36 <quintopia> it had hyperinflated again before it was deprecated 
03:49:54 <elliott> quintopia: it was basically ignored 
03:49:57 <elliott> since everyone dollarizified 
03:50:20 <quintopia> the point is, any amount of ZWD is worthless now, yes? 
03:50:33 <elliott> well. they basically don't exist. but if you _could_ convert them. 
03:50:39 <elliott> then 4th gen zwd would be sweet. 
03:53:21 -!- pikhq has joined. 
03:59:55 <Gregor> I JUST WANT THE ETERNAL WAIT TO BE OVER 
04:06:47 <elliott> Gregor: You could make that into a song! 
04:06:58 <elliott> Gregor: A little ditty about how hard done-to you are by Somalia. 
04:07:11 <Gregor> And not even any pirates :P 
04:07:16 <elliott> Why, Somalia, why / I just want the eternal wait to be over / When, Somalia, when / Will you give me my domain 
04:07:18 <elliott> IT WILL BE AWESOMETERRIBLE 
04:07:22 <Gregor> Unless pirates have taken over the Ministry of Post and Telecommunications 
04:07:35 <cheater00> elliott: well done waking up on that 
04:08:03 <cheater00> elliott: next you'll be trolling about the use of the us dollar as the main currency in russia in the 90s 
04:08:07 <zzo38> I found out how to make chess notation with morse code. 
04:08:39 <cheater00> zzo38: is there some specific trick? or do you just use normal chess notation and transcribe it? 
04:09:43 <zzo38> Files are AEIOOIEA and ranks are BDFGHKLP. The file letters are duplicated because you put the file letters first for queenside and ranks letters first for kingside. 
04:10:11 <zzo38> So the queen's rook's 1 might be "AB" and the king's rook's 1 might be "BA", for example. 
04:14:15 <zzo38> Now I want to make chessboard fonts with METAFONT. 
04:15:27 <Sgeo> Oh, cheater00's here 
04:20:52 <elliott> http://pinguy-os.sourceforge.net/ Time until Sgeo uses this piece of "Macdows" crap: 3s 
04:21:11 <Sgeo> elliott, maybe tomorrow 
04:21:15 <Sgeo> I need to sleep soon 
04:21:33 <Sgeo> It looks boring 
04:22:01 <elliott> Sgeo: How can you say that, you've used Lindows! 
04:22:04 <Ilari> Of nifty. Plant "Vitamin A" is much less effective (>6x difference at least) than true vitamin A (from animals). And often is labeled the same. :-/ 
04:22:06 <elliott> You have NO BASELINE of crappiness. 
04:22:19 <Sgeo> Pinguy OS : Linux Mint :: Linux Mint : Ubuntu? 
04:22:32 <Sgeo> elliott, I've used Freespire. 
04:23:09 <Sgeo> Actually, Freespire and Ubuntu are the only Linux distros I have used as a primary OS. Unless Kubuntu counts separately from Ubuntu 
04:23:13 <Ilari> Ah, this site reports 12x difference. 
04:23:14 <elliott> Sgeo: Pinguy OS = Macdows. 
04:24:08 <Sgeo> It's an OS. Therefore, it's at least marginally more interesting than the video I got upon googling "Macdows". 
04:24:22 <Sgeo> Then again, some chicken walking around is more entertaining 
04:24:33 <Sgeo> http://www.archive.org/details/Macdows 
04:25:54 <Sgeo> Things that are more entertaining than the Macdows video: 
04:25:59 <Sgeo> A glacier moving. 
04:26:01 <elliott> http://www.freespire.com/ ;; wonder how much of this is bullshit. 
04:26:08 <Sgeo> An empty house. 
04:26:09 <elliott> "- FACT:  Michael Robertson, a self-proclaimed agnostic, went to great lengths to unsuccessfully try and have a Christian church kick out one of their members who was a former employee whom Robertson held a grudge against. Robertson made false allegations to the church of criminal activity by the former employee. UBER creepy, we know. (The Anti-Christian Expose' coming soon.)" 
04:27:39 <Sgeo> I'm sad that Xandros no longer has a community edition 
04:29:23 <cheater00> Ilari: yeah, gotta watch out with this new-age crap 
04:29:35 <elliott> 05:05:03 <Sgeo> http://www.archive.org/details/Macdows 
04:31:53 <Ilari> There are even worse practices: Like labeling industrial trans fats (extremely unhealthy stuff) as saturated fat "because they have similar chemical properties" (which is just plain mis-/disinformation). 
04:32:47 <Ilari> There is a world of a difference between industrial trans fats and any other kind of fat. 
04:32:49 <Sgeo> elliott, xkcd sets off adblockers 
04:33:13 <cheater00> wait till you get to things like children's food. 
04:33:49 <Ilari> Apparently industrial trans fats are not just heart health hazard. They are diabetes hazard as well. 
04:34:25 <cheater00> yesterday we've compared a children's semolina pudding and grown up's semolina pudding 
04:34:57 <cheater00> children's has 0% protein and 39% sugar. 
04:35:11 <cheater00> grown ups' has 0% sugar and normal protein. 
04:37:40 <quintopia> and someone else pasted me the alt text cuz i didn't care enough to view the source 
04:38:16 -!- pikhq has quit (Ping timeout: 246 seconds). 
04:38:21 -!- pikhq_ has joined. 
04:38:41 <elliott> Well, today's xkcd is yet another instance of "it annoys me, but it's not funny. What should I do? Ooh, I remember, I have a comic!" 
04:39:05 <elliott> "Comics don't have to be funny, right? What's that? They're meant to be interesting if not funny? Hmm... well, it's too late to turn back now. *hits Publish*" 
04:39:43 <quintopia> all of the above is definitely true for comics released on a strict schedule 
04:40:04 <Ilari> Oh, and there's also confusing industrial and natural trans fats. Again a world of difference. 
04:40:19 <quintopia> it all depends on rather you prefer three mediocre comics a week or one funny one every now and again 
04:40:41 <cheater00> "<elliott> i leverage myself by looking down on something that others look up to because i have no value of my own." 
04:40:48 <elliott> <quintopia> all of the above is definitely true for comics released on a strict schedule 
04:40:59 <elliott> I dunno, IWC regularly manages to be funny, but of course it is subjective. 
04:41:10 <elliott> The key is backlog, backlog, backlog, and if Randall doesn't have a backlog I'll eat my hat. 
04:41:15 <Ilari> Natural trans fats have strong negative correlation to heart disease. Industrial ones have very strong positive correlation (amounts measured from fatty tissue). 
04:41:17 <elliott> I'm pretty sure he's just stopped caring. 
04:41:36 <quintopia> or maybe he has no idea what people think is funny 
04:41:40 <elliott> Or has run out of all good ideas but, hey, I still get money from it. 
04:41:47 <elliott> quintopia: Counter-evidence: almost every comic before #400 or so. 
04:41:48 <quintopia> i know some people who thought this one was funny 
04:41:55 <elliott> Yes, but those people have broken heads. 
04:42:26 <elliott> Old xkcd is universally liked; new xkcd is mainly liked by the diehard fans. There is definitely a *difference*. 
04:42:33 <quintopia> elliott: go back and read those comics. they're not as funny as you think they are. also, i think many of them predate the three-a-week schedule 
04:42:41 <elliott> quintopia: I have; they are. 
04:42:54 <Ilari> The top to bottom ratio is something like 0.5 for natural trans fats (1 is neutral, the smaller the better), and 5 for industrial ones. 
04:43:01 <elliott> Old xkcd also seems much more authentic to me -- not in a hipster "had-it-on-vinyl" way, but they've seemed quite strained for a while now. 
04:43:19 <elliott> But those five minute comics of late were *good*. 
04:43:30 <elliott> I think what's happened is that with popularity, he's ended up overediting them all. 
04:44:45 <Gregor> My ad blocker blocked today's xkcd. 
04:44:53 <elliott> Gregor: See: LINES JUST ABOVE 
04:45:10 <Gregor> I don't want to read that much. 
04:45:10 <Gregor> I just saw "xkcd" and "sucks" 
04:45:37 <Gregor> Also, apparently nobody said anything about adblockers. 
04:45:53 <Gregor> Oy, WAY too far back :P 
04:46:01 <elliott> quintopia: I'm not saying every comic before #400 was good. 
04:46:07 <oerjan> Gregor's adblocker is so good it even blocks irc conversations about adblockers 
04:46:11 <elliott> I'm saying that xkcd was a regular source of funny. 
04:47:07 -!- elliott has quit (Quit: Leaving). 
04:48:11 -!- elliott has joined. 
04:48:15 <elliott> 16:52:39 --- quit: EgoBot (K-lined) 
04:48:17 <elliott> 16:52:40 --- quit: GregorR (K-lined) 
04:49:12 <elliott> i cannot sleep until Gregor replies 
04:49:16 <elliott> and it's 5:30 am reply you fucker 
04:49:59 <elliott> 18:07:24 <bsmntbombdood> * EgoBot has quit (K-lined) 
04:49:59 <elliott> 18:07:24 <bsmntbombdood> * GregorR has quit (K-lined) 
04:49:59 <elliott> 18:07:40 <graue> why'd that happen? 
04:49:59 <elliott> 18:07:47 <ihope_> Apparently it was for spamming. 
04:49:59 <elliott> 18:08:10 <lament> spamming who 
04:50:07 <elliott> 18:10:56 <bsmntbombdood> "Broken client, apparently .. not sure the details", "I'm speculating, but usually that reason means it was disconnecting/reconnecting/etc.. or joining/rejoining/etc.." 
04:50:36 -!- elliott has quit (Client Quit). 
05:01:56 -!- asiekierka has joined. 
05:05:30 <zzo38> I ready made up a program in TeX to read Forsyth-Edwards Notation. 
05:06:38 <zzo38> And it will currently print out the board in ASCII, although I can make the chessboard fonts and make it print out using chessboard fonts with light squares and dark squares. 
05:08:54 -!- poiuy_qwert has quit (Ping timeout: 260 seconds). 
05:09:33 -!- poiuy_qwert has joined. 
05:12:55 <zzo38> Making TeX understand the rules of chess in order to interpret the notation correctly is a bit complicated. 
05:13:42 <zzo38> Although I could probably make many simplifications in these rules 
05:13:59 -!- oklopol has joined. 
05:14:13 <zzo38> Like, the notation it can understand for board setup is like the following:  \def\FIDEsetup{\FENsetup{rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR}} 
05:14:22 <zzo38> cheater00: Formal proof of what? 
05:14:38 <cheater00> that your function will correctly spit out the right chessboards 
05:16:27 <zzo38> Chess boards and displayed moves (as opposed to inline moves) are printed using display math mode. 
05:18:13 -!- pikhq has joined. 
05:18:24 <cheater00> that's ok, but how do you know that your decoding is correct? 
05:18:48 <zzo38> I have no formal proof, although I could test it with various inputs to see what happens. 
05:18:48 -!- pikhq_ has quit (Ping timeout: 260 seconds). 
05:21:40 <cheater00> would you say it's impossible to write formal proof? 
05:22:04 <zzo38> cheater00: I don't know. 
05:22:25 <zzo38> But if it can, the formal proof can also be typed using TeX. 
05:22:28 <cheater00> i would be interested if you were to find a way to do a general proof of it 
05:24:25 <zzo38> Here is the main part of the code that parses FEN, in case you want to see:  http://sprunge.us/DELA 
05:25:28 <zzo38> I am not exactly sure how to write formal proofs of computer programs, anyways. 
05:25:34 <Sgeo> cheater00, BTW, I decided to do my own thing. While I'm not thrilled with the outcome, I'm pretty sure I like it better than the probable outcome of doing what you suggested 
05:26:34 <cheater00> Sgeo: are you trying to prove you're a non-lobotomised human with own thoughts? 
05:27:11 <cheater00> Sgeo: i'm asking because it's the third or fourth time you're mentioning you'll do something else, and it seems like over-compensating. 
05:28:11 <cheater00> zzo38: i think you could start by defining the input data structure and based on that proving that the output data structure will always be a correct chess board 
05:28:58 <zzo38> cheater00: It won't be a correct chess board if the input is bad. It doesn't verify that the input is correct. 
05:29:25 <cheater00> zzo38: yeah, the idea is to prove it given the assumption that the input is correct. 
05:30:40 <cheater00> zzo38: right now you can not say that your program, given correct input, will produce a chessboard (much less a chessboard of correct format, and even less that it will be the single chessboard that you want) 
05:32:15 <zzo38> I have not implemented moves yet, only board setup. However the board setup can place the pieces wherever you want, so you can setup the board to be the position after a few moves have already been done. Next I will implement move notations as well. 
05:32:36 -!- asiekierka has quit (Read error: Operation timed out). 
05:32:57 <zzo38> And chessboard fonts, so that the board can be displayed using the common chess diagrams. 
05:33:33 <cheater00> (i must say, i really dislike the old bitmap chess fonts though 
05:34:21 <zzo38> You can suggest other ways in which they should be drawn. I know METAFONT, although I don't know a lot about typeface design. So, if you know the good way of drawing of the pieces, I can program them into METAFONT. 
05:36:49 <zzo38> I might also add a few icons for pieces that are not in chess, in case of some variants, such as chess with checkers added, and so on. 
05:38:54 <cheater00> i'm sorry, i don't know any alternatives that i could identify by name 
05:39:49 <zzo38> In fact, I once play chess with my brother, he added checkers in front of pawns as a joke but then I said we can play that way, and both of us immediately knew what the rules for this new varaint were even though neither of us had played before. And we happened to be in complete agreement of the rules. 
05:40:15 <zzo38> cheater00: Alternatives of what? 
05:40:47 <cheater00> <zzo38> You can suggest other ways 
05:41:37 <zzo38> cheater00: I didn't mean naming them. I mean describing their shapes in a way that I can program in. 
06:00:27 -!- augur has quit (Remote host closed the connection). 
06:07:14 -!- zzo38 has quit (Remote host closed the connection). 
06:07:29 -!- oerjan has quit (Quit: Good night). 
06:09:45 -!- FireFly has joined. 
06:14:29 -!- myndzi\ has changed nick to myndzi. 
06:22:15 -!- augur has joined. 
06:28:57 -!- GreaseMonkey has quit (Quit: The Other Game). 
06:34:48 -!- HackEgo has quit (Ping timeout: 246 seconds). 
06:35:23 -!- Gregor has quit (Ping timeout: 255 seconds). 
06:35:30 -!- EgoBot has quit (Ping timeout: 246 seconds). 
06:44:45 -!- sebbu2 has joined. 
06:44:45 -!- sebbu2 has quit (Changing host). 
06:44:45 -!- sebbu2 has joined. 
06:47:32 -!- sebbu has quit (Ping timeout: 255 seconds). 
06:52:42 -!- TLUL has quit (Ping timeout: 276 seconds). 
07:03:10 -!- pikhq_ has joined. 
07:03:22 -!- pikhq has quit (Read error: Operation timed out). 
07:28:09 -!- FireFly has quit (Quit: swatted to death). 
07:42:05 -!- Sgeo has quit (Read error: Connection reset by peer). 
07:42:58 -!- pikhq_ has quit (Ping timeout: 246 seconds). 
07:43:01 -!- pikhq has joined. 
07:58:01 -!- cheater00 has quit (Ping timeout: 246 seconds). 
07:58:57 -!- cheater00 has joined. 
07:59:59 -!- clog has quit (ended). 
08:00:00 -!- clog has joined. 
08:23:07 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 
09:19:57 -!- Wamanuz2 has joined. 
09:23:36 -!- Wamanuz has quit (Ping timeout: 255 seconds). 
10:01:28 -!- Tritonio has joined. 
10:17:37 -!- sebbu2 has changed nick to sebbu. 
10:33:51 -!- Tritonio has quit (Quit: Leaving). 
10:51:51 -!- asiekierka has joined. 
10:54:51 <Ilari> Ah, I think I figured out why I misremembered name of the language: There was earlier design called pointer-A that never went past initial ideas stage (never even got to spec stage). That name really had a dash in it. 
11:14:33 -!- cheater- has joined. 
11:14:37 -!- cheater00 has quit (Ping timeout: 246 seconds). 
11:17:08 -!- Patashu has quit (Ping timeout: 264 seconds). 
11:44:14 <variable> HTML5 + CSS3 = turing complete :-\ 
11:56:37 <oklopol> your mom was turing complete last night 
11:57:44 <oklopol> maybe i should've chosen my first words better. 
12:15:21 <Ilari> variable: Got more info about that? 
12:20:18 <variable> Ilari: http://lambda-the-ultimate.org/node/4222 
12:29:15 -!- augur has quit (Remote host closed the connection). 
12:43:07 -!- asiekierka has quit (Ping timeout: 246 seconds). 
12:43:09 <Ilari> But can one write HTML5+CSS3 that "halts" only if Goldbach's conjecture is false (such program can be written in every TC language)? 
12:53:23 -!- nooga_ has changed nick to nooga. 
12:56:25 -!- Gregor has joined. 
12:56:43 -!- Gregor has changed nick to Guest28480. 
12:58:35 -!- Guest28480 has changed nick to Gregor. 
13:05:32 <nooga> where the elliott is hell 
13:06:16 <fizzie> Where the elliott is, he'll. 
13:07:17 <Gregor> The "where" elliott is: Hell. 
13:11:32 <fizzie> Hitler wheelies the toll. 
13:13:46 <variable> why does EVERY tv show or movie that involves a bomb HAVE to have a "which colour wire do I cut?" scene. I I ever made a bomb I'd make all the wires red so that this couldn't happen! 
13:16:36 <Gregor> There's no sink in this room!!! 
13:17:23 <coppro> MAYBE there's a source? 
13:21:24 <fizzie> Then you can just time-reverse it. 
13:42:47 -!- FireFly has joined. 
13:43:49 -!- augur has joined. 
13:44:22 -!- augur has quit (Remote host closed the connection). 
13:50:19 -!- ais523 has joined. 
13:50:49 <ais523> !bfjoust slowpoke http://sprunge.us/hcQD 
13:53:58 <Deewiant> ais523: 2011-03-09 09:16:05 --> EgoBot (~EgoBot@codu.org) has quit (Ping timeout: 246 seconds) 
13:54:15 <fizzie> You poked it straight off the net. 
13:54:38 <ais523> well, for the record, slowpoke beats every other program, convincingly in most cases, including waterfall3 
13:55:31 <fizzie> Yes, it's very convenient the bot isn't here to disprove. Almost an unimaginable coincidence, hmm? Makes you think. 
13:56:14 <ais523> run it locally if you like 
13:56:38 <ais523> I fear the strategy shown there may have actually broken BF Joust somewhat, it appears to be more or less completely fatal to defence programs 
13:56:45 <fizzie> I'd sneak it into the visualization system but the computer's off. 
13:56:54 <ais523> although hopefully it's suboptimal due to doing slightly worse against attack programs 
13:58:34 <ais523> the attack uses a timer clear, which basically spends around 4000 cycles on a two-cycle clear, then switching to a five-cycle clear in the other direction if it still hasn't finished 
13:58:38 <ais523> on the basis that it's probably being locked 
13:59:07 <ais523> the program as a whole is a combination of that idea with a deep poke that leaves a trail 
13:59:18 <ais523> or other programs that act much the same way 
13:59:23 <ais523> see http://esolangs.org/wiki/BF_Joust_strategies 
13:59:30 <oklopol> what are the rules of bf joust even? :P 
13:59:36 <ais523> http://esolangs.org/wiki/BF_Joust 
13:59:58 <ais523> I could explain in-channel, but it'd just take longer for no benefit 
14:00:11 <oklopol> for no benefit to anyone except me, no 
14:00:27 <ais523> not for you either, unless you'd prefer IRC for some reason 
14:00:32 -!- poiuy_qwert has quit (Quit: This computer has gone to sleep). 
14:00:58 <ais523> the way the game works is that two programs are each trying to set a particular cell in a shared memory tape to 0 
14:01:22 <ais523> the programs themselves are written in Brainfuck, except without I/O (the . command exists but just does nothing for one cycle) 
14:01:45 <ais523> each program starts at opposite ends of the tape, and > moves "forwards" towards the opponent's end, with < moving backwards towards their own end 
14:02:05 <ais523> and the programs run simultaneously, every turn one command from each is evaluated and applied simultaneously 
14:02:37 <ais523> (if + or - runs at the same time as [ or ], the increment/decrement's done after the flow control command; apart from that, the combined effect of two commands is typically obvious) 
14:02:58 <ais523> now, the difficulty is that the programs don't know how long the tape is (it could be any length from 10 to 30 inclusive) 
14:03:25 <ais523> and although the main loss condition is that the cell you started on is 0 for two cycles in a row, there's a secondary loss condition that you lose if you go off the end of the tape 
14:03:40 <ais523> the tape starts with 128 at each end and 0 on every other cell, by the way, 8-bit wrapping 
14:04:27 <ais523> so strategy mostly evolves around trying to set each cell along the tape in turn to 0 for two cycles in a row, on the basis that if doing that doesn't immediately win then it obviously wasn't the cell the opponent started on 
14:04:47 <ais523> or else, trying to make it harder for the opponent to do that, to give yourself more time to do so 
14:05:06 <oklopol> this sounds like a game that doesn't really work 
14:05:19 <ais523> oh, the other thing to note is that BF Joust programs are pretty much always run-length-encoded (as (ab)*5 = ababababab) 
14:05:30 <ais523> and it's been working quite well, people keep discovering new strategies 
14:05:44 <oklopol> okay so now what was yours 
14:05:45 <ais523> the length of the strategies page is testament to that, and comes complete with animations to show how they work 
14:05:58 <fizzie> There's also the polarity flip thing, but I'm not sure how notable that is. 
14:06:12 <ais523> so the one that program uses is to try to clear a cell, and change strategy if it doesn't seem to be working 
14:06:22 <ais523> fizzie: as in [-]>[+]>? 
14:06:35 <fizzie> No, the sieve/kettle thing. 
14:06:54 -!- augur has joined. 
14:07:02 <ais523> oh right, I didn't mention tournament rules at all, but it's much the same as the basic two-player rules 
14:08:21 <ais523> in order to keep things deterministic, programs are run on all tape lengths, then again with + and - swapped in one of the programs (as otherwise changing the polarity of a program leads to degenerate and boring changes in results) 
14:10:17 <ais523> as otherwise (changing the polarity of a program) 
14:10:21 <ais523> I think you misparsed the sentence 
14:10:23 -!- augur has quit (Remote host closed the connection). 
14:10:52 <oklopol> i tried both parses and didn't get it 
14:11:17 <oklopol> what do you mean degenerate and boring changes in results 
14:11:54 <ais523> well, say you have a simple program like [>[-]+], and your opponent's using [>[-]-] 
14:12:23 <ais523> the opponent's going to win massively, because it takes them 2 cycles to clear each element of your trail, and it takes you 508 cycles to clear each element of theirs 
14:12:38 <ais523> if you swap your program into [>[+]-], now it's suddenly the other way round and you win massivelyh 
14:12:43 <oklopol> right, that's why i don't see how this kind of thing could work 
14:12:43 <ais523> even though it's fundamentally the same program 
14:12:59 <ais523> so running with both polarities gets rid of that sort of issue 
14:13:04 <oklopol> because there's always a strategy that beats everything sofar 
14:13:10 -!- augur has joined. 
14:13:26 <oklopol> and it's trivial to find one 
14:13:31 <oklopol> i mean surely this can't be the case 
14:13:41 <ais523> no, beating every other existing program is very rare 
14:13:51 <ais523> although admittedly, I've done it twice recently 
14:13:53 <oklopol> in any case, any single one you wish to beat 
14:14:04 <ais523> beating a single program is generally quite easy, yes 
14:14:10 <ais523> but it's normally at the cost of making you lose to everything else 
14:16:36 <coppro> the US is literally going to tear itself apart 
14:16:49 <oklopol> so how can you spend 4000 cycles in a clear and then stop 
14:16:52 <coppro> the political divide keeps widening 
14:17:05 <coppro> eventually the two sides won't be able to coexist at this rate 
14:17:39 <ais523> even though the actual two main parties are very similar 
14:18:08 <coppro> they are similar in policy, but they hate each other 
14:18:15 <oklopol> wouldn't a bf joust be fun where YOU are the program, on each level you have a bf joust opponent and you don't know its code 
14:18:17 <coppro> and they differ on key points 
14:18:23 <ais523> oklopol: the code's kind-of complex; in slowpoke the operative code is ((+)*9[-[-([-[-{[...+[...+]]>}]][+--[+--]]>(+)*9)%1000]]>)*21 
14:18:23 <oklopol> ofc, would need to have some sort of fast forward 
14:18:43 <ais523> which is heavily compressed, as usual 
14:18:48 <ais523> it'd be kilobytes long if written out in full 
14:19:08 <ais523> although ofc the preprocessor doesn't add to the power of the language, just makes programs shorter and easier to read 
14:19:09 <oklopol> and so why does that win the program that walks 9 and starts emptying? 
14:19:35 <ais523> slowpoke does a lot of other stuff first in order to slow the opponent down 
14:19:43 <ais523> so it can get away with a slightly slower clear loop 
14:28:01 -!- BeholdMyGlory has joined. 
14:39:58 <ais523> Gregor: where'd EgoBot go? 
14:40:52 <fizzie> You're just BURNING to submit your new killer program, aren't you?-) 
14:44:29 <ais523> <Slashdot> 0ryan0 writes "Utah lawmakers passed a bill today to force public school teachers to teach that the USA is a republic, not a democracy, because a "Democracy" would have "Democrat" in it. 
14:45:02 <fizzie> Gregor really should carry an "Egobot Emergency" pager around. 
14:45:07 <ais523> coppro: oh, btw, there are some signs of that voting reform thing in the UK; I haven't heard anything about it officially or on the news, but I've seen a couple of adverts trying to persuade me to vote in a particular way on AV 
14:46:23 <ais523> hmm, opinions on http://esolangs.org/wiki/Java' and http://esolangs.org/wiki/Java''? 
14:46:33 <ais523> someone just created them, and I'm not sure how to react 
14:49:06 <ais523> gah at LtU/proggit claiming that HTML5/CSS3 is TC based on a finite rule 110 example 
14:49:17 <ais523> rule 110 is only TC if given an infinitely long initialisation 
14:49:29 <ais523> it /definitely/ isn't TC given only a finite playfield, for really obvious reasons 
14:52:47 <oklopol> yeah it easily follows from ramsey theory 
14:53:36 <oklopol> ais523: remove them, clearly we aren't in on the joke, whatever it is. 
14:55:47 <ais523> I think it's an attempt to create an esolang by removing a feature of a language that's essential to its existence 
14:56:02 <ais523> because in Java everything inherits from something other than Object, if you remove Object, the idea is that you wouldn't get a language at all 
14:56:21 <ais523> but I think the page is an attempt to argue that it's still TC anyway 
14:57:47 -!- oerjan has joined. 
14:58:00 <coppro> ais523: oh, cool. referendum then? 
14:58:08 <ais523> yep, by the look of it 
14:58:15 <ais523> although I haven't heard anything "official" 
14:58:24 <coppro> a quick google says it's set for may 5 
14:58:50 <coppro> http://everything2.com/user/Auduster/writeups/The+UK+Alternative+Vote+Referendum%252C+2011 
14:59:11 <ais523> wow the adverts are early in that case 
14:59:59 * coppro casts vote FOR times a billion 
15:01:34 <coppro> ais523, ehird: I consider it your duty to explain to people why this doesn't suck 
15:01:39 <coppro> and try to get as many votes for it as possible 
15:01:49 <coppro> people are dumb and will probably naturally oppose it 
15:02:07 <ais523> I need to check to make sure that it doesn't suck myself, first 
15:02:18 <ais523> good ideas with terrible implementations is something that the government does quite a lot 
15:02:29 <ais523> and I haven't looked at the details of what's being suggested 
15:04:36 <coppro> AFAICT it just changes the balloting system from FPTP to instant-runoff 
15:05:10 <coppro> not quite a proportional system, but infinitely superior 
15:05:25 <ais523> what sort of instant runoff? the French system whereby there's a second ballot with the top two candidates? that one's insane 
15:05:47 <ais523> or the system by which you enter preferences, and it repeatedly eliminates the candidate with the fewest first choices then recalculates the ballot? 
15:05:55 <coppro> the former is not instant 
15:06:11 <ais523> so it's actually instant n-minus-1 runoffs 
15:06:21 <ais523> ofc the second method isn't instant in the UK either, votes are counted by hand by volunteers 
15:06:43 <coppro> it just means there isn't a second round of balloting 
15:08:57 <coppro> I also really like the Condorcet method 
15:09:19 <coppro> (the winner is the one who would beat everyone else in a runoff) 
15:09:27 <ais523> sometimes not producing a result is not really ideal for typical elections 
15:09:37 <ais523> although condorcet + tiebreak for when that happens is used in several open source project elections, IIRC 
15:11:00 <coppro> yeah, a tiebreak should be used 
15:11:23 -!- Sgeo has joined. 
15:11:26 <oklopol> what does it matter what is used? 
15:11:42 <coppro> oklopol: The balloting system is vital 
15:11:49 <coppro> FPTP favors established parties 
15:11:57 <oklopol> well right, that kinda thing 
15:12:23 <coppro> FPTP also means that in a highly fragmented riding, the winner may not be the least objectionable alternative 
15:12:49 <coppro> instant-runoff and condorcet systems are primarily aimed at picking as a winner the least objectionable alternative 
15:13:39 <oklopol> ah that kind of thing as well 
15:14:07 <oklopol> and i love hitler, but love isn't transitive. 
15:14:12 <coppro> this is actually really significant here in Canada, actually 
15:14:32 <coppro> outside of Quebec, there are two big parties (liberals and conservatives) and a third party (the NDP) who win seats 
15:14:37 <oklopol> oh how i wish it was commutative :'( 
15:15:05 <oklopol> i don't actually wish that but that what a poetic thing to say. 
15:15:09 <coppro> NDP and Liberal supporters tend to be far closer toghether where the Conservative supporters are a completely different camp 
15:15:35 <coppro> in practice, many NDP supporters vote strategically for the Liberals 
15:16:11 <coppro> in the riding I'm currently living in, the Conservative candidate won last election by 17 (yes, you read that right) votes 
15:16:18 <coppro> he would have lost in any other form of balloting 
15:16:29 <oerjan> oklopol: itym symmetric 
15:17:00 <oklopol> but maybe i should specify a bit more then 
15:17:03 <oerjan> um this is a relation not an operator 
15:17:27 <oklopol> i'll just union with bools 
15:17:40 <oklopol> right eh? :DSSSSSSSSSSSSSSSSS 
15:18:59 <oklopol> the image is in 0, 1, and 0 is a zero element, then commutativity = symmetry right 
15:20:54 <oerjan> i think there's some technical reason why that's bad to do in foundations 
15:21:39 <oklopol> (aRb => a*b = 1 = b*a => bRa; a*b = 1 implies aRb => bRa => b*a = 1, and b*a = 1 implies a*b = 1) 
15:21:52 <coppro> because relations are properties that have to be taken, fundamentally, as axiomatic 
15:22:40 <oklopol> relations are subsets of a cartesian product 
15:22:54 -!- ais523 has quit (Remote host closed the connection). 
15:23:15 <oklopol> if we define the set {(0, 1)}, then 0 and 1 are axiomatically in a relation 
15:23:44 <oerjan> the relations are at the bottom in logic, before you even start defining sets 
15:24:12 <oklopol> well okay, but you'll have to buy me a beer. 
15:24:49 <oklopol> anyhow i don't care what you start with, that's not what i mean by a relation 
15:24:58 <oklopol> by a relation, i mean a subset of a cartesian product 
15:26:17 <oerjan> WHO MADE A MODULE SYSTEM FOR MATH 
15:26:21 -!- Mannerisky has joined. 
15:27:06 <oklopol> so what's the difference between a relation and a set? 
15:27:32 <oklopol> assuming a relation can have any arity, i still don't know what your definition is 
15:27:46 <oklopol> i've always taken sets as axiomatic 
15:29:07 -!- Mathnerd314 has joined. 
15:29:29 <oklopol> and what do you call a subset of a cartesian product then? 
15:29:38 <oklopol> functions are not relations? 
15:29:41 <oerjan> i was thinking of predicates, i guess 
15:29:51 -!- Sgeo has quit (Read error: Connection reset by peer). 
15:31:37 <oklopol> it is my understanding predicates are something more technical than sets, and i do not speak of them because i don't have any idea what they are 
15:32:45 <oklopol> i assume the fundamental stuff is pretty trivial and stupid, but i would certainly like to learn that stuff 
15:35:39 <coppro> ais523: http://www.bbc.co.uk/news/uk-politics-11243595 
15:36:39 <Zwaarddijk> so england is getting into a rotten-boroughs like situation again? 
15:37:27 <coppro> it's just the issue that fptp sucks 
15:41:38 <Zwaarddijk> I have a feeling switching to AV will cost more than $156 
15:45:12 -!- oerjan has quit (Remote host closed the connection). 
16:20:03 -!- augur has quit (Remote host closed the connection). 
16:24:02 -!- augur has joined. 
16:36:56 -!- ais523 has joined. 
16:42:56 -!- BeholdMyGlory has quit (Read error: Operation timed out). 
16:43:04 -!- Behold has joined. 
16:43:06 -!- Behold has quit (Changing host). 
16:43:07 -!- Behold has joined. 
16:55:49 -!- azaq23 has joined. 
16:55:59 <quintopia> can poll(2) be used to detect changes to named semaphores? 
16:57:33 -!- elliott has joined. 
16:58:39 <elliott> 06:06:07 <Sgeo> cheater00, BTW, I decided to do my own thing. While I'm not thrilled with the outcome, I'm pretty sure I like it better than the probable outcome of doing what you suggested 
16:58:40 <elliott> 06:07:07 <cheater00> Sgeo: are you trying to prove you're a non-lobotomised human with own thoughts? 
16:58:40 <elliott> 06:07:44 <cheater00> Sgeo: i'm asking because it's the third or fourth time you're mentioning you'll do something else, and it seems like over-compensating. 
16:58:44 <elliott> Sgeo: troll. feeding. stop. 
16:59:56 <quintopia> elliott: can poll(2) be used to detect a change in a list of named semaphores? i can't seem to find an answer to this question anywhere. 
17:00:24 <elliott> quintopia: dunno, I tend to avoid bugs like that (POSIX anythings) 
17:00:37 <elliott> um do semaphors actually have fds? 
17:00:56 <elliott> quintopia: "poll() performs a similar task to select(2): it waits for one of a set of file descriptors to become ready to perform I/O." 
17:01:00 <elliott> quintopia: do read() and write() work on them? 
17:01:48 <elliott> 14:37:26 <ais523> I fear the strategy shown there may have actually broken BF Joust somewhat, it appears to be more or less completely fatal to defence programs 
17:02:01 <quintopia> well, i don't know. i only know that the sem_ functions work on them. i suppose you could always read a semaphores value though. 
17:02:30 <elliott> quintopia: then it might work. TIAS. 
17:02:30 <ais523> elliott: don't worry, I thought of a way to defend against them on the way home 
17:02:35 <ais523> although I'm not sure it's practical, at least it exists 
17:02:57 <ais523> but I'm still worried it may make defence programs not really worth it 
17:03:00 <oklopol> do you need aoc to prove its existance 
17:03:22 <elliott> oklopol: are you trolling with this "BF JOUST CAN'T POSSIBLY WORK" stuff in the logs :) 
17:03:25 <ais523> ofc, if it drives defence programs out of existence, there'll be no reason to use it, especially as it makes you weaker against opposing non-defence programs 
17:03:38 <ais523> elliott: I think he just made the same mistake as Gregor 
17:03:46 <elliott> oklopol: it's trivial to beat any given program, but you don't just play against one program 
17:03:48 <ais523> i.e. concluding that a game in which there was a counter to every strategy wasn't interesting 
17:03:50 <elliott> you play against an entire hill 
17:04:05 <elliott> so you can't just target one, because everything else will beat you 
17:04:07 <ais523> my opinions are the other way round, games in which there's a strategy that can't be countered aren't interesting! 
17:04:47 <oklopol> no i think a random program will beat every program with equal probability, as long as it's the correct kind of random 
17:04:51 <oklopol> but maybe there's no such kind 
17:05:06 <ais523> a random program would lose to even a very simple attacker 
17:05:19 <ais523> due to not aiming for a win condition, whereas the attacker would be 
17:05:27 <oklopol> erm, what if it's the kind of random that only produces your unbeatable program? 
17:05:35 <oklopol> i'm not saying a random bf program wins everything 
17:05:44 <elliott> oklopol: http://esolangs.org/wiki/BF_Joust_strategies#2011 you may want to read the defend13, furry_furry_leather_discipline_girls and -strapon_pegging_girls, and waterfall3 entries 
17:05:49 <oklopol> i'm saying something really vague and meaningless 
17:05:50 <ais523> my program isn't unbeatable, it just wins against everything on the hill atm 
17:05:59 <elliott> there's also allegro, current top of the egobot hill, but without explanation 
17:06:14 <ais523> although I am seeing worrying centralisation; slowpoke, space_elevator, and FFSPG are quite similar 
17:06:21 <ais523> although the details are different 
17:06:37 <ais523> the funny thing about slowpoke is that it was beating all but 3 programs more or less immediately upon writing it 
17:06:44 <ais523> and then beat all the rest with merely bugfixes 
17:06:47 <elliott> yah i would have told oklopol to read the space_elevator entry but nobody will ever write one 
17:06:56 <elliott> ais523: btw, shrink your waterfall3 description, it's tl;dr verbose :) 
17:07:01 <ais523> I did some constant-tweaking, but only for increasing the victory margin 
17:07:01 <elliott> ais523: (quintopia wanted to put it in a spoiler block) 
17:07:30 <ais523> the issue is, any abbreviation would come to "Tries lots of different locks, trying a new one every time a previous one fails" 
17:07:38 <ais523> which isn't particularly informative 
17:07:47 <ais523> the reason it's so long is that it has so many control paths, all of which do different things 
17:08:06 <elliott> 15:25:57 <ais523> coppro: oh, btw, there are some signs of that voting reform thing in the UK; I haven't heard anything about it officially or on the news, but I've seen a couple of adverts trying to persuade me to vote in a particular way on AV 
17:08:23 <elliott> and thus far superior to first-past-the-post 
17:08:30 <ais523> elliott: yes, but I'd heard multiple definitions of instant-runoff 
17:08:33 <elliott> http://en.wikipedia.org/wiki/Instant-runoff_voting :-P 
17:08:43 <ais523> also, I still need to see the details to be convinced that the way it's implemented isn't insane 
17:08:59 <elliott> ais523: can't be any more insane than our current system. 
17:09:09 <ais523> I'm not quite sure how the government could mess it up, but am not convinced that they won't find a way anyway 
17:09:15 <elliott> 15:29:56 <ais523> gah at LtU/proggit claiming that HTML5/CSS3 is TC based on a finite rule 110 example 
17:09:15 <elliott> 15:30:06 <ais523> rule 110 is only TC if given an infinitely long initialisation 
17:09:46 <elliott> ais523: re Java' and Java'': remove them, they're not even fleshed out/coherent enough to be joke language entries 
17:10:06 <elliott> or add [[Category:Shameful]] 
17:10:17 <elliott> which -- ha -- has still avoided Graue rage 
17:10:39 <ais523> adding [[Category:Shameful]] is a good idea, but someone else can do that 
17:10:51 <elliott> let's add it to every BF derivative 
17:11:10 <ais523> elliott: that incident (the CSS rule 110) made me register a reddit account just to try to correct people 
17:11:17 <ais523> I should have made it a novelty account, really 
17:11:25 <ais523> your_system_is_not_turing_complete or something 
17:11:28 <elliott> ais523: Turing_Completeness_Does_Not_Work_That_Way? :p 
17:11:33 <elliott> worst novelty account ever 
17:11:43 * elliott immediately buys ais523 reddit gold (not really) 
17:11:51 <elliott> 36 months of it for $89.97! 
17:12:06 <elliott> ais523: wow at the reply to http://www.reddit.com/r/programming/comments/g0d5g/breaking_news_html5css3_is_turing_complete/c1k03fg?context=3 
17:12:10 <elliott> WebForms 2: TURING COMPLETE 
17:12:42 <elliott> 15:42:24 <coppro> ais523, ehird: I consider it your duty to explain to people why this doesn't suck 
17:12:42 <elliott> 15:42:30 <coppro> and try to get as many votes for it as possible 
17:12:42 <elliott> 15:42:39 <coppro> people are dumb and will probably naturally oppose it 
17:12:48 <ais523> what is reddit gold anyway? 
17:12:51 <elliott> coppro: the standard propaganda against is "ONE PERSON, ONE VOTE: THAT'S DEMOCRACY!" 
17:13:10 <ais523> elliott: actually, the adverts here are mostly along the lines of "it's too expensive and won't make any difference" 
17:13:12 <elliott> ais523: Condé Nast's desperate attempt at making money off its unwise purchase 
17:13:29 <elliott> We plan to continually add features over time. Right now we're offering: 
17:13:29 <elliott> The ability to turn off sidebar ads, sponsored links, both, or neither 
17:13:29 <elliott> The option of seeing twice as many comments at once without having to click "load more comments" 
17:13:29 <elliott> New comment highlighting: see what's been posted since the last time you visited a thread 
17:13:30 <elliott> Friends with Benefits™ -- you can add notes to your friends to help you keep track of them all 
17:13:32 <elliott> Access to a super-secret members-only community that may or may not exist 
17:14:44 <ais523> that reminds me of slashdot subscriptions 
17:15:03 <elliott> ais523: I know how to ensure AV passes! 
17:15:19 <ais523> the funny thing is, on slashdot the main subscription-only feature (turning off adverts) is available to anyone with sufficient karma 
17:15:29 <elliott> use the Overton window: run adverts advocating stochastic elections 
17:15:40 <elliott> immediately, AV seems like the most safe, comforting system on the planet 
17:16:07 <ais523> even though stochastic elections would probably produce better results in practice? 
17:16:38 <elliott> (I believe it's an Actual Theorem Fact(TM) that the only system where voting for your true preference is always the rational decision is stochastic elections) 
17:16:46 <Gregor> My advisor points out that if you speak French better than you speak typography lingo, then "Comic Sans" reads as "not funny" 
17:16:58 <elliott> Comic Sans as typography lingo... I weep 
17:17:07 <Gregor> "Sans" as typography lingo 
17:17:12 <elliott> 15:54:58 <oklopol> and i love hitler, but love isn't transitive. 
17:17:12 <elliott> 15:55:28 <oklopol> oh how i wish it was commutative :'( 
17:17:12 <elliott> 15:55:56 <oklopol> i don't actually wish that but that what a poetic thing to say. 
17:17:22 <Gregor> Since of course it just means "without", but is implied to mean sans serif. 
17:17:24 <elliott> But that what a poetic thing to say, oklopol. 
17:17:42 <elliott> 15:57:20 <oerjan> oklopol: itym symmetric 
17:17:42 <elliott> 15:57:38 <oklopol> well not necessarily 
17:17:42 <elliott> 15:57:43 <oklopol> commutative works too 
17:17:42 <elliott> 15:57:51 <oklopol> but maybe i should specify a bit more then 
17:17:43 <elliott> 15:57:54 <oerjan> um this is a relation not an operator 
17:17:45 <elliott> 15:58:11 <oklopol> why not 
17:17:47 <elliott> 15:58:17 <oklopol> i'll just union with bools 
17:17:49 <elliott> 15:58:31 <oklopol> right eh? :DSSSSSSSSSSSSSSSSS 
17:18:40 <oklopol> i made oerjan leave by asking him about predicate logic in pm :( 
17:18:45 <oklopol> i think he doesn't like me anymore 
17:18:47 <elliott> 16:22:20 <Zwaarddijk> cool typo in the article 
17:18:47 <elliott> 16:22:30 <Zwaarddijk> I have a feeling switching to AV will cost more than $156 
17:18:47 <elliott> 16:22:35 <Zwaarddijk> whoops wrong key 
17:18:47 <elliott> 16:22:37 <Zwaarddijk> £156 
17:18:55 <elliott> Zwaarddijk: nah, that's like $384,172,489,189 
17:18:57 <oklopol> maybe predicate logic is his one weakness 
17:20:39 <elliott> ais523: terrifying idea: get zzo38 to play Agora 
17:21:37 <oklopol> so this asbestos thing, is it all a big hoax? we rented this... thing, and there are these asbestos pipes that are rather decayed, and people have drilled huge holes in them 
17:21:56 <elliott> oklopol: it's a big hoax, if hoax is defined as absolutely not a hoax 
17:22:04 <elliott> also, I'm scared that you can't think of a better word than "thing". 
17:22:23 <oklopol> well we rented an official office 
17:22:39 <elliott> how much money do you bastards have anyway 
17:22:50 <oklopol> we work, so... incredible amounts? 
17:22:57 <ais523> oklopol: asbestos particles in the air do gradual irreversible lung damage 
17:23:06 <elliott> ais523: it's ok, oklopol is immune to lung damage 
17:23:06 <oklopol> i manage to use about a fifth of my salary 
17:23:11 <ais523> solid asbestos in itself isn't dangerous unless something releases it into the air, I think 
17:23:15 <oklopol> and i get less salary than people usually do 
17:23:18 <elliott> oklopol: just allocate the rest to hookers and cocaine 
17:23:47 <Gregor> oklopol is a sophisticated chatterbot. 
17:23:49 <oklopol> ais523: i'm aware, but to what extent? and is it enough to have pipes with a few holes? 
17:24:08 <elliott> oklopol: have you ever been sick 
17:24:28 <elliott> ais523: "Nope. While this very clever person was able to create a Turing-complete machine in HTML and CSS, it doesn't run by itself. The user has to repeatedly click to step it." 
17:24:29 <oklopol> we have pointed the pipes out to many people in the building who should be in charge of this sort of thing, and they're like "oh, asbestos, right, maybe someone should do something about that." 
17:24:35 <ais523> oklopol: I don't know either 
17:24:35 <elliott> ais523: so HTML/CSS is as powerful as a single regexp :P 
17:24:35 <oklopol> "i'm gonna go home now, have fun here" 
17:24:39 <elliott> ais523: with a "do it again" button 
17:24:52 <Gregor> elliott: ... HTML + CSS is TC? *brain axplote* 
17:25:02 <ais523> both reddit and LtU are trying to claim it is 
17:25:07 <ais523> and I'm trying to explain the holes in the proof 
17:25:12 <elliott> it's rule 110; not only do you have to click to step, but it's finite 
17:25:29 <ais523> there are a huge number, but the one I mentioned was the one that Wolfram got wrong in his own proof that a 2,5 machine was TC (it is, but the proof it was was wrong) 
17:25:40 <ais523> elliott: it isn't actually click to step 
17:25:40 <oklopol> "[20:05:18] <elliott> oklopol: have you ever been sick" <<< yes, i'm sick occasionally 
17:25:45 <ais523> you step by pressing tab and space alternately 
17:25:46 <elliott> ais523: well, it's press buttons to step 
17:26:44 <ais523> I think of buttons as referring to mice 
17:27:07 <oklopol> elliott: i even had a headache today 
17:28:38 -!- pikhq_ has joined. 
17:28:46 -!- pikhq has quit (Ping timeout: 260 seconds). 
17:28:48 <elliott> i'm trying to figure out what the worst program is, anyone have any opinions 
17:31:01 <ais523> "worst program" needs to have some set of programs to find the worst of 
17:31:06 <ais523> do you mean "all programs ever written"? 
17:33:46 <Ilari> APNIC down 0.09: 256k+3x128k+4x64k+2x32k to China, 2x256k to Malaysia, 64k+8k+/32 to South Korea, 16k to Singapore, 4k to Taiwan, 4k+2k to Japan, 4k+1k+2x/32+/48 to Australia, 512+/48 to Indonesia, 
17:34:58 <elliott> ais523: either all programs that anyone uses any more, or all programs ever written 
17:35:06 <elliott> and badness is defined by the amount of pain it causes 
17:35:15 <Gregor> That is, Big Rigs: Over the Road Racing 
17:35:18 <elliott> i.e. a really blandly terrible program doesn't really count as worse 
17:35:23 <elliott> because nobody will bother using it 
17:35:38 <elliott> my contender is X11, because every Unix user has to deal with it :) 
17:36:21 <Gregor> Not even close, X11 nowadays is basically just bloated by history, you can do SO MUCH WORSE. 
17:36:39 <quintopia> i'm going to go with with...the entire windows operating system. it causes pain to far more people. 
17:37:42 <elliott> Gregor: Uhh, no, X11 was pretty thoroughly terrible from the start. :p 
17:38:00 <Gregor> elliott: BlahblahblahIwurvetrollingXyaaay 
17:38:12 <elliott> quintopia: hmm, does Windows cause the problems, or does the malware? 
17:38:33 <oklopol> Ilari: you prolly know everything about asbestos btw? 
17:38:54 <quintopia> elliott: what's the difference again? 
17:39:29 <fizzie> "You don't pay for the malware", isn't that the canonical response? 
17:40:12 <Ilari> oklopol: Not really... But you can ask. 
17:40:33 <oklopol> http://i55.tinypic.com/140j8js.png here's the pipe in question 
17:41:08 <oklopol> Ilari: mainly, should we be at all worried about asbestos pipes that are in very bad shape, or only if we actually start cutting them 
17:41:25 <oklopol> i can imagine balls may fly at them etc 
17:41:52 <elliott> oklopol: that pipe looks like THE SAFEST THING 
17:41:59 <Ilari> oklopol: Only if you start cutting them. 
17:42:30 <Ilari> But of course, if they are in very bad shape, soon somebody might start cutting them. :-/ 
17:42:45 <oklopol> Ilari: did you look at the picture? :P 
17:43:04 <oklopol> you touch that thing and all kinds of stuff falls down 
17:43:54 <Ilari> What falls down is likely just paint. 
17:44:30 <oklopol> second question, that doesn't look very professionally done, is there a chance of redidual dust stuff still being in the air? 
17:44:39 <elliott> yes. there is all the chances. 
17:45:02 <oklopol> even after X years, where X can be determined to be rather big from the pic 
17:45:20 <oklopol> elliott: the air changes all the time, and the particles are practically weightless 
17:45:39 <elliott> the chances... are not bounded. 
17:45:49 <quintopia> oklopol: you can get a lot of money suing if you contract mesothelioma 
17:45:51 <oklopol> so it's clear that they leave, but if you had 3% of them originally, and say 0.000001% is fatal, then again hard to say. 
17:46:04 <elliott> quintopia: didn't you hear 
17:46:07 <elliott> he already has all the money. 
17:46:13 <Vorpal> quintopia, on the other hand, having that condition is probably not worth that money 
17:46:17 <oklopol> quintopia: i'm sure i'll be have all the money i need in 10-40 years 
17:46:28 <oklopol> when you'll see the first symptoms 
17:46:45 <quintopia> elliott: no you have all the money. all the ZWD in zimbabwe! 
17:46:49 <Ilari> I have never heard of asbestos paint. Asbestos generally isn't used that way. 
17:46:51 <elliott> EVERYONE HAS ALL THE MONEY. 
17:47:12 <oklopol> asbestos is used in all kinds of stuff afaiu 
17:47:16 <Vorpal> <Ilari> APNIC down 0.09 [...] <-- compared to when? 
17:47:21 <oklopol> in walls, in pipes, in glues 
17:47:22 <elliott> there's a reason tey call it as-best-os 
17:47:32 <Vorpal> Ilari, okay that's pretty large 
17:47:36 <oklopol> elliott: there's a city named something liek that 
17:47:53 <elliott> so oklopol, is your os done yet, ubuntu is annoying 
17:47:54 <oklopol> there's this van of AsBestMen in the parking lot of that place :P 
17:48:03 <quintopia> if everyone has all the money, how come bill gates gets to decide what to do with so much of it, and i get to decide what to do with so little of it? 
17:48:06 <Vorpal> oklopol, not any longer. At least in Sweden it has been banned for new installations for several years. 
17:48:12 <elliott> quintopia: you just have to use all the money. 
17:48:34 <oklopol> Vorpal: here too i think, but it's still in use in practically every building that's done before 90's 
17:48:55 <oklopol> )before that there was no buildings probably) 
17:48:56 <Vorpal> <elliott> so oklopol, is your os done yet, ubuntu is annoying <-- he is making one? But surely you would only find your own one usable? 
17:49:09 <oklopol> oh i'm making one with fine fine progress 
17:49:18 <elliott> Vorpal: he pretended he was going to make one years ago ;D 
17:49:25 <elliott> and, well, it'd be close enough. to develop @ on. 
17:49:39 <elliott> <oklopol> )before that there was no buildings probably) 
17:49:56 <oklopol> when were buildings invented anyway? 
17:50:02 <Vorpal> <elliott> Vorpal: he pretended he was going to make one years ago ;D <-- sounds familiar... hm... Oh wait, I was thinking of you... 
17:50:25 <oklopol> i made a lot of theoretical progress on my os 
17:51:14 <Vorpal> oklopol, nice. I don't remember what made your OS different from previous ones. Could you please mention the main points of it? 
17:51:15 <elliott> quintopia: the best OS possible 
17:51:30 <elliott> Vorpal: it was oklotalk and you just manipulated objects from the interwebs. 
17:51:32 <quintopia> elliott: the best at achieving which goals? 
17:51:33 <elliott> (had to try and do it in one sentence) 
17:51:34 <oklopol> Vorpal: well you know, perfection and stuff. 
17:51:37 <elliott> (some accuracy may be lost) 
17:52:01 <Vorpal> elliott, and that is why it fails. You have god damn first system syndrome. 
17:52:09 <Zwaarddijk> oklopol: buildings go back to 7000BCE at least, iirc? 
17:52:15 <quintopia> elliott: will it get me sex with all the best-looking ladies? 
17:52:15 <Ilari> oklopol: Looks like that pipe leaks a bit around the valve and that's the reason why that paint has peeled away. 
17:52:23 <oklopol> my only programming goal atm is to make a nice text editor 
17:52:27 <elliott> Vorpal: no i don't, i just haven't put in all the things that break it 
17:52:38 <elliott> oklopol: hey i did that a while ago :/ 
17:52:47 <elliott> it wss awesome but i never finished. also, you'd probably hate it. 
17:53:11 <Vorpal> elliott, so it is a minimalist OS? 
17:53:33 <oklopol> elliott: you probably didn't make the kind of text editor i want 
17:53:41 <elliott> Vorpal: http://tunes.org/ <-- let a web server spend hours talking to you instead 
17:53:48 <oklopol> and i'm not interested in going into detail on that 
17:53:55 <Zwaarddijk> oklopol: apparently, buildings go at least 42k years back 
17:54:00 <oklopol> because it's not really a top priority 
17:54:15 <elliott> oklopol: it was just a big window of text where every single change got saved automatically, it indented for you, and it made the file all pretty colours. 
17:54:20 <oklopol> Zwaarddijk: i don't do si, is 42k before or after the 60's? 
17:54:37 <oklopol> elliott: that's kind of 90. 
17:54:53 <elliott> oklopol: no, most 90s editors had menus and toolbars and shit 
17:55:30 <oklopol> Ilari: perhaps, perhaps. the surface under the brown stuff doesn't really look very nice and smooth irl tho 
17:55:38 <elliott> oklopol: the other features of mine were: non-stupid searching, and you can run some code to do all your boring editing for you :P 
17:55:43 <Zwaarddijk> oklopol: scholarly consensus is that Elvis may indeed have left some building at some point 
17:55:43 <elliott> who needs regexps when you can just use the language's regexp lib 
17:55:58 <Vorpal> all you need is a text area, a mode line and a minibuffer 
17:56:28 <oklopol> elliott: that's still kind of 50's compared to mine 
17:56:37 <elliott> oklopol: yah, i'm old skool 
17:56:41 <oklopol> mine just has manual editing + magic 
17:56:44 <elliott> oklopol: really though, who needs any better until @ exists 
17:56:50 <oklopol> well that's the great part 
17:56:58 <oklopol> i'm not entirely sure myself either 
17:57:01 <Vorpal> elliott, so how would you do auto completion in a vt? Pop ups would be kind of messy there 
17:57:29 <elliott> what you should do is just morph the bottom of the screen into the appropriate input form as required. 
17:57:32 <Vorpal> elliott, with popups I meant like auto completion menus in GUI IDEs 
17:57:38 <elliott> so like a minibuffer on crack, except not there 99% of the time 
17:57:48 <elliott> for completion, sure, you can do that with an intellisense-kinda thing, but whatever, I don't use completion 
17:57:49 <Vorpal> elliott, right. Basically auto-hiding mini buffer 
17:57:55 <elliott> Vorpal: no, minibuffer just does one line of text 
17:58:07 <elliott> LOL REPLACE WITH WHAT: ...[RET] 
17:58:11 <ais523> the Emacs minibuffer grows to multiple lines if necessary nowadays 
17:58:21 <ais523> but its definition of "necessary" is rather restrited 
17:58:37 <Vorpal> elliott, okay, mutli-line auto hiding mini buffer. Sure. 
17:58:48 <elliott> Vorpal: it's not about multiline 
17:59:05 <elliott> Vorpal: there's text boxes, that's like saying a preferences dialogue is jus ta bunch of lines 
17:59:06 <oklopol> the best text editor would be one where you just hit random keys and magically: the correct thing happens 
17:59:08 <elliott> that doesn't even make any sense 
17:59:12 <elliott> there could be checkboxes too for instance. 
17:59:17 <Vorpal> elliott, uh. Depends on the dialog. 
17:59:20 <elliott> e.g. "[ ] Case-insensitive" 
17:59:23 <elliott> is that just another input line? no. 
17:59:27 <Vorpal> elliott, emacs customisation stuff is just a bunch of lines 
17:59:49 <oklopol> [20:40:17] <oklopol> the best text editor would be one where you just hit random keys and magically: the correct thing happens 
17:59:49 <oklopol> [20:40:19] <elliott> that doesn't even make any sense 
17:59:49 <oklopol> [20:40:20] <oklopol> i'm aiming for this 
17:59:54 <oklopol> i should've said the elliott part too 
17:59:55 <Vorpal> elliott, also I seen such check boxes in ncurses or similar :P 
18:00:48 <oklopol> that's also how my os works 
18:00:50 <Vorpal> <oklopol> [20:40:17] <oklopol> the best text editor would be one where you just hit random keys and magically: the correct thing happens <-- why hit keys at all? I suggest you aim further! It should just make stuff make sense without any input 
18:01:00 <oklopol> Vorpal: lol, that's impossible 
18:01:13 <Vorpal> oklopol, not more so than your :P 
18:01:30 <elliott> oklopol: so that mind-interface thing 
18:01:38 <quintopia> oklopol: but you can still do better. have your text editor interface with a webcam. images of the user's face are sufficient input, no? 
18:01:53 <oklopol> no when i realized mine was broken and that i was too lazy to send it back, i sort of stopped playing with it 
18:01:56 <Vorpal> elliott, hey you correct my spelling quite often 
18:02:12 <Vorpal> elliott, so will I then 
18:02:14 <oklopol> only two of the sensors work, and i didn't exactly want any extra challenge 
18:02:26 <elliott> oklopol: maybe you're just not trying hard enough 
18:02:33 <elliott> oklopol: anyway that'd be a better edit interface 
18:02:36 <elliott> think things, magic happens 
18:02:40 <oklopol> "[20:42:49] <quintopia> oklopol: but you can still do better. have your text editor interface with a webcam. images of the user's face are sufficient input, no?" <<< yeah but i don't like showing my face to my underlings 
18:02:55 <elliott> "By installing Java, you will bea ble to experience the power of Java, brought to you by Oracle." 
18:11:06 <elliott> oklopol: can i have infinite memory? 
18:12:31 <quintopia> elliott: i can. i have a stick of RAM with infinitely many bytes, but each byte is half as wide as the preceding one. 
18:13:24 <quintopia> i can't use it because i don't know what to do with 2^-1024 of a bit. :/ 
18:17:48 -!- poiuy_qwert has joined. 
18:18:18 -!- pikhq_ has quit (Read error: Operation timed out). 
18:18:46 -!- pikhq has joined. 
18:23:51 -!- poiuy_qwert has quit (Ping timeout: 246 seconds). 
18:24:56 -!- poiuy_qwert has joined. 
18:28:22 -!- zzo38 has joined. 
18:31:29 -!- poiuy_qwert has quit (Quit: This computer has gone to sleep). 
18:39:24 <nooga> http://pastie.org/1652618 
18:42:17 <elliott> nooga: random c generator again? 
18:42:34 <nooga> trying to improve it 
18:42:43 <elliott> nooga: please, please write a function to breed two C expressions, and then evolutionify it 
18:43:30 <elliott> nooga: try and generate fibonacci :) 
18:43:37 <elliott> maybe remove pointers first though, to give it an easier time 
18:51:37 <Vorpal> <elliott> nooga: please, please write a function to breed two C expressions, and then evolutionify it <-- would be cool but *how*? 
18:51:53 <elliott> Vorpal: just pick some arbitrary combination method :P 
18:52:01 <elliott> breeding linear stuff is much easier ofc 
18:52:58 <olsner> ooh: https://github.com/elitheeli/oddities/blob/master/rule110-grid.html 
18:53:00 <Vorpal> elliott, genetic algorithms are hard to get right even for linear stuff (lots of fudge factors such as population size, mutation rate, and so on). Your suggestion is near impossible. 
18:53:14 <elliott> Vorpal: Um, it's not like genetic programming isn't done. 
18:53:24 <Vorpal> elliott, indeed. But not on C code! 
18:53:27 <elliott> olsner: we've seen; it does not prove TCness of anything 
18:53:41 <elliott> olsner: not only is it finite, but you have to manually step onwards (by that metric, a single regexp is TC) 
18:54:45 <Vorpal> elliott, are you sure manually stepping forward a regex would be TC? 
18:55:26 <elliott> Vorpal: you can do a BCT step in one regexp... or was it three, anyway, same thing 
18:55:38 -!- BeholdMyGlory has joined. 
18:56:00 -!- Behold has quit (Read error: Operation timed out). 
18:56:57 <elliott> zzo38: what was that very short code you had for clearing the vga text screen? 
18:57:47 <olsner> something involving rep stosd? 
18:58:02 <zzo38> elliott:  http://sprunge.us/gRUV  This boots the operating system too, after clearing the screen. 
18:58:24 <zzo38> (Actually it write "p" but you can change it to make it black instead) 
18:58:30 <zzo38> (Or any other color) 
18:59:11 <zzo38> olsner: It does involve repeat STOSB 
19:00:38 <zzo38> elliott: Why do you need this? 
19:00:57 <elliott> zzo38: for my one-sector Forth 
19:01:04 <olsner> if you're in real mode, maybe there's a bios call for clearing the screen 
19:01:12 <elliott> arguable whether it's shorter, though 
19:01:21 <elliott> hmm, is there a short way to say "move this variable to the next multiple of 80"? 
19:01:27 <olsner> set ax, int foo, should be pretty short 
19:02:01 <zzo38> Do the AAM and AAD instructions help? 
19:02:49 <zzo38> Probably you can use BIOS calls for a lot of things, and you should not need any mode other than real mode. 
19:03:34 <elliott> olsner: looks like the bios clear screen call takes a ton of parameters 
19:04:34 <Vorpal> elliott, didn't you say 510 bytes? Isn't a sector 512 bytes? 
19:05:06 <olsner> the 2 kast bytes must be the correct magic 
19:05:30 <zzo38> That is, to boot from the disk. 
19:05:56 <Vorpal> olsner, doesn't it have to contain a MBR as well+ 
19:06:09 -!- Lymia has quit (Ping timeout: 248 seconds). 
19:06:17 <zzo38> No, just the last 2 bytes are necessary for the BIOS to boot from it. 
19:06:28 <olsner> but you mean a partition table? no, only if you use partitions :) 
19:06:28 <Vorpal> god I hate the PC architecture 
19:07:01 <elliott> hmm, if I pack after displaying, then the code is two bytes shorter 
19:07:04 <elliott> but OTOH, everything shows as normal ascii 
19:07:12 <elliott> so you have no idea how your word is being tortured :) 
19:07:31 <elliott> Vorpal: that's why you should run @/Reduceron 
19:07:58 <zzo38> I guess as long as it is still being unique/OK it can work like packing like that 
19:08:02 <Vorpal> elliott, You made a suggestion where one component is technically not vaporware! 
19:08:46 <zzo38> You can just use low six bits for packing, and it should be enough, no add/subtraction is necessary. 
19:09:24 <zzo38> (and punctuation can be used with no difficulty) 
19:09:54 -!- Lymia has joined. 
19:09:54 -!- Lymia has quit (Changing host). 
19:09:55 -!- Lymia has joined. 
19:10:10 <olsner> don't you still want to subtract to get rid of the first 32 characters? the control codes and stuff 
19:10:22 <elliott> hmm, now it isn't working :( 
19:10:33 <elliott> for ! I'm going to use ^ :-) 
19:10:36 <zzo38> olsner: If you pack only after displaying, no need to subtract anything. 
19:10:43 <elliott> olsner: not sure what to use for : and ; though 
19:11:35 <zzo38> You are using 0x40 to 0x5F? OK. Perhaps then use [[ and ]] instead of : and ; 
19:11:51 <elliott> ah, that could work; except I'm doing it colorForth style, so : and ; don't necessarily balance 
19:12:28 <elliott> (same as normal forth : hello if else loop then ; ) 
19:12:35 <olsner> or ` and , if those are in range? 
19:13:41 <zzo38> No it isn't in range 
19:14:19 <zzo38> elliott: Yes, that is correct. 
19:14:29 <elliott> so then only [ and ] are left 
19:14:47 <zzo38> There are commands [ and ] in Forth, although they are not needed in colorForth. 
19:15:18 <elliott> http://www.cs.cornell.edu/talc/ typed assembly language! 
19:15:29 <elliott> actually it'd be cool to have an assembler where the registers a subroutine clobbers are part of its type 
19:15:54 <zzo38> Actually if it is like colorForth then : is not needed either because you can change the color. Although maybe your system does not do that. I don't know yet. 
19:17:21 <elliott> Yes, I do not have colour; really in colorForth the colour is just invisible mode switching words 
19:17:33 <elliott> So it's simpler to have the words themselves when aiming for speed. 
19:17:46 <elliott> \ will simply, upon seeing another \, finalise the word it is creating, and go on to the next one 
19:17:59 <zzo38> Yes it is like that. So, then you can just have the words themself. But then you would need something to switch out of compile mode. 
19:18:13 <zzo38> If you use normal Forth [ and ] then you can just use [ to switch out of compile mode 
19:18:48 <elliott> Perhaps \ will simply return when it sees [ 
19:19:13 -!- oerjan has joined. 
19:21:04 -!- BeholdMyGlory has quit (Read error: Operation timed out). 
19:21:57 -!- BeholdMyGlory has joined. 
19:22:23 <elliott> nah, bios would involve clobbering 
19:26:53 <elliott> mov dword: possibly not actually space-saving in 16-bit code! :P 
19:27:14 <fizzie> Is "char" a literal here? Because "mov ax, 0x0a00|char" is probably a byte shorter in 16-bit code. 
19:27:39 <elliott> But I gave up on that avenue anyway. 
19:27:40 -!- pikhq has quit (Read error: Operation timed out). 
19:27:43 <elliott> Directly writing to VGA memory is shorter. 
19:27:48 <elliott> mov dword [es:0], 0x07520746 
19:27:48 <elliott> mov dword [es:4], 0x07480754 
19:27:52 <elliott> here's what i'm currently trying to shrink :P 
19:28:14 -!- pikhq has joined. 
19:28:20 <olsner> use di to point to vga memory, use string-writing? 
19:28:39 <elliott> olsner: hmm... might work, but i dunno, those movs are only a few bytes 
19:28:44 <elliott>     14 0000000D 2666C7060000460752-             mov dword [es:0], 0x07520746 
19:28:44 <elliott>     16 00000017 2666C7060400540748-             mov dword [es:4], 0x07480754 
19:28:50 <Vorpal> <elliott> actually it'd be cool to have an assembler where the registers a subroutine clobbers are part of its type <-- nice idea 
19:28:57 <elliott> olsner: actually I use di to point to vga memory position / 2; si is di*2 in my read word routine 
19:29:20 <olsner> why is di divided by two instead of being a usable memory offset? 
19:29:31 <Vorpal> elliott, you could possibly have some sort of "automatically assign register to this bit" then that you would look at things you call 
19:29:38 <elliott> olsner: ...good question, I think I used di for something else at one point 
19:30:13 <fizzie> 2666C706000046075207 is quite an enormous opcode; that 4-byte offset and 4-byte immediate value is quite a winner. 
19:30:15 <olsner> a series of mov al,52; stosw; mov al,y; stosw might be shorter than all of that 
19:30:24 <elliott> elliott@elliott-MacBookAir:~/Code/sixth$ make >/dev/null; wc -c sixth.o 
19:30:24 <elliott> elliott@elliott-MacBookAir:~/Code/sixth$ make >/dev/null; wc -c sixth.o 
19:30:59 <olsner> lodsb would work if it's an actual constant and you can affort to make ds:si point to it 
19:31:12 <zzo38> Perhaps instead of "FRTH\n" just display "ok" on the screen. That would probably make it shorter. 
19:31:17 <elliott> olsner: I can't really afford that :P 
19:31:33 <elliott> I can even have a "display ok" routine. :p 
19:31:56 <elliott> Yes; the "ok" at the end of the previous line is the prompt :P 
19:32:16 <Gregor> Turn that into "> " and you don't even need a newline :P 
19:32:22 <elliott> Gregor: Ew so anti-Forthy. 
19:32:32 <elliott> Gregor: I'd still have to increment si by four :P 
19:33:06 <Vorpal> I hate x86 and I hate the PC platform. 
19:33:30 <zzo38> Gregor: If you do "> " then you will need a newline before it, but not after it. 
19:33:32 <elliott> Vorpal: ha ha, you've fallen into The Trap 
19:33:35 <fizzie> You don't *need* the newline with the traditional "ok" prompt either, it's just a quality-of-implementation issue. 
19:33:41 <elliott> not long until you're complaining that every OS sucks 
19:33:45 <Ilari> Increment SI by four. Four INC SI's would be 4 bytes. ADD SI, 4 might be shorter. 
19:33:47 <Vorpal> elliott, I have held this opinion for a long time... 
19:33:55 <olsner> add si,4 should be two bytes 
19:33:57 <elliott> Vorpal: yes, but you're going to start bothering everyone else with it, like me >:D 
19:34:00 -!- cheater00 has joined. 
19:34:17 <elliott> fizzie: in my case, I do need a newline because I don't do screen wrapping :) 
19:34:25 <olsner> I think Vorpal is just hopping on the PC-hating bandwagon 
19:34:30 -!- cheater- has quit (Ping timeout: 246 seconds). 
19:34:33 <elliott> who isn't on that bandwagon 
19:34:34 <olsner> has he even written a boot sector? :P 
19:34:42 <Vorpal> olsner, did that ages ago. 
19:34:49 <Vorpal> elliott, that bandwagon 
19:34:54 <elliott> the pc is the worst thing ever. 
19:34:59 <olsner> Vorpal: then I can finally take your hate seriously 
19:35:02 <Vorpal> olsner, and no I never written a boot sector 
19:35:14 <elliott> <olsner> I think Vorpal is just hopping on the PC-hating bandwagon  <Vorpal> olsner, did that ages ago. 
19:35:16 <Vorpal> olsner, I answered to the "hopping on" line 
19:35:17 <elliott> <Vorpal> elliott, that bandwagon 
19:35:36 <olsner> Vorpal: your hate is feeble and conformist 
19:35:58 <Vorpal> olsner, I know enough about the boot sector to decide to not write one. 
19:35:59 <elliott> olsner: i've written like three boot sectors, and small parts of post-boot-sector asm code, and know the basic principles... i still hate the pc, can i have a cookie? 
19:36:14 <elliott> Vorpal: meh, it's just freestanding asm code 
19:36:21 <elliott> you're running on the comfortable OS known as "BIOS" 
19:36:22 <fizzie> olsner: Does it count if the boot sector just writes out a dirty message on screen? 
19:36:34 <Vorpal> olsner, but if I did write one I would put a "load n sectors after MBR and jump there" bit into the MBR. 
19:36:40 <elliott> the BIOS is more fully-featured than DOS 
19:36:44 <Vorpal> olsner, then after jumping there I would go into protected mode 
19:36:44 <olsner> fizzie: I guess it counts, but only a little :) 
19:36:54 <elliott> <Vorpal> olsner, but if I did write one I would put a "load n sectors after MBR and jump there" bit into the MBR. 
19:36:59 <elliott> WHAT A RADICAL THING TO PUT IN A BOOT SECTOR 
19:37:18 <Vorpal> elliott, I believe that is what grub does though 
19:37:19 <olsner> yeah, the MOST CREATIVE place to put a boot loader :P 
19:37:35 <elliott> why is x86 not orthogonal. 
19:37:45 <olsner> use the aam cheat instead of div 
19:37:46 <Vorpal> olsner, and sure it is bloated. But only because x86 sucks 
19:37:50 <elliott> olsner: i don't know the aam cheat ;D 
19:38:33 <Vorpal> elliott, also as you said before: yes most OS are crap. But I think writing my own would be too much work. And the theoretical good ones aren't practical for everyday use. I'm afraid I'm a bit pragmatic here. 
19:38:35 <fizzie> There is quite a little you can div/idiv. 
19:38:43 <olsner> not sure if it's completely applicable, it seems to work on al only 
19:38:50 <elliott> Vorpal: meh, all you need is a good OS + an emulation layer 
19:39:07 <Vorpal> <elliott> why is x86 not orthogonal. <-- most CPUs aren't? 
19:39:07 <elliott> Vorpal: something that can run a POSIX kernel and multiplex the IO streams it offers to the rest of the system 
19:39:24 <elliott> (with the kernel running at a lower privilege level) 
19:39:56 <olsner> elliott: just be glad you don't have to divide manually :P 
19:40:05 <elliott> what, "mov al, si" isn't valid 
19:40:09 <Vorpal> elliott, I mean, most systems have some parts that aren't completely orthogonal. 
19:40:16 <elliott> olsner: hey i wrote a few bytes of 6502 asm once! 
19:40:20 <elliott> didn't quite see the appeal. 
19:40:36 <Vorpal> elliott, usually it is because it would become bloated on the silicon level 
19:41:15 <elliott> div just takes one operand. 
19:41:18 <fizzie> Also re GRUB (pre-2), it has a "stage 1" which fits in a MBR (even with a partition table), and the typical way to set it up indeed is to load "stage 1.5" from the 60-odd immediately following sectors; then that code will load the "stage 2" which can be in a place that gets moved. 
19:41:25 <Vorpal> elliott, err? is the register it operates fixed? 
19:41:29 <fizzie> Yes, it can never divide anything else than dx:ax. 
19:41:41 <Vorpal> fizzie, right. How does grub 2 do it? 
19:41:58 <elliott> <fizzie> Also re GRUB (pre-2), it has a "stage 1" which fits in a MBR (even with a partition table), and the typical way to set it up indeed is to load "stage 1.5" from the 60-odd immediately following sectors; then that code will load the "stage 2" which can be in a place that gets moved. 
19:41:59 <fizzie> (Well, or edx:eax or rdx:rax, yes. But still.) 
19:42:16 <Vorpal> elliott, it contains file system reading code iirc 
19:42:17 <fizzie> elliott: I think stage 1.5 is about 30k, yes; it has the filesystem drivers and so on. 
19:42:34 <Vorpal> elliott, that is why unlike lilo you don't need to run a command as soon as you installed a new kernel 
19:42:57 <elliott> Vorpal: doesn't need 60 sectors. 
19:43:03 <Vorpal> elliott, to read ext4? 
19:43:12 <Vorpal> though wait, only grub2 does that iirc 
19:43:38 <elliott> (did you see my funny wordplay.) 
19:43:40 <Vorpal> elliott, agree on x86 and pcs. Disagree on other statements. 
19:43:49 <fizzie> Vorpal: I think GRUB 2 is quite similar, except the names have changed a bit. There's "boot.img" in the MBR, and that contains a fixed LBA48 sector address; it loads the first sector of "core.img", which then loads the rest of "core.img"; and at that point it can start loading modules from non-fixed locations. 
19:44:01 <Vorpal> fizzie, ah. I haven't switched yet 
19:44:01 <zzo38> Vorpal: Do you prefer ARM? Or something else? 
19:44:18 <Vorpal> fizzie, I go by "don't mend what isn't broken" when it comes to bootloaders 
19:44:30 <fizzie> The core.img on this system is 23817 bytes. 
19:44:38 <elliott> hey olsner, gimme some code to move si to the next multiple of 80 :) 
19:44:52 <olsner> elliott: I only have ugly and verbose code for that 
19:45:02 <elliott> olsner: non-ugly, non-verbose code please; thanks 
19:45:02 <Vorpal> zzo38, well arm is a bit better than x86. PPC is quite nice in some respects. AVR is very nice apart from being Harvard (but then most SOC in that "class" are) 
19:45:14 <olsner> move the registers, use the hideous div thing, mess around some more, and you end up with stuff 
19:45:24 <Vorpal> I hate PIC12-series asm 
19:46:12 <olsner> elliott: one idea, if you have a spare register (!), is to just store the next 80-multiple somewhere 
19:46:24 <oerjan> 17:59:35 <oklopol> i made oerjan leave by asking him about predicate logic in pm :( 
19:46:28 <oerjan> 17:59:39 <oklopol> i think he doesn't like me anymore 
19:46:40 <zzo38> Vorpal: When I make a new kind of computer, I can decide what kind of processor to use. Such as ARM, or PPC, or whatever. 
19:46:48 <oerjan> actually internet crashed for a moment back then. 
19:47:10 <elliott> olsner: spare register... maaaybe 
19:47:16 <Vorpal> elliott, wait, when you suggest orthogonal instruction sets... Does that mean you hate RISC? 
19:47:24 <olsner> or if you need to support several 80-multiples from the beginning of the last line you started, save the last one and have a loop to move forward until you've gone past the writing pointer 
19:47:31 <oerjan> clearly this was the universe's way of sparing me from having to explain. 
19:47:38 <elliott> Vorpal: you mean because risc can't do shit to ram? 
19:47:43 <Vorpal> <olsner> elliott: one idea, if you have a spare register (!), is to just store the next 80-multiple somewhere <-- spare register on x86 in 16-bit mode? I laugh in scorn. 
19:47:48 <elliott> naw, because you just need to omit the [] notation from the assembler 
19:47:49 <elliott> <Vorpal> <olsner> elliott: one idea, if you have a spare register (!), is to just store the next 80-multiple somewhere <-- spare register on x86 in 16-bit mode? I laugh in scorn. 
19:47:53 <elliott> i use the stack for everything :D 
19:48:05 <fizzie> Gregor: I do hope someone already complained about the Ego-lack while you were here and active. 
19:48:11 <elliott> the only register i need is basically 
19:48:14 <elliott> to store the data stack location 
19:48:20 <oklopol> "[22:28:03] <oerjan> actually internet crashed for a moment back then." <<< good save 
19:48:29 <elliott> to store the screen position 
19:48:34 <oklopol> anyway i suppose we can continue now 
19:48:36 <Vorpal> elliott, two technically. Though you get the other one for free. 
19:48:38 <olsner> I think the (e)bp register has shorter opcodes for reading at offsets 
19:48:43 <oklopol> :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 
19:49:01 <olsner> (i.e. possibly suitable for the other stack) 
19:49:10 <Vorpal> elliott, and I refer to whatever eip/rip is called in 16-bit mode (I forgot) 
19:49:22 <Vorpal> ALSO: a good architecture should have only one mode 
19:49:33 <Vorpal> be it 8, 16, 32 or 64-bit 
19:49:38 <Vorpal> but it should stick to one. 
19:49:50 <Vorpal> especially what x86 does is a major mess 
19:50:26 <fizzie> olsner: I don't think it's any shorter than the other valid registers (si, di, bx); the only difference I think is that plain [bp] is still encoded with a useless single-byte offset of 0, because what would "logically" be [bp] is in fact an absolute 16-bit displacement. 
19:50:28 <olsner> Vorpal: yeah, I wonder what'd have happened if intel said "hey, we have a new low-cost 64-bit microprocessor for that PC XT thing you're building" 
19:50:40 <Vorpal> <elliott> Vorpal: you mean because risc can't do shit to ram? <Vorpal> elliott, yep <-- then that convo died. 
19:50:52 <Vorpal> elliott, I'm interested in what you think about it 
19:50:57 -!- ais523 has quit (Ping timeout: 246 seconds). 
19:50:59 <elliott> <elliott> naw, because you just need to omit the [] notation from the assembler 
19:51:02 <olsner> fizzie: don't you need a SIB byte for non-bp registers? 
19:51:11 <elliott> if you can put a name somewhere 
19:51:18 <elliott> then it should be able to go anywhere another name can go :) 
19:51:22 <elliott> i can make like one exception, for the IP 
19:51:37 <Vorpal> elliott, what about the status register? 
19:51:40 <elliott> so basically, mov should be 
19:51:53 <Vorpal> elliott, also you can't really put a data label anywhere on a RISC. 
19:51:56 <elliott> mov :: (dst:Writable) -> Readable -> [Clobbers dst] 
19:51:57 <olsner> hmm, 16-bit doesn't even have a SIB byte does it? 
19:52:09 <fizzie> olsner: No; in 16-bit there's ModRM encodings for (exhaustive list) [{bx,bp}+{si,di}] and [{bx,bp,si,di}+N] with no, 8-bit and 16-bit N; and that's all. There are no values that'd use a SIB byte. 
19:52:18 <Vorpal> then that foo label can not be put everywhere 
19:52:21 <Vorpal> elliott, see what I mean? 
19:52:36 <elliott> i'm not quite sure what you mean. 
19:52:43 <elliott> obviously, you should have to load foo before accessing it, because it's in memory 
19:52:51 <olsner> ah, there! I found the table with 16-bit addressing modes in the manual 
19:52:54 <Vorpal> elliott, yep. And thus it isn't really orthogonal. 
19:53:36 <elliott> lda :: (dst:Writable) -> Readable[Contains (addr:Address)] -> [Clobbers dst, Reads addr] 
19:53:53 <Vorpal> elliott, anyway if you do have a memory orthogonal system then it probably isn't really. Memory mapped IO registers tend to have strange limitations 
19:53:55 <elliott> sta :: Readable -> Readable[Contains (addr:Address)] -> [Writes addr] 
19:54:18 <elliott> now I really want this assembler :) 
19:54:23 <elliott> wonder if I could do it in Haskell 
19:55:13 <Vorpal> elliott, anyway what about branching instructions. They aren't orthogonal in general. They tend to depend on status flags in some sort of status register. 
19:55:20 <elliott> lda :: (Writable dst, Readable src, ContainsAddress src addr, Clobbers r dst, Reads r addr) => dst -> src -> X86 r 
19:56:22 -!- TLUL has joined. 
19:56:25 <elliott> olsner: WRITTEN THE SHORT ELEGANT CODE YET 
19:56:48 <olsner> Vorpal: ARM has pretty orthogonal branching - every instruction is predicated, and so are jumps 
19:56:49 <fizzie> olsner: Anyway, even in 32-bit mode you can use [{eax,ebx,ecx,edx,ebp,esi,edi}+N] with equally long encodings; it's just [esp+N] that you need a SIB byte for. 
19:57:14 <fizzie> olsner: Except when you're working in THUMB mode, when all the pretty orthogonality goes down the drain again. 
19:57:33 <Vorpal> oh yes that is one reason to dislike ARM. Multiple instruction modes. 
19:58:22 <fizzie> Well, it's not like you'd *have* to write Thumb code at all. 
19:58:26 <olsner> Vorpal: that's not a bad thing at all IMO - code that benefits from ARM instructions can use them, stuff that would better be smaller can use thumb 
19:58:43 <olsner> and it's pretty easy to call back and forth (it's not like x86's instruction modes) 
19:59:25 <Vorpal> also something I dislike with x86: LEA 
19:59:32 <fizzie> Oh, they've deprecated the direct JVM bytecode execution mode (Jazelle DBX) in favour of "ThumbEE", which is a Thumb variant slightly tweaked to be easy to JIT managed code to. 
19:59:47 -!- Phantom_Hoover has joined. 
19:59:49 <olsner> Vorpal: not weird at all 
19:59:54 <Vorpal> <olsner> Vorpal: that's not a bad thing at all IMO - code that benefits from ARM instructions can use them, stuff that would better be smaller can use thumb <-- yes on a practical level. But it is messy still. 
20:00:21 <olsner> but other cpus only have simple addressing modes so that the most complicated LEA instruction would be equivalent to "mov reg,reg" 
20:00:28 <Vorpal> olsner, Okay true. But the way it is used to do arithmetics by compilers is 
20:01:16 <olsner> elliott: takes a memory operand, calculcates the address and stores the address instead of loading from memory 
20:01:20 <Vorpal> olsner, and yes I prefer ISAs with simpler addressing modes. 
20:01:44 <Vorpal> elliott, often used to do multiplications with constants by C compilers such as GCC. 
20:01:47 <elliott> Discover Why Thousands of People are "Jumping" to Change Their Life 
20:02:04 <fizzie> Vorpal: Then you'd hate to write DSP code; they have all kinds of bit-reversed (for fast FFT (okay, so that's like PIN number)) and hardware-assisted circular buffer addressing modes. 
20:02:29 <fizzie> Fast FFT Fourier Transform. 
20:02:29 <Phantom_Hoover> elliott, it's unstructured programming for the quantum age. 
20:03:25 <Vorpal> fizzie, direct, indirect and offset is enough for me. Sure indirect with inc/dec might be nice. But only on systems where you can only load a single size into registers. 
20:03:34 <nooga> i can't learn haskell ;C 
20:04:21 <elliott> nooga: it's because your brain is broken 
20:04:41 <elliott> hey fizzie, YOU write me some code to increment si to the next multiple of 80! 
20:05:03 <Vorpal> elliott, a power of two would be easier 
20:05:04 <elliott> Vorpal: width of vga screen 
20:05:11 <Vorpal> elliott, damn. Can't you change video mode? 
20:05:11 <olsner> elliott: I already told you, stow some stuff and do it with additions 
20:05:14 <elliott> Phantom_Hoover: Not easy on x86. 
20:05:39 <Vorpal> elliott, I mean with a power of two it would be AND + ADD 
20:05:55 <elliott> Phantom_Hoover: need to stick this into 510 bytes 
20:05:59 <fizzie> Vorpal: ST B, *AR0+0% || MPY *AR1+, B  (a representative line of DSP asm). 
20:06:11 <Vorpal> fizzie, oh my god. What does it do? 
20:06:21 <nooga> elliott: because haskell is messy 
20:06:31 <Phantom_Hoover> elliott, I don't think it can really be done without either division or modulo. 
20:07:11 <fizzie> Vorpal: Actually I mistyped, it doesn't really make sense like that; maybe ST B, *AR1+0% || MPY *AR2+, B instead. 
20:07:14 <elliott> Deewiant: div is a mess :) 
20:07:26 <Phantom_Hoover> x86 is ridiculously stupid with arithmetic opcodes, at least in 16-bit mode. 
20:07:32 <fizzie> Deewiant: Elliott doesn't like it how div has those fixed-register operands. 
20:07:38 <Deewiant> elliott: So you clobber ax, is that somehow "not easy"? 
20:07:49 <Vorpal> fizzie, also this is why I like the ISA of AVR. It is mostly sane. A pity it is Harvard though. (Only insane bit I can think of is that LSL and LSR take one parameter, register to shift. And shifts one step. Same for ROL/ROR, but at least that can be blamed on the carry flag there) 
20:07:55 <elliott> Deewiant: Fitting things into 510 bytes here. 
20:08:05 <Deewiant> Since it's a constant, you can of course not do an actual divide 
20:08:14 <Deewiant> elliott: And? Are you already running out of room? 
20:08:19 <Vorpal> <fizzie> Vorpal: Actually I mistyped, it doesn't really make sense like that; maybe ST B, *AR1+0% || MPY *AR2+, B instead. <-- this is same but with AR1/2 not 0/1? 
20:08:29 <fizzie> Vorpal: Yes. I'm writing a description at the moment. 
20:08:31 <elliott> Deewiant: No, but this thing is going to have a Forth in it, and I've already devoted about 60 bytes to word reading. 
20:08:34 <Vorpal> fizzie, highly non-orthogonal I guess 
20:08:45 <Deewiant> elliott: Dude, worry about it later. 
20:09:13 <elliott> Deewiant: Ah, you see, the code to do it that way is _also_ extremely ugly. :p 
20:10:16 <olsner> multiplication is exactly as horrific as division on x86 :) 
20:10:16 <Vorpal> my dream architecture would be a 64-bit RISC. With lots of GPR. A handful of SIMD registers and some floating point ones. 
20:10:25 <Vorpal> so pretty much PPC so far 
20:10:38 <Vorpal> olsner, PPC has more GPR iirc 
20:10:40 <elliott> Vorpal: my dream architecture is a reduceron. 
20:10:53 <Deewiant> olsner: imul goes to an arbitrary register 
20:10:55 <fizzie> olsner: No it's not: there's even a three-operand multiplication. 
20:11:13 <Vorpal> elliott, well sure, but that is sadly unrealistic currently. 
20:11:55 <fizzie> Vorpal: It stores the value at AR1 (what AR1 points at, I mean) into B, then increments AR1 by the value in AR0 except that the postincrement is done modulo a (base, size) pair stored in the circular buffer control registers; at the same time on the other ALU it fixed-point multiplies the value in the T register (notably not mentioned in the instruction) by the value pointed by AR2 (and postincrements AR2), and stores that as the new value of B. 
20:11:55 <Vorpal> ALSO it should have sane instruction encoding 
20:12:00 <elliott> Phantom_Hoover: Oh, right, *architecture*. 
20:12:22 <olsner> fizzie: ooh! imul is way less horrific than div/idiv :) 
20:12:26 <Vorpal> only a handful of different sizes (come on, jump with immediate operand would be hard otherwise) 
20:13:10 <fizzie> olsner: In fact is is borderline saintly, since it can do "A = B*N" (where N is 8-bit immediate) often saving you a mov. 
20:13:25 <Vorpal> fizzie, wait a second... 
20:13:29 -!- BeholdMyGlory has quit (Remote host closed the connection). 
20:13:32 <elliott> fizzie: *angelic AAAAAAAAAAAAAAAH noise* 
20:13:44 <Vorpal> fizzie, "ST B, *AR1+0% || MPY *AR2+, B" does NOT mention AR0 yet you said it used it? 
20:13:55 <fizzie> Vorpal: It's the "0" in the "+0%". 
20:14:06 <fizzie> And anyway it uses T without mentioning, too, so... 
20:16:08 <elliott> <fizzie> Vorpal: It stores the value at AR1 (what AR1 points at, I mean) into B, then increments AR1 by the value in AR0 except that the postincrement is done modulo a (base, size) pair stored in the circular buffer control registers; at the same time on the other ALU it fixed-point multiplies the value in the T register (notably not mentioned in the instruction) by the value pointed by AR2 (and postincrements AR2), and stores that as the new val 
20:16:30 <fizzie> Sadly that was the only instruction in this project to use one of the "foo || bar" double-instructions, of which there is a very limited set. And there are all kinds of additional limitations for the operands; not all of the (8, IIRC) ARx registers are usable in all those positions; only the "dual operand addressable" subset. 
20:16:36 -!- BeholdMyGlory has joined. 
20:17:06 <fizzie> In fact I'm not entirely sure if AR2 is quite kosher there. (This is from a macro and I didn't bother looking up what it was called with.) 
20:17:26 <olsner> so something like... imul by the inverse of 80 then inc then multiply by 80? could that work? 
20:18:34 <fizzie> (And AR0 had to be initialized to 1 for that to work, because the "+%" addressing mode is not allowed in that particular dual-instruction, only the "+n%" variant.) 
20:19:14 <Vorpal> <olsner> so something like... imul by the inverse of 80 then inc then multiply by 80? could that work? <-- imul by inverse of 80 sounds tricky. Inverse of 80 sounds tricky to do in integer encoding. 
20:19:56 <olsner> you multiply by 2^16/80, and then divide (shift) by 2^16 
20:20:25 <olsner> 16 could be other things though, it depends on how much precision you need and the input range and whatnot 
20:20:35 <Vorpal> hm right remembered another bit where AVR isn't orthogonal. Integer multiplication has fixed destination registers. 
20:20:39 <olsner> for instance, you know that the value is 0..24 
20:20:42 <elliott> olsner: the input range is 
20:21:00 <elliott> si = 80*n + m for 0 <= n < 25 and 0 <= m < 80 
20:21:05 <elliott> and I want the output to be 
20:21:29 <fizzie> elliott: Just do an exhaustive search for the shortest possible code that gives the valid output for those inputs. 
20:21:41 -!- Behold has joined. 
20:21:46 <Vorpal> and of course you can use IN/OUT to address the IO registers. But that is really an alias to access the lowest memory addresses. Since they are memory mapped right after the registers. 
20:22:06 <olsner> elliott: maybe you can find that paper that did that for a bunch of common operations and steal their framework for bruteforcing instruction sequences 
20:22:13 <Vorpal> LDS/STS take two bytes after all. 
20:22:21 <elliott> olsner: or maybe you could do your 2^16 magic for me! 
20:23:15 <Vorpal> <olsner> elliott: maybe you can find that paper that did that for a bunch of common operations and steal their framework for bruteforcing instruction sequences <-- ooh the super compilation to generate loophole optimisers one? 
20:23:41 <olsner> yeah, that's probably the same one 
20:23:49 <quintopia> i am now able to successfully identify which wiki pages were written by zzo38 without looking at the page history. does this mean today is my #esoteric zzoversary? 
20:23:53 <Vorpal> why on earth did I write loophole... 
20:24:44 <elliott> olsner: so what should 16 be :P 
20:24:50 <elliott> <olsner> you multiply by 2^16/80, and then divide (shift) by 2^16 
20:24:51 <Vorpal> olsner, awesome concept though 
20:24:51 <elliott> <olsner> 16 could be other things though, it depends on how much precision you need and the input range and whatnot 
20:24:58 <olsner> elliott: n, for some value of n 
20:25:03 -!- BeholdMyGlory has quit (Ping timeout: 248 seconds). 
20:25:34 <olsner> n is what 16 should be? 
20:25:40 <Vorpal> elliott, be careful if you want to be able to claim you wrote this thing. So you don't have to write "by olsner with some help from elliott" 
20:25:45 <elliott> olsner: i'll just pick at random ;D 
20:25:56 <Vorpal> hey you are doing extreme programming. Pair programming over internet. 
20:26:05 -!- Patashu has joined. 
20:26:08 <elliott> Vorpal: aww yeah, IRC has never been more homoerotic! 
20:26:33 <Vorpal> elliott, so write out the constant? 
20:26:49 <olsner> left-shift is called << 
20:27:21 <elliott> apparently "mul ax, 12" isn't valid 
20:27:26 <Vorpal> elliott, anyway you need a 32-bit register to contain 2^16? 
20:27:36 <Deewiant> Because mul takes a single operand, not two. 
20:27:40 <olsner> elliott: imul has the magic, mul doesn't 
20:27:58 <elliott> Vorpal: but not (2^16)/80! 
20:28:05 <Vorpal> olsner, which one is signed now again? 
20:28:08 <elliott> hmm, i should fix rword before doing ok :) 
20:28:33 <Gregor> NOOOOOOOOOOOOOOOOOOOOOO 
20:28:37 <Gregor> NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO 
20:28:42 <Gregor> NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO :( :( :( :( :( 
20:29:03 <Gregor> Surely somebody can guess 
20:29:07 <Vorpal> elliott, I have a suggestion: serial terminal. I don't know how messy that is on x86. Only done serial programming on AVR 
20:29:31 <olsner> Vorpal: lol, that would make far too much sense 
20:29:32 <elliott> Gregor: you didn't get it? 
20:29:35 <Vorpal> where you just enable some bits in the USART control register and then write some interrupt routines. 
20:29:49 <Vorpal> olsner, eh? He doesn't have to deal with anything more than \n then 
20:30:14 <elliott> serial with x86 sounds like a pain 
20:30:20 <olsner> so what happened to Gregor? 
20:30:30 <Vorpal> olsner, but I presume the UART (hell x86 doesn't even have a USART!) programming on x86 is a pain? 
20:31:07 <olsner> Vorpal: I can only guess, but of course it is painful :) it would however speak ascii since the thing you connect to it speaks ascii 
20:31:25 <olsner> hell, why even bother with screen output if you're doing input over serial anyway 
20:31:29 <fizzie> elliott: I *think* it is possible to program the VGA registers so that you have a text mode that has a virtual screen size of 128x25 characters, of which you are showing a 80x25-sized window. That would make the row addresses be multiples of 128, not 80. 
20:31:35 <Vorpal> olsner, this was for output I meant 
20:31:41 <Vorpal> olsner, and yes do both that way 
20:31:48 <elliott> fizzie: yeah but i'd still have to warp at 80 :) 
20:32:04 <fizzie> Maybe, but rounding up to next multiple of 128 is easier. 
20:32:25 <elliott> well. that sounds difficult 
20:32:27 <olsner> hmm, and qemu can probably connect the serial port directly to your host terminal 
20:32:33 <Deewiant> Or always leave the rightmost 16 columns blank and use a 64x25 screen in practice 
20:32:39 <Gregor> libc.so is up for auction. 
20:32:40 <elliott> Deewiant: oh, that would work! 
20:32:46 <Vorpal> elliott, oh? you would just do AND + ADD to jump to next multiple 
20:33:42 <Vorpal> WHY DOESN'T x86 HAVE AN USART!? 
20:34:02 <olsner> that'd make for some neat packaging, you just have a 512-byte boot sector embedded in a shell script that runs qemu on it as a floppy image and connects to stdin/out 
20:34:33 <elliott> olsner: i kinda want to be able to walk up to some ancient 386, put a floppy in it, and be greeted to forth, though :P 
20:34:52 <elliott> hmm, trying to get this imul/shl thing working... 
20:35:01 <olsner> for extra points, polyglot the wrapper shell script into the boot sector 
20:35:22 <fizzie> Deewiant: That doesn't really help if you have that single-value linear address that you want to directly correspond to VGA memory offset, since you'd need to round that to a multiple of 80 (well, 160) anyway. Admittedly you could keep 64x25 screen offsets and then extract (row, column) and compute the memory address, but still. 
20:35:30 <elliott> olsner: uh, didn't you say shl 
20:36:04 <olsner> I think I said divide by 2^n 
20:36:23 <elliott> well, olsner, it's not my fault i'm retarded :/ 
20:36:49 <elliott> hmm, this doesn't even seem to be doing anything to si 
20:37:12 <fizzie> Anyway, there's a single "Offset" VGA register value that gives the number that is added to the memory address in order to move from one scanline/text-line to another. That should be a simple thing to change to get a VGA screen that has the lines in memory at power-of-two multiples. 
20:37:33 <elliott> <Deewiant> Or always leave the rightmost 16 columns blank and use a 64x25 screen in practice 
20:37:36 <elliott> or i could just do this :) 
20:37:51 <Vorpal> elliott, "<fizzie> Deewiant: That doesn't really help if you have that single-value linear address that you want to directly correspond to VGA memory offset [...]" 
20:38:07 <Vorpal> elliott, read fizzie's full line 
20:38:31 <fizzie> To convert from a 64x25 screen offset into a memory address, you'll need to split it into (row, column) and then compute row*80+column. Admittedly it doesn't need the divide-by-80 step there. 
20:38:55 <fizzie> Since it's just "low 6 bits column, things above that the row". 
20:39:01 <elliott> olsner: are you sure imul overflows? 
20:39:25 <olsner> can you tell VGA to use 64-char lines instead of 80-char ones? will that make it display the beginning of the next line in the last 16 columns? :) 
20:39:54 <fizzie> olsner: If you start reprogramming VGA, I think you should just change the offset between lines so that they are multiples of 2^K. 
20:40:13 <Vorpal> why is an idle serial line always high? Wouldn't that waste power? 
20:40:40 <olsner> fizzie: yeah, what I meant was: what if you make that offset shorter than the line? (because it still displays 80 chars per line?) 
20:41:23 <fizzie> olsner: Well, it would show the last 16 characters of the previous line at the beginning of the next line, yes. Or alternatively you can think of it the other way around. 
20:42:33 <elliott> olsner: i'm not sure there's enough precision to make this work :P 
20:43:21 <elliott> Vorpal: vga=two bytes per char 
20:43:43 <Vorpal> elliott, oh nice. What does it use the second byte for? I doubt it uses UCS-16... 
20:44:08 <elliott> it should totally use UTF-16, though 
20:44:28 <elliott> text vga mode is pretty fine :P 
20:44:30 <Vorpal> elliott, that isn't what is wrong 
20:44:31 <Ilari> Sure, you can program VGA display width. But that's changing VGA timings. 
20:44:38 <Vorpal> elliott, what is wrong is not just having a framebuffer 
20:45:02 <fizzie> Ilari: Again, you can just change the in-memory offset between lines, and keep the traditional 80x25 text mode on screen. 
20:46:01 <Vorpal> what instructions does the MBR magic encode? 
20:46:11 <Vorpal> just wondering if they can be used for anything 
20:46:58 <olsner> you can use them as a two-byte operand to the last instruction 
20:47:11 <fizzie> Vorpal: As themselves the encode "stosb; push bp". 
20:47:11 <olsner> or part of a longer operand, of course 
20:47:36 <Phantom_Hoover> http://soundcloud.com/r2bl3nd/windows-7-x64-ms-paint-exe 
20:47:40 <Vorpal> fizzie, looks pretty useless to me 
20:48:15 <Vorpal> fizzie, btw the string instructions on x86. They are not atomic wrt. multitasking I assume? How does resuming work there? 
20:48:56 <olsner> Vorpal: they stop in the middle and save the register values that'd make them continue where they were 
20:49:00 <Gregor> Who's willing to donate to the Gregor Owning libc.so Fund :P 
20:49:18 <olsner> but there's also a flag to control some of the details for compatibility 
20:49:47 <nooga> elliott: how is your forth? 
20:49:52 <elliott> nooga: working on the display code 
20:50:19 <Phantom_Hoover> But the annoyance that is conducting transactions over the internet sadly makes it difficult. 
20:50:21 <Vorpal> <Phantom_Hoover> http://soundcloud.com/r2bl3nd/windows-7-x64-ms-paint-exe <-- that was surprisingly like electronic experimental music. 
20:50:24 <Gregor> Phantom_Hoover: How much are you willing to donate? Donations will grant you first dibs on libc.so email addresses :P 
20:50:48 <Vorpal> Phantom_Hoover, but how the fuck can mspaint be large enough to take that long to play 
20:51:10 <olsner> oh, is that libc.so the *domain name*? 
20:51:25 <Gregor> I'm one of thirteen bidders. 
20:51:25 <Vorpal> Phantom_Hoover, I bet the 95 or 3.0 versions were a lot shorter 
20:51:34 <elliott> Gregor: What's the current bid? 
20:51:35 <Gregor> I rate my chances of actually getting it as "very low" 
20:51:35 <Phantom_Hoover> (I'm actually surprised at the nature of that; repetition I would have understood, but why does it actually change?) 
20:51:41 <Vorpal> Gregor, go for libc6.so :P 
20:51:43 <Gregor> elliott: Bidding doesn't open 'til the 28th. 
20:51:46 <elliott> Phantom_Hoover: tables, I bet 
20:51:52 <Gregor> Vorpal: WOW THAT'S SO CLEVER CUZ IT'S NOT A REAL FILENAME 
20:51:55 <elliott> I bet the noise at the start is all the code 
20:52:05 <elliott> Gregor: libc.so isn't either, it's libc.so.6 everywhere :) 
20:52:10 <elliott> <Vorpal> <Phantom_Hoover> http://soundcloud.com/r2bl3nd/windows-7-x64-ms-paint-exe <-- that was surprisingly like electronic experimental music. 
20:52:15 <elliott> Wasn't "surprisingly like"; was. 
20:52:19 <elliott> Although not terribly experimental :P 
20:52:24 <Gregor> elliott: libc.so is a real filename, it's the one -lc looks for. 
20:52:29 <Vorpal> elliott, I fear your music taste :P 
20:52:36 <elliott> Vorpal: It's more perfectly normal chiptuney stuff interrupted by insanity every few seconds. 
20:52:38 <Gregor> elliott: It's typically either a symlink, or on GNUy systems a bizarre linker script. 
20:52:54 -!- BeholdMyGlory has joined. 
20:52:59 -!- BeholdMyGlory has quit (Changing host). 
20:52:59 -!- BeholdMyGlory has joined. 
20:53:16 <Gregor> elliott: With that setup, people who want to link against libc :P 
20:53:17 <Vorpal> Gregor "Weird Linker Script" Gregor 
20:53:26 <elliott> Phantom_Hoover: I would totally buy Windows Programs: The Album. 
20:53:27 <olsner> I expected it to be more like white noise actually 
20:53:32 <elliott> Vorpal: X "Name" X is my trademark. 
20:53:43 <Vorpal> elliott, I seen it elsewhere 
20:53:50 <elliott> No, X "Name" Y is traditional :P 
20:53:56 <Vorpal> elliott, that is more common 
20:53:59 <elliott> e.g. Gregor "Memory leaks, what memory leaks?" Richards. 
20:54:00 <olsner> what is causing the repetition that makes a tone, and even that recurring melody? 
20:54:04 <elliott> My innovation was EXTENDING IT TO ANY NAME 
20:54:09 <elliott> olsner: Like I said: I suspect either tables or padding. 
20:54:14 <elliott> Phantom_Hoover: domain names are expensive 
20:54:19 <Vorpal> elliott, I claim prior art exists 
20:54:32 <olsner> elliott: yeah, I guess 
20:54:35 <Gregor> Phantom_Hoover: I don't know what the bid will be, I'll place an undisclosed amount measured in hundreds of USD on it, but every little bit helps. I'll only actually call in on donations if the bid goes above my undisclosed max. 
20:54:50 <elliott> Gregor: I demand more than one email for your donation. 
20:54:51 <olsner> elliott: tables or padding 
20:55:02 <Gregor> elliott: If you donate, I will give more than one email address. 
20:55:07 <elliott> Gregor: Also, I demand the full governmental transparency that you are not demonstrating. :-P 
20:55:19 <elliott> Phantom_Hoover: http://soundcloud.com/cpngn/sets/selected-tracks-from-apt Apparently these are partially based on programs too, but who knows how much. 
20:55:24 -!- Behold has quit (Ping timeout: 255 seconds). 
20:55:24 <elliott> (In the comments of that one.) 
20:55:29 <Gregor> elliott: It's undisclosed because I don't know how much I'll bid on libm.so, which goes up for auction first X-P 
20:55:42 <elliott> Gregor: libm.so is really a lot less impressive to own :P 
20:55:51 <elliott> I wouldn't bother bidding on it. 
20:55:52 <Gregor> But there are only two bidders including myself :P 
20:55:54 <elliott> Even if it does have better emails. 
20:56:02 <Gregor> So I can probably get it for like $20 :P 
20:56:45 <Vorpal> elliott, I don't see why that is better than strlen@libso.so 
20:56:56 <elliott> Vorpal: Consider a person named Jo or Joe. 
20:57:10 <Vorpal> elliott, but Gregor isn't named that so he would gain nothing 
20:57:16 <elliott> Vorpal: He's giving emails to other people. 
20:57:50 <elliott> Gregor: Do the emails come with subdomain records :P 
20:57:51 <fizzie> pcre_get_stringtable_entries@libpcre.so, the most-wanted thing ever. 
20:58:04 <Gregor> elliott: Hmmm, I would be willing to give subdomain records with sufficient donations. 
20:58:16 <elliott> I personally want SOME_INCOMPREHENSIBLE_MANGLED_NAME@libstdc++.so 
20:58:27 <elliott> /usr/lib/libopcodes-2.20.51-system.20100908.so 
20:58:28 <olsner> fizzie: not too bad at all actually, it has humor 
20:58:43 <Gregor> It's too late to register anything :P 
20:58:46 <Vorpal> elliott, if you want THAT then go for libboost.so 
20:59:22 <fizzie> elliott: _ZN5boost10filesystem24basic_directory_iteratorINS0_10basic_pathISsNS0_11path_traitsEEEE6m_initERKS4_@libboost_filesystem.so 
20:59:23 <olsner> libBrokenLocale.so perhaps? no idea whatsoever what that does, but it has a funny name 
20:59:23 <elliott> hmm, how can I get a list of symbols libc.so exports? 
20:59:42 -!- poiuy_qwert has joined. 
21:00:05 <elliott> Deewiant: strings gives unrelated crap on libc 
21:00:12 <elliott> lots of what looks like macro expansions 
21:00:30 <elliott> what, gnu sort can't sort by length 
21:00:34 <Vorpal> elliott, running nm -D /usr/lib/lib*.so.*.* | awk '{print length($NF),$NF }' | sort -n | tail -n20 
21:00:39 <Vorpal> elliott, lets see what it finds 
21:00:42 <Deewiant> Of course it does, it gives crap on any binary :-P 
21:00:47 <fizzie> "nm -D" seems nicely sorted. 
21:00:48 <elliott> Gregor: Hereby reserving ffs@libc.so and ftw@libc.so 
21:01:01 <elliott>        ffs, ffsl, ffsll - find first bit set in a word 
21:01:03 <elliott>        ftw, nftw - file tree walk 
21:01:11 <Vorpal> <fizzie> "nm -D" seems nicely sorted. <-- on what? Address it seems 
21:01:17 <Gregor> WHY DID I NEVER KNOW ABOUT ffs 
21:01:18 <elliott> Or or, do I want abs, or tee, or err, or dup... 
21:01:21 <fizzie> Vorpal: It's sorted on symbol names here. 
21:01:24 <Vorpal> 1384 _ZNK5boost6spirit7classic4impl15concrete_parserINS1_8sequenceINS1_6actionINS1_4ruleINS1_7scannerISt20_List_const_iteratorINS_4wave8cpplexer9lex_tokenINS9_4util13file_positionINSC_11flex_stringIcSt11char_traitsIcESaIcENSC_9CowStringINSC_22AllocatorStringStorageIcSH_EEPcEEEEEEEEENS1_16scanner_policiesINS1_28skip_parser_iteration_policyINS1_11alternativeINST_INS1_5chlitINS9_8token_idEEESW_EESW_EENS1_1 
21:01:24 <Vorpal> 6iteration_policyEEENS1_12match_policyENS1_13action_policyEEEEENS1_15closure_contextINS9_8grammars8closures16cpp_expr_closureEEENS1_5nil_tEEEN7phoenix5actorINS1C_9compositeINS1C_9assign_opENS1D_INS1C_14closure_memberILi0ENS1C_7closureINS17_13closure_valueENS1C_5nil_tES1J_S1J_S1J_S1J_EEEEEENS1D_INS1C_8argumentILi0EEEEES1J_S1J_S1J_S1J_S1J_EEEEEENS1_11kleene_starINST_INST_INST_INS4_ISW_NS5_IS1B_NS1D_INS1E_ 
21:01:25 <Gregor> I've wanted that function LITERALLY ONES OF TIMES 
21:01:25 <Vorpal> IS1F_S1M_NS1D_INS1E_INS16_4impl22operator_binary_lesseqES1M_S1P_S1J_S1J_S1J_S1J_S1J_EEEES1J_S1J_S1J_S1J_S1J_EEEEEEEENS4_ISW_NS5_IS1B_NS1D_INS1E_IS1F_S1M_NS1D_INS1E_INS1U_23operator_binary_greateqES1M_S1P_S1J_S1J_S1J_S1J_S1J_EEEES1J_S1J_S1J_S1J_S1J_EEEEEEEEEENS4_ISW_NS5_IS1B_NS1D_INS1E_IS1F_S1M_NS1D_INS1E_INS1U_20operator_binary_lessES1M_S1P_S1J_S1J_S1J_S1J_S1J_EEEES1J_S1J_S1J_S1J_S1J_EEEEEEEEEENS4_ISW_N 
21:01:30 <Vorpal> S5_IS1B_NS1D_INS1E_IS1F_S1M_NS1D_INS1E_INS1U_23operator_binary_greaterES1M_S1P_S1J_S1J_S1J_S1J_S1J_EEEES1J_S1J_S1J_S1J_S1J_EEEEEEEEEEEEEES14_S1I_E16do_parse_virtualERKS14_ 
21:01:37 <Vorpal> elliott, take that one 
21:01:51 <Gregor> elliott: If you actually donate, I will give vanity ALL SORTS OF WHATEVER YOU WANT 
21:01:52 <Vorpal> elliott, 1384 bytes long symbol name 
21:02:05 <elliott> Gregor: I cannot parse that line :P 
21:02:31 <elliott> 33 posix_spawn_file_actions_addclose 
21:02:31 <elliott> THE LONGEST THING EXPORTED BY LIBC.SO 
21:02:36 <elliott> Is that in cfunge yet, Vorpal? 
21:02:40 <Gregor> elliott: How 'bout this: I will give you one extra @libc.so address for every 15USD you donate :P 
21:02:46 <Vorpal> elliott, it is in /usr/lib/libboost_wave-mt.so.1.45.0 
21:02:56 <elliott> Gregor: You realise I'm the only person who's even remotely likely to donate in this channel :P 
21:03:04 <elliott> Vorpal: But, posix_spawn_file_actions_addclose might be useful! 
21:03:15 <Vorpal> elliott, posix_spawn is just stuipd 
21:03:22 <Vorpal> have you even looked at that stuff? 
21:03:31 <Gregor> Come on people, EVERY LITTLE BIT HELPS! I will try my best to make it worth the money! Think of how awesome it would be to know the person who owns libc.so! 
21:05:08 <elliott> "You've made me...... wordfree. What's the word?" "'Speechless'?" "Right, that one." 
21:05:13 <zzo38> I do not have very much United States money. 
21:05:23 <elliott> zzo38: yes you do, it's just stored in the form of canadian money 
21:05:41 <elliott> just like i have literally ones of ponies 
21:05:49 <zzo38> Then I have to convert it. 
21:06:16 <elliott> Gregor: Today I learned that most libc symbols have boring names. 
21:06:35 <elliott> Gregor: WHY CAN'T THERE BE SOME FATAL ERROR FUNCTION CALLED wtf() 
21:06:39 <Vorpal> elliott, I tried -CD (to demangle) 
21:06:43 <Vorpal> elliott, it is too long to paste on irc 
21:06:50 <Vorpal> it is too long to fit in my terminal window 
21:06:59 <elliott> IT IS LONGER THAN TIME ITSELF. 
21:07:28 <elliott> olsner: If I omit the add, it reliably returns to the start of the current line 
21:07:34 <elliott> but that was just as buggy :D 
21:07:37 <elliott> despite being 10x more logical 
21:07:39 <Vorpal> god damn over 10 000 chars long. 
21:08:05 <olsner> Vorpal: OVER NINE THOUSAAAAND? 
21:08:16 <Vorpal> olsner, dude too late :P 
21:08:17 <Vorpal> http://sprunge.us/YHRR 
21:08:33 <Vorpal> I have to say that the name mangling does a good job.... considered 
21:09:04 <Vorpal> I wonder how they wrote that thing 
21:09:22 <olsner> well, templates is code generation, pretty much 
21:09:23 <Vorpal> I mean, not even boost developers would end up writing out such a long line 
21:09:33 <olsner> and typedefs for compressing duplicated parts 
21:09:43 <oerjan> <Gregor> elliott: If you actually donate, I will give vanity ALL SORTS OF WHATEVER YOU WANT <-- prediction, Gregor gets the domain and then goes bankrupt from all the resulting obligations 
21:10:13 <Gregor> oerjan: Prediction: I actually accept giving out only vanity email addresses and subdomains :P 
21:10:16 <Vorpal> olsner, does the mangled variant compress duplicate sections? 
21:11:01 <olsner> but it should be fairly obvious whether it does 
21:11:03 <Vorpal> olsner, how does it manage to compress it into 1384 bytes then 
21:11:29 <elliott> why isn't "div 80" valid in nasm 
21:11:30 <Vorpal> olsner, the unmangled one is 10339 chars after all 
21:11:35 <oerjan> Gregor: THE AMOUNT OF SUBDOMAINS WILL BE SO ENORMOUS YOU GO BANKRUPT FROM BUYING THE DNS SERVER 
21:11:40 <Vorpal> elliott, went back to div instead of imul? 
21:11:56 <olsner> looks like it's using the namespaces to say "outer namespace::sequence" rather than "boost::spirit::classic::sequence" 
21:12:07 <elliott> Vorpal: because the imul solution is unworkable 
21:12:39 <Vorpal> elliott, why not switch to the 128 line length stuff 
21:12:41 <fizzie> elliott: You can only divide by a reg/mem8 or reg/mem16, not by an immediate. 
21:12:47 <elliott> hmm, wow, my archive binging actually failed 
21:12:58 <elliott> after over a week of binging, i haven't continued :) 
21:13:14 <elliott> which is WAY TOO DAMN LONG 
21:13:59 <olsner> elliott: is homestuck == http://www.mspaintadventures.com/ ? (that's the first google hit) 
21:14:11 <elliott> olsner: homestuck \elem mspaintadventures 
21:14:22 <fizzie> Homestuck is horribly long, yes; I recently (three months ago?) read through it manually, but then haven't actually continued following it; it was all just so much. 
21:14:48 <elliott> fizzie: One of my friends follows it and as far as I can tell it eats about ~99% of his time. :p 
21:15:52 <olsner> 3600 that's just an hour if you spend 1s per page 
21:16:26 <elliott> olsner: uh, more than 3600 I believe 
21:16:46 <elliott> olsner: anyway, pages have sometimes-long narration, and can have usually-long chatlogs, plus that's ignoring all the flash updates 
21:16:58 <olsner> hmm, where did I get that number? you didn't tell me how long it was 
21:17:06 <elliott> which are (up to the point I read, anyway) up to a few minutes long. also the ... "games" (is it a game if there's only one outcome?), which of course take an arbitrary amount of time 
21:17:18 <elliott> olsner: well the comic id starts at like 1900 I think, and it's at 5xxx for some xxx 
21:17:19 <fizzie> "approximately 3,600 pages as of the end of February, 2011" 
21:17:33 <fizzie> (From the mspaintadventures wikia.) 
21:17:34 <elliott> 5500-1900 = 3600, so yeah. 
21:17:49 <elliott> Phantom_Hoover: lol, looks like a face 
21:17:57 <fizzie> But there's quite often some complicated flash things to navigate and all that. 
21:18:04 <fizzie> So "one second per page" doesn't really work. 
21:18:14 <elliott> fizzie: Sheesh, I just said that :P 
21:18:21 <fizzie> Oh, I missed it in the babble. 
21:18:40 <elliott> i suppose there are games with only one outcome 
21:18:51 <elliott> and other such advenchoor gaymes 
21:19:18 <elliott> argh, I think the problem is 
21:19:23 <elliott> that the "ok" is being accounted for wrongly 
21:24:10 <fizzie> Anyway! mov dx, 0x03d4; mov al, 0x13; out dx, al; inc dx; mov al, 0x80; out dx; and that should (very theoretically; probably doesn't work) leave the display card using 256-byte offset between text lines in memory. (Assuming VGA, and assuming it's in the CGA mode and not the Hercules/MDA mode. And like I said, probably won't work.) 
21:24:35 -!- poiuy_qwert has quit (Quit: This computer has gone to sleep). 
21:25:13 <fizzie> elliott: Have you remembered to zero dx there? Or if not, you probably want div bl. 
21:25:39 <fizzie> Since "div bx" will divide dx:ax by 160 there. 
21:25:59 <fizzie> Of course then you'll end up with quotient in al and remainder in ah. 
21:26:07 <fizzie> (If you divide by bl.) 
21:27:08 <elliott> hmm, do imuls on al overflow into ah? 
21:27:43 <fizzie> You can't imul a byte. 
21:28:10 <fizzie> Or, hmm, yes, you in fact can, with the single-operand form. 
21:28:30 <elliott> ok:mov dword [es:si], 0x076b076f 
21:29:16 <fizzie> For one thing, you could "mul bl" in place of "xor ah, ah; imul ax, 160". 
21:29:28 <fizzie> Assuming you still have 160 in bl, that would multiply al by bl and put the result in ax. 
21:29:50 <elliott>     24 00000022 89F0                            mov ax, si 
21:29:50 <elliott>     25 00000024 B3A0                            mov bl, 160 
21:29:51 <elliott>     29 0000002C 89C6                            mov si, ax 
21:29:54 <elliott> At least they're short instructions. 
21:30:14 -!- pingveno has quit (Ping timeout: 252 seconds). 
21:30:44 <olsner> inc ax should be a single-byte instruction 
21:31:13 -!- pingveno has joined. 
21:31:35 <olsner> (I know because the single-byte inc instructions have been reused as REX prefixes in long mode) 
21:32:16 <elliott> aha, if I use di for the screen pointer it's shorter by two bytes! 
21:32:28 <zzo38> elliott: Well, you started OK. There is still more room left. 
21:32:40 <elliott> except that using di like that breaks it 
21:32:43 <elliott> probably the bios call clobbers it 
21:33:21 <zzo38> Save to stack if necessary? 
21:33:26 -!- Behold has joined. 
21:33:37 <elliott> simpler just to use si, I think 
21:33:47 -!- BeholdMyGlory has quit (Read error: Operation timed out). 
21:33:50 <zzo38> Yes use si if it doesn't break 
21:34:01 <elliott> OK, so now I have keyboard input, apart from numbers... I should probably write an interpreter word 
21:34:04 <elliott> Here's what I'm thinking for the dictionary: 
21:34:17 <elliott> <32-bit name (2 bits unused; don't know what to do with them)> <code pointer> <data pointer> 
21:34:23 <elliott> Just lots of them consecutively in memory. 
21:34:35 <elliott> Actually, do I need a separate code and data pointer? 
21:34:39 <elliott> Can't I just generate machine code on the fly, and just have 
21:34:48 <elliott> Even for integers, possibly. 
21:34:52 <olsner> what does the data pointer do? 
21:35:26 <elliott> olsner: for instance, if code pointer = LITERAL (I forget the exact name), it pushes the data to the stack 
21:35:29 <elliott> because the data is the integer literal 
21:35:35 <elliott> normally, the code pointer is just a stub that jumps to the data, IIRC 
21:35:41 <elliott> zzo38 can probably correct me on this :) 
21:35:50 <olsner> right, so you could just generate code that includes that literal? 
21:36:02 <elliott> olsner: that's what i'm thinking 
21:36:43 <elliott> the dictionary will not be terminated yet, so any invalid word will just crash the forth :) 
21:37:54 <elliott> apparently dword [ds:ax] is an invalid effective address :( 
21:38:08 <fizzie> Yes, only bx/bp/si/di work there. 
21:38:31 <olsner> ax is ineffective as an address :) 
21:38:53 <fizzie> And they call their registers "general-purpose"... 
21:39:24 <elliott> more like general porpoise 
21:41:03 <elliott> hey, I can use a 16-bit code pointer! 
21:41:09 <elliott> so just 6 bytes per dictionary entry 
21:41:45 <olsner> are you doing this in real mode completely now? 
21:42:07 <elliott> hmm, with "org 0x7c00", is the code segment 0 or 0x7c00? 
21:42:52 <elliott> ok, I have what is ostensibly an interpreter word 
21:42:54 <olsner> that means the code segment is supposed to be 0x7c0(0) 
21:43:10 <olsner> ostensibly is a good word 
21:43:56 <fizzie> olsner: What it means is that starting from there, the assembler assumes the current address is 0x7c00; I don't think that works at all if cs=0x7c0, since then you'd have "org 0" code? 
21:44:12 <elliott> hmm, or should I inline the machine code of every word into the dictionary :D 
21:44:14 <elliott> to avoid having to juggle memory 
21:44:19 <olsner> fizzie: hmm, so I have it backwards then? yuck 
21:44:44 <Ilari> Doesn't BIOS jump to loaded boot block at 0000:7C00? 
21:44:49 <elliott> "error: words can only call up to 10 other words" 
21:45:06 <elliott> Ilari: Apparently some do 7c00:0, but that's hearsay. 
21:45:39 <fizzie> You mean 7c0:0, but anyway. Sounds rather nasty. 
21:46:05 <Ilari> From one emulator: Emulated: BIOS output: Booting from 0000:7c00 
21:46:08 <elliott> olsner: hmm, I should pick a location for my data stack, and a register to put it in :) 
21:46:15 <elliott> Ilari: I think all _sane_ ones do it that way. 
21:47:01 <olsner> elliott: use si instead of di for reading the dict, then you can use string instructions :P 
21:47:05 <elliott> oh wait literal _doesn't_ work that way 
21:47:07 <elliott> it looks at the return stack 
21:47:15 <elliott> so the assembly is literally 
21:47:21 <elliott> [call LITERAL]; <some value> 
21:47:29 <elliott> depends where it returns to 
21:47:33 <elliott> <olsner> elliott: use si instead of di for reading the dict, then you can use string instructions :P 
21:47:35 <elliott> olsner: could I really? :P 
21:48:08 <olsner> at least if you can use a 32-bit lodsd from 16-bit mode 
21:48:12 <elliott> I use si already for the screen, but that sounds like a bigger win 
21:48:16 <elliott> olsner: problem is, each entry is 6 bytes 
21:48:25 <elliott> (4 byte dword name + 2 byte code pointer) 
21:48:35 <olsner> si is for reading and di is for writing :) swap them 
21:48:42 <elliott> with a data pointer, I could do indirect threaded code 
21:48:51 <elliott> which WOULD allow for "LITERAL, 42" 
21:48:59 <elliott> olsner: well i don't use any special features of it, it's just so that [es:foo] is short 
21:49:09 <elliott> I even do it separately like 
21:49:19 <elliott> (ah contains the scancode) 
21:50:54 -!- sftp has quit (Remote host closed the connection). 
21:51:13 -!- zzo38 has quit (Remote host closed the connection). 
21:51:26 <fizzie> If you have 4-byte names and 2+2-byte pointers, you *could* even use some sort of "repne scasd" thing for automagically scanning the dictionary for a word; with the "minor" drawback that if the data/code pointer concatenated happens to look too much like a word, you'd then interpret the following word name as data:code pointers. 
21:51:57 <elliott> fizzie: Hmm, so having another pointer in the dictionary might actually save me bytes ... and would let me do indirect threaded code... 
21:52:16 <fizzie> (scasd uses di, though, not si.) 
21:52:16 <olsner> I think scasd is a win anyway, since it both increments si and compares 
21:52:18 <elliott> fizzie: You mean if a code/data pointer was the same as the name entered? 
21:52:25 <elliott> That would be unfortunate, but seems unlikely. 
21:52:42 <fizzie> If a code:data pointer concatenated, assuming words were 4 bytes and pointers 2. 
21:53:03 <elliott> fizzie: That seems a bit unlikely. 
21:53:52 -!- pikhq_ has joined. 
21:54:03 -!- pikhq has quit (Ping timeout: 260 seconds). 
21:55:39 -!- Phantom_Hoover has quit (Quit: Leaving). 
21:56:15 <elliott> Just realised I'm devoting large amounts of effort to writing a completely buggy implementation of a quarter of Forth :P 
21:56:56 <fizzie> Oh, there's a bit of an issue in that the string opcodes use either ds:si or es:di; so scasd, which uses di, actually uses es:di instead, and if your es points to video memory, that's not very good. 
21:57:21 <elliott> fizzie: I could always initialise si to video memory, but then newline would be a pain :P 
21:57:26 <elliott> Unless 0xB800 is a multiple of 80. 
21:59:12 -!- nescience has joined. 
21:59:32 -!- sftp has joined. 
22:00:11 <elliott> OK i tried running it i have problems with it . this is what i get. when it asks the first quistion i say yes it hangs completely then reboots. i say no then i enter the code failure how do i boot it? Your os looks like windows 1.0 buty has way more features. When is the next release coming out ? Why not turn this into a comunity prodject ? its opensource. We make it secure and give it more aplications. 
22:01:30 <elliott> OK, I think I will include a data pointer. 
22:01:38 <elliott> Not sure how to pass it to the routine though. Maybe ax. 
22:02:01 <olsner> using one of the many registers available for such things :D 
22:02:55 <elliott> There are many things the x86 has many of, like design flaws, but registers of any kind are not one :P 
22:03:39 <nescience> you guys might be good to ask; any of you familiar with range encoding? 
22:04:43 <elliott> try it when the clever people are on, not dolts like me and olsner 
22:04:53 <elliott> <olsner> hey, I resemble that remark! 
22:05:43 <nescience> I am trying to figure out if there's a clean way to do a range encoder that outputs in base 192375 
22:06:03 <nescience> or is that 193275? something like that. 3*3*3*3*5*5*5*19 
22:07:29 <nescience> anyway it obviously won't divide very many times evenly 
22:07:29 <olsner> "clean" way? no, all possible ways will cover you in excrement 
22:07:47 <nescience> clean as in I don't lose data to rounding 
22:08:09 <nescience> but I don't think that's possible / likely using a fixed buffer 
22:08:13 <elliott> yeah, you have to use the range_encode_and_cover_author_of_code_in_excrement subroutine 
22:08:18 <elliott> available in most language's standard libraries 
22:08:49 <nescience> so failing that, I don't know if it will be better than huffman 
22:09:23 <nescience> I can store 17 bits of huffman output in 192375 symbols but there is waste 
22:09:55 <nescience> I can store 35 in 192375^2 which gains a bit but is still wasteful 
22:10:19 <nescience> I don't know how much waste there would be from trying to use range coding to fit the output better is all 
22:13:02 <elliott> out of curiosity, what are you doing? 
22:16:48 <nescience> encoding binary data into mirc control codes 
22:17:09 <nescience> if I update it to mirc 7 which has italics I bet I could get rather more efficiency 
22:17:34 <nescience> but it's not been so long, maybe some clients would still display it 
22:19:33 <nescience> right now it expands the data by 272% about 
22:19:44 <nescience> which is pretty good, it used to be 400% 
22:20:14 <nescience> and it's block based so there's some waste there and also in transmission of the huffman data 
22:21:47 <nescience> I'll also accept a way of outputting huffman or range encoding to variable length symbols ;) 
22:22:02 <elliott> nescience: Cheat. gzip it before encoding :-P 
22:22:12 <nescience> I have an idea or two on that count actually, but no idea if it'd be optimal 
22:22:22 <nescience> I already huffman compress it first 
22:22:39 <nescience> I never got around to full deflate 
22:22:55 -!- BeholdMyGlory has joined. 
22:22:58 -!- BeholdMyGlory has quit (Changing host). 
22:22:58 -!- BeholdMyGlory has joined. 
22:22:59 <Gregor> They're not allocated yet, but they are reserved for me. 
22:23:14 -!- nescience has quit (Remote host closed the connection). 
22:23:40 -!- pikhq has joined. 
22:23:40 -!- pikhq_ has quit (Ping timeout: 250 seconds). 
22:23:40 <elliott> gzgets <-- why does this even exist 
22:24:23 <elliott> olsner: I need to write a program to pack names into their dwords so I can pre-fill the dictionary without tearing my hear out :) 
22:24:27 -!- Behold has quit (Ping timeout: 255 seconds). 
22:24:48 -!- nescience has joined. 
22:25:53 <elliott> olsner: that sounds "difficult" in nasm 
22:27:05 <nescience> right so anyway, the challenge is to encode data efficiently in mirc control codes; I can approach 261 or something like that by lengthening the block size but that'd be a shitload of permutations 
22:27:49 <nescience> of which I don't know an efficient way to calculate either the total values or a specific permutation, that'd be nice too 
22:28:26 <fizzie> Nothing is "just general-purpose"; dx is at least special in that it's the only thing you can stick an IO port, there's "out imm8, al/ax/eax" and "out dx, al/ax/eax" but that's it. 
22:28:35 <fizzie> Possibly it doesn't have any other special features. 
22:28:53 <fizzie> Well, and it's the upper half of the dx:ax construction for div/mul. 
22:29:24 <elliott> fizzie: huh what what's that in reply to 
22:29:33 <fizzie> <elliott> hmm, what's dx again? 
22:29:33 <fizzie> <elliott> just general purpose? 
22:29:44 <elliott> well, right. i meant it's not stack or anything. 
22:29:54 <elliott> what will usually be there is a pointer, but all my pointers are pretty much used up :) 
22:36:13 <Gregor> I should go on ##c and ask people to donate :P 
22:37:13 <elliott> Gregor: Err, have you ever been in ##c? 
22:37:27 <Gregor> Yeah, it's not a good idea X-P 
22:37:30 <elliott> Responses will fall into a few categories: 
22:37:35 <elliott> (1) PoppaVic saying something incoherent as usual 
22:37:50 <elliott> (2) LIBC.SO HAS NOTHING TO DO WITH C, WE EXECUTE C ON PURE PLATONIC MEDIUMS DISTINCT FROM ANY COMPUTER, YOU ARE EVIL NON-PORTABLE NON-C FUCK!! 
22:38:10 <elliott> (4) This is a channel to flame^Wdiscuss C, stop bringing the level of discourse down, you monkey-shitting fucknuts! 
22:38:23 <elliott> But mostly, PoppaVic saying something incoherent. 
22:40:00 -!- BeholdMyGlory has quit (Read error: Operation timed out). 
22:40:13 -!- BeholdMyGlory has joined. 
22:42:29 <nescience> actually, nth permutation is not computationally hard, that must not be what held me up 
22:42:50 <nescience> hm, I guess it would be summing the number of values in each permutation 
22:43:30 <nescience> along with deriving how many combinations of symbol lengths fit into N characters 
22:43:59 <elliott> Prof. Dr. Dr. Dr. Dr. Dr. Dr. Dr. First Last 
22:44:05 <nescience> probably fast enough to use in C but not mirc script 
22:45:24 <nescience> Dr Dr Dr Dr Dr Buffalo buffalo Buffalo buffalo buffalo...... 
22:48:48 <nescience> I am imagining this to the tune of BADGER BADGER 
22:51:06 -!- cheater00 has quit (Ping timeout: 246 seconds). 
22:51:49 -!- cheater00 has joined. 
22:55:03 <oerjan> nescience: YOU ARE INSUFFICIENTLY MYNDZI 
22:55:46 <nescience> of course my phone doesn't run mirc scripts 
22:57:20 <nescience> it would be kind of amusing to have a different script that put like, two more beneath him like acrobats :P 
22:57:43 <nescience> but it'd get me kicked from everywhere surely 
22:57:46 <oerjan> ...just beware of loops 
23:00:01 <elliott> "Nicholas If-Jesus-Christ-Had-Not-Died-For-Thee-Thou-Hadst-Been-Damned Barbon" BEST NAME EVER 
23:00:10 <elliott> "His unusual middle name, given to him by his strongly Puritan father, is an example of the religious "slogan names" given in Puritan families in 17th-century England." 
23:00:27 <elliott> "Nicholas Barbon was the eldest son of Praise-God Barebone (or Barbon), after whom the Barebone's Parliament of 1653—the predecessor of Oliver Cromwell's Protectorate—was named.[1][2] Praise-God's reputed Christian name was "Unless-Jesus-Christ-Had-Died-For-Thee-Thou-Hadst-Been-Damned",[2] a variant of his son's middle name. He became a religious separatist with Millenarianist beliefs, with fervent views in favour of infant baptism in particu 
23:02:41 <nescience> I think "hadst" is improper grammar there? 
23:03:25 <elliott> I just hope everyone referred to him by his full name. 
23:03:35 <elliott> "Hi there, Nicholas If-Jesus-Christ-Had-Not-Died-For-Thee-Thou-Hadst-Been-Damned Barbon!" 
23:03:41 <elliott> (started typing that out but then gave up and copy-pasted) 
23:03:51 -!- nescience has quit (Remote host closed the connection). 
23:05:13 * oerjan thinks "hadst" is correct 
23:05:36 -!- nescience has joined. 
23:05:45 <oerjan> * oerjan thinks "hadst" is correct 
23:06:11 <oerjan> "Additional archaic forms are second-person singular present tense hast and second-person singular past tense hadst or haddest." 
23:07:10 <oerjan> If-Jesus-Christ-Had-Not-Died-For-Thee-Thou-Hadst-Been-Damned 
23:07:30 <nescience> what it is supposed to be is "would have been" 
23:07:43 <nescience> which, without thinking overmuch, should be would hadst 
23:07:54 * oerjan swats nescience -----### 
23:08:15 <oerjan> you don't put hadst instead of an _infinitive_! 
23:08:17 <nescience> but I'm not sure, that cdoesn't sound quite right either 
23:08:52 <elliott> nescience: logs are in topic 
23:08:59 <oerjan> it could be archaic grammar as well - "hadde ... hadde" is completely correct in norwegian 
23:09:07 -!- Sgeo has joined. 
23:09:15 <elliott> hadst is archaic anywhere :D 
23:09:28 <Sgeo> Kubuntu is once again working as an equal OS on my laptop. 
23:09:37 <Sgeo> However, it's unusable: No battery meter 
23:09:38 <oerjan> elliott: i mean not needing "would have" for the consequence part 
23:10:48 <oerjan> Hadde jeg hatt den hatten jeg hadde, så hadde jeg hatt hatt. 
23:11:01 <nescience> I'm drawing a blank her cause I'm at work and can't think about it 
23:11:10 <oerjan> (If i'd had the hat i had, then i would have had (a) hat) 
23:12:29 <elliott> olsner: there's a strange bug in my forth code :) 
23:12:34 <elliott> it's close to being able to run a primitive word... 
23:13:02 <elliott> olsner: specifically, the screen background is purple. i am unable to ascertain why. 
23:13:32 <elliott> so, er, i wonder if my packing is right 
23:13:48 <elliott> by packing five bits of ascii-64 
23:13:57 <elliott> and shifting the value left by 5 bits each time 
23:15:12 <olsner> now you should change it so the background is intentionally purple 
23:16:18 <elliott> olsner: yeah, purple is a nice colour 
23:17:13 <elliott> Wow at the SumatraPDF installer. 
23:17:54 <Gregor> If Ulrich Drepper has a bid in on libc.so, my fund to get libc.so itself could get a boon from the "prevent Ulrich Drepper from getting libc.so" crowd :P 
23:18:23 <elliott> Gregor: Likelihood of him having a bid on that: -1 
23:19:09 <Gregor> I'd say it's extremely unlikely, but not THAT unlikely. It has not actually violated the rules of probability theory with its unlikelihood. 
23:20:07 <oerjan> elliott: don't be so negative 
23:20:15 <elliott> oerjan: I'M ABSOLUTELY NOT 
23:24:14 -!- FireFly has quit (Quit: swatted to death). 
23:27:04 <elliott> Cool, Apple now charge people for the privilege of programming their own computer. 
23:27:21 <elliott> (OK, so Python and Ruby and whatnot come by default, but the C compiler (i.e. Xcode) costs money.) 
23:27:27 <elliott> Well. The Mac Shit Store version does. 
23:27:32 <elliott> Perhaps there's some other way to download it. 
23:27:48 <elliott> Apple have moved from jerks to insidious, especially considering the iPad's utter unprogrammability. 
23:28:14 <elliott> Gregor: To be fair, Microsoft does this too. :p 
23:28:22 <elliott> But I don't know of any third-party gcc distribution as popular as MinGW. 
23:28:37 <Gregor> Errr, wait, I thought MS had some free "Express" version? 
23:28:46 <elliott> Hmm, right, it does; it's terrible, of course, but yes. 
23:28:54 <elliott> Apple: WORSE THAN MICROSOFT 
23:28:55 <Gregor> XCode is terrible too :P 
23:28:55 -!- pikhq has quit (Ping timeout: 246 seconds). 
23:29:01 -!- pikhq has joined. 
23:29:01 <elliott> Gregor: Xcode is just the vehicle to get gcc :P 
23:29:07 <elliott> Microsoft don't have the decency to give you even gcc. 
23:29:09 <elliott> What happened to the days where C64s booted up to BASIC prompts, that's what I want to know. :/ 
23:29:14 <Gregor> Well yeah, but XCode itself is abysmally bad. 
23:29:55 <elliott> Gregor: I dunno... compare with Visual Studio... 
23:30:03 <elliott> (OK, I jest, Visual Studio is actually pretty advanced :P) 
23:30:13 <elliott> Gregor: P.S. It's Xcode, lowercase c. 
23:30:21 <elliott> Think Xbox, another retardedly-capitalised product. 
23:30:24 <Sgeo> Mnesia sounds fascinating 
23:31:52 <elliott> Meanwhile, lol wat: http://notes.kateva.org/2007/01/sarbanes-oxley-means-no-features-in.html 
23:31:56 <elliott> variable: Ouch! You've corrupted my memory! 
23:31:59 -!- poiuy_qwert has joined. 
23:32:16 <fizzie> variable: Careful, you'll change your display border color accidentally. 
23:33:50 <Gregor> variable: Donate to the Help Gregor Get libc.so Fund! 
23:33:55 <elliott> "Microsoft charges $549 for Visual Studio Pro, but at least you can get the command-line compilers and Windows API bindings for free as part of the Windows SDK." 
23:34:03 <elliott> Heyho, a terrible compiler sans the IDE. 
23:34:08 <variable> Gregor: and who are you bidding against!? 
23:34:15 <Gregor> variable: TBD, but any donated money will be returned if I don't get it; it's a closed auction. 
23:34:19 <Gregor> Twelve anonymous bidders. 
23:35:43 <variable> Gregor: my budget atm is $0 :-\ 
23:36:10 <Gregor> How's your budget on the 28th look? X-P 
23:36:16 <Gregor> (That's when the auction actually opens) 
23:36:56 -!- cheater- has joined. 
23:37:52 -!- nescience has quit (Quit: -a-). 
23:40:05 -!- cheater00 has quit (Ping timeout: 246 seconds). 
23:43:50 <elliott> hmm, what was that insane scientific programming langauge again 
23:50:48 -!- pikhq has quit (Ping timeout: 248 seconds). 
23:53:59 <elliott> Video: Visual COBOL Launch – technical demo 
23:53:59 <elliott> See what excited the COBOL world this January. The demo shows how to build COBOL applications within VS2010, and Eclipse IDEs integrating with .NET and other UI technologies… and much more, including COBOL applications running on an Android phone! 
23:55:07 -!- poiuy_qwert has quit (Quit: This computer has gone to sleep). 
23:55:58 -!- poiuy_qwert has joined.