←2011-02-03 2011-02-04 2011-02-05→ ↑2011 ↑all
00:00:44 <Sgeo_> I have more I want to say
00:01:12 <Phantom_Hoover> Sgeo_, http://sgeo.diagonalfish.net/StapleStupdity_censored.JPG
00:01:18 <Phantom_Hoover> What, exactly, is stupid here?
00:02:13 <Sgeo_> 5000 staples, 210 in each block?
00:02:21 <Sgeo_> [I don't remember what it says, I can't read it]
00:02:33 <elliott> Staples have no brain, they are inherently stupid.
00:02:44 <Sgeo_> But you can't have a while number things of 210 and have that add up to 5000
00:03:22 <Phantom_Hoover> *whole
00:03:35 <Gregor> *for
00:03:48 <elliott> <elliott> Staples have no brain, they are inherently stupid.
00:03:48 <elliott> <Phantom_Hoover> *whole
00:03:48 <elliott> <Gregor> *for
00:03:49 <Ilari> Oh, and worse is that the association between wheat and various diseases doesn't seem to have much contribution from confounders (of course, being epidemiological in nature, you can never eliminate confounders).
00:04:08 <Ilari> *completely eliminate
00:04:21 <elliott> *for
00:04:22 <elliott> *whole
00:04:25 <elliott> *comlepetly
00:04:28 <Phantom_Hoover> Sgeo_, actually, serious question.
00:04:54 <Phantom_Hoover> You have repeatedly shown that you had an interest in mathematics when younger, but you don't evidence this any more.
00:05:31 <Ilari> (For example, see HRT).
00:05:45 <Phantom_Hoover> Ilari, what are you going on about HRT for.
00:06:42 <Sgeo_> Hmm. I think partly, it was deciding that I'm not particularly likely to succeed in doing novel stuff, and partly not having ready access to infinite pen and paper, and partly constant Internet access, maybe
00:07:19 <Sgeo_> I still have some interest
00:07:33 <Sgeo_> It's just there's nothing to play with, and no suitable environment
00:07:59 <Ilari> Hormone Replacement Therapy is good example of how epidemiological studies can go wrong. Basically, a therapy that seemed to be benefical based on epidemiological studies. It was introduced to wide use based on that evidence. Then clinical trials were done on its effectiveness. It turned to be actually deadly.
00:08:53 -!- copumpkin has joined.
00:09:46 <Phantom_Hoover> Ilari, an increased risk of cancer does not count as deadly.
00:09:47 <Ilari> Moral of the story: Even if something seems harmful in epidemiological studies doesn't mean it is actually harmful. And if something seems benefical, it might not actually be. You need clinical trials (adjusting only single variable at a time!) to see if something is benefical, harmful or neutral.
00:11:58 <Ilari> Oh, and also poking at the relvant biochemistry can be helpful.
00:12:35 <Ilari> Thus the rather impressive correlation coefficients between wheat and heart disease say nothing more than that the reasons behind the link should be investigated as there may very well be something interesting...
00:12:43 <elliott> <Phantom_Hoover> Ilari, an increased risk of cancer does not count as deadly.
00:12:44 <elliott> agreed
00:13:14 <Ilari> Also Heart Disease and Stroke.
00:13:26 <elliott> Still not "deadly".
00:13:47 <Phantom_Hoover> And my impression is that the increased risk of cancer does not come near outweighing the definite gain in quality of life it gives.
00:14:12 <elliott> And Phantom_Hoover would know!
00:14:20 <elliott> OH
00:14:21 <elliott> SNAPPETH
00:14:34 <Phantom_Hoover> elliott, well, I am sourcing this from parents who are doctors.
00:14:57 <elliott> Probably doctors who inject people with cancer because they're evil.
00:15:06 <elliott> Confirm? Or deny? Or just confirm?
00:15:16 <Ilari> And even if something is clinical study, don't assume it is done well. Garbage studies that change N + 1 variables and then blame 1 for the difference are dime dozen.
00:15:35 <elliott> Wow, it was predicted in 1990 that IPv4 would be exhausted circa 2011.
00:15:43 <elliott> Must have seemed pretty far off...
00:15:56 <Gregor> Something tells me that in "Gnomeo and Juliet" (*vomits*) the title characters don't die tragically.
00:16:34 <elliott> Gregor: I've seen two adverts for that so far and I just want to cry.
00:16:35 <elliott> Endlessly.
00:16:41 <elliott> Gregor: But oh god, I hope they do.
00:16:44 <elliott> That would be amazing.
00:16:49 <elliott> Gregor: Although I'm not sure I agree with "tragically".
00:16:51 <elliott> Try "moronically".
00:16:58 <Phantom_Hoover> What is this thing?
00:16:58 <elliott> "Gnomeo & Juliet
00:16:58 <elliott> A version of Shakespeare's play, set in the world of warring indoor and outdoor gnomes."
00:17:01 <Phantom_Hoover> Gnomeo?
00:17:02 <elliott> Phantom_Hoover: THE WORST.
00:17:07 <Phantom_Hoover> I DO NOT GET IT
00:17:10 <elliott> "Patrick Stewart as William Shakespeare"
00:17:11 <elliott> WHY DID YOU AGREE
00:17:12 <elliott> WHY
00:17:13 <elliott> WHY
00:17:14 <elliott> WHY
00:17:15 <elliott> PATRICK
00:17:15 <elliott> WHY
00:17:19 <elliott> ;_;
00:17:25 * elliott sobs
00:18:00 <elliott> "Hulk Hogan as Terrafirmenator"
00:18:01 <elliott> :what:
00:18:25 <Sgeo_> Is this increased risk of cancer stuff for all hormone replacement therapy?
00:18:27 <Phantom_Hoover> I AM CLOSE TO GOOGLING AND I DO NOT WANT TO
00:18:34 <elliott> Phantom_Hoover: THEY GOT PATRICK STEWART
00:18:36 <elliott> NOBODY CAN SURVIVE
00:20:06 -!- Phantom_Hoover has quit (Quit: Leaving).
00:20:06 <elliott> *Main> parse pUL "foo" "(~~)"
00:20:07 <elliott> Left "foo" (line 1, column 4):
00:20:07 <elliott> unexpected ')'
00:20:07 <elliott> expecting "~", ":", "!", "*", "a", "^", "S", "(" or end of input
00:20:07 <elliott> *Main> parse pUL "foo" "(~~"
00:20:08 <elliott> Left "foo" (line 1, column 4):
00:20:10 -!- Phantom__Hoover has joined.
00:20:11 <elliott> unexpected end of input
00:20:13 <elliott> expecting ")"
00:20:16 <elliott> WHAT DO YOU WANT FROM ME
00:20:50 -!- hagb4rd has joined.
00:20:53 <Ilari> Well, don't expect balanced discussion of *anything* on wikipedia (some subjects are better, some worse in this regard).
00:21:15 <elliott> Wikipedia isn't for discussion.
00:21:20 <elliott> It's an encyclopedia.
00:21:22 <Phantom__Hoover> 00:34:48 <Sgeo_> Is this increased risk of cancer stuff for all hormone replacement therapy? ← menopausal is the only one I'm sure about.
00:21:34 <Ilari> Well, don't execpt balanced discussion of anything anywhere....
00:21:41 <Phantom__Hoover> Ilari, that is because you hold a crank position, and WP is sane through force of numbers.
00:21:59 <elliott> WHY ISN'T THIS WORKING WHYYY
00:22:18 <Ilari> "Crowsourcing" only works if there is no systematic bias.
00:22:19 <Phantom__Hoover> BECAUSE YOU EAT TOO MUCH WHEAT WITH HRT IN IT
00:22:28 <elliott> WHeaRT.
00:23:00 <Sgeo_> What's Ilari's position? "Wheat is bad"?
00:23:04 <elliott> WHY IS THIS SO BROKEN
00:23:56 <Ilari> What is actually healthy food to eat? What causes the current epidemics of obesity, diabetes, etc... Nobody knows. There are only some reasonable (and lots of unreasonable) suspicions...
00:24:26 <elliott> The answer is films about gnomes.
00:24:28 -!- cheater00 has joined.
00:24:58 <pikhq> Well, it's certainly not *solely* wheat. Especially as in centuries past, wheat was a *very* large portion of the common diet in many cultures.
00:25:01 -!- Phantom__Hoover has quit (Client Quit).
00:25:13 -!- Phantom__Hoover has joined.
00:25:23 <elliott> Wheat is pretty tasty. Adding a data point here.
00:25:42 <pikhq> Sugar's at least plausible — we certainly use much more of it than we did even, say, 50 years ago.
00:25:43 <Phantom__Hoover> I DON'T THINK THIS ROUTER LIKES ME VERY MUCH
00:26:15 <pikhq> And in the US, at least, you can probably put a lot of the blame on portion sizes.
00:26:56 <Ilari> Also, nutrient defiencies can play pretty major roles. Modern agriculture really depletes the soil. Fertilizers only make the plants grow well, they don't add the various trace elements, so the result is food becoming weaker and weaker in nutrients.
00:27:18 <pikhq> http://upload.wikimedia.org/wikipedia/commons/6/6f/CountryFriedSteak.jpg This is a deep-fried steak. And yes, it is sufficiently large to count as its own plate.
00:27:34 <pikhq> Ilari: Though there was quite a lot of nutrient deficiency in the past as well.
00:27:38 -!- cheater- has quit (Ping timeout: 240 seconds).
00:27:57 <Ilari> Well, grains are poor sources of nutrients anyway.
00:28:09 <elliott> <pikhq> http://upload.wikimedia.org/wikipedia/commons/6/6f/CountryFriedSteak.jpg This is a deep-fried steak. And yes, it is sufficiently large to count as its own plate.
00:28:11 <elliott> vomit
00:28:19 <Phantom__Hoover> elliott, DEEP FRIED PIZZA
00:28:20 <pikhq> Probably more than there is now.
00:28:29 <pikhq> elliott: Chicken fried steak is actually freaking delicious.
00:28:31 <elliott> I want to try a deep-fried Mars bar at some point. :p
00:28:43 <elliott> pikhq: I'm not stopping vomiting.
00:28:43 <Sgeo_> I've been eating Snickers and Milky Ways
00:29:01 <Ilari> Oh, and people also subjected grains to pretty heavy processing in the past (that's not done anymore)...
00:29:16 <pikhq> Ilari: Oh?
00:29:25 <Ilari> That actually improves nutrient bioavailablity a lot.
00:29:56 <pikhq> I thought that our processing was pretty similar to what was done in the past, modulo food industry's fondness for sticking chemicals in it for the sake of the bottom line.
00:30:16 <elliott> THIS IS SO FAIL I MIGHT CRY
00:30:22 <pikhq> elliott: ?
00:30:26 <elliott> my parsec parser
00:30:28 <elliott> it doesn't work
00:30:32 <pikhq> :(
00:30:36 <elliott> you should fix it
00:30:41 <elliott> 05.11.08:16:15:39 <beerkills> Sgeo
00:30:41 <elliott> 05.11.08:16:15:59 <beerkills> I call myself Sgeo everywhere but Freenode
00:32:41 <Ilari> And of course, the amounts of nutrients actually in there were much better in the past...
00:32:57 <pikhq> Ilari: What, exactly, processing was done previously that isn't now?
00:33:14 <elliott> BEAR PROCESSING
00:33:27 <elliott> on ipv6 depletion: http://www.reddit.com/r/technology/comments/feijg/no_unicast_ipv4_8s_remain_unallocated/c1fbsv8
00:33:40 * pikhq suspects that it has something to do with how a lot of the industrial food BS that's available also doesn't *taste* any good.
00:33:43 <Ilari> Soaking, sprouting, fermenting (etc...)
00:34:14 <pikhq> Could've sworn that was all rather commonly done to grain still.
00:34:19 <Ilari> Oh, and processed food tends to be really crap in nutrients (just see the amount of processed crap people eat).
00:34:39 <elliott> "I came here to kick ass and assign IPv4 addresses, and I'm all out of IPv4 addresses." --reddit
00:34:49 <pikhq> Anyways, yeah, I will agree that modern agriculture sucks.
00:34:50 -!- Phantom__Hoover has quit (Ping timeout: 240 seconds).
00:34:52 <Ilari> IIRC, Fermenting is commonly done to one of the grains.
00:35:27 <Ilari> But now that an alternative to that exists...
00:35:29 <pikhq> Sure, it produces a *fuckton* of food, but it produces shitty food in a manner that we *can't* keep doing.
00:35:58 <pikhq> Ilari: What, are they doing chemical leavening for bread instead of yeast?
00:36:32 <pikhq> Ilari: If so, no *wonder* store-bought white bread has such a bizarre texture. In addition to being the blandest bread ever.
00:37:09 <Ilari> Maybe... But leavening using yeast doesn't count as heavy processing.
00:37:27 <pikhq> It's fermentation.
00:37:59 <Ilari> And IIRC, chemical leavening is widely used...
00:39:11 <elliott> who do I blame for this not working
00:39:13 <elliott> i blame Ilari!
00:39:37 <Ilari> AFAIK, of the four main grains, only rye is difficult to bake into bread without fermenting it...
00:40:27 <pikhq> Hmm. Well, I don't think I've ever had rye bread anywhere *near* as terrible as the shitty white bread you get on store shelves.
00:40:53 <pikhq> How the hell do they get that shit so dry, anyways? And bland? I swear, hard tack is better.
00:40:57 <Ilari> White rye bread is new invention (and thus not widely manufactured).
00:41:06 <pikhq> (not even joking.)
00:42:13 <elliott> hmm, maybe this is better
00:42:18 <elliott> yes, it is
00:42:27 <Ilari> Oh, and processed food manufacturers employ scientists and I expect those companies to know what they are doing...
00:42:42 <pikhq> Though, hard tack isn't all that bad, really. If you don't like your teeth that much. :P
00:43:03 <Ilari> All the chemical preseervatives extend the shelf life for so long that it tastes bland and dry?
00:43:42 <Ilari> Properly baked bread goes stale very quick.
00:44:03 -!- poiuy_qwert has joined.
00:45:09 <elliott> Ilari: Hard tack isn't very chemical afaic...
00:45:39 <elliott> *afaik...
00:45:43 <pikhq> elliott: Store-shelf white bread is very chemical.
00:45:48 <elliott> hARD TACK ISN'T :p
00:46:02 <pikhq> Hard tack is flour and water.
00:46:21 <elliott> woo it works
00:46:22 <elliott> kinda
00:47:32 <Ilari> So fast that day after it is baked it is a lot worse than the day it was baked. And the day after that it is almost inedible. Complare this to how long store-brought breads last...
00:48:23 <pikhq> Aaand after that, well, there's a reason we've got croutons, fried bread, bread pudding, etc.
00:50:58 <Ilari> Of course, making one eat lots of food involves screwing up or bypassing normal metabolic controls... And that's not a good thing....
00:51:12 <elliott> It's the BEST thing!
00:53:19 <Gregor> http://codu.org/tmp/zee5ghosts.ogg Opinions?
00:53:43 <elliott> insufficiently superturing
00:53:46 <elliott> wil llisten later :P
00:53:48 <elliott> *will listen
00:54:13 <Gregor> Opinions are not restricted to elliott :P
00:54:13 -!- augur has quit (Remote host closed the connection).
00:54:18 <elliott> YES THEY ARE
00:54:28 <pikhq> Gregor: I can only conclude that you should learn every instrument, and never have to use synths again.
00:54:41 <Gregor> pikhq: I can't even snap.
00:55:08 <pikhq> I can only conclude that you need to be filthy rich, and thereby become the patron of an orchestra.
00:55:41 <Gregor> I'm not sure it counts as a patron if I force them to play only my shit :P
00:56:40 <elliott> Dictator.
00:56:53 <pikhq> Okay, it probably doesn't count as a patron.
00:57:11 <pikhq> Clearly you should be supreme overlord of all.
00:57:37 <Gregor> I could work with that.
01:00:10 -!- hagb4rd has quit (Ping timeout: 240 seconds).
01:05:12 <Ilari> IPv4 RIR status (according to inetcore depletion counter): ARIN at 4%, APNIC at 7%, RIPE at 10%, LACNIC at 25%, AFRINIC at 53%.
01:09:16 -!- augur has joined.
01:09:48 -!- Tritonio has quit (Quit: Leaving).
01:10:02 <Ilari> According to latest unallocated file, there are 442 414 552 IPv4 addresses unallocated.
01:12:44 <Ilari> Taking set-aside policies into account, there are about 382 645 720...
01:13:13 -!- zzo38 has joined.
01:16:16 <zzo38> If you are playing a chess variant, where the queen cannot capture (or give check/mate) but stops all adjacent pieces (of any color) from capturing. If your opponent has only one king and nothing else, you have one king and some queens, how many queens do you need to win?
01:16:19 <elliott> :t index
01:16:20 <lambdabot> forall a. (Ix a) => (a, a) -> a -> Int
01:16:39 <elliott> :t indexOf
01:16:40 <lambdabot> Not in scope: `indexOf'
01:16:44 <elliott> @hoogle [a] -> a -> Int
01:16:45 <lambdabot> Data.List elemIndex :: Eq a => a -> [a] -> Maybe Int
01:16:45 <lambdabot> Data.List elemIndices :: Eq a => a -> [a] -> [Int]
01:16:45 <lambdabot> Network.BufferType buf_concat :: BufferOp a -> [a] -> a
01:16:59 <zzo38> That isn't a very good answer!
01:17:01 <elliott> > nub "aabc"
01:17:02 <lambdabot> "abc"
01:17:04 <elliott> zzo38: sry
01:18:04 <Sgeo_> "I am pleased to learn that to you she is nothing but a platonic solid."
01:18:07 <Sgeo_> http://fiveminute.net/ds9/fiver.php?ep=thesearch2
01:19:49 <Sgeo_> Meh
01:19:59 <Sgeo_> It's hard to parody good fiction, I guess
01:21:33 <elliott> :t elem
01:21:34 <lambdabot> forall a. (Eq a) => a -> [a] -> Bool
01:25:59 <elliott> ooh, this is _tricky_
01:27:59 -!- Mathnerd314 has joined.
01:28:45 <elliott> grr, too tricky
01:28:50 <elliott> oh wait maybe i can
01:28:50 <elliott> hmm
01:28:51 <elliott> no
01:33:09 -!- augur has quit (Remote host closed the connection).
01:37:44 <elliott> pikhq: http://sprunge.us/LPYO
01:37:54 <elliott> pikhq: I think using ints as my references is hampering this code's elegance somewhat. :p
01:38:23 <elliott> Argh, and my parse accepts ( because of my Invalid rule...
01:39:27 <elliott> ^ul (")S
01:39:27 <fungot> "
01:39:37 <elliott> fizzie: Your Underload interpreter is non-compliant.
01:40:16 <zzo38> Other people get annoyed that my programs follow the RFC.
01:40:43 <elliott> What do you mean?
01:40:54 <elliott> What do they get annoyed about?
01:41:54 <zzo38> Most IRC servers and IRC clients do not even follow the specifications correctly.
01:42:12 <elliott> why do they get annoyed?
01:42:22 <elliott> ais523-logreading: btw my compiler now supports "[, "], "<, ">, and "", making it the first compliant Underload parser ever... I'll probably remove it due to it being a pain, though :P
01:42:53 <zzo38> elliott: Can you make it a command-line switch then? Instead of just putting it in and then removing it.
01:43:10 <elliott> zzo38: Well, not even the reference interpreter supports that, so I think it is not part of the language.
01:47:25 <zzo38> The other way is write programs that do not use []<>" and then it doesn't matter.
01:47:32 <elliott> pikhq: finish my program!
01:47:39 <elliott> zzo38: I don't think any existing program does actually
01:48:09 <zzo38> elliott: Then it is good, because it doesn't matter. If some programs do have to, the implementations or the documentations (or both) can be adjusted.
01:48:29 <elliott> The "official" spec (the wiki page) says it's arguably not part of the language anyway.
01:48:31 <elliott> :p
01:50:41 <elliott> http://esoteric.voxelperfect.net/svn/esofiles/underload/impl/stringie.c wow this must be slow
02:00:16 -!- zzo38 has quit (Remote host closed the connection).
02:04:09 -!- augur has joined.
02:05:38 <elliott> oh *joy* it is broked
02:05:43 <elliott> yes, that's right
02:05:44 <elliott> broked
02:05:47 <elliott> think that's not a word? well fuck you.
02:06:25 <elliott> oh
02:06:26 <elliott> duh
02:06:45 <elliott> wait what
02:06:47 <elliott> oh
02:06:48 <elliott> shit...
02:07:18 -!- poiuy_qwert has quit (Ping timeout: 255 seconds).
02:07:43 -!- poiuy_qwert has joined.
02:12:51 <quintopia> it's not a word. you meant borked.
02:13:41 <quintopia> elliott, do you have a shell script for sprunge so you don't have to write out the whole curl -F everytime you want to sprunge?
02:13:53 <elliott> nope, I just write it out ... but it's easy enough to do
02:13:59 <elliott> alias sprunge="curl -F 'sprunge=<-' sprunge.us"
02:14:02 <elliott> then 'sprunge <file' works
02:14:49 <quintopia> thx imma do that
02:14:53 <quintopia> but
02:15:11 <pikhq> elliott: Hammer: apply directly to the forhead.
02:15:15 <pikhq> s/for/fore/
02:15:16 <elliott> pikhq: wat
02:15:20 <quintopia> call it spr instead :P
02:15:25 <elliott> quintopia: no, call it sprunge
02:15:37 <elliott> quintopia: or "pb" if you must
02:15:40 <elliott> (PasteBin)
02:15:44 <elliott> or even paste
02:15:53 <quintopia> okay
02:15:57 <pikhq> paste is a POSIX util.
02:16:08 <quintopia> is pb anything?
02:16:22 <pikhq> No, but now you need j.
02:16:25 <pikhq> pb&j
02:16:32 <quintopia> lead and j..?
02:16:37 <Gregor> pb is a daemon necessary for j to operate
02:16:47 <quintopia> i disarghree
02:17:16 <Gregor> quintopia: But then pb&j is a valid command ...
02:17:16 <quintopia> because
02:17:22 <quintopia> biscuit&j also works fine
02:17:34 <elliott> pikhq: Paste is a rather useless posix util. :p
02:19:56 <quintopia> elliott: is zeotrope known as anything else?
02:20:09 <elliott> Not AFAIK, why?
02:21:40 <quintopia> oh, i just have a copy of a portion of logs i made for zzo back when you were alise, and zeotrope was in it, and i was like "i haven't seen that one in a while"
02:25:40 <Sgeo_> My step-mother's here
02:25:46 <Sgeo_> I locked myself in my room
02:26:04 <quintopia> oh hello
02:35:40 -!- DH____ has joined.
02:37:36 <elliott> quintopia: haha
02:37:54 <elliott> quintopia: get the hg logs, they're the NEW THING
02:38:04 <Gregor> OMG SONiVOX HAS THE BEST EFFING ACCORDION EVER
02:38:44 <quintopia> gregor: what about the bongos
02:39:30 <Gregor> Those would be in percussion somewhere, and I'm not willing to look for them :P
02:40:36 -!- DH____ has quit (Quit: Trillian (http://www.ceruleanstudios.com).
02:46:09 <Gregor> BEST
02:46:11 <Gregor> ACCORDION
02:46:12 <Gregor> EVER
02:46:28 <Gregor> I've used VSTi accordions. THEY CAN SUCK IT
02:46:36 <quintopia> prove it
02:46:42 <quintopia> write a piece for accordion only
02:48:52 <elliott> bongoccordians
02:48:52 <Gregor> MAYBE I WILL
02:49:09 <quintopia> SYMPHONY FOR 15 ACCORDIONS
02:49:16 <quintopia> and 1 bongo
02:50:06 -!- Slereah has quit (Ping timeout: 250 seconds).
02:51:39 <elliott> no1
02:51:40 <elliott> *no
02:51:42 <elliott> 15 accordians
02:51:43 <elliott> and 15 bongos
02:56:58 -!- Slereah has joined.
02:57:24 <Gregor> The Infinite Bongos Project
02:57:57 -!- cal153 has quit (Ping timeout: 276 seconds).
03:01:20 -!- amca has quit (Quit: Farewell).
03:05:56 <elliott> 21:42:09 <GregorR> Yeah, Javascript is bad ...
03:05:58 <elliott> Gregor: ^
03:06:00 <elliott> (circa 2005)
03:06:11 <elliott> While talking about Firefox 1.5 :lol2005:
03:06:14 -!- pikhq_ has joined.
03:06:23 <Gregor> Quite probably JavaScript was bad in FF1.5
03:06:44 -!- pikhq has quit (Ping timeout: 260 seconds).
03:06:55 <elliott> Gregor: Actually it was in response to someone yaying at the fact that Firefox 2.0 would support Python scripting (???).
03:07:00 <elliott> SO THAT WAS A COMMENT ON THE LANGUAGE AND YOU CAN'T AVOID IT
03:07:26 <Gregor> A) It could have been sarcastic, B) that was five years ago, C) I've never liked Python, so see (A)
03:08:33 <Gregor> (Five to six)
03:08:57 <elliott> It waaasn't sarcaaaastic~~~~~~~~
03:09:13 <elliott> 21:40:49 <Arrogant> Ah.
03:09:13 <elliott> 21:40:57 <Arrogant> Fx2 will have Python support.
03:09:14 <elliott> 21:41:00 <Arrogant> Or rather,
03:09:14 <elliott> 21:41:03 <Arrogant> Gecko 1.9 will.
03:09:14 <elliott> 21:41:22 <Arrogant> Which means that Chatzilla will become my new IRC client.
03:09:14 <elliott> 21:41:29 <GregorR> Awesome, gonna be scripting?
03:09:16 <elliott> 21:41:42 <GregorR> http://www.codu.org/pics/3d/Trainer.jpg < Can you see the 3D phone? :P
03:09:20 <elliott> 21:41:51 <Arrogant> Oh, definitely. The only thing keeping me from writing Chatzilla scripts is that it is in JAVASCRIPT.
03:09:23 <elliott> 21:41:53 <Arrogant> And I hate Javascript.
03:09:25 <elliott> 21:42:09 <GregorR> Yeah, Javascript is bad ...
03:09:27 <elliott> 21:42:49 * Arrogant checks the mimetype of said link
03:09:29 <elliott> 21:42:50 <Arrogant> ;)
03:09:31 <elliott> 21:42:54 <Arrogant> Okay safe.
03:09:33 <elliott> 21:43:12 <GregorR> It's just a jpeg :P
03:09:35 <elliott> Gregor takes my mocking so seriously.
03:09:37 <elliott> I am but a humble logreader.
03:10:02 <Gregor> *eh*
03:11:52 <quintopia> it could be sarcastic
03:13:04 -!- hagb4rd has joined.
03:13:08 <Gregor> Oh maaaaaaaaan
03:13:13 <Gregor> You will CRINGE with the accordion awesomeness.
03:13:13 -!- pikhq_ has changed nick to pikhq.
03:13:17 <elliott> :D
03:13:26 <Gregor> It's so good it's so bad it's so good.
03:13:43 <Gregor> Actually I feel that it's a little bit out of tune, and yet it sounds magnificent :P
03:14:20 <elliott> *Main> test "asdaskdl^"
03:14:20 <elliott> #define TYPE_0 T_QUOT
03:14:20 <elliott> #define STR_0 "asdaskdl^"
03:14:20 <elliott> case 0 : quo_0 :
03:14:20 <elliott> ENCLOSE INVALID("sd") ENCLOSE INVALID("skdl") TAIL_INCLUDE
03:14:21 <elliott> EPILOGUE
03:14:23 <elliott> Wooooooooooooooo
03:14:50 <elliott> Actually EPILOGUE is just "return;" :P
03:14:59 <Gregor> Is this ... some two-language quine in development or something?
03:15:09 <elliott> Gregor: No, this is my Underload compiler reborn.
03:15:18 <Gregor> Ah :P
03:15:23 <elliott> The first line is the GHCi prompt :P
03:15:35 <elliott> Now for, uhh, all the data structures, all the operations, and all the optimisations (e.g. number handling).
03:15:36 <Gregor> That's the only reason I thought two-language.
03:15:36 <quintopia> Gregor: don't forget the bongos
03:15:46 <elliott> But hey, it parses!
03:15:48 <Gregor> quintopia: I'm just adapting zee1 to new instruments here :P
03:15:57 <Gregor> (Actually, only one new instrument)
03:15:58 <elliott> Gregor: MAKE HALF OF THEM BONGOS
03:16:26 <elliott> This program is great, I have a constructor called FActual.
03:16:27 <quintopia> ^
03:16:31 <elliott> It's so factual.
03:17:03 <elliott> I worry that GCing this will be a bitch...
03:17:46 <elliott> Hey Gregor, how easy is it to use GREGOR'S GENERIC GENERATIONAL GARBAGE-GARGLING GORGEMEISTER GETTYSBURG-ADDRESSING GAY GAYNESS COLLECTOR.
03:17:57 <elliott> (I don't actually want an answer, I just had to do that.)
03:18:18 <Gregor> Easy enough *shrugs*
03:18:38 <elliott> Gregor: Easy enough when the language you're implementing isn't almost inherently memory-leaky :P
03:18:57 <elliott> Well, technically, the actual language itself can be done without even refcounting, pop is just a free.
03:19:10 <elliott> But in this impl it's basically a linked-list on acid.
03:19:25 <elliott> I might want some kind of periodic "compact lists into one element" thing...
03:20:30 <Gregor> http://codu.org/tmp/zee1zomgccordian.ogg (Opens with awesome zomgccordion even :P )
03:20:50 <elliott> Gregor: More bongos
03:20:54 <elliott> MORE FUCKING BONGOS
03:21:15 <elliott> quintopia: I think Gregor might be having trouble interpreting us.
03:21:18 <elliott> Ltt's try it again.
03:21:20 <elliott> Gregor: MORE
03:21:22 <elliott> Gregor: FUCKING
03:21:23 <elliott> Gregor: BONGOS
03:21:31 <Gregor> OH
03:21:35 <Gregor> Now I get it
03:21:36 * Gregor goes to fuck a bongo.
03:21:45 <elliott> THAT IS ACCEPTABLE.
03:21:58 <quintopia> i'll listen after color wheel
03:22:06 <quintopia> color wheel is the best a capella song ever
03:25:56 -!- cal153 has joined.
03:37:36 -!- jordotech has joined.
03:38:50 <elliott> Why do most package managers have global locks? It's really irritating.
03:38:53 <elliott> (I know Portage doesn't.)
03:40:55 <pikhq> Uh, Portage does have a global lock, I thought.
03:41:25 <elliott> pikhq: Well, you can install two packages simultaneously.
03:41:34 <pikhq> Pretty sure it locks during merge.
03:41:36 <elliott> I suppose the actual installing part might be locked but that's insignificant compared to downloading and compiling.
03:41:43 <elliott> With apt, it won't even download if another apt is running.
03:42:10 <pikhq> Of course, locking during the actual merge is just reasonably sane.
03:42:39 <elliott> pikhq: Furball has no locks! Hooray!
03:43:10 <elliott> pikhq: (Kitten's pkg manager.)
03:44:47 <elliott> pikhq: Have I mentioned that KITTEN COMES WITH GHC. (OK, OK, Kitten comes with GHC if you install my nebulous concept of a system package, which includes a window manager and an IRC client; I'm not sure why anyone would install it unless that person was me.)
03:45:18 <elliott> But still.
03:45:22 <elliott> Any OS that comes with GHC is PERFECT!
03:47:13 <elliott> Sheesh, the things I do to please my future users, and pikhq doesn't even REACT.
03:48:00 -!- poiuy_qwert has quit (Ping timeout: 276 seconds).
03:48:33 <elliott> Maybe I'll shoot him.
03:49:51 -!- azaq231 has joined.
03:50:04 -!- azaq231 has quit (Changing host).
03:50:04 -!- azaq231 has joined.
03:50:10 <elliott> pikhq is dead.
03:50:13 -!- poiuy_qwert has joined.
03:50:23 -!- azaq23 has quit (Ping timeout: 240 seconds).
03:50:45 <pikhq> husìtu!
03:51:03 <elliott> STOP TALKING MOON LANGUAGE, AMERICAN
03:51:28 <pikhq> ketòkètukènnkòkàsukità
03:51:32 <elliott> I wonder if my IRC client architecture would actually be low-latency enough ...
03:51:58 <elliott> pikhq: How fast are the FUSE filesystems to mount ssh filesystems?
03:52:34 -!- jordotech has left (?).
03:52:51 <elliott> <pikhq> hurr i cant speek
03:52:56 <pikhq> elliott: Reasonably speedy, really.
03:53:07 <elliott> pikhq: Speedy enough to tunnel all IRC traffic over?
03:53:22 <pikhq> I doubt it'd even be noticable.
03:53:56 <elliott> pikhq: Consider doing "tail -f foo" and also writing to a FIFO, in an sshfs. Think the latency will be even barely noticeable vs. connecting unencrypted to a bouncer on the same server, reading the same data, and writing the same?
03:54:05 <elliott> pikhq: Hmm, well, maybe tail -f foo is not such a good idea, since it is based on polling...
03:54:19 <elliott> I'm sure it's possible to make a tail -f alike that doesn't poll though.
03:54:40 <elliott> (it is based on polling right?)
03:57:33 <elliott> HEY PIKHQ THAT WAS A QUESTION
03:57:39 <elliott> I'm starting to think that maybe you're not actually Pikachu.
03:57:43 <elliott> Pikachu knows all about this stuff.
03:59:56 <pikhq> hìka?
04:00:28 <pikhq> hì-kâtiȳû!
04:01:26 <elliott> <elliott> (it is based on polling right?)
04:01:29 <elliott> Answer in Pika.
04:01:35 <pikhq> hìkahìka.
04:02:21 <elliott> pikhq: It is possible to make a tail -f alike that does not use polling right? ANSWER IN PIKA
04:02:58 <pikhq> hì-hì-hì-, hì-ka'tiȳu!
04:03:29 <pikhq> ...
04:03:35 <pikhq> s/ì/į/g
04:03:40 * pikhq facepalms
04:03:48 <elliott> It occurs to me that I have absolutely no idea how you would express "no" in this manner.
04:03:55 * pikhq zaps
04:05:52 <quintopia> Gregor: this zee song sounds like it could have been on the coraline soundtrack
04:05:52 <elliott> From this, I conclude that my almost direct clone of ii is not only the perfect IRC client, but the perfect bouncer, too.
04:05:52 <elliott> MWAHAHA
04:06:52 <quintopia> Gregor: but the accordion is awesomesauce fo sho
04:07:42 <Gregor> Never watched Coraline :P
04:07:50 <quintopia> too bad
04:07:53 <quintopia> good movie
04:08:03 <Sgeo_> elliott, is Season 4 entirely about the conflict with the Xyvatbaf, or will there be at least some Dominion stuff?
04:08:48 <quintopia> wait i don't even remember how many seasons there were >_>
04:09:04 <elliott> 7
04:09:08 <elliott> and a zero
04:09:11 <elliott> 70
04:09:30 <quintopia> Sgeo_: i don't remember a lot of dominion stuff happening until the last couple of seasons
04:12:25 <elliott> I wonder if I should use computed gotos here...
04:12:28 <elliott> ...yeah.
04:25:32 -!- elliott has quit (Quit: Leaving).
04:25:54 -!- elliott has joined.
04:26:17 -!- elliott has quit (Client Quit).
04:47:06 -!- augur has quit (Remote host closed the connection).
04:50:16 -!- augur has joined.
04:54:23 -!- copumpkin has quit (Ping timeout: 240 seconds).
04:54:59 -!- copumpkin has joined.
05:24:18 <Gregor> Damn it Sarah McLaughlin, you make me want to strangle puppies SO MUCH
05:27:51 <quintopia> what's wrong with strangling puppies?
05:28:07 <kfr> Touching those filthy animals with your own hands
05:28:13 <quintopia> i mean, it's slightly worse than strangling kittens i suppose
05:28:15 <quintopia> but still
05:28:18 <quintopia> they're just babies
05:28:23 <quintopia> not real dogs yet
05:28:27 <kfr> You're supposed to use at least a pair of gloves
05:28:31 <kfr> Yeah, adults are worth more
05:28:57 <quintopia> plus they come in litters of like 8
05:29:08 <quintopia> so what's one or two in the grand scheme?
05:30:06 -!- Mathnerd314 has quit (Remote host closed the connection).
05:30:13 <kfr> The grande Scheme?
05:30:30 <kfr> Dogs are Lispers, I see
05:30:31 <quintopia> yes
05:30:35 <quintopia> no
05:31:03 <quintopia> they aren't brilliant enough to understand LOOP
05:31:18 <kfr> Well, loop is a CLism, isn't it?
05:31:24 <kfr> Did Scheme even have that?
05:31:29 <quintopia> no
05:31:42 <quintopia> i consider CL LISP and scheme...scheme
05:32:14 <quintopia> since scheme is simpler, LISP is a scheme, but scheme is not quite a full LISP :P
05:36:24 <Gregor> The cat!
05:37:34 * quintopia cats Gregor
05:59:23 -!- poiuy_qwert has quit (Read error: Connection reset by peer).
06:00:57 -!- poiuy_qwert has joined.
06:12:20 -!- oerjan has joined.
06:16:26 -!- poiuy_qwert has quit (Read error: Operation timed out).
06:17:15 -!- quintopia has quit (Ping timeout: 246 seconds).
06:18:07 <oerjan> nice xkcd today
06:21:02 -!- poiuy_qwert has joined.
06:21:08 <Gregor> Anybody happen to know of a FreeDesktop-aligned menu program that can run as a system tray applet?
06:21:36 -!- poiuy_qwert has quit (Client Quit).
06:21:37 <oerjan> i can guess what most of the words mean, does that count?
06:21:54 -!- pikhq_ has joined.
06:22:01 -!- pikhq has quit (Ping timeout: 265 seconds).
06:23:22 -!- quintopia has joined.
06:24:35 -!- zzo38 has joined.
06:39:05 -!- asiekierka has joined.
06:44:28 -!- Zuu has quit (Read error: Connection reset by peer).
06:44:39 -!- Zuu has joined.
07:04:27 <zzo38> Which DSPs are good to compute and output audio and video and programs can be compiled for them using GNU compiler?
07:11:10 -!- azaq231 has quit (Quit: Leaving.).
07:21:56 -!- cheater00 has quit (Ping timeout: 240 seconds).
07:23:25 -!- augur has quit (Remote host closed the connection).
07:23:28 -!- cheater00 has joined.
07:28:55 -!- FireFly has joined.
07:29:28 <quintopia> zzo38!
07:29:51 <Sgeo_> zzo38 * zzo37 * zzo36 * ...
07:30:03 <quintopia> :P
07:30:27 <quintopia> how are things in zzo38land?
07:31:59 <fizzie> I don't suppose GCC mainline targets any DSPs at all. The only DSP arch I'm personally any familiar with is TI's TMS320C* series, and I think there is some sort of an alpha-quality unofficial GCC port for the TMS320C6x (VLIW thingies) series.
07:33:03 <zzo38> Even if GCC mainline doesn't, it has to be one with Free assemblers/compilers that can program the device from any computer, and it has to be able to compute and output audio and video.
07:33:31 <fizzie> People might be less motivated to work on the GCC port now that TI's released their compiler/assembler/linker kit with a free-as-in-beer-for-non-commercial-use license.
07:35:02 <zzo38> fizzie: That's no good; although maybe a new assembler can be written.
07:35:10 <zzo38> Also, does it do audio and video?
07:35:40 <fizzie> That's a matter of supporting circuitry, really.
07:36:19 <fizzie> It just processes signals, after all.
07:37:08 <zzo38> But which ones would be good at doing audio and video?
07:37:37 <fizzie> I vaguely seem to recall that there's some sort of open-source linux stuff for the older TMS320C54x parts; maybe even a simulator or something. But they might not be very good. (And I don't know if that thing has enough MIPS for serious video processing; I've only done audio stuff with it.)
07:38:05 <fizzie> Have to go to prepare a lecture now. ->
07:38:38 <zzo38> I need at least one channel of video output and two channels of audio output simultaneously.
07:46:14 <zzo38> When I said I need a GCC target for it, I was wrong. What I need is a Free assembler for it.
07:46:24 -!- augur has joined.
07:47:55 -!- myndzi has quit (Read error: Connection reset by peer).
07:48:01 -!- myndzi has joined.
07:48:51 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*a~:(a(:^)*())~*a(:^)*~()~(0)~(~!^)(!())^^!S
07:48:51 <fungot> 0
07:48:55 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*a~:(a(:^)*())~*a(:^)*~()~(0)~(~!^)()^^!S
07:48:55 <fungot> 1
07:49:04 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*a~:(a(:^)*())~*a(:^)*~()~(0)~(~!^)(::**::**)^^!S
07:49:04 <fungot> 9
07:49:13 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*a~:(a(:^)*())~*a(:^)*~()~(0)~(~!^)(:::***::**)^^!S
07:49:13 <fungot> ...out of stack!
07:49:17 <oerjan> DAMN
07:49:41 <Sgeo_> ?
07:49:55 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*a~:(a(:^)*())~*a(:^)*~()~(0)~(~!^)(::::****:*)^^!S
07:49:55 <fungot> (~^~(~a~*~a~*)~a*^:(0)*(:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))))
07:50:26 <oerjan> the carry obviously isn't working
07:54:15 <Sgeo_> 110.0
07:55:02 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):((~a(; )S:^):^~^~(~a~*~a~*)~a*^:(0)*)~a*a~:(a(:^)*())~*a(:^)*~()~(0)~(~!^)(::::****:*)^^!S
07:55:02 <fungot> ((~a(; )S:^):^~^~(~a~*~a~*)~a*^:(0)*(:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))))
07:55:29 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):((~a(; )*S:^):^~^~(~a~*~a~*)~a*^:(0)*)~a*a~:(a(:^)*())~*a(:^)*~()~(0)~(~!^)(::::****:*)^^!S
07:55:29 <fungot> ((~a(; )*S:^):^~^~(~a~*~a~*)~a*^:(0)*(:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))))
07:56:45 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):((~a(; )*S:^):^~^~(~a~*~a~*)~a*^:(0)*)~a*a~:(a(:^)*())~*a(:^)*~()~(0)~(~!^)(::::****:*)^^!^S
07:56:45 <fungot> (~a(; )*S:^):^~^~(~a~*~a~*)~a*^:(0)*(:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^))))))))))
07:57:04 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):((~a(; )*S:^):^~^~(~a~*~a~*)~a*^:(0)*)~a*a~:(a(:^)*())~*a(:^)*~()~(0)~(~!^)(::::****:*)^^!^^S
07:57:04 <fungot> ((a(:^)*():(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):^); ...out of stack!
07:59:05 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*a~:(a(:^)*())~*a(:^)*~()~(0)~(~!^)(::**::**)^^!S
07:59:05 <fungot> 9
07:59:20 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*a~:(a(:^)*())~*a(:^)*~()~(0)~(~!^)(::**::**)^^!(~aS:^):^
07:59:20 <fungot> (9)()((a(:^)*():(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):^)((~^~(~a~*~a~*)~a*^:(0)*(:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))))) ...out of stack!
07:59:32 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*a~:(a(:^)*())~*a(:^)*~()~(0)~(~!^)(::**::**)^^!(~a(; )*S:^):^
07:59:32 <fungot> (9); (); ((a(:^)*():(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):^); ((~^~(~a~*~a~*)~a*^:(0)*(:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))))); ...out of stack!
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:00:12 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*a~:(a(:^)*())~*a(:^)*~()~(0)~(~!^)(::**::**)^^(~a(; )*S:^):^
08:00:12 <fungot> (!~:^); (9); (); ((a(:^)*():(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):^); ((~^~(~a~*~a~*)~a*^:(0)*(:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))))); ...out of stack!
08:02:16 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~(0)~(~!^)(::**::**)^^!S
08:02:16 <fungot> 9
08:02:21 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~(0)~(~!^)(:::***::**)^^!S
08:02:21 <fungot> 12
08:03:12 <zzo38> It looks like works now.
08:03:12 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~(0)~(~!^)(:*)(:*)::**^^^!S
08:03:13 <fungot> 256
08:03:22 <oerjan> yep!
08:06:20 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~(0)~(~!^)((~(, )*S^)~a*^:^):^
08:06:20 <fungot> :(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^))))))))), ...bad insn!
08:06:34 <oerjan> oh
08:06:45 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~(0)~((~(, )*S^)~a*^:^):^
08:06:46 <fungot> 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83 ...too much output!
08:07:06 <zzo38> This is very good now.
08:07:24 <zzo38> Because it is logged, now anyone can look it up.
08:07:33 <zzo38> Although maybe it would be better to add it into the wiki.
08:07:38 <oerjan> i will
08:10:19 <oerjan> ^ul (:*)::::****:*((:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~(0)~(~!^))~^!S!!!
08:10:19 <fungot> ...too much stack!
08:10:37 <oerjan> ^ul (:*):::***:*((:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~(0)~(~!^))~^!S!!!
08:10:38 <fungot> ...too much stack!
08:10:41 <oerjan> oops
08:11:18 <oerjan> ^ul (:*)::::****:*((:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~(0)~(~!^))~*^!S!!!
08:11:18 <fungot> :(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))
08:11:42 <oerjan> ^ul (:*)::::****:*((:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~(0)~(~!^))~*^^!S!!!
08:11:42 <fungot> 1024
08:11:57 <oerjan> ^ul (:*)::::****:*((:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~(0)~(~!^))~*^^!S!!!!
08:11:58 <fungot> 1024 ...out of stack!
08:12:25 <oerjan> ok now it cleans up after itself
08:12:43 <zzo38> I wrote on the Talk page, about a few thing about church numbers
08:18:50 <oerjan> ^ul (:*)::::****:*(<-- Sample numeral (1024) to be printed)!((:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^))))))))))()!:(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~(0)~(~!^))~*^^!S!!!
08:18:51 <fungot> 1024
08:21:14 -!- comex has quit (Quit: ZNC - http://znc.sourceforge.net).
08:22:06 -!- cal153 has quit (Ping timeout: 276 seconds).
08:22:45 -!- comex has joined.
08:24:09 -!- FireFly has quit (Quit: swatted to death).
08:25:01 -!- cal153 has joined.
08:26:33 -!- Sgeo_ has quit (Ping timeout: 255 seconds).
08:27:12 -!- hagb4rd has quit (Quit: hagb4rd).
08:38:20 -!- hagb4rd has joined.
08:52:45 -!- oerjan has quit (Quit: Lost terminal).
09:01:54 -!- asiekierka has quit (Ping timeout: 260 seconds).
09:04:58 -!- oerjan has joined.
09:05:44 -!- Phantom_Hoover has joined.
09:06:35 <oerjan> ^ul ((::**)~^)((((:((0)(!(1)(!(2)(!(3)(!(4)(!(5)(!(6)(!(7)(!(8)(!9(_))))))))))(^))~*^^!S)(:a(~^)*~(()(~(~(:a~*):^))(a))~*^^)):^(()~)~**~^(:)~((a(~^)*~**)~a)~a(**~:((:)~(*)**)~a*~(^))**a(~*^^^!!^)***(~)~a(~a*^:)**a(:)**~^!!!a(~^)*~**)~a((, )S:^)**^):^
09:06:37 <fungot> 3, 13, 1113, 3113, 132113, 1113122113, 311311222113, 13211321322113, 1113122113121113222113, 31131122211311123113322113, 132113213221133112132123222113, 11131221131211132221232112111312111213322113, 31131122211311123113321112131221123113111231121123222113, 132113213221133112132123123112111311222112 ...out of time!
09:07:37 <Phantom_Hoover> Can you do it with 1 as the starting point?
09:07:58 <oerjan> certainly
09:08:08 <oerjan> ^ul (()~^)((((:((0)(!(1)(!(2)(!(3)(!(4)(!(5)(!(6)(!(7)(!(8)(!9(_))))))))))(^))~*^^!S)(:a(~^)*~(()(~(~(:a~*):^))(a))~*^^)):^(()~)~**~^(:)~((a(~^)*~**)~a)~a(**~:((:)~(*)**)~a*~(^))**a(~*^^^!!^)***(~)~a(~a*^:)**a(:)**~^!!!a(~^)*~**)~a((, )S:^)**^):^
09:08:09 <fungot> 1, 11, 21, 1211, 111221, 312211, 13112221, 1113213211, 31131211131221, 13211311123113112211, 11131221133112132113212221, 3113112221232112111312211312113211, 1321132132111213122112311311222113111221131221, 11131221131211131231121113112221121321132132211331222113112211, 3113112221131112311311121321123113213 ...out of time!
09:08:44 <zzo38> Why do you have 456789 they will never occur in this sequence.
09:09:13 <oerjan> zzo38: just in case someone wanted to use those in the initial condition
09:09:28 <zzo38> oerjan: OK.
09:09:35 <oerjan> ^ul ((::**::**)~^)((((:((0)(!(1)(!(2)(!(3)(!(4)(!(5)(!(6)(!(7)(!(8)(!(9)(_))))))))))(^))~*^^!S)(:a(~^)*~(()(~(~(:a~*):^))(a))~*^^)):^(()~)~**~^(:)~((a(~^)*~**)~a)~a(**~:((:)~(*)**)~a*~(^))**a(~*^^^!!^)***(~)~a(~a*^:)**a(:)**~^!!!a(~^)*~**)~a((, )S:^)**^):^
09:09:36 <fungot> 9, 19, 1119, 3119, 132119, 1113122119, 311311222119, 13211321322119, 1113122113121113222119, 31131122211311123113322119, 132113213221133112132123222119, 11131221131211132221232112111312111213322119, 31131122211311123113321112131221123113111231121123222119, 132113213221133112132123123112 ...out of time!
09:09:50 * oerjan realized there was a bug in the 9 there
09:10:15 <oerjan> it still cannot handle consecutive strings longer than 9 though
09:10:20 <zzo38> But why should you use 0456789 in the initial condition?
09:10:42 <zzo38> Or, using a initial condition that can make 456789?
09:10:56 <zzo38> It doesn't seem to do.
09:11:22 <oerjan> zzo38: well the look-and-say iteration can work for any initial condition
09:11:35 <zzo38> It is possible to prove that if you start with "1" then you can never get any digits other than 1,2,3 and that "333" cannot occur.
09:11:45 <oerjan> yes, i know
09:11:55 * oerjan has wikipedia's look-and-say page on his watchlist
09:12:16 <oerjan> and in fact i discussed it in the talk page of that
09:12:35 <oerjan> well someone's misunderstanding of it, anyway
09:12:55 <zzo38> I have seen this sequence known by many different things, but to me, it is just repeating run-length encoding.
09:13:15 <oerjan> and in fact any starting value other than 22 gives the same asymptotic growth and frequency of substrings
09:13:42 <zzo38> oerjan: Can you prove that too?
09:13:44 <oerjan> zzo38: yeah conway just spiced it up a bit with some strange terminology
09:13:53 <oerjan> zzo38: well more or less
09:14:26 <zzo38> (The two things I have mentioned the proof of, I have even proved them myself, but surely many other people have proven them a long time ago)
09:15:05 <oerjan> you need the cosmological theorem to show that it splits into atoms, and then you see that all atoms other than 22 give all the 1,2,3-containing ones eventually
09:15:34 <oerjan> and that 4 and higher can only give a vanishingly small contribution eventually
09:17:19 <oerjan> iirc the trick is to check that every string starting with 1 or 3 will eventually _always_ start with 1 or 3
09:17:25 <oerjan> (when iterated)
09:19:56 <oerjan> ^ul ((::**)~^)((((:(((((((((((_)(9))(8))(7))(6))(5))(4))(3))(2))(1))(!^))~*^^S!)(:a(~^)*~(()(~(~(:a~*):^))(a))~*^^)):^(()~)~**~^(:)~((a(~^)*~**)~a)~a(**~:((:)~(*)**)~a*~(^))**a(~*^^^!!^)***(~)~a(~a*^:)**a(:)**~^!!!a(~^)*~**)~a((, )S:^)**^):^
09:19:56 <fungot> ...out of stack!
09:20:00 <oerjan> argh
09:20:53 <oerjan> oh i forgot to replace the 0
09:20:56 <zzo38> I should try to invent a simple card game for the purpose of demonstrating TeXnicard. It should be simple but still playable, designed for draft format, uses most features of TeXnicard, and able to program on computer play easily (so that a future version of TeXnicard with these features can implement that). Do you have ideas?
09:21:02 <oerjan> ^ul ((::**)~^)((((:(((((((((((_)(9))(8))(7))(6))(5))(4))(3))(2))(1))(0)(!^))~*^^S!)(:a(~^)*~(()(~(~(:a~*):^))(a))~*^^)):^(()~)~**~^(:)~((a(~^)*~**)~a)~a(**~:((:)~(*)**)~a*~(^))**a(~*^^^!!^)***(~)~a(~a*^:)**a(:)**~^!!!a(~^)*~**)~a((, )S:^)**^):^
09:21:04 <fungot> 3, 13, 1113, 3113, 132113, 1113122113, 311311222113, 13211321322113, 1113122113121113222113, 31131122211311123113322113, 132113213221133112132123222113, 11131221131211132221232112111312111213322113, 31131122211311123113321112131221123113111231121123222113, 132113213221133112132123123112111311222112 ...out of time!
09:21:34 <oerjan> ^ul ((::**)~^)((((:((0)(!(1)(!(2)(!(3)(!(4)(!(5)(!(6)(!(7)(!(8)(!(9)(_))))))))))(^))~*^^!S)(:a(~^)*~(()(~(~(:a~*):^))(a))~*^^)):^(()~)~**~^(:)~((a(~^)*~**)~a)~a(**~:((:)~(*)**)~a*~(^))**a(~*^^^!!^)***(~)~a(~a*^:)**a(:)**~^!!!a(~^)*~**)~a((, )S:^)**^):^
09:21:36 <fungot> 3, 13, 1113, 3113, 132113, 1113122113, 311311222113, 13211321322113, 1113122113121113222113, 31131122211311123113322113, 132113213221133112132123222113, 11131221131211132221232112111312111213322113, 31131122211311123113321112131221123113111231121123222113, 132113213221133112132123123112111311222112 ...out of time!
09:21:45 <oerjan> that shortened it a bit
09:23:23 <zzo38> Status of TeXnicard: Currently 140 pages (counting generated printouts for all three files belonging to the program).
09:24:24 <oerjan> ^ul ((::**)~^)(<-- Initial number as sequence of encoded digits each followed by ~^)!((((:(((((((((((_)(9))(8))(7))(6))(5))(4))(3))(2))(1))(0)(!^))~*^^S!)()!(:a(~^)*~(()(~(~(:a~*):^))(a))~*^^)):^(()~)~**~^(:)~((a(~^)*~**)~a)~a()!(**~:((:)~(*)**)~a*~(^))**a(~*^^^!!^)***(~)~a(~a*^:)**a(:)**~^!!!a(~^)*~**)()!~a((, )S:^)**^):^
09:24:25 <fungot> 3, 13, 1113, 3113, 132113, 1113122113, 311311222113, 13211321322113, 1113122113121113222113, 31131122211311123113322113, 132113213221133112132123222113, 11131221131211132221232112111312111213322113, 31131122211311123113321112131221123113111231121123222113, 13211321322113311213212312311211131122211 ...out of time!
09:28:18 -!- hagb4rd has quit (Ping timeout: 240 seconds).
09:31:16 <quintopia> zzo38: 1kbwc seems the obvious choice here :P
09:33:59 <zzo38> quintopia: That doesn't seem quite right to me. It should be a new game invented for the purpose of demonstrating this project, and which uses the features of TeXnicard (so that it can demonstrate and test them).
09:34:47 <quintopia> every 1kbwc is a new game, and it can demonstrate as many features as you feel like demonstrating
09:50:56 <Ilari> Assuming digits are random (they aren't) the probability that some power of two larger than 350 000 digits doesn't contain 1, 2, 4 or 8 is approximately... 10^-77600 (or something like that)...
09:52:16 <oerjan> um i'd expect the _majority_ of digits involved to be indistinguishable from random
09:52:32 <oerjan> everything except near the beginning and end of the numbers
09:56:45 <Ilari> Calculating distribution of digits in 2^100000: 2991 zeros, 2969 ones, 3068 twos, 3075 threes, 3040 fours, 3015 fives, 2952 sixes, 3052 sevens, 2932 eights and 3009 nines.
09:57:39 <zzo38> How would you write a program in TeX to figure out how many lines are in a file?
09:59:02 <Ilari> For individual digits, the expected distribution for random numbers is 3010.3+-94.9
09:59:30 -!- zzo38 has quit (Quit: http://sprunge.us/QZfE).
09:59:45 <oerjan> so pretty much as expected then
10:01:04 <quintopia> what are you discussing?
10:01:31 <oerjan> whether 65536 is the only power of 2 not containing digits 1,2 or 8
10:02:59 <Ilari> Also 4.
10:04:25 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~(0)(!())((~(, )*S:((^~!)~^^^~)~a*^(::)~(**)**)~a*^:^):^
10:04:26 <fungot> 0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 841, 900, 961, 1024, 1089, 1156, 1225, 1296, 1369, 1444, 1521, 1600, 1681, 1764, ...out of time!
10:04:27 <quintopia> basically, the argument being that the size of powers of two grows fast enough that the probability of not having any of those shrinks faster than the fact that it's a positive probability can compensate for?
10:04:44 <Ilari> Chi square value for digits distribution in 2^100000 w.r.t. uniform: 7.231206 (9 degrees of freedom). P > 0.10.
10:06:07 <quintopia> i'm bad at stat. what is the probability that those same digits were drawn uniformly? :P
10:08:18 <Ilari> At 2^500000 chi-square is 3.3212969 (even smaller, indicating distribution is even more like uniform)
10:10:30 <Ilari> Powers of two grow so fast that the probability of avoiding 1, 2, 4 and 8 diminshes so rapidly that the probability that it happens above given power of two goes quickly towards zero.
10:12:09 <Ilari> And there are no such numbers at most 350 000 digits long other than 65536... And avoiding those 4 seems exceedingly unlikely in such huge numbers (even if there are infinity of those).
10:13:48 <quintopia> well, we know that the odds are against it, but is there any way to prove it?
10:14:03 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~^~()((~:(, )*S~:((!^~)~^^)~a*^(:*)*)~a*^:^):^
10:14:04 <fungot> 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, ...out of time!
10:14:06 <Ilari> That would be difficult... :-/
10:20:04 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
10:22:27 -!- Phantom_Hoover has joined.
10:25:26 <Ilari> I figured out faster approximate method (if it detects 1, 2, 4 or 8 in the number, the number really does have 1, 2, 4 or 8. If it doesn't the number could still have them, but that's unlikely)
10:27:49 <Ilari> I estimate about 10 minutes CPU time to scan to 2^10^9... It has already used 4.
10:28:50 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~^~(0)(~!^)(:*)::**:::***^^~S
10:28:50 <fungot> ...bad insn!
10:29:07 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~^~(0)~(~!^)(:*)::**:::***^^~S
10:29:07 <fungot> ...bad insn!
10:29:11 <oerjan> argh
10:30:36 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~^~(0)~(~!^)(:*)::**:::***^^!S
10:30:36 <fungot> ...bad insn!
10:31:04 -!- cheater00 has quit (Ping timeout: 240 seconds).
10:31:05 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~^~(0)~(~!^)^!S
10:31:05 <fungot> ...bad insn!
10:31:38 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~^~(0)~
10:32:02 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~^~(0)~()^!S
10:32:02 <fungot> 0
10:32:09 -!- cheater00 has joined.
10:32:12 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~^~(0)~(~!^)^!S
10:32:12 <fungot> ...bad insn!
10:32:16 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
10:32:48 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~(0)~(~!^)^!S
10:32:48 <fungot> 1
10:33:07 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~(0)~(~!^)(:*)::**:::***^^!S
10:33:08 <fungot> ...out of time!
10:33:53 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~(0)~(~!^)(::**):::::*****^^!S
10:33:53 <fungot> 729
10:34:02 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~(0)~(~!^)(::**)::::::******^^!S
10:34:04 <fungot> 2187
10:35:22 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~(0)~(~!^)(:::***)::::****(::**)*^^!S
10:35:24 <fungot> ...out of time!
10:35:34 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~(0)~(~!^)(:::***)::::****(:*)*^^!S
10:35:35 <fungot> 2048
10:36:25 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~(0)~(~!^)(::::****)(:*)*::**(::**)*^^!S
10:36:26 <fungot> ...out of time!
10:36:31 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~(0)~(~!^)(::::****)(:*)*::**(:*)*^^!S
10:36:32 <fungot> 2000
10:36:40 <Ilari> Done. 2^16 is the only power of two not containing 1, 2, 4 nor 8 below 2^10^9 (which is over 301M digits).
10:37:11 <quintopia> yeahhhhhh
10:37:56 <Ilari> Which also means that probability estimate got slashed by factor of ~850 to about 10^(-66.5*10^6) (66.5 million zeros)
10:40:01 -!- Phantom_Hoover has joined.
10:40:44 <Ilari> And even if there is power of two not containing one of those digits, it doesn't mean the minimal substring subset size is greater than 5, as 65536 could still be a substring.
10:41:04 -!- cheater00 has quit (Ping timeout: 240 seconds).
10:41:27 <quintopia> i don't even know what you're saying with the last line
10:42:21 -!- cheater00 has joined.
10:43:45 <oerjan> hm the substrings don't have be _consecutive_, do they. or else there is an obvious counterexample: 11, 101, 1001, 10001, ...
10:43:54 <Ilari> Nope, they don't.
10:44:23 <Ilari> What is minimal substring subset of powers of two? It is known to contain 1, 2, 4, 8 and 65536. If there is 6th element, it is known to be over 300M digits long.
10:46:50 <Ilari> The minimal substring subset of primes is known to have 26 primes (and those primes are known).
10:48:13 <Ilari> For powers of two, it known to have at least 5 (most probably exactly 5). And the first five are known.
10:50:15 <Ilari> In fact, if set is enumerable in lexicographic order and number of elements in minimal substring subset are known, then one can compute the minimal substring subset.
10:58:13 <oerjan> i recall the primes were much easier. 2, 3, 5, 7, 11, 19, 41, 61, 89, and now checking 409...
10:59:16 -!- copumpkin has quit (Ping timeout: 240 seconds).
10:59:21 <Ilari> Ah, found the list: 2, 3, 5, 7, 11, 19, 41, 61, 89, 409, 449, 499, 881, 991, 6469, 6949, 9001, 9049, 9649, 9949, 60649, 666649, 946669, 60000049, 66000049, 66600049
10:59:42 -!- copumpkin has joined.
11:00:55 * oerjan starts wondering about what it is for other bases
11:01:31 <oerjan> `factor 469
11:01:42 <oerjan> `echo hi
11:02:10 <Phantom_Hoover> oerjan, 7 and 67.
11:02:20 <HackEgo> hi
11:02:20 <HackEgo> 469: 7 67
11:02:34 <oerjan> `factor 409
11:02:35 <HackEgo> 409: 409
11:02:56 <Ilari> In base 2 it is clearly 10 and 11.
11:03:03 <oerjan> heh
11:03:14 <oerjan> `factor 449
11:03:15 <HackEgo> 449: 449
11:03:48 <oerjan> `factor 499
11:03:48 <HackEgo> 499: 499
11:04:13 <oerjan> `factor 609
11:04:14 <HackEgo> 609: 3 7 29
11:04:51 <oerjan> `factor 649
11:04:51 <HackEgo> 649: 11 59
11:05:09 <oerjan> `factor 669
11:05:09 <HackEgo> 669: 3 223
11:05:27 <oerjan> `factor 681
11:05:28 <HackEgo> 681: 3 227
11:05:49 <oerjan> oh wait that one was already excluded
11:06:07 <oerjan> `factor 699
11:06:08 <HackEgo> 699: 3 233
11:06:25 <oerjan> `factor 801
11:06:26 <HackEgo> 801: 3 3 89
11:07:01 <oerjan> `factor 881
11:07:02 <HackEgo> 881: 881
11:07:08 <quintopia> Ilari: that's the same length as the trivial 0,1
11:07:14 <quintopia> or was that a joke
11:07:22 <oerjan> quintopia: 0, 1 are not primes
11:07:27 <quintopia> oh
11:07:33 <quintopia> didn't know they had to be
11:07:42 <oerjan> i was sort of implying that
11:08:19 <quintopia> so we're discussing the shortest list of numbers with property X that are substrings of all numbers with property X
11:08:22 <oerjan> `factor 901
11:08:22 <HackEgo> 901: 17 53
11:08:33 <oerjan> yeah
11:08:54 <oerjan> `factor 909
11:08:55 <HackEgo> 909: 3 3 101
11:09:29 <oerjan> `factor 949
11:09:30 <HackEgo> 949: 13 73
11:09:43 <oerjan> `factor 969
11:09:44 <HackEgo> 969: 3 17 19
11:10:09 <quintopia> `factor 94949
11:10:10 <HackEgo> 94949: 94949
11:10:17 <oerjan> `factor 981
11:10:18 <HackEgo> 981: 3 3 109
11:10:39 <oerjan> `factor 991
11:10:40 <HackEgo> 991: 991
11:10:44 <quintopia> geez man. don't you know you're divisibility rule for 3's?
11:10:45 <oerjan> `factor 999
11:10:46 <HackEgo> 999: 3 3 3 37
11:10:48 <quintopia> *your
11:10:56 <quintopia> what are you trying to find
11:10:59 <oerjan> well yeah i'm just doing them any way
11:11:12 <oerjan> i'm just OCD'ing checking the list :D
11:11:50 <oerjan> `factor 4009
11:11:51 <HackEgo> 4009: 19 211
11:12:11 <Phantom_Hoover> How is the LAS meant to deal with strings longer than 9?
11:13:19 <quintopia> don't start with one of those numbers :P
11:13:32 <oerjan> Phantom_Hoover: you can either concatenate the representations, or treat it as a list of integers without considering base
11:13:52 <oerjan> the former depends on you working in base 10, the latter is essentially base infinity
11:14:12 <Ilari> Base-3... Contains at least 2, 10 and 111. There may be more, but at least there is a big gap after 111.
11:14:40 <oerjan> however every base >= 4 essentially behaves the same way after you've whittled down the length of the sequences
11:15:05 <oerjan> with all digits >= 4 getting separated and never interacting again
11:15:45 <quintopia> how did conway find that polynomial?
11:15:46 <oerjan> oh also 0
11:16:10 <quintopia> it's not obvious to me that repeated rle must always grow at a nearly constant rate
11:16:52 <oerjan> quintopia: it's a consequence of the splitting into atoms, where all atoms except 22 turn into all the others after a short while.
11:17:05 <quintopia> what are the atoms
11:17:23 <oerjan> that gives you a matrix, whose largest eigenvalue is the constant.
11:17:54 <quintopia> are there 71 atoms? why degree 71?
11:17:57 <oerjan> an atom is any substring such that it evolves independently of its neighbors
11:18:09 <oerjan> no, there are 92 atoms (ignoring digits >= 4)
11:18:29 <quintopia> so the matrix is 92x92
11:18:36 <quintopia> or, discarding 22
11:18:38 <quintopia> 91x91
11:18:43 <oerjan> i haven't seen how it's reduced to 71, but my guess is that the characteristic polynomial has the 71 one as a factor
11:18:47 <oerjan> yeah
11:20:11 <oerjan> i haven't read his paper, maybe he brute-forced it, or maybe there is some simplifying symmetry
11:20:56 <oerjan> well "guess", it _has_ to be, for it to work that way
11:23:58 <oerjan> `factor 4669
11:24:05 <HackEgo> 4669: 7 23 29
11:25:28 <oerjan> `factor 6009
11:25:29 <HackEgo> 6009: 3 2003
11:26:06 <oerjan> `factor 6049
11:26:06 <HackEgo> 6049: 23 263
11:26:31 <oerjan> `factor 6069
11:26:32 <HackEgo> 6069: 3 7 17 17
11:26:54 <oerjan> `factor 6099
11:26:55 <HackEgo> 6099: 3 19 107
11:27:27 <fizzie> Random bit of trivia, courtesy of Wolfram Alpha page which I had open when cleaning tabs: human brain matter has a resistivity of 611 ohm centimetres. (This might come in handy if you desperately need to make a resistor.)
11:27:37 -!- asiekierka has joined.
11:27:42 <oerjan> `factor 6469
11:27:44 <HackEgo> 6469: 6469
11:28:04 <oerjan> fizzie: I DOUBT IT
11:28:10 <oerjan> (the handy part)
11:28:16 <fizzie> oerjan: Oh? But brains, they're everywhere.
11:28:29 <fizzie> And you never leave home without one.
11:28:43 <oerjan> TRUE THAT
11:29:31 <fizzie> "Assuming "brain" is a material | Use as a radiation absorber or a word or a general material or a given name instead". No, I don't think I'll be using it as a radiation absorber.
11:29:32 <oerjan> `factor 6609
11:29:33 <HackEgo> 6609: 3 2203
11:29:55 <oerjan> _maybe_ i should start doing the 3 rule
11:30:18 <oerjan> reactor shielding
11:30:41 <oerjan> `factor 6649
11:30:43 <HackEgo> 6649: 61 109
11:31:01 <Phantom_Hoover> fizzie, how effective is it as reactor shielding?
11:31:43 <oerjan> `factor 6949
11:31:45 <HackEgo> 6949: 6949
11:33:42 -!- hagb4rd has joined.
11:34:54 <fizzie> Phantom_Hoover: Hard to say on one line, there's just some graphs that depend on the kinetic energy of the particles in question.
11:35:13 <oerjan> `factor 9001
11:35:14 <HackEgo> 9001: 9001
11:35:26 -!- ais523_ has joined.
11:35:53 <Ilari> All those 26 numbers are primes..
11:35:56 <Phantom_Hoover> fizzie, I can only get the specific heat capacity of brains from Alpha.
11:36:12 <fizzie> Phantom_Hoover: You need to use it as reactor shielding first.
11:36:18 <fizzie> It's not in the brain-as-matter entry.
11:36:37 <ais523_> hmm, something I was trying to do in my head last night: 1cnis golf
11:37:08 * oerjan notes that Alpha in that sentence could be either Wolfram or Complex, and it would fit any way
11:37:28 <oerjan> omg...
11:37:33 <fizzie> There is the Poisson's ratio and shear modulus of brains, if you want to, say, build a house out of them.
11:37:36 <oerjan> wolfram alpha _is_ the computer!
11:37:43 <ais523_> oerjan: ouch
11:37:46 <ais523_> s/computer/Computer/
11:38:05 <ais523_> also, you wonder who things of gathering that info in the first place
11:38:09 <ais523_> *thinks
11:38:13 <oerjan> yes.
11:38:18 <Phantom_Hoover> fizzie, this clearly needs to be added to Minecraft.
11:39:20 <fizzie> ais523_: It does have those "source information" links; for "brains for reactor shielding", it might be from NIST; "National Institute of Standards and Technology. 'Stopping-Power and Range Tables for Electrons, Protons, and Helium Ions.'" is listed.
11:39:43 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~(0)(!())((~(, )*S:((^~!)~^^^~)~a*^(::)~(**)**)~a*^:^):^
11:39:43 <hagb4rd> duke nukem 4 ever: new release termin published in l.a. 2 hours ago :D
11:39:45 <fungot> 0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 841, 900, 961, 1024, 1089, 1156, 1225, 1296, 1369, 1444, 1521, 1600, 1681, 1764, ...out of time!
11:39:51 <hagb4rd> 2011-06-11#
11:39:52 <oerjan> ais523_: ^ :)
11:40:04 <Phantom_Hoover> If those values weren't obtained empirically I will be sorely disappointed.
11:40:10 <Ilari> Hmm... There is supposed to be rationale for the five SHA-3 finalists document. I haven't seen it yet (it could be interesting reading).
11:40:46 <fizzie> I remember they said they were going to provide one.
11:41:13 <ais523_> oerjan: I think your convert-to-base-10 code is neater than mine
11:41:46 <ais523_> mine was really crazy, it did division by 10 by converting the number into stack elements and getting each element to pop the 9 below
11:43:16 <fizzie> "Announce the finalists. Publish the selection report." is in 2010 Q3 already in the timeline.
11:43:29 <oerjan> yeah i was sort of working with my look-and-say code as starting point
11:43:44 <fizzie> And they did it in Dec 9th; so they seem to be running a little late.
11:44:06 <oerjan> ais523_: btw i realized that the trick of each "cons cell" deleting the previous head, as you formulated it, actually made the code longer
11:44:14 <ais523_> indeed, it does
11:44:19 <ais523_> I realized that too
11:44:32 <oerjan> so i modified the code on the wiki
11:45:33 <oerjan> ais523_: my code is mainly counting up to 9, and then when it wraps over it calls recursively a stored subroutine for the tens part
11:49:36 <ais523_> I can't see an explicit encoding of 9 anywhere in there
11:49:39 <oerjan> `factor 9049
11:49:40 <HackEgo> 9049: 9049
11:50:09 <oerjan> ais523_: i mean the (!~:^) which is called after the 9 step
11:50:24 <ais523_> aha
11:50:34 <ais523_> that would also explain why 0 is printed by a separate part of the code
11:50:50 <oerjan> yeah
11:52:24 -!- ais523 has joined.
11:54:53 <oerjan> `factor 9469
11:54:55 <HackEgo> 9469: 17 557
11:54:55 <Ilari> Its not the only thing that's running late: Testimonies for 2010 nutrion guidelines were 8th July and the transcript and minutes are still "Coming soon". Oh and IIRC 2010 nutrion guidelines have already been published (the same garbage, what else did you expect from USDA?).
11:55:55 <Phantom_Hoover> Ilari, please go back to counting down the days 'till IPv4 depletion.
11:56:29 <oerjan> `factor 9649
11:56:29 <HackEgo> 9649: 9649
11:58:13 <Ilari> You really think americans don't follow the nutrion guidelines (to the extent they are followable)?
11:58:55 <oerjan> `factor 9949
11:58:59 <HackEgo> 9949: 9949
12:01:19 <ais523> hmm, I just rebooted the computer ais523_ was connected from
12:01:21 <Ilari> Of course, have screwed up enough nutrion guidelines and they become impossible to follow...
12:01:22 <ais523> I wonder why it's still here?
12:01:48 <Phantom_Hoover> Not timed out yet?
12:02:15 <oerjan> `factor 46669
12:02:16 <HackEgo> 46669: 7 59 113
12:02:59 <ais523> at least it doesn't respond to pings!
12:03:58 <ais523> Phantom_Hoover: I'd have expected it to /quit when the browser was closed
12:03:58 -!- ais523_ has quit (Ping timeout: 245 seconds).
12:04:01 <ais523> but apparently not
12:04:02 <ais523> ah, pingout
12:04:11 <oerjan> `factor 60049
12:04:12 <HackEgo> 60049: 11 53 103
12:04:14 <Ilari> Yeah, it is 4 minutes for normal connections.
12:06:43 <Phantom_Hoover> *4 minutes AND 5 SECONDS
12:06:46 <oerjan> `factor 60649
12:06:46 <HackEgo> 60649: 60649
12:08:25 <ais523> here's a fun one (which I think I've done, but in my head): convert this psuedocode program to 1cnis: do 6^n times: write 0, write 1 8^n times
12:08:28 <Ilari> Yeah, it is usually bit longer than the set time (it polls the connection list periodically and checks when was last pong received?)
12:08:30 <ais523> where n is the number of steps that has run
12:10:56 <ais523> actually, what I really want is some sort of 1cnis preprocessor
12:11:09 <ais523> that contains for loops, and exponential repeat loops
12:11:35 <ais523> * do 6^n times: write 0, write 1 (8^n)-1 times
12:11:39 <ais523> the -1 is the whole point...
12:12:42 <oerjan> `factor 66049
12:12:43 <HackEgo> 66049: 257 257
12:14:29 <oerjan> `factor 66649
12:14:30 <HackEgo> 66649: 11 73 83
12:17:27 <ais523> hmm, [[User talk:Crescente]]
12:17:36 <ais523> suggestions about how I should react?
12:17:52 <fizzie> ais523: Out of curiosity, since the 1cnis page points out multiple times that the reference impl doesn't do bignums: is there a particular reason why "use bignum;" wouldn't be enough to make it so?
12:18:03 <ais523> fizzie: I hadn't thought of it at the time
12:18:08 <ais523> or was aware that it was that simple
12:18:24 <ais523> it doesn't really matter anyway, because a typical 1cnis program would run a computer out of memory before it ever hit integer overflow
12:18:32 <ais523> but it's the principle of the thing
12:18:48 <ais523> you know, I'll replace that with a welcome message
12:18:51 <ais523> and see what happens
12:23:33 <oerjan> `factor 94669
12:23:36 <HackEgo> 94669: 41 2309
12:31:36 <oerjan> `factor 466669
12:31:38 <HackEgo> 466669: 7 163 409
12:33:16 <oerjan> `factor 600049
12:33:17 <HackEgo> 600049: 17 47 751
12:35:01 <Ilari> Hmm... FIN+ACK and remote end responds to it with an RST...
12:35:44 -!- hagb4rd has quit (Quit: hagb4rd).
12:37:29 <ais523> isn't it legal to respond to /anything/ with an RST?
12:37:41 <Ilari> It is...
12:42:33 <Ilari> Hmm... Packet trace of a connection. A: SYN, B: SYN+ACK, A: ACK. A: Data 1-415. A: Data 1-415. B: ACK up to 415. B: Data 1209-1614. A: SACK 1,1209-1614. B: FIN+ACK. A: SACK 1,1209-1615. B: ACK up to 415. <connection hung>.
12:42:37 <oerjan> `factor 660049
12:42:38 <HackEgo> 660049: 13 50773
12:45:21 <Ilari> I guess something is dropping that packet containing data bytes 1-1208 from B.
12:45:21 <oerjan> `factor 660649
12:45:22 <HackEgo> 660649: 11 19 29 109
12:47:19 <ais523> oerjan: are you looking for primes containing no digits but 0, 4, 6, and 9?
12:47:31 <oerjan> `factor 666049
12:47:32 <HackEgo> 666049: 79 8431
12:47:54 <Ilari> Actually systematically dropping, since it would be retransmitted.
12:47:57 <oerjan> no, i'm checking Ilari's list of minimal prime substrings
12:49:26 <oerjan> although at this point 0,4,6 and 9 may be the only options left. 2,3,5,7 went early of course, and 8 i've dismissed
12:49:53 <oerjan> let me check about 1
12:51:18 <oerjan> yes, 1 is no longer possible since 991 and 9001 are in the list
12:51:31 <oerjan> (as well as 11 and 19)
12:52:17 <ais523> "minimal prime substrings"?
12:52:38 <oerjan> primes that have no smaller primes as (non-consecutive) substrings
12:55:00 <ais523> ah
12:55:22 <ais523> and you're trying to find the largest such prime?
12:56:13 <oerjan> well proving that Ilari's list is all of them
12:57:12 <Ilari> Largest prime that doesn't contain any smaller prime as (non-consecutive) substring is known to be 66600049
12:57:14 <oerjan> `factor 666649
12:57:16 <HackEgo> 666649: 666649
12:57:29 <oerjan> that was the next one
12:57:48 <Ilari> I already factorized all the numbers on that list. They were all primes.
12:58:09 <ais523> factorizing primes is easy!
12:59:31 <ais523> "LoseThos can update full screen at 30fps without much effort because it's only 640x480x16 color."
12:59:41 <ais523> isn't that a bit low for modern systems?
13:04:22 <oerjan> `factor 946669
13:04:23 <HackEgo> 946669: 946669
13:04:40 <oerjan> Ilari: YOU DON'T SAY
13:06:20 <oerjan> `factor 4666669
13:06:21 <HackEgo> 4666669: 7 666667
13:07:12 <oerjan> `factor 6000049
13:07:13 <HackEgo> 6000049: 11 199 2741
13:11:34 <oerjan> `factor 6600049
13:11:34 <HackEgo> 6600049: 19 563 617
13:11:41 <oerjan> `factor 6660049
13:11:42 <HackEgo> 6660049: 11 557 1087
13:14:50 <oerjan> `factor 46666669
13:14:51 <HackEgo> 46666669: 7 7 952381
13:15:17 <oerjan> hm those 46*9 are all divisible by 7 aren't they
13:16:35 <oerjan> 10*(x-3)+9 = 10*x - 21
13:17:39 <oerjan> `factor 60000049
13:17:40 <HackEgo> 60000049: 60000049
13:18:44 <oerjan> `factor 66000049
13:18:45 <HackEgo> 66000049: 66000049
13:19:02 <oerjan> `factor 66600049
13:19:03 <HackEgo> 66600049: 66600049
13:20:24 <ais523> hmm, I'm using Windows because it has a program I need to run
13:20:30 <ais523> and it's decided to randomly shut down in the middle of things
13:20:48 <ais523> especially amusing because I had a file on my desktop that was too large, and I was supposed to get rid of it before logging off...
13:22:34 * oerjan concludes that no more primes are possible
13:22:34 -!- hagb4rd has joined.
13:23:02 <oerjan> EUCLID EAT YOUR HEART OUT
13:23:53 -!- nddrylliog has joined.
13:29:17 <oerjan> Ilari: oh and for base 3 it's indeed 2 and 111, since there are no primes of the form 3^n+1
13:29:41 <oerjan> (EXERCISE LEFT TO THE READER)
13:30:46 <oerjan> base four gives 2,3 and 11
13:37:35 <oerjan> `factor 109
13:38:05 <HackEgo> 109: 109
13:38:56 -!- nddrylliog has quit (Quit: I can flyyyyyyyyy).
13:49:53 -!- BeholdMyGlory has joined.
14:01:40 <oerjan> > foldl1 (\x y -> 5*x+y) [1,4,4,4,4]
14:01:40 -!- MigoMipo has joined.
14:01:40 <lambdabot> 1249
14:02:24 <oerjan> `factor 1249
14:02:44 <HackEgo> 1249: 1249
14:02:47 -!- MigoMipo_ has joined.
14:03:13 <oerjan> base five gives 2, 3, 104 (29), 111 (31), 401 (101), 414 (109), 14444 (625+500+124 = 1249), ...
14:03:23 -!- asiekierka has quit (Read error: Operation timed out).
14:04:13 -!- MigoMipo_ has quit (Read error: Connection reset by peer).
14:05:34 -!- MigoMipo_ has joined.
14:06:10 -!- cheater00 has quit (Ping timeout: 240 seconds).
14:06:18 -!- MigoMipo has quit (Ping timeout: 250 seconds).
14:07:32 -!- MigoMipo_ has quit (Read error: Connection reset by peer).
14:07:53 -!- MigoMipo has joined.
14:08:08 <oerjan> > foldl1 (\x y -> 5*x+y) [4,4,4,4,1]
14:08:08 <lambdabot> 3121
14:08:17 <oerjan> `factor 3121
14:08:21 <HackEgo> 3121: 3121
14:09:13 -!- cheater99 has joined.
14:09:49 <Ilari> There's also 10 in set of base-3 primes...
14:10:14 <oerjan> oh duh
14:10:33 <oerjan> wait that's for base 5 as well
14:10:35 <Ilari> Or actually, the only prime of form 3^n+1 is when n is zero.
14:11:00 <oerjan> well that doesn't count
14:11:20 <oerjan> ok scratch that 104 and replace by 10 (5)
14:11:43 <oerjan> and add 44441 (3121)
14:12:41 <oerjan> and i think that's all.
14:13:51 <oerjan> --> food
14:14:06 <Ilari> In base-3, 2, 10 and 111. To avoid falling into any of those, number must contain at most 2 ones and the rest zeroes. The first 1 must be the leftmost digit. The other must be rightmost since otherwise result is divisible by 3. But all such numbers are even and greater than 2 and as such not primes.
14:17:14 <Ilari> Base 4: 2, 3, 11. To avoid that set, it must contain at most one 1 and the rest zeroes. But such numbers are 4^n and none of those is prime.
14:22:37 -!- asiekierka has joined.
14:24:59 <Ilari> Base 5 seems to have a lot more of those numbers than lesser bases. I got up to 44441 and already found 8...
14:27:55 <Ilari> 2, 3,10,111, 401, 414, 14444 and 44441
14:32:04 <oerjan> Ilari: same as i found
14:32:22 <oerjan> (when correcting for the 10)
14:32:35 <oerjan> and those are all, i believe.
14:33:51 <oerjan> (just say if you want me to give the argument)
14:37:50 <oerjan> > 4*36+1
14:37:51 <lambdabot> 145
14:38:18 <oerjan> > 4*36+4*6+1
14:38:19 <lambdabot> 169
14:39:03 <oerjan> > 4*6^3+1
14:39:04 <lambdabot> 865
14:44:25 <oerjan> 6*(x-1)+1 = 6*x-5, so those 40*1 will all be divisible by 5
14:44:57 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
14:45:37 <oerjan> `factor 871
14:45:38 <HackEgo> 871: 13 67
14:46:25 <oerjan> > 4*6^3+4*6^2+1
14:46:26 <lambdabot> 1009
14:46:31 <oerjan> `factor 1009
14:46:32 <HackEgo> 1009: 1009
14:47:24 <oerjan> oh wait duh
14:47:32 <oerjan> > 4*6^3+4*6+1
14:47:33 <lambdabot> 889
14:47:38 <oerjan> `factor 889
14:47:39 <HackEgo> 889: 7 127
14:48:29 <oerjan> > 4*6^3+4*6^2+4*6+1
14:48:30 <lambdabot> 1033
14:48:35 <oerjan> `factor 1033
14:48:36 <HackEgo> 1033: 1033
14:50:08 <oerjan> > 4*6^4+4^6+1
14:50:09 <lambdabot> 9281
14:50:15 <oerjan> `factor 9281
14:50:16 <HackEgo> 9281: 9281
14:52:56 <oerjan> base 6: 2, 3, 5, 11 (7), 4401 (1009), 4441 (1033), 40041 (9281).
14:54:15 -!- Wamanuz2 has joined.
14:57:09 -!- Wamanuz has quit (Ping timeout: 240 seconds).
15:00:08 -!- FireFly has joined.
15:00:56 -!- cheater99 has quit (Ping timeout: 240 seconds).
15:01:22 <oerjan> > iterate (\x -> x*49+8) 1
15:01:23 <lambdabot> [1,57,2801,137257,6725601,329554457,16148168401,791260251657,38771752331201...
15:01:34 <oerjan> `factor 2801
15:01:35 <HackEgo> 2801: 2801
15:01:45 <oerjan> base 7: 2, 3, 5, 10 (7), 14 (11), 16 (13), 41 (29), 61 (43), 11111 (2801).
15:01:59 -!- cheater99 has joined.
15:02:23 <kfr> oerjan what are you doing? Checking out prime generating polynomials?
15:03:01 <oerjan> kfr: checking what primes in various bases have representations that have no other prime as non-consecutive substrings
15:03:24 <oerjan> there's a theorem that says the number of them is always finite
15:04:04 <oerjan> (primeness is not important for that, just any property of strings can be used)
15:05:16 <oerjan> so far it's been possible to check. but we don't have a certain proof for the same question for powers of 2...
15:05:18 <kfr> > iterate (\n -> n^2 + n + 41) 1
15:05:19 <lambdabot> [1,43,1933,3738463,13976109340873,195331632308051498617743043,3815444658012...
15:05:23 <kfr> :o
15:05:27 <oerjan> heh
15:05:49 <kfr> lol that's the wrong use though
15:06:17 <oerjan> > [n^2 + n + 41 | n <- [0..40]]
15:06:17 <lambdabot> [41,43,47,53,61,71,83,97,113,131,151,173,197,223,251,281,313,347,383,421,46...
15:06:25 <kfr> Damn, I was just writing that
15:06:39 <kfr> Although with take 10 and n <- [0..] instead
15:06:41 <oerjan> thought that might be what you meant
15:06:59 <oerjan> well i know they stop being all primes at around 40
15:07:10 <kfr> Right
15:07:15 <kfr> http://mathworld.wolfram.com/Prime-GeneratingPolynomial.html
15:08:06 <oerjan> actually 40 itself doesn't give one
15:08:21 -!- Phantom_Hoover has joined.
15:08:36 <Phantom_Hoover> Oh dear god, there's another version of LoseThos.
15:09:43 <Ilari> For powers of two, the minimal subset of substrings is known to be finite. In base 10, it is at least 5 and 6th element if it existed would have to be >2^10^9 (>300M digits).
15:10:10 <oerjan> well right it's the exact set that isn't known
15:12:33 <oerjan> > 8^2+4*8+1
15:12:34 <lambdabot> 97
15:13:49 <oerjan> > 8^2+6*8+1
15:13:50 <lambdabot> 113
15:15:19 <oerjan> `factor 257
15:15:20 <HackEgo> 257: 257
15:16:03 <Phantom_Hoover> The LostThos guy remonds me distressingly of zzo, come to think of it.
15:16:42 <oerjan> > 4*8^2+4*8+1
15:16:43 <lambdabot> 289
15:16:49 <oerjan> `factor 289
15:16:50 <HackEgo> 289: 17 17
15:17:31 <Ilari> For base 9: "2, 3, 5, 7, 14, 18, 41, 81, 601, 661, 1011, 1101, ...
15:19:26 <oerjan> > 6*8^2+0*8+1
15:19:27 <lambdabot> 385
15:22:56 <oerjan> > 6*8^2+6*8+1
15:22:57 <lambdabot> 433
15:23:06 <oerjan> `factor 433
15:23:06 <HackEgo> 433: 433
15:25:28 <oerjan> > 8^3+0*8^2+0*8+1
15:25:29 <lambdabot> 513
15:27:49 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
15:28:17 <oerjan> > 8^3+1*8^2+0*8+1
15:28:17 <lambdabot> 577
15:28:25 <oerjan> `factor 577
15:28:26 <HackEgo> 577: 577
15:30:36 <oerjan> > 4*8^3+1*8^2+1*8+1
15:30:37 <lambdabot> 2121
15:31:42 <oerjan> > 4*8^3+4*8^2+1*8+1
15:31:43 <lambdabot> 2313
15:31:50 <oerjan> `factor 2313
15:31:51 <HackEgo> 2313: 3 3 257
15:33:02 <oerjan> > 4*8^3+4*8^2+6*8+1
15:33:02 <lambdabot> 2353
15:33:09 <oerjan> `factor 2353
15:33:09 <HackEgo> 2353: 13 181
15:33:43 <oerjan> > 4*8^3+6*8^2+1*8+1
15:33:44 <lambdabot> 2441
15:33:51 <oerjan> `factor 2441
15:33:52 <HackEgo> 2441: 2441
15:33:58 <oerjan> base 8: 2, 3, 5, 7, 141 (97), 161 (113), 401 (257), 661 (433), 1101 (577), 4611 (2441), ...
15:34:39 <oerjan> > 4*8^3+6*8^2+4*8+1
15:34:40 <lambdabot> 2465
15:35:41 <oerjan> > 6*8^3+0*8^2+0*8+1
15:35:42 <lambdabot> 3073
15:35:50 <oerjan> `factor 3073
15:35:51 <HackEgo> 3073: 7 439
15:42:54 <oerjan> `factor 3137
15:42:55 <HackEgo> 3137: 3137
15:44:38 <oerjan> `factor 3337
15:44:39 <HackEgo> 3337: 47 71
15:45:39 <oerjan> `factor 3361
15:45:39 <HackEgo> 3361: 3361
15:49:59 <oerjan> `factor 4097
15:50:00 <HackEgo> 4097: 17 241
15:51:44 <oerjan> `factor 4169
15:51:44 <HackEgo> 4169: 11 379
15:52:02 <oerjan> `factor 4681
15:52:03 <HackEgo> 4681: 31 151
15:52:07 -!- cheater99 has quit (Ping timeout: 240 seconds).
15:53:48 <oerjan> `factor 16969
15:53:49 <HackEgo> 16969: 71 239
15:54:42 <oerjan> `factor 18697
15:54:43 <HackEgo> 18697: 7 2671
15:55:32 <oerjan> `factor 18721
15:55:33 <HackEgo> 18721: 97 193
15:55:50 <kfr> This channel should be renamed to #repl
15:57:07 <ais523> that's what #esoteric-blah is for, isn't it?
15:57:09 <ais523> except the bots aren't tehre
15:57:11 <ais523> you could try PM
15:57:21 <oerjan> ok i just started doing that
15:57:59 <ais523> my current pastime: repeatedly rebooting Windows (which hasn't been loaded for almost a year) to see how many reboots it takes to finish applying all its updates
15:58:05 <ais523> I'm at about 12 atm, I've vaguely lost count...
15:58:20 <ais523> (Windows 7, in case it matters)
16:05:19 -!- cheater99 has joined.
16:06:31 -!- copumpkin has joined.
16:10:30 -!- cheater99 has quit (Ping timeout: 240 seconds).
16:11:05 -!- cheater99 has joined.
16:18:44 <oerjan> base 8: 2, 3, 5, 7, 141 (97), 161 (113), 401 (257), 661 (433), 1101 (577), 4611 (2441), 6101 (3137), 6441 (3361), 60411 (24841), 101111 (33353), 444641 (149921), ...
16:24:35 <ais523> does the ... mean there are potentially more?
16:28:22 -!- pumpkin has joined.
16:28:27 -!- copumpkin has quit (Ping timeout: 272 seconds).
16:29:41 -!- Slereah has quit (Ping timeout: 260 seconds).
16:30:21 -!- asiekierka has quit (Ping timeout: 272 seconds).
16:31:54 <Ilari> It is fairly easy to list all numbers in set up to N, but showing that the set is complete requires a proof (and that isn't easy on bases >=5).
16:36:07 -!- Slereah has joined.
16:36:45 -!- copumpkin has joined.
16:36:50 -!- copumpkin has quit (Changing host).
16:36:50 -!- copumpkin has joined.
16:37:57 -!- pumpkin has quit (Ping timeout: 272 seconds).
16:40:18 -!- sebbu has quit (Read error: Connection reset by peer).
16:40:49 -!- sebbu has joined.
16:40:59 <oerjan> <ais523> does the ... mean there are potentially more? <-- oh right, yes, i just wanted to put those i've found so far on the screen
16:41:20 -!- ais523 has quit (Read error: Connection reset by peer).
16:41:41 <oerjan> Ilari: i'm proving as i go. admittedly i might slip up...
16:41:59 <oerjan> but i believe i've got all bases <= 7
16:42:36 -!- asiekierka has joined.
16:48:30 -!- ais523 has joined.
16:49:13 -!- Sgeo_ has joined.
16:58:35 -!- asiekierka has quit (Remote host closed the connection).
17:00:50 -!- asiekierka has joined.
17:01:09 <oerjan> base 8: 2, 3, 5, 7, 141 (97), 161 (113), 401 (257), 661 (433), 1101 (577), 4611 (2441), 6101 (3137), 6441 (3361), 60411 (24841), 101111 (33353), 444641 (149921), 600111 (196681), 1000011 (262153), 1000111 (262217), 4411111 (1184329), ...
17:03:45 <ais523> fun issue I came up against just now: I had to reproduce someone else's virtual machine from the disks
17:03:52 <ais523> and they assumed a particular disk was connected to /dev/sdb1
17:04:22 <ais523> in the end, I had to make a tiny hard disk and attach it to sda in order to push the other disk onto sdb (and thus get its partition at sdb1)
17:09:06 <fizzie> You can do the same with udev trickery; but that is undoubtedly simpler.
17:10:36 <ais523> how to do udev trickery is unclear if it crashes before I even reach a shell
17:11:37 <fizzie> By mounting the disk from the host and twiddling the configuration files?
17:13:11 <fizzie> Though with some image formats that's non-trivial.
17:13:14 <ais523> the disk wasn't in a format that could be directly mounted, especially because the host was running Windows
17:28:31 -!- TLUL has joined.
17:31:11 <ais523> wow, the Yes problem on anagolf seems to be shorter to cheat than to not cheat in Python
17:31:36 -!- sftp has quit (Remote host closed the connection).
17:31:38 <Phantom_Hoover> Io.
17:32:35 <quintopia> `factor 257
17:32:36 <HackEgo> 257: 257
17:34:27 -!- sftp has joined.
17:37:13 <Sgeo_> Phantom_Hoover, what about Io?
17:37:30 <Phantom_Hoover> O GOD WHAT HAVE I DONE
17:37:54 <Sgeo_> Phantom_Hoover, you just said Io without any context.
17:37:58 <Sgeo_> You're turning into me!
17:40:51 -!- cheater99 has quit (Ping timeout: 240 seconds).
17:41:29 -!- cheater99 has joined.
17:43:13 -!- Slereah has quit (Ping timeout: 240 seconds).
17:45:27 <Sgeo_> Also, I'd like Io more if it worked well on Windows
17:49:40 -!- Slereah has joined.
17:59:28 -!- sftp has quit (Remote host closed the connection).
17:59:55 -!- sftp has joined.
18:07:16 -!- sebbu2 has joined.
18:07:45 <Phantom_Hoover> Sgeo_, I WAS REFERRING TO THE MOON
18:08:13 <Sgeo_> And there was no context by which someone would figure that out
18:08:15 <oerjan> THAT IS NO MOON
18:08:36 <quintopia> is binary addition possible in underload? is it necessary to store each digit as a separate stack element?
18:09:00 <oerjan> quintopia: you can implement lists
18:09:10 <oerjan> so it's surely possible
18:09:22 -!- sebbu has quit (Ping timeout: 260 seconds).
18:09:51 <quintopia> possible with having the entire numeral in one stack cell?
18:10:18 <oerjan> sure. the numeral would be a program, of course, like everything else in Underload.
18:10:46 <oerjan> (well everything that's not just for printing)
18:11:49 <pikhq_> BACON
18:11:51 -!- pikhq_ has changed nick to pikhq.
18:12:03 <oerjan> a cons cell can be implemented as a program that puts the car and the cdr on the stack. (you might also want an empty flag).
18:12:41 <oerjan> so the cdr is then a subprogram, which has its cdr as a subprogram, etc.
18:13:22 <oerjan> in fact my printing routines of lately are essentially mostly cons cells, as ais523 pointed out.
18:13:52 <ais523> it's basically list index followed by print, much like you'd do it in any other language that didn't have arithmetic
18:13:56 <ais523> on characters
18:14:18 <quintopia> so the reasonable thing to have here is a numeral such that cating with another numeral and executing would push the sum as a numeral in the same format onto the stack
18:14:39 <quintopia> and of course the requirement should be that the length of the representation is logarithmic in the size of the numeral
18:14:45 <ais523> why require cat in particular? why not allow any addition function?
18:14:52 <oerjan> ...no, i don't think that's necessarily reasonable if you want binary efficiency
18:15:02 <oerjan> (it might happen to be by accident)
18:15:05 <quintopia> "reasonable"
18:15:10 <quintopia> in the sense of "fun to write"
18:15:16 -!- elliott has joined.
18:16:00 <elliott> 06:37:37 <Gregor> Anybody happen to know of a FreeDesktop-aligned menu program that can run as a system tray applet?
18:16:03 <oerjan> there _is_ a simple numeral form for which concatenating is summing: lists of ^'s
18:16:04 <elliott> Gregor: gnome-panel? >:D
18:16:20 <elliott> Seriously though, what does freedesktop matter here?
18:16:20 <oerjan> (no execution needed though)
18:16:23 <elliott> wait
18:16:24 <quintopia> oerjan: isn't that unary?
18:16:26 <elliott> are you talking about underloda?
18:16:28 <elliott> *underload?
18:16:30 <oerjan> quintopia: yes
18:16:33 <elliott> i was just thinking about how to do division!
18:16:35 <Gregor> elliott: .desktop files
18:16:35 <elliott> :3
18:16:37 <elliott> erm
18:16:39 <elliott> not division
18:16:41 <elliott> addition
18:16:42 <elliott> Gregor: ew
18:16:45 <Gregor> elliott: By FreeDesktop-aligned I just mean "compatible with their standards"
18:16:48 <quintopia> then it doesn't meet the logarithmic-sized representation requirement
18:16:55 <elliott> Gregor: Their standards are terrible :P
18:16:56 <elliott> ais523: ping
18:16:59 <Gregor> elliott: You'd rather go back to the hell that predated .desktop files?
18:17:07 -!- zzo38 has joined.
18:17:08 <elliott> Gregor: Nope.
18:17:18 <oerjan> elliott: heh, i have a vague idea to do division similarly to my recent printing routine (which you may not have seen in its full glory yet)
18:17:26 <elliott> indeed i haven't
18:17:33 <elliott> now how do you add two UL-church numerals?
18:18:12 <oerjan> elliott: ((:)~*(*)*)~^
18:18:23 <ais523> oerjan: is that not a+b+1?
18:18:23 <elliott> heh, so basically what i was thinking, but more elegant
18:18:27 <elliott> hm indeed
18:18:35 <ais523> that's one of the more elegant forms of that rule I've seen, though
18:18:40 <ais523> I was busy trying to work it out and failing
18:18:45 <elliott> ais523: You know how you said special-casing numbers would make arithmetic O(1) instead of O(log n)?
18:18:55 <ais523> ah no, it is a+b
18:18:59 <elliott> ais523: That's incorrect, because addition and multiplication are both O(log n) IIRC
18:19:07 <elliott> But certainly arithmetic isn't O(1)
18:19:09 <oerjan> ais523: it's just iterating increment on m, n times
18:19:12 <zzo38> I wrote in the wiki about how to do increment/add church numbers.
18:19:15 <ais523> elliott: actually they're O(n), but you could detect arithmetic too I suppose
18:19:17 <ais523> oerjan: indeed
18:19:20 <elliott> Of course, for naturals less than 2^64 it can work.
18:19:25 <elliott> ais523: I'm talking about mathematically
18:19:29 <ais523> ah, I see
18:19:31 <elliott> I think addition is O(log n)
18:19:32 <ais523> yes, I was assuming not bignum
18:19:35 <elliott> right
18:19:50 * elliott boggles at ais' message on http://esolangs.org/wiki/User_talk:Crescente
18:19:56 <zzo38> But it is possible I make mistake
18:20:06 <ais523> elliott: I was wondering how to deal with an obviously spambot UT page
18:20:12 <ais523> so I decided to do that to see what the reaction would be
18:20:21 <ais523> it takes a while to figure out how any given spambot acts
18:20:22 <elliott> ais523: btw, what does a numeral of the form ({:*}^n) represent?
18:20:25 <elliott> is it even a church numeral?
18:20:26 <elliott> I /think/ so
18:20:27 <ais523> power of 2
18:20:29 <elliott> is it 2^n?
18:20:30 <elliott> right
18:20:40 <elliott> hmm increment (I want to figure this out myself)
18:20:46 <elliott> (:*) is 2, I believe
18:20:51 <elliott> right ais523?
18:20:58 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~(0)(!())((~(, )*S:((^~!)~^^^~)~a*^(::)~(**)**)~a*^:^):^
18:20:58 <ais523> yes
18:20:58 <elliott> so
18:20:59 <fungot> 0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 841, 900, 961, 1024, 1089, 1156, 1225, 1296, 1369, 1444, 1521, 1600, 1681, 1764, ...out of time!
18:21:10 <elliott> (x)(:*)^ -> (xx)
18:21:21 <elliott> (:)(:*)* -> (::*)
18:21:22 <elliott> so
18:21:28 <elliott> (:)~*(*)*
18:21:29 <elliott> is increment
18:21:31 <ais523> yep
18:21:36 <elliott> addition
18:21:36 <elliott> hm
18:21:41 <elliott> (i forgot the solution don't tell me)
18:21:45 <Sgeo_> Grrr at the clothing he's wearing being 2lbs
18:21:55 <elliott> (:*)(::**) is 2+3, i.e. 5 i.e. (::::****)
18:21:57 <elliott> so
18:22:19 <elliott> (:)~^ ... nope
18:22:25 <oerjan> <quintopia> then it doesn't meet the logarithmic-sized representation requirement <-- well i just don't immediately see how to do your "addition by concatenation" with a non-unary representation
18:22:27 <ais523> elliott: err, (:*)(::**) is just two numbers
18:22:33 <elliott> ais523: indeed
18:22:34 <elliott> ais523: that was 2 and 3
18:22:36 <elliott> my examples
18:22:40 <elliott> that i was working with
18:22:43 <ais523> oh, those are the args you want
18:22:44 <quintopia> oerjan: i don't either.
18:22:45 <elliott> right
18:22:59 <elliott> well, zzo's solution is basically recursive increment
18:23:01 -!- Cheery has joined.
18:23:07 <elliott> but I want something more "primitive"...
18:23:08 <kfr> ;D
18:23:10 <Cheery> http://www.youtube.com/watch?v=scZ-MHgfol0
18:23:30 <elliott> hmm, a random person coming in and linking a youtube video that actually seems relevant?
18:23:32 <ais523> oerjan: you'd basically have to use a self-delimiting format
18:23:34 <kfr> Cheery is working on a visualised programming language or something like that, it looks very esoteric
18:23:39 <elliott> that's not a common occurrence
18:23:39 <kfr> elliott: I told him to haha
18:23:45 <Cheery> or did kfr already linked? we thought you'd here would bother. ;)
18:23:47 <ais523> kfr: heh, we've had a bunch of spambots doing that recently
18:24:01 <ais523> so for a human to do the same thing the same way, only it's relevant, is awesome
18:24:05 <kfr> I thought it was worth sharing
18:24:12 <ais523> the timings gave it away, though
18:24:16 <elliott> Cheery: do you know of aardappel?
18:24:18 <ais523> I'm at work so can't watch YouTube; what's it about?
18:24:23 <kfr> It was funny because I was talking about this in here just a few days ago
18:24:26 <elliott> it's like Aardappel from the looks of it :P
18:24:31 <elliott> very like aardappel
18:24:49 <Cheery> elliott: no, I'm doing a quick search on it now.
18:25:11 <elliott> Cheery: http://strlen.com/aardappel-language
18:25:22 -!- kar8nga has joined.
18:25:23 <kfr> Cheery: This channel is good for freethinker talk on programming languages although many people in here are under the influence of Haskell
18:25:26 <elliott> Wouter is one of the "famous" esolangers, made FALSE
18:25:31 <elliott> also, technically a channel op here
18:25:36 <elliott> but I've never seen him, ever
18:25:40 <Cheery> mh.. with google I only found this: http://www.fluweelbloem.nl/wp-content/uploads/2009/10/aardappel-bikini-297x300.jpg
18:25:40 <kfr> And there's an Underload sport going on here
18:25:59 <kfr> It means potato in some Germanic language, I suppose
18:26:17 <kfr> Should be west Germanic
18:26:32 <kfr> Yeah it's Dutch apparently
18:26:52 <elliott> hm, we don't have an Aardappel page on the wiki.
18:26:54 <kfr> http://strlen.com/aardappel-language
18:27:10 <Cheery> I thought about trying to make this one way to write languages, didn't thought much about its esoteric value.
18:27:13 <kfr> Damn, so I was too late :|
18:27:17 <oerjan> kfr: HASKELL HASKELL HASTUR AAAAAAAAAAAAAAAA
18:27:25 <kfr> oerjan: Hva
18:27:45 <kfr> I had to look up Hastur
18:27:48 <oerjan> role playing/cthulhu joke
18:27:52 <elliott> 18:42:11 <kfr> Cheery: This channel is good for freethinker talk on programming languages although many people in here are under the influence of Haskell
18:27:52 <elliott> ok, logreading was a mistake, why can't I learn to trust my past self to make the right ignores...
18:27:53 <kfr> Not familiar with it
18:28:01 <oerjan> kfr: btw er du norsk?
18:28:04 <kfr> Nei
18:28:09 <oerjan> oh
18:28:29 <oerjan> ...something fishy there...
18:28:32 <kfr> Jeg er fra tyskland men jeg lære meg norsk fordi jeg vil skrive helnorsk svartmetall sangtekster
18:28:38 <oerjan> aha
18:28:38 <kfr> ^-^
18:28:43 <elliott> ais523: btw I am really tempted to write an Underload preprocessor
18:28:47 -!- asiekierka has quit (Remote host closed the connection).
18:28:58 <kfr> I'm exaggerating, I haven't studied Norwegian in a long time
18:29:00 <ais523> elliott: I even /specced/ one, and implemented it sort-of
18:29:03 <elliott> ais523: let mock := (:^)*:^.
18:29:06 <elliott> () mock -> infinite loop
18:29:09 * oerjan isn't into metal, alas
18:29:19 <zzo38> elliott: Yes I too had idea of Underload preprocessor
18:29:19 <elliott> ais523: WELL MINE'S BETTER
18:29:27 <ais523> it's a really obvious thing to do
18:29:33 <kfr> oerjan: Awww, black metal is the most significant export of Norway! :[
18:29:35 <elliott> ais523: I think Underload + word definitions could actually be a nice-ish language...
18:29:41 <ais523> mine let you redefine things like :, though, in terms of other things
18:29:45 <Cheery> aardappel looks pretty. I'll have to look into it
18:29:51 <ais523> so you could do things like add bounds checking to the language while keeping source compatibility
18:30:06 <elliott> Cheery: aardappel is pretty but, like all tree-based structural programming editors, absolutely impossible to use efficiently
18:30:11 <elliott> /cough cled
18:30:18 <elliott> ais523: that's awful
18:30:27 <ais523> elliott: really?
18:30:32 <elliott> well
18:30:34 <elliott> scary :)
18:30:45 <ais523> Underlambda's designed around making that idea possible
18:31:03 <ais523> not expecting it to be efficient, but letting you use it to write relatively simple esolang->esolang compilers
18:31:14 <Cheery> elliott: which spots make it inefficient?
18:31:18 <Cheery> inputting?
18:31:28 <ais523> the idea is to make it a) easy to implement, and b) possible to implement efficiently (but not necessarily easy to implement efficiently)
18:31:36 <oerjan> kfr: yeah but few actual _norwegians_ are into it :D
18:31:40 <elliott> Cheery: well, actually inputting programs in structural editors tends to be slower than a textual format; editing I've never done, but I suspect navigating to the right place might take more time too
18:31:46 <Cheery> it's one of things I've attempting to get on. :)
18:31:47 <elliott> Cheery: this problem might not be inherent, but nobody's solved it yet afaik
18:31:58 <kfr> oerjan: Oh I'm sure it's far more popular in Norway than in most of Europe, per capita
18:32:35 <Cheery> elliott: confirmed typing is pretty fast if you first get to a location where you need to be in
18:32:45 <kfr> Although probably not nomimally considering Norway's smaller population
18:33:08 <Cheery> elliott: though, navigation is the harder problem I've not yet gotten good solutions to.
18:33:08 <quintopia> ais523: do you have enough of an idea of underlambda to have already written some examples for it?
18:33:13 <ais523> hmm, is the idea that the editor makes it physically impossible to type a syntax error, and also stores the structure of the code so you don't need to use things like braces instead
18:33:29 <pikhq> oerjan: I'd imagine it's at least got a decent niche in Norway.
18:33:30 <elliott> ais523: yes, welcome to 1990 or something
18:33:35 <ais523> quintopia: yes, I do; the problem with Underlambda is not the Feather problem of me not understanding it, but the entirely unrelated problem of me repeatedly changing my mind
18:33:37 <Cheery> ais523: that's it.
18:33:40 <pikhq> oerjan: The Norwegian black metal artists have to come from somewhere, right?
18:33:40 <elliott> Cheery: I find typing is inefficient because mistakes in the structural parts are harder to correct.
18:33:53 <quintopia> ais523: just was wondering if anything was set in stone
18:34:08 <ais523> not really, although a few characters are very unlikely to change meaning
18:34:09 <Cheery> elliott: I did a mechanism that lets you correct the last mistake you did
18:34:11 <kfr> So everything you make in a structural editor is a correct program? (as in, it compiles) I think I have seen something like this in two applications before, actually
18:34:15 <oerjan> pikhq: you'd think. mind you since i don't even watch _tv_ i don't really know how mainstream it has got.
18:34:15 <elliott> Cheery: For instance, if I write "x/4" as the mistaken "x=4", normally I could just backspace. But in a structural editor, it is quite likely that the = will trigger the creation of new nodes etc.
18:34:18 <kfr> It was absolutely horrible, though
18:34:20 <elliott> And reversing that might be harder than backspacing.
18:34:23 <ais523> mostly the small abbreviation ones, like _ for dip, and & and ` as argument-reversed versions of * and ^
18:34:27 <elliott> Sure, undo gets you some of the way, but I don't think all.
18:34:35 <kfr> Those were the editors for StarCraft and StarCraft II coded by Blizzard
18:34:46 <Cheery> elliott: oh, that will be trouble.
18:34:47 <kfr> They used structural editors for the half assed scripting language
18:34:57 <zzo38> Then make the editor so that pushing backspace will undo the creation of the new node.
18:35:00 <kfr> It was enormously time consuming to get any work done there
18:35:05 <pikhq> oerjan: My "TV" watching consists of: video off the Internet, NetFlix streaming, and football. :)
18:35:09 <ais523> but I managed to get call/cc implemented purely in the preprocessor
18:35:12 <kfr> But it was by no means optimising
18:35:16 <ais523> wow, I've just realised how insane my previous line was
18:35:18 <kfr> But it was by no means optimised* for input speed
18:35:42 <elliott> Cheery: I think structural editors should possibly keep things in a mostly linear form until the completion of small structures, at which point they turn "semantic".
18:35:54 <pikhq> (NetFlix, BTW, is a company in the US that lets you rent any number of DVDs, via the mail, per month, for a flat rate, *and* offers streaming video on a variety of set-top boxes. Quite nice.)
18:35:57 <elliott> Cheery: (if you start writing a larger structure, parts you typed a short while ago will become structural, but your current focus will stay linear)
18:36:02 <elliott> pikhq: *Netflix
18:36:09 <pikhq> elliott: Blah, right, it's not camel case.
18:36:10 <oerjan> ais523: well we expect _you_ to implement call/cc in the _processor_
18:36:14 <elliott> also, football? why? :p
18:36:20 <Cheery> elliott: or have linear form available all the time from the semantic one.
18:36:25 <pikhq> elliott: I don't know why, but I actually enjoy watching American football.
18:36:30 <pikhq> elliott: Little bit of a guilty pleasure.
18:36:45 <kfr> pikhq: It's funny that you chose to go all the way to explain NetFlix but you decided not to add verosity to the football part which would be most misleading one in an international chat :p
18:36:46 <zzo38> Is there anything in gcc that allows a program to operate on its own GENERIC and GIMPLE codes before it is compiled?
18:36:49 <ais523> oerjan: haha, although not very likely, it doesn't even have a remotely sane restriction to finite state unless you make it work like exceptions, and that misses the whole point
18:36:56 <elliott> Cheery: possibly. but i mean so that fixing recent enough mistakes can be done by just backspacing. :p
18:37:00 <kfr> Oh, or Netflix then* :p
18:37:06 <kfr> verbosity* rather
18:37:07 <Cheery> elliott: editing is the thing you pointed out already. I think that's next thing I should look into.
18:37:09 <ais523> zzo38: I don't think so, because gcc is so muddled around that point; in some cases, it doesn't go via GENERIC/GIMPLE at all
18:37:20 <elliott> yeah
18:37:22 <ais523> a program can operate on RTL using a modified version of __asm, but only to add things
18:37:28 <ais523> not to move them around
18:37:33 <pikhq> kfr: Even without mentioning that it's American football, a form of gridiron football, people would at least understand that football is a form of sport that is often watched on TV.
18:37:42 <kfr> Right
18:37:47 <zzo38> ais523: If gcc doesn't, can LLVM do anything like I described (but without GENERIC/GIMPLE, I guess)?
18:37:54 <ais523> zzo38: I don't know, I haven't looked into it
18:38:05 <kfr> That is certainly true for all derivatives of that family
18:38:11 <pikhq> Whereas if you've not heard of Netflix at all, you're going to be pretty clueless.
18:38:19 <kfr> True that
18:38:23 <Cheery> elliott: I don't think if it's so easy to directly fix the mistake, but I feel I know how I could approach these things.
18:38:42 <pikhq> Also, it's not true that all forms of football are forms of gridiron football.
18:38:45 <kfr> Cheery by the way, I presume that your language is typed statically?
18:38:56 <pikhq> I think the only two notable such games are American and Canadian football.
18:39:03 <kfr> How is Aardappel typed?
18:39:10 <ais523> what does "gridiron" mean in this context?
18:39:34 <Cheery> kfr: depends about the language. I haven't yet decided on the language and actually.. I attempt to do support for both into one multilingual packet.
18:39:37 <elliott> it means you play on a gigantic iron
18:39:39 <elliott> arranged in a grid
18:39:48 <ais523> elliott: I choose not to believe you
18:39:58 <kfr> pikhq: Hmm? Association Football is the most popular sport wide, and then there are the different forms of Rugby and Australian Rules Football
18:40:13 <Cheery> for the first run it sounds like good idea to start from C-like language.
18:40:22 <kfr> Oh, I don't know what the gridiron part means
18:40:37 <elliott> Cheery: seriously? naw
18:40:41 <pikhq> ais523: It's a class of football games, which has a series of parallel lines indicating yardage on the play field, and has a system of downs, a line of scrimmage, and forward passes.
18:40:44 <elliott> Cheery: something like Lisp would work best
18:40:53 <elliott> Cheery: the uniformity will make the editing easier with that kind of interface
18:40:56 <ais523> pikhq: ah, OK; that's... rather specific
18:41:05 <pikhq> ais523: There's more than one such game is the thing.
18:41:22 <kfr> http://en.wikipedia.org/wiki/Gridiron_football
18:41:32 <Cheery> elliott: I feel I need tools that work on non-uniform representation of semantics.
18:41:38 -!- cheater99 has quit (Ping timeout: 240 seconds).
18:41:46 <ais523> elliott: this may or may not be a good time to mention scapegoat
18:41:52 <pikhq> ais523: They're all pretty *similar* games, but definitely distinct.
18:41:55 <elliott> ais523: good a time as any!
18:42:00 <elliott> Cheery: why?
18:42:53 <Cheery> elliott: better visuals.
18:43:08 <elliott> Cheery: well, C-like languages are a bad choice, because they usually have few levels of expression nesting
18:43:09 <Cheery> though yeah. it boils down to an interesting form of lisp.
18:43:13 <elliott> meaning your tools have less to work with
18:43:19 <ais523> pikhq: I never really understood the attraction in American football, by the way; which is interesting because I prefer baseball to pretty much all sports which are commonly watched in the UK
18:44:04 <elliott> 13:16:09 <ais523> "LoseThos can update full screen at 30fps without much effort because it's only 640x480x16 color."
18:44:04 <elliott> 13:16:19 <ais523> isn't that a bit low for modern systems?
18:44:04 <elliott> it redraws the screen every frame, because it's LoseThos and he's clinically insane
18:44:12 <ais523> elliott: oh, right
18:44:16 <Cheery> elliott: I also thought about doing a first run with the language I think would fit best for the editor configuration.
18:44:16 <kfr> My supervisor is from Pakistan, he was too late for a meeting today because he stayed up for a long time to watch a cricket game
18:44:19 <pikhq> ais523: Baseball's a sport I've not really gotten *that* much into, but I will admit that it's pretty fun to watch in a stadium.
18:44:34 <ais523> pikhq: really? I'd imagine you couldn't much tell what was going on live
18:44:45 <ais523> that usually seems to be the case, I generally prefer to watch sport on TV for that reason
18:44:57 <ais523> although I have a feeling that I'm potentially missing the point
18:44:57 <pikhq> ais523: Admittedly, I've only gone to minor league games, which have rather smaller stadiums.
18:45:03 <Cheery> elliott: that'd be using graph reducing with controlled side-effects.
18:45:06 * kfr hasn't owned a TV in 11 years
18:45:17 <elliott> Cheery: I think side-effects would be a distraction for this
18:45:25 -!- cheater99 has joined.
18:45:30 <elliott> Cheery: ideally, you'd be able to press an "evaluate" key at any point in the tree, and see just that subtree reduce to a simpler form, e.g. to the side
18:45:30 <pikhq> (there's a minor league team in town; family's gone there a few times. Fun and cheap. Yay.)
18:45:35 <elliott> side-effects would destroy that a little bit
18:45:36 <ais523> I don't think I've owned a TV ever, although my parents own at least one
18:45:38 <elliott> and I feel it could be useful for debugging
18:45:42 <ais523> and so I can watch it like that if necessary
18:45:57 <pikhq> I own a TV tuner card. It is permanently attached to my PS3.
18:46:29 <pikhq> If my monitor were HDMI, I'd just have a switchbox instead. Ah well.
18:46:46 <ais523> the TV situation in the UK is a bit weird, because all the major channels do things online (restricted to residents of the UK) nowadays
18:46:54 <ais523> I think channels 4 and 5 just put their stuff up on YouTube
18:47:06 <Cheery> well.. getting to keep on this kernel stuff yet a while. I try to get memory management, scheduling and driver interface done. :)
18:47:09 <elliott> BitTorrent obsoleted television. :p
18:47:15 <elliott> Cheery: Oh, you are implementing this in an OS?
18:47:18 <elliott> Cheery: Cool!
18:47:19 <pikhq> In the US, the major channels are still needing to be convinced that it's a good idea to put stuff online.
18:47:37 <pikhq> First, there was Hulu, which got basically everything. Then they started to make Hulu suck.
18:47:53 <Cheery> elliott: well.. more like I plan implementing an OS with it.
18:47:58 <Cheery> ;)
18:48:02 <zzo38> I prefer analog television, it works.
18:48:13 <zzo38> But I do not watch television much.
18:48:16 <Cheery> and only after then implement the editor itself in the OS.
18:48:23 <ais523> zzo38: not for much longer, at least in the UK; they're in the process of switching analog transmitters off at the moment
18:48:25 <elliott> I ONLY WATCH TELEVISION ON AN ANALOGUE, BLACK-AND-WHITE SET FROM 1949
18:48:27 <ais523> to free up the bandwidth for other things
18:48:37 <elliott> WITH A 2" SCREEN AND TWENTY KNOBS THAT YOU USE TO CHANGE FROM CHANNEL 1 TO CHANNEL 1 AND BACK
18:48:39 <elliott> WHICH WAS ALL THEY HAD IN THOSE DAYS
18:48:44 <elliott> IT DOESN'T HAVE SOUND, THEY HADN'T INVENTED SOUND YET
18:48:45 <pikhq> It's like they don't even realise that if people can't watch it easily online, they'll either say "fuck that" or pirate it, rather than pay money.
18:48:52 <elliott> IT'S ALSO GREY BECAUSE THEY HADN'T INVENTED COLOUR YET
18:49:15 <ais523> elliott: well, /mine/ was invisible because they hadn't invented grey yet either
18:49:16 <elliott> pikhq: most people aren't very good at piracy
18:49:29 <pikhq> elliott: Thus why "fuck that" is an option.
18:49:32 <elliott> ais523: When the dinosaurs were around, we didn't even have radio, dammit.
18:49:36 <elliott> Neither colours nor sounds had been invented.
18:49:39 <elliott> Everything was just TRANSPARENT.
18:50:04 <pikhq> elliott: BTW, I consider watching illegal Youtube uploads as "pirating it" for purposes of this discussion.
18:50:05 <kfr> Yeah, I encountered Cheery in #osdev
18:50:31 <pikhq> elliott: Although technically just *watching* it is entirely legal.
18:50:57 <ais523> pikhq: hmm, I never realised that the breaks in proffessional American football were deliberately lengthened to make room for adverts
18:51:03 <kfr> Legality is relative, it depends on local legislation
18:51:05 <ais523> I always assumed the referees were just bad at making decisions
18:51:06 <pikhq> ais523: That is one of the suckier aspects.
18:51:39 <pikhq> kfr: Most copyright laws do not make it illegal to obtain something that was illegally reproduced; it is merely illegal to actually do said reproduction.
18:51:56 <ais523> it used to be hilarious watching US baseball games in the UK; due to the time difference and differences in advertising, they managed to fit in all the coverage that the US broadcast had (they just streamed with permission from ESPN), and did all the UK-extra things in the US ad breaks
18:52:27 <ais523> in other words, they basically fit an entire baseball discussion program - discussion, commentary, reading viewers' letters, etc. - into the ad breaks of the US version
18:52:42 <pikhq> They probably do that to US football, too.
18:52:53 <ais523> pikhq: but there's a copy in your computer's RAM! <--- actual (yet stupid) precedent from the Blizzard vs. Glider devs case
18:53:23 <kfr> ais523 lol I am familiar with that one
18:53:48 <kfr> There's been a series of new lawsuits by Blizzard against some other people recently, three of which I know
18:53:54 <pikhq> ais523: I don't know how that interacts with the *actual law* stating that copying into RAM for purposes of utilisation are not regulated by copyright law.
18:54:04 <kfr> About StarCraft II, I think
18:54:16 <ais523> hmm, what did they do to annoy Blizzard wrt that? it presumably wasn't botting
18:54:19 <ais523> maybe cheating?
18:54:26 <ais523> or using unlicensed copies?
18:54:46 <kfr> ais523: Selling cheats for SC2
18:54:56 <elliott> ais523: let me find a relevant comic...
18:55:00 <ais523> ah, as in patches that made cheating possible?
18:55:05 <ais523> elliott: why bother, I'd be unlikely to actually read it
18:55:05 <pikhq> Aaaand there's precedent that creating a derivative work using a cheat device is fair use.
18:55:11 <pikhq> (Nintendo v. Galoob, IIRC)
18:55:29 <pikhq> Sorry, Galoob v. Nintendo.
18:55:30 <elliott> ais523: WHO SAID IT WAS OPTIONAL
18:55:47 <kfr> ais523: Usually they are external programs which inject stuff into the target process and then terminate
18:55:47 <ais523> pikhq: and reverse-engineering a copy-protection scheme for the purpose of circumventing it used to be legal, until they specifically banned it via the DMCA
18:55:55 <kfr> I'm not entirely sure how these operate really
18:56:07 <kfr> SC2 has some pretty sophisticated protection
18:56:18 <kfr> With a messed up VM with randomised opcodes etc
18:56:19 <pikhq> ais523: Sadly, yes.
18:56:22 <elliott> grr, I can't find the comic
18:56:24 <pikhq> ais523: Fuck the DMCA.
18:56:26 <ais523> and you could even copy a trademarked logo for the purpose, if it was needed as a signing key
18:56:36 <ais523> pikhq: it has some good ideas, but a lot more bad ideas
18:56:47 <pikhq> ais523: Actually, *that* is entirely legal.
18:56:50 <kfr> I've only worked my way around Warden in Diablo II, which was quite easy though
18:56:57 <kfr> Never dealt with any sophisticated systems like that
18:57:07 <pikhq> I don't have the citation handy, but that's actually been in court.
18:57:11 <kfr> Or the ones which operate at a kernel level with their own signed drivers
18:57:18 <ais523> pikhq: indeed, there's precedent like that; although I'm worried about SCEA vs. Hotz, where the accusation is basically that except with the trademark
18:57:34 <ais523> *without the trademark
18:57:50 <kfr> Heh, I know some people who do PS3 hack dev
18:57:52 <pikhq> Something about a printer cartridge having a very small amount of code in ROM, and it was successfully argued that copying this ROM did not consist of a circumvention device.
18:57:52 <elliott> 19:07:46 <ais523> pikhq: hmm, I never realised that the breaks in proffessional American football were deliberately lengthened to make room for adverts
18:57:53 <elliott> *professional HAHA
18:57:57 <kfr> I have no interest in consoles myself
18:58:15 <ais523> elliott: you know what, I wrote it with one f, got confused, then changed it
18:58:17 <elliott> 19:11:05 <ais523> hmm, what did they do to annoy Blizzard wrt that? it presumably wasn't botting
18:58:17 <elliott> oh, that was in reply to kfr
18:58:22 <ais523> my spellchecker seemed to be happy in both directions
18:58:40 <Cheery> this "POTATO" -language looks like pretty fun
18:58:43 <ais523> but it sometimes randomly decides not to check at all, or to draw the red underscores outside the text box where they're occluded by the rest of the window
18:58:52 <Cheery> but he doesn't seem to concern editing at all!
18:59:15 <ais523> sometimes when I design a language I don't even worry about source code format
18:59:23 <ais523> e.g. DownRight, which I suspect /still/ isn't on the wiki
18:59:24 <pikhq> Copyright law is *so* fucking nuts.
18:59:29 <pikhq> (and completely unenforcable)
18:59:32 <ais523> pikhq: s/Copyright //
18:59:37 <kfr> I think one of my relatives is an IP lawyer :/
18:59:47 <kfr> He probably sues people like me for a living
18:59:49 <pikhq> ais523: At least the *premise* of most law is still workable.
18:59:58 <ais523> pikhq: good point
19:00:31 <pikhq> Copyright law nowadays is broken all the way down to the very idea.
19:01:07 <ais523> hmm, reading a comparison of American football and rugby, you often wonder how rugby players manage to move the ball forwards at all, because what the attacking side can do seems like a subset of what they can do in American football, whereas the defending side seem to have much the same abilities or better
19:01:37 <kfr> ais523 and they have far less protection lol
19:01:42 <pikhq> Well, they certainly manage to. And did in American football before the legalisation of the forward pass.
19:01:46 <kfr> I think injuries in Rugby are more common
19:02:02 <ais523> the sorts of contact are less dangerous, though; in rugby, you have to aim for the legs
19:02:05 <pikhq> (amusingly, this was done for the sole purpose of reducing injuries.)
19:02:10 <kfr> Oh, ok
19:02:10 <ais523> whereas in American football, I think you can aim anywhere
19:02:27 <pikhq> ais523: Certain forms of contact are barred, though.
19:02:33 <ais523> a "rugby tackle" is actually a sort of tripping people using your arms
19:02:52 <pikhq> IIRC, hitting someone with your helmet is a major penalty.
19:03:20 <ais523> that would make sense
19:03:42 <ais523> ISTR that in ice hockey, there's a rule against removing your sweater (and they're actually tied down to stop the players doing it)
19:03:59 <ais523> because it used to be an optimal strategy to prevent your opponents hanging onto you while trying to beat you up
19:04:33 <ais523> (probably the best rule of that nature, though, is the rule against transparent swimming costumes in synchronized swimming; it's the sort of rule that makes you think that it must be there for a reason)
19:04:57 <kfr> o_o
19:05:11 <kfr> Why don't they permit nude swimmers? Prudes
19:05:18 <quintopia> ais523: also, you can't pull someone down by their helmet.
19:05:32 <ais523> kfr: I don't see how being naked would violate a rule against transparent swimming costumes, although perhaps only because I'm overly literal
19:05:52 <kfr> Well, I suppose they want to prevent nudity
19:06:03 <pikhq> American prudishness and all.
19:06:06 <pikhq> :P
19:06:09 <quintopia> nah
19:06:21 <ais523> I think I've got the fundamental difference between American football and rugby, anyway; in rugby, if you're tackled you have to drop the ball, but if a team-mate picks it up they can just pass it sideways and keep on going
19:06:27 <quintopia> it's just that waving your boobs around gives you an unfair advantage
19:06:27 <ais523> and that happens quite a lot in rugby union
19:06:37 <quintopia> they're supposed to be rewarding skill, not biology
19:07:01 <kfr> Or penises
19:07:04 <oerjan> ^ul (:(1)*(:(2)*(:(3)*(:(4)*(:(5)*(:(6)*(:(7)*(:(8)*(:(9)*(!~:^)))))))))):(~^~(~a~*~a~*)~a*^:(0)*)~a*~:(a(:^)*())~*a(:^)*~()~^~((!^~)())((~:(, )*S~:(^~!^)~a*^:^*a~^!a*)~a*^:^):^
19:07:05 <fungot> 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, ...out of time!
19:07:11 <ais523> (in rugby league, you're limited to doing it four times between change of possession, meaning it's common to kick on the fifth tackle just like american football often punts on the fourth down)
19:07:25 <ais523> oerjan: you're really having fun with that, aren't you?
19:07:30 <oerjan> :)
19:07:33 <pikhq> And in American football, if you're tackled you stop play.
19:07:39 <quintopia> kfr: male synchronized swimmers? :P
19:07:49 <kfr> quintopia I'm sure it exists?
19:07:57 <pikhq> quintopia: It definitely exists.
19:07:58 <ais523> pikhq: indeed
19:08:09 <kfr> I mean if there's an Olympic category for women
19:08:13 <kfr> There must be one for men, too
19:08:25 <kfr> Otherwise that would be discrimination :'(
19:08:29 <quintopia> yeah of course it exists. but it's still not a common thing to expect.
19:08:36 <ais523> one interesting difference, incidentally, is that in rugby you can still do the equivalent of a field goal, but have to bounce the ball and kick it on the rebound, in order to make it more difficult
19:08:48 <ais523> because otherwise, people would get them all the time, the way the offside rule works
19:08:55 <elliott> ais523: anyway, my underload compiler is going well
19:09:01 <elliott> ais523: it's even the first one to follow the standard entirely
19:09:05 <ais523> yay!
19:09:10 <elliott> first implementation, that is
19:09:12 <elliott> ever
19:09:20 * elliott waits for ais523 to ask
19:09:22 <ais523> does it handle literal NUL correctly?
19:09:30 <elliott> I think so, but that's not what I mean
19:09:44 <elliott> oh, well, I don't think it can print them out on the C side, although it might actually end up being able to for various reasons
19:09:45 <ais523> (Underload doesn't special-case it, but most things do, so it's worth checking)
19:09:47 <Sgeo_> Is it about the stuff that the wiki says no one impleemnets?
19:09:49 <Cheery> I thought there was no rules in american football
19:09:50 <Sgeo_> implements
19:09:53 <ais523> Sgeo_: indeed
19:09:55 <elliott> in fact, I think it fails on invalid Unicode, but that's a bug I need to fix
19:10:00 <elliott> ais523: not going to guess how it's compliant?
19:10:06 <ais523> elliott is definitely referencing the " quoting stuff
19:10:17 <elliott> ais523: yep
19:10:20 <ais523> Cheery: well there have to be some rules, or you wouldn't be able to tell who'd won
19:11:22 <pikhq> Cheery: It's got rules that evolved out of rugby.
19:12:42 <kfr> <Cheery> I thought there was no rules in american football <- err what?
19:12:46 <ais523> elliott: wow, Wikipedia seems to have solved the debate about what [[football]] should mean by writing a full article at every plausible title
19:12:47 <kfr> There are tons of of rules
19:12:56 <ais523> [[football]] itself is a comparison of different games called "football"
19:13:08 <ais523> kfr: you're showing a Vorpal-like level of missing the point there, I think
19:13:10 <kfr> How would you be able to have any kind of formal competition otherwise?
19:13:14 <elliott> they call football "association football"
19:13:14 <ais523> Cheery was trying to make a joke
19:13:15 <Sgeo_> Dammit. In my current vision of GoTris, single eyes are just as alive as two eyes
19:13:26 <elliott> don't be stupid, jokes are for academics
19:13:40 <kfr> http://en.wikipedia.org/wiki/Vorpal_sword ?
19:13:48 <zzo38> How are you supposed to play football if there are no rules?
19:13:55 <elliott> 19:24:58 <kfr> I mean if there's an Olympic category for women
19:13:55 <elliott> 19:25:02 <kfr> There must be one for men, too
19:13:55 <elliott> 19:25:14 <kfr> Otherwise that would be discrimination :'(
19:13:55 <elliott> are you saying it _wouldn't_ be discrimination?
19:13:58 <elliott> it very obviously would be
19:14:02 <pikhq> zzo38: The way it used to be done. With much violence.
19:14:05 <ais523> kfr: Vorpal's a user in this channel, although I think that might have inspired the nickname
19:14:25 -!- Sgeo_ has changed nick to Jabberwock.
19:14:30 -!- Jabberwock has changed nick to Sgeo.
19:14:48 <ais523> elliott: famously, in Olympic beach volleyball, there are restrictions forcing the women to wear skimpy clothing, but men are allowed to wear as much as they like
19:14:53 <quintopia> zzo38: how are you supposed to play 1kbwc? how are you supposed to play calvinball?
19:14:56 <elliott> ais523: haha, that's terrible
19:15:00 <ais523> I think they have some maximum amount of skin that's allowed to be covered, or something stupid like that
19:15:27 <Sgeo> Do they attempt to justify those restrictions?
19:15:38 <pikhq> Sgeo: "We dislike fundamentalist Muslims"
19:15:40 <ais523> I naturally assumed upon hearing that there were clothing restrictions that they were to stop the competitors revealing too /much/...
19:15:44 <pikhq> (just a guesse)
19:16:44 * Sgeo is still hungry
19:16:49 <Sgeo> This is probably a good thing
19:17:32 <quintopia> i think the justification is "we want people to actually tune in on TV"
19:18:40 <Sgeo> Wouldn't restrictions on how much the guys can wear get the ladies to tune in? Or is there some sort of difference between guys' interest in ladies and ladies' interest in guys?
19:18:48 * Sgeo is a bit confused on this point
19:19:09 <quintopia> the difference is you don't have to have a rule to convince guys to take off their clothes
19:20:50 <elliott> pikhq: *guess btw
19:21:24 <ais523> quintopia: well, male beach volleyball generally wears a shirt and shorts
19:21:50 <elliott> ais523: hey, can you relate some horror stories about the NetHack source code?
19:22:01 <elliott> <fizzie> Oh, you could do a struct map_flags { } with independently named single-bit bitfields. Didn't you want real bitfields in there somewhere?
19:22:01 <elliott> <fizzie> Even NetHack has bitfields!
19:22:07 <elliott> fizzie doesn't have the adequate fear of God in him.
19:22:13 <ais523> elliott: if you like; do you know about the famous Yeenoghu touch of death bug?
19:22:30 <elliott> ais523: no, and nor does fizzie, and he wants to know! in _detail_
19:22:32 <Sgeo> elliott, that reminds me of UF
19:23:00 <ais523> it's probably easier to read the explanation in the wiki than to have me relate it: http://nethackwiki.com/wiki/Yeenoghu#.22A_ludicrous_bug.22
19:23:18 <elliott> yes fizzie, read all of that!
19:23:40 <quintopia> sgeo: i haven't read that in a long long time.
19:23:47 <elliott> ais523: hmm, death kills you on touch?
19:24:01 <Vorpal> <ais523> kfr: Vorpal's a user in this channel, although I think that might have inspired the nickname <-- uh?
19:24:18 <elliott> /sigh
19:24:27 <ais523> but tl;dr: a switch statement had a case with a fallthrough, extra code was added just /after/ the fallthrough without the devs noticing, everyone assumed it was deliberate due to the /* fall through */ comment
19:24:40 <ais523> Vorpal: I mentioned you, kfr wondered if it was a Vorpal Blade reference
19:24:42 <Vorpal> oh found the context now
19:25:01 <elliott> hmm, nethack has a curses interface?
19:25:09 <elliott> looks ugly
19:25:17 -!- Sgeo has changed nick to Jabberwocky.
19:25:18 <Vorpal> elliott, what does it *normally* use?
19:25:25 <elliott> Vorpal: terminal escapes
19:25:31 <Vorpal> elliott, heh
19:25:38 <Vorpal> ais523, didn't see the first mention. Strange
19:25:39 <ais523> elliott: Death can kill you on touch, but if you're immune to that, and you generally are by the time you reach him/her/it, it drains max HP instead
19:25:42 <Vorpal> long ago?
19:25:44 <elliott> hmm, /me ponders vandalising the old nethack wikia once the moving notice is removed
19:25:46 <Jabberwocky> Vorpal
19:26:01 <Vorpal> Jabberwocky, that highlights
19:26:01 <ais523> elliott: don't bother, anons are doing that enough by mistake as it is
19:26:05 <elliott> ais523: heh
19:26:06 <Vorpal> oh wait, it was inside a word
19:26:21 <Vorpal> seems "Vorpal-like" didn't highlight me.
19:26:22 <ais523> there was someone who was going around "correcting" the source code quotes by changing Sprintf to sprintf and removing unnecessary parens
19:26:23 <Vorpal> strange.
19:26:44 <Vorpal> ais523, ever played df btw?
19:26:49 <ais523> which is incorrect in that it's a semantic difference, /and/ incorrect in that it's a quote
19:26:53 <elliott> ais523: I meant more the kind of vandalism that made the pages useless, to avoid nethack.wikia.com becoming a wikia ghost town
19:26:53 <ais523> Vorpal: no, but I know quite a bit about it
19:26:56 <Jabberwocky> hmm
19:26:59 <Jabberwocky> This is weird
19:27:01 <ais523> elliott: that'd likely be noticed and reverted
19:27:09 <elliott> (i.e. a place that people read and very occasionally edit because they don't have any clue that the wiki moved)
19:27:14 <elliott> ais523: well, yes, thus "ponder"
19:27:14 <Jabberwocky> I think NickServ's either asleep or dead.
19:27:14 <Vorpal> ais523, I think you would like it. Though I'd like to add that nethack is probably easier
19:27:27 <ais523> also, Tjr (sort-of chief admin on nethackwiki) thinks that doing that will only give them page rank
19:27:30 <elliott> nickserv works for me
19:27:39 <ais523> Vorpal: it's not open-source, that removes half the fun in the game for me
19:27:48 <Jabberwocky> NickServ threatened to change my nick
19:27:51 <Jabberwocky> It still hasn't done so
19:27:52 <ais523> I'm not an RMS-level open source fan, but I consider it a feature, and one that adds quite a bit
19:28:05 <Vorpal> ais523, like being able to check how it works?
19:28:07 <ais523> Jabberwocky: still doesn't mean you should go around stealing other people's nicks!
19:28:15 <elliott> ais523: I think the source code to DF would be almost useless
19:28:18 <elliott> as the logic is so hideously complex
19:28:25 <ais523> Vorpal: yep; and write patches, and look for exploits
19:28:35 -!- Jabberwocky has changed nick to NotTheRealJabber.
19:28:38 <elliott> ais523: DF has mods
19:28:41 <Vorpal> ais523, heh
19:28:47 <elliott> ais523: so you can do the former, pretty much
19:28:48 <NotTheRealJabber> Yes, I'm not really XMPP
19:28:48 -!- cheater99 has quit (Ping timeout: 240 seconds).
19:28:48 <Vorpal> elliott, actually parts are quite straight-forward in df
19:28:52 <NotTheRealJabber> Believe it or not
19:28:53 <ais523> Vorpal: for instance, I wrote this today: http://tasvideos.org/GameResources/DOS/NetHack.html#TimeSystemAbuses
19:29:12 <elliott> ais523: OK, you can't read the code, but you can clearly modify it, although I'm not sure how
19:29:14 <ais523> most games are pretty hard to analyse in that level of detail
19:29:14 <Vorpal> elliott, that is because as far as I can tell df behaviour is pretty much controlled by a text config files
19:29:17 <elliott> perhaps it has an API
19:29:18 <Vorpal> elliott, the moding that is
19:29:24 <elliott> hm, really
19:29:24 <elliott> ?
19:29:28 -!- cheater99 has joined.
19:29:29 <elliott> must be very in-depth files then
19:29:46 <Vorpal> elliott, yeah the definition of what a dwarf is is 400 lines it seems
19:29:55 <ais523> I'm relatively happy with Neverwinter Nights; it's half open source in that it's an engine + a game written in that engine, the engine is closed-source but the files it actually runs are visible-source
19:30:00 <Vorpal> elliott, lines like:
19:30:02 <Vorpal> [BODY_DETAIL_PLAN:STANDARD_MATERIALS]
19:30:02 <Vorpal> [BODY_DETAIL_PLAN:STANDARD_TISSUES]
19:30:06 <elliott> heh
19:30:08 <ais523> (i.e. no redistribution rights, but you can look at it and change it locally)
19:30:09 <Vorpal> [BODY_DETAIL_PLAN:FACIAL_HAIR_TISSUES]
19:30:10 <Vorpal> [BODY_DETAIL_PLAN:STANDARD_HEAD_POSITIONS]
19:30:18 <Vorpal> heh this is extreme:
19:30:21 <Vorpal> [USE_MATERIAL_TEMPLATE:SINEW:SINEW_TEMPLATE]
19:30:21 <Vorpal> [TENDONS:LOCAL_CREATURE_MAT:SINEW:200]
19:30:21 <Vorpal> [LIGAMENTS:LOCAL_CREATURE_MAT:SINEW:200]
19:30:23 <ais523> "standard head positions" sounds like like df
19:30:28 <elliott> ais523: Asteroids II comes with full source code and rights to distribute changed versions to those granted the same license
19:30:33 <elliott> ais523: (and rights to distribute /patches/ to anyone)
19:30:41 <elliott> :P
19:30:49 <Vorpal> a comment says it has sinew only for wounds simulation to work out
19:30:51 <ais523> elliott: hmm, that's pretty close to open source except with the existing-license requirement, I like it
19:30:52 <Vorpal> very very df
19:30:56 -!- me2ufool has joined.
19:31:00 <Vorpal> elliott, ooh nails are mentioned in there!
19:31:06 <me2ufool> hi
19:31:10 <ais523> in fact I was wondering about something similar myself if I ever needed to make money from a program
19:31:11 <ais523> hi me2ufool
19:31:12 <elliott> ais523: and you can also sell your changed versions
19:31:19 <elliott> so long as you make sure the buyer owns the original game
19:31:26 <ais523> elliott: that's typical of open source, isn't it?
19:31:29 <elliott> ais523: but all distributed changes must be "open source"
19:31:38 <ais523> although very unusual for commercial, I think
19:31:40 <elliott> ais523: except, you can choose one of two licenses
19:31:56 <elliott> ais523: either you can release your changes under what essentially amounts to the GPL, or the same license I'm talking about
19:32:18 <elliott> i.e., you can make your own extensive commercial mod of it, as long as you use the same license
19:32:22 <elliott> or you can just release it "normally"/
19:32:26 <elliott> s/\/$//
19:32:30 <elliott> ais523: now the two issues with this are
19:32:35 <elliott> (1) Asteroids II doesn't yet exist, and
19:32:35 <Vorpal> elliott, but how do you as the original author make money of it?
19:32:38 <elliott> (2) Asteroids II doesn't yet exist.
19:32:43 <elliott> Vorpal: by selling it
19:32:50 <elliott> the source is available only to those who purchase it
19:33:03 <Vorpal> elliott, but one could make a mod that patches pretty much every line a bit then release that under the GPL variation?
19:33:10 <ais523> elliott: err, being nonexistent is a little ridiculous there
19:33:15 <Vorpal> so you would in effect sell just one copy
19:33:21 <elliott> ais523: well, don't blame me, blame Phantom_Hoover!
19:33:24 <Vorpal> elliott, or did I miss something?
19:33:29 <NotTheRealJabber> Vorpal, same as closed-source?
19:33:31 <ais523> Vorpal: the whole point of it being a "patch" is that you can't reconstruct the original
19:33:32 <elliott> Vorpal: well, possibly, but i find that incredibly unlikely... and there'll be some sort of reasonability clause in the patches
19:33:35 <ais523> it's not a patch any more if you can
19:33:38 <elliott> right, what ais523 said
19:33:48 <Vorpal> ais523, yes well, what about diff context.
19:33:48 <elliott> you can't have a bunch of -s followed by the original lines, and then a massively changed version
19:33:59 <elliott> Vorpal: it depends on your intent, etc.
19:34:19 <elliott> Vorpal: ais523: (this arose after I tried to figure out how a games company could be even more Good(TM) than Introversion)
19:34:39 <elliott> oh, the third problem with Asteroids II is that it's not written in a language anybody knows or has a compiler for. :p
19:34:45 <ais523> elliott: I don't really believe in good/evil companies, individual companies tend to be so inconsistent in the matter
19:35:10 <ais523> Vorpal: I'd imagine people like romhackers would go to huge lengths to make sure that the diffs didn't contain context at all
19:35:19 <Vorpal> elliott, hm a bit tricky to define that. Okay it is clear cut if you do it as one patch. But what if there are a number of separate patches (possibly different authors) that lets you reconstruct the complete source due to covering it all (or so much of it that the rest would be trivial to implement)
19:35:44 <Vorpal> ais523, hm then it is difficult to be sure that it applies correctly
19:35:46 <elliott> Vorpal: you don't have to make a program that can tell you if the patch is illegal or not, that's what judges are for
19:35:59 <ais523> Vorpal: release a hash of the modified version
19:36:06 <elliott> ais523: context in patches would of course be allowed
19:36:07 <Vorpal> hm
19:36:18 <elliott> ais523: but really, the most convenient thing to do would be to only post it in a place where you can reasonably assume everyone owns the game
19:36:24 <elliott> ais523: e.g., in some "purchasers only" forum
19:36:31 <elliott> then you can post as much context as you like
19:36:55 <Vorpal> ais523, well what if someone wants to apply two different patches. A lot of work then. I guess you could reconstruct each separately locally and create a context patch and then try to apply them. Then make a context free one of the result
19:36:57 <Vorpal> or such
19:37:22 <Vorpal> elliott, that might work better indeed
19:37:39 <ais523> Vorpal: do you know what happens if you try to apply two different patches to machine code?
19:37:57 <NotTheRealJabber> elliott, don't forget to breathe
19:38:24 <Vorpal> ais523, unpredictable results I would imagine!
19:38:58 -!- NotTheRealJabber has changed nick to Sgeo.
19:39:25 <elliott> ais523: people manage it with minecraft
19:39:27 <elliott> except it's java bytecode
19:39:39 <Vorpal> elliott, and it is generally problematic if in the same class file
19:39:45 <ais523> elliott: java bytecode isn't so full of literal offsets, IIRC
19:39:59 <zzo38> Even if I intend to earn money from a program, I would still probably just license it under the GPL, and put some trademark restrictions, printed documentation, and so on.
19:40:01 <elliott> Vorpal: eh, better light/grass works with mipmapping
19:40:08 <elliott> they share classes
19:40:13 <elliott> (this was even before it used modloader)
19:40:24 <Vorpal> elliott, they touch the same .class? How do you do it without modloader then
19:40:32 <Vorpal> manually creating a combined version?
19:40:47 <elliott> Vorpal: you copy the mipmapping class in, and then use the better light/grass *patcher*
19:40:48 -!- azaq23 has joined.
19:40:49 <elliott> which patches the bytecode
19:41:14 <Vorpal> elliott, another df definition example:
19:41:16 <Vorpal> [ATTACK:SCRATCH:CHILD_TISSUE_LAYER_GROUP:BY_TYPE:GRASP:BY_CATEGORY:FINGER:NAIL]
19:41:16 <Vorpal> [ATTACK_SKILL:GRASP_STRIKE]
19:41:26 <Vorpal> [.. several lines cut out here ... ]
19:41:30 <elliott> :D
19:41:47 <zzo38> I would ensure the trademark license allows using these trademarks for compatibility reasons, in case you live in a country which does not permit it by fair use or that the trademark laws are changed later on to deny this type of fair use, to ensure that my trademarks still remain fair.
19:41:53 <Vorpal> elliott, oh and comments seem to be any line *not* starting with [ as the first non-whitespace
19:42:30 <ais523> Vorpal: perhaps ]\n ... \n[ is the comment marker?
19:42:31 * Sgeo wonders if it's safe to remove a key from this keyboard
19:42:52 <elliott> 2010-02-04 20:00:00 :elliott!~elliott@unaffiliated/elliott PRIVMSG :hello, world!
19:42:53 <elliott> guess the format
19:43:04 <pikhq> zzo38: So, in sum, "don't be an asshole" would be your policy.
19:43:15 <elliott> pikhq: reminds me of JSON
19:43:19 <Vorpal> ais523, don't think so... Since there is a comment before the first [ in some files, and none in other ones
19:43:37 <Vorpal> ais523, and it would be weird to start a file with a end comment marker
19:43:39 <Vorpal> an*
19:43:44 <ais523> Vorpal: that makes a lot of sense, actually
19:43:48 <elliott> Gregor: as someone presently eating weetabix, I must kill you
19:43:56 <elliott> <Vorpal> ais523, and it would be weird to start a file with a end comment marker
19:43:59 <elliott> literate dwarfing
19:44:03 <Vorpal> elliott, XD
19:44:12 <ais523> I'm pretty sure I had plans for a "comment backwards to start of file" pp-directive in Overload
19:44:15 <Vorpal> elliott, there aren't enough comments to claim it as literate
19:44:34 <ais523> in fact, there were something like 32 or 64 different sorts of comment markers, they contained a bitfield with options for how far they commented in each direction
19:44:40 <ais523> and precedence, etc
19:44:51 <Vorpal> ais523, heh.
19:44:53 <ais523> so you could use a more urgent sort of comment if there were things that looked like comment markers in your comments
19:45:02 <elliott> :D
19:45:02 <ais523> I forget the details, although I was aware at the time that it was insane
19:45:15 <Vorpal> ais523, now I know why overload is still vapor ware. You spent too long on designing comments to get anywhere
19:45:17 <Vorpal> XD
19:45:28 <ais523> Vorpal: oh, the whole thing was probably inherently unworkable
19:45:30 <elliott> hypothesis: if someone's first five languages were esolangs, they'd turn out like ais523
19:45:53 <ais523> but it's a real ancestor of underload (underload is simply one of the many possible tarpits that's a restriction of overload)
19:46:02 <Vorpal> elliott, you mean he learned an esolang before any main stream language?
19:46:11 <Vorpal> elliott, or that he created esolangs first
19:46:21 <elliott> Vorpal: no, he didn't, but he's like someone who did (the former)
19:46:26 <Vorpal> hah
19:46:32 <ais523> Vorpal: well, I don't think my first few languages were esolangs, but at least one was moderately insane
19:46:38 <ais523> (a database scripting language called PAL)
19:46:41 <elliott> ais523: I've been trying to figure out what the "quintessential esolangs" are in my opinion
19:46:55 <elliott> ais523: brainfuck, INTERCAL, Underload, Unlambda are what I've thought of so far
19:46:58 <elliott> maybe those are the Big Four
19:47:08 <elliott> *and Unlambda
19:47:12 <ais523> INTERCAL isn't on that list for me, it's on a different list
19:47:12 <Vorpal> elliott, befunge is pretty big too
19:47:16 <elliott> oh, yes, befunge
19:47:17 <ais523> along with Befunge
19:47:20 <elliott> ais523: brainfuck, INTERCAL, Underload, Unlambda and Befunge are what I've thought of so far
19:47:23 <elliott> ais523: really?
19:47:25 <elliott> what list is that?
19:47:34 <elliott> I'm pretty much listing the "classics" here
19:47:45 <elliott> (yes, I think Underload counts as a classic -- I'm surprised it took until 2006 to invent it)
19:47:46 <ais523> well, there are two ways an esolang can become classic
19:47:57 <ais523> computational interest, like brainfuck/underload/unlambda
19:48:01 <Vorpal> elliott, presumably non-tarpits. Neither intercal nor befunge are tarpits really
19:48:22 <ais523> and general insanity that catches the minds of a great number of people, like intercal, befunge, brainfuck
19:48:29 <ais523> I'm happy to put brainfuck in both lists there
19:48:30 <elliott> heh, a duplicate there
19:48:44 <ais523> I suppose LOLcode should be in the second list too, much as I'm loathe to put it anywhere
19:48:46 <elliott> ais523: well, if someone asked me "I want to learn esolangs; which should I look at first?" I'd answer "brainfuck, INTERCAL, Underload, Unlambda and Befunge(-93)"
19:48:51 <elliott> (-98 isn't a classic)
19:49:00 <Vorpal> ais523, arguably compiling befunge is computationally interesting (for some definitions of computationally).
19:49:03 <ais523> I think -98 is inherently more awesome than -93, though
19:49:30 <zzo38> elliott: OK that is not a bad choice I guess
19:49:42 <elliott> ais523: well, -93 is more of a tarpit
19:49:44 <elliott> and more of a classic
19:49:51 <ais523> -93 isn't really a tarpit
19:49:52 <elliott> I wouldn't tell someone to look at -98 before -93, that's just silly
19:50:00 <ais523> in fact, being not a tarpit is the whole point of Befunge, I find
19:50:00 <elliott> ais523: it's more of a tarpit than -98!
19:50:10 <elliott> -98 is amusing but it's not more awesome than -93 I don't think
19:50:12 <ais523> thus -98 is befungier than -93
19:50:22 <ais523> -93 is annoyingly limited, -98 is almost practical
19:50:27 <elliott> http://catseye.tc/projects/befunge93/eg/wumpus.bf <-- this is why -93 is a classic
19:50:28 <pikhq> -93 is a non-Turing tarpit.
19:50:29 <pikhq> :)
19:50:38 <ais523> elliott: I'd say it's the program itself that's awesome there
19:50:41 <Vorpal> elliott, 1) as ais said 93 is no tarpit. 2) where does it say it has to be tarpit-ish to be an esolang?
19:50:45 <elliott> ais523: I don't care what you think, you're wrong :P
19:50:48 <ais523> for managing to do that despite the limits of -93
19:51:01 <elliott> ais523: that's like saying brainfuck isn't an esolang, just every brainfuck program is
19:51:10 <Vorpal> elliott, would you actually suggest learning INTERCAL btw?
19:51:20 <elliott> Vorpal: no, but I'd suggest looking at it
19:51:23 <elliott> and reading the manual, probably
19:51:28 <ais523> Vorpal: I'd suggest it, especially modern INTERCAL as opposed to INTERCAL-72
19:51:37 <ais523> although reading the original manual first is probably better to get the attitude right
19:51:39 <elliott> ais523: the manual is the main reason to look at INTERCAL
19:51:40 <Vorpal> elliott, I suspect you could be held legally liable for any insanity caused by suggesting someone learning INTERCAL!
19:51:41 <zzo38> Vorpal: I would suggest it. But it is OK to write only one program with it if that is what you want to do.
19:51:42 <elliott> I don't think INTERCAL is really worth learning
19:51:49 <elliott> learning /about/, yes, but not learning
19:51:53 <Vorpal> elliott, ah
19:52:00 <ais523> elliott: a pity, really; the control flow model in modern INTERCAL is really interesting
19:52:02 <elliott> heck, I can't even write non-trivial BF programs
19:52:08 <ais523> in fact, I sometimes find myself wishing for it in real languages
19:52:15 <elliott> but _writing programs_ in BF is boring
19:52:20 <Vorpal> elliott, can you write a non-trivial befunge program?
19:52:28 <ais523> if only INTERCAL had remotely sane expressions, in addition to what it actually has, and some sort of string handling, I think it'd be a practical lang
19:52:32 <Vorpal> elliott, also yeah the fun part with BF is writing optimising compilers
19:52:42 <zzo38> The features of INTERCAL are not really completely different from other programming languages, but they are different from most. Three of the features of INTERCAL are in dc as well. And some machine has something like the INTERCAL select operator.
19:52:50 <elliott> Vorpal: no, I don't know Befunge at all
19:52:53 <Vorpal> ais523, with remotely sane expressions it wouldn't be INTERCAL at all
19:52:59 <elliott> probably Underload is my best esolang, and I'm not very good at that, either
19:53:03 <ais523> zzo38: indeed, it failed slightly at its goal, but it has other goals
19:53:04 <elliott> I've never been one for writing substantial esolang programs
19:53:15 <ais523> Vorpal: well, INTERCAL isn't so much about being difficult, as about being different
19:53:19 <Vorpal> elliott, so you are more an implementer of esolangs?
19:53:20 <pikhq> zzo38: Well, dc is definitely a tarpit. :)
19:53:21 <Phantom_Hoover> elliott, Befunge isn't terribly complex.
19:53:26 <elliott> Vorpal: well, "enthusiast"
19:53:34 <ais523> sometimes that means being difficult for the sake of it, but ideally it'd be better and still find its own niche
19:53:35 <pikhq> Phantom_Hoover: Someone hasn't seen -98.
19:53:48 <ais523> or -108!
19:53:59 <Vorpal> pikhq, uh. That is complex to implement, but not really complex to code in
19:54:00 <zzo38> pikhq: The features I refer to are: STASH RETRIEVE RESUME
19:54:00 <ais523> Vorpal: how are you doing on that spec, btw? presumably it should be -111 by now
19:54:01 <Phantom_Hoover> pikhq, yes, but even then you can get the basics easily.
19:54:05 <ais523> or shall we just call it -11x
19:54:20 <Vorpal> ais523, you missed out the developments last spring?
19:54:21 <elliott> #define PUSH(i) ...
19:54:21 <elliott> #ifdef NDEBUG
19:54:21 <elliott> #define INVALID(s)
19:54:21 <elliott> #else
19:54:21 <elliott> #define INVALID(s) fprintf(stderr, "\n*** Invalid code, aborting: %s\n", s); exit(1);
19:54:21 <elliott> #endif
19:54:23 <elliott> #define TYPE_0 T_QUOT
19:54:25 <elliott> #define STR_0 "(:aSS):aSS"
19:54:28 <elliott> #define STR_LEN_0 10
19:54:29 <elliott> quo_0 :
19:54:31 <elliott> PUSH(1) DUPLICATE ENCLOSE OUTPUT OUTPUT
19:54:33 <elliott> return;
19:54:35 <elliott> yay
19:54:37 <elliott> oops, slight flood
19:54:40 <ais523> zzo38: it's a pity dc doesn't have ignore, or we could run an ignorret test on it to see what happened
19:54:41 <elliott> ais523: cpressey came in, decided to make his own Befunge-111 because he hates everyone, started doing it
19:54:42 <Vorpal> ais523, with cpressy starting on a new more stringent definition.
19:54:46 <elliott> then gave up after Vorpal complained it was so different from -98
19:54:53 <Vorpal> elliott, no I didn't really...
19:54:59 <elliott> well, that's why he gave up. :p
19:54:59 <ais523> elliott: ouch, I'd like to have seen it
19:55:04 <elliott> among other reasons, I guess
19:55:06 <elliott> ais523: it might still be up
19:55:09 <Vorpal> elliott, I suggested it was an awesome idea but maybe it wasn't befunge any longer
19:55:12 <Vorpal> iirc
19:55:16 <ais523> Vorpal: like Perl 6?
19:55:24 <zzo38> I have once when writing a QBASIC program, wanted to have something like the DO RESUME #2 in INTERCAL, but QBASIC has the RETURN command is allowed to return to a specific label, so I made it return to the next line and then do normal RETURN after that.
19:55:31 <elliott> ais523: possibly, one of his three latest fungoid-esques are descendants of -111
19:55:32 <Vorpal> ais523, more different than that actually
19:56:19 <Vorpal> ais523, anyway what we need is a technical corrigendum and clarification to 98 really
19:56:25 <elliott> we don't even vaguely need that
19:56:26 <zzo38> At least two of my esolangs have been written about by Japanese people.
19:56:26 <Vorpal> that would go a long way
19:56:30 <elliott> nobody but you thinks we need that at all :P
19:56:30 <Vorpal> elliott, oh?
19:56:33 <ais523> I haven't been keeping track of catseye recently
19:56:37 <zzo38> (Note: I am not Japanese people)
19:56:49 <Vorpal> elliott, well Deewiant probably agrees or have agreed with me when working on mycology
19:56:53 <ais523> zzo38: RESUME #n is quite common in languages; it's RESUME .5 that makes the command interesting
19:56:56 <elliott> ais523: http://catseye.tc/lab/Befunge-111-Specification-DRAFT.txt
19:57:06 <elliott> Vorpal: people suck at interpreting the spec != we need a new spec
19:57:14 <elliott> I'd say the difficulty of interpreting it is a feature
19:57:15 <ais523> yay, at least it isn't HTML masquerading as XHTML
19:57:22 <zzo38> ais523: Yes, and dc can do that too
19:57:22 <Vorpal> elliott, uh catseye couldn't interpret some parts of it any longer :P
19:57:27 <ais523> elliott: well, ambiguities in the spec can do with fixing
19:57:28 <elliott> Vorpal: more feature
19:57:32 <Vorpal> elliott, I rest my case
19:57:38 <elliott> ais523: cpressey broke half his site like that because pikhq bugged Gregor about him sending the wrong headers for about 5 years
19:57:42 <elliott> pre-emptive, sort of thing
19:57:52 <zzo38> (So can TeXnicard; it is somewhat based on dc)
19:58:06 <elliott> ais523: without me he wouldn't have had the .htaccess magic to get _some_ of the old html stuff working, anyway :P
19:58:11 <elliott> not my fault he forgets >:D
19:58:16 <Vorpal> <elliott> ais523: cpressey broke half his site like that because pikhq bugged Gregor about him sending the wrong headers for about 5 years <-- wait, if pikhq bugged Gregor then why did cpressey get affected?
19:58:36 <elliott> it was more inspiration, I think. or preemptive avoidance of bugging.
19:59:07 <zzo38> At least in my computer, I can just use C-V text/html
19:59:31 <ais523> zzo38: most browsers don't have that feature, although I was looking for it when that happened
19:59:34 <zzo38> (I use C-V to override the content type heading sent by the server)
19:59:45 <ais523> do you actually use it enough for it to be bound to a single control-letter combination?
19:59:45 <Vorpal> elliott, what I have done in the past is set up the extension .xhtml with the right mime type
19:59:46 <elliott> I don't see how http://catseye.tc/lab/Befunge-111-Specification-DRAFT.txt isn't Befunge
20:00:02 <Vorpal> elliott, indeed that one is
20:00:03 <elliott> it seems pretty faithful to me
20:00:04 <zzo38> ais523: Probably it is possible to make a extension for Firefox and maybe even other programs too, that you can do like that.
20:00:13 <Vorpal> elliott, one of the previous versions was not
20:00:15 <ais523> elliott: it breaks fingerprint nesting (as in, tame fingerprints are impossible by that definition if more than one exists), but that's probably just a bug
20:00:30 <zzo38> ais523: Yes, although it is control-shift-letter combination.
20:00:47 <ais523> oh, by C-V you mean case sensitive V (so caps lock or shift)?
20:00:58 <ais523> I didn't realize keyboards even distinguished the two
20:01:06 <zzo38> ais523: Yes, all key combinations are case-sensitive in this program.
20:01:28 <zzo38> (And C-v is just paste from clipboard)
20:01:38 <Vorpal> they generally are but usually you seem to list them with shift then
20:02:34 <zzo38> I also use it when downloading a attached picture, some forum software marks it as application/octet-stream so I tell it to override the type to image/jpeg or image/png instead, so that it can be viewed.
20:02:43 <elliott> I wish Ctrl+x/c/v were more common in Unix programs... the problem is that Ctrl+C is overloaded
20:02:44 <ais523> zzo38: are they sensitive to num lock and scroll lock too?
20:02:46 <Deewiant> Based on the definition of "unbounded" it sounds like interpreters should terminate if an integer over-/underflows
20:02:52 <elliott> (the other two are as well, but much less often used)
20:02:56 <ais523> elliott: don't think along those lines, you'll end up inventing the Mac
20:03:06 <elliott> ais523: *inventing OS X
20:03:11 <ais523> Deewiant: yep, but they get to choose what the range is
20:03:19 <zzo38> ais523: Not to scroll-lock, but the numpad keys effects depend on num-lock on or off.
20:03:20 <elliott> ais523: I don't think separate control/command keys are a good idea; only for backwards-compatibility
20:03:24 <ais523> elliott: I'm thinking more of separate command/control, which is a mac thing rather than an OS X thing
20:03:25 <elliott> the solution is to change ^C to some other binding :)
20:03:27 <ais523> although it's hard to tell
20:03:35 <elliott> ais523: it's OS X; before that, Control did not much of anything
20:03:37 <elliott> I think it was just an extra modifier
20:03:58 <Deewiant> ais523: Sure, but if you implement things as 32-bit ints you're expected to abort() as soon as one wraps around
20:04:12 <ais523> Deewiant: that would make sense, really
20:04:15 <ais523> C does the same thing
20:04:20 <elliott> ...no it doesn't
20:04:25 <Vorpal> ais523, what
20:04:27 <ais523> in that signed overflow is undefined behaviour
20:04:33 <Vorpal> XD
20:04:33 <elliott> is underflow?
20:04:35 <Vorpal> true
20:04:36 <ais523> yep
20:04:39 <elliott> haha
20:04:43 <elliott> well, nobody writes in C anyway
20:04:46 <zzo38> Maybe the Control key could also be used in some Telnet program or something, in order to send a control code. In OS X, it is UNIX, so Control-C will interrupt, and so on, same as UNIX.
20:04:51 <elliott> they write in C-plus-extra-semantics
20:04:51 <ais523> in general it tends to cause wrapping on modern systems, but crashing is entirely legal
20:04:51 <Vorpal> elliott, use unsigned to get defined behaviour
20:04:53 <elliott> such as, overflow working
20:05:03 <elliott> I would love a strictly error-checking C compiler
20:05:03 <ais523> on a DSP, saturating at the max or min value would be the most likely behaviour
20:05:10 <elliott> bound-checking, over/underflow-checking
20:05:13 <ais523> and C's used to write those too
20:05:16 <elliott> all that silly stuff
20:05:17 <Deewiant> Call it undefined then, but demanding crashing is a bit of a downer
20:05:17 <Vorpal> elliott, uh actually gcc will use the overflow freedom to optimise loop conditions
20:05:23 <elliott> Vorpal: haha
20:05:27 <zzo38> elliott: Doesn't GNU C can do strict error checking if you tell it do so?
20:05:41 <ais523> elliott: indeed, if you start with a signed integer and only ever increment it, gcc will assume it never goes negative
20:05:46 <Vorpal> elliott, it warns you if it detects unsafe cases.
20:05:46 <ais523> and optimise away conditions like x >= 0
20:05:56 <Vorpal> sometimes
20:06:08 <elliott> zzo38: not bounds checking
20:06:09 <ais523> zzo38: it has -ansi -pedantic, but it can't catch everything, it just checks a bit more strictly than normal
20:06:19 <elliott> that would make any out-of-bounds access fail
20:06:21 <elliott> at runtime, obviously
20:06:23 <ais523> to be precise, -pedantic issues warnings wherever the standard requires them
20:06:26 <Vorpal> ais523, I meant -Wstrict-overflow or whatever it is called
20:06:34 <ais523> Vorpal: I have no idea on that one
20:06:47 <elliott> the /standard/ defines /warnings to be emitted/?
20:06:48 <elliott> *sigh*
20:06:59 <Vorpal> ais523, iirc -Wall enables it
20:07:00 <zzo38> ais523: Then in the next version of GCC they have to fix it so that -ansi -pedantic will catch everything and make only standard C programs working
20:07:03 <ais523> elliott: no, it defines "diagnostics"
20:07:11 <Vorpal> ah yes man page says -Wall includes -Wstrict-overflow=1
20:07:11 <elliott> heh
20:07:11 <ais523> and it's up to the implementer to decide what they are
20:07:15 <elliott> zzo38: impossible
20:07:18 <elliott> you can't detect all out-of-bounds accesses
20:07:22 <elliott> only at runtime
20:07:24 <ais523> but it's normally interpreted as diagnostic = warning or error
20:07:45 <Vorpal> -Wstrict-overflow=1
20:07:46 <Vorpal> Warn about cases which are both questionable and easy to avoid. For example: "x + 1 > x"; with -fstrict-overflow, the compiler will simplify this to 1. This level of -Wstrict-overflow
20:07:46 <Vorpal> is enabled by -Wall; higher levels are not, and must be explicitly requested.
20:07:54 <Vorpal> then it goes up to level 5
20:08:01 <Vorpal> warning about more and more stuff it optimises
20:08:05 <ais523> I should make sure that's at 5 by default to see what happens
20:08:11 -!- ais523 has quit (Read error: Connection reset by peer).
20:08:22 <elliott> there should be a -Wabsolutely-all
20:08:25 <zzo38> Also, in GCC, I cannot control the warning about casting numbers to pointers (or vice versa) without cast. I want to make that warning into an error (without making all warnings into errors), but I cannot do that.
20:08:32 <elliott> that sets every single warning to maximum levels
20:08:37 -!- ais523 has joined.
20:08:43 <Vorpal> ais523, uh level 5 is "Also warn about cases where the compiler reduces the magnitude of a constant involved in a comparison. For example: "x + 2 > y" will be simplified to "x + 1 >= y"."
20:08:47 <ais523> did that peer reset my connection again?
20:08:54 <Vorpal> ais523, yes
20:09:06 <Phantom_Hoover> elliott, so any warning replaces your screen with the warning in Impact while it blares it from your speakers?
20:09:10 <ais523> I'm wondering who that peer is, and what the reset pattern is
20:09:19 <elliott> Phantom_Hoover: YES.
20:09:20 <zzo38> I think what it should do, is if the executable is named "cc" instead of "gcc" then it will imply all the options to specify working exactly by the C standard as much as possible.
20:09:31 <elliott> ais523: it's ME
20:09:51 <elliott> ais523: btw, maintaining a non-trivial C program as a Haskell string: brilliant idea?
20:09:51 <ais523> hmm, x + 1 >= y is always a legal replacement for x + 2 > y, isn't it (although not vice versa)?
20:09:55 <elliott> unlines [ "#define PUSH(i) ..."
20:09:55 <elliott> , "#ifdef NDEBUG"
20:09:55 <elliott> , "#define INVALID(s)"
20:09:55 <elliott> , "#else"
20:09:55 <elliott> , "#define INVALID(s) fprintf(stderr, \"\\n*** Invalid code, aborting: %s\\n\", s); exit(1);"
20:09:56 <Phantom_Hoover> ais523, DON'T GIVE IN TO PEER PRESSURE
20:09:56 <elliott> , "#endif" ]
20:10:01 <Vorpal> elliott, I think there should be a -Wparanoid, which is like -Wextra + some other flags and just exludes those that give like 80% false positives
20:10:11 <ais523> oh, the warning's in case x was MAXINT-1, in which case they'd be different in 2's-complement
20:10:24 <elliott> Vorpal: -Wabsolutely-everything
20:10:27 <Phantom_Hoover> Vorpal, what kind of false positives
20:10:33 <Vorpal> ais523, indeed
20:10:35 <elliott> ais523: hmm, I really want to write an anal C interpreter now
20:10:35 <ais523> elliott: don't some of the warning flags conflict?
20:10:39 <elliott> ais523: that maintains its own memory array
20:10:42 <pikhq> Vorpal: -Wparanoid should warn every time you do something that can't be automatically proven as defined and intended behavior.
20:10:43 <ais523> at least, in something as complex as gcc, I'd expect them to
20:10:47 <elliott> errors on any out-of-bounds array access
20:10:51 <Vorpal> Phantom_Hoover, well -Wunreachable-code tends to be pretty unreliable iirc.
20:10:51 <elliott> anything undefined by the standard
20:10:51 <elliott> etc.
20:11:04 <elliott> casting function pointers and back doesn't work
20:11:05 <ais523> elliott: make pointers contain the start and length of the allocation, as well as the place they actually point to
20:11:07 <Vorpal> or hm
20:11:11 <elliott> (because the function pointers refer to indices in the function array)
20:11:11 <Vorpal> well some of those
20:11:19 <ais523> that seems to be the best way to do standards-literal bounds checking
20:11:23 <elliott> ais523: maybe, that's quite hard to do in an integral type though
20:11:27 <Vorpal> also -Wtraditional is useless generally
20:11:27 <elliott> don't pointers have to be integral?
20:11:28 <elliott> well, maybe not
20:11:38 <pikhq> elliott: Casting function pointers and back works in some cases.
20:11:38 <Vorpal> it is used to warn about K&R vs. ANSI C differences
20:11:38 <elliott> it could be a struct-type thing as long as arithmetic works
20:11:42 <elliott> ais523: zeta C did that, btw
20:11:43 <elliott> or something similar
20:11:43 <Vorpal> which is utterly useless nowdays
20:11:46 <elliott> pointers were a cons cell
20:11:52 <elliott> (c compiler for symbolics lisp machines)
20:11:57 <elliott> pikhq: hmm, standard-allowed?
20:12:13 <pikhq> elliott: If it's going through void, and going to function pointers of the right type, it's defined and works in the obvious manner.
20:12:14 <elliott> (func_t) (void *) (func_t) is allowed, right?
20:12:16 <ais523> elliott: Vorpal: fizzie: NetHack used to use "inline" as a variable name
20:12:17 <elliott> or whatever
20:12:17 <elliott> right
20:12:24 <elliott> well, casting it to the wrong function type = instant error
20:12:37 <ais523> (and I'm pinging all three of you as parts of different conversations there in a brilliant act of multitasking)
20:12:41 <elliott> is *(T *)x even valid?
20:12:43 <elliott> if x isn't (T *)
20:12:51 <fizzie> No, you can't cast a function pointer into a void *.
20:12:58 <elliott> ais523: perverse
20:13:02 <pikhq> fizzie: ?
20:13:08 <pikhq> elliott: Depends on what T is.
20:13:22 <pikhq> elliott: And what x is.
20:13:23 <ais523> elliott: yes, but only if T is unsigned char
20:13:24 * elliott writes a quasi-quoter
20:13:30 <elliott> ais523: haha
20:13:30 <ais523> or if T and x are compatible
20:13:35 <elliott> ais523: char will be signed in this, then
20:13:39 <elliott> and *(char *)x will fail
20:13:45 <elliott> but *(unsigned char *)x won't
20:13:54 <elliott> also, no OS-specific functions
20:13:57 <elliott> no read or write or sbrk or anything
20:14:04 <Vorpal> ah yes -Wuninitialized is unreliable too.
20:14:05 <elliott> every allocation must be done with malloc
20:14:30 <ais523> Vorpal: how could it not be, you'd need to solve the halting problem otherwise
20:14:36 <ais523> elliott: or calloc, or realloc?
20:14:49 <ais523> or free with a negative-sized argument?
20:14:56 <elliott> ais523: first two: indeed (those are just library functions)
20:14:59 <elliott> last one: that's not legal, surely?
20:15:06 <Vorpal> ais523, hm do you for C? Hm I guess so. Though it would be trivial to make a TC language where it does not require that
20:15:10 <ais523> it doesn't even make sense, free doesn't take a size argument
20:15:25 <elliott> oh, indeed
20:15:32 <ais523> Vorpal: only by forcing variables to be initialized at the first sign of uncertainty
20:15:39 <zzo38> How does memory allocation usually actually work?
20:16:05 <zzo38> It has to store the size somewhere, and tell somewhere which memory is used and which is free.
20:16:08 <elliott> void *calloc(size_t nmemb, size) { void *ptr = malloc(nmemb * size); if (ptr == NULL) return NULL; return memset(ptr, 0, nmemb * size); }
20:16:10 <ais523> zzo38: at a high level, malloc reuses previously freed space if there's enough, or if there isn't, asks the OS for more
20:16:12 <elliott> *size_t size
20:16:14 <elliott> hmm, is that valid?
20:16:21 <elliott> what if nmemb*size overflows?
20:16:28 <ais523> elliott: what if nmemb * size is exactly INT_MAX+1?
20:16:30 <elliott> hm, wait
20:16:32 <elliott> *hmm
20:16:37 <ais523> that lead to a huge flamewar in comp.lang.c a while ago
20:16:39 <elliott> size_t can hold the size of any allocatable object, right?
20:16:43 <ais523> with various standards committee members around
20:16:48 <elliott> so if nmemb*size overflows, the call wasn't valid anyway
20:16:49 <Vorpal> <ais523> elliott: Vorpal: fizzie: NetHack used to use "inline" as a variable name <-- awesome
20:16:51 <elliott> _but_
20:16:53 <zzo38> ais523: Is there a block size that it will always allocate a multiple of? Is there any kind of heading for the allocated memory?
20:16:53 <elliott> that should be checked for
20:16:55 <ais523> or was it comp.std.c?
20:17:06 <pikhq> elliott: If nmemb*size overflows, I'm pretty sure you hit undefined behavior.
20:17:15 <zzo38> If you want to use "inline" as a variable name, you can just define in the preprocessor?
20:17:28 <elliott> void *calloc(size_t nmemb, size) { void *ptr; if (__builtin_overflows_on_multiplication(nmemb, size)) undefined_behaviour("calloc() arguments overflow when multiplied"); ptr = malloc(nmemb * size); if (ptr == NULL) return NULL; return memset(ptr, 0, nmemb * size); }
20:17:29 <elliott> tada!
20:17:32 <Vorpal> <ais523> Vorpal: only by forcing variables to be initialized at the first sign of uncertainty <-- indeed I was thinking of "always default to null/0" though
20:17:44 <elliott> hmm, perhaps it should be __BUILTIN_OVERFLOWS(size_t, nmemb*size)
20:17:45 <elliott> or something
20:17:53 <pikhq> zzo38: inline is a keyword. Aside from preprocessor defines, you can't use that.
20:17:55 <Vorpal> ais523, some less low level languages do that iirc
20:18:17 <ais523> zzo38: http://tasvideos.org/GameResources/DOS/NetHack.html contains a description of the DJGPP memory allocator (which I wrote), but I can't give you a link anchor because there isn't one; search for "The memory allocation algorithm" on the page
20:18:51 <fizzie> <elliott> (func_t) (void *) (func_t) is allowed, right? ← No, it's not.
20:18:52 <ais523> elliott: the row was about whether calloc(65536,65536) or whatever the numbers were actually is undefined behaviour, or whether it's specified to return NULL and set errno
20:18:58 <ais523> or whether it should succeed and allocate more than a size_t
20:19:00 <elliott> fizzie: hmm
20:19:03 <fizzie> Assuming func_t is a function type.
20:19:07 <Vorpal> fizzie, yes I think it is?
20:19:07 <ais523> elliott: you can't cast to and from function pointers at all
20:19:14 <ais523> and especially, you can't cast to and from /functions/
20:19:16 <Vorpal> or hm
20:19:17 <ais523> (which are a separate type)
20:19:19 <elliott> ais523: If nmemb or size is 0, then calloc() returns either NULL, or
20:19:19 <elliott> a unique pointer value that can later be successfully passed to free().
20:19:24 <fizzie> Vorpal: "A pointer to void may be converted to or from a pointer to any *incomplete or object type*."
20:19:28 <elliott> ais523: my man pages suggest that it's undefined behaviour
20:19:29 <fizzie> Vorpal: Not to a function type.
20:19:31 <elliott> ais523: have you got a link to C99?
20:19:32 <ais523> elliott: but neither nmemb nor size is 0
20:19:37 <fizzie> (Or a pointer to a function.)
20:19:37 <elliott> ais523: exactly
20:19:39 <elliott> so that case doesn't apply
20:19:41 <Vorpal> fizzie, sure C99 doesn't allow it?
20:19:46 <elliott> but i'll look at c99 first
20:19:54 <fizzie> Vorpal: That was directly from C99.
20:20:01 <ais523> elliott: http://clc-wiki.net/wiki/C99#Obtaining_the_Standard
20:20:02 <ais523> pick your method
20:20:06 <fizzie> Vorpal: You can convert a pointer to one function to a pointer to any other type of function.
20:20:09 <Vorpal> fizzie, hm didn't it add some hack to make POSIX work or such?
20:20:12 <fizzie> Vorpal: But you can't stick functions into void *s.
20:20:14 <Vorpal> fizzie, ah right!
20:20:15 <elliott> wikipedia links to http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
20:20:16 -!- kar8nga has quit (Remote host closed the connection).
20:20:22 <zzo38> pikhq: I know "inline" is keyword but I think it is possible to use preprocessor macro to override it, I have tried that and it worked.
20:20:30 <elliott> that has the technical corrigendums in, I think
20:20:41 <ais523> if you want C99, N1124 is probably the best option, it's the first post-C99 draft of C0x
20:20:45 * elliott greps for calloc, slowly
20:20:45 <fizzie> So you can pick a "generic function pointer" of any type you like (for example void (*)(void)) and use that.
20:20:49 <elliott> ais523: N1256 is what I have
20:20:53 <fizzie> But you just can't use "void *" for functions.
20:20:56 <ais523> N1425 is the most recent draft, of C1x
20:21:01 <elliott> it's C99, TC3, "Septermber" 7, 2007
20:21:03 <elliott> yes, Septermber
20:21:05 <elliott> I'm not kidding
20:21:12 <Sgeo> Wait, void* can't be used for function pointers?
20:21:14 <Sgeo> Awww....
20:21:16 <ais523> fizzie: void (*)() (which is a different type), is a better choice for a generic function pointer, I think
20:21:31 <ais523> Sgeo: of course not, there's no guarantee that functions and data are even in the same memory space
20:21:31 <elliott> this does not appear to have calloc
20:21:33 <elliott> oh, there it is
20:21:39 <Sgeo> TIL
20:21:43 <elliott> Description
20:21:43 <elliott> 2 The calloc function allocates space for an array of nmemb objects, each of whose size
20:21:43 <elliott> is size.The space is initialized to all bits zero.
20:21:43 <elliott> 261)
20:21:43 <elliott> Returns
20:21:43 <elliott> 3 The calloc function returns either a null pointer or a pointer to the allocated space
20:21:45 <elliott> wow, that's ridiculously underspecified
20:21:52 <ais523> thus the row
20:21:55 <elliott> *space.
20:21:58 <fizzie> ais523: Since you need (and can) cast anyway, I don't think it really matters what you pick; but sure, I guess that's "more generic" arguably.
20:22:06 <elliott> ais523: well, it's defined that size_t can hold the size of any allocatable object
20:22:10 <ais523> there's no obvious reason why it can't return an allocation of more than size_t bytes
20:22:18 <Phantom_Hoover> http://www.theweinerworks.com/?p=344
20:22:20 <elliott> ais523: therefore, SIZE_T_MAX (I don't care if it's not called that), is the size of the maximum allocatable object
20:22:21 <ais523> elliott: indeed, but that's contiguous space for /lots/ of allocatable objects
20:22:26 <Phantom_Hoover> tl;dr: Zach Weiner is awesome.
20:22:30 <ais523> see the difference?
20:22:32 <elliott> ais523: obviously, you cannot allocate an object bigger than that, since size_t is defined to be able to hol dit
20:22:33 <elliott> *hold it
20:22:39 <ais523> elliott: but you aren't
20:22:42 <ais523> you're just allocating more memory than that
20:22:45 <elliott> ais523: therefore, the calloc should fail
20:22:48 <ais523> which is divided into multiple objects
20:22:49 <elliott> ais523: and?
20:22:51 <elliott> hmm
20:22:59 <elliott> let me look up size_t's definition
20:23:00 <zzo38> If you make a better C interpreter then I might replace the one in Enhanced CWEB with a new one, maybe.
20:23:04 <ais523> you can access individual objects there via pointer arithmetic, but there's no implication that the /whole thing/ is an object
20:23:30 <elliott> size_t
20:23:30 <elliott> which is the unsigned integer type of the result of the sizeof operator; and
20:23:31 <elliott> aha
20:23:41 <elliott> 4 The types used for size_t and ptrdiff_t should not have an integer conversion rank
20:23:41 <elliott> greater than that of signed long int unless the implementation supports objects
20:23:41 <elliott> large enough to makethis necessar
20:23:51 <elliott> so it depends on sizeof
20:24:35 <elliott> ais523: so in fact, size_t is an unsigned integral type that can hold the size of the result of any expression, in bytes
20:24:46 <ais523> elliott: http://groups.google.com/group/comp.std.c/browse_thread/thread/35ec063d81174821/c888bee3aeeba7df
20:24:46 <elliott> ais523: now, calloc's definition speaks of arrays
20:24:58 <elliott> ais523: sizeof(array) = size of member * size of array
20:24:59 <elliott> as a size_t
20:25:08 -!- kar8nga has joined.
20:25:19 <elliott> it is impossible to have an array such that sizeof(array) does not return a size_t with its nmemb*size in bytes
20:25:25 <ais523> elliott: you can read that whole thread to see much more knowledgeable people than me argue this
20:25:32 <elliott> therefore, calloc cannot allocate the array specified by nmemb=MAX, size=MAX
20:25:44 <elliott> therefore, since it cannot, by definition, allocate such an array, the call fails to allocate
20:26:00 <elliott> and it should fail, returning NULL
20:26:02 <elliott> and setting errno
20:26:11 <elliott> ais523: agreed?
20:26:21 <elliott> it seems pretty clear-cut, after tracing size_t's definition back to sizeof
20:26:23 <ais523> elliott: you should also look at defect report resolution 266, which says that objects are allowed to exceed SIZE_MAX bytes
20:26:30 <elliott> and considering that calloc says it allocates an _array_
20:26:36 <elliott> ais523: yes, but not arrays
20:26:39 <elliott> presumably
20:26:45 <ais523> stop presuming!
20:26:46 <Vorpal> <elliott> that has the technical corrigendums in, I think <-- what's wrong with that
20:26:55 <elliott> ais523: sizeof has to return the size of the array! it is defined to!
20:26:58 <elliott> Vorpal: nothing
20:27:07 <elliott> ais523: 0 bytes is not the size of an array like that!
20:27:10 <elliott> so sizeof can't return 0 in that case
20:27:14 <elliott> ergo, arrays must be under SIZE_MAX bytes
20:27:22 <ais523> elliott: the argument is that using sizeof on them is undefined behaviour
20:27:25 <ais523> because the standard doesn't define it
20:27:31 <elliott> ais523: IMO, such an object would have to be a pointer
20:27:34 <elliott> because sizeof can't do that to them
20:27:41 <elliott> ais523: no
20:27:44 <elliott> the standard doesn't say
20:27:46 <ais523> elliott: read the thread, OK
20:27:51 <elliott> "On objects whose size can fit into a size_t, sizeof returns their size"
20:27:51 <ais523> elliott: exactly, it doesn't define
20:27:52 <elliott> it says
20:27:59 <elliott> "sizeof returns a size_t, their size"
20:27:59 <ais523> if the standard doesn't define something, that's undefined behaviour
20:28:00 <ais523> by definition
20:28:07 <ais523> see how it ended up so all over the place in C?
20:28:08 <elliott> ais523: it DOES define it
20:28:11 <elliott> sizeof is defined on all objects
20:28:13 <elliott> and return their size
20:28:15 <elliott> *returns
20:28:17 <elliott> and returns a size_t
20:28:24 <ais523> elliott: "On objects whose size can fit into a size_t,"
20:28:26 <elliott> therefore, arrays must be under SIZE_MAX bytes, there's no argument to it
20:28:28 <ais523> from your own quote
20:28:32 <elliott> ais523: oh, shit
20:28:40 <elliott> ais523: OK, the calloc is undefined behaviour. probably.
20:29:17 <ais523> the thread went to 122 messages
20:29:21 <fizzie> ais523: The "On objects whose size can fit into a size_t," quote was what the standard does *not* say.
20:29:31 <ais523> fizzie: so elliott lied?
20:29:41 <fizzie> ais523: No, he said that is what the standard does not say.
20:29:47 <fizzie> <elliott> the standard doesn't say
20:29:47 <fizzie> <elliott> "On objects whose size can fit into a size_t, sizeof returns their size"
20:29:58 <ais523> ah, and I missed it due to comments in between
20:30:12 <ais523> but I'd rather trust comp.std.c on this, who are really good at arguing such things
20:30:19 <ais523> and especially the defect report people
20:30:27 <ais523> who are the same people who write the standard
20:30:43 <elliott> ah
20:30:45 <elliott> then I'm still right
20:31:05 <elliott> calloc(x,y) where x*y can't fit into a size_t fails
20:31:08 <elliott> or, actually
20:31:11 <elliott> any program that says
20:31:16 <elliott> calloc(x,y) where x*y can't fit into a size_t
20:31:17 <ais523> <Keith Thompson> In C90, [...] there was *no* way to apply sizeof to the argument created by calloc
20:31:19 <elliott> is an illegal C program
20:31:27 <elliott> yes, an _illegal_ C program
20:31:30 <elliott> not one that merely triggers errno
20:31:36 <elliott> arguably, this is the same as undefined behaviour
20:31:44 <elliott> in that the C standard doesn't explicitly say what to do with such an illegal program
20:31:58 <ais523> elliott: hmm, can you use a sizeof-based argument if there's no way to apply sizeof to the resulting object?
20:32:09 <elliott> ais523: yes, because calloc's definition says it allocates an _array_
20:32:16 <elliott> and all arrays can be passed to sizeof to get their size in bytes
20:32:20 <ais523> elliott: err, no they can't
20:32:23 <elliott> yes they can
20:32:27 <ais523> precisely because they can't if they were created by calloc
20:32:30 <ais523> can you write code that does that/
20:32:31 <elliott> sizeof(array) == sizeof(array[0]) * length of array
20:32:35 <elliott> ais523: calloc doesn't return the array
20:32:41 <elliott> it returns a pointer to the array
20:32:48 <ais523> elliott: exactly, so you can't sizeof it
20:32:50 <elliott> ais523: just because you can't _access_ the array, doesn't mean it's not an array
20:32:55 <elliott> it is said to be an array
20:32:59 <ais523> elliott: but it does mean you can't apply sizeof to it
20:33:01 <elliott> in C, arrays can be passed to sizeof to get their size
20:33:09 <elliott> if you have an object
20:33:09 <fizzie> elliott: It is not said to be an array; it is said to allocate space for an array.
20:33:15 <elliott> fizzie: well, true
20:33:15 <elliott> argh
20:33:20 <elliott> shut up, this is painful :P
20:33:32 <ais523> elliott: you're saying that arrays can be passed to sizeof, and that calloc's return is an array, thus calloc's return can be passed to sizeof
20:33:35 <ais523> which is obviously incorrect
20:33:39 <ais523> thus one of your premises is wrong
20:34:28 <elliott> ais523: I did _not_ say that
20:34:31 <elliott> never! did I say that
20:34:39 <elliott> ais523: I was reasoning INTERNALLY TO CALLOC
20:34:40 <ais523> elliott: not directly, I'm showing your argument
20:34:43 <elliott> no
20:34:45 <elliott> that is not my argument
20:34:51 <elliott> that is _not_ and has _never_ been my argument, and I do _not_ believe that premise
20:34:51 <ais523> you can't reason internally to calloc, it might not be written in C
20:34:54 <elliott> nor have I ever believed it
20:34:58 <elliott> ais523: irrelevant, it is defined in terms of _C arrays_
20:35:13 <elliott> or, else, okay, let's define array to mean whatever it does in calloc's implementation language
20:35:16 <elliott> I have this nice language here
20:35:16 <ais523> elliott: but not defined in terms of _C arrays that can be passed to sizeof_
20:35:20 <elliott> where "array" means "byte"
20:35:25 <ais523> which is a different concept
20:35:27 <elliott> ais523: *EVERY* C array can be passed to sizeof!
20:35:34 <ais523> elliott: no, the internal ones in calloc can't
20:35:34 <elliott> that's part of the definition of a C array, part of its concept!
20:35:36 <elliott> aargh
20:35:37 <elliott> shut up
20:35:51 <ais523> <elliott> that's part of the definition of a C array, part of its concept! <--- this is merely incorrect
20:35:54 <ais523> that's just a pure false statement
20:36:01 <pikhq> ais523: No, it's purely true.
20:36:18 <ais523> hmm, the thread went on to argue about what sizeof(int[SIZE_MAX][3]) is
20:36:24 <ais523> you have an actual array type there
20:36:28 <ais523> and it still isn't clear-cut
20:36:37 <elliott> ais523: you're really annoying me with this, please drop the issue
20:36:53 <pikhq> ais523: I don't see how it could be anything but undefined behavior.
20:36:57 <elliott> because you're claiming something blatantly false, and at the same time claiming something directly reasonable from the standard as blatantly false
20:38:04 <ais523> pikhq: the commenters on comp.std.c think that the standard contradicts itself, in that it's defined behaviour but what it's defined /to/ contradicts other parts of the standard
20:38:28 <pikhq> ais523: Then clearly the standard is fallacious.
20:38:41 <ais523> pikhq: indeed
20:39:05 <elliott> let's talk about R5RS instead, that's an actually sane standard
20:39:34 <pikhq> ais523: And of course, there's no possible way for size_t to be a bignum.
20:39:42 <Sgeo> Doesn't it have some insane part? I don't remember, but I remember seeing some specific functions criticised
20:39:46 <ais523> pikhq: indeed
20:40:09 <pikhq> Well, it could be implemented as an arbitrarily bound bignum, I suppose. :P
20:40:45 <elliott> size_t can be a bignum in C minus the stdlib
20:40:49 <elliott> just make char a bignum
20:40:54 <elliott> this fails with an stdlib because you have to define CHAR_BIT
20:41:10 <elliott> (I suppose the C standard itself may accidentally refer to char as having some number of bits even in the non-stdlib parts, invalidating this)
20:41:31 <pikhq> elliott: Actually, the maximum value of a char must be defined in an unhosted implementation as well.
20:41:36 <pikhq> stddef.h must always exist.
20:41:44 <pikhq> (IIRC)
20:41:48 <ais523> pikhq: and limits.h, but that's not what elliott said
20:42:09 <ais523> without a stdlib at all, the type is still implementation-defined, so it still has (by the standard) to be documented
20:42:18 <ais523> I'm not sure if documenting it as being infinite would work
20:42:37 <pikhq> ais523: The thing is, *not having* that header is a violation of the standard.
20:42:39 <elliott> hmm, can you shrink with realloc?
20:42:44 <pikhq> elliott: Yes.
20:42:53 <elliott> ah, indeed
20:42:58 <ais523> elliott: yes, although it's allowed to move the pointer if you do, and also to fail to free any memory if you do
20:43:19 <ais523> most implementations of realloc I've seen just ignore attempts to shrink, which is of course legal
20:44:04 <pikhq> Perhaps not optimal (it'd be nice to be able to hand stuff back to the pool doing that), but certainly legal.
20:44:27 <ais523> hmm, elliott's arguments were made in the comp.std.c thread too, and other people accused the person making them of circular reasoning
20:44:33 <ais523> so my conclusion is, this flamewar's happened before
20:44:38 <ais523> and repeating it is a little pointless
20:45:15 <ais523> elliott: here's a fun one: is "int x = INT_MIN;" legal?
20:45:17 <fizzie> realloc(ptr, 0) is also allowed (but not required) to free(ptr) and return NULL.
20:45:31 <fizzie> Have your implementations special-cased that?
20:45:34 <ais523> fizzie: allowed but not required?
20:45:39 <elliott> that's insane
20:45:44 <ais523> what happens if it fails, wouldn't it leave ptr allocated and return NULL?
20:45:55 <ais523> I thought it was required to free and return null
20:46:02 <pikhq> ais523: It could just do nothing, and it would be undefined behavior to access the pointer.
20:46:09 <elliott> that's brilliant
20:46:11 <fizzie> ais523: "If size was equal to 0, either NULL or a pointer suitable to be passed to free() is returned."
20:46:11 <ais523> (contrary to malloc, which is allowed to succeed at allocating 0 bytes)
20:46:22 <ais523> fizzie: ouch
20:46:28 <elliott> :D
20:46:45 <elliott> http://sprunge.us/aeIg <-- here's PedantiC's implementation of calloc and realloc
20:46:57 <pikhq> ais523: Would it make you feel better to know that free(NULL) is a noöp?
20:46:57 <ais523> anyway, INT_MIN isn't a legal value for integers because the definition of unary - doesn't give any leeway for it being applied to a value that can't be negated
20:47:02 <ais523> pikhq: I know that one
20:47:12 <elliott> REALLY ULTRA PEDANTIC
20:47:30 <fizzie> ais523: Hmm, that seems to have been just my non-conforming man page; but if I read C99 right, it can't return NULL at all in that case. (Perhaps because NULL is the error result?)
20:47:31 <ais523> <ais523> anyway, INT_MIN isn't a legal value for integers because the definition of unary - doesn't give any leeway for it being applied to a value that can't be negated <-- probably not true, but it's the same argument as the sizeof-based one
20:47:48 <elliott> ais523: "int x = INT_MAX - 1;" -- valid or not? :)
20:47:54 <elliott> erm
20:47:57 <elliott> ais523: "int x = (INT_MAX + 1) - 1;" -- valid or not? :)
20:48:04 <ais523> elliott: obvious UB, signed overflow
20:48:05 <fizzie> ais523: "The realloc function returns a pointer to the new object (which may have the same value as a pointer to the old object), or a null pointer if the new object could not be allocated."
20:48:11 <ais523> which is defined as UB, IIRC
20:48:19 <elliott> ais523: who said that the expression on the RHS is evaluated as an int?
20:48:24 <elliott> ais523: maybe it's evaluated with long longs, and then casted to int
20:48:25 <fizzie> (With nothing special about 0.)
20:48:30 <ais523> elliott: the standard did, all the values there are ints
20:48:35 <pikhq> fizzie: Technically still a true statement, though.
20:48:37 <elliott> aww :)
20:48:37 <ais523> and there are rules for the widths of intermediate calculations
20:48:52 <pikhq> fizzie: It would be entirely permitted to return the old pointer, a *new* pointer, or a null pointer.
20:48:53 <ais523> more fun: short x = (SHRT_MAX + 1) - 1; is legal, for the same reason
20:48:59 <me2ufool> back
20:49:02 <elliott> insufficient comments about PedantiC's helpful error reporting
20:49:03 <ais523> if short happens to be shorterthan int
20:49:05 <ais523> *shorter than int
20:49:13 <elliott> it's like lint on steroids, except going down a different path to splint
20:49:15 <ais523> elliott: I think it's incorrect on the overflowing sizeof
20:49:23 <elliott> ais523: *size_t
20:49:27 <ais523> err, yes
20:49:29 <me2ufool> are u guys programming something
20:49:32 <me2ufool> ?
20:49:33 <elliott> ais523: well, that's the whole argument isn't it
20:49:40 <elliott> me2ufool: well, this channel _is_ about esoteric programming languages
20:49:44 <ais523> not to mention your __BUILTIN_OVERFLOW has a crazy calling convention
20:49:44 <pikhq> me2ufool: No, just talking about details of a language standard ATM.
20:49:46 <elliott> but right now, we're just arguing.
20:49:47 <pikhq> Close, though.
20:49:47 <elliott> i mean debating.
20:49:52 <fizzie> pikhq: Well, I guess the legality of "free(ptr); return NULL;" depends on how you read the "new object could not be allocated" bit.
20:49:52 <elliott> ais523: it's not a function
20:49:53 <elliott> obviously
20:49:55 <elliott> it's a compiler builtin
20:49:58 <elliott> __BUILTIN_OVERFLOWS_TYPE
20:49:58 <ais523> elliott: indeed
20:50:02 <ais523> the calling convention is /still/ crazy
20:50:04 <me2ufool> oh...
20:50:07 <Gregor> Have signed petitions ever accomplished anything in the history of the world?
20:50:10 <elliott> ais523: __BUILTIN_DESCRIBE_VARIABLE is a builtin too
20:50:12 <ais523> and builtins can have calling conventions as much as anything else
20:50:15 <ais523> Gregor: I think so
20:50:20 <elliott> ais523: returning a __variable_description_t
20:50:23 <Gregor> ais523: I think not.
20:50:30 <elliott> ais523: (__builtin_incorrect_program is just a compiler-specific function)
20:50:36 <ais523> they've accomplished getting someone executed before now, at least
20:50:37 <pikhq> Gregor: You live in a nation that exists courtesy of one such petition.
20:50:38 <elliott> that uses the functions on __variable_description_t to print out their types and values
20:50:42 <elliott> for helpful error reporting
20:50:47 -!- me2ufool has left (?).
20:50:57 <elliott> ais523: realy?
20:50:58 <elliott> *really?
20:51:00 <elliott> that sounds very scary
20:51:03 <Gregor> pikhq: Wars establish independence, not letters.
20:51:04 <ais523> Gregor: on the other hand, unsigned petitions are more useful as you don't have to worry about overflow
20:51:16 <fizzie> pikhq: Oh, actually combining with an earlier statement ("If memory for the new object cannot be allocated, the old object is not deallocated and its value is unchanged") it can't do "free and return NULL" at all. It must either return a free()able pointer (old or new) or return NULL but keep the old pointer valid.
20:51:17 <elliott> i knew that was coming
20:51:22 <elliott> i even thought Gregor was punning about that to start with
20:51:25 * Gregor kills ais523 with a stick.
20:51:36 <ais523> elliott: it was back in the days of dictatorial kings in the UK, when there was some sort of public rebellion-type thing
20:51:39 <pikhq> Gregor: Tell that to Canada, then?
20:51:48 <ais523> except they went and did it with a petition to start with rather than fighting
20:51:54 <elliott> ais523: oh, i thought you meant recently
20:51:59 <elliott> like some Daily Mail type bullshit
20:52:00 <ais523> although I think it went to fighting eventually, or at least the monarchy was worried, so they executed the ringleader
20:52:14 <ais523> elliott: err, no, the "in the history of the world" was quite definite there
20:52:34 <elliott> ais523: I know
20:52:36 <elliott> I just interpreted your reply like that
20:52:38 <elliott> because I'mc ynical
20:52:42 <elliott> *I'm cynical
20:52:47 <pikhq> Gregor: Also, on a much lesser scale. You realise that most ballot issues in many US states are put there because of a petition, right?
20:53:03 <elliott> ais523: anyway, I'd say that __builtin_malloced_size is almost as crazy as __BUILTIN_OVERFLOWS_TYPE
20:53:12 <elliott> although the latter requires bignums in the general case, I think
20:53:14 <ais523> elliott: there was some discussion about it
20:53:16 <elliott> in the compiler
20:53:21 <ais523> asking whether implementations ever didn't know about it
20:53:22 <pikhq> (as they have a law stating "if a petition for a ballot issue gets $FOO signatures, it's on the ballot.")
20:53:50 <ais523> I can't remember if the "what if it overflows size_t" argument comes up, but there was a "is that possible on all platforms?" argument
20:54:18 <fizzie> ais523: I could easily imagine a system where after "void *p = malloc(N);" you couldn't exactly deduce N from p, only an upper bound.
20:54:47 <Gregor> pikhq: I guess I'm thinking more /unsolicited/ petitions.
20:54:50 <ais523> fizzie: the malloced_size was meant to return the amount of memory that was actually used in that size, rather than N
20:55:01 <Gregor> pikhq: Not things that are legally designated to be accomplished by petition.
20:56:34 <fizzie> ais523: Well, that does sound more reasonable. Though I could still believe a malloc() implementation that deferred to some sort of a memory allocation syscall that tracked the size internally and didn't expose it at all to the user-space code. (In which case it certainly could be worked-around, but that wouldn't be very optimal.)
20:56:54 <pikhq> Gregor: Paying attention to written and signed attentions has long been a duty of the monarch in monarchies; often times, these petitions would actually have an effect.
20:56:57 <ais523> fizzie: DOS has one of those, I think I may even have contributed to the thread saying so
20:57:05 <ais523> (an actual malloc-like syscall, rather than a sbrk-like syscall)
20:57:51 <pikhq> Gregor: And in the UK, it's still technically a duty of the House of Commons, though it's ceased to be a common matter.
20:58:16 <pikhq> (obviously, the House of Commons is here acting the name of the Crown in Right of the United Kingdom)
20:58:24 <pikhq> s/acting/acting in/
20:58:27 * Gregor hmmmmmms loudly.
20:58:41 <elliott> ais523: can you always cast an integral type to a pointer?
20:58:43 <ais523> pikhq: actually, they respond to petitions quite a lot, it's mostly done online nowadays
20:58:50 <pikhq> ais523: Ah, good to know.
20:59:00 <ais523> elliott: no; in fact, I think it's at least implementation-defined whether you can do that at all
20:59:22 <ais523> if you can, though, there's an intptr_t which is a size of integer suitable for round-tripping to pointers and back
20:59:29 <ais523> (which doesn't exist if you can't)
20:59:36 <elliott> intptr_t can not exist?
20:59:41 <ais523> it's allowed to not exist, yes
20:59:46 <ais523> but has to exist if it would be meaningful
21:00:22 <ais523> you'd expect (void*)ULLONG_MAX to be meaningless on a 32-bit system, though, and defined as such
21:00:26 <ais523> with intptr_t being 32-bit
21:00:40 <zzo38> The last case, ``1'' to ``1st'', is simplest, so it comes first.
21:01:11 <zzo38> <[th]s0[st]s1[nd]s2[rd]s3 dBr 100%d10%r10/1-1 0 1i* d3-1d0i* `0+L+>
21:01:30 <elliott> ais523: then PedantiC has no intptr_t!
21:01:50 <ais523> and presumably all int<->pointer conversions are illegal
21:02:16 <elliott> yep
21:02:31 <elliott> ais523: pointers are, in fact, this structure
21:02:36 <elliott> struct __pointer_struct {
21:02:47 -!- pikhq_ has joined.
21:02:50 <elliott> size_t __pointer_start;
21:02:57 <elliott> size_t __pointer_size;
21:02:59 <elliott> };
21:03:00 <elliott> OR SOMETHING
21:03:03 <ais523> note that in C, it's legal to type-pun anything to an array of unsigned char then read it
21:03:16 <elliott> oh, i need to have a type descriptor in there :D
21:03:19 <ais523> so you probably want to randomize the internal representation to stop people exploiting it
21:03:24 <zzo38> elliott: Pointers in C do not work that way, though
21:03:24 <ais523> elliott: and the current value of the pointer
21:03:32 <elliott> <ais523> so you probably want to randomize the internal representation to stop people exploiting it
21:03:33 <elliott> naw
21:03:33 -!- cheater99 has quit (Ping timeout: 240 seconds).
21:03:36 <ais523> zzo38: they do according to the standard, just it's undefined what happens if you don't
21:03:41 <elliott> that would break on any _other_ machine :)
21:03:45 <elliott> zzo38: yes, they can
21:03:49 <elliott> if the implementation does it
21:03:57 <pikhq_> ais523: Actually, there's a form of int<->pointer casting that's perfectly lega.
21:04:00 <ais523> and so you can use the as-if rule in order to simplify them down to a single reference to memory
21:04:00 -!- azaq23 has quit (Quit: Leaving.).
21:04:02 <pikhq_> ais523: Lemme find the type.
21:04:05 <elliott> pikhq_: now wait for ineiros to disagree
21:04:08 <elliott> erm
21:04:09 <elliott> fizzie
21:04:11 <ais523> pikhq_: not 0<->NULL, at least
21:04:13 <fizzie> What, you're going to have a fixed-size pointer? You should at least add random padding based on the type.
21:04:19 <elliott> ais523: the as-if rule?
21:04:30 -!- azaq23 has joined.
21:04:36 <elliott> fizzie: maybe they'll be done with bignums internally
21:04:37 <ais523> elliott: that an impl doesn't have to obey the letter of the standard if there's no program you could use to tell them apart without invoking UB
21:04:41 <zzo38> I do guess that is one way, as long as you can still do numbers adding and so on.
21:04:41 <elliott> for no reason at all,
21:04:42 <elliott> *all
21:04:44 <ais523> the letter of the standard's a little insane in all sorts of ways
21:04:47 <elliott> ais523: haha
21:04:52 <pikhq_> ais523: Uh, 0 == NULL.
21:04:56 <ais523> and that lets you have sane implementations
21:05:01 <elliott> pikhq_: wrong
21:05:01 <ais523> pikhq_: that's a pointer == pointer cast
21:05:02 <pikhq_> IIRC.
21:05:09 <ais523> (int)0 == NULL is not necessarily true
21:05:12 <ais523> even though 0 == NULL is
21:05:13 <elliott> indeed
21:05:17 <elliott> and IIRC,
21:05:17 -!- pikhq has quit (Ping timeout: 240 seconds).
21:05:18 <elliott> int x = 0;
21:05:21 <elliott> void *foo = (void *)x;
21:05:25 <elliott> (int)foo doesn't have to be 0
21:05:27 <ais523> doesn't have to produce NULL
21:05:30 <elliott> so long as foo itself is a NULL-pointer
21:05:46 <ais523> elliott: err, you'd expect (int)foo to be a segfault the sane way of doing it with that
21:05:48 -!- pikhq_ has changed nick to pikhq.
21:05:50 <ais523> to sane nothing about the insane way
21:05:54 <ais523> what you mean is, foo doesn't have to be NULL
21:06:01 <ais523> *say nothing about the insane way
21:06:08 <elliott> right
21:06:14 <elliott> but foo can't address anything
21:06:15 <elliott> I think
21:06:16 <pikhq> ais523: Okay, yeah, that's not actually a cast. 0 == NULL but "(int)0 == NULL" is UB.
21:06:56 <pikhq> I *know* there's an integer type that you can convert a pointer into and then convert back to a pointer and it's defined.
21:07:02 <ais523> elliott: it can, depending on how int <-> pointer is defined, and it's impl-defined
21:07:15 <fizzie> pikhq: It's the already-mentioned intptr_t, which need not exist.
21:07:20 <pikhq> Though I'm pretty sure doing arithmetic on it can get you undefined behavior.
21:07:23 <pikhq> fizzie: Ah, right, that.
21:08:02 <ais523> hmm, according to TDWTF sidebar, a bunch of students were asked to do a project on the pacific northwest tree octopus
21:08:13 <ais523> now, you can find out info about it online, although the info is blatantly lying
21:08:22 -!- cheater99 has joined.
21:08:27 <ais523> but the students refused to accept that it didn't exist, becaues it said online that it did
21:08:36 <pikhq> Ah, they are optional.
21:08:40 <zzo38> There is no octopus in the tree (unless someone put it there).
21:09:05 <pikhq> Okay, so intptr_t <-> pointer is defined if and only if intptr_t exists.
21:09:06 <pikhq> Got it.
21:09:19 <fizzie> ais523: "An integer may be converted to any pointer type. -- the result is implementation-defined, might not be correctly aligned, might not point to an entity of the referenced type, and might be a trap representation." So, uh... the conversion that way is always "legal", it's just that if the result is a trap representation doing anything with it could be undefined.
21:09:25 <zzo38> So, you can steal it from the water and put it on the tree and then tell everyone within range that there is tree octopus.
21:09:42 <ais523> fizzie: doesn't merely existing cause trap representations to crash programs
21:09:54 <ais523> elliott: oh right, your signed integers should /definitely/ have padding, and multiple trap representations
21:09:57 <ais523> because I think that's allowed
21:10:07 <elliott> ais523: aargh
21:10:20 <elliott> ais523: this isn't DS9K, just DS9Pedantic
21:10:22 <ais523> zzo38: why bother, when the Internet will pretend there's tree octopi for you?
21:10:36 <ais523> elliott: but programs might assume that all the bits in an integer are meaningful!
21:10:41 <elliott> ais523: oh no!
21:11:04 <ais523> elliott: isn't the point to correct their incorrect assumptions?
21:11:30 <elliott> ais523: sort of, but it's mainly things like erroring on out-of-bounds array access
21:11:39 <elliott> which won't break "most" programs, but is still something you don't expect C to do at all
21:11:55 <ais523> I wouldn't expect padding bits in ints to break most programs either
21:12:03 <ais523> after all, the standard says they can happen...
21:12:15 <zzo38> ais523: Maybe it is better, because I don't think the octopus will live very well in the tree. But the difference is that the Internet is lying and you cannot see such things; you could make modified picture, though, in order to lie more clearly, at least.
21:12:32 <fizzie> ais523: Yes, you can still in C99 have padding bits, and some combinations of padding bits are allowed to be trap representations. (A padding bit that is a parity bit is mentioned as an example.)
21:12:49 <elliott> C is insane
21:12:59 <elliott> `addquote <zzo38> ais523: Maybe it is better, because I don't think the octopus will live very well in the tree. But the difference is that the Internet is lying and you cannot see such things; you could make modified picture, though, in order to lie more clearly, at least.
21:13:01 <HackEgo> 289) <zzo38> ais523: Maybe it is better, because I don't think the octopus will live very well in the tree. But the difference is that the Internet is lying and you cannot see such things; you could make modified picture, though, in order to lie more clearly, at least.
21:13:24 <zzo38> elliott: I think C is good, regardless of whether or not it is insane.
21:13:50 <fizzie> You could make it so that all N-bit integers are actually 2*N bits, where the other half is padding bits and has the same values than the value bits except inverted; and any representation where first_half != ~second_half is a trap representation.
21:13:59 <elliott> ais523: hmm, have you come up with any innovations in underload data structure representation?
21:14:13 <ais523> elliott: not really, ints and lists are really the basis of everything
21:14:20 <fizzie> Quite many infrared remote controls send ints in that format. :p
21:14:21 <ais523> and in underload, list via "cons cell" is simplest
21:14:31 <fizzie> (LIRC has a thing for it too.)
21:14:34 <zzo38> You are taking the quote out of context. It doesn't say what "it" refers to in "Maybe it is better", you can out square brackets to tell you what it is, that is what other quotations do, too. (Here, "it" refers to internet lying, so put "internet lying" in square brackets)
21:15:02 <ais523> zzo38: elliott likes taking quotes out of context for amusement value
21:15:14 <fizzie> The "code, ~code" is pretty useful when 0s and 1s have different lengths (time-wise); you'll always have the same amount of 0s and 1s, and a fixed-length sequence.
21:15:29 <zzo38> ais523: OK, I didn't know that.
21:15:41 <ais523> fizzie: encoding 0 as 01 and 1 as 10 is also moderately common, in order to keep 0s and 1s in balance
21:15:55 <ais523> (that isn't a joke, many communication systems require 0s and 1s to be reasonably balanced in order to avoid malfunction)
21:16:11 <ais523> (such as radio, and copper wire)
21:16:23 <fizzie> That too; I don't quite recall if LIRC has an automagical way of doing that transformation to the entered codes, though.
21:17:07 <variable> best undefined behaviour ever was in very early versions of GCC if you didn't something obviously stupid (int *a; *a=1;) it would attempt to start nethack :-)
21:17:14 <pikhq> All of C's oddities only make sense when you consider it's meant to be a portable but rather low-level language.
21:17:21 <ais523> variable: it was on #pragma
21:17:58 <variable> ais523, I thought it occurred in a few places
21:18:01 <pikhq> variable: Ah, yes, #pragma starting nethack, or hack, or rogue, or fortune, or just giving up, depending on what was available, IIRC.
21:18:02 <variable> pikhq, 100%
21:18:13 <ais523> pikhq: or Emacs running a simulation of the Towers of Hanoi
21:18:19 <variable> O
21:18:21 <pikhq> ais523: Oh, right, that was in the list.
21:18:30 <ais523> it didn't quite give up, it printed "You are in a maze of twisty little compiler features, all different" (quote may not be exactly right)
21:18:34 <variable> I've considered filing a bug requesting the feature in clang
21:19:02 <elliott> it'd be very annoying if you actually used pragmas
21:19:08 <elliott> I think gcc spports a pragma or two now, anyway
21:19:26 <ais523> it does
21:19:32 <ais523> there are a few pragmas required by C99, in fact
21:19:38 <variable> #pragma pack and a few others
21:19:45 <ais523> the sane thing to do would be to merge _Pragma and __attribute__, although I'm not sure if they did that
21:19:45 <variable> ais523, _required_ ?
21:19:50 <elliott> I love the idea of requiring a compiler-specific pragma
21:19:52 <ais523> variable: #pragma STDC ...
21:19:58 <variable> ais523, ah
21:20:08 <variable> elliott, that is why I asked
21:20:59 <pikhq> God, #pragma.
21:21:08 <pikhq> Such a misfeature.
21:21:15 <ais523> _Pragma is not as bad
21:21:21 <ais523> but bear in mind that most langs have had pragmas for ages
21:21:23 <fizzie> They're all just boring floating-point pragmas (#pragma STDC FP_CONTRACT on-off-switch, as well as FENV_ACCESS and CX_LIMITED_RANGE).
21:21:34 <ais523> QBasic had them; and Algol-68 before that
21:21:34 <pikhq> Mostly because you can't generate a #pragma with the preprocessor.
21:21:36 <ais523> and that's just langs I know
21:21:44 <ais523> pikhq: _Pragma fixed that, as I said
21:21:48 <pikhq> Yes.
21:21:57 <variable> pikhq, #pragma is actually quite useful for requesting things of compilers without them taking other words as "reserved"
21:22:02 <pikhq> Well, you can *kinda* do #pragma with the preprocessor. Conditional #include.
21:22:19 <pikhq> Still. *shudder*
21:22:21 <ais523> ouch
21:22:26 <olsner> pragma pragma pragma foo
21:22:26 <ais523> that's... a) ingenious, b) twisted
21:22:31 <fizzie> I think _Pragma is pretty weird; it's a preprocessor directive that can be generated by the preprocessor.
21:22:41 <variable> _pragma or #pragma ?
21:22:53 -!- elliott has quit (Read error: Connection reset by peer).
21:23:02 -!- elliott has joined.
21:23:05 <zzo38> Sometimes I want to generate preprocessor directives from the preprocessor, so, instead I can use the prepreprocessor.
21:23:30 <ais523> zzo38: I think that's why m4 was invented
21:23:54 <elliott> ais523: btw, I'm calling my compiler unad, I think you can probably figure out why
21:24:07 <zzo38> ais523: m4 does not fit with C syntax very well.
21:24:09 <ais523> elliott: which compiler? underload? PedantiC?
21:24:17 <elliott> zzo38: but it was designed to fit with C-style syntax
21:24:18 <elliott> (ratfor)
21:24:23 <elliott> it's closer to c syntax than cpp
21:24:24 <ais523> zzo38: indeed it doesn't; just because it was invented for that purpose doesn't mean it's good at it
21:24:27 <elliott> ais523: underload
21:24:43 <variable> <elliott> ais523: btw, I'm calling my compiler unad, I think you can probably figure out why --> why?
21:24:51 <zzo38> elliott: Yes, it fits with ratfor, but ratfor isn't C even if it is a bit similar.
21:25:04 <elliott> variable: i want to see if ais523 can figure it out yet :)
21:25:55 <elliott> *first :)
21:26:08 <ais523> hmm, is the recent edit on [[Brainscrambler]] a genuine fix or subtle vandalism?
21:26:12 <ais523> I'm guessing the first, but don't know
21:26:22 <variable> ais523, link?
21:26:29 <ais523> http://esolangs.org/wiki/Brainscrambler
21:26:34 <variable> I meant link to edit
21:26:36 <variable> but meh
21:26:42 <ais523> it changed all instances of 2006 to 2004
21:26:51 <ais523> and that's the sort of thing that's hard to check either way
21:27:21 <elliott> ais523 won't even guess, pfft
21:27:36 <elliott> ais523: ask the ip, on the off-chance?
21:27:51 <elliott> http://esolangs.org/w/index.php?title=Brainscrambler&diff=8478&oldid=5503
21:27:57 <elliott> ais523: if you were still a WP admin you could check when the article was created/deleted
21:28:07 <ais523> oh, it was on WP?
21:28:15 <elliott> ais523: yes, probably the creator added it without thinking too hard
21:28:18 <ais523> I can check that anyway, don't need to be an admin to check the dates, just the content
21:28:24 <elliott> oh, right
21:28:35 <elliott> ais523: are you even going to guess? :)
21:28:58 <ais523> the article itself was created in 2006
21:29:01 <ais523> but that doesn't meant the lang was
21:29:09 <elliott> then I strongly suspect 2006
21:29:31 <elliott> because, what kind of person invents a very minor esolang, then two years later, adds it to Wikipedia?
21:30:56 <ais523> the sort of person who typically creates esolangs, unfortunately
21:31:01 <ais523> I think asking the IP would work wel
21:31:03 <ais523> *well
21:31:04 <elliott> how does perl 6 embed code in strings?
21:31:21 <ais523> "{code goes here}"
21:31:26 <elliott> ais523: yes, I realised when I said it that it was unfortunately a rather easy question to answer :)
21:31:51 <elliott> aha, interpolatedstring-perl6 is what i want
21:32:31 <elliott> ais523: aw come on, guess why it's called unad
21:33:43 <ais523> looking online, the person who's meant to have created it is semi-famous, but there are no details on the lang itself
21:34:40 <elliott> famous how?
21:35:40 <ais523> there's a WP article about them with 8 or so references
21:35:57 <zzo38> Please try to guess how this program works: BArD91-0 1di
21:36:23 <ais523> and the IP seems to be dynamic, so asking them wouldn't help
21:36:26 <ais523> I'll leave a talk page note
21:36:27 <elliott> ais523: ok, I'll tell you: underload = un derlo ad
21:36:29 <elliott> -> un ad
21:36:30 <elliott> -> unad
21:36:34 <elliott> SINCE YOU'RE TOO BORING TO GUESS
21:36:49 <elliott> ais523: dynamic IPs mean little nowadays
21:36:52 <elliott> since, routers rarely reconnect
21:37:02 <elliott> so they're usually static for relatively long periods of time
21:37:05 <elliott> so I'd still note on the IP talk page
21:37:57 * elliott wonders if ais523 is ignoring all unad talk
21:40:25 <fizzie> So your compiler is based on stripping out all the derlo.
21:40:54 <elliott> EXACTLY
21:41:03 <elliott> fizzie: (ais's fast underload interp is called derlo)
21:41:14 -!- Lymia has joined.
21:41:21 * Lymia hugs random people
21:41:28 <olsner> ah, [pf]unny name
21:41:38 <elliott> olsner: you're not oerjan!
21:41:52 <olsner> elliott: you're not oerjan either!
21:41:55 <fizzie> A packetfilterunny name?
21:42:03 <elliott> OH FIZZIE
21:42:04 <elliott> SUCH COMEDY
21:42:13 <fizzie> RUNNY NAME.
21:42:22 <olsner> fizzie: that is a [pf]unny response indeed
21:42:49 <Lymia> !fyb nothing-2 +[]
21:43:38 <ais523> hmm, fyb leaderboard activity
21:43:53 <EgoBot> Score for Lymia_nothing-2: 1.0
21:43:54 <ais523> I'm still moderately sure that the game's broken by long [....] chains designed to fail
21:44:04 <Lymia> :v
21:44:10 <Lymia> report.txt was empty before.
21:44:32 <elliott> meanwhile, in the realm of What That Doesn't Even Make Sense What Are You A Java Programmer
21:44:33 <Lymia> ais523, you think that's bad?
21:44:33 <elliott> <deech> Is there versions of the IO Monad that only allow reads for example - called an RO monad for example. So if some function was in the RO monad we know that it can only read the filesystem.
21:44:38 <ais523> !fyb [+][%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%];{>>}[+]++++++++++++++!:
21:44:39 <EgoBot> Use: !fyb <program name> <program> . Scoreboard, programs, and a description of score calculation are at http://codu.org/eso/fyb/
21:44:44 <ais523> !fyb ais_test1 [+][%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%];{>>}[+]++++++++++++++!:
21:44:57 <EgoBot> Score for ais523_ais_test1: 72.8
21:45:10 <Lymia> If you write "@@", you set the data pointer to the current code pointer.
21:45:14 <Lymia> Let the implications of that sink in.
21:45:34 <ais523> ah, I didn't realise @ was quite /that/ broken
21:45:48 <Lymia> So.
21:45:52 <Lymia> You don't need to write [+]
21:45:56 <ais523> still, the program template I have there becomes better and better and better just by adding more % signs
21:45:57 <Lymia> You can write @+
21:46:07 <ais523> I tried to do it via @ before now, but messed up somehow
21:46:10 <ais523> so thought I'd do it the simple way
21:46:11 <elliott> !fyb ais_test1 [+][%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%];{>>}[+]++++++++++++++!:
21:46:15 <elliott> oops, sorry for stealing your name
21:46:20 <elliott> at least i made the program better :P
21:46:20 <EgoBot> Score for elliott_ais_test1: 60.0
21:46:25 <Lymia> It's prefixed by user names.
21:46:27 <elliott> ais523: wait what
21:46:28 <elliott> randomness?
21:46:39 <ais523> elliott: no, it's got ais523_ais_test1 to compete against
21:46:45 <ais523> which is going to drive down the score as it's such a good program
21:46:57 <elliott> ah
21:47:06 <elliott> !fyb break [+][%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%];{>>}[+]++++++++++++++!:
21:47:14 <EgoBot> Score for elliott_break: 44.3
21:47:16 <ais523> !fyb lose @[+]++++++++++++++!
21:47:17 <elliott> !fyb break [+][%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%];{>>}[+]++++++++++++++!:
21:47:18 <EgoBot> Score for elliott_break: 54.0
21:47:19 <EgoBot> Score for ais523_lose: 1.2
21:47:22 <elliott> argh :D
21:47:25 <elliott> go away, other programs!
21:47:26 <elliott> hmm
21:47:28 <elliott> let's saturate the hill!
21:47:30 <elliott> MWAHAHA
21:47:39 <Lymia> I'll bring my response.
21:47:45 <ais523> I prefer BF Joust, it's much more resistant to that sort of shenanigans
21:47:45 <elliott> !fyb break2 [+][%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%];{>>}[+]++++++++++++++!:
21:47:51 <elliott> i'm all about shannigans
21:47:53 <EgoBot> Score for elliott_break2: 37.2
21:47:54 <elliott> Lymia: link me to report.txt?
21:47:58 <ais523> http://codu.org/eso/fyb/report.txt
21:48:07 <Lymia> http://codu.org/eso/fyb/report.txt
21:48:12 <Lymia> You killed my @@ abuse bot.
21:48:12 <Lymia> :(
21:48:12 <ais523> happened to have it at the time, the run of "lose" was just to make it generate more quickly
21:48:13 <Lymia> Oh well.
21:48:16 <Lymia> I'm still at the top!
21:48:53 <elliott> !fyb litter [+][%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%];{>>}[+]++++++++++++++!:
21:48:56 <EgoBot> Score for elliott_litter: 46.0
21:49:00 <ais523> Lymia: have you looked at BF Joust? it's another similar game
21:49:03 <elliott> and so trickles off more programs
21:49:04 <Lymia> Nope.
21:49:22 <ais523> on a similar principle, but instead of aiming at the opponent's code array, you mess about with a shared data array instead
21:49:31 * elliott gives himself credit on the egojoust section of [[BF Joust]]
21:49:32 -!- impomatic has joined.
21:49:35 <ais523> and try to trick the other program into falling off the end, or else set the element they started on to 0 while they aren't looking
21:49:51 <elliott> it made it sound like the tape length averaging and the polarities were the egojoust implementor's innovation :P
21:49:52 <elliott> *implementer's
21:50:01 <ais523> http://esolangs.org/wiki/BF_Joust
21:50:19 <Lymia> !fyb explode :@+[%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%];:{>>}[+]++++++++++++++!;@@:{>>}[+]++++++++++++++!;
21:50:21 <ais523> elliott: oh, they were yours not Gregor's?
21:50:22 <EgoBot> Score for Lymia_explode: 14.8
21:50:27 <elliott> ais523: yep
21:50:33 <ais523> Lymia: does ;: do anything but waste time?
21:50:39 <Lymia> :;
21:50:41 <Lymia> Starts a new thread.
21:50:44 <ais523> I fear I really badly misunderstand the fyb spec
21:50:47 <elliott> ais523: and i was going to implement them, but Gregor beat me to it, the filthy jew^W^Wrespectable, but irritatingly quickly programming, member of society
21:50:48 <ais523> and you wrote ;:, not :;
21:51:12 <Lymia> ;: is the end of a thread followed by the start of a thread.
21:51:26 <Lymia> !fyb explode :@+[%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%];:{>>}[+]++++++++++++++!;@@:{>>}[+]++++++++++++++!;
21:51:29 <EgoBot> Score for Lymia_explode: 46.0
21:51:36 <Lymia> !fyb explode :@+[%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%];:{>>}[+]++++++++++++++!;@@:{>>}[+]++++++++++++++!;
21:51:38 <EgoBot> Score for Lymia_explode: 29.6
21:51:40 <elliott> let's make every other type of program go extinct!
21:51:43 <Lymia> Strange.
21:51:56 <elliott> grr, i can't even use c-mode
21:51:59 -!- zzo38 has quit (Quit: zzo38).
21:52:38 <Lymia> Another thing I dislike about FYB is that due to the @@ trick, you can reliablly generate a bot that will kill a target bot.
21:52:52 <Lymia> Automaticly.
21:52:58 <Lymia> And have it push other things off the hill too.
21:53:00 <ais523> Lymia: doesn't @ defect to the :, then + change it in-memory to a ;?
21:53:05 <ais523> that doesn't put 0 on the tape like ais_test1 does
21:53:11 <Lymia> ais523, eh?
21:53:16 <Lymia> @ sets the data pointer to the code pointer.
21:53:16 <ais523> I'm looking at explode
21:53:36 <Lymia> As the code being executed is @, the value has to be one away from overflow.
21:53:39 <Lymia> + causes it to overflow.
21:53:41 <ais523> @ is documented as moving the data pointer into your own code, not the enemy's code
21:53:48 <Lymia> It does the opposite too.
21:53:50 <Gregor> ais523, elliott: We Jews are known for our programming prowess.
21:53:51 <ais523> are you saying it moves onto that instance of the @?
21:53:52 <Lymia> @ does this exactly.
21:54:02 <Lymia> First, it sets the data pointer to the code pointer.
21:54:12 <Lymia> Then, it switches the data pointer from your program to the enemy's program, or vice versa.
21:54:28 <ais523> ah, the "sets the data pointer to the code pointer" isn't in the spec at all
21:54:36 <Lymia> Nope.
21:54:36 <ais523> no wonder I was never any good at FYB
21:54:40 <elliott> FYB is pretty much obsolete, dude :P
21:54:54 <ais523> although that gets round my lightspeed trick
21:55:09 <ais523> FYB isn't a massively bad idea, it's just let down by implementation somehow
21:55:16 <Phantom_Hoover> ais523, what's your lightspeed trick?
21:55:18 <ais523> making [] always loop at least once would help
21:55:36 <ais523> Phantom_Hoover: what's shown up there, using a [%%%%....%%%] loop to move the IP faster than the other thread's data pointer can catch up with it
21:55:40 <ais523> except via @@, apparently
21:56:01 <Lymia> litterer-2 basicly uses @@ to sprinkle lines of bombs all over the enemy's code.
21:56:09 <elliott> wow, it works
21:56:10 <Lymia> And hoping that it hits some code.
21:56:19 <elliott> properly, even, kinda
21:56:23 <ais523> why doesn't it always land in the same place?
21:56:38 <ais523> oh, or does it always switch to the /enemy/'s code pointer?
21:56:42 <ais523> that's broken beyond belief
21:57:19 <Lymia> ais523, defect switches between the two tapes.
21:57:32 <ais523> I know, I'm asking about where specifically on the tape it switches to it ends up
21:57:33 <elliott> ais523: guess the language:
21:57:34 <elliott> #define TYPE_{i} T_QUOT
21:57:34 <elliott> #define STR_{i} {show (toSrc bs xs)}
21:57:35 <elliott> #define STR_LEN_{i} {length (toSrc bs xs)}
21:57:35 <elliott> quo_{i}:
21:57:35 <elliott> {bodyToC xs}
21:57:36 <elliott> return;
21:57:42 <Lymia> Lisp?
21:57:46 <Lymia> No.
21:57:49 <ais523> elliott: that weird sort of C that LoseThos is written in?
21:57:53 <elliott> ais523: nope
21:57:54 <elliott> Lymia: nope
21:57:58 <Lymia> Objective C or something?
21:58:01 <Lymia> Smalltalk?
21:58:02 <elliott> nope, not C family
21:58:10 <olsner> haskell?
21:58:33 <ais523> hmm, it could be Haskell + cpp, actually
21:58:43 <ais523> except for that quo_ line
21:58:44 <elliott> it's Haskell with Perl 6 interpolated strings
21:58:48 <elliott> I was bit dishonest, it's in a quoted string
21:58:52 <ais523> ah, OK
21:58:54 <elliott> quoToC :: [[Flat UL]] -> Int -> [Flat UL] -> String
21:58:54 <elliott> quoToC bs i xs = [$qq|
21:58:54 <elliott> #define TYPE_{i} T_QUOT
21:58:54 <elliott> #define STR_{i} {show (toSrc bs xs)}
21:58:54 <elliott> #define STR_LEN_{i} {length (toSrc bs xs)}
21:58:55 <elliott> quo_{i}:
21:58:58 <ais523> you're using Perl 6 to generate Haskell?
21:58:58 <elliott> {bodyToC xs}
21:58:59 <elliott> return;
21:59:02 <elliott> |]
21:59:04 <elliott> ais523: nope, it's a Haskell module
21:59:10 <elliott> written by Audrey Tang, the creator of Pugs
21:59:15 <elliott> Text.InterpolatedString.Perl6
21:59:16 <ais523> err, wait, is that eval-ling Haskell at runtime?
21:59:17 <Lymia> That's disgusting.
21:59:21 <elliott> ais523: no, it's template haskell
21:59:23 <elliott> compile-time
21:59:26 <ais523> phew
21:59:26 <elliott> Lymia: what is?
21:59:34 <elliott> ais523: it was the best multiple-line-strings-without-pain module i could find
21:59:38 <elliott> (Haskell's string syntax sucks a bit)
21:59:39 <Lymia> Gregor, I wait to see your response.
21:59:40 <ais523> Haskell is one of the languages least capable of doing a Perl-style eval
21:59:53 <elliott> response to what?
21:59:54 <Lymia> Actually.
21:59:58 <Lymia> !fyb litterer-clone-1 http://lymia.x10.bz/evil.fyb
22:00:01 <Lymia> !fyb litterer-clone-2 http://lymia.x10.bz/evil.fyb
22:00:02 <EgoBot> Score for Lymia_litterer-clone-1: 81.2
22:00:03 <Lymia> !fyb litterer-clone-3 http://lymia.x10.bz/evil.fyb
22:00:05 <ais523> although you can probably retrofit it onto more or less anything
22:00:05 <EgoBot> Score for Lymia_litterer-clone-2: 73.0
22:00:06 <Lymia> !fyb litterer-clone-4 http://lymia.x10.bz/evil.fyb
22:00:08 <EgoBot> Score for Lymia_litterer-clone-3: 64.2
22:00:09 <Lymia> Let's clean out the hill.
22:00:10 <EgoBot> Score for Lymia_litterer-clone-4: 58.3
22:00:13 <elliott> hey, Lymia
22:00:17 <elliott> don't submit multiple bots with the same source
22:00:19 <elliott> that's evil
22:00:22 <elliott> besides
22:00:22 <Lymia> =3
22:00:29 <elliott> they'll tie against themselves
22:00:33 <Lymia> lol
22:00:33 <elliott> so they'll start getting lower scores rapidly
22:00:37 <ais523> I imagine a similar trick would work in BF Joust, too
22:00:38 <Lymia> They just pushed eachother down.
22:00:41 <ais523> the way the hill's calculated
22:00:58 <ais523> yay, I'm now winning
22:01:07 <elliott> ais523: it should probably treat two identical-when-expanded programs as a loss
22:01:11 <elliott> a very bad loss
22:01:12 <elliott> for both of them
22:01:32 <elliott> Lymia: what's disgusting?
22:01:38 <Lymia> Nothing~
22:01:51 <impomatic> I suppose I ought to try FYB :-)
22:02:08 <ais523> impomatic: it's your sort of thing, but has problems in practice
22:02:28 <ais523> <elliott> for both of them <--- just the newer, otherwise it'd be a really easy way to get rid of unwanted programs
22:02:32 <elliott> impomatic: FYB is like BF Joust: The Bad Early Version
22:02:34 <elliott> ais523: ah, indeed
22:02:37 <ais523> also, people could vary it a bit
22:02:42 <impomatic> I'll give it a go just so I can write a wiki page for it ;-)
22:02:49 <elliott> ais523: yes, but close-but-varying programs can be good modifications
22:02:56 <elliott> impomatic: http://esolangs.org/wiki/FukYorBrane
22:02:57 <ais523> elliott: FYB's not that like BF Joust, it's just that they're both BF-based
22:03:00 <elliott> impomatic: sorry to disappoint
22:03:02 <ais523> elliott: not that wiki
22:03:06 <elliott> oh, right
22:03:15 <ais523> (not to mention, the one on Esolang could do with improvement)
22:03:17 <impomatic> By the way, does anyone know how long it takes for a new Wikipedia page to be reviewed?
22:03:24 <ais523> impomatic: there isn't a review process
22:03:25 <elliott> the other wiki with that horrible ASP.NET software?
22:03:45 <elliott> impomatic: if you've made a page about BF Joust I doubt it'll last :-P
22:03:50 <Lymia> !fyb alicia http://lymia.x10.bz/evil.fyb
22:03:53 <EgoBot> Score for Lymia_alicia: 98.0
22:04:01 <ais523> there are new page patrollers, who will either catch problems with a page within the first half hour, or approximately 4 weeks after creation just before it falls off the back of the queue
22:04:04 <olsner> impomatic: 3 units of time, at least
22:04:06 -!- Mathnerd314 has joined.
22:04:07 <impomatic> elliott: that's right, on the horrible wiki :-P
22:04:10 <ais523> otherwise, it relies on people finding them at random
22:04:21 <elliott> impomatic: i just can't stand the software, nothing personal :P
22:04:40 <Lymia> Heh.
22:04:47 <Lymia> One additional thing I might like about BF joust.
22:04:47 <ais523> !fyb lose @[+]++++++++++++++!
22:04:49 <EgoBot> Score for ais523_lose: 5.1
22:04:56 <ais523> gah, why does lose keep winning?
22:05:04 <ais523> gah, why does lose keep winning?
22:05:04 <Lymia> ais523, self-bombers
22:05:06 <ais523> !fyb lose @[+]++++++++++++++!
22:05:08 <EgoBot> Score for ais523_lose: 5.1
22:05:11 <elliott> :D
22:05:14 <ais523> Lymia: it /is/ a self-bomber
22:05:14 <elliott> `addquote <ais523> gah, why does lose keep winning?
22:05:15 <HackEgo> 290) <ais523> gah, why does lose keep winning?
22:05:20 <ais523> and the most efficient one I could come up with
22:05:20 <elliott> ais523: quicker self-bombers
22:05:24 <Lymia> !fyb real-lose [@+++++++++++++++!]
22:05:28 <EgoBot> Score for Lymia_real-lose: 5.1
22:05:29 <impomatic> ais523: http://en.wikipedia.org/wiki/Color_Robot_Battle <- I assumed there's a review process from the tag at the top... I was waiting to see if it's deleted for lack of notability.
22:05:30 <elliott> what do invalid instructions do in fyb?
22:05:32 <Lymia> !fyb real-lose-2 +[@+++++++++++++++!]
22:05:37 <EgoBot> Score for Lymia_real-lose-2: 5.1
22:05:39 <Lymia> elliott, there are none.
22:05:40 <Lymia> What.
22:05:40 <ais523> oh, it does lose to everything, just doesn't get no points
22:05:44 <Lymia> What is it wining agienst.
22:05:58 <elliott> impomatic: I think that just means nobody's looking at it yet
22:06:02 <ais523> impomatic: the tags are filed into dated categories, that people look at occasionally; people have to be proactive about doing something about them
22:06:12 <ais523> if you fix the problem a tag describes, you can remove it yourself
22:06:19 <elliott> impomatic: the article looks to be well-written as far as formatting, references etc. goes, so I'd say it has a good chance
22:06:22 <ais523> and if you think the problem's fatal, you can nominate the article for deletion
22:06:31 <elliott> and it seems notable enough, although ofc not everybody agrees with my definition
22:06:31 <ais523> mostly, though, articles just stay tagged indefinitely, more or less
22:06:40 <elliott> (I wouldn't mind an in-depth article on every Pokemon...)
22:06:58 <elliott> ais523: he wrote the page
22:07:00 <elliott> looking at the histor
22:07:00 <Lymia> elliott, that goes on Bulbapedia.
22:07:01 <elliott> y
22:07:01 <Lymia> =p
22:07:08 <elliott> Lymia: indeed, but I don't see why it shouldn't go on Wikipedia
22:07:23 <Lymia> !fyb nothing +[]
22:07:25 <EgoBot> Score for Lymia_nothing: 1.0
22:07:26 <elliott> impomatic: (cur | prev) 22:06, 2 February 2011 OoS (talk | contribs) (1,280 bytes) (←Created page with '{{New unreviewed article|source=ArticleWizard|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}} '''Color Robot Battle''' is an early programming game for...')
22:07:27 <ais523> Bulbapedia has /multiple/ in-depth articles on some Pokémon
22:07:28 <elliott> you _added_ that tag!
22:07:35 <elliott> X-D
22:07:42 <ais523> e.g. distinguishing between Pikachu in general, and Ash's Pikachu in particular
22:07:42 <Lymia> elliott, on the subject of BF Joust.
22:07:47 <elliott> I don't think you're meant to add it to your own pages
22:07:48 <elliott> ais523: haha
22:07:49 <Lymia> I see one thing nice about it.
22:07:55 <ais523> elliott: no, it gets added by the article wizard
22:08:00 <elliott> ah
22:08:00 <impomatic> Elliott: the tag was added by the new article wizard :-)
22:08:23 <Lymia> You could write an evolver for it.
22:08:27 <Lymia> Win/lose is not an boolean value.
22:08:42 <impomatic> An evolver for FYB?
22:08:46 <elliott> evolving bf never seems to go very well
22:08:47 <elliott> impomatic: no, BF Joust
22:09:12 <ais523> elliott: if you're talking about notability within the area of Pokémon, Ash's Pikachu is obviously pretty special compared to others
22:09:22 <ais523> so it makes sense for Bulbapedia to have multiple articles like that
22:09:39 <elliott> ais523: I think Pokemon itself is notable enough for the entire contents of Bulbapedia being worthy of inclusion into Wikipedia, really
22:09:50 <elliott> I don't think too many people agree, though
22:09:59 <ais523> elliott: some would be a bit dubious
22:10:06 <elliott> well, OK, but certainly most
22:10:22 <elliott> all this and rabid inclusionists still annoy me...
22:10:27 <ais523> especially the whole Shipping namespace, which is full of things like carefully arranged arguments for and against Ash's Bulbasaur being in love with Dawn's Bulbasaur
22:10:36 <elliott> that /exists/?
22:10:40 <elliott> :D
22:10:42 <ais523> yep
22:10:45 <elliott> that's brilliant. -ly terrible.
22:11:00 <ais523> notability by Bulbapedia standards is measured relative to Pokémon as a whole
22:11:15 <ais523> so it goes down much lower than standards relative to the world as a whole
22:11:59 <elliott> haha, wow, it warns you before letting you load a page in that namespace
22:12:27 <elliott> "Holding hands is often used to show attraction" who the hell wrote this page and were they above the age of 4?
22:12:38 <Phantom_Hoover> ais523, that is the craziest thing ever.
22:12:39 <Lymia> elliott, evolving BF wouldn't be that bad... if your goal wasn't to kill human written bots.
22:12:40 <elliott> "Blushing is often used to show attraction"
22:12:52 <Lymia> elliott, we're talking about an anime.
22:12:56 <elliott> What else is used to show attraction, Bulbapedia?! Your list does not appear exhaustive!
22:13:02 <ais523> elliott: it's an attempt to figure out minor details of an anime from other minor details of an anime
22:13:07 <ais523> all the things on that list actually happened
22:13:08 <elliott> from the talk page: [[Can We take down all the Gay Shippings like palletShipping, Even with the warning, It just isn't right.--Quick Man 21:18, 14 May 2008 (UTC)]]
22:13:21 <Lymia> Where's my brain bleach.
22:13:33 <elliott> Lymia: you didn't get your lifetime's supply when you joined the Internet?
22:13:39 <Lymia> No.
22:13:43 <elliott> oh dear, not another lost shipment
22:13:49 <Lymia> I think I used it all up with NGE.
22:13:55 <elliott> Lymia: you'll have to call your ISP. in the meantime, I suggest unplugging your router/modem immediately
22:14:06 <Lymia> Or was it fanfiction.net
22:14:06 <Gregor> elliott: wtfbbq
22:15:04 <elliott> Gregor: I would ask what line you're referring to, but really, it's probably all of them
22:15:40 * Lymia gets an idea
22:16:14 <Lymia> Hmm.
22:16:22 <Lymia> The tape itself has a random length from 135 to 167 elements
22:16:23 <Gregor> elliott: Mainly "<elliott> from the talk page: [[Can We take down all the Gay Shippings like palletShipping, Even with the warning, It just isn't right.--Quick Man 21:18, 14 May 2008 (UTC)]]", taken entirely out of context because I'm not willing to logread
22:16:26 <Lymia> elliott, I see a roblem with BF joust.
22:16:35 <Gregor> Lymia: egojoust runs it with all tape lengths.
22:16:37 <Lymia> Wouldn't this mean that all programs would basicly start with 135 > or < commands.
22:16:42 <elliott> Lymia: no
22:16:45 <elliott> going off the end of the tape kills you
22:16:51 <Lymia> 135 is the minimum length.
22:16:54 <elliott> Lymia: wrong
22:16:57 <ais523> Lymia: they generally set up a few obstacles first, in order to make it harder for the other program to be able to tell where the end was
22:16:58 <elliott> http://esolangs.org/wiki/BF_Joust
22:17:03 <ais523> so you set up a fake flag, or whatever
22:17:03 <elliott> Lymia: see "The revised version"
22:17:05 <elliott> and note the egojoust section
22:17:09 <elliott> which includes my improvements
22:17:10 <elliott> that's the version we play
22:17:13 <Lymia> Ah.
22:17:16 <elliott> the original version was very flawed in that way
22:17:17 <ais523> but the version we use here uses shorter tapes
22:17:32 <ais523> such that you can either spend a long time setting up defenses, or rush to the other side to try to capture its flag before it can
22:17:46 <elliott> technically, the tape is every length from 10 to 30
22:17:50 <elliott> because of quantum!
22:18:02 <elliott> hmm, you could actually optimise that
22:18:04 <Gregor> Nondeterminism sucks :P
22:18:07 <Lymia> Eh, wait.
22:18:08 <elliott> run the program once
22:18:13 <elliott> and if it goes past tape element N
22:18:23 <elliott> note in all result structs with tape length of less than N that it crashed
22:18:24 <elliott> etc.
22:18:29 <ais523> I doubt it'd be worth the effort, possibly faster to do it the brutish way
22:18:34 <ais523> especially because of how the flags work
22:18:34 <elliott> probably
22:18:37 <Lymia> >+>->+>->+>->+>->+>-
22:18:45 <elliott> ais523: but if evolving, you want really quick execution
22:18:46 <Lymia> Couldn't you start with that to set up a decent wall of defences.
22:18:58 <elliott> Lymia: yes, but that won't fool a lot of the programs
22:18:58 <ais523> Lymia: indeed, many programs do that sort of thing
22:19:01 <elliott> some strategies are very advanced
22:19:05 <Lymia> >+>->+>->+>->+>->+>->[[-]>]
22:19:06 <Lymia> Then uke.
22:19:07 <Lymia> nuke*
22:19:09 <ais523> but most modern programs are aware of that, and have counters
22:19:13 <elliott> Lymia: that's the "obvious" strategy
22:19:15 <ais523> try it, if you like
22:19:23 <Lymia> !bfjoust stupid >+>->+>->+>->+>->+>->[[-]>]
22:19:27 <ais523> some of the best programs on the leaderboard are just improved versions of that
22:19:29 <elliott> this is the current highest-ranked BF Joust program: http://codu.org/eso/bfjoust/in_egobot/jix_wiggle3.bfjoust
22:19:31 <elliott> on the hill
22:19:39 <ais523> some are very different, like defend7
22:19:42 <EgoBot> Score for Lymia_stupid: 2.6
22:19:44 <elliott> rushpolarity is IIRC pretty crazy
22:19:49 <elliott> tripwire2 is very unconventional
22:19:50 <elliott> IIRC
22:19:55 <elliott> http://codu.org/eso/bfjoust/in_egobot/ais523_tripwire2.bfjoust
22:20:04 <Gregor> PS my system of calculating scores is downright inspired :P
22:20:04 * Phantom_Hoover Googles Gnomeo and Juliet for much the same reason that none of Lovecraft's protagonists didn't just go home and have a cup of tea.
22:20:10 <ais523> tripwire programs are hilarious
22:20:15 <elliott> slowrush is just weird: http://codu.org/eso/bfjoust/in_egobot/myndzi_slowrush.bfjoust
22:20:24 <Gregor> Phantom_Hoover: lol
22:20:31 <ais523> defend7 is more unconventional than tripwire, though
22:20:36 <elliott> Phantom_Hoover: *just went
22:20:39 <elliott> not didn't just
22:20:42 <ais523> and defend9 is just too massively complex for its own good
22:20:48 <elliott> *just went home, that is
22:20:53 <Phantom_Hoover> elliott, yes, I know.
22:20:56 <Gregor> elliott: Didn't you just not go and don't gone fixin' none grammar?
22:20:57 <elliott> Lymia: http://codu.org/eso/bfjoust/in_egobot/ais523_defend7.bfjoust
22:21:05 <Phantom_Hoover> I was constructing a regex for that and you RUINED it!
22:21:11 <Lymia> I see that programs get complicated.
22:21:12 <Lymia> :v
22:21:13 <elliott> the end of defend7 (past the loop) is just insane
22:21:17 <elliott> Gregor: :D
22:21:24 <elliott> Lymia: oh, not really
22:21:29 <elliott> Lymia: this is the result of like a month of competition
22:21:33 <Lymia> Ah.
22:21:36 <elliott> the hill's been static for a while now
22:21:39 <ais523> defend7 probably has a record for a low number of loops in a successful program
22:21:43 <elliott> because almost all strategies are represented in a very good form
22:21:50 <ais523> there's just the one
22:21:57 <elliott> indeed
22:22:10 <Lymia> So.
22:22:22 <elliott> get strategising!
22:22:23 <ais523> defend7 is probably clearer commented, but it was IIRC autogenerated
22:22:47 <Gregor> <elliott> this is the current highest-ranked BF Joust program: http://codu.org/eso/bfjoust/in_egobot/jix_wiggle3.bfjoust // not true btw, slowrush is because my system of calculating scores is downright inspired :P
22:22:48 <Lymia> Basicly, you can't afford to go more than 10 steps without checking to make sure you're not stepping off the edge.
22:22:54 <ais523> that's it
22:23:00 <elliott> err, no
22:23:03 <elliott> 15 56.67 10.71 jix_wiggle3.bfjoust
22:23:03 <elliott> 19 56.59 9.21 myndzi_slowrush.bfjoust
22:23:04 <elliott> when i said that
22:23:11 <elliott> /now/ it's at the top
22:23:13 <ais523> and there's no 100% reliable way to check that you're stepping off the edge
22:23:14 <elliott> because lymia's stupid is still there
22:23:26 <elliott> Gregor: proposal: if the program you submit ends up at the bottom
22:23:31 <elliott> the action is cancelled
22:23:45 <Lymia> Heh.
22:23:50 <elliott> ais523: yes there is, if you destroy the tape to make a counter
22:23:51 <ais523> anyway, basic program types: fast rush programs that just try to clear obstacles and sink the flag as fast as possible; defense programs that try to detect the fast rush programs coming and either pin them in place, or trick them off the end of the tape; slow rush programs that are more cautious and don't fall for the defense program tricks
22:23:55 <elliott> well, assuming your opponent isn't fucking with the tape cells
22:23:56 <Lymia> For some reason, I want to make a programming game involving danmaku.
22:24:01 <ais523> elliott: that's a bad assumption
22:24:04 <elliott> well, eys :)
22:24:05 <elliott> *yes
22:24:12 <Gregor> elliott: *eh*, I think the case that it's significant enough to tip the balance between two major players is rare enough (although seen right here) that it doesn't matter *shrugs*
22:24:23 <ais523> the various vibration programs are all about fucking with the tape cells, as you put it
22:24:28 <ais523> although they rarely do all that well
22:24:30 <Lymia> ais523, how do you trick things off the end of the tape?
22:24:34 <elliott> "as you put it" :D
22:24:40 <elliott> in the elegant words of elliott!
22:24:52 <Lymia> That is, without destroying your flag.
22:25:06 <elliott> Lymia: difficultly
22:25:09 <ais523> Lymia: well, most programs move forwards until they see something nonzero, then zero it, then move on further
22:25:18 <elliott> Lymia: basically, set your flag to 0
22:25:20 <elliott> then increment it next turn
22:25:23 <Lymia> Ah.
22:25:24 <ais523> so one approach is vibration-style, where you set your flag to 0 every second cycle and hope they miss it
22:25:25 <elliott> you only die if your flag is 0 for two turns
22:25:26 <elliott> so this works
22:25:32 <elliott> (why is that btw, ais523?)
22:25:32 <Lymia> I wonder.
22:25:38 <Gregor> !bfjoust bestEver >+[[]+]
22:25:40 <elliott> (was it just so you could do vibration? :)
22:25:42 <ais523> elliott: precisely so that strategy works
22:25:42 <elliott> *))
22:25:43 <Lymia> !bfjoust cirno [[-]+]
22:25:45 <elliott> ais523: hmm
22:25:50 <ais523> actually, I was thinking more along the lines of defend7
22:25:51 <EgoBot> Score for Gregor_bestEver: 9.2
22:25:56 <Gregor> YESSSSSSSS
22:25:57 <elliott> ais523: well, it seems to have increased the strategies, but it seems like changing the law to allow the strategy :)
22:25:57 <ais523> which tries to push the flag /past/ 0
22:25:58 <elliott> which is just weird
22:26:02 <elliott> Gregor: BEST EVER
22:26:09 <ais523> elliott: it was basically to make defense programs viable somehow
22:26:15 <ais523> as they give multiple options for escaping from a zeroed flag
22:26:18 <EgoBot> Score for Lymia_cirno: 7.6
22:26:22 <Gregor> !bfjoust zeroPoints <
22:26:32 <EgoBot> Score for Gregor_zeroPoints: 0.0
22:26:37 <Gregor> YESSSSSSSSSSS
22:26:50 <ais523> Lymia: cirno will set the flag to 0 (one cycle), then check if it's 0 (one cycle)
22:26:52 <ais523> and at that point die
22:27:08 <Deewiant> Gregor: -20 points, not zero; that's the score
22:27:19 <Lymia> ais523, ah.
22:27:20 <elliott> !bfjoust magic ]
22:27:21 <Gregor> Deewiant: I forgot how points were calculated X-P
22:27:30 <elliott> Gregor: Too INSPIRED for human minds, even yours.
22:27:35 <EgoBot> Score for elliott_magic: 12.2
22:27:35 <ais523> and that law change was an attempt to increase the strategy width by making it possible to push beyond 0 or to fake a 0
22:27:42 <Gregor> !bfjoust shitPile [>[+]]
22:27:47 <elliott> 12.2!
22:27:48 <Gregor> Wait, that's all wrong :P
22:27:49 <ais523> elliott: I think EgoBot just ignores unmatched brackets
22:27:49 <elliott> that's better than bestEVer
22:27:51 <elliott> *bestEver
22:27:51 <Gregor> Even for shitPile
22:27:55 <elliott> Gregor: dude, we use underscores
22:27:56 <elliott> not camel-case
22:28:00 <EgoBot> Score for Gregor_shitPile: 12.2
22:28:00 <elliott> you bad person
22:28:04 <Gregor> elliott: FUCK YOUR UNDERSCORES
22:28:16 <ais523> well, at least shitPile sets up a decoy, and can potentially trap an opponent doing [-]
22:28:18 <Gregor> !bfjoust shit_pile [>+[+]+]
22:28:42 <Gregor> You can tell how much I'm trying here :P
22:28:51 <Lymia> I wonder.
22:28:52 <elliott> !bfjoust (>-)*5[](<)*5(+-)*128
22:28:52 <EgoBot> Score for Gregor_shit_pile: 5.0
22:28:52 <EgoBot> Use: !bfjoust <program name> <program> . Scoreboard, programs, and a description of score calculation are at http://codu.org/eso/bfjoust/
22:28:53 <oerjan> HackEgo cannot factor 56657856797822194249 :(
22:28:55 <ais523> Gregor: slowest rush progam I've ever seen
22:29:06 <ais523> oerjan: you've been doing that all day?
22:29:06 <elliott> !bfjoust poop_house (>-)*5[](<)*5(+-)*128
22:29:10 <elliott> oerjan: wat
22:29:20 <oerjan> ais523: this base 8 case is proving even worse than base 10 :D
22:29:22 <EgoBot> Score for elliott_poop_house: 4.1
22:29:26 <elliott> YAY
22:29:27 <elliott> 4.1
22:29:28 <elliott> WHY SO BAD
22:29:29 <Lymia> Is Egobot's BF Joust intretper publicly available?
22:29:31 <ais523> EgoBot: that vibration should probably last longer than 128
22:29:31 <Gregor> !bfjoust multiples_of_two [++]
22:29:33 <elliott> Lymia: yes
22:29:34 <oerjan> ais523: well i've not done it very optimally
22:29:37 <ais523> Lymia: it is, although I forget where offhand
22:29:37 <elliott> all parts of egobot are
22:29:40 <elliott> ask Gregor for the link :P
22:29:44 <Gregor> Lymia: https://codu.org/projects/egobot/hg/
22:29:50 <elliott> ais523: EgoBot thanks you for the help
22:29:53 <elliott> but thinks you might mean elliott
22:29:53 <EgoBot> Score for Gregor_multiples_of_two: 8.5
22:29:58 <Gregor> YESSSSSSSSSSSSS
22:29:59 <oerjan> ais523: i'm down to three remaining cases: 10*1, 1* and 61*
22:30:00 <ais523> oerjan: I'm just surprised you were so patient at it, most people would have got bored by now
22:30:01 <elliott> !bfjoust poop_house (>-)*5[](<)*5(+-)*4096
22:30:06 <elliott> Gregor: X-D
22:30:16 <Lymia> !bfjoust multiples-of-three [+++]
22:30:17 <EgoBot> Score for elliott_poop_house: 4.1
22:30:20 <ais523> !bfjoust multiples_of_two_plus_one +[++]
22:30:21 <elliott> OH YEAH
22:30:22 <elliott> 4.1
22:30:22 <elliott> WHY SO BAD
22:30:34 <oerjan> and 22 octal digits
22:30:35 <Lymia> elliott.
22:30:36 <Gregor> Oh yeah, it's 128 on each end
22:30:40 <Gregor> I thought 127 for some reason.
22:30:41 <elliott> Gregor: :hurr:
22:30:41 <EgoBot> Score for ais523_multiples_of_two_plus_one: 14.4
22:30:42 <EgoBot> Score for Lymia_multiples-of-three: 7.0
22:30:42 -!- hagb4rd has quit (Ping timeout: 240 seconds).
22:30:43 <Lymia> What happens when a program reaches it's end.
22:30:49 <Gregor> So mine just guaranteed a loss :P
22:30:49 <elliott> Lymia: I think you d ie
22:30:50 <elliott> *die
22:30:52 <ais523> it does nothing forever
22:31:00 <Gregor> !bfjoust do_nothing_forever
22:31:01 <EgoBot> Use: !bfjoust <program name> <program> . Scoreboard, programs, and a description of score calculation are at http://codu.org/eso/bfjoust/
22:31:01 <Lymia> !bfjoust multiples-of-three-2 [[+++]+]
22:31:01 <elliott> ah
22:31:04 <Gregor> !bfjoust do_nothing_forever >
22:31:05 <ais523> so it just sits there; it won't fall off, but its flag is a sitting duck
22:31:08 <EgoBot> Score for Lymia_multiples-of-three-2: 7.7
22:31:09 <ais523> Gregor: you can use . for a no-op
22:31:13 <ais523> that takes a cycle
22:31:15 <Gregor> Ohyeah, forgot .
22:31:17 <elliott> ais523: why is poop house so bad?
22:31:19 <EgoBot> Score for Gregor_do_nothing_forever: 13.2
22:31:37 <oerjan> so far base 8: 2, 3, 5, 7, 141 (97), 161 (113), 401 (257), 661 (433), 1101 (577), 4611 (2441), 6101 (3137), 6441 (3361), 60411 (24841), 101111 (33353), 444641 (149921), 600111 (196681), 1000011 (262153), 1000111 (262217), 4411111 (1184329), 64111111 (13668937), 444444441 (76695841), 601111111 (100962889), 41111111111111111 (1166110617801289), ...
22:31:45 <Gregor> !bfjoust suicidal [-]
22:31:45 <ais523> elliott: mostly because it doesn't even beat tripwire
22:31:53 <elliott> ais523: :(
22:31:53 <ais523> which loses to a do-nothing because it's hilarious like that
22:32:00 <elliott> ais523: but anyone who runs towards it is a stupid!
22:32:02 <ais523> tripwire is basically just trolling
22:32:09 <Lymia> !bfjoust hug [-]
22:32:14 <ais523> or, rather, doing insane amounts of psychology
22:32:22 <impomatic> !bfjoust wildfire (>+)*9(>[(-)*128[-]])*20
22:32:24 <elliott> !bfjoust poop_house (>-)*5[](<)*5(+-)*10(>)*9[[[-]>]+]
22:32:29 <ais523> it assumes the opponent will set up decoys, and uses them in an attempt to judge the location of the enemy flag
22:32:40 <Lymia> So.
22:32:50 <ais523> elliott: 10 turns of vibration won't trick the opponent off the end
22:32:51 <Lymia> I want to try and code an evolver for BF Joust.
22:32:54 <Lymia> How idiotic am I?
22:32:55 <elliott> hurry up, poop_house!
22:32:59 <elliott> ais523: no, but it will slow them down, maybe!
22:33:06 <elliott> Lymia: stop talking about wanting to do it and do it :)
22:33:08 <ais523> Lymia: probably not massively idiotic; I've had thoughts along those lines myself
22:33:10 <elliott> you can use egojoust for the purpose, most likely
22:33:11 <impomatic> Hurry up Wildfire!
22:33:11 <EgoBot> Score for elliott_poop_house: 9.9
22:33:11 <EgoBot> Score for Lymia_hug: 8.6
22:33:12 <EgoBot> Score for Gregor_suicidal: 8.6
22:33:12 <EgoBot> Score for impomatic_wildfire: 22.3
22:33:14 <elliott> 9.9
22:33:15 <elliott> OH YEAH
22:33:17 <elliott> BEST PROGRAM
22:33:18 <Lymia> elliott, well.
22:33:19 <Gregor> !bfjoust i_hope_you_subtract +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
22:33:19 <elliott> BEATS EVEN SUICIDAL AND HUG
22:33:26 <ais523> impomatic: I think you're the only person working today who's actually trying
22:33:30 <ais523> Gregor: that would work better with RLE
22:33:30 <elliott> hey
22:33:31 <elliott> i tried
22:33:33 <elliott> i'm just really bad
22:33:37 <EgoBot> Score for Gregor_i_hope_you_subtract: 12.0
22:33:40 <Lymia> I have to figure out how to do loops.
22:33:43 <Lymia> I'm thinking of doing this.
22:33:47 <Lymia> Treat loops as semi-opcodes.
22:34:01 <Lymia> And their contents are mutated the same as the program as a whoel.
22:34:02 <Lymia> whole*
22:34:03 <ais523> you could do it like FYB and just ignore unmatched [ and ]
22:34:25 <Lymia> Does EgoBot do that?
22:34:42 <impomatic> !bfjoust wildfire >(>+++>---)*4(>[(-)*128[-]])*20
22:34:42 <Gregor> Trying to evolve it with no structure is likely to cause MADNESS.
22:34:52 <EgoBot> Score for impomatic_wildfire: 13.9
22:34:53 <Lymia> ais523, I do expect to get better results from keeping loops intact though.
22:34:54 <Gregor> Ohyeah, I forgot about RLE :P
22:35:03 <Gregor> !bfjoust i_hope_you_add -*127
22:35:09 <ais523> parens on *
22:35:12 <ais523> so (-)*127
22:35:16 <Gregor> Oh
22:35:18 <EgoBot> Score for Gregor_i_hope_you_add: 12.4
22:35:20 <Gregor> !bfjoust i_hope_you_add (-)*127
22:35:21 <Lymia> !bfjoust slow-suicide (>)*31
22:35:35 <ais523> actually, you probably didn't remember that rule when you wrote egojoust, so without the parens likely works just fine
22:35:43 <EgoBot> Score for Lymia_slow-suicide: 0.0
22:35:43 <EgoBot> Score for Gregor_i_hope_you_add: 12.8
22:35:43 <elliott> ais523: do it without keeping loops balanced, it'll be amusing
22:36:05 <elliott> !bfjoust poop_cauldron ((+)*3(-)*3)*127
22:36:19 <Lymia> What's with your vulgar names?
22:36:22 <EgoBot> Score for elliott_poop_cauldron: 15.9
22:36:24 <ais523> elliott: put the repeat count up to 100000 or so if you're writing a program like that
22:36:29 <elliott> Lymia: "poop" is vulgar?
22:36:31 <ais523> Lymia: elliott uses swear words as metasyntactic variables
22:36:32 <Lymia> No.
22:36:33 <Lymia> =p
22:36:33 <Gregor> !bfjoust i_hope_you_FAIL [(-)*127(+)*254(-)*127]
22:36:46 <elliott> Man, I woke up in a strange new world where "poop" is a swear word.
22:36:50 <elliott> "You're so... poop."
22:36:56 <Lymia> !bfjoust idiotic (((++)*256)*256)*256
22:37:04 <ais523> Gregor: that's vaguely how defend7 works, except it lets the opponent do the (+)*254 and kills the opposing flag meanwhile
22:37:04 <elliott> 15.9, not bad!
22:37:08 <elliott> we're putting bad programs on the hill
22:37:11 <elliott> and then battling them against each other
22:37:14 <elliott> all the good programs are going to die out
22:37:24 <Gregor> lol
22:37:26 <ais523> nah, because the good programs will beat the bad ones easily
22:37:32 <Lymia> Did I crash Egobot?
22:37:33 <Lymia> :v
22:37:39 <ais523> nah, it's just busy
22:37:41 <EgoBot> Score for Lymia_idiotic: 11.6
22:37:41 <EgoBot> Score for Gregor_i_hope_you_FAIL: 11.3
22:37:56 <Lymia> !bfjoust idiotic02 ((((((++)*256)*256)*256)*256)*256)*256
22:38:00 <ais523> they're getting close to toppling vibration2
22:38:10 <ais523> but I don't think vibration is actually a viable strategy
22:38:17 <ais523> so it counts as a bad program too
22:38:34 <EgoBot> Score for Lymia_idiotic02: 12.7
22:38:36 <Lymia> What does vibration do?
22:38:44 <Gregor> !bfjoust in_my_mind_this_makes_sense >(+)*127[[>+<-]>]
22:38:53 <Phantom_Hoover> ais523, what's vibration?
22:38:54 <ais523> basically sets the counter to 0 every other turn, in the hope the opponent will miss it altogether
22:38:59 <EgoBot> Score for Gregor_in_my_mind_this_makes_sense: 10.5
22:39:06 <elliott> apparently, it's my reddit birthday
22:39:08 <ais523> it's a pretty flawed strategy, as it's too liable to being killed by mistake
22:39:11 <Lymia> !bfjoust insanely-large-number (+)*100000000000000
22:39:13 <impomatic> !bfjoust wildfire (>-)*9(>[+++[-[-[--[-[-[[(-)*125[-]]]]]]]]])*20
22:39:20 <elliott> apparently, i've been wasting my time for four years
22:40:00 <Lymia> So.
22:40:02 <EgoBot> Score for Lymia_insanely-large-number: 12.3
22:40:02 <EgoBot> Score for impomatic_wildfire: 26.9
22:40:03 * Sgeo steals elliott's cake
22:40:04 -!- TLUL has changed nick to Ajfrabbitz.
22:40:06 <Lymia> Does insanely-large-nuber count as malicious intent.
22:40:07 <Lymia> ALso.
22:40:09 <Lymia> Why does it win at all.
22:40:13 <ais523> impomatic: that (-)*125 looks a little suspicious
22:40:18 <ais523> Lymia: it'll beat tripwire
22:40:27 <ais523> tripwire is famous for beating good programs and losing for jokes
22:40:32 <elliott> woo
22:40:34 <elliott> i got 0.0
22:40:48 <ais523> basically, because it assumes that the first thing it encounters can't possibly be the real flag because no successful program wouldn't use decoys, but a decoy
22:40:52 <ais523> and then just rushes after that
22:40:57 <Gregor> !bfjoust wipe_your_mouth_out_with_soup (>)*10((-)*127>)*20
22:41:02 <Gregor> Even if that succeeds, it fails.
22:41:05 <EgoBot> Score for Gregor_wipe_your_mouth_out_with_soup: 0.0
22:41:13 <Gregor> Wow
22:41:15 <elliott> hey
22:41:18 <elliott> mine was better at getting 0.0
22:41:23 <elliott> <elliott> !bfjoust spotless_interior (->)*7(<(+)*10<(-)*10)*7
22:41:23 <elliott> <EgoBot> Score for elliott_spotless_interior: 0.0
22:41:26 <impomatic> ais523: I think *125 is right... before that it adds 3 then subtracts 6
22:41:30 <elliott> (I thought that strategy might actually work, kinda)
22:41:39 <ais523> Gregor: change it from 20 > to 19 >
22:41:47 <Gregor> !bfjoust wipe_your_mouth_out_with_soup (>)*10((-)*127.>)*19
22:41:56 <EgoBot> Score for Gregor_wipe_your_mouth_out_with_soup: 0.0
22:42:01 <Gregor> I didn't give it a moment to succeed, so if I zero'd the flag, I'd walk off the end anyway :P
22:42:03 <ais523> impomatic: but say if the opponent used +4 as an obstacle, you'd go and set the value all the way to -128, then all the way up to +0 again
22:42:11 <ais523> first at full speed, then at half speed
22:42:14 <elliott> !bfjoust spotless_interior (->)*7(<+<-)*3<(+-)*128
22:42:17 <ais523> hmm, I suppose that's no worse than what many other langs do
22:42:28 <elliott> ais523: langs?
22:42:28 <EgoBot> Score for elliott_spotless_interior: 3.7
22:42:32 <ais523> err, programs
22:42:32 <elliott> 3.7
22:42:33 <elliott> OH YEAH
22:42:35 <Lymia> !bfjoust i-would-rather-die-by-my-own-hand (-)*128<
22:42:43 <EgoBot> Score for Lymia_i-would-rather-die-by-my-own-hand: 7.9
22:42:49 <ais523> Lymia: that probably /still/ beats tripwire
22:42:53 <Gregor> !bfjoust wash_your_mouth_out_with_soup (>)*10((-)*128.>)*19
22:43:02 <EgoBot> Score for Gregor_wash_your_mouth_out_with_soup: 0.1
22:43:06 <Gregor> YESSSSSSSSSSSSSSSSS
22:43:24 <Gregor> I won against defend7 :P
22:43:32 <impomatic> !bfjoust lesswild (>-)*9(>[++++++[-[-[-[-[-[--[-[-[-[-[-[[(-)*122[-]]]]]]]]]]]]]]])*20
22:43:40 <EgoBot> Score for impomatic_lesswild: 27.0
22:43:44 <elliott> !bfjoust and_i_will_bring_you_with_me_on_our_fiery_path_to_the_demolishment_of_terms (>->+)*4(<)*8[(-)*128]
22:44:00 <elliott> i think i overflowed its name buffer
22:44:00 <EgoBot> Score for elliott_and_i_will_bring_you_with_me_on_our_fiery_path_to_the_demolishment_of_terms: 0.3
22:44:02 <elliott> WOO
22:44:02 <elliott> 0.3
22:44:07 <elliott> HELLS YEAH
22:44:27 <ais523> time for me to go home, anyway
22:44:36 <ais523> I need to get some work done; and it may even be esolang-related
22:44:49 -!- ais523 has quit (Remote host closed the connection).
22:44:50 <impomatic> !bfjoust wilddecoy >----------(>)*8(>[++++++[-[-[-[-[-[--[-[-[-[-[-[[(-)*122[-]]]]]]]]]]]]]]])*20
22:44:55 <Gregor> !bfjoust jello >+[<(-+)*100>+]
22:44:59 <Lymia> !bfjoust !bfjoust cirno (>->+)*10([-]>)*100
22:45:01 <Lymia> erm
22:45:09 <Lymia> !bfjoust cirno (>->+)*10([-]>)*100
22:45:15 <EgoBot> Score for impomatic_wilddecoy: 35.1
22:45:15 <EgoBot> Score for Gregor_jello: 5.8
22:45:16 <EgoBot> Score for Lymia__bfjoust: 0.1
22:45:19 <elliott> :D
22:45:27 <elliott> impomatic is actually doing well and we are being terrible
22:45:27 <EgoBot> Score for Lymia_cirno: 0.0
22:45:31 <Gregor> _bfjoust is a pretty good name.
22:45:57 <Lymia> !bfjoust tripwire-will-lose ([-]>)*100
22:45:57 <elliott> !bfjoust (->)*4<-(-{>+}[+>-<->>])%4[-(+)*3]
22:45:58 <EgoBot> Use: !bfjoust <program name> <program> . Scoreboard, programs, and a description of score calculation are at http://codu.org/eso/bfjoust/
22:46:06 <elliott> !bfjoust accidental_stare_into_pit_over_void (->)*4<-(-{>+}[+>-<->>])%4[-(+)*3]
22:46:11 <elliott> Lymia: underscores, dammit!
22:46:13 <EgoBot> Score for Lymia_tripwire-will-lose: 9.0
22:46:24 <Lymia> elliott, what's wrong with dashes?
22:46:25 <EgoBot> Score for elliott_accidental_stare_into_pit_over_void: 3.2
22:46:27 -!- kar8nga has quit (Remote host closed the connection).
22:46:35 <Gregor> !bfjoust NO_U +
22:46:37 <elliott> Lymia: because it turns into "Lymia_foo-bar-baz" which is ugly :P
22:46:38 <elliott> 3.2
22:46:39 <elliott> not bad
22:46:40 <Lymia> Ah.
22:46:43 <Lymia> :V
22:46:48 <EgoBot> Score for Gregor_NO_U: 11.4
22:46:51 <Gregor> lol'
22:47:02 <elliott> xD
22:47:16 <elliott> !bfjoust poop_emporium .
22:47:31 <EgoBot> Score for elliott_poop_emporium: 10.4
22:47:39 <elliott> OH YEAH
22:47:44 <Gregor> !bfjoust secret_instant_win_op *
22:47:57 <elliott> Gregor: PUT A BACKDOOR INTO EGOJOUST
22:48:01 <EgoBot> Score for Gregor_secret_instant_win_op: 9.6
22:48:03 <Lymia> !bfjoust ../../../../../../../../../etc/passwd .
22:48:04 <impomatic> !bfjoust sexyghoul >(-)*10>(+)*10(>)*7(>[++++++++[-[-[-[-[-[-[--[-[-[-[-[-[-[[(-)*121[-]]]]]]]]]]]]]]]]])*20
22:48:09 <elliott> !bfjoust poop_shopping_centre ((.{.}.)%74)*9
22:48:23 <elliott> sexyghoul? your naming convention is rather arbitrary :D
22:48:36 <Gregor> !bfjoust tits (.)(.)
22:48:41 <EgoBot> Score for impomatic_sexyghoul: 30.1
22:48:41 <EgoBot> Score for elliott_poop_shopping_centre: 8.0
22:48:41 <EgoBot> Score for Lymia____________________________etc_passwd: 8.0
22:48:44 <elliott> 8.0
22:48:45 <EgoBot> Score for Gregor_tits: 0.0
22:48:46 <elliott> 8. FUCKING 0
22:48:48 <elliott> HOW DID THAT EVEN HAPPEN
22:48:50 <elliott> IT WAS A BUNCH OF NOPS
22:48:53 <elliott> HOW
22:49:03 <elliott> link to report.txt :P
22:49:08 <Lymia> Tripwire
22:49:12 <Deewiant> http://codu.org/eso/bfjoust/report.txt
22:49:49 <elliott> Dude...
22:49:52 <elliott> We have totally shitted up the hill.
22:50:11 <Gregor> lol
22:50:17 <Gregor> !bfjoust ruh_roh .
22:50:19 <Lymia> 18 | - + + + + + - - 0low.bfjoust
22:50:21 <elliott> !bfjoust poop_box (.)*999999999999999999
22:50:23 <Lymia> What the heck happened here.
22:50:30 <elliott> Lymia: wat
22:50:44 <impomatic> !bfjoust sexyghoul >(-)*9>(+)*9(>)*7(>[++++++[-[-[-[-[-[--[-[-[-[-[-[(-)*122[-]]]]]]]]]]]]]])*20[-]
22:50:44 <Gregor> It was probably running two instances at once and got screwy :P
22:50:50 <Sgeo> Maybe bfjoust sucks as a game
22:50:54 * Sgeo ducks
22:51:03 <elliott> !bfjoust poop_encapsulating_object_oriented_dynamism_to_leverage_synergy (.)*18446744073709551617
22:51:17 <Lymia> !bfjoust d_oh >*10[[]>][[]>][[-]>]
22:51:37 <Gregor> I should make a system where you write a bot to play nethack, and see who can write the best said bot :P
22:51:44 <Lymia> Gregor, in Brainfuck.
22:51:53 <Phantom_Hoover> Lymia, no.
22:51:56 <Lymia> The tape contains your field of vision.
22:52:01 <Phantom_Hoover> Brainfuck is overused.
22:52:02 <elliott> <Gregor> I should make a system where you write a bot to play nethack, and see who can write the best said bot :P
22:52:03 <Lymia> . makes you output a character to input.
22:52:04 <elliott> Gregor: TAEB would win :P
22:52:07 <elliott> TAEB would win forever.
22:52:11 <EgoBot> Score for Lymia_d_oh: 6.7
22:52:11 <EgoBot> Score for Gregor_ruh_roh: 6.7
22:52:12 <EgoBot> Score for elliott_poop_encapsulating_object_oriented_dynamism_to_leverage_synergy: 6.7
22:52:12 <EgoBot> Score for elliott_poop_box: 6.7
22:52:12 <EgoBot> Score for impomatic_sexyghoul: 46.4
22:52:18 <elliott> 6.7
22:52:26 <elliott> 6.7 for the poop-encapsulating object-oriented dynamism to leverage synergy
22:52:32 * Sgeo falls in love with object-oriented poop
22:53:14 <Gregor> We need to hold up and let the hill settle with less people on it :P
22:53:20 <Gregor> Just let impomatic add something.
22:53:27 <elliott> impomatic: add GENIOSITY
22:53:33 <Lymia> !bfjoust hello_world >+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.>>>++++++++[<++++>-]<.>>>++++++++++[<+++++++++>-]<---.<<<<.+++.------.--------.>>+.
22:53:42 <Gregor> Or, y'know, not :P
22:53:59 <EgoBot> Score for Lymia_hello_world: 4.1
22:54:02 <elliott> X-D
22:54:08 <Gregor> OK, something be broken :P
22:54:09 <elliott> !bfjoust I win!
22:54:17 <elliott> Gregor: No, it's just competing against really bad programs.
22:54:19 <elliott> A lot of really bad programs.
22:54:20 <Gregor> Oh dear :P
22:54:20 <elliott> OR
22:54:23 <elliott> maybe it's actually a good strategy
22:54:29 <Gregor> elliott: No, the hill is supposed to clean itself out.
22:54:29 <Lymia> Gregor, make the bot output the tape for each round.
22:54:32 <Gregor> elliott: But it's not.
22:54:38 <EgoBot> Score for elliott_I: 6.1
22:54:40 <elliott> Gregor: ISTR you increased its size.
22:54:43 <elliott> ...what, EgoBot?
22:54:46 <Lymia> Then we can output messages into the thing.
22:54:46 <elliott> oh
22:54:50 <elliott> !bf_txtgen I win!
22:54:58 <Gregor> elliott: http://codu.org/eso/bfjoust/report.txt Observe the lunacy
22:54:59 <EgoBot> 83 ++++++++++[>+++++++>+>+++>++++++++++++<<<<-]>+++.>>++.>-.--------------.+++++.<+.<. [548]
22:55:08 <elliott> Gregor: IIRC the tape is 15 long or something
22:55:14 <elliott> *hill
22:55:17 <elliott> Gregor: Err, the report is cut off.
22:55:23 <Gregor> elliott: Yes, observe the lunacy :P
22:55:26 <elliott> !bfjoust i_win ++++++++++[>+++++++>+>+++>++++++++++++<<<<-]>+++.>>++.>-.--------------.+++++.<+.<.
22:55:37 <EgoBot> Score for elliott_i_win: 1.5
22:55:39 <elliott> Gregor: Delete all the retarded-ass programs and start again :P
22:55:47 <elliott> Gregor: poop_shopping_centre downwards on that report.
22:55:50 <elliott> The rest can stay.
22:55:57 <Gregor> That's what it's SUPPOSED to do already.
22:56:02 <elliott> Gregor: Do it manually first :P
22:58:03 <elliott> hmm, I wonder if... hmm
22:58:37 <Lymia> !bfjoust likely_blond >->+>----->+++++>---->++++>--->+++>-->++(+++[-]..>---[+]..>)*50
22:58:54 <EgoBot> Score for Lymia_likely_blond: 33.5
22:59:21 -!- oerjan has quit (Quit: Good night).
22:59:46 <Lymia> !bfjoust likely_blond >->+>----->+++++>---->++++>--->+++>-->++(+[-].+>-[+].->)*50
22:59:51 <Lymia> I have no clue what this will do.
22:59:51 <Lymia> :v
22:59:53 <EgoBot> Score for Lymia_likely_blond: 32.5
23:00:01 <Phantom_Hoover> http://www.computer.org/portal/web/buildyourcareer/news/-/blogs/php-tops-list-of-hot-job-categories?_33_redirect=/portal/web/buildyourcareer/news
23:00:01 <Lymia> Worse, it seems.
23:00:04 <Phantom_Hoover> I... please...
23:00:20 <Lymia> I'll get to making an evolver I guess.
23:00:20 <Lymia> :s
23:00:23 <Phantom_Hoover> That must be an overexaggeration.
23:00:27 <Lymia> elliott, now that I think about it.
23:00:31 <Lymia> How would you score an evolver.
23:00:39 <Lymia> The early ones are likely to kill themselves.
23:00:39 <elliott> Lymia: By using egojoust's resulting score.
23:00:48 <Lymia> At fir--
23:00:49 <Lymia> Oh right.
23:01:03 <Lymia> Hmm...
23:01:11 <Lymia> Think making it generate ()*bluh ops would be an bad idea?
23:01:25 <elliott> Lymia: Might be a good idea.
23:01:35 <Gregor> !bfjoust i_hope_i_fixed_it .
23:01:35 <Sgeo> Ugh
23:01:40 <EgoBot> Score for Gregor_i_hope_i_fixed_it: 5.1
23:01:46 <Sgeo> Have to install Microsoft Visio and Microsoft Project for class
23:01:51 <Gregor> Better :P
23:02:19 <elliott> !bfjoust crap (.)*999
23:02:23 <elliott> !bfjoust crap9 (.)*9999
23:02:25 <EgoBot> Score for elliott_crap: 5.1
23:02:29 <EgoBot> Score for elliott_crap9: 4.7
23:02:34 <elliott> 999 IS BETTER
23:02:39 <Lymia> elliott, yeah.
23:02:40 <Gregor> IMMA KILL U
23:02:42 <Lymia> I think I have it figured out.
23:02:46 <Lymia> One major thing I'm wondering about though.
23:03:02 <Lymia> How would you crossover the contents of loops between bots.
23:03:07 <Lymia> Just pick random loops, and cross them over?
23:03:12 <elliott> Lymia: You could just hill-climb, rather than actually being genetic.
23:03:18 <elliott> BF doesn't really have a good concept of genes.
23:03:23 <elliott> Because code is very context-dependent.
23:03:26 <elliott> So breeding is very difficult.
23:03:37 <Lymia> So.
23:03:46 <Lymia> Just mutate with no crossing over?
23:04:06 <Lymia> Could work, I guess.
23:04:20 <elliott> Lymia: As long as you DON'T call it genetic :P
23:04:25 <elliott> It's hill-climbing.
23:04:32 <Gregor> (It's still OK to call it "evolutionary programming" :P )
23:04:36 <Lymia> (Crossing over would work better in FYB, with :; I guess)
23:04:39 <elliott> Gregor: Well, yeah.
23:04:45 <elliott> But not genetic programming or genetic algorithms or anything :P
23:05:06 <Lymia> Meh.
23:05:22 <elliott> EXAMPLE 3 In this example, the size of a variable length array is computed and returned from a
23:05:22 <elliott> function:
23:05:22 <elliott> #include <stddef.h>
23:05:22 <elliott> size_t fsize3(int n)
23:05:22 <elliott> }
23:05:24 <elliott> char b[n+3]; // variable length array
23:05:26 <elliott> return sizeof b; // execution time sizeof
23:05:27 <elliott> {
23:05:30 <elliott> WHY IS THAT VALID
23:05:32 <elliott> (What, those }s and {s are the right way around in the standard.)
23:06:05 <Lymia> IIRC, C99 supports that.
23:06:13 <Lymia> ...
23:06:17 <Lymia> The [n+3] thing, not the }{
23:06:18 <elliott> yes
23:06:20 <elliott> it's the C99 standard
23:06:22 <elliott> but stil
23:06:24 <elliott> why can you sizeof that :D
23:06:25 <elliott> *still
23:06:28 <Lymia> elliott, dunno.
23:06:33 <elliott> a bit evil
23:06:42 -!- Ajfrabbitz has quit (Quit: *disappears in a puff of orange smoke*).
23:06:44 <Lymia> I guess an array could be something like this.
23:06:49 <Lymia> [length][contents]
23:06:57 <Lymia> And the returned pointer is in between them.
23:07:05 -!- TLUL has joined.
23:07:06 <impomatic> !bfjoust sexyghoul >(-)*9>(+)*9(>-)*6(>[++++++[-[-[-[-[-[--[-[-[-[-[-[(-)*122[-]]]]]]]]]]]]]])*20[-]
23:07:09 <EgoBot> Score for impomatic_sexyghoul: 33.0
23:07:29 <impomatic> !bfjoust sexyghoul >(-)*9>(+)*9(>---)*6(>[++++++[-[-[-[-[-[--[-[-[-[-[-[(-)*122[-]]]]]]]]]]]]]])*20[-]
23:07:34 <EgoBot> Score for impomatic_sexyghoul: 33.7
23:07:44 <elliott> It's the sexiest ghoul that's a computer program and not a ghoul!
23:07:50 <impomatic> !bfjoust sexyghoul >(-)*9>(+)*9(>)*6(>[++++++[-[-[-[-[-[--[-[-[-[-[-[(-)*122[-]]]]]]]]]]]]]])*20[-]
23:07:51 <Lymia> elliott, so.
23:07:54 <EgoBot> Score for impomatic_sexyghoul: 31.3
23:07:58 <Lymia> For basic mutations, I'm thinking something like this.
23:08:37 <Lymia> Modify instruction, encase in loop, encase in repeat, duplicate (creates two copies which can be modified independently), deencase, delete instruction, add instruction.
23:08:50 -!- Cheery has quit (Quit: Lost terminal).
23:09:10 -!- Phantom_Hoover has quit (Remote host closed the connection).
23:09:21 <Lymia> Oh well.
23:09:23 <elliott> Lymia: Sure. Can delete instruction delete a [ or ]?
23:09:25 <Lymia> Enough thinking about it, and more coding time.
23:09:31 <Lymia> elliott, [] counts as one instruction, I guess.
23:09:40 <elliott> Hmm.
23:09:42 <Lymia> Actually.
23:09:47 <Lymia> Why do we need deencase.
23:09:50 <Lymia> If it tries to delete a loop.
23:09:52 <Lymia> It removes the loop.
23:09:52 <elliott> You don't.
23:09:55 <Lymia> But not the contents.
23:10:00 <elliott> Lymia: Nor do you need encase.
23:10:12 <elliott> abc -> insert [ -> a[b]c (] is added automatically) -> move a -> [ab]c
23:10:20 <elliott> So you just need a "move instruction forwards/backwards".
23:10:28 <Lymia> Wait.
23:10:29 <impomatic> !bfjoust sexyghoul >(-)*9>(+)*9(>---)*6(>[++++++[-[-[-[-[-[--[-[-[-[-[-[(-)*122[-]]]]]]]]]]]]]])*21[-]
23:10:31 <Lymia> Does the intrepter do that?
23:10:34 <EgoBot> Score for impomatic_sexyghoul: 36.9
23:10:51 <Gregor> Hahahah BEST IDEA EVER: Metabfjoust: Submit a program that writes a bfjoust program, with all the other bfjoust programs on the last hill as input.
23:10:58 <Lymia> (I fail at spelling today^H^H^H^H^H)
23:10:59 <elliott> Gregor: X-D
23:11:05 <Lymia> Gregor, MetaFYB.
23:11:07 <Lymia> Do it.
23:11:17 <elliott> They're FYB programs that output BF Joust programs.
23:11:18 <Lymia> (Of course, you know what I would submit for it)
23:11:34 <Sgeo> Lymia, hmm?
23:11:45 <Lymia> elliott, while trying to kill eachother.
23:11:53 <impomatic> !bfjoust sexyghoul >(-)*9>(+)*9(>---)*6(>[++++++[-[-[-[-[-[--[-[-[-[-[-[(-)*120[-]]]]]]]]]]]]]])*21[-]
23:11:57 <EgoBot> Score for impomatic_sexyghoul: 36.6
23:12:10 <Gregor> Lymia: Remember, all the other "programs" are actually programs to write the programs, and you only get the last program they wrote as input.
23:12:25 <impomatic> !bfjoust sexyghoul >(-)*9>(+)*9(>---)*6(>[++++++[-[-[-[-[-[--[-[-[-[-[-[(-)*122[-]]]]]]]]]]]]]]---)*21[-]
23:12:27 <Lymia> Gregor, hmm...
23:12:31 <EgoBot> Score for impomatic_sexyghoul: 34.3
23:12:31 <Lymia> What language would this be written in?
23:12:39 <Gregor> Lymia: Idonno, C? :P
23:12:45 <Lymia> I mean, the program writers.
23:12:45 <elliott> JAVA
23:12:49 <impomatic> !bfjoust sexyghoul >(-)*9>(+)*9(>---)*6(>[++++++[-[-[-[-[-[--[-[-[-[-[-[(-)*122[-]]]]]]]]]]]]]])*21[-]
23:12:50 <elliott> Lymia: Brainfuck. DUH
23:12:52 <elliott> Or...
23:12:53 <Gregor> Lymia: ... yes, C.
23:12:53 <EgoBot> Score for impomatic_sexyghoul: 36.9
23:12:55 <elliott> INTERCAL.
23:12:56 <Lymia> Gregor, ah.
23:12:58 <Lymia> So.
23:12:59 <elliott> INTERCAL OUTPUTTING BRAINFUCK
23:13:04 <elliott> Gregor: Nonono
23:13:06 <elliott> Gregor: They have to be IRC-sized
23:13:07 <Lymia> What's to stop you from making an evolutional sim.
23:13:09 <elliott> Brainfuck is clearly the superior choice.
23:13:12 <Gregor> elliott: Hm, fair point.
23:13:16 <Gregor> Lymia: Nothing.
23:13:19 <impomatic> I think I'll stick to 36.9 for today :-)
23:13:20 <Lymia> i.e.
23:13:23 <Lymia> Take all programs as input.
23:13:29 <elliott> Gregor: Instead of having a . instruction, have instructions to output all the valid things.
23:13:31 <elliott> i.e.
23:13:34 <Lymia> Make an internal hill, and evolve them with eachother.
23:13:42 <Lymia> And output the top of that hill.
23:13:43 <elliott> .+
23:13:45 <elliott> .-
23:13:47 <elliott> ..
23:13:48 <elliott> .<
23:13:52 <elliott> .> .[ .]
23:13:54 <elliott> .( .) .% .*
23:14:02 <elliott> i.e., . is a compound instruction taking the instruction to output.
23:14:08 <elliott> That would avoid hideously complex "text generation" :P
23:14:21 <Gregor> *brain axplote*
23:14:21 <Lymia> MetaMetaBFJoust
23:14:31 <Lymia> Make programs that write programs that write BF Joust programs.
23:14:45 <Lymia> Or. Better idea.
23:14:53 <Lymia> FYBJoust
23:14:59 <Lymia> You must write a program that's a polygot of both.
23:15:12 <Gregor> That's ... actually not a bad idea.
23:15:48 <elliott> That's a terrible idea :P
23:15:55 <Lymia> !bfjoust dead [-
23:15:59 <EgoBot> Score for Lymia_dead: 5.1
23:16:01 <elliott> Meta^NBFJoust
23:16:04 <elliott> It takes N as an input.
23:16:18 <elliott> If N=0, it must act as a BF Joust program after reading that.
23:16:27 <elliott> If N=1, it must write a BF Joust program, given the current BF Joust hill as input.
23:16:36 <Gregor> Meta^NBFJoust = every time the hill is run, it's one level of meta further :P
23:16:55 <elliott> If N=2, it must write a program that (writes a BF Joust program, given the current BF Joust hill as input), given the current MetaBFJoust hill as input.
23:16:58 <elliott> So on, so forth.
23:17:00 <elliott> How is N decided?
23:17:03 <elliott> Simple!
23:17:08 <elliott> It runs N=0 to N=64 on all programs.
23:17:13 <Gregor> lol
23:17:21 <Lymia> :@+[joust code]*;fyb code
23:17:22 <Lymia> Of course.
23:17:29 <Lymia> FYBJoust wouldn't be hard.
23:17:29 <Lymia> :v
23:17:32 <elliott> And then pits the resulting BF Joust programs against the BF Joust hill, picks the top one,
23:17:34 <elliott> and adds it to the hill.
23:17:34 <elliott> FUCK YEHA
23:17:37 <elliott> *YEAH
23:18:01 <elliott> Gregor: Implemented it yet?
23:18:08 <Lymia> elliott, super-quines.
23:18:08 <Lymia> :v
23:18:41 <Gregor> elliott: I'm slightly happier with the Meta^1BFJoust idea :P
23:18:57 <elliott> Gregor: OK, fine. Meta^\inftyBFJoust.
23:19:06 <Lymia> elliott, now that's just silly.
23:19:21 <elliott> Gregor: Brainfuck programs must output programs that output programs that ... , given the current Meta^\inftyBFJoust hill, given the current Meta^\inftyBFJoust hill, given the current Meta^\inftyBFJoust hill, given the current Meta^\inftyBFJoust hill, given the current Meta^\inftyBFJoust hill.
23:19:28 <elliott> *...,
23:19:34 <Gregor> !supermetabfjoust i_will_solve_the_motherfucking_halting_problem ...
23:20:07 <elliott> :D
23:20:16 <elliott> <elliott> Gregor: Brainfuck programs must output programs that output programs that ... , given the current Meta^\inftyBFJoust hill, given the current Meta^\inftyBFJoust hill, given the current Meta^\inftyBFJoust hill, given the current Meta^\inftyBFJoust hill, given the current Meta^\inftyBFJoust hill.
23:20:18 <elliott> COME ON THIS IS THE BEST IDEA
23:20:31 <Gregor> If I make MetaBFJoust, will anybody actually play? It's actually not the worst idea ever :P
23:20:51 <elliott> Gregor: I'll play Meta^\inftyBFJoust. :p
23:20:56 <elliott> MetaBFJoust, MAYBE.
23:21:12 <elliott> Gregor: Make the programs be Scheme programs... Why? Because:
23:21:19 -!- MigoMipo has quit (Read error: Connection reset by peer).
23:21:23 <elliott> Gregor: (1) They can just output lists, basically, so it's easy for them to handle nesting, and for you to avoid getting invalid programs,
23:21:36 <elliott> Gregor: (2) "Easy" enough to sandbox, I think there are implementations designed for it, maybe Elk Scheme,
23:21:38 <Lymia> Gregor, sure.
23:21:41 <elliott> Gregor: (3) C is a fucking pain.
23:21:47 <Lymia> Eh
23:21:57 <Lymia> I'd have to learn Scheme then.
23:21:57 <Lymia> D=
23:21:59 <elliott> Lymia: Having to malloc when you're busy trying to write a program-writing program = lame :P
23:22:00 <Gregor> I'm willing to consider other host languages, but not Scheme :P
23:22:09 <elliott> Gregor: Got any better ideas? :p
23:22:17 <Gregor> JAVASCRIPT
23:22:18 <Lymia> Java?
23:22:21 <elliott> Gregor: No.
23:22:21 <Sgeo> Gregor, why not Scheme?
23:22:23 <elliott> Lymia: ... gtfo.
23:22:25 <elliott> gtfo and die.
23:22:26 <Lymia> elliott, :(
23:22:29 * Lymia does so
23:22:30 * Lymia is now dead
23:22:32 <Gregor> Sgeo: The number one problem with Scheme is that it's Scheme.
23:22:52 <elliott> Gregor hates languages with parentheses because they obsolete his job as a language-designer. :}
23:23:24 <elliott> Ha I can feel his anger
23:23:27 <elliott> His fury, his hatred
23:23:34 <elliott> Transmitted through his silence
23:23:36 <Lymia> Gregor, make it take Perl programs.
23:23:43 <elliott> Lymia: ...you are the worst.
23:23:43 <Lymia> Then we can fit it on IRC.
23:23:43 <Gregor> I could just make it anything #!/usr/bin/envable
23:23:48 <Gregor> And install tcc
23:23:57 <elliott> #!/bin/cat
23:23:59 <Lymia> elliott, what.
23:24:01 <elliott> (insert really good bf joust program)
23:24:03 <Lymia> I'm being practical.
23:24:05 <elliott> Lymia: You've suggested
23:24:06 <elliott> (1) Java
23:24:07 <elliott> (2) Perl
23:24:14 <Lymia> Perl is easy to fit on IRC!
23:24:16 <Gregor> elliott: That'd be step-one, yeah
23:24:19 <elliott> YOU SAID FUCKING JAVA
23:24:19 <Lymia> Java is easy to sandbox!
23:24:22 <elliott> NO IT'S NOT
23:24:28 <elliott> IT HAS JUST AS MUCH ACCESS AS ANY LANGUAGE
23:24:31 <elliott> YOU ARE BAD
23:24:32 <elliott> BAD PERSON
23:24:33 <elliott> BAD
23:24:36 <Lymia> It has the SecurityManager mechenism.
23:24:38 <Lymia> :V
23:24:43 * Lymia hides from elliott
23:24:48 <elliott> ...
23:24:54 <elliott> Gregor: Seriously, let's just kill this guy.
23:25:04 -!- Lymia has quit (Quit: *killed*).
23:25:06 <elliott> I am willing to put our language differences aside to unite against people who like Java in any way at all.
23:25:14 <elliott> lawl, I scared him away :P
23:25:25 -!- Lymia has joined.
23:25:27 <Lymia> Is it safe now?
23:25:41 <elliott> NO
23:25:44 <Gregor> Rarely
23:25:46 <elliott> I HAVE KNIFE
23:25:57 <Gregor> Let's just agree on LLVM bytecodes <trollface>
23:25:59 <Sgeo> In theory, Newspeak should be sandboxable. In practice, it's not there yet.
23:26:08 <elliott> xD
23:26:12 <elliott> Gregor: x86 asm
23:26:15 <elliott> make it all x86 asm
23:26:18 <elliott> so hardc0r3
23:26:19 <Sgeo> Hey, shutup's dead
23:26:21 <Gregor> elliott: ITYM machine code
23:26:22 <Sgeo> So is updog.
23:26:29 <Sgeo> What a crazy, crazy coincidence.
23:26:43 <elliott> I wish. It's machine code.
23:26:44 <Gregor> I honestly think the #1 problem with MetaBFJoust is we could never ever agree on the host language :P
23:26:45 <elliott> </oblig.>
23:27:02 <elliott> Gregor: Hackiki-style seems like the best idea to me. Just install Scheme 48. :p
23:27:04 <Lymia> Gregor, make it anything with a shebang or a native ELF executable.
23:27:07 <elliott> Gregor: Do it in HackEgo.
23:27:10 <elliott> Then we can install our own languages.
23:27:13 <elliott> Lymia: ELF executable? Naw.
23:27:14 <Sgeo> Make it run Parrot VM bytecode, so we could chose the language
23:27:18 <elliott> You can even do C, like:
23:27:21 <elliott> #!/bin/sh
23:27:32 <elliott> gcc -x c $(tail -n +3 $0) -o foo
23:27:34 <Gregor> Yeah, shebang is good I think.
23:27:35 <elliott> exec ./foo
23:27:37 <elliott> ...c code here...
23:27:38 <elliott> Or whatever.
23:27:43 <Sgeo> Didn't we fail to get Factor running on HackEgo?
23:27:46 <elliott> In fact, I'll make a rungcc now to do that in HackEgo.
23:27:49 <elliott> Gregor: Srsly, do it in HackEgo :P
23:27:55 <elliott> Moar flexible.
23:28:05 <elliott> `run pwd
23:28:10 <HackEgo> /tmp/hackenv.9639
23:28:13 <elliott> Hmm, is ./bin always in PATH?
23:28:15 <Gregor> elliott: Sure *shrugs*
23:28:23 <Gregor> `run echo $PATH
23:28:23 <elliott> e.g. will "#!/usr/bin/env foo" run bin/foo?
23:28:24 <HackEgo> /tmp/hackenv.9681/bin:/opt/python27/bin:/usr/bin:/bin
23:28:28 <elliott> Rite.
23:28:33 <elliott> (lawl @ python there)
23:28:40 <Gregor> elliott: YOUR FAULT
23:28:44 <Lymia> #!/bin/sh
23:28:48 <Lymia> *insert shar stuff here*
23:28:53 <Lymia> java -jar killmenow.jar
23:28:54 <Sgeo> Gregor, why do you prefer Mercurial?
23:29:12 <Lymia> Gregor, how do you make sure that the program only accesses the BF Joust hill.
23:29:15 <elliott> Gregor: Link me to the !c interpreter thing?
23:29:17 <elliott> In HackEgo.
23:29:19 <Gregor> Sgeo: Because git is terrible.
23:29:21 <Lymia> And dosn't, say, use /etc/passwd as input.
23:29:26 <Sgeo> Gregor, how so?
23:29:28 <elliott> Lymia: What?
23:29:58 <Gregor> Sgeo: Its design and user interface are needlessly complicated.
23:30:00 <Lymia> elliott, how do you make sure that the MetaBFJoust program dosn't take things it's not supposed to as input.
23:30:13 <elliott> Gregor: git's design is actually stupidly over-simple.
23:30:18 <Sgeo> Gregor, I'm not using Git direcctly. I found a nice GUI
23:30:21 <Lymia> Gregor, are the programs allowed to store persistant state, or do they only take the hill programs as input.
23:30:23 <elliott> Gregor: (About as stupidly-simple as Mercurial's)
23:30:31 <Gregor> GOOD FEKKING LORD TOO MUCH STUFF
23:30:51 <elliott> `run echo '#!/bin/sh' >bin/rungcc; echo 'name=$(mktemp)' >>bin/rungcc; echo 'gcc -x c -O2 -std=gnu99 "$(tail -n +1 "$0")" -o "$name"' >>bin/rungcc
23:30:53 <Gregor> elliott: I don't mean the repository design, I mean the design behind how the command is used. I guess that's UI, but eh :P
23:30:58 <Lymia> Also.
23:30:59 -!- impomatic has quit (Quit: ChatZilla 0.9.86 [Firefox 3.5.16/20101130074636]).
23:30:59 <HackEgo> No output.
23:31:03 <Gregor> Sgeo: Then you don't like git, you like that UI.
23:31:09 <Gregor> Lymia: They could store persistent state.
23:31:20 <elliott> `run echo 'shift' >> bin/rungcc
23:31:22 <HackEgo> No output.
23:31:24 <Sgeo> Gregor, ok, but I have no reason to hate it. Your only reason so far is bad UI
23:31:26 <elliott> Gregor: No persistent state, dude :P
23:31:30 <elliott> That leaves BF out.
23:31:45 <Gregor> elliott: That doesn't leave BF out, it just doesn't help BF :P
23:31:46 <elliott> `run echo 'exec "$name" "$@"; st=$?' >>bin/rungcc
23:31:47 <HackEgo> No output.
23:31:48 <Lymia> elliott, you could store the tape as persistant state.
23:31:59 <elliott> `run echo 'rm -f "$name" 2>/dev/null' >>bin/rungcc
23:32:01 <HackEgo> No output.
23:32:03 <elliott> Lymia: *persistent
23:32:08 <elliott> Gregor: I suggest no persistent state :P
23:32:13 <elliott> `run echo 'exit $?' >>bin/rungcc
23:32:14 -!- augur has quit (Remote host closed the connection).
23:32:14 <HackEgo> No output.
23:32:15 <elliott> `url bin/rungcc
23:32:17 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/rungcc
23:32:23 <Lymia> echo hi > /etc/passwd
23:32:24 <Gregor> elliott: lurn2exec
23:32:25 <elliott> `run chmod +x bin/rungcc
23:32:27 <HackEgo> No output.
23:32:30 <elliott> Gregor: Oops :P
23:32:39 <Lymia> cat /etc/passwd
23:32:40 <elliott> `run sed -i 's/exec //' bin/rungcc
23:32:41 <HackEgo> No output.
23:32:46 <elliott> Lymia: ITT: permissions
23:32:51 <Lymia> Heh.
23:33:04 <elliott> `run echo '#!/usr/bin/env rungcc' >test; echo 'int main() { return 42; }' >>test
23:33:05 <HackEgo> No output.
23:33:07 <elliott> `run chmod +x test
23:33:08 <HackEgo> No output.
23:33:09 <elliott> `run ./test
23:33:14 <elliott> C'MON DUDE
23:33:15 <Lymia> `run echo $USER
23:33:16 <HackEgo> No output.
23:33:16 <elliott> WE'RE ALL COUNTING ON YOU
23:33:18 <elliott> `run ./test; echo $?
23:33:19 <HackEgo> No output.
23:33:20 <HackEgo> 0
23:33:21 <elliott> what
23:33:23 <elliott> what
23:33:24 <elliott> oh
23:33:26 <elliott> aahahaha
23:33:27 <elliott> i fail
23:33:28 <Lymia> `run env >> env
23:33:29 <HackEgo> No output.
23:33:31 <Lymia> `url env
23:33:32 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/env
23:33:34 <elliott> `run sed -i 's/exit $?/exit $st/' bin/rungcc
23:33:36 <HackEgo> No output.
23:33:39 <elliott> `run ./test; echo $?
23:33:41 <HackEgo> 127
23:33:46 <elliott> :what:
23:33:55 <elliott> oh lol
23:33:56 <elliott> ok edit time
23:34:03 <Gregor> I'm unwilling to read all this shit :P
23:34:05 <elliott> `run ./test 2>&1; echo $?
23:34:06 <HackEgo> /usr/bin/gcc: /usr/lib/plash/lib/libc.so.6: version `GLIBC_2.11' not found (required by /usr/bin/gcc) \ /tmp/tmp.GVNllRRSA1: error while loading shared libraries: /tmp/tmp.GVNllRRSA1: file too short \ 127
23:34:08 <Gregor> TOO MUCH STUFF
23:34:08 <Lymia> `run UNDO=rm -rf /*
23:34:09 <HackEgo> No output.
23:34:10 <elliott> WHAT
23:34:11 <elliott> THE
23:34:11 <elliott> FUCK
23:34:13 <elliott> at that
23:34:16 <elliott> Lymia: what
23:34:23 <elliott> "file too short" xD
23:34:28 <elliott> `run gcc
23:34:29 <HackEgo> No output.
23:34:30 <elliott> `run gcc 2>&1
23:34:31 <HackEgo> /usr/bin/gcc: /usr/lib/plash/lib/libc.so.6: version `GLIBC_2.11' not found (required by /usr/bin/gcc)
23:34:36 <Lymia> `run rm -rf /home/hackbot/*
23:34:36 <elliott> Gregor: Dude, gcc is broken.
23:34:37 <HackEgo> No output.
23:35:05 <Lymia> `run rm -rf /tmp/* > bluhbluh
23:35:09 <Lymia> `url bluhbluh
23:35:15 <HackEgo> No output.
23:35:15 <Sgeo> Gregor, if you work, then switch over to a different branch or commit in Hg, but working space isn't clean, does Hg warn you?
23:35:17 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bluhbluh
23:35:20 <Sgeo> Git doesn't seem to
23:35:50 <elliott> `fetch http://sprunge.us/OfHY
23:35:53 <HackEgo> 2011-02-04 23:54:07 URL:http://sprunge.us/OfHY [153] -> "OfHY" [1]
23:35:58 <elliott> `run mv OfHY bin/rungcc; chmod +x bin/rungcc
23:35:59 <HackEgo> No output.
23:36:03 <elliott> `run ./test
23:36:04 <HackEgo> No output.
23:36:06 <elliott> `run ./test 2>&1
23:36:07 <HackEgo> /usr/bin/gcc: /usr/lib/plash/lib/libc.so.6: version `GLIBC_2.11' not found (required by /usr/bin/gcc)
23:36:09 <elliott> Gregor: plz 2 be fixing gcc
23:36:33 <Lymia> `run ps aux > ps
23:36:35 <HackEgo> No output.
23:36:36 <Lymia> `url ps
23:36:38 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/ps
23:36:48 -!- HackEgo has quit (Remote host closed the connection).
23:36:49 -!- EgoBot has quit (Remote host closed the connection).
23:36:51 <elliott> What the fuck are you doing, Lymia?
23:36:58 <Lymia> Nothing.
23:37:00 <elliott> What the fuck are you doing, Gregor :P
23:37:03 -!- EgoBot has joined.
23:37:09 <elliott> I LIKE HOW APACHE IS ON THAT LIST
23:37:11 <Gregor> Taking down HackEgo for a tick
23:37:15 <elliott> Why :P
23:37:18 <elliott> To fix gcc?
23:37:22 <Gregor> Yes
23:37:28 <elliott> 0 30204 0.0 3.6 116792 38144 ? S Jan28 0:01 spamd child
23:37:29 <elliott> GREGOR IS SPAMMER
23:37:45 <Lymia> `run wget whatismyip.org -O - > ip
23:37:49 <Lymia> `url ip
23:37:57 <Lymia> Wait.
23:37:58 <Lymia> >.>
23:38:13 -!- impomatic has joined.
23:38:57 <impomatic> I get a 403 forbidden when I try to access the bfjoust report :-(
23:38:59 <Lymia> 5000 8147 0.0 0.1 45960 1440 ? S 23:13 0:00 su - egobot
23:38:59 <Lymia> ?
23:39:09 <elliott> EGOBOT RUNS AS ROOT OBVS
23:39:38 <Lymia> So.
23:39:39 <impomatic> !bfjoust sexyghoul >(-)*9>(+)*9(>---)*6(>[++++++[-[-[-[-[-[--[-[-[-[-[-[(-)*122[-]]]]]]]]]]]]]])*21[-]
23:39:42 <Lymia> Why does Gregor have spamd.
23:40:04 <EgoBot> Score for impomatic_sexyghoul: 36.9
23:40:06 <impomatic> !bfjoust sexyghoul >(-)*9>(+)*9(>---)*6(>[+[+[+[+[+[+[(-)*7[-[-[-[-[-[(-)*122[-]]]]]]]]]]]]]])*21[-]
23:40:14 <EgoBot> Score for impomatic_sexyghoul: 37.4
23:40:39 <elliott> Lymia: it's an anti-spam daemon stoopid
23:40:50 <Lymia> I just googled it.
23:40:50 <Lymia> =p
23:41:06 <Gregor> It's spam-ass-ass-in
23:42:03 <elliott> Ass in, ass out.
23:46:20 <Gregor> http://www.nationformarriage.org/atf/cf/%7B39D8B5C1-F9FE-48C0-ABE6-1029BA77854C%7D/JewishEnglish.pdf LOOOOOOOOOOOOOOL. "Why Marriage Matters: SEVEN SCIENTIFIC REASONS". First words under that header? "In Jewish tradition,"
23:46:28 <Gregor> Yes, you're well on your way to a scientific reason now :P
23:46:45 <elliott> Gregor: HOW CAN YOU SAY THAT AS A JEW
23:47:16 <elliott> [[
23:47:16 <elliott> “How will my same-sex marriage hurt your marriage?” Same-sex marriage advocates
23:47:16 <elliott> want to force everyone to dramatically and permanently alter our definition of marriage
23:47:16 <elliott> and family.]]
23:47:18 <elliott> What X-D
23:47:42 <elliott> [[
23:47:42 <elliott> “Is same-sex marriage like interracial marriage?” Laws against interracial marriage were about keeping
23:47:42 <elliott> two races apart, so that one race could oppress the other, and that is wrong. Marriage is about bringing male
23:47:42 <elliott> and female together, so that children have mothers and fathers, and so that women aren’t stuck with the
23:47:43 <elliott> enormous, unfair burdens of parenting alone--- and that is good.]]
23:47:45 <elliott> ??????????????/
23:47:47 <elliott> Gregor this makes less than no sense.
23:48:01 <elliott> [[“Is polygamy next?” Jonathan Yarbrough, part of the first couple to get a same-sex marriage in
23:48:01 <elliott> Provincetown, Mass, said, “I think it’s possible to love more than one person and have more than one
23:48:01 <elliott> partner. . . . In our case, it is. We have an open marriage.” Once you rip a ship off its mooring who knows
23:48:01 <elliott> where it will drift next?]]
23:48:02 <elliott> ...your point?
23:48:05 <Gregor> NOM is so good :P
23:48:23 <elliott> well that was the stupidest.
23:48:24 <impomatic> Gregor: is something wrong with http://codu.org/eso/bfjoust/report.txt ? "Forbidden - You don't have permission to access /eso/bfjoust/report.txt on this server."
23:48:40 -!- elliott has left (?).
23:48:41 -!- poiuy_qwert has joined.
23:48:43 -!- elliott has joined.
23:49:01 <Gregor> impomatic: Because I broke egobot instead of hackego LOL
23:49:33 <Gregor> impomatic: Fixt
23:49:51 <impomatic> Thanks :-)
23:49:51 <elliott> lol, remember when Gregor was incompetent
23:49:53 <elliott> ME TOO
23:49:56 <elliott> <Gregor> Fuck you.
23:50:11 <Lymia> I recall seeing something to that effect in a FYB source file.
23:50:29 <elliott> What, calling Gregor incompetent? :P
23:50:49 <Lymia> <Gregor> Fuck you
23:50:56 <Gregor> Pfff, sources I wrote six years ago :P
23:53:28 -!- cheater00 has joined.
23:53:57 <elliott> Gregor: FIXED GCC YET
23:54:14 -!- zzo38 has joined.
23:54:31 <zzo38> I think C99 has a few bad things
23:54:52 <Gregor> elliott: Be patient, I have to reinit the chroot.
23:55:05 <elliott> it was joke.
23:55:10 <elliott> Hmm, NetHack's colours suck on a light background.
23:55:23 <zzo38> I do not think C should have complex numbers.
23:55:56 <Lymia> Why not?
23:56:40 -!- cheater99 has quit (Ping timeout: 240 seconds).
23:57:22 <zzo38> I think it is something which does not belong in C.
23:57:47 <Lymia> It isn't harming anything if you ask me.
23:58:15 <impomatic> !bfjoust sexyghoul >(-)*9>(+)*9(>---)*6(>([+)*6[(-)*7([-)*5[(-)*122[-(])*14)*21[-]
23:58:19 <elliott> <Lymia> [expecting coherent, logical reasons from zzo38]
23:58:26 <EgoBot> Score for impomatic_sexyghoul: 37.4
23:59:03 <impomatic> !bfjoust sexyghoul >(-)*9>(+)*9(>---)*6(>([+)*6[(-)*7([-)*5[(-)*122[-(])*14(-)*9)*21[-]
23:59:08 <EgoBot> Score for impomatic_sexyghoul: 35.4
23:59:51 <impomatic> !bfjoust sexyghoul >(-)*9>(+)*9(>---)*6(>([+)*6[(-)*7([-)*5[(-)*122[-(])*14)*21[-]
←2011-02-03 2011-02-04 2011-02-05→ ↑2011 ↑all