←2012-12-14 2012-12-15 2012-12-16→ ↑2012 ↑all
00:00:06 <Vorpal> btw, it seems then didn't clean up the options properly
00:00:36 <Vorpal> the "Enable DirectWrite for improved font smoothing and kerning" option is still there
00:00:47 <Vorpal> and I'm pretty sure that makes no sense on Linux
00:00:58 <shachaf> elliott: You should go to London!
00:01:04 <elliott> why
00:01:05 <Vorpal> also who thought that rendering was improved on Windows? It was terrible
00:01:20 <Bike> elliott: i dunno, it's kind of a refreshing change from "whatever british guy killed everyone there first"
00:01:43 <Vorpal> btw, another advantage of linux: PS3 controller working out of box
00:01:44 <Bike> we could ask the native antarcticans what they call it.
00:02:28 <Taneb> "Skwaaaaaark Lake"
00:02:46 <FireFly> Is the size of the subset of Hexamians in this channel only two?
00:02:55 <shachaf> elliott: Can you write me a Core parser?
00:02:58 <shachaf> Thanks.
00:03:10 <Taneb> FireFly, yeah, but we're loud
00:03:13 <Bike> Taneb: i don't think penguins have been within a hundred miles of that place
00:03:42 <Taneb> Bike, who said I was talking about penguins
00:03:49 <Taneb> I was talking about native Antarcticans
00:04:02 <Bike> what is making that sound
00:04:03 <Taneb> Also known as Antarctic Indians
00:04:10 <Bike> describe their physiological characteristics
00:04:19 <elliott> antarctic antarcticans
00:04:23 <Taneb> I dunno, they've got noses?
00:04:35 <elliott> whoa. me too.
00:04:37 -!- WeThePeople has quit (Quit: Leaving).
00:05:18 <elliott> Gregor doesn't tho
00:05:25 <elliott> must not be from antarctica
00:05:29 <FireFly> But he has hats
00:05:41 <FireFly> Valve is probably envious
00:05:50 <Taneb> I got compared to Colonel Gadaffi today
00:06:04 <FireFly> In a favourable way?
00:06:11 <Bike> in that nobody knows how to transliterate your name?
00:06:32 <elliott> Quadafvyx
00:06:44 <FireFly> Taneb <=> Gadaffi
00:07:07 <c00kiemon5ter> damn, I just read about the gunfires today :S
00:07:17 <Taneb> In that I'm brotherly leader and guide of the revolution, presumably
00:07:50 -!- Nisstyre has quit (Ping timeout: 244 seconds).
00:08:26 <Bike> elliott: http://upload.wikimedia.org/math/3/c/6/3c642f3123a34a2b7372d0ff0a9e57c4.png
00:08:48 * elliott has seen it
00:08:49 <elliott> I love it
00:08:54 <elliott> apparently not all paths are valid though :(
00:09:04 <Taneb> And my name is annoyingly easy to transliterate, annoyingly hard to capitalise correctly
00:09:06 <elliott> so no Khdhdhaffy
00:09:14 <elliott> Or Qzzafi
00:09:18 <Bike> :(
00:09:20 <monqy> i really like that diagram
00:09:46 <Bike> i don't understand what would possess someone to think "dhdh" is informative
00:10:17 <monqy> El Qadhdhaffy
00:10:59 <elliott> monqy: you can't skip the first name if you include the el........
00:11:03 -!- Nisstyre has joined.
00:11:07 <Bike> «The Latin transcription of his surname on the passport read "Al-Gathafi"» oh come on
00:11:15 <Bike> elliott: no, he was using it as part of the surname
00:11:20 <elliott> Mou'mmar ElQzzafy
00:12:33 <monqy> Momar Kadafy
00:12:37 <kmc> http://stackoverflow.com/questions/5365283/regular-expression-to-search-for-gadaffi
00:13:14 <Bike> "\b[KGQ]h?add?h?af?fi\b" wow, managed to make it even less readable!
00:13:46 <Bike> ha, i like the second answer.
00:14:04 <monqy> I think you're over complicating things here. The correct regex is as simple as:
00:14:07 <monqy> \u0627\u0644\u0642\u0630\u0627\u0641\u064a
00:14:10 <monqy> It matches the concatenation of the seven Arabic Unicode code points that forms the word القذافي (i.e. Gadaffi).
00:14:50 <Bike> oh wow this guy is suggesting using a phonetics engine
00:15:08 <elliott> send it thru text to speech, compare file for similarity against premade recording
00:15:08 <Bike> "A few tweaks, and lets say some cyrillic transliteration, and you'll have a fairly robust solution."
00:15:35 <elliott> thank's
00:15:47 <Bike> "(?-xism:(?:G(?:a(?:d(?:d(?:af[iy]|hafi)|af(?:f?i|y)|hafi)|thafi)|h(?:ad(?:daf[iy]|af?fi)|eddafi))|K(?:a(?:d(?:['dh]a|af?)|zza)fi|had(?:af?fy|dafi))|Q(?:a(?:d(?:(?:(?:hd)?|t)h|d)?|th)|u(?:at|d)h)afi))" this is gold kmc
00:16:48 <monqy> but will it match g'dafey. i'm sure someone's used that.
00:17:41 <Taneb> It could get Aussies greeting people called Fiona
00:18:44 <kmc> haha
00:18:57 <hagb4rd> <elliott>so no Khdhdhaffy <- isn't the a after Q|K|G|H described as mandatotry by that diagram?
00:19:34 <Taneb> Goodnight
00:19:35 -!- Taneb has quit (Quit: Leaving).
00:20:26 <hagb4rd> which would make it a bad example t demonstrate that not all paths are valid)
00:20:52 <elliott> well I was cheating
00:21:01 <elliott> but the omission of the a was a mistake
00:21:02 <hagb4rd> ok
00:21:18 <elliott> I humbly submit that Khadhdhaffy is still ridiculous
00:21:44 <Bike> whoa i just realized. that comic with gaddafi and daffy had daffy because the author pronounced their names the same
00:22:32 <Bike> thank you #esoteric
00:22:39 <elliott> np Bike
00:22:50 <elliott> khadhdhaffy duck
00:33:44 <Vorpal> night
00:44:26 <kmc> Bike: i wanna see a FSM of that
00:44:34 <kmc> ok i guess it would be pretty boring because no repetition
00:44:41 <kmc> it would look like the curly braces image basically
00:45:32 <kmc> ugh now i have to hex edit two versions of this kernel module
00:46:23 <elliott> what are you even doing
00:46:50 <Bike> i thought you meant flying spaghetti monster for a second and wondered what that had to do with ol' g'dafey
00:48:16 <Bike> also the pcre syntax for noncapturing groups is a bit annoying, why haven't i seen this before...
00:55:37 <Sgeo> Bike, the whole (?: thing?
00:55:54 <Bike> yes.
00:56:10 <Bike> "The name is misleading, because PCRE and Perl each have capabilities not shared by the other." fuck, why do i ever learn everything? it always sucks.
00:56:18 <Bike> ever learn anything*
00:57:14 <elliott> Bike: see axiom #1
00:57:23 <monqy> sorta-p sorta-c in-the-spirit-of-re
00:57:27 <elliott> Bike: btw use RE2 or something
00:57:31 <elliott> it's C++ but what can you do
00:57:57 <Bike> oh shit re2 actually uses the non-stupid dfa implementation, does it
00:57:58 <Bike> radical
00:58:13 <elliott> yes it's Rob Pike Ideology: The Regexp Implementation
00:58:23 <monqy> is there a stupid dfa implementation
00:58:25 <elliott> same guy who wrote the famous paper about it
00:58:28 <Bike> why the fuck do most regex implementations use backtracking, anyway
00:58:39 <elliott> monqy: there's a stupid backtracking implementation
00:58:40 <Bike> monqy: "the non-stupid (dfa) implementation"
00:58:58 <monqy> mmmm
00:59:25 <monqy> so what class of languages can you express
00:59:27 <elliott> Bike: note that RE2's non-capturing group syntax is the same
00:59:29 <elliott> python uses it too in fact
00:59:37 <Bike> yeah i know
00:59:48 <Bike> it's just a bit annoying to look at
00:59:51 <elliott> monqy: just regular languages afaik
00:59:53 <elliott> I mean it's a DFA
00:59:58 <monqy> yeah
01:00:05 <monqy> i was just about to say: dfa screams regular but you never know with "regexp"!!!!
01:00:07 <elliott> just has a non-stupid syntax
01:00:10 <elliott> unlike e.g. unix regexps
01:00:32 <Bike> does it not have backslashes everywhere?
01:00:34 <monqy> maybe it uses dfas for some things and other things for other things????? a mystery
01:01:06 <elliott> Bike: are you saying there's something wrong with \(\[1-2\]\{2\}\)????
01:01:18 <Bike> yeah that's what i really don't get, you could use the dfa for regular expressions and then fall back to the backtracking if you're trying to parse cfgs with line noise for some damned reason, but nope
01:01:28 <elliott> ffinland
01:01:31 <Bike> i had a friend whose server crashed because his http regex hit a bad case :|
01:01:38 <monqy> :')
01:02:09 <elliott> Bike: a good reason not to write your own http server
01:02:13 <kmc> elliott: the usb-ethernet adapter that came with my laptop is too new for wheezy's kernel
01:02:14 <Bike> well not http
01:02:21 <kmc> specifically the kernel on this livecd
01:02:23 <Bike> it was just to look for text that looked like a web link
01:02:26 <elliott> kmc: nixos time
01:02:34 <Bike> and... somehow this resulted in destroying his vm
01:02:35 <kmc> but it has the same chip and everything as some other known devices
01:02:43 <elliott> mmmm i should switch esolangs.org over to a haskell webserver
01:02:46 <elliott> so i can feel smug as hell
01:02:54 <kmc> so you can just hexedit the .ko file and it works :D
01:02:57 <elliott> though I don't think any support fastcgi
01:02:57 <Bike> apache, the haskell port
01:03:08 <elliott> *thankfully* it's already not on apache
01:03:14 <monqy> esowiki to haskell wiki softwares
01:03:16 <elliott> couldn't pay me to administrate apache
01:03:23 <elliott> (currently it uses nginx)
01:04:35 <monqy> has anyone made web servers or wiki softwares in agda yet or has it just been fooling around with javascripts.................
01:04:53 <Bike> oh my, wikipedia has "Comparison of regular expression engines". I should check out the APL implementation
01:05:23 <elliott> monqy: someone made a web framework in agda iirc
01:05:28 <Bike> ok, this entry says it doesn't have a + quantifier... but does have backreferences.
01:05:40 <monqy> elliott: good
01:05:44 <monqy> elliott: (is it good)
01:06:13 <monqy> Bike: does it say per-engine what class of languages it can express.....since i doubt all of them are actually regular
01:06:14 <Bike> agda on... i can't think of a transport obscure enough.
01:06:37 <Bike> monqy: no, but re2 is the only one listed that explicitly doesn't support backreferences.
01:06:49 <monqy> mmm
01:07:01 <Bike> why the hell does Qt have its own... agh
01:07:32 <monqy> good question
01:08:04 <Bike> "embedded code" am i wrong to think you need something more than a regex at the point you want this in your regex?
01:08:11 <kmc> Bike: well i can think of some strange kinds of trains at least
01:08:22 <Bike> trains are good
01:08:23 <kmc> Bike: http://en.wikipedia.org/wiki/Schienenzeppelin and http://en.wikipedia.org/wiki/Meigs_Elevated_Railway
01:08:26 <Bike> do any of them start with "a"
01:08:38 <kmc> also http://en.wikipedia.org/wiki/Hovertrain
01:08:38 <monqy> this comparison article is really bad
01:08:39 <Bike> "agda on armored trains" sounds like it should be Super Secure
01:08:53 <kmc> agda on atomic trains
01:09:10 <Bike> monqy: the re2 article has "PCRE can use a HUGE recursive stack and have exponential runtime on certain patterns", with the caps just like that. maybe wikipedia isn't good at regexes
01:10:17 <monqy> gosh
01:10:53 <Bike> I wonder why so few of these support unicode properties. i woulda thought they'd be pretty useful and not that hard.
01:11:19 <elliott> Bike: there is one cute of embedded perl in regexps
01:11:22 <monqy> unicode is a great unsolved problem
01:11:33 <Bike> elliott: what's a cute
01:12:57 <elliott> Bike: unit of cuteness
01:13:01 <elliott> monqy: like finding corridors?
01:13:39 <monqy> yes
01:13:46 <Bike> i didn't know anything perl-related could be "cute".
01:13:53 <monqy> perl is cute
01:14:10 * Fiora cuteness?
01:14:24 <Bike> 7 antiperls, fiora
01:15:08 <Fiora> antiperls?
01:16:34 <hagb4rd> i belive that something they use to enhance laundry detergent
01:18:40 <elliott> Bike: monqy: http://perl.plover.com/Rx/paper/
01:18:44 <elliott> that's the cute I was thinking of
01:19:13 <Bike> regex... debugger
01:19:22 <Fiora> um... adorable, I guess?
01:20:34 <monqy> yes
01:21:05 <Bike> "The regex engine was run in one process, and invoked the instruments. The Tk interface was in a child process, connected to the parent by a pair of pipes." I don't like where this is going.
01:21:18 <elliott> it's going to circa 2000
01:21:46 <Bike> I don't like 2000, then.
01:22:49 <Bike> «It should be clear that the technique I used for automatically instrumenting regexes did not work correctly in all cases. For example, [xy] would have been transformed to [x(?{pause})y(?{pause})] which is clearly a disaster.»
01:23:49 <Phantom_Hoover> bike are you french
01:24:34 <Bike> are you luxombourgish?
01:25:07 <Bike> «The print_bytecode function would ignore its actual argument, which was useless. Instead, it would grovel recursively over the Perl op tree until it found the place from which it had been called. Then it would hunt up the match node, extract the B-regex from it, and dump that.» elliott......
01:25:30 <elliott> it's beautiful
01:25:39 <Phantom_Hoover> you're from luxembourgh?
01:25:57 <Bike> yeah sure but come on phantom_hoover look at this shit
01:26:01 <elliott> luxembourgh isn't even a place Phantom_Hoover
01:26:05 <Bike> «This was amusing and educational. »
01:26:12 <Phantom_Hoover> luxemburgh
01:26:29 <elliott> apparently Bike is from the UK
01:26:35 <elliott> unless geoip is lying to me
01:26:51 <Bike> that's probably the most amusing geoip for me i've seen yet
01:26:55 <Phantom_Hoover> maybe he moved
01:27:08 <elliott> in fact it seems to be looking up my geoip
01:27:11 <elliott> and ignoring Bike's
01:27:15 <Bike> genius
01:27:18 <Phantom_Hoover> we all know nobody actually lives in luxembourg except for tax reasons
01:27:45 <elliott> isn't qwest.net canadian
01:27:47 <elliott> maybe it's us instead
01:28:19 <Bike> i thought we agreed that we "weren't" "stalking me"
01:28:28 <elliott> it's not my fault you didn't set up a cloak!!!
01:28:33 <Sgeo> elliott, monqy Phantom_Hoover Fiora
01:28:36 <elliott> hi
01:28:44 <Bike> «Other kinds of nodes have other information associated with them. For example, the {m,n} operator is represented by a CURLY node, and with m and n stored in the following four bytes as two-byte signed integers. (I don't know why they're signed, but the result is that arguments larger than 32767 cannot be represented, and that a{3,} is actually identical with a{3,32767}.)»
01:28:45 <Phantom_Hoover> oh no!
01:28:55 <Phantom_Hoover> monqy, what did Fiora ever do to you to deserve Phantom_Hoovering
01:29:47 <Phantom_Hoover> wizardy herbert!
01:30:07 <Bike> «Character classes (node type ANYOF) are followed by a 256-bit bit mask; bits are set if the corresponding character is in the class.»
01:35:30 <ion> http://www.guardian.co.uk/law/2012/dec/13/cia-tortured-sodomised-terror-suspect
01:37:19 <Phantom_Hoover> ion we have talked about just posting a link and not saying anything
01:37:21 <Phantom_Hoover> it's sort of weird
01:37:54 <Bike> obviously ion meant it as something worse even than all this garbage i've been pasting.
01:38:04 -!- nooga has quit (Ping timeout: 252 seconds).
01:38:11 -!- pikhq has quit (*.net *.split).
01:38:11 -!- zzo38 has quit (*.net *.split).
01:38:11 -!- HackEgo has quit (*.net *.split).
01:38:11 -!- fungot has quit (*.net *.split).
01:38:11 -!- lightquake has quit (*.net *.split).
01:38:11 -!- FreeFull has quit (*.net *.split).
01:38:11 -!- Frooxius has quit (*.net *.split).
01:38:11 -!- sivoais has quit (*.net *.split).
01:38:12 -!- rodgort` has quit (*.net *.split).
01:38:12 -!- hogeyui has quit (*.net *.split).
01:38:12 -!- shachaf has quit (*.net *.split).
01:38:12 -!- kmc has quit (*.net *.split).
01:38:12 -!- c00kiemon5ter has quit (*.net *.split).
01:38:12 -!- boily has quit (*.net *.split).
01:38:12 -!- kallisti has quit (*.net *.split).
01:38:12 -!- TodPunk has quit (*.net *.split).
01:38:12 -!- sirdancealot7 has quit (*.net *.split).
01:38:13 -!- jix has quit (*.net *.split).
01:38:13 -!- comex has quit (*.net *.split).
01:38:13 -!- olsner has quit (*.net *.split).
01:38:13 -!- SimonRC has quit (*.net *.split).
01:38:14 -!- lifthrasiir has quit (*.net *.split).
01:38:14 -!- aloril has quit (*.net *.split).
01:38:14 -!- mtve has quit (*.net *.split).
01:38:14 -!- ion has quit (*.net *.split).
01:38:14 -!- Vorpal has quit (*.net *.split).
01:38:14 -!- constant has quit (*.net *.split).
01:38:14 -!- jdiez has quit (*.net *.split).
01:38:14 -!- clog has quit (*.net *.split).
01:38:14 -!- lahwran has quit (*.net *.split).
01:38:15 -!- sebbu has quit (*.net *.split).
01:38:15 -!- asiekierka has quit (*.net *.split).
01:38:15 -!- Lumpio- has quit (*.net *.split).
01:38:15 -!- keb has quit (*.net *.split).
01:38:15 -!- MDude has quit (*.net *.split).
01:38:15 -!- hagb4rd has quit (*.net *.split).
01:38:17 -!- carado has quit (*.net *.split).
01:38:17 -!- myndzi has quit (*.net *.split).
01:38:17 -!- heroux has quit (*.net *.split).
01:38:17 -!- ineiros_ has quit (*.net *.split).
01:38:17 -!- fizzie has quit (*.net *.split).
01:38:17 -!- lambdabot has quit (*.net *.split).
01:38:17 -!- FireFly has quit (*.net *.split).
01:38:17 -!- oklopol has quit (*.net *.split).
01:38:17 -!- mroman has quit (*.net *.split).
01:38:18 -!- Sanky has quit (*.net *.split).
01:38:18 -!- Fiora has quit (*.net *.split).
01:38:18 -!- Bike has quit (*.net *.split).
01:38:18 -!- monqy has quit (*.net *.split).
01:38:18 -!- oklofok has quit (*.net *.split).
01:38:20 -!- copumpkin has quit (*.net *.split).
01:38:20 -!- augur has quit (*.net *.split).
01:38:20 -!- glogbackup has quit (*.net *.split).
01:38:20 -!- quintopia has quit (*.net *.split).
01:38:20 -!- EgoBot has quit (*.net *.split).
01:38:20 -!- nortti has quit (*.net *.split).
01:38:20 -!- Phantom_Hoover has quit (*.net *.split).
01:38:20 -!- Deewiant has quit (*.net *.split).
01:38:22 -!- yiyus has quit (*.net *.split).
01:38:22 -!- Nisstyre has quit (*.net *.split).
01:38:22 -!- Sgeo has quit (*.net *.split).
01:38:22 -!- Gregor has quit (*.net *.split).
01:38:22 -!- coppro has quit (*.net *.split).
01:38:22 -!- atehwa has quit (*.net *.split).
01:38:22 -!- chickenzilla has quit (*.net *.split).
01:38:22 -!- Yonkie has quit (*.net *.split).
01:38:22 -!- iamcal_ has quit (*.net *.split).
01:38:23 -!- elliott has quit (*.net *.split).
01:38:23 -!- ssue has quit (*.net *.split).
01:38:24 -!- Jafet has quit (*.net *.split).
01:38:24 -!- Cryovat has quit (*.net *.split).
01:38:26 -!- Gracenotes has quit (*.net *.split).
01:38:26 -!- ChanServ has quit (*.net *.split).
01:55:01 -!- Cryovat has joined.
01:55:01 -!- yiyus has joined.
01:55:01 -!- chickenzilla has joined.
01:55:01 -!- Gracenotes has joined.
01:55:01 -!- Deewiant has joined.
01:55:01 -!- atehwa has joined.
01:55:01 -!- Sanky has joined.
01:55:01 -!- Fiora has joined.
01:55:01 -!- EgoBot has joined.
01:55:01 -!- quintopia has joined.
01:55:01 -!- Yonkie has joined.
01:55:01 -!- elliott has joined.
01:55:01 -!- mroman has joined.
01:55:01 -!- Jafet has joined.
01:55:01 -!- myndzi has joined.
01:55:01 -!- iamcal_ has joined.
01:55:01 -!- oklopol has joined.
01:55:01 -!- coppro has joined.
01:55:01 -!- Gregor has joined.
01:55:01 -!- FireFly has joined.
01:55:01 -!- lambdabot has joined.
01:55:01 -!- glogbackup has joined.
01:55:01 -!- fizzie has joined.
01:55:01 -!- ineiros_ has joined.
01:55:01 -!- oklofok has joined.
01:55:01 -!- heroux has joined.
01:55:01 -!- ssue has joined.
01:55:01 -!- monqy has joined.
01:55:01 -!- hagb4rd has joined.
01:55:01 -!- Phantom_Hoover has joined.
01:55:01 -!- nortti has joined.
01:55:01 -!- carado has joined.
01:55:01 -!- Bike has joined.
01:55:01 -!- Sgeo has joined.
01:55:01 -!- MDude has joined.
01:55:01 -!- augur has joined.
01:55:01 -!- copumpkin has joined.
01:55:01 -!- keb has joined.
01:55:01 -!- Nisstyre has joined.
01:55:01 -!- sebbu has joined.
01:55:01 -!- asiekierka has joined.
01:55:01 -!- Lumpio- has joined.
01:59:49 -!- sebbu has quit (*.net *.split).
01:59:49 -!- asiekierka has quit (*.net *.split).
01:59:49 -!- Lumpio- has quit (*.net *.split).
01:59:49 -!- Vorpal has quit (*.net *.split).
01:59:49 -!- keb has quit (*.net *.split).
01:59:49 -!- MDude has quit (*.net *.split).
01:59:49 -!- hagb4rd has quit (*.net *.split).
01:59:51 -!- carado has quit (*.net *.split).
01:59:51 -!- myndzi has quit (*.net *.split).
01:59:51 -!- heroux has quit (*.net *.split).
01:59:51 -!- ineiros_ has quit (*.net *.split).
01:59:51 -!- fizzie has quit (*.net *.split).
01:59:51 -!- lambdabot has quit (*.net *.split).
01:59:51 -!- FireFly has quit (*.net *.split).
01:59:51 -!- oklopol has quit (*.net *.split).
01:59:51 -!- mroman has quit (*.net *.split).
01:59:52 -!- Sanky has quit (*.net *.split).
01:59:52 -!- Fiora has quit (*.net *.split).
01:59:52 -!- Bike has quit (*.net *.split).
01:59:52 -!- monqy has quit (*.net *.split).
01:59:52 -!- oklofok has quit (*.net *.split).
01:59:52 -!- copumpkin has quit (*.net *.split).
01:59:52 -!- augur has quit (*.net *.split).
01:59:52 -!- glogbackup has quit (*.net *.split).
01:59:52 -!- quintopia has quit (*.net *.split).
01:59:54 -!- EgoBot has quit (*.net *.split).
01:59:54 -!- nortti has quit (*.net *.split).
01:59:54 -!- Phantom_Hoover has quit (*.net *.split).
01:59:54 -!- Deewiant has quit (*.net *.split).
01:59:54 -!- yiyus has quit (*.net *.split).
01:59:54 -!- Nisstyre has quit (*.net *.split).
01:59:54 -!- Sgeo has quit (*.net *.split).
01:59:54 -!- Gregor has quit (*.net *.split).
01:59:54 -!- coppro has quit (*.net *.split).
01:59:54 -!- atehwa has quit (*.net *.split).
01:59:54 -!- chickenzilla has quit (*.net *.split).
01:59:55 -!- Yonkie has quit (*.net *.split).
01:59:55 -!- iamcal_ has quit (*.net *.split).
01:59:55 -!- elliott has quit (*.net *.split).
01:59:56 -!- ssue has quit (*.net *.split).
01:59:58 -!- Jafet has quit (*.net *.split).
01:59:58 -!- Cryovat has quit (*.net *.split).
01:59:58 -!- Gracenotes has quit (*.net *.split).
02:00:47 -!- SimonRC has joined.
02:00:47 -!- olsner has joined.
02:00:47 -!- comex has joined.
02:00:47 -!- jix has joined.
02:00:47 -!- sirdancealot7 has joined.
02:00:47 -!- TodPunk has joined.
02:00:47 -!- kallisti has joined.
02:00:47 -!- boily has joined.
02:00:47 -!- HackEgo has joined.
02:00:47 -!- zzo38 has joined.
02:00:47 -!- ion has joined.
02:00:47 -!- mtve has joined.
02:00:47 -!- aloril has joined.
02:00:47 -!- lifthrasiir has joined.
02:00:47 -!- Cryovat has joined.
02:00:47 -!- yiyus has joined.
02:00:47 -!- chickenzilla has joined.
02:00:47 -!- Gracenotes has joined.
02:00:47 -!- Deewiant has joined.
02:00:47 -!- atehwa has joined.
02:00:47 -!- Sanky has joined.
02:00:47 -!- Fiora has joined.
02:00:47 -!- EgoBot has joined.
02:00:47 -!- quintopia has joined.
02:00:47 -!- Yonkie has joined.
02:00:47 -!- elliott has joined.
02:00:47 -!- mroman has joined.
02:00:47 -!- Jafet has joined.
02:00:47 -!- myndzi has joined.
02:00:47 -!- iamcal_ has joined.
02:00:47 -!- oklopol has joined.
02:00:47 -!- coppro has joined.
02:00:47 -!- Gregor has joined.
02:00:47 -!- FireFly has joined.
02:00:47 -!- lambdabot has joined.
02:00:47 -!- glogbackup has joined.
02:00:47 -!- fizzie has joined.
02:00:47 -!- ineiros_ has joined.
02:00:47 -!- oklofok has joined.
02:00:47 -!- heroux has joined.
02:00:47 -!- ssue has joined.
02:00:47 -!- monqy has joined.
02:00:47 -!- hagb4rd has joined.
02:00:47 -!- Phantom_Hoover has joined.
02:00:47 -!- nortti has joined.
02:00:47 -!- carado has joined.
02:00:47 -!- Bike has joined.
02:00:47 -!- Sgeo has joined.
02:00:47 -!- augur has joined.
02:00:47 -!- copumpkin has joined.
02:00:47 -!- keb has joined.
02:00:47 -!- Nisstyre has joined.
02:01:05 -!- glogbackup has left.
02:02:41 -!- fungot has joined.
02:02:41 -!- 1JTAAT864 has joined.
02:03:21 -!- Vorpal has joined.
02:03:21 -!- constant has joined.
02:03:21 -!- jdiez has joined.
02:03:21 -!- clog has joined.
02:03:21 -!- lahwran has joined.
02:03:59 -!- boily has quit (Quit: Poulet!).
02:04:24 -!- pikhq has joined.
02:04:53 -!- sebbu has joined.
02:04:53 -!- asiekierka has joined.
02:04:53 -!- Lumpio- has joined.
02:05:08 -!- FreeFull has joined.
02:05:08 -!- Frooxius has joined.
02:05:08 -!- rodgort` has joined.
02:05:08 -!- hogeyui has joined.
02:05:08 -!- shachaf has joined.
02:05:08 -!- kmc has joined.
02:05:08 -!- c00kiemon5ter has joined.
02:05:30 <Phantom_Hoover> i still find it hard to believe that keegan is a real name
02:05:50 <Phantom_Hoover> it's like finbar
02:06:24 -!- sivoais has joined.
02:06:44 <Fiora> oh jeez roxy is talking drunk to calliope
02:07:12 <kmc> haha
02:07:48 <kmc> Phantom_Hoover: http://en.wikipedia.org/wiki/Keegan
02:07:50 <Phantom_Hoover> is it really calliope though
02:07:59 <kmc> there are totally several of us
02:08:08 <Phantom_Hoover> that's almost as stupid as my name
02:08:12 <kmc> what's your name
02:09:11 <elliott> keegan is a pretty good name imo
02:09:17 <Phantom_Hoover> classified, but a name that's about as stupid as adamhnan
02:09:47 <elliott> isn't it "adhamhnáin"
02:09:52 <elliott> mr. mcgoogle
02:09:53 <Phantom_Hoover> no
02:09:55 <Phantom_Hoover> sorry
02:09:58 <Phantom_Hoover> i lied
02:10:04 <elliott> i distinctly recall you confirmed it was once
02:10:08 <Phantom_Hoover> my middle name is michael, though
02:10:09 <elliott> possibly even privately
02:10:12 <elliott> ok what is your real name
02:10:17 <elliott> iirc fizzie narrowed it down to two
02:10:19 <elliott> so it must be the other one!
02:10:43 <Phantom_Hoover> yes but fortunately you etymologied yourself in the foot and i thought it was too funny to correct
02:12:37 <Phantom_Hoover> (it's domhnall, to save you the logreading)
02:13:08 <Phantom_Hoover> kmc, hey wow a keegan once played q's son
02:13:12 <elliott> Phantom_Hoover: are you serious
02:13:24 <elliott> domhnall is at least 10x more stupid than adhamhnáin
02:13:30 <Phantom_Hoover> yeah, he has a credit for it and everything
02:13:32 <elliott> how do you even fucking pronounce that
02:13:39 <Phantom_Hoover> do-nal
02:13:55 <elliott> ...
02:14:06 <Phantom_Hoover> i basically have to say it five times to people before they get it right
02:14:12 <elliott> scottish people are the stupidest people on earth
02:14:36 <Phantom_Hoover> yes, they keep hearing 'donald'
02:14:43 -!- sebbu has quit (Ping timeout: 245 seconds).
02:14:43 <Jafet> elliott: http://www.theage.com.au/articles/2004/02/25/1077676832301.html
02:15:22 <Phantom_Hoover> ""I'm not asking for something unreasonable," Mr C0ckburn wrote to the Mercury News."
02:15:44 <zzo38> I thought it was pronounce like "domhnall"
02:39:24 -!- sebbu has joined.
03:07:36 <kmc> working 802.11n in linux?!?!?!? truly the apocalypse is nigh
03:20:48 <Jafet> Probably an enterprise datacenter somewhere needed it
03:23:58 <kmc> heh
03:24:21 <kmc> did you see that dell is selling a linux laptop targetted at developers?
03:24:23 <kmc> http://arstechnica.com/gadgets/2012/11/dell-releases-powerful-well-supported-linux-ultrabook/
03:24:27 <kmc> it comes with a bunch of cloud shit
03:36:20 <zzo38> Then delete whatever you don't need, perhaps
03:36:32 <zzo38> Is that possible, or is that difficult?
03:36:33 -!- inxtoEugene has joined.
03:36:50 -!- inxtoEugene has left.
03:37:43 <ion> kmc: Interesting
03:38:46 <zzo38> The extra stuff seem it might be just ordinary packages, so you should be able to remove whatever things you don't need with apt-get or whatever, I guess.
03:38:51 <ion> About thrice the money i’d put into a laptop i’d buy for myself. :-)
03:39:28 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
03:42:05 <kmc> also even if you are reinstalling from scratch, you have more assurance that hardware works with linux
03:42:10 <kmc> but these days that isn't such a big deal
03:53:10 <kmc> i actually thought the price on that dell thing is pretty good
03:53:37 <kmc> considering it has an i7 with 8GB of RAM, it compares favorably to the thinkpad ultrabook i just got
03:53:42 <ion> sure
03:53:52 <kmc> but yes, ultrabooks are pretty pricy
03:54:17 <ion> My budget is smaller; i won’t expect to get as powerful hardware either.
04:06:57 <kmc> apparently Ivy Bridge CPUs have this feature where a plain old REP MOVSB gives you a really fast memcpy()... if a variety of strange conditions are met
04:07:22 <Bike> conditions such as?
04:08:16 <kmc> in particular the source and destination buffers need to overlap... but the CPU checks this against the bottom 12 bits of the address only
04:08:20 <kmc> need to not overlap*
04:09:11 <kmc> because if you looked at the full virtual address, you might conclude that the buffers don't overlap when really they do overlap in physical memory
04:09:22 <kmc> so in these cases it falls back to a slow sequential byte-at-a-time copy
04:09:30 <kmc> in order to preserve REP MOVSB semantics
04:12:41 <kmc> and i guess checking the physical address is too hard / introduces an annoying data dependency with the MMU
04:12:57 <kmc> and maybe even then it would not be correct
04:13:27 <Fiora> is this new to ivybridge? I know there's been a ton of really weird things with hardware "rep movX" support
04:13:30 <kmc> because you need to produce the same sequence of page faults
04:13:53 <kmc> i think this particular feature is new yeah http://lkml.indiana.edu/hypermail/linux/kernel/1205.3/00551.html
04:14:55 <Fiora> I need to go reread that, I don't think I've read the ivy bridge version
04:15:14 <kmc> of the optimization manual?
04:15:27 <Fiora> Yeah
04:15:38 <kmc> an 800 page bedtime story
04:15:52 <Bike> slash murder weapon
04:15:55 <Fiora> http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html "updated april 2012" no ivy bridge sjdflksd
04:16:09 <Bike> it uh, probably takes a while to write
04:16:21 <Fiora> oh nevermind, it's hiding there
04:16:25 <Fiora> under the sandy bridge section
04:16:51 <Fiora> .... okay it has half a page on the ivy bridge <_<;
04:17:28 <Fiora> ahhh, ivy bridge stuff seems to be mixed around
04:18:06 <Fiora> ooh. mov reg32, reg32 and mov reg64, reg64 are now eliminated by the front end
04:18:09 <Fiora> and not executed as uops
04:18:19 <Fiora> along with xmm,xmm/ymm,ymm moves
04:18:35 <Fiora> AMD already did the latter but it's really cool to see Intel going after gpr moves too
04:18:57 <Fiora> ! and it eliminates movzx reg32/64, reg8 too, wow
04:19:19 <Fiora> note to self: movzx is now free
04:20:14 <Fiora> "Processors that provide enhanced MOVSB/STOSB operations are enumerated by the CPUID feature flag: CPUID:(EAX=7H,
04:20:17 <Fiora> ECX=0H):EBX.ERMSB[bit 9] = 1."
04:20:20 <Fiora> wow, they actually made a feature flag for that o_O
04:20:41 <kmc> well if you don't have it, the sequential byte-at-a-time move will perform terribly
04:20:51 <kmc> you'll want to use an unrolled SSE move or something
04:21:11 <Fiora> makes sense, yeah, I'm just surprised they made a feature flag for a performance thing
04:21:21 <Fiora> usually when I have to deal with issues where "X is slow on cpu Y" I have to just detect the cpu
04:21:49 <Fiora> instead of like having a cpuid "pshufb is atrociously slow on this cpu" flag or a "bsr/bsf are microcoded and take 15 cycles on this cpu" flag XD
04:21:57 <kmc> heh, fair enough
04:22:09 <Fiora> but it's nice I guess
04:23:24 <kmc> i should try out SMEP now that I have an Ivy Bridge CPU
04:23:26 <Fiora> 3.7.7 in the optimization manul describes it, it's pretty cool
04:24:22 -!- NihilistDandy has joined.
04:24:25 <Fiora> ooh cool. they added a prefetcher that can prefetch the next page
04:24:34 <Fiora> I think previously the hardware prefetcher only prefetched within the same page
04:24:46 <Fiora> which could get icky when your stride was like, 2000, and your page size was 4096
04:25:18 <kmc> nice
04:27:11 * Fiora has way too much fun reading these things <_<;
04:28:50 <Fiora> I like thinking about the hardware design reasons for certain odd constraints they end up with
04:28:57 <Fiora> like how macro-op fusion doesn't work if the first instruction ends on byte 63 of a cache line
04:29:27 -!- david_werecat has joined.
04:30:49 <Fiora> huh, and xor/sub to zero a register is now not just detected, but optimized out (I guess aliased to some internal zero register)
04:30:57 <Fiora> it's like it's converting it to mips internally <_<;;
04:31:01 <kmc> hehe yes
04:31:37 <Fiora> cmpeq xmm,xmm (to generate all 1s) is detected, but not optimized out
04:31:44 <Fiora> so I guess they have a 0 register but not a 1s register
04:32:41 <elliott> haven't x86 cpus been risc under the hood for ages now
04:33:03 <Fiora> kinda I guess. though it depends on the definition of risc I guess
04:33:32 <Fiora> not always though, even if risc means load/store, I think. because like, the atom doesn't split up instructions into uops (since it's not out of order) and it can do a load every cycle as part of the instruction
04:33:40 <Fiora> so like, on atom
04:33:49 <Fiora> mov eax, [ecx] add ebx, eax
04:33:50 <Fiora> is slower than
04:33:53 <Fiora> add ebx, [ecx]
04:34:05 <Fiora> but atom is weiiird
04:35:02 <elliott> well i have no idea what i am talking about
04:35:10 <elliott> i am the itidus21 of cpu architectures
04:35:40 <elliott> hey i just realised #esoteric is actually good again
04:35:46 <pikhq> Fiora: Pretty sure Atom is still uops.
04:35:59 <Fiora> um, let me check the manual...
04:36:00 <pikhq> Though I can't remember why...
04:36:03 <elliott> i was not anticipating it to get out of the being #itidus/being #clojure cheater ban evasion fun slump
04:36:12 <elliott> apparently i am too cynical
04:36:19 <elliott> *#clojure/cheater
04:36:29 <Fiora> oh wow intel has an entirely separate section for the atom
04:36:32 <Fiora> it's not in the main sectino
04:36:36 <Fiora> maybe that means it isn't a real cpu <_<;
04:37:52 <Fiora> ah, I see
04:38:02 <Fiora> so every instruction uses either port 0, port 1, or both ports (dual-issue) and it's in-order
04:38:36 <Fiora> loads use port 0, but if you pair a load with a port-0 instruction, it's free
04:38:51 <Fiora> loads actually have latency 1 because of where they are in the pipeline I think?
04:39:10 <Fiora> ... it's really weird because it feels more like an old RISC pipeline than a giant complicated OOE blob =_=
04:39:24 <Fiora> okay and I'm rambling here
04:39:48 -!- copumpkin has quit (Ping timeout: 264 seconds).
04:40:02 <Fiora> yay, the atom is fun. 64-bit IDIV is 197 cycle latency
04:40:21 -!- copumpkin has joined.
04:41:25 <elliott> that is a lot of cycles
04:41:39 <kmc> in the compilers class my team won the optimization competition, and we won it largely with the simplest optimization
04:41:49 <kmc> which is to convert multiply / divide by a power of 2 into shifts
04:41:57 <Fiora> wait, and nobody else did that? XD
04:42:00 <kmc> this helped a lot because the test program was a mandlebrot set renderer in fixed point arithmetic >_<
04:42:04 <Fiora> eeep
04:42:16 <kmc> Fiora: yeah... we didn't have a lot of time to even get the damn thing working
04:42:31 <kmc> i think fewer than half of the teams submitted compilers that would produce correct code
04:42:50 <Fiora> ahhh
04:43:06 <Fiora> we had a compilers class where we did some basic optimizations and stuff but we had a pretty long time to work on it, it was like a multi-stage thing
04:43:11 <Fiora> like first get a parser, then lexer, then...
04:43:19 <kmc> yeah
04:43:22 <Fiora> it was a thing with yacc and lex and haskell and jvm bytecode
04:43:26 <kmc> we did that, but the entire class was only 10 weeks
04:43:27 <kmc> oh cool
04:43:50 <Fiora> this one was a one-semester class on programming languages
04:44:05 <kmc> i guess the compilers class at MIT judges heavily on performance on science-style array manipulating code
04:44:20 <kmc> so people put a lot of effort into vectorization and stuff like that
04:44:27 <Fiora> wow, they were able to /do/ that?
04:44:32 <Fiora> isn't vectorization incredibly hard
04:44:54 <kmc> well, good vectorization is hard i'm sure
04:45:22 <Fiora> like I didn't notice gcc do anything remotely useful until like... 4.7? and geez the people working on gcc must be ridiculously good
04:46:15 <kmc> it doesn't seem that hard to detect and vectorize simple cases like a[i] = b[i] + c[i]
04:46:27 <kmc> i don't know when gcc developed that ability
04:46:46 <kmc> if you are already unrolling then maybe you can just kind of coalesce the unrolled instructions
04:46:51 <kmc> i don't know; haven't done that kind of thing myself
04:46:52 <Fiora> it can be tricky though because of alignment and data types and stuff I think
04:46:56 <kmc> sure
04:47:07 <kmc> that is probably easier in a compilers class than in a real multi-target compiler
04:47:15 <Fiora> true
04:49:28 <elliott> Fiora: haskell and jvm bytecode sounds like an unpleasant combo
04:50:20 <kmc> haskell is pretty good at manipulating code of all sorts
04:50:35 <kmc> i assume you are not compiling haskell itself to jvm
04:51:14 <Fiora> we were compiling a toy language to jvm bytecode
04:51:23 <elliott> yeah but jvm bytecode is kind of nontrivial and i don't know that there are any nice libraries representing it in haskell, and imo you suffer a lot more when working with a quick-hack data representation (like the equivalent of just using a dict of tuples in python or w/e) in haskell
04:51:29 <Fiora> the toy language was kinda C-like but minus some complexity to make it easier to parse for a small project
04:51:32 <elliott> so i personally wouldn't want to do it :p
04:51:33 <kmc> elliott: yeah that's true
04:51:36 <Fiora> we didn't write bytecode, we just wrote asm
04:51:45 <Fiora> and used an assembler to assemble it to actual bytecode
04:51:59 <Fiora> since that's a pointless reinvention of the wheel XD
04:52:21 <Fiora> I mean just like printing "push x" and "add 2" and so on to the asm file
04:52:28 <kmc> well it would be nice to have a representation in your compiler of instructions
04:52:35 <kmc> besides "strings: the worst data structure"
04:52:40 <kmc> but not necessary for a small project
04:52:41 <Fiora> we did
04:52:48 <Fiora> that gets converted to strings to print it out
04:52:52 <elliott> basically if i had a ton of time then i would enjoy mangling jvm bytecode in haskell over most languages
04:53:10 <Bike> a struct to represent x86 instructions sounds like it would be a complicated struct
04:53:10 <Fiora> the best thing about doing it haskell I think was that omg the type checking
04:53:13 <elliott> but that includes the time to develop a proper full representation which is work :P
04:53:16 <Fiora> just /so many bugs found/
04:53:26 <kmc> yeah
04:53:32 <Fiora> the haskell static typing along with the type system we had set up in it was just like magic working pixie dust
04:53:47 <kmc> we wrote our compiler in ocaml which was also pretty good
04:53:57 <kmc> i would prefer haskell as i know it well, now
04:54:16 <elliott> i would prefer haskell to ocaml because it's better
04:54:16 <kmc> but expecting people to learn Haskell *and* write a compiler in 10 weeks is a little unrealistic
04:54:17 <Fiora> pattern matching was also really cool for doing optimizations
04:54:36 <Fiora> like we could match against patterns we wanted to optimize
04:54:40 <kmc> ep
04:54:41 <kmc> yep
04:54:56 <elliott> Fiora: it's no coincidence that haskell excels at compilery tasks
04:55:01 <Fiora> ?
04:55:11 <elliott> Fiora: well functional programming languages have a strong connection to it
04:55:11 <Bike> ML was written for writing compilers, wasn't it
04:55:17 <elliott> like ML is pretty similar to Haskell in many ways
04:55:18 <Bike> "meta language" and all
04:55:24 <elliott> and it's called metalanguage because it was made to write compilers :P
04:55:30 <elliott> (Haskell isn't derived from ML though)
04:55:43 <Bike> isn't it a strong influence? or am i just being misled by the syntax
04:55:46 <kmc> it's loosely derived
04:55:51 -!- copumpkin has quit (Ping timeout: 265 seconds).
04:55:57 <elliott> Bike: it's sideways related
04:56:00 <Bike> pattern matching and HM typing and all that shit
04:56:02 <kmc> Haskell was an effort to unify research in a bunch of lazy functional languages
04:56:07 <elliott> Haskell is basically -- yeah
04:56:07 <kmc> including Lazy ML
04:56:14 <kmc> and others which were all reminiscent of ML
04:56:20 <Bike> Common ML :P
04:56:21 <elliott> there were a kajillion lazy languages being used and everyone got together and said let's compromise
04:56:25 -!- copumpkin has joined.
04:56:25 <Fiora> ah, I see
04:56:27 <kmc> the core ideas of ML are all there in Haskell, plus a lot more
04:56:27 <elliott> the nearest ancestor of the result is Miranda
04:56:31 <Fiora> no wonder our prof loved it
04:56:32 <Bike> i have a book on compilers in standard ml that i still haven't read because i'm a dumbass
04:56:40 <elliott> which now looks like a weirder minimalist version of Haskell
04:56:47 <Bike> also because i don't know standard ml and all the resources apparently kind of suck
04:56:51 <elliott> (and was proprietary)
04:57:06 <Bike> i should probably just do it in haskell, really
04:57:07 <elliott> funnily enough the most popular dialect of ML, O'Caml, was also invented to write a compiler!
04:57:11 <elliott> in this case, Coq
04:57:30 <Bike> i thought coq was a theorem prover, or more to the point interactive and shit
04:57:40 <elliott> sort of interesting that an entire language and toolchain were developed to develop a quite significantly more advanced language but the former has dwarfed the latter to some degree
04:57:45 <elliott> Bike: theorem prover/programming language
04:57:56 <Bike> well yeah
04:58:07 <kmc> Coq has a reasonably nice pure functional language, for writing programs you want to prove things about
04:58:08 <elliott> it is an intuitionistic theorem prover and a dependently-typed programming language
04:58:17 <Bike> oh. herp.
04:58:18 <kmc> and also a bizarre nasty imperative implicitly-scoped mess for writing proof tactics
04:58:23 <elliott> the things people actually enter are programmery basically
04:58:28 <elliott> but nobody uses it for actually writing programs really
04:58:28 <kmc> also you can compile the former to ML or Haskell
04:58:29 <Bike> yeah i've seen that much
04:58:31 <elliott> except as a proof of concept
04:58:37 <Bike> does it happen to be based on uh, what's that guy
04:58:38 <elliott> Agda is where that stuff happens
04:58:43 <kmc> if for some reason you wanted to actually use the thing you proved correct
04:58:46 <elliott> Bike: martin-lof?
04:58:47 <kmc> Martin-Loef?
04:58:49 <Bike> yeah him.
04:58:50 <kmc> yep
04:58:53 <elliott> yes
04:58:54 <elliott> well
04:58:59 <Bike> i should read those pdfs i've got
04:58:59 <kmc> Calculus of Constructions => CoC => Coq
04:59:02 <elliott> it's actually -- yeah
04:59:06 <kmc> 420 read pdfs every day
04:59:06 <Bike> it's kind of hard to get through all that "judgement" crap
04:59:18 <elliott> is CoC actually derived from martin-lof
04:59:20 <elliott> I have no idea
04:59:22 <Bike> right now i have a pdf on neuroparasitism open. it is very distracting
04:59:23 <kmc> i thought so
04:59:26 <elliott> I suppose it must be
04:59:42 <elliott> kmc: btw I think that second step is meant to be icoc or whatever
04:59:46 <elliott> er coic i guess?
05:00:21 <kmc> right
05:00:27 <kmc> inductive and coinductive too
05:00:53 <Bike> what's coinduction?
05:01:03 <elliott> heheh
05:01:23 <kmc> Bike: uh i have a very fuzzy understanding only
05:01:26 <Bike> guess i should figure out codata first. fucking coeverything
05:01:28 <elliott> Bike: roughly you can prove things about the naturals with induction. you can prove things about infinite streams with coinduction
05:01:34 <elliott> data : induction :: codata : coinduction
05:01:39 <kmc> but i'll do my best to say something that's subtly misleading and will confuse you for years
05:01:43 <elliott> and also, recursion : induction :: corecursion : coinduction
05:01:54 <Bike> wow does that even mean anything
05:01:54 <elliott> note that a lot of the "recursion" you do in a lazy language like Haskell is actually corecursion
05:01:59 <elliott> and a lot of the data you define is actually codata!
05:02:04 <Bike> ok
05:02:05 <elliott> are you confused yet
05:02:06 <Bike> that sucks
05:02:15 <kmc> yeah for recursive functions, you prove termination by showing that every recursive call is on a strictly smaller sub-term of the input data
05:02:21 <Bike> mostly just kind of pissed that the words are defined this way
05:02:26 <kmc> for corecursion you prove that the function is "productive" instead
05:02:29 <Bike> i should go back to misunderstanding catamorphisms
05:02:33 <kmc> meaning that every recursive call is buried under a data constructor
05:02:48 <kmc> so you can always force the result to head-normal form with a finite amount of work
05:02:52 <elliott> Bike: basically you know how the list type in haskell admits infinite lists
05:02:59 <Bike> right
05:03:02 <elliott> that's because it's actually codata
05:03:02 <Bike> and you generalize that and bla bla
05:03:10 <elliott> if it was data it would only represent finite lists
05:03:14 <kmc> so e.g. you could prove shit about the infinite list of prime numbers, because you can prove that you can always get the next one in finite time
05:03:16 <Bike> and suddenly you have infinite trees of chessobards
05:03:18 <elliott> and something like map:
05:03:25 <elliott> map f [] = []; map f (x:xs) = x : map f xs
05:03:27 <elliott> is corecursive
05:03:30 <elliott> because rearranging the syntax a little
05:03:35 <elliott> map f [] = []; map f (x:xs) = (:) x (map f xs)
05:03:41 <Bike> right
05:03:48 <elliott> that self-call buried under a data constructor --> corecursion
05:04:16 <elliott> with a language that actually cares about stuff being meaningful something like "bad [] = []; bad (x:xs) = bad xs" wouldn't work
05:04:22 <Bike> and then something like factorial where you do both at once (1- to deconstruct, * to construct) is a fuckomorphism or w/e
05:04:27 <elliott> because you're not productive -- you can't peel off a data constructor in finite time
05:04:56 <elliott> (and this can be very important because non-termination is analogous to proving false)
05:05:15 <Bike> wait, so what's the problem with bad? that it won't terminate on infinite x?
05:05:16 <elliott> (hence why languages used for proofs have to be strict about this stuff and restrict what programs/recursions you can write)
05:05:22 <elliott> infinite input lists, yes
05:05:33 <Bike> mm
05:05:36 <elliott> 1 : 1 : 1 : ... is perfectly valid codata
05:05:43 <elliott> but bad (1 : 1 : 1 : 1 : ...) is not a perfectly valid value
05:05:54 <elliott> (since we have already rejected nontermination as logically unsound)
05:06:02 <Bike> ok, so
05:06:06 <elliott> basically haskell lets you do "general recursion" which is where nontermination comes in
05:06:09 <Bike> in haskell can you define bad? knowing that it'll fail
05:06:10 <elliott> you know about fix right?
05:06:11 <elliott> :t fix
05:06:12 <lambdabot> (a -> a) -> a
05:06:22 <elliott> (equivalent to the Y combinator)
05:06:26 <elliott> fix f = f (fix f)
05:06:41 <Bike> that type signature does not look equivalent to a fixed point combinator (which you can't do in haskell typing anyway, can you?)
05:06:46 <elliott> it is equivalent
05:07:00 <elliott> what you can't do is implement the y combinator directly
05:07:04 <Bike> ok, right
05:07:08 <elliott> anyway if you look at that type like it's a logical statement it says
05:07:13 <elliott> "forall a, (a implies a) implies a"
05:07:15 <elliott> aka "forall a, true implies a"
05:07:18 <elliott> aka "forall a, a"
05:07:21 <elliott> aka contradiction
05:07:23 <Bike> right, and therefore everything's true
05:07:27 <elliott> which is the fundamental reason general recursion isn't logically sound
05:07:31 <elliott> but yes you can define bad in Haskell
05:07:33 <Bike> obviously i need to read tapl better >_>
05:07:44 <elliott> only uptight dependently-typed languages nobody uses actually care about this stuff :)
05:07:46 <Bike> Does agda let you define bad?
05:07:51 <Bike> (I'm guessing no)
05:08:12 <elliott> no
05:08:16 <elliott> unless you turn off the termination checker
05:08:30 <Bike> I looked at uh, what was it called, Charity I think. Something a bit like agda in terms of uptightness, and only admitting terminating programs
05:08:33 <elliott> note that you don't necessarily lose turing completeness by doing this. do you know haskell's IO story? (it doesn't really matter if not)
05:08:45 <Bike> "IO story"? I know a bit about how the monad works.
05:08:47 <elliott> yes charity is total which is the technical term for rejecting nontermination like this
05:09:00 <elliott> the story as in, Haskell is a pure language, but it has a type that represents, abstractly, "a program that does IO"
05:09:20 <elliott> and though the values of this type are perfectly "pure" -- you can write a data type with GetChar constructors or whatever to model it the same if you want -- the runtime system executes it for you
05:09:21 <Bike> which is impure.
05:09:26 <elliott> no :)
05:09:31 <Bike> no. great. ok.
05:09:34 <elliott> well
05:09:42 <elliott> IO is an /encoding/ of an impure language
05:10:01 <elliott> data MyLanguage a = Return a | GetChar (Char -> a) | PutChar Char (MyLanguage a)
05:10:06 <elliott> (continuation-passing style)
05:10:16 <elliott> cat = GetChar (\c -> PutChar c cat)
05:10:17 <Bike> From what I understand IO works by being in a sorta-CPS style, where the composition isn't associative, so that preserves ordering
05:10:27 <elliott> the fact that you can define this data type does not mean Haskell is impure, right?
05:10:31 <elliott> it is just a piece of data like any other
05:10:37 <elliott> even though it /represents/ an impure, imperative program
05:10:37 <Bike> I don't really have any idea what "pure" means anyway.
05:10:46 <elliott> neither does anybody else :p
05:10:49 <Bike> Especially after watching you guys faff about with unsafeCoerce.
05:10:51 <elliott> but basically IO is just like MyLanguage
05:11:04 <elliott> except that the runtime system will actually "interpret" this type for you
05:11:10 <elliott> anyway this is just confusing you more than helping you
05:11:20 <elliott> but I was going to say that you can represent partiality in a total language using codata
05:11:24 <Bike> shrug, that's what i do anyway.
05:11:29 <elliott> codata Partial a = Now a | Later (Partial a)
05:11:35 <elliott> we can recast bad in this style:
05:11:40 <elliott> bad [] = Now []; bad (x:xs) = Later (bad xs)
05:11:45 <elliott> this is now corecursive!
05:12:00 <elliott> because our self-call is buried under a constructor you can always peel one off in finite time
05:12:14 <elliott> and you can imagine your total language's runtime system being able to "interpret" a (Partial a)
05:12:20 <Bike> So this is the fancy type version of putting everything in lambdas to make streams.
05:12:26 <elliott> by peeling off Laters until it finds a Now, a possibly non-terminating process that takes place *outside* the language
05:12:42 <elliott> which is to say, you can have a total but Turing-complete language
05:12:46 <elliott> just like Haskell is pure but can do IO
05:12:54 <elliott> ok I'm done confusing things now
05:13:02 <Bike> Thanks.
05:13:14 <elliott> any time
05:13:22 <elliott> always here to spread chaos and horror
05:13:25 <Bike> now i can go back to misunderstanding how to optimize exponetiation, like a real man
05:13:50 <elliott> what's exponetiation and also what are you doing
05:13:58 <Bike> exponentiation.
05:14:01 <Bike> spelling is hard
05:14:30 <Bike> http://en.wikipedia.org/wiki/Addition-chain_exponentiation rather pedestrian compared to agda, i'm sure
05:14:45 <elliott> well I meant what are you doing in a more general sense
05:14:52 <Bike> dicking around
05:15:11 <Bike> i don't know what general sense you mean though
05:15:12 <kmc> L
05:15:12 <kmc> A
05:15:13 <kmc> T
05:15:13 <kmc> E
05:15:14 <kmc> R
05:15:16 <kmc> S
05:15:24 <elliott> hi kmc
05:15:44 <Bike> (USER WAS BANNED FOR THIS POST) let's see if i can remember colors
05:15:46 <Bike> yep
05:20:44 <Bike> elliott: actually can i ask one last thing that may or may not erupt into another two pages of text? if the runtime interprets Partial in such a way that bad may not return a value, how is bad a total function?
05:21:03 <elliott> well it's not that the runtime "interprets" it that way
05:21:09 <elliott> if it helps
05:21:13 <elliott> think of it this way
05:21:28 <elliott> you have an interpreter that takes a file, and prints out a string representation of the "foo" value in it
05:21:40 <elliott> so if you say foo = bad anInfiniteStreamOf1s
05:21:45 <elliott> then ./interp myfile.totallang
05:21:47 <elliott> will output
05:21:57 <elliott> Later (Later (Later (Later (Later (Later (Later (Later (...
05:21:59 <elliott> and so on forever
05:22:12 <elliott> obviously the fact that you can print a value this way does not mean the language itself is not total
05:22:17 <elliott> now pipe that to another program
05:22:23 <elliott> ./interp myfile.totallang | ./findnow
05:22:36 <elliott> which simply reads stdin, peels off every Later, and prints what it finds inside a Now if it finds one
05:22:43 <elliott> this interp | findnow process is not total
05:22:48 <elliott> but it happens outside the language's semantics
05:22:59 <elliott> you can still reason about the language itself assuming total strict totality and all that reasoning will still apply
05:23:11 <elliott> (similarly for Haskell and purity (assuming you don't use any functions with "unsafe" in the name))
05:23:17 <Bike> hm
05:24:39 <Bike> well i mean, you can't say, tell me what type bad anInfiniteStreamOf1s is within the language, can you? (though i guess it might be bottom)
05:24:59 <elliott> the whole point of codata is that we admit values like anInfiniteStreamOf1s...
05:25:15 <elliott> codata Stream a = Empty | Cons a (Stream a)
05:25:36 <elliott> codata Partial a = Done a | Later (Partial a)
05:25:45 <elliott> bad :: Stream a -> Partial (); bad Empty = Done (); bad (Cons x xs) = Later (bad xs)
05:26:04 <elliott> ones :: Stream Int; ones = Cons 1 ones -- this is valid corecursion because it's behind a constructor
05:26:12 <elliott> foo :: Partial (); foo = bad ones
05:26:24 <elliott> ("bad" is now a misnomer, it's a perfectly fine function now that it uses Partial)
05:27:18 <Bike> sssss
05:27:36 <elliott> looks like i have managed to thoroughly bamboozle Bike
05:27:41 <elliott> go me
05:28:41 <Bike> i can't tell if i'm misunderstanding something important or something trivial. codata i think i get, infinite stream of ones with lazy evaluation is super easy, but not "well it's total except sometimes functions don't terminate" if that's even what you're saying which i doubt
05:30:09 <elliott> well the thing to realise is that *nothing* inside the language ever fails to terminate
05:30:24 <elliott> you cannot point me to a single thing in that program that isn't a valid corecursion
05:30:40 <Bike> i don't understand how foo = bad ones can terminate.
05:30:42 <elliott> all I am saying is that this does not prevent you from writing programs that do not terminate in practice, because you can *model* them, and this model can be interpreted from *outside* the language semantics
05:30:53 <elliott> Bike: well, try inlining it
05:30:59 <elliott> bad (Cons x xs) = Later (bad xs)
05:31:02 <elliott> ones = Cons 1 ones
05:31:08 <elliott> bad ones = bad (Cons 1 ones) = Later (bad ones)
05:31:33 <elliott> if you think an infinite stream "terminates" (the question doesn't really make sense, but you can assuredly represent such a stream), then bad ones = Later (bad ones) is perfectly fine too
05:31:45 <elliott> in fact the Stream and Partial types are almost identical
05:33:07 <Bike> oh ok, but we can't write something, within the language, that's like the earlier bad, where it "forces evaluation" of the infinite Laters?
05:33:25 <elliott> right
05:33:28 <Bike> but we can have something outside the language that tries.
05:33:32 <Bike> ok. i think i get that. thanks.
05:33:33 <elliott> just like you cannot write fireZeMissiles :: IO a -> a in Haskell
05:34:05 <elliott> but you can write void fire_ze_missiles(My_Weird_Internal_IO_Representation *) in the C code to your implementation
05:34:51 <zzo38> I know something like data MyLanguage a = Return a | GetChar (Char -> a) | PutChar Char (MyLanguage a) is possible, and have thought of such things in whatever functional programming language
05:35:25 <zzo38> However it seem maybe not right?
05:35:48 <zzo38> Maybe you need GetChar (Char -> MyLanguage a) ?
05:35:57 <elliott> erm, yes
05:36:01 <elliott> was a typo
05:36:44 <zzo38> But there are other ways, such as a (Free (CoYoneda x)) monad
05:37:23 <elliott> i felt such a representation would not help Bike so much :P
05:37:50 <Bike> whatever, i'm the inbred yokel here
05:37:58 <zzo38> It might not, although, there are many ways.
05:38:29 <elliott> Bike: it may be consoling to know that the majority of #haskell wouldn't be able tog et this straight either
05:38:38 <elliott> *to get
05:39:07 <Bike> issat so
05:39:16 <Bike> well, that's not too surprising
05:39:45 <Bike> same way you can use C without giving a damn about pointer aliasing i suppose
05:40:27 <zzo38> unsafePerformIO is sometimes used for global variables too but there are other ways.
05:40:33 <elliott> well for a start this totality stuff is not really directly relevant to Haskell at all
05:40:50 <elliott> for an end the secret is that most people who use Haskell don't actually really know what they're doing :P
05:40:59 <elliott> this applies to basically every language
05:41:01 <Bike> that's what i was getting at yes
05:41:14 <elliott> well you can probably write good C code without caring about pointer aliasing
05:41:23 <elliott> since it is a bit pathological
05:41:34 <Bike> i suppose y'all have it harder with people trying to write monad burrito tutorials every which way
05:41:42 <Fiora> until you do something really horrific like I did earlier and gcc miscompiles it <_<;
05:41:49 <elliott> is there a pointer tutorial cottage industry
05:42:04 <Bike> you know i think there may have been at some point
05:42:13 <Bike> i know i've seen a bunch of metaphors about PO boxes
05:43:25 <elliott> i remember watching "pointer fun with binky"
05:43:30 <Bike> «In pure functional languages, function arguments may usually alias each other, but all pointers are read-only. Thus, no alias analysis needs to be done.» ok sure
05:43:48 <zzo38> Such as (StateT (ExtProd GlobalVariables) IO) (implementation of ExtProd uses unsafeCoerce internally, but only to convert something to the same type which it already is)
05:43:52 <elliott> it's called "sharing" in functional languages
05:44:01 <zzo38> Fiora: What example?
05:44:19 <Bike> i think she means her float p-associativity thing
05:44:30 <Bike> nonconforming (horrors)
05:44:34 <Fiora> http://privatepaste.com/59a8109713 that thing
05:45:04 <Bike> also the whole 'pointer aliasing' tree on wikipedia makes it out to be the main reason fortran is Faster than C, rad
05:45:36 <Fiora> yeah, aliasing optimization-wise can be really annoying and frustrating
05:45:52 <Fiora> Intel's C compiler actually does something totally crazy that I've seen in disassembly a few times
05:46:03 <Fiora> where it thinks aliasing is an issue it'll template the code based on whether or not two pointers alias
05:46:06 <Fiora> and branch on runtime
05:46:25 <Bike> goddamn
05:46:25 <elliott> aliasing of mutable pointers is the saddest thing
05:46:35 <elliott> yet another reason we can blame C for all ills in the world
05:46:41 <elliott> and also a billion other languages
05:46:44 <elliott> but C is a nice scapegoat
05:46:44 <Bike> fortran 4 lyfe
05:46:48 <Fiora> "uint8_t* can alias everything" is kind of dumb <_>
05:46:56 <elliott> Bike: well. rather drop the mutable part than the aliasing part
05:47:06 <kmc> wow suspend to RAM is incredibly fast on this machine
05:47:24 <kmc> under 2 seconds to suspend, 1 second flat to resume all the way
05:47:42 <Bike> elliott: you would, you, you...! i can't think of a remotely nonterrible insult for agda users sorry
05:47:49 <Bike> what does "agda" even mean, is it some old celtic god
05:47:54 <zzo38> Fiora: Yes, I know, and LLVM does this; they really should allow void* instead
05:48:01 <elliott> haha like I actually use Agda
05:48:09 <Bike> well you know it exists
05:48:14 <elliott> so do you
05:48:17 <kmc> Bike: there is a sweedish dirty song titled "Hönan Agda"
05:48:26 <kmc> about a hen who really loves the cock, if you will
05:48:31 <Bike> do i /really/
05:48:34 <elliott> I have no idea where Agda's game originates
05:48:36 <Bike> kmc: that'd better be the actual etymology
05:48:37 <kmc> so it's a play on coq
05:48:44 <elliott> kmc: please tell me that's actually true
05:48:52 <elliott> also s/game/name/
05:49:01 <kmc> listen here: http://www.youtube.com/watch?v=oKUscEWPVAM
05:49:14 <elliott> that is not an answer!!
05:49:19 <Bike> cock is the answer
05:49:34 <kmc> i read this somewhere semi authoritative
05:49:36 <Bike> jesus swedish sounds weird
05:50:00 <pikhq> Yes, Jesus Swedish is a strange language.
05:50:23 <elliott> swedish as spoken by jesus himself
05:50:31 <Bike> i should try to introduce that as a term to refer to the old language in newly christianized monks' scrolls or something
05:50:35 <elliott> in 0 ad sweden
05:50:43 <Bike> except i don't know any swedish paleolinguists... shit......
05:51:02 <elliott> that ruins all my plans too
05:51:29 <Bike> now i have to go check if "paleolinguist" is a term anyone actually uses.
05:51:49 <kmc> anyway i bet #agda would know if i made this up
05:51:49 <Bike> oh, they do. proto-human crapola, awesome.
05:51:54 <kmc> Bike: paleography is, for sure
05:52:03 <elliott> Fiora: btw is it really miscompilation if your program invokes UB...
05:52:11 <kmc> i had to look up a soviet era paleography text book on russian rapidshare in my quest to track down Multiocular O
05:52:41 <Bike> «Multiocular O (ꙮ) is the most rare and exotic glyph variant of Cyrillic letter O. This glyph variant can be found in certain manuscripts in the phrase «серафими многоꙮчитїи» ("many-eyed seraphim")» what the fuck?
05:52:47 <kmc> i will point out that agda is from .se
05:52:53 <Bike> that sounds straight out of a dan brown novel
05:53:54 <kmc> yeah, basically some bored monk put a doodle in a copy of Psalms
05:54:10 <kmc> and then almost 600 years later a bunch of linguists and computer scientists had a very serious meeting about what to do about it
05:54:18 <Bike> anyway i imagine paleography is a bit easier than paleolinguistics, given that we don't even know how sumerian was pronounced
05:54:36 <kmc> and recommended it for inclusion in the International Standard Organization's Universal Character Set
05:54:44 <Bike> awesome
05:54:55 <Fiora> elliott: technically no, but... XD
05:54:57 <kmc> there's a link to a scan of the manuscript on that page
05:55:13 <Bike> it's not actually in the cyrillic block, is it
05:55:30 <kmc> what bugs me is that the Unicode reference glyph has 7 eyes but the only (?) extant source for the character has 10 eyes
05:55:55 <Bike> also now i'm tryig to remember if all those dumb scripts like klingon and deseret are actually in unicode or just use one of the "do whatever" blocks
05:55:56 <elliott> unicode meetings must be interesting
05:56:05 <kmc> klingon is still private use yeah
05:56:20 <elliott> i think it kind of makes sense to put klingon in unicode
05:56:28 <Bike> deseret was actually used by non-dorks for a few minutes, is the thing that makes me wonder
05:56:28 <pikhq> Though the reason Klingon was turned down for inclusion wasn't that it was a joke script.
05:56:28 <kmc> Bike: it's in some "old / weird cyrillc shit" block, but still in the BMP
05:56:35 <Bike> christ
05:56:37 <zzo38> Wikipedia also seven eyes
05:56:41 <elliott> pikhq: what was the actual reason? I don't know it
05:56:43 <pikhq> ... It was that no Klingon speakers actually used Klingon script.
05:56:49 <Bike> pff
05:57:03 <elliott> pikhq: is this a vacuous property or are there actually klingon speakers who don't know the script
05:57:24 <Bike> i think there are more klingon speakers than there are esperanto speakers...
05:57:32 <kmc> really?
05:57:34 <pikhq> elliott: In general Klingon text is in a Romanization.
05:57:36 <kmc> esperanto has like a million speakers
05:57:41 <Bike> and esperanto has its dumbass orthography in there
05:57:45 <zzo38> If you write in the text using Unicode then how are you supposed to know if you mean seraphim have seven eyes or do they have ten?
05:57:49 <kmc> well, ok
05:57:54 <kmc> "10,000 to 2,000,000"
05:57:58 <Bike> pfff
05:57:58 <zzo38> And I think there is Conscripts for if you want Klingon scripts? I am unsure
05:57:58 <elliott> pikhq: how can people who go to the lengths of learning klingon not go the extra mile and learn the script
05:57:58 <pikhq> Esperanto uses glyphs that other languages also make use.
05:58:01 <elliott> like what is with that
05:58:04 <Bike> ok, maybe i'm exaggerating.
05:58:05 <pikhq> Erm, also make use of.
05:58:07 <kmc> what's 2 orders of magnitude between friends
05:58:09 <pikhq> elliott: I dunno.
05:58:12 <quintopia> whats the difference between tolkien dwarves and klingons
05:58:18 <Bike> pikhq: yeah, i know, i just suddenly remembered that i hate esperanto and its orthography.
05:58:20 <quintopia> other than the height and language
05:58:24 <elliott> the name
05:58:24 <quintopia> because i dont see it
05:58:29 <elliott> also one of them is in star trek
05:58:41 <elliott> the other is in lotr (the klingons)
05:58:42 <Bike> klingons don't dig mines do they
05:59:00 <kmc> `addquote <zzo38> If you write in the text using Unicode then how are you supposed to know if you mean seraphim have seven eyes or do they have ten?
05:59:10 <HackEgo> 871) <zzo38> If you write in the text using Unicode then how are you supposed to know if you mean seraphim have seven eyes or do they have ten?
05:59:11 <Bike> and dwarves don't... do... whatever klingons do? yell at kirk or whatever
05:59:14 <quintopia> Bike: they mine outer space
05:59:18 <pikhq> Bike: Mi ŝat' l'ortografion.
05:59:28 <quintopia> (the explosive kind)
05:59:29 <Bike> bite me
06:00:51 <pikhq> tèmo, sono nihonnkò no seisiȳohou kà saikou tà to omou
06:01:13 <Bike> is that some japonic language
06:01:23 <kmc> seems as good a time as any to link http://www.youtube.com/watch?v=uQ3c8_ZTNrg
06:01:25 <pikhq> Japanese, in specific.
06:01:37 <pikhq> In a silly orthography.
06:01:38 <Bike> i don't think i've ever seen that romanization. what is it?
06:01:44 <pikhq> Mine. :P
06:01:48 <Bike> or just something y- right
06:02:08 <Bike> "nihhonko" is kind of a giveaway. also macron even if it's not on a vowel somehow
06:02:56 <pikhq> ` is the dakuten, ^ is the handakuten, ¯ indicates the glyph is small, ' is the sokuon, "nn" is the moraic "n".
06:02:57 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: : not found
06:03:06 <Bike> i see.
06:03:12 <pikhq> And transcribe naively from there.
06:04:08 <Bike> kmc: now i'm wondering what recordings they got "fuckin" and "goddamn" from
06:21:47 <zzo38> Something like [[1+2][3+4]+[5+6][7+8]] is allowed in a Csound score and results in 1132
06:28:35 -!- heroux has quit (Ping timeout: 250 seconds).
06:30:12 -!- heroux has joined.
06:34:31 <kmc> #csoundfacts
06:52:44 -!- MDude has joined.
06:54:41 <MDude> http://esolangs.org/wiki/Pahana Interesting. Also looks kind of like another idea I'm being beaten to because I'm too lazy to really work on it enough.
06:55:50 <MDude> Though I was thinking more of starting at something like a network stack and changing it to work as a human language instead of the reverse.
06:56:10 <elliott> I am really confused by that article
06:56:16 <elliott> as in I'm not sure why it's on the esolang wiki
06:56:27 <Bike> it's a joke on piraha i guess?
06:56:29 <MDude> It's esoteric, and a language?
06:56:53 <elliott> MDude: that's 2/3
06:56:54 <Bike> conlangers have their own hangouts, i think
06:57:01 <elliott> the 1/3rd is "programming"
06:57:04 <MDude> If it's the idea I should have already been working on, it's a way of making something usable as a speaking language and computer language.
06:57:12 <elliott> hmmmm
06:57:13 <Bike> isn't that lojban
06:57:18 <elliott> probably I should just put something on the talk page
06:57:28 <MDude> They just apparently haven't gotten to the comptuer part yet.
06:57:44 <MDude> Or maybe they are in the wrong spot.
06:57:49 <Bike> turns out to just be a pronounceable brainfuck derivative.
06:58:36 <MDude> Ook is alredy plenty pronouncable.
06:58:44 <MDude> And by multiple species.
07:00:52 <Bike> ah, but is your ook program also a poem?
07:03:21 <zzo38> I can see Pahana is really something different and not a esolang, nor does it seem really related, but perhaps move it to a subpage of your user page for now; there might be enough relation for it to go there, at least temporarily.
07:04:49 <MDude> I willas soon as I'm ClaytonB or Aristippus.
07:04:54 <MDude> *will as
07:05:03 <MDude> I'm just guessing at what it might be.
07:05:25 <MDude> Also I don't see either of them in chat.
07:05:57 <zzo38> I could leave a message on the talk page of that article, too.
07:07:07 -!- monqy has quit (Quit: hello).
07:07:54 <MDude> I will now go to bed and consider having a pahana for breakfast in the morning.
07:08:05 -!- MDude has changed nick to MDream.
07:08:24 <zzo38> I wrote a message on their talk page.
07:09:13 <zzo38> http://esolangs.org/wiki/Talk:Pahana
07:10:10 <zzo38> And why was one change made by a different user account?
07:11:22 <MDream> And all they did was switch X and Y to make sure X came first in the sentence.
07:11:25 <Bike> oh boy, my first appearance on the wiki proper.
07:12:48 <zzo38> What is your account on the wiki properly?
07:13:34 <Bike> don't have one.
07:13:44 <zzo38> MDream: Yes, I am a bit confused about this too.
07:22:33 -!- pikhq_ has joined.
07:29:27 -!- pikhq has quit (*.net *.split).
07:42:22 -!- nooga has joined.
07:53:20 -!- epicmonkey has joined.
07:59:13 <elliott> Bike: you should get a wiki account so I can log your password and impersonate you on other websites
07:59:54 <Bike> i actually usually make up new passwords which i then forget later
08:00:05 <Bike> your plans are foiled, fictional elliott
08:00:17 <shachaf> Fictional elliott is way better than real elliott.
08:00:29 <elliott> what I do is use the same, not-terribly-secure password everywhere and rely on the fact that nobody likes me or wants to be me
08:00:32 <elliott> :'(
08:00:48 <Bike> i'm pretty sure that's how security generally works
08:00:52 <Bike> you're in good company, real elliott
08:01:08 <Bike> fictional elliott probably just uses the wiki account databae as password idea fodder.
08:01:14 <elliott> good company with people I don't like by definition of said company
08:02:13 <Bike> that's mean!
08:02:26 <elliott> but they're a group of people relying on the fact that nobody likes them!
08:02:40 <Bike> wow way to make security sound really depressing
08:03:27 <elliott> bank account security: make sure you're always broke so nobody can steal any money from you
08:06:06 -!- david_werecat has quit (Ping timeout: 264 seconds).
08:13:20 -!- copumpkin has quit (Ping timeout: 252 seconds).
08:13:53 -!- copumpkin has joined.
08:17:26 -!- augur has quit (Remote host closed the connection).
08:19:22 -!- augur has joined.
08:19:33 -!- Bike has quit (Quit: not not not not not not not).
08:22:11 -!- oerjan has joined.
08:44:56 <oerjan> `? phantom_hoover
08:45:00 <HackEgo> Phantom_Hoover is a true Scotsman and hatheist.
08:45:20 <fizzie> `? hantom_phoover
08:45:21 <HackEgo> hantom_phoover? ¯\(°_o)/¯
08:45:39 <oerjan> `run echo 'Phantom "Michael" Hoover is a true Scotsman and hatheist.' >wisdom/phantom_hoover
08:45:43 <HackEgo> No output.
08:45:47 <oerjan> `? phantom_hoover
08:45:49 <HackEgo> Phantom "Michael" Hoover is a true Scotsman and hatheist.
08:45:58 <oerjan> `? phantom__hoover
08:46:00 <HackEgo> Phantom__Hoover can't decide what an appropriate number of underscores is.
08:46:04 <oerjan> `? phantom___hoover
08:46:05 <HackEgo> Phantom___Hoover sucks at ghosting himself.
08:46:09 <oerjan> `? phantom____hoover
08:46:10 <HackEgo> phantom____hoover? ¯\(°_o)/¯
08:46:25 <fizzie> `? phantom_____hoover
08:46:26 <HackEgo> phantom_____hoover? ¯\(°_o)/¯
08:46:31 <fizzie> (You never know.)
08:47:01 <fizzie> It's like those game easter eggs when you do something repeatedly and it stops giving new results and then after enough repetitions there's still one more.
08:47:12 <oerjan> OKAY
08:47:48 <fizzie> Like uh that one game's installer where you set your soundcard settings and press test, and it says in a British accent "your soundcard works perfectly", and if you keep mashing it it'll say "it doesn't get any better than this".
08:47:57 <fizzie> And I think one more thing if you keep doing it.
08:48:11 <oerjan> `run echo 'Phantom Michael Hoover is a true Scotsman and hatheist.' >wisdom/phantom_hoover
08:48:12 <fizzie> (The British accent is a relevant and key detail.)
08:48:15 <HackEgo> No output.
08:48:44 <fizzie> `run echo "It doesn't get any better than this." >wisdom/phantom_______hoover
08:48:48 <HackEgo> No output.
08:49:45 <oerjan> `run echo "OK you got me there." >wisdom/phantom__________hoover
08:49:49 <HackEgo> No output.
08:51:33 <fizzie> `run echo '<span accent="British">Your soundcard works perfectly.</span>' >wisdom/phantom____________________hoover
08:51:37 <HackEgo> No output.
08:51:44 <fizzie> Okay, maybe that was a bit frivolous.
08:52:13 <oerjan> you think?
08:53:19 <fizzie> A frivolous use of unrenewable bot resources.
08:53:28 <oerjan> shocking
08:54:34 <fizzie> http://www.youtube.com/watch?v=q_A1GNx0M9M everything is in the internets nowadays.
08:55:28 <fizzie> (He sounds so angry.)
08:56:26 -!- keb_ has joined.
08:57:24 -!- keb has quit (Ping timeout: 248 seconds).
09:00:12 <Sgeo> Did I do the elliott Fiora thing? I don't think so
09:00:17 -!- Arc_Koen has joined.
09:01:09 <fizzie> http://sprunge.us/SMRN perhaps I should turn that off.
09:02:38 <oerjan> <elliott> hey i just realised #esoteric is actually good again <-- THE END TIMES I SAY
09:03:53 * oerjan suddenly realizes he's channeling the zombie (great )*grandfather from girl genius
09:04:10 <oerjan> wait, not zombie, mummy
09:06:49 <zzo38> Once I found a CAPTCHA it asked "Do you shop at Canadian Tire?" (it wouldn't let me type in the question)
09:07:38 <oerjan> did it accept "Yes" or "No"?
09:07:42 <shachaf> zzo38: Well? Do you?
09:08:18 <zzo38> shachaf: No; I don't own a car so I don't need to.
09:09:59 <zzo38> oerjan: I didn't try to answer it
09:10:43 -!- Taneb has joined.
09:12:23 <zzo38> But I did try to type in the question and it won't work
09:12:56 <zzo38> Only "Yes" or "No" will fit but I did not try to submit the form so I didn't know
09:17:43 <fizzie> I've got "your soundcard works perfectly" looping in my head. :/
09:19:06 <oerjan> i guess the soundcard in your head works perfectly, then
09:23:39 <Sgeo> Hmm, the Factor server might be working again
09:31:43 <oerjan> I've got the housemate's talking on the phone looping in my head. :/
09:32:51 <shachaf> hi oerjan
09:32:54 <shachaf> Any new adventures?
09:32:55 <oerjan> hi shachaf
09:33:16 <oerjan> when did i ever have an adventure?
09:33:38 <shachaf> ,4answer the question
09:33:49 <oerjan> no. no new adventures.
09:34:38 <shachaf> What a shame.
09:34:58 <oerjan> it's ok i'm hoping the world will end next week
09:35:19 <oerjan> (not believing, mind you.)
09:37:08 -!- augur has quit (Remote host closed the connection).
09:42:11 -!- augur has joined.
09:42:52 -!- evitable has joined.
09:43:06 <Deewiant> fizzie: "that one game" was Warcraft II, maybe others as well.
10:02:17 -!- ogrom has joined.
10:02:20 <Sgeo> ...Tcl just got a bit crazy
10:07:13 -!- sebbu has quit (Ping timeout: 245 seconds).
10:13:40 <oerjan> <elliott> kmc: please tell me that's actually true <-- i've pointed it out before. it seems too much of a coincidence not to be true
10:13:57 <oerjan> i hope kmc didn't get it from me though...
10:16:33 <Sgeo> Help there's either a crazy person or a troll in #tcl
10:16:50 <Sgeo> As in, talking about brains being forcefed, begging me to contact the CIA
10:17:22 <oerjan> ban him for being off topic, and tell him to report for termination.
10:17:25 <oerjan> hth.
10:18:37 <Sgeo> <lagagoose> you are part of a cult
10:18:38 <Sgeo> <lagagoose> your mother is trying to work the system
10:18:38 <Sgeo> <lagagoose> she is probably going to prison
10:19:13 * oerjan swats Sgeo for bringing this here -----###
10:19:56 <shachaf> More like a phyg, right?
10:20:05 <oerjan> wat
10:20:41 <shachaf> ^rot13 phyg
10:20:41 <fungot> cult
10:20:42 <oerjan> "Phygs are flying pigs. Their spawning patterns are very similar to those of flying cows."
10:21:00 <shachaf> lesswrong.com people say "phyg" instead of "cult" now so the latter word doesn't get associated with them.
10:21:16 <oerjan> ...nice try.
10:21:50 <shachaf> Hm?
10:22:53 <oerjan> sorry, i'm grumpy. shouldn't argue in this state.
10:23:04 <oklopol> oklopol
10:23:08 <oklopol> ...
10:23:14 <oerjan> oerjan
10:23:18 <oklopol> k why don't you go ahead and ignore that
10:41:17 -!- sebbu has joined.
10:47:54 <Taneb> My quest to play on my PS2 is further hampered by having no way to save my game
10:52:41 <oerjan> maybe this is what will push someone to invent time travel
10:55:08 <nortti> Taneb: you don't have memory cards?
11:00:18 <Taneb> nortti, no
11:00:21 <Taneb> Just ordered one
11:04:42 -!- oerjan has quit (Quit: leaving).
11:05:39 <zzo38> Any suggestions for CsoundMML?
11:05:55 <zzo38> Anyone writing music? If so, you can know
11:06:37 <shachaf> zzo38, your time has come
11:07:08 <zzo38> shachaf: My time has come? To do what? Jump in the lake?
11:08:01 <shachaf> zzo38: Yes.
11:08:57 -!- zzo38 has quit (Quit: To jump in the lake... in the dark... and somehow to get back out again and get dry again.).
11:09:15 -!- sebbu has quit (Read error: Connection reset by peer).
11:09:45 -!- sebbu has joined.
11:11:40 -!- nortti has changed nick to nortti_.
11:12:39 -!- nortti_ has changed nick to nortti.
11:18:28 -!- nortti_ has joined.
11:18:35 -!- comex has quit (Remote host closed the connection).
11:19:45 -!- nortti has quit (Quit: Lhdss).
11:19:54 -!- nooga has quit (Ping timeout: 264 seconds).
11:19:58 -!- nortti_ has changed nick to nortti.
11:56:10 -!- Phantom_Hoover has joined.
11:58:53 -!- nooga has joined.
12:02:35 -!- evitable has quit (Ping timeout: 255 seconds).
12:18:16 -!- ais523 has joined.
12:20:09 <ais523> lambdabot: messages?
12:20:27 <ais523> (I asked Rodney and tried to ask heptagram, but it wasn't here; I thought you didn't want to be left out)
12:22:08 <shachaf> ais523: @messages
12:22:12 <shachaf> Or @messages?
12:22:27 <shachaf> Come on, at least learn the bot's language!
12:22:54 <ais523> shachaf: well it replies on the first thing you say when you enter a chanel
12:22:56 <ais523> *channel
12:22:59 <ais523> regardless of what it is
12:23:08 <ais523> so I thought I'd use the same format I did with the other bots, which follow the same rule
12:24:06 <shachaf> Fair enough.
12:24:15 <shachaf> @ask ais523 thanks for being considerate
12:24:15 <lambdabot> Consider it noted.
12:29:48 <Sgeo> @ask Sgeo hello?
12:29:49 <lambdabot> You can tell yourself!
12:29:59 <Sgeo> But that wasn't a statement, it was a question?
12:31:25 <Phantom_Hoover> that, meanwhile, was a statement with a question mark at the end
12:32:33 <Sgeo> Would it be funny to ask a question with a period at the end.
12:33:33 <Phantom_Hoover> no
12:53:26 -!- epicmonkey has quit (Remote host closed the connection).
12:55:21 -!- epicmonkey has joined.
12:55:34 -!- epicmonkey has quit (Remote host closed the connection).
12:55:51 -!- epicmonkey has joined.
12:59:42 <Phantom_Hoover> Whoah, Feynman diagrams are categories?
13:04:38 <ais523> Phantom_Hoover: basically everything's a category
13:04:39 <lambdabot> ais523: You have 1 new message. '/msg lambdabot @messages' to read it.
13:04:46 <ais523> @messages
13:04:46 <lambdabot> shachaf asked 40m 31s ago: thanks for being considerate
13:05:07 <ais523> Phantom_Hoover: we caused some consternation a while back when we discovered that our representations of asynchronous programming languages /weren't/ categories
13:30:13 <Phantom_Hoover> in any way at all?
13:33:51 <Sgeo> "dup pprint write " dup.... dammit
13:33:55 <Sgeo> Stupid spaces
13:35:32 <Sgeo> " dup pprint write " dup pprint write
13:35:41 <Sgeo> That's almost too easy
13:36:30 <Sgeo> " [ pprint ] [ write ] bi " [ pprint ] [ write ] bi
13:43:27 <Sgeo> http://ideone.com/RLZkoq
13:43:35 <Sgeo> Wasn't quite expecting removing the space like that to work
14:21:20 -!- david_werecat has joined.
14:24:15 -!- sebbu has quit (Read error: Connection reset by peer).
14:24:45 -!- sebbu has joined.
14:24:47 -!- sebbu has quit (Changing host).
14:24:47 -!- sebbu has joined.
15:00:54 -!- Taneb has quit (Remote host closed the connection).
15:10:58 -!- MDream has changed nick to MDude.
15:26:19 <Deewiant> http://www.cs.hut.fi/~travis/data-structures/matti.pdf my mushspace slides are apparently online now; they mostly concern R-trees so they might not be that interesting, but anyway.
15:30:18 <ais523> <Phantom_Hoover> in any way at all? ← they didn't compose correctly, so they didn't obey all the axioms
15:31:30 <MDude> Looking mushspace, I find sich things as mosh space, musespace, and at least twice "how mush space".
15:31:54 <Deewiant> It's not finished yet so it's not online anywhere.
15:32:04 <Phantom_Hoover> ais523, surely you can coax one out somehow
15:32:46 <ais523> well, yeah, but you have to add a bunch of junk just to make things fit
15:44:49 -!- monqy has joined.
15:53:38 -!- ogrom has quit (Ping timeout: 250 seconds).
15:56:20 -!- ogrom has joined.
16:03:36 -!- ogrom has quit (Ping timeout: 250 seconds).
16:19:13 -!- Nisstyre has quit (Quit: Leaving).
16:28:54 <fizzie> Deewiant: Yes, I learned it from the video link I posted too.
16:32:35 <Deewiant> fizzie: Ah, I didn't realize that was related and/or missed it, sorry.
16:33:54 -!- david_werecat has quit (Ping timeout: 256 seconds).
16:35:02 <fizzie> I do have a vague feeling it might've been elsewhere too. At least there was a number of games with a SETUP.EXE or some-such to configure sound effect/music settings.
16:46:51 -!- Phantom_Hoover has quit (Remote host closed the connection).
16:48:31 -!- Phantom_Hoover has joined.
17:49:54 -!- Bike has joined.
18:16:20 -!- ogrom has joined.
18:16:41 -!- sebbu has quit (Read error: Connection reset by peer).
18:17:06 -!- sebbu has joined.
18:24:42 -!- oerjan has joined.
18:26:56 -!- NihilistDandy has quit (Quit: Computer has gone to sleep.).
18:29:26 -!- AnotherTest has joined.
18:29:33 <AnotherTest> Hello
18:29:47 <ais523> hi
18:29:49 <oerjan> Olé
18:29:54 <ais523> btw, has your test finished yet?
18:29:54 <c00kiemon5ter> o/
18:30:02 <ais523> it must be one of the longest tests ever
18:30:38 <oerjan> bah he finished it a long time ago, this is _another_ test
18:30:39 <AnotherTest> Probably not
18:30:53 <AnotherTest> Perl developers tend to take a longer time
18:31:06 <AnotherTest> (5 years or something IIRC?)
18:31:28 <AnotherTest> The truth, however, is that I lack inspiration as to finding a good pseudonym
18:35:17 -!- carado has quit (Ping timeout: 246 seconds).
18:36:11 <oerjan> AnotherGoodPseudonym
18:36:30 -!- WeThePeople has joined.
18:37:12 <c00kiemon5ter> or A]\[OTH3r1337pZ3ud0|\|ym
18:38:07 <oerjan> 0r +h4t
18:43:52 <AnotherTest> I'll pick ais524, sounds like a nice name
18:44:40 <elliott> hi
18:44:47 <AnotherTest> hello
18:45:54 <ais523> AnotherTest: it's not taken, it'll be fine
18:45:58 <ais523> might cause some tab-complete issues
18:46:15 <ais523> but when I tab-complete my own name it's usually in #nethack and I keep pinging AimHere by mistake
18:46:41 <AnotherTest> Maybe, _ais523, that wouldn't cause any problems I think?
18:46:53 <ais523> hmm, probably
18:47:03 <ais523> there was an ehird` (elliott) and an ehird (not elliott) simultaneously for a while
18:47:07 <Sgeo> AimHere, that name sounds very familiar
18:47:14 <ais523> although nowadays, ehird without the ` is elliott
18:47:27 <AnotherTest> Or Ais523?
18:47:31 <Sgeo> Oh, apparently that person is in #clojure
18:47:37 <ais523> AnotherTest: that is a clash
18:47:41 <AnotherTest> :(
18:48:17 <AnotherTest> als523
18:48:44 <Bike> 523sigais
18:49:47 -!- AnotherTest has changed nick to _ais523.
18:50:19 <ais523> _ais523: apparently doing that pings me
18:50:20 <oerjan> that's actually a clash in irssi
18:50:29 <_ais523> :(
18:50:37 <ais523> in fact, everything you say pings me now
18:50:50 <oerjan> fais523ncy
18:50:53 <_ais523> Yay! Unlimited attention from ais523
18:51:05 <_ais523> Guess what? You just got pinged!
18:51:17 <ais523> I could put you on ignore if it got annoying
18:51:33 <_ais523> I'll just go for ais524 I think
18:51:41 -!- _ais523 has changed nick to ais524.
18:51:59 * ais523 catches oerjan in a butterfly net -----\XXXXX/
18:52:09 <ais523> oerjan: I've been waiting for /years/ to do that when you weren't expecting it
18:52:26 <oerjan> i'll admit i wasn't expecting it
18:52:32 <ais523> but most of the times I remembered, it was because the conversation was on a subject that might make you expect it (that's why I was reminded)
18:52:32 <elliott> @ask zzo38 Is http://esolangs.org/w/index.php?title=Munching_Squares.pushem&curid=3424&diff=35104&oldid=21006 a correct change?
18:52:32 <lambdabot> Consider it noted.
18:52:39 <oerjan> mostly because i haven't seen it for years
18:52:39 <ais523> and the other couple of times you weren't here
18:53:10 <ais524> ais523: It's not fair. You have a prime number and I don't
18:53:23 <oerjan> ooh, 523 is prime?
18:53:28 <oerjan> `factor 523
18:53:32 <HackEgo> 523: 523
18:53:46 <ais523> is there any base in which 524 is prime?
18:54:08 <Bike> what a question.
18:54:48 <fizzie> Base 7?
18:54:49 <ais523> it'd have to be odd, and at least base 6 or it'd be missing the required digits, and so at least base 7
18:54:57 <oerjan> > [readInt b (const True) digitToInt "524" | b <- [6..]]
18:54:59 <lambdabot> [[(196,"")],[(263,"")],[(340,"")],[(427,"")],[(524,"")],[(631,"")],[(748,""...
18:55:15 <fizzie> 263 is prime.
18:55:24 <olsner> 631 too
18:55:39 <ais523> fizzie: did you check, or did you have it memorized?
18:55:44 <oerjan> > [fst.head$readInt b (const True) digitToInt "524" | b <- [6..]]
18:55:46 <fizzie> ais523: I did check.
18:55:46 <lambdabot> [196,263,340,427,524,631,748,875,1012,1159,1316,1483,1660,1847,2044,2251,24...
18:55:48 <ais523> ais524: see, your nick is prime after all
18:57:11 <olsner> hmm, 1847 and 2251 are also prime
18:57:17 -!- comex has joined.
18:57:29 <ais523> is there a primality checker in lambdabot's standard library?
18:57:51 <oerjan> not to my knowledge...
18:57:55 <oerjan> :t isPrime
18:57:57 <lambdabot> Not in scope: `isPrime'
18:57:57 <lambdabot> Perhaps you meant `isPrint' (imported from Data.Char)
18:57:57 <ais523> (which IIRC is a superset of Haskell's standard library?)
18:57:58 <ais524> ais523: Yes, but it does it form a twin prime like yours?
18:58:04 <ais523> it seems like the sort of thing that would be there
18:58:27 <elliott> 10:19:13 * oerjan swats Sgeo for bringing this here -----###
18:58:42 <elliott> oerjan: well he already brings the rest of every programming channel here.
18:58:58 -!- ais523 has changed nick to this.
18:59:01 <this> not registered!
18:59:16 -!- ais524 has changed nick to ais523.
18:59:18 <this> now I can do Java implementations
18:59:37 -!- ais523 has changed nick to Guest65326.
18:59:37 -!- Guest65326 has quit (Killed (card.freenode.net (Nickname regained by services))).
18:59:37 -!- this has changed nick to ais523.
18:59:47 <ais523> whoops, wrong command
18:59:50 <oerjan> ais523: clearly primes are not categorical enough for haskell
18:59:54 <elliott> fizzie: Video link?
18:59:59 -!- AnotherTest has joined.
18:59:59 <ais523> I was only trying to renick them
19:00:04 <ais523> AnotherTest: sorry, wrong command
19:00:08 <ais523> I was trying to force-change your nick
19:00:11 <AnotherTest> auch
19:00:15 <ais523> rather than boot you off altogether
19:00:19 -!- AnotherTest has changed nick to ais524.
19:00:23 <elliott> ais523: the latter is far more fun
19:00:25 <ais524> oh wait
19:00:28 -!- ais524 has changed nick to ais521.
19:00:29 <elliott> comex: hi
19:00:36 <ais521> Now we form a prime twin?
19:00:49 <ais523> actually Freenode changed that a while ago
19:00:54 <ais523> it used to just force renick
19:01:13 <oerjan> evil mirror twins? i think this must be against the prime directive
19:01:57 <ais523> OK, history question: has there ever actually in real life been a pair of identical twins, except one is good and one is evil?
19:02:09 <ais521> Chances are rather high
19:02:16 -!- asiekierka has quit (Quit: ZNC - http://znc.sourceforge.net).
19:02:23 <ais521> ais523: for what does ais stand anyway?
19:02:25 <ais523> I think they're rather lower
19:02:28 <ais523> evil people are rare
19:02:45 <ais523> ais521: it doesn't really matter, does it?
19:02:53 <oerjan> i guess alfred göring wasn't a twin...
19:02:56 <MDude> The real question is wether there was such a case, and the main visible difference is that only one of them has a beard.
19:03:12 <ais521> ais523: It doesn't no, oh btw, 521 is a lucas prime and 523 is not (take that, ha!)
19:03:25 <ais523> ais521: the 523 was randomly selected
19:03:28 <ais523> by a computer
19:03:33 <ais523> apparently, discordians find this hilarious
19:03:36 <ais521> And it's in a primitive Pythagorean triple!
19:03:37 <MDude> It's be less likely anyway.
19:03:50 <ais523> ais521: do you have a beard?
19:04:11 <ais521> ais523: sort of
19:04:12 * elliott wonders if ais521 is going to continue using a nick so confusing
19:04:19 <ais523> elliott: it's not confusing for me
19:04:24 <ais523> I know whether I've said a line or not
19:04:25 * ais521 has already registered it
19:04:38 <elliott> hmm, maybe I can make my client force-rename nicks
19:04:56 -!- comex has quit (Remote host closed the connection).
19:05:02 <MDude> Well at least if you stick with that, we won't have to worry about you shuffling around like you jsut did.
19:05:16 <ais523> elliott: how? if you don't have admin-level access to the servers (don't think even opers can forcibly rename…)
19:05:26 <elliott> ais523: just for me, I mean
19:05:31 <Bike> i think he means making his client display a different name
19:05:43 <MDude> I'm pretty sure you switched places at least one?
19:05:47 <Bike> i'm pretty sure irssi is configurable enough to do that.
19:05:50 <ais521> ais523: 2^251 - 1 is a Mersenne prime, aha!
19:06:05 <MDude> *once
19:06:10 -!- Nisstyre-laptop has joined.
19:06:11 <ais523> so (2^250)(2^251-1) is a perfect number
19:06:20 <oerjan> sorry, *albert
19:06:31 <ais523> all even perfect numbers follow that pattern (that's actually quite easy to prove)
19:06:46 <ais523> odd perfect numbers aren't known to exist, although nobody's yet managed to conclusively rule them out
19:07:49 <oerjan> they have to be pretty large, though
19:08:02 <elliott> hypothesis: there is exactly one odd perfect number
19:08:08 -!- comex has joined.
19:08:16 <elliott> and it's hideously gigantic
19:08:33 <Phantom_Hoover> and it's uncomputable
19:08:47 <oerjan> Phantom_Hoover: that's not logically possible
19:08:52 <elliott> Phantom_Hoover: that, um
19:08:54 <elliott> all integers are computable
19:09:00 <Phantom_Hoover> fine
19:09:09 <Bike> oh geez, we don't even know if there are infinitely many mersenne primes.
19:09:16 <Phantom_Hoover> it's whatever the busy beaver numbers are
19:09:26 <Bike> busy beaver is a /function/
19:09:30 <elliott> Bike: there's 445892348932 exactly.
19:09:32 <Bike> which is how it's uncomputable
19:09:35 <Bike> elliott: !!!
19:09:41 * elliott 's fundamental mathematical principle: everything is as ugly, awkward, and imperfect as possible for no reason
19:09:45 <Bike> but yeah this is the weirdest math ignorance i've seen since euler-mascheroni
19:09:46 <Phantom_Hoover> this is what i meant
19:09:58 <ais521> they went over 10^300 for finding perfect numbers
19:10:00 <elliott> guys i think we are going to dent Phantom_Hoover's ego so hard it might break his spine maybe we should stop
19:10:06 <ais521> well according to http://oddperfect.org/
19:10:17 <Phantom_Hoover> uh
19:10:46 <Phantom_Hoover> ok i appear to have said some things without remembering them
19:11:00 <Bike> "is it transcendent?" "dunno" "is it constructible?" "well, uh" "is it rational" "look i don't know okay"
19:11:17 <ais523> Phantom_Hoover: I don't remember everything I've ever said
19:11:26 <Phantom_Hoover> because that's the only way that response makes sense
19:11:28 * ais523 tries to remember something that they don't remember they said
19:11:34 <ais523> nope!
19:11:41 -!- sebbu has quit (Read error: Connection reset by peer).
19:12:08 <Bike> that site says (2801^79-1) is factored, but doesn't give the factors. assholes.
19:12:13 -!- sebbu has joined.
19:12:35 <elliott> Bike: 2 and (2801^79-1)/2
19:12:44 <elliott> truely a brakethrough...............
19:12:46 <oerjan> elliott: ghosts don't have spines hth
19:13:25 <elliott> oerjan: have you ever seen one
19:13:27 <elliott> how could you know
19:15:09 <oerjan> past life memories, obviously
19:15:21 <Phantom_Hoover> (just for the purposes of clarification i think i meant that its existence was nonconstructively proven_
19:15:28 <Bike> maybe phantom is some other kind of phantom
19:17:20 <oerjan> hm... does he have a good singing voice?
19:17:24 <olsner> the phantom probably has a spine
19:18:43 <elliott> Phantom_Hoover: if you can nonconstructively prove an integer exists then you can constructively prove it exists...
19:18:52 <elliott> unless I severely misunderstand something
19:19:08 <elliott> which I may. oerjan?
19:19:55 <oerjan> i don't think that follows
19:20:21 -!- glogbackup has joined.
19:24:22 <elliott> yeah the algorithm I had in mind didn't work :(
19:24:35 <elliott> if the property is decidable it holds though, right?
19:25:42 <oerjan> not unless you have a constructive upper bound
19:27:02 <elliott> hmm
19:27:24 <elliott> my thought was that you could just loop through all the integers and eventually get to one that satisfies the property. but I suppose the problem is that the integer could very well just not actually exist
19:27:35 <elliott> classic logic is weird
19:27:42 <elliott> *al
19:27:51 <oerjan> look up omega inconsistency
19:28:28 <elliott> yeah, I know there are weirdnesses like this in general
19:28:34 <elliott> just hard to get an intuitive grasp for how fucked up it is :P
19:34:18 <elliott> Deewiant: "Overlapping isn’t necessary but for the scope of this presentation it is"
19:34:24 <elliott> very good
19:34:43 -!- c00kiemon5ter has changed nick to omnomnomnom.
19:34:47 -!- omnomnomnom has changed nick to c00kiemon5ter.
19:43:29 <pikhq_> Gregor: Good episode this week.
19:46:57 <Phantom_Hoover> of what
19:47:03 <Phantom_Hoover> wait
19:47:12 <Phantom_Hoover> this is going to be mlp, forget i asked
19:52:27 <oerjan> mammal linguistic programming
19:53:09 * oerjan suddenly realizes a new interpretation of "Phantom_Hoover"
19:53:20 <Phantom_Hoover> ooh, what
19:53:33 <oerjan> "hooves"
19:53:57 <oerjan> clearly you're the ghost of a pony hth
19:55:46 -!- ogrom has quit (Quit: Left).
19:58:43 <olsner> I guess the shock hasn't subsided far enough for him to be able to type yet
20:02:30 <oerjan> presumably.
20:02:34 <elliott> you can't type with hooves...
20:02:42 <oerjan> oh good point
20:03:19 <olsner> "your hands are now hooves"
20:04:15 <Fiora> everypony knows they don't have computers in equestria anywyas
20:06:51 <Deewiant> elliott: Basically I realized kinda late that I should be able to get rid of it and simplify lots of things :-P
20:07:51 <elliott> Deewiant: I should write a benchmark to try and get pathological performance out of R-trees
20:07:55 <elliott> So Shiro 2 can beat you on it.
20:10:29 <Deewiant> Hmm... you need to make every single non-leaf node overlap with the coordinates you're looking up and then make sure that only the last leaf tried actually contains them, or something close enough to that to be called "pathological".
20:10:34 <Deewiant> I'm not sure how possible that is. :-P
20:11:53 <elliott> Hey, you got worst case O(n), I'll find it somewhere!!
20:12:33 <Deewiant> If you come up with something I can switch to R+ trees which should have zero overlap if no leaves overlap... I think.
20:13:12 <Deewiant> Well, they have zero overlap anyway, they just duplicate info.
20:13:31 <elliott> Deewiant: That sounds interesting, so clearly I would be doing you a service by giving you a reason to write that stuff.
20:13:53 <Deewiant> Well, it's on my agenda to try a bunch of different data structures for this anyway.
20:14:55 <Deewiant> Getting rid of the "scope of this presentation" overlapping will get rid of T-ordering which will massively lower the difficulty of trying a new data structure, and it might improve performance greatly anyway so I need to do that first-ish.
20:15:42 <Deewiant> 1. R-trees
20:15:44 <Deewiant> 2. array-based HV/VH tree
20:15:46 <Deewiant> 3. MX-CIF quadtree
20:15:48 <Deewiant> 4. bucket PR-CIF k-d tree a.k.a ordinary HV/VH tree
20:15:50 <Deewiant> 5. balanced 4d k-d tree with representative points
20:16:32 <Deewiant> That's my data structures todo.
20:17:28 <elliott> Deewiant: I have a feeling nobody has figured out how to do this stuff efficiently and persistently :(
20:17:29 <fizzie> elliott: [10:54:33] <fizzie> http://www.youtube.com/watch?v=q_A1GNx0M9M everything is in the internets nowadays.
20:18:15 <Deewiant> elliott: Nobody has figured out how to do my stuff efficiently in a dynamic context. :-P
20:19:22 <Deewiant> elliott: Your stuff is basically just persistent key-value stores, unless you go the AABB route in which case your stuff is my stuff + persistence which is definitely not figured out, yes.
20:19:46 <elliott> Deewiant: Right,I'd like some kind of properly-spatial structure.
20:19:51 <elliott> s/,/, /
20:20:08 <elliott> Deewiant: I don't think any kind of hash map will scale well to Funge-98.
20:20:38 <elliott> Something like a hash map storing spatial regions with a quad tree for the regions themselves might be good, but I'd prefer something much fancier in the end.
20:21:25 <elliott> fizzie: what a good video
20:24:17 <fizzie> elliott: It doesn't get any better than that.
20:24:37 <Deewiant> elliott: You can always use the generic techniques to make an arbitrary data structure persistent.
20:25:06 <elliott> Deewiant: I don't know of any generic way to make an arbitrary data structure persistent without hurting performance...
20:25:15 <elliott> Isn't that actually known impossible?
20:25:25 <Deewiant> elliott: Well, maybe it won't hurt persistence too much. :-P
20:25:27 <Deewiant> Er, performance*
20:25:46 <elliott> Well, it's more that I don't know of any non-totally-naive-and-useless way to do it at all ;P
20:25:49 <elliott> s/;/:/
20:25:53 <Deewiant> And I can't remember, maybe there's a proven O(log n) lower bound.
20:26:00 <elliott> (I'm sure there are ways, though.)
20:26:03 <elliott> I think oerjan knows things about this.
20:26:08 <Deewiant> elliott: Watch lecture 1 http://courses.csail.mit.edu/6.851/spring12/lectures/
20:26:39 <elliott> Deewiant: That sounds like work. (Okay, maybe later.)
20:26:57 <Deewiant> And/or read the notes, and read Okasaki etc :-P
20:26:58 <elliott> Clearly deriving persistent structures from mutable ones is the totally wrong way around, though. I have a pride-based type system that doesn't allow you to polish a turd.
20:27:08 <elliott> I have a physical copy of Okasaki! It's just unread.
20:27:18 <elliott> (Anyway I don't think Okasaki systematically derives persistent structures from mutable ones?)
20:27:56 <Deewiant> I also have a physical copy, which is not unread. I'm leafing through it to see if he says anything on-topic.
20:29:25 <Deewiant> He refers to path copying and then mentions some newer persistence methods which aren't purely functional.
20:29:39 <olsner> iirc he does make persistent red-black (and other, splay?) trees where instead of log n mutable updates you just create log n new tree nodes
20:34:54 -!- MDude has quit (Ping timeout: 264 seconds).
20:36:39 -!- zzo38 has joined.
20:36:55 <zzo38> This time frigg was on again
20:36:55 <lambdabot> zzo38: You have 1 new message. '/msg lambdabot @messages' to read it.
20:37:00 <zzo38> OK
20:37:02 <zzo38> ?messages
20:37:02 <lambdabot> elliott asked 1h 44m 30s ago: Is http://esolangs.org/w/index.php?title=Munching_Squares.pushem&curid=3424&diff=35104&oldid=21006 a correct change?
20:37:07 <oerjan> i have a physical copy of Okasaki! he keeps trying to escape his cage though, may have to put him down.
20:37:48 <oerjan> i mean, i know nothing!
20:39:12 <zzo38> elliott: What was changed?
20:40:27 <elliott> an extra space
20:40:28 <Deewiant> zzo38: Compare http://esolangs.org/w/index.php?title=Munching_Squares.pushem&oldid=21006 and http://esolangs.org/w/index.php?title=Munching_Squares.pushem&oldid=35104
20:40:29 <elliott> now the "Munching_Squares.pushem =
20:40:29 <elliott> "
20:40:32 <elliott> is in a code block
20:40:38 <FreeFull> How do I give ghci type allocations anyway
20:40:54 <FreeFull> annotations*
20:41:01 <FreeFull> I have found code that it fails on without a type annotation, and it's annoying
20:41:38 <zzo38> elliott: I don't think it matters; it is OK either way
20:41:42 <zzo38> Probably
20:41:43 <oerjan> > let f :: Int; f = 3 in f
20:41:44 <lambdabot> 3
20:41:58 <FreeFull> Ah, cheers
20:42:11 <oerjan> FreeFull: except without the "in f" part
20:42:18 <Bike> > 3 :: Fractional
20:42:19 <lambdabot> Expecting one more argument to `GHC.Real.Fractional'
20:42:59 * oerjan detects some type class confusion
20:43:13 <oerjan> > 3 :: Rational
20:43:14 <lambdabot> 3 % 1
20:43:18 <FreeFull> oerjan: The code that fails without a type annotation is pop = state $ \(x:xs) -> (x,xs)
20:43:31 -!- asiekierka has joined.
20:43:35 <shachaf> @where dmr
20:43:35 <lambdabot> http://www.haskell.org/haskellwiki/Monomorphism_restriction
20:43:37 <Deewiant> FreeFull: :set -XNoMonomorphismRestriction
20:43:51 <FreeFull> Funnily enough, similar code for push works without a type annotation for some reason
20:44:00 <shachaf> monqy: Good afternoon, human.
20:44:04 <oerjan> FreeFull: darn the others are fast
20:44:27 <shachaf> FreeFull: It's less funny once you read the link.
20:46:22 <FreeFull> oerjan: Yes, they are
20:46:28 <Bike> oh sweet, i haven't seen a wiki page in talk mode for a while
20:46:39 <FreeFull> Also I trust #esoteric more with haskell than #haskell
20:46:42 <monqy> shachaf: hi
20:47:26 -!- MDude has joined.
20:47:35 <elliott> Bike: we have http://esolangs.org/wiki/List_of_ideas, which is in mess mode
20:48:00 <Bike> yeah i've seen that, most of it is more boring than this haskell page though
20:48:08 <Bike> "A language based on the idea of communism. There would be only one great editor (a wiki or similar) and all programmers would write only one big program that does everything" e.g.
20:48:52 <elliott> yes it's not the best page
20:48:55 <oerjan> hm i think we discussed that a bit
20:49:41 <Bike> Though I did learn about Chaitin's "let's compile to diophantines!" paper, so that makes up for it i suppose.
20:50:51 <Bike> "Known laws of physics are expressable with equations, but what if there are yet unknown laws of physics that can be expressed only as programming languages?" and some of it's just pretty amusing
20:52:27 -!- ais521 has left.
20:54:10 <FreeFull> All programming constructs can be expressed with mathematics
20:54:19 <elliott> you don't say.
20:54:25 <FreeFull> Except one
20:54:31 <FreeFull> I won't say which one though
20:55:02 <Bike> (it's actually intercal's mingle operator)
20:55:49 <ais523> mingle's simpler than select
20:56:20 <ais523> you can express it as writing the numbers in binary, interpreting them as base 4, multiplying the LHS by 2, adding, then converting the resulting base-4 number back to binary
21:03:45 <FreeFull> select * from esoteric_languages
21:04:03 <oerjan> AAAAAAAAAAAAAAAAAAA!!!!!!!!!!!!!!!!!!!
21:04:05 <oerjan> or something
21:07:26 <shachaf> @ty ($ []) . appEndo . getConst . traverse (Const . Endo . (:))
21:07:27 <lambdabot> Traversable t => t a -> [a]
21:07:35 <shachaf> monqy: best function?!
21:08:18 <FreeFull> :t appEndo
21:08:20 <lambdabot> Endo a -> a -> a
21:08:27 <FreeFull> :info Endo
21:08:41 -!- WeThePeople has quit (Changing host).
21:08:41 -!- WeThePeople has joined.
21:09:07 -!- WeThePeople has quit (Quit: Leaving).
21:09:26 <oerjan> :t toList
21:09:27 <lambdabot> Not in scope: `toList'
21:09:28 <lambdabot> Perhaps you meant one of these:
21:09:28 <lambdabot> `Data.Foldable.toList' (imported from Data.Foldable),
21:09:36 <oerjan> :t Data.Foldable.toList
21:09:37 <lambdabot> Foldable t => t a -> [a]
21:10:04 <FreeFull> :t Data.Foldable
21:10:05 <lambdabot> Couldn't find qualified module.
21:10:10 <FreeFull> :t Data.Foldable.Foldable
21:10:12 <lambdabot> Not in scope: data constructor `Data.Foldable.Foldable'
21:10:31 <oerjan> @src Foldable
21:10:31 <lambdabot> Source not found. stty: unknown mode: doofus
21:10:36 <oerjan> grmbl
21:10:37 <Bike> heh
21:11:18 <FreeFull> @src Data.Foldable.Foldable
21:11:18 <lambdabot> Source not found. Take a stress pill and think things over.
21:12:04 <oerjan> @src isn't very reliable
21:12:30 <ais523> @src java.util.Arrays
21:12:31 <lambdabot> Source not found. I am sorry.
21:12:36 <ais523> hmph
21:12:42 <Deewiant> @src @src
21:12:42 <lambdabot> Source not found. BOB says: You seem to have forgotten your passwd, enter another!
21:12:56 <Sgeo> Am I likely to understand implementations of exact real arithmetic in Haskell well enough to port them to Factor?
21:13:12 <monqy> maybe
21:13:22 <Bike> you mean computable reals or fixed point or rationals or continued fractions or pixies or what
21:13:27 <ais523> Sgeo: they're not that bad
21:13:34 <ais523> I translated one to Verity
21:13:35 <Sgeo> Bike, computable reals
21:13:44 <ais523> (that's the program that took a couple of days to calculate 4 binary digits of pi)
21:13:50 <Bike> yeah they're not that bad
21:14:41 <FreeFull> I reaaally like the state monad
21:14:58 <FreeFull> @src lambdabot
21:14:59 <lambdabot> Source not found. I can't hear you -- I'm using the scrambler.
21:15:05 <shachaf> Do you like it enough to call it by its true name?
21:15:17 <shachaf> Hint: Its true name doesn't involve the word "monad".
21:15:35 -!- epicmonkey has quit (Ping timeout: 260 seconds).
21:15:45 <Deewiant> Actually its true name is "steve".
21:16:06 <oerjan> crikey!
21:16:11 <FreeFull> I really like the state steve
21:16:29 <shachaf> Steve doesn't like the state.
21:16:33 <shachaf> Steve: Enemy of the State.
21:16:35 <elliott> Deewiant: " a completely different implementation using
21:16:36 <elliott> only a box for the source code and a hash table everywhere
21:16:38 <elliott> else"
21:16:41 <elliott> Deewiant: I think this is evil.
21:17:09 <Deewiant> elliott: What part? I wasn't expecting it to become public so I didn't name it as cfunge
21:17:26 <elliott> Deewiant: Oh, I thought it was an implementation you had written yourself for the purpose :D
21:17:38 <Deewiant> elliott: No no, it was cfunge
21:17:51 <Sgeo> When can we expect dfunge?
21:17:54 * Sgeo gets shot
21:18:06 <elliott> its called ccbi Sgeo.....
21:18:22 <Bike> after c is p, don't you know anything about language etymologies!
21:18:33 <fizzie> Pee-funge.
21:19:33 <fizzie> The programming language after C will be called also C; then B and I, respectively. They're named after CCBI, C's precursor.
21:20:17 <Bike> blasphemy
21:20:23 <ais523> clearly the /best/ implementation is just to use an array and, upon out-of-bound writes, retroactively change how large it was
21:20:32 <ais523> (actually don't, that would be hilariously inefficient)
21:21:10 <elliott> Deewiant: How big is a 32-bit Fungespace again?
21:21:19 <Deewiant> elliott: 64 bits
21:21:26 <Deewiant> elliott: 2^32 * 2^32
21:21:31 <elliott> I... suppose that's obvious.
21:21:35 <elliott> I forget what cells are though.
21:21:38 <Deewiant> For two dimensions
21:21:44 <elliott> 32-bit values, right?
21:21:47 -!- zzo38 has quit (Remote host closed the connection).
21:22:05 <elliott> So it's "only" 64 exabytes.
21:22:14 <elliott> What's the biggest RAM a supercomputer has these days?
21:22:18 <Deewiant> elliott: "A Funge-98 interpreter, ideally, has an addressing range equal to that of its cell size."
21:22:42 <Deewiant> elliott: So you can change it up a bit if you want.
21:23:07 <elliott> Deewiant: But the compatbiility(tm)!
21:23:35 <Deewiant> You could do a 16-bit one, it fits in 8 gigabytes.
21:23:42 <Deewiant> Or 16 if you want 32-bit cells.
21:24:20 <Sgeo> Googling for Befunge TDRS is useless
21:24:29 <elliott> Try spelling it right :P
21:24:37 <Deewiant> Sgeo: TRDS*
21:24:40 <elliott> Deewiant: Does Mycology depend on >=32-bit cells?
21:24:46 <Bike> hm i just got my compiler to derive a range type where the integers take three lines to print. sweet
21:24:54 <Deewiant> elliott: It shouldn't
21:25:01 <Sgeo> No, Google, I did not mean to search for Befunge teds
21:25:08 <Deewiant> elliott: It doesn't fit in less than 11 bits but otherwise it should be fine.
21:25:27 <Bike> apparently there was a TED talk about mushroom superheroics.
21:25:31 <Sgeo> rcfunge98?
21:25:49 <elliott> rcfunge98 .
21:25:49 <fizzie> Titan's total RAM size is 710 terabytes (598 for CPUs, 112 for GPUs) but maybe that doesn't quite count.
21:25:52 <elliott> s/ \././
21:26:01 <elliott> fizzie: Not quite big enough.
21:26:02 <Deewiant> elliott: Of course it might do some computations with bigger numbers, not sure about that.
21:27:04 <Deewiant> elliott: Note also that e.g. the underload interpreter ripped from fungot which is my Real-World Benchmark™ routinely writes arrays bigger than 64K.
21:27:05 <fungot> Deewiant: the " who occasionally set the sky on fire" 8-o cries what.... :d
21:27:35 <Sgeo> I want to see a Befunge-98 interpreter that passes Mycology but deliberately does not follow the spec completely
21:27:45 <Deewiant> That's not difficult
21:27:48 <fizzie> Deewiant: If you're using the underload.b98 from me, it wasn't exactly "ripped from fungot" but more like "the same thing that was later stuffed into fungot".
21:27:48 -!- 1JTAAT864 has changed nick to lightquake.
21:27:49 <fungot> fizzie: it is non-trivial to convert to tri-graphs right? got that? i'll tell you what went wrong. so to as a variable
21:27:53 <elliott> That's easy, just fuck up one instruction for a specific constant Mycology doesn't test.
21:27:55 <Deewiant> fizzie: Ah, okay.
21:28:14 <elliott> Deewiant: Eventually Funge-98 interpreters will special-case Mycology and fungot.
21:28:15 <fungot> elliott: hey! it's too slow for lots of things i hate more than program where i can get really confusing. i don'
21:28:17 <elliott> (And parts of fungot.)
21:28:18 <fungot> elliott: my thoughts exactly. there is probably some xmodmap magickery that can remap caps lock to ctrl
21:28:32 <Deewiant> elliott: Then I need to write my own benchmarks. :-(
21:29:23 <elliott> Deewiant: Will special case those, too. In fact they will use the cunning trick of special-casing every Funge-98 program.
21:29:26 <fizzie> Eventually Funge-98 interpreters will pop up a Clippy dialog saying "It looks like you're trying to run fungot! Would you like to run a functionally identical IRC bot written in C instead?"
21:29:27 <fungot> fizzie: hmm that sounds like a good way to ask this in a more effective way
21:29:32 <elliott> Deewiant: Does mushspace support n-dimensional stuff?
21:29:36 <elliott> ISTR you saying no & me being disappointed.
21:29:43 <Deewiant> elliott: In theory yes, in practice no.
21:29:57 <Deewiant> ("In theory" for an implementation doesn't make much sense I guess.)
21:30:21 <Deewiant> elliott: It does 1-3, since those are the ones actually specced in the standard.
21:30:25 <Bike> fizzie: a program that tries to prove equivalence of C and Befunge programs suddenly seems interesting/hilariously pointless.
21:30:42 <elliott> Deewiant: What's the theory?
21:31:43 <Sgeo> Should I attempt to write an Underload interpreter in Factor?
21:31:59 <elliott> No; the world would end
21:32:00 <monqy> sure why not
21:32:05 <Deewiant> elliott: It doesn't do anything that's somehow inherently dimension-limited. The worst is that in some cases I've written just the 2-3 nested loops required for up to 3 dimensions instead of the general recursive version.
21:32:49 <elliott> Deewiant: All that means is "your data structure can theoretically be extended" :P
21:32:57 <elliott> I'm thinking something that actually lets you pick the dimensions N at runtime.
21:33:16 <Deewiant> elliott: You could do that too, by making everything dynamically allocated.
21:33:25 <elliott> Sgeo: so how's your clojure monads library
21:33:41 <Bike> Sgeo: that seems like it would be ridiculously easy?
21:33:42 <Deewiant> Other than generalizing the mentioned nested loops and such, it shouldn't end up changing much of the code.
21:33:43 <elliott> Deewiant: Well, it could do fancy stuff if you pick N in {1,2,3}.
21:33:53 <Sgeo> Bike, probably
21:34:05 <Deewiant> elliott: Right, and it could be done, but I can't be arsed. :-P
21:34:06 <Bike> i mean factor already has quotation and probably eval
21:34:12 <elliott> Deewiant: In Shiro 2 I'll probably write specialised implementations for those dimensions and a general, slower one for N-dimensional stuff, and have the code pick which one to use in a typeclassy disptah manner.
21:34:16 <Deewiant> elliott: Just about nobody runs anything other than 2 dimensions anyway.
21:34:33 <Sgeo> I'm just a bit worried about parsing
21:34:47 <Bike> parsing... what
21:34:56 <elliott> Deewiant: IMO publish an RFC on how dimensions >=3 (or was it >=4) should be represented in source files.
21:35:01 <Deewiant> elliott: >=4
21:35:09 <Sgeo> Bike, parentheses
21:35:09 -!- Gregor has quit (Excess Flood).
21:35:17 -!- Gregor has joined.
21:35:17 <Bike> that's. really not hard?
21:35:41 <Deewiant> elliott: And no. Hell, I don't want anybody to do that. My string loading code is complicated enough as-is.
21:36:23 -!- Gregor has quit (Excess Flood).
21:36:31 -!- Gregor has joined.
21:36:35 <Deewiant> It needs a full rethink followed by a partial rewrite but it's annoyingly nontrivial. :-( Or then I'm just doing it stupidly.
21:36:40 <elliott> Deewiant: You wouldn't have to change your loading code, since you don't support said dimensions.
21:36:57 <Deewiant> elliott: I'd have more reason to support them if somebody did that. :-P
21:37:10 <elliott> Deewiant: Tempting.
21:37:31 <Deewiant> Well, maybe not enough.
21:37:55 <elliott> Deewiant: Say I were to write a little 5-dimensional test program...
21:37:58 <elliott> Er, 4-dimensional.
21:38:00 <elliott> 5: too many dimensions.
21:38:23 * elliott gets an idea for a delightfully feral fingerprint.
21:38:35 <Deewiant> Changing dimensionality at runtime? :-P
21:38:36 <elliott> DIMS
21:38:38 <elliott> yep!!!
21:38:56 <elliott> wouldn't be that hard to implement really
21:39:03 <elliott> you could just build an entirely new fungespace
21:39:05 <elliott> and throw away the old one
21:43:48 <fizzie> Can you specify a projection matrix from the old one to the new one?
21:44:26 <fizzie> That could make for some pretty nifty code. Plus you could flip the whole code upside-down or what have you by DIMSing from 2 to 2.
21:46:03 <elliott> fizzie: I was thinking something like that, yes.
21:46:18 <elliott> I... need to make sure Deewiant is reasonably likely to implement it first though.
21:46:45 <elliott> fizzie: (Is there a matrix fingerprint already? Code reuse and all.)
21:46:49 <FreeFull> I'm thinking, a funge program can be viewed as a long self-intersecting branching line
21:46:51 <Deewiant> Two words: huge pain. :-P
21:47:29 <elliott> Deewiant: It sounds e-z. The fingerprint would work even if you only support a finite number of dimensions anyway.
21:47:37 <oerjan> DIMSing from 2 to 1...
21:49:53 <fizzie> elliott: 3DSP (a RCS speciality) does some very limited linear algebra that's strictly specialized for R^3 and R^(3x3) and on FPSP values only, so I suppose that counts as a "no".
21:49:59 <Deewiant> elliott: But I'd want to do it efficiently. Plus hali will be like ccbi2 in that it'll have completely separate code paths for the supported dimensions, so switching from one to the other would involve something like a longjmp plus converting all the auxiliary crap used in each dimensionality.
21:50:22 <elliott> Deewiant: You prefer no implementation at all to an inefficient but simple implementation?
21:50:29 <Sgeo> Just realized my "brilliant" plan might not work
21:50:40 <Sgeo> Supposed to know stack effect at compile time usually
21:50:47 <Sgeo> I ... think
21:50:47 <Deewiant> elliott: I prefer this not being specced to having to implement it efficiently. :-P
21:50:48 <monqy> what plan and how is it brilliant
21:51:13 <monqy> "brilliant", excuse me
21:51:21 <Sgeo> To just use the Factor equivalents and run them inside a with-datastack
21:51:43 <Deewiant> elliott: Also this could be used to stack overflow the interpreter if I do the latter longjmpy bit simply, i.e. by just calling the main interpretation function again from the instruction.
21:51:51 <Deewiant> So: pain.
21:51:54 <elliott> Deewiant: But if I know the only thing stopping you from considering implementing it is the fact that you believe this will stop me writing a specification (because of my stated desire to have such a consideration before writing a specification), then I'll specify it anyway, which will be equivalent to negating the reason you had to object.
21:52:20 <elliott> i.e. you think it's (YouIntendToImplement -> ISpecify), but actually it's more like ((ISpecify -> YouIntendToImplement) -> ISpecify).
21:53:22 <Deewiant> Well, YouIntendToImplement depends on the spec and how much use it'll see. :-P
21:54:04 <elliott> How many fingerprints get used beyond their test programs exactly? :P
21:54:18 <Deewiant> Two-ish?
21:54:48 <elliott> So a good test program must count as sufficient use?
21:55:28 <oerjan> Sgeo: you should think carefully about how you'll implement S
21:55:57 <oerjan> it's the main thing that will trip up a naive translation
21:56:35 <fizzie> STRN and FILE are ones I think see a lot of real-world use in the professional Funge-98 programming circuit.
21:56:43 <Sgeo> Yeah, it means I need to store the actual code on the stack
21:56:47 <Deewiant> Using FILE instead of i and o is so lame.
21:56:55 <fizzie> i and o are the lame ones.
21:57:07 <Sgeo> Or, I guess technically there are alternatives
21:57:17 <Vorpal> fizzie, professional? You are kidding me?
21:57:17 <elliott> Hmm, 2^32 bits in 512 megabytes.
21:57:32 <Deewiant> elliott: It's more like: if it's used in something that isn't a test/joke/whatever program, YouIntendToImplement gets a significant boost. Otherwise it's not much of a difference. :-P
21:57:33 <elliott> I was hoping I could have a fingerprint instruction that just gives you a bitmask of the implementation's supported dimensions.
21:57:39 <fizzie> Vorpal: Well, you know, people who write Funge-98 for living. (Yes, I'm just joking.)
21:57:44 <elliott> Since I don't like something like "either a fixed list or 'I support anything'".
21:57:48 <elliott> (What if you only support even dimensions?)
21:57:49 <Sgeo> Can someone please fix Vorpal's humor detection circuits? They seem to be fried.
21:58:06 <elliott> Maybe I'll just mandate implementations support arbitrary dimensions!
21:58:11 <elliott> That would be the Funge-Flexible thing to do.
21:58:29 <fizzie> Deewiant: Oh, and of course since it's the Internet age nowadays, SOCK (NSCK?) are certainly very mission-critical.
21:58:30 <oerjan> Sgeo: they've always been fried; we cannot find spare parts
21:58:33 <Deewiant> elliott: For DIMS? Something wrong with reflecting on an unsupported argument?
21:58:51 <Deewiant> fizzie: You should use i and o for those too, and run on Plan 9.
21:58:54 <Vorpal> Sgeo, I never installed any
21:59:28 <elliott> Deewiant: Well, DIMS should ideally be a fingerprint for dealing with fungespace dimensions in general.
21:59:37 <elliott> Deewiant: Querying which dimensions an implementation supports seems like a reasonable operation.
22:00:29 <Deewiant> elliott: What would it be useful for? At most I'd think you'd want to query if a particular dimensionality is supported.
22:00:44 <fizzie> Deewiant: You can't read only part of a file with i, and I can't have fungot load the whole babble models, it'd take far too much memory.
22:00:45 <fungot> fizzie: does moshimoshi have revision control and rss?) and a single ' binary vector' type ( with their research, the latest gambit scheme? or some other implementation?
22:00:59 <Deewiant> fizzie: How big are they?
22:01:27 <elliott> Deewiant: e.g. SuperMycology++ Double Extra Mega Plus has a routine to generate a test program (just with some control flow and some odd movement deltas and testing out fingerprints that write to/read from fungespace and so on) of arbitrary dimensionality.
22:01:44 <elliott> When an implementation only supports a small, fixed number of dimensions, it wants to test them exhaustively.
22:01:54 <elliott> But if you support any old thing it'll just pick some random dimensionalities and try those.
22:01:57 <elliott> Or something.
22:02:03 <elliott> It seems like useful meta-info in the style of "y", anyway.
22:02:20 <elliott> Even if it's useless you can still write a Funge Interpreter Diagnostics(tm) program that uses it to print stats.
22:02:27 <Deewiant> Well, good luck with that in general. :-P
22:02:59 <Deewiant> I think you have to mandate the same thing as y tries to mandate and fails: either an integer or arbitrary.
22:03:17 <Deewiant> Or a pair of integers in this case, I think.
22:03:30 <Deewiant> So a range [a,b] or [1,infinity).
22:03:38 <elliott> I guess that works, yeah.
22:03:42 <elliott> It's ugly, though.
22:03:52 <elliott> Maybe I can make a "META" fingerprint for interpreter information and stuff it in there instead.
22:03:57 <elliott> Then DIMS can be pure and perfect.
22:04:12 * elliott wonders what a MTRX will look like and whether it is worth speccing one to base DIMS off of.
22:04:20 <elliott> *would look
22:04:55 <hagb4rd> Deewiant: were you hannging around irc.german-elite.net..years ago? can this be?
22:05:06 <Deewiant> hagb4rd: Probably not?
22:05:27 <fizzie> Deewiant: Okay, I guess they just might fit, assuming an efficient implementation with very low per-cell fungespace overhead. The irc style would be 196702412 cells in binary mode, and that could be "compressed" at load-time by making the multibyte integers single cells. But swapping styles might be quite slow; and the total set is 655372751 bytes, that'd be a bit iffy on one gig of RAM.
22:05:35 <hagb4rd> ok.. so it was another deewiant
22:06:13 <fizzie> (Curiously enough, all of fungot-babble would fit on a regular data CD.)
22:06:13 <fungot> fizzie: 1 ihope: daemon pager bf c compiler. :p like i heard last night.
22:06:20 <elliott> fizzie: You could split the babblers into multiple files.
22:07:01 <fizzie> I could put each byte in a separate file and then I'd have i that can read an arbitrary byte. That sounds like an idea.
22:07:08 <fizzie> (But yes, I suppose I *could*.)
22:07:11 <Deewiant> :-D
22:07:22 <fizzie> (I mean, do a more sensible thing, that is.)
22:07:46 <elliott> I don't think fizzie is capable of doing something sensible.
22:07:55 <fizzie> There are only 600329 free inodes on the filesystem, I don't think I can make each byte a file. :/
22:07:58 <Deewiant> fizzie: If you can have 4 bytes in a cell instead of making each char a cell, it's pretty much that ~650 megabytes of RAM with my newer stuff, which doesn't seem like "far too much" to me.
22:08:21 <Deewiant> (I don't suggest CCBI2 any more though, given some of the bugs I've found in mushspace which should apply to it as well.)
22:08:23 <fizzie> It's a reasonable fraction of the total, though.
22:08:29 <fizzie> (Awayish.)
22:08:44 <elliott> Deewiant: Hmm, what bugs?
22:09:04 <elliott> fizzie: (What interpreter does fungot currently use? cfunge still?)
22:09:04 <fungot> elliott: unoptimized. i don't want the music industry, jazz barely registers on the processor and move it to a better language
22:09:14 <Deewiant> elliott: Some old version of cfunge, IIRC.
22:09:16 <elliott> jazz barely registers on the processor :D
22:09:25 <Deewiant> elliott: And some bugs. I can't remember.
22:09:33 <elliott> real helpful thanks
22:09:47 <Deewiant> Well dammit
22:10:08 <Deewiant> I did an almost-full rewrite of the string loading algorithm, I can't remember what exactly was wrong with the original
22:10:44 <Deewiant> Same for get_next_in which finds the linewise next allocated cell in the given bounds, IIRC
22:10:57 <Deewiant> And some smaller stuff somewhere, probably
22:11:31 <elliott> mmm
22:11:36 <elliott> I forget what bugs Shiro had
22:12:02 <Deewiant> elliott: http://sprunge.us/dXfb
22:12:13 <Deewiant> Current git diff in CCBI, I stopped updating it at some point
22:13:33 <elliott> What does \n without "" even mean?
22:13:50 <Deewiant> Same as "\n"
22:13:56 <elliott> Deewiant: Also: Mangling LLVM bytecode to remove asserts?
22:13:57 <elliott> You are disgusting.
22:14:08 <elliott> (OK, not bytecode.)
22:14:10 <Deewiant> But I think it stopped working at some point or was deprecated or whatever.
22:14:28 <Deewiant> elliott: Not my fault the compiler's "generate no asserts" mode still generated asserts.
22:14:36 <Deewiant> D toolchain, etc.
22:14:51 <Deewiant> Same for adding alwaysinline with sed because the compiler can't.
22:16:18 <Sgeo> I don't know if it's normal to feel a need to use tuples in Factor to maintain some semblance of sanity
22:19:46 -!- Lumpio- has quit (Quit: Updating a 5-month-old Arch installation, wish me luck).
22:21:11 <Deewiant> I hope Lumpio- read the news on archlinux.org, or he'll be in a bit of trouble.
22:21:18 <Deewiant> Anyway, bedtime -->
22:24:54 <elliott> Deewiant: What's a sleep?
22:28:29 <Fiora> I think it's a thing you use to tell a thread to do nothing for a while
22:28:43 -!- oerjan has quit (Quit: slippery slope of sleep).
22:31:25 <shachaf> @ty threadDelay
22:31:27 <lambdabot> Not in scope: `threadDelay'
22:31:32 <shachaf> @ty Control.Concurrent.threadDelay
22:31:33 <lambdabot> Int -> IO ()
22:31:39 <shachaf> That's a sleep?
22:31:43 <shachaf> Underwhelming.
22:33:53 -!- zzo38 has joined.
22:38:11 -!- ais523 has quit.
22:47:03 <Jafet> @google microsleep
22:47:04 <lambdabot> http://en.wikipedia.org/wiki/Microsleep
22:47:05 <lambdabot> Title: Microsleep - Wikipedia, the free encyclopedia
22:47:11 <Jafet> @google usleep
22:47:13 <lambdabot> http://linux.die.net/man/3/usleep
22:47:13 <lambdabot> Title: usleep(3) - Linux man page
22:50:50 <Jafet> @google isleep
22:50:54 <lambdabot> http://www.isleep.com/
22:50:54 <lambdabot> Title: SleepAdjustment.com by iSleep
22:53:37 <fizzie> @google yoctosleep
22:53:39 <Sgeo> My parentheses parsing code is turning out ugly
22:53:40 <lambdabot> http://www.cnx-software.com/2012/02/page/11/
22:54:13 <fizzie> @google zeptosleep
22:54:14 <lambdabot> http://dis.4chan.org/read/lounge/1257876805
22:54:14 <lambdabot> Title: 4chan BBS - Microsleep
22:54:21 <fizzie> Well, that's... better?
22:55:09 <fizzie> No femtosleep or attosleep, and all the picosleeps are real boring.
22:55:36 <Jafet> @google kilosleep
22:55:39 <lambdabot> http://s100.photobucket.com/albums/m24/macwitcheeze/?action=view&current=kilosleep.jpg&newest=1
23:02:19 <olsner> hmm, the femto- and atto- prefixes mean 15 and 18 (from Danish), but the following prefixes zepto and yocto mean 7 and 8
23:02:45 <olsner> otoh, I think the four prefixes before that are all synonyms for "small"
23:03:09 -!- asiekierka has quit (Excess Flood).
23:03:21 -!- asiekierka has joined.
23:03:54 <Sgeo> And I learn the disadvantages of co-operative multithreading in an interactive environment where I'm likely to write buggy code the hard way :(
23:04:32 <Vorpal> Sgeo, what OS are you using?
23:04:33 <Sgeo> Had to kill -9 Factor
23:04:53 <Sgeo> Vorpal, Kubuntu 10.10, but don't see how that's relevant
23:07:41 <olsner> kubuntu users are 3x more likely to write buggy code in co-operatively multithreaded interactive environments
23:10:20 -!- zzo38 has left.
23:11:17 <Sgeo> elliott, Phantom_Hoover monqy Fiora: Thing not related to Factor!
23:11:25 <monqy> hi
23:11:34 <Phantom_Hoover> i don't believe such things exist
23:11:35 <elliott> hi
23:11:40 <monqy> tbh i was hoping for a thing related to factor
23:12:24 -!- zzo38 has joined.
23:12:53 -!- Lumpio- has joined.
23:13:41 <Bike> Sgeo: write a morse-code => english translator as your first underfactor program.
23:14:06 <quintopia> hi
23:14:17 <Sgeo> ....Bike's a Homestuck?
23:14:35 <Phantom_Hoover> Morse code?
23:14:46 <elliott> hi
23:14:59 <Bike> hi
23:15:12 <monqy> hi
23:15:15 <quintopia> i guess ais doesnt want to know how to beat space_hotel
23:15:37 <Fiora> TG: (oh noes you mean hes here?)
23:15:38 <Fiora> TG: (already??)
23:15:51 <Fiora> bike is a homestuck yes
23:15:56 <elliott> quintopia: is quintopia_a = quintopia_space_hotel
23:15:58 <elliott> important qs
23:16:11 <quintopia> i dont think so
23:16:21 <elliott> well you removed quintopia_a right as you added quintopia_space_hotel
23:16:33 <quintopia> there is a symbolic desc of it on the talk page and stuff
23:16:36 <elliott> and they seem sort of similar??? but quintopia_a is small
23:16:46 <quintopia> yeah they are too similar to have both around on the hill
23:17:28 <quintopia> some day you'll give better feedback on the symbolic description code and i'll encode all the programs
23:17:39 <elliott> http://esolangs.org/wiki/Talk:Thue_Symbol_Sorting_Theorem ugh, I am pretty sure this is a copyvio
23:18:00 <quintopia> :(
23:19:24 -!- zzo38 has quit (Remote host closed the connection).
23:33:00 <Sgeo> Got my parens parser working
23:33:03 <Sgeo> It's ugly, but it works
23:34:00 <monqy> cool, cool
23:37:46 <Phantom_Hoover> i've just realised that i haven't the faintest idea what homestuck is about any more
23:38:32 <Fiora> wikipedia's description of homestuck is actually amazingly succinct
23:38:42 <Fiora> http://en.wikipedia.org/wiki/Homestuck#Plot
23:38:52 <Fiora> it's the entirety of homestuck explained in 4 paragraphs, like, how is that possible
23:39:42 <Fiora> but yeah I get lost all the time, it doesn't help that hussie jumps all over like crazy so it can take 1000 pages to get back to where we were
23:46:54 <olsner> I'm glad I read that so I never have to read all of homestuck (how long is it anyway?)
23:48:11 <Fiora> it's like ~5-6k pages so far ish? but most of the pages are just like single pictures
23:48:40 <Fiora> it took me like two weeks to catch up with it but I wasn't going very fast, I'm guessing it's like 30-50 hours to read through depending on your speed
23:49:37 <elliott> it takes 15 hours if you're vorpal and read it on a computer without flash in one sitting!!!!!!!!!
23:49:51 <Fiora> geez, not playing all the game sections misses a lot of things <_<;
23:49:55 <Phantom_Hoover> I'm still reeling at that.
23:50:01 <Fiora> and wow. one sitting @_@
23:50:12 <Fiora> I stopped periodically just to like... get perspective and figure out what was going on
23:50:18 <Fiora> if it was all in one sitting I wouldn't remember a thing
23:50:35 <elliott> dont worry vorpal doesnt remember a thing either
23:51:02 <Phantom_Hoover> I used to follow it pretty well.
23:51:30 <Phantom_Hoover> But I think now it's not really obvious where the plot is actually /going/, although not in a bad way.
23:52:15 <elliott> (it stopped having a plot months before I stopped reading)
23:52:52 <Phantom_Hoover> To be fair, I suspect it must've been similarly confusing around the start of the Scratch thread.
23:52:56 <Fiora> it still has a plot :<
23:53:09 <Phantom_Hoover> We caught up right as the pieces were coming together.
23:55:03 <elliott> (that's not what I mean but whatever)
23:56:25 <Vorpal> <elliott> dont worry vorpal doesnt remember a thing either <-- I do remember some stuff, and also it wasn't quite as long at that point
←2012-12-14 2012-12-15 2012-12-16→ ↑2012 ↑all