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.