00:00:13 -!- MigoMipo has quit (Read error: Connection reset by peer).
00:09:11 -!- poiuy_qwert has quit (Quit: This computer has gone to sleep).
00:10:00 <elliott> s x y z c = x z (\xz. xz y z c); k x y c = c x
00:10:18 <elliott> skk = \x c. s k (\sk. sk k x c)
00:10:28 <elliott> skkFOO = \c. s k (\sk. sk k x FOO)
00:10:45 <elliott> skkFOO(id) = s k (\sk. sk k FOO id)
00:10:53 <elliott> and at this point i get too lazy
00:11:03 <elliott> and also, realise that each partial application needs a c.
00:12:26 <elliott> 14:33:02 <ihope_> Did Jesus have a sacred hammer?
00:12:27 <elliott> 14:34:02 <GregorR-W> Well, he was a carpenter, and a lot of people would probably consider just about anything he ever touched sacred.
00:12:28 <elliott> 14:34:04 <GregorR-W> So I'd have to say ye.
00:12:32 <elliott> 14:34:28 <ihope_> He was a carpenter?
00:12:36 <elliott> 14:35:09 <GregorR-W> How can anyone in the western hemisphere not know that.
00:12:38 <elliott> 14:35:55 <ihope_> I take it I'm in the western hemisphere...
00:12:42 <elliott> 14:36:25 <GregorR-W> I am stunned.
00:15:57 -!- cheater- has joined.
00:16:38 <Ilari> APNIC down 0.02: 256k+64k+16k+8k+4k+1k to China, 16k+1k+512 to Indonesia, 32k to China, 1k to South Korea, 2k to Vietnam, 2k to Singapore, 64k to Thailand.
00:19:06 -!- cheater00 has quit (Ping timeout: 255 seconds).
00:19:32 * pikhq_ notes that the Greek did not actually specify "carpenter". It used a more general term for what amounts to a skilled laborer.
00:19:44 <pikhq_> Could very well have been a mason, or a smith, or whatever else.
00:20:10 <elliott> 15:05:31 <oerjanj> hei kipple (=rune?)
00:20:10 <elliott> 15:06:31 <oerjanj> det var stille her
00:20:10 <elliott> 15:06:54 <kipple> det er ikke akkurat den mest aktive kanalen i verden nei
00:20:11 <elliott> 15:06:58 <oerjanj> i wondered if keymaker was here he seemed interested in my last language
00:20:13 <elliott> 15:07:28 <oerjanj> det var mer liv sist men det var litt senere på kvelden
00:20:16 <Gregor> Or just somebody who listed himself as a skilled labor because it helped him cheat on his taxes.
00:20:20 <pikhq_> The interpretation of Jesus as carpenter is, well, fan fiction.
00:20:23 <elliott> Gregor: I approve of this interpretation.
00:20:30 <elliott> That's why he was such a dick to taxy-men.
00:20:35 <pikhq_> Just like almost all details of hell.
00:21:02 <pikhq_> And essentially all practices of a modern church except communion.
00:21:47 <pikhq_> Oh, and baptism of believers. That's actually in there, too.
00:22:01 <pikhq_> Gregor: Communism is not a practice of the modern church.
00:22:09 <Gregor> *baptism of infants too young to be capable of having distinguished beliefs
00:22:13 <pikhq_> Gregor: Though a form of it *was* a practice of the early church.
00:22:23 <pikhq_> Baptism of infants is mostly a Catholic thing.
00:22:36 <elliott> well it does something i thought impossible. but is useless.
00:22:52 <elliott> oh wait, ihope already wrote that. in 2006. :)
00:23:03 <pikhq_> And rejecting it is actually the raison d'etre for many Protestant sects.
00:23:24 <pikhq_> Including, of all things, the Amish.
00:23:37 <elliott> can you swap two tape cells in BF?
00:23:39 <elliott> without using a third value...
00:23:50 <Gregor> Without using a third? No.
00:24:26 <pikhq_> I think you may be able to pull it off in 1-bit BF.
00:25:22 <elliott> if { right; if {} else {flip left flip} } else { right; if {flip left flip} else {} }
00:25:36 <pikhq_> That's almost valid PEBBLE.
00:25:38 <elliott> umm, so basically if x==y then flip both :)
00:26:01 <elliott> pikhq_: what's it in pebble?
00:26:10 <elliott> hm wait I can do this I think
00:26:30 <elliott> if { right; flip; if {left flip} else {flip} } else { right; if {flip left flip} else {} }
00:26:41 <elliott> if { right; flip; if {left flip} else {flip} } else { right; flip; if {left flip} else {flip} }
00:27:31 * elliott looks up how to do if in regular bf
00:27:56 <elliott> wait I can't use a regular if
00:28:10 <pikhq_> if is destructive, yeah.
00:28:30 <pikhq_> And if-else requires a temporary cell, I think.
00:28:35 <elliott> while { right; flip; if {left flip **LOOP WILL END AFTER THIS**} else {flip **LOOP WILL CONTINUE AFTER THIS**}}
00:28:55 <elliott> while { right; flip; if {left flip **LOOP WILL END AFTER THIS**} else {flip; right **LOOP WILL END AFTER THIS, BUT ONE CELL TOO FAR**}}
00:29:14 <elliott> while { right; flip; if {left flip right **LOOP WILL END AFTER THIS, BUT ONE CELL TOO FAR**} else {flip; right **LOOP WILL END AFTER THIS, BUT ONE CELL TOO FAR**}}
00:29:34 <elliott> while { right; flip; if {left flip right} else {flip right} } left
00:29:40 <elliott> except that the else crept back in :D
00:29:43 <pikhq_> You realise you need to actually implement if-else for that to work, right?
00:29:52 <elliott> while { right; flip; if {left}; flip right } left
00:30:06 <elliott> while { right; flip; while {left}; flip right } left
00:30:15 <elliott> since left is *true* here...
00:30:20 <pikhq_> while {left; flip} will.
00:30:31 <elliott> pikhq_: yes, but gives the wrong result for the rest of the code :)
00:30:40 <elliott> this can be done as a truth table
00:30:49 <elliott> will have both 1s in the output
00:31:08 <elliott> so there is no way to do an if, I think...
00:31:21 <elliott> you can't halt after generating "1,1" with []
00:31:29 <elliott> without moving outside those bounds
00:33:13 <pikhq_> Well, you *could* successfully flip 0,1 and 1,0 around. :P
00:33:40 <elliott> I think you can swap two bits with one extra bit trivially.
00:34:44 <elliott> while {right right flip left left flip}; right; while {left flip right flip}; right; while {left flip right flip}; left; left
00:35:54 <elliott> you can't swap the two registers of a minsky machine
00:40:05 <elliott> ǃqháa̰kūǂnûmǁɢˤûlitêǀèdtxóʔluǀnàeǂʼásˤàa̰
00:40:06 <elliott> giveMPO:4PROtwogenital:22-PASS:3stench:3DAT:3PROCOM:2fat:22
00:40:06 <elliott> "Give them their stinking genitals with the fat!"
00:40:15 <elliott> http://en.wikipedia.org/wiki/!X%C3%B3%C3%B5_language
00:40:45 <Gregor> What is the nonsuckiest of program argument handling libraries?
00:41:03 <Gregor> Or better yet, one-header macromess :P
00:41:58 <pikhq_> Gregor: Here's a katana.
00:42:01 <elliott> Gregor: But really it's one of the many simple problems that the C language has no convenient facility for dealing with: an option is essentially best described by an ADT.
00:42:23 <elliott> In C, any sufficiently rich option parser will be using a big struct with a bunch of enums, which never leads to a nice API.
00:42:30 <pikhq_> Now, to commit se'hųku properly, you need to be able to write 口 correctly...
00:42:44 <Gregor> Hence "nonsuckiest", not "best" :P
00:42:45 <pikhq_> And a skilled swordsman to assist you in case you screw up.
00:44:13 <elliott> Gregor: Weeeeell, since it's easy to implement there's no shortage of choices, but I don't know anything I'd consider as "good"; usually I just use getopt (even getopt_long) or hack up my own thing. Or not write the program in C (my favourite).
00:44:29 <elliott> There's always the GNUUUUUUUUUUU choice: http://www.cs.bham.ac.uk/resources/courses/2005/17423/doc/libc/Argp.html
00:45:31 <Gregor> Yeah, I guess I'll just stick with self-hackery, just wondering if something nonsuck had cropped up while I wasn't looking.
00:45:44 <elliott> What're you working on? Or just a general question?
00:46:06 <elliott> Also, lol @ the idea of something new in C ever cropping up :)
00:46:19 <elliott> Not since, uhhhh, Duff's Device?
00:47:14 <Gregor> Fythe. AKA "program you will now find some facet of to ridicule"
00:47:29 <elliott> Gregor: Actually I was thinking of working on my own Fythe-esque VM... :p
00:47:39 <elliott> Gregor: Remember that Fythe is essentially a slight perversion of an idea I gave you wholesale :P
00:47:44 <elliott> (Obviously, I invented Forth.)
00:48:12 <Gregor> Actually it's turned into a huge perversion that has greater resemblance to Lisp except really has no resemblance to either :P
00:48:43 <elliott> It's stack-based and words can control the parsing stream (I think); that's Forth.
00:48:58 <elliott> If they can't control the parsing Scheme, way to defeat the whole point of the extensibility Forth gives you :-P
00:49:03 <Gregor> It's not stack based and word's can't control the parsing stream ... per se.
00:49:10 <elliott> Gregor: I thought it was stack-based.
00:49:30 <elliott> The whole point with me giving you the idea is that there would essentially be an (automatically-executed) "plof" definition that took over the parsing stream with a regular (extensible) Plof parser.
00:49:37 <Sgeo> I know I've seen the suggestion of separate tail-cal vs. not-a-tail-call thing before, but Rust actually does it
00:49:55 <Gregor> elliott: Uhh, THAT'S what I already had :P
00:50:22 <Gregor> Fythe was to add a more powerful controllable compilation layer to it such that you could create output code that doesn't suck.
00:50:28 <elliott> Gregor: The point is that you could, given a Fythe REPL of some sort, write "c int main() { return 42; } HEY C WORD, THIS IS YOUR CUE TO END 1 +"
00:50:36 <elliott> (Given that c pushes the return value of the program.)
00:50:42 <elliott> Gregor: At least that was /my/ point.
00:50:58 <Gregor> elliott: Yeah, that's what I already had :P
00:51:12 <Gregor> elliott: Not an implementation of C in particular, but yeah.
00:51:50 <Sgeo> I really, really like log and note
00:52:26 <Gregor> The problem was that the way I defined it made it much easier to do very local compilation ... basically taking each expression independently and treating its arguments as a black box. This produces shittacular code.
00:52:45 <elliott> Gregor: Shittacular but elegant!
00:52:52 <Gregor> Yes. But shittacular :P
00:52:55 <elliott> Gregor: Is Fythe JITted? If not: TOTAL OPPORTUNITY MISSED THERE YO
00:53:01 <elliott> (Wait, wait, JITting isn't ANSI C PORTABLE.)
00:53:13 <Gregor> The JIT in particular is GNUy :P
00:53:14 <elliott> Gregor: Please tell me every damn JITting part has a huge ifdef mess to optionally not JIT :P
00:53:25 <Gregor> It has no non-JIT option right now.
00:53:54 <elliott> The reason I'd do a Fythe-esque VM rather than using Fythe, apart from NIHness, is for hosted implementation of @...
00:54:26 <Gregor> Well, Fythe has its flaws and weirdnesses anyway, it'd be cool to see what somebody who isn't me would write with the same basic premise.
00:54:31 <elliott> JITting might actually be a downside there insofar as portability would be nice, but OTOH who cares about non-Linux.
00:55:09 <Gregor> Uhhh, non-/Linux/? My JIT works ARM, x86, x86_64, and on Linux, Windows and Mac OS X.
00:55:23 <elliott> Wrote it before your line.
00:55:32 <elliott> Gregor: Sure. It'd not "really" be Fythe, though, because the language would be designed to be possible to write semi-complex pieces of software in without too much of a headache. (After all, @'s super-advanced high-level language's compiler has to be implemented in it.)
00:55:45 <elliott> OTOH a lot of that could be built up in the language itself.
00:55:55 <Gregor> I thought @ was an OS ... so I don't understand how "non-Linux" fits in since it ... is ... non-Linux ... ?
00:56:14 <elliott> Gregor: Like I said, hosted implementation of @. Like a 16-bit OS considers the BIOS, hosted @ considers Linux.
00:56:32 <elliott> Gregor: This wouldn't be exclusive, just a first step, since hosted "only" OSes are just shitty programs.
00:56:59 <elliott> (The idea is that 99% of @ code in the long run would be portable, so ostensibly I could just write the low level x86-64 parts in the future and it'd all work. Ostensibly.)
00:57:08 <elliott> (Drivers and such might get in the way a bit. :p)
00:57:31 <elliott> "The formal meaning of TC describes abstract systems that are not necessarily physically realisable. If ais523 intended the formal meaning, then "HTML+CSS+infinite starting pattern" is TC, and the fact that this is not realisable is irrelevant. He cannot use "the pattern shown there" or "the example shown" as evidence against TC-ness of the abstract system."
00:58:13 <elliott> Does this person even posses... a brain...
00:58:38 <Gregor> NEW SOLUTION: I was planning on having a way for Fythe programs to pull arguments off the argument "queue" anyway, and Fythe programs of course have a way of parsing Fythe programs (sort of by definition), so I'll just implement the argument parser as a Fythe program. Solution problemed! ... I mean problem solved!
00:59:06 <elliott> Gregor: Make it EXTENSIBLE.
00:59:12 <elliott> Through ILL-DEFINED MEANS.
00:59:31 <elliott> Gregor: Like, if I want to, I can swap out any program using a common "get an option" API to use a / prefix rather than --... EVEN IF THAT PREFIX IS EMBEDDED INTO THE GET AN OPTION API
00:59:41 <elliott> (Although that's easy, by just redefining it wholesale.)
00:59:48 <elliott> (But it's the cort that thounts.)
01:00:29 -!- oerjan has joined.
01:01:12 <elliott> ØST SUCCESSFULLY CALIBRATED
01:01:27 <elliott> oerjan: what you're saying is, you didn't sleep.
01:01:51 <elliott> ... ASSUMING oerjan isn't being a jerk by being inconsistent, he got up around 1:25 UTC, let's say.
01:02:16 <oerjan> given how this is going, i think i'll keep this as a challenge...
01:02:19 <elliott> oerjan: what's your "natural" feeling wakeuptime
01:02:25 <elliott> you know, when your 25 hour thing wraps around properly
01:02:33 <Gregor> ... well this is creepy.
01:02:51 <elliott> Gregor: He REFUSES to provide scientific data.
01:03:21 <elliott> Gregor: How else will I make a website telling the world the current UTC offset of Oerjan Standard Time?!?!?!?!?!??!!!?!?!?!?!?!?!?!??!!?!??!?!?!?!?!!??!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!
01:03:27 <elliott> ?!?!?!?!?!?!?!!!!???!!?!?!?!?!?!?!?!?!?!??!?!?!!
01:03:32 <elliott> that's it, i'm going to analyse irc logs.
01:07:44 <oerjan> • pikhq_ notes that the Greek did not actually specify "carpenter". It used a more general term for what amounts to a skilled laborer.
01:08:02 <oerjan> NEXT YOU'LL BE TELLING ME THERE WEREN'T THREE WISE KINGS, EITHER
01:08:37 <oerjan> and no virgins anywhere to be seen.
01:09:23 <oerjan> <elliott> 15:09:47 <ihope> Swedish?
01:09:32 <oerjan> what is this, make ihope look stupid day?
01:10:25 <elliott> 19:14 -> 19:19 -> 18:58 -> 20:10 -> 23:44 -> gap -> 1:06 -> 2:11 -> 5:41 (?!?!?!) -> 13:50 (?!?!??!) -> 17:00 (?????) -> 15:55 -> 15:45 -> oerjan is fucking with me in the past
01:10:58 <elliott> i conclude that "Good night" has no relation to (1) whether it is night; (2) whether the quit constitutes a valid ØST recalibration
01:11:01 <oerjan> 01:03:37 <pikhq_> And essentially all practices of a modern church except communion.
01:11:05 <elliott> either that, or oerjan is just a dirty filthy liar.
01:11:08 <oerjan> 01:04:22 <pikhq_> Oh, and baptism of believers. That's actually in there, too.
01:11:34 <oerjan> i distinctly recall reading the protestants cut the sacraments down to those two presumably for that reason.
01:12:20 <oerjan> i think "Good night" usually describes my intent at the moment, at least.
01:12:38 <oerjan> whether i actually manage to go to sleep then, may vary.
01:13:14 <elliott> ok so I just need to find some samples that /do/ advance properly, and then interpolate from there ;D
01:13:24 <elliott> Gregor is now edging slowly away from me.
01:14:58 <oerjan> i assume the fact that i even in usual circumstances frequently take a break from irc while awake does not help.
01:16:34 <elliott> oerjan: that's why i only grepped for "Good night"
01:18:44 <oerjan> <pikhq_> Baptism of infants is mostly a Catholic thing.
01:18:53 <oerjan> norwegian church does that too...
01:19:46 <pikhq_> oerjan: Hence why I said "mostly".
01:20:09 <pikhq_> Some Protestant churches *do* keep many Catholic-origin traditions, after all.
01:20:32 <oerjan> <pikhq_> I think you may be able to pull it off in 1-bit BF.
01:20:55 <oerjan> no. the cell from which you leave the last loop must have a fixed final value.
01:22:23 <oerjan> (for more context <elliott> can you swap two tape cells in BF?
01:24:08 <oerjan> <elliott> you can't swap the two registers of a minsky machine
01:24:18 <oerjan> that would seem to be a stronger version of this, yes
01:24:40 <elliott> indeed, as I mentally swapped (ha!) "two values, infinite tape" and "infinite values, two-long tape"
01:25:27 <oerjan> elliott: which is what i did in my previous underload construction, too
01:27:04 <oerjan> <pikhq_> Now, to commit se'hųku properly, you need to be able to write 口 correctly...
01:27:11 <oerjan> <pikhq_> And a skilled swordsman to assist you in case you screw up.
01:27:22 <oerjan> those japanese take their calligraphy seriously.
01:28:20 <pikhq_> oerjan: Yes, you really, really do write a simple kanji in your stomach to commit seppuku.
01:29:26 <oerjan> which appropriately means "opening".
01:31:08 <oerjan> <Gregor> Actually it's turned into a huge perversion that has greater resemblance to Lisp except really has no resemblance to either :P
01:31:26 <oerjan> you might want to consult with someone else with a name starting in "gre"
01:38:14 <Sgeo> 8 math questions, 100 minutes
01:38:36 <oerjan> well could, if you could stay off irc.
01:39:38 <Sgeo> Have my SGU music playing
01:41:09 <Gregor> oerjan: Gre...enReaper?
01:41:53 -!- iconmaster has quit (Quit: What?! Open source isn't good enough for you? Bersirc 2.2 [ http://www.bersirc.org/ - Open Source IRC ]).
01:43:20 <oerjan> "Laurence "GreenReaper" Parry (born 1982) is the founder of WikiFur, editor-in-chief of Flayrah, and an amateur photographer."
01:43:27 <oerjan> Gregor: WELL IF YOU INSIST...
01:44:44 <oerjan> Gregor: GOOGLE EXISTENCE FAILURE
01:45:57 <oerjan> "Grezhnev, VA (V A) :: [A device for automatic determination, calculation and storage of parameters in cardiointervalography]
01:46:41 <oerjan> parameters after my heart
01:47:32 <oerjan> in fact the first one was closest.
01:47:37 -!- iconmaster has joined.
01:49:04 <oerjan> i fail to see how these are closer than the first one.
01:49:40 <Gregor> But will continue to guess.
01:51:19 <oerjan> how can anyone be Benevolent with a name like Guido, anyway
01:51:27 <Gregor> grep -i '^[^ ]* <gre[^g]' * | cut -d' ' -f 2 | sort | uniq
01:52:19 <Gregor> Some person who has never been in this channel? :P
01:52:30 <oerjan> i doubt he has been here...
01:52:46 <Gregor> WELL THEN THE GUESSING SEEMS PRETTY HOPELESS
01:53:04 <oerjan> we are talking about someone with expertise in lispy perversions.
01:54:10 -!- iconmaster has quit (Quit: Darn ANSIIIIIIIIIIIIIII).
01:54:24 <Gregor> Oh ... then I'm unlikely to be able to guess :P
01:54:35 <oerjan> you just need to put the right spin on it.
01:57:47 <Gregor> Why would the only sideways letter in Unicode be sideways O ...
01:58:58 <oerjan> well are you _sure_ they don't have sideways X as well
01:59:05 <Sgeo> Dear Wolfram Alpha: FCUK YO
01:59:40 <Sgeo> http://www.wolframalpha.com/input/?i=(15+choose+3)(.65^3)((1-.65)^(15-3))+%2B+(15+choose+2)(.65^2)((1-.65)^(15-2))+%2B+(15+choose+1)(.65^1)((1-.65)^(15-1))+%2B+(15+choose+0)(.65^0)((1-.65)^(15-0))+%3D
01:59:48 <Sgeo> Why won't you accept it as choose?
02:00:03 <Sgeo> Well, that's interesting
02:00:06 <Sgeo> It was due to the =
02:00:56 <oerjan> wolfram alpha contains a bug ridden implementation of all of mathematica
02:01:40 -!- poiuy_qwert has joined.
02:02:31 <elliott> http://www.iwriteiam.nl/Ha_bf_numb.html ah, this is a wonderful page, i forgot.
02:02:42 <elliott> <oerjan> "Laurence "GreenReaper" Parry (born 1982) is the founder of WikiFur, editor-in-chief of Flayrah, and an amateur photographer."
02:02:43 <elliott> <oerjan> Gregor: WELL IF YOU INSIST...
02:03:53 <elliott> oerjan: Grohn McCarthy?!?!??!?!!
02:04:39 <elliott> hm i find it hard to believe a 40 char bf program can't generate a larger number than 1172812402960.
02:04:49 <elliott> iirc dbc had some short program outputting a very large number in here years ago.
02:05:04 <oerjan> naggum is dead. if Gregor has means of consulting with him, be very careful.
02:05:48 <elliott> oerjan: HE LIVES ON IN SEXPRESSIONS.
02:10:41 <oerjan> maybe i should point out it's not the first name which starts with gre.
02:10:57 <elliott> so if I got up at 10:45. hmhm
02:12:37 <elliott> 35 hours. hey, that is not bad.
02:12:40 <Sgeo> Finishe my homework
02:13:15 <elliott> well, last time it was... about 34 hours.
02:13:28 <elliott> oerjan: two all-nighters in a row: best way to resynchronise?
02:14:39 <oerjan> elliott: i've had that backfire before
02:14:52 <elliott> i woke up well-rested today. thankfully.
02:15:05 <elliott> the whole problem is that i overslept, waking up about an hour and forty-five minutes later than i should have.
02:15:14 <elliott> and now I've been unable to get myself to bed on time (time = 1 am or so)
02:15:23 <oerjan> by oversleeping enough to flip right back again...
02:15:38 <elliott> oerjan: indeed, but thankfully i already did my oversleeping
02:15:41 <elliott> which is why i haven't been tired today
02:15:49 <elliott> oerjan: plus, i'll likely only last until about 9 pm.
02:15:53 <dbc> I had a short program generating Fibonacci numbers. But that page is talking about putting large numbers in a cell, which is unportable and slow and totally the wrong way to do things anyway.
02:15:56 <elliott> oerjan: so oversleeping is a /benefit/
02:16:08 <elliott> oerjan: otherwise i'd wake up at 5 am :)
02:16:27 <elliott> 12 hours of sleep puts me awake at 9 am, a perfectly cromulent time to get up.
02:16:48 <elliott> dbc: hmm, I'm sure you had a program to do that in the logs.
02:16:54 <elliott> anyway, the unportable/slowness is irrelevant.
02:16:57 <elliott> the point is purely theoretical :)
02:17:05 <elliott> it's basically busy beaver problem
02:17:25 <elliott> since it takes cycles to generate a number, etc.
02:18:43 <elliott> oerjan: also i might go out and walk about a bit in the daytime to keep me awake. (i'm more sane than to go on your pattern of "GO FOR A BRISK WALK IN THE COLDEST SEASON OF A VERY COLD COUNTRY AT THE COLDEST, DARKEST TIME OF NIGHT")
02:19:36 <elliott> 05:34:07 <GregorR> I'm in Keswick (pronounced Kezik for some reason). Bye :-P
02:19:36 <elliott> THE REASON FOR ITS PRONUNCIATION IS A CLOSELY-GUARDED BRITISH SECRET.
02:21:58 <oerjan> obviously it was at one time conquered by a stray turkish battalion, and you are trying to hide the embarassment
02:24:42 <dbc> Okay, I just spent a minute or so dinking with the problem afresh, without too much luck. I'll see if it's in my logfiles on this computer now.
02:26:47 <elliott> Read as "drinking"; alcohol is a great way to get BF inspiration.
02:26:55 <dbc> Not recent enough.
02:27:27 <elliott> I could grep, but I would have trouble finding a decent regexp.
02:27:45 <elliott> 18:55:14 <dbc> Did anyone do anything with your busy beaver task?
02:27:46 <elliott> 18:55:26 * immibis wonders what ihope__ and dbc are talking about
02:27:46 <elliott> 18:55:34 * immibis reads the irc log
02:27:46 <elliott> 18:55:46 * immibis sees that you are running a BF factorial program.
02:27:49 <elliott> Well, that seems plausible.
02:28:17 <elliott> 04:43:56 <dbc> !bf >>>++++++++++++++++++++++++++++++++++++++++<<<++++[>++++++++++[>++++++++++[>.<-]<-]<-]
02:28:18 <elliott> 04:44:00 <EgoBot> (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
02:29:27 <elliott> oerjan: If I'm yawning now things are going well, right?
02:29:58 <elliott> oerjan: it's 3 am. SO gonna go outside at the crack of dawn*
02:30:12 <dbc> That last one is clearly not it.
02:30:16 <elliott> clearly writing this forth os will sharpen my mind.
02:30:22 <elliott> dbc: Well yeah, but it's a BF program!
02:31:00 <elliott> hmm, with a bignum tape, you can do 2^x for any x with constant overhead, right?
02:31:02 <oerjan> i think that just calculates 4*10*10
02:31:35 <elliott> so it stands to reason that M(l+k) >= 2^M(l), where M(l) is the largest integer a halting BF program of length l can leave on a bignum tape.
02:32:00 <dbc> 2^x (or 3^x or whatever) using x commands plus constant overhead, yes.
02:32:38 <oerjan> elliott: um that page you linked clearly explains how to do powers
02:32:42 <dbc> Or less if x is biggish.
02:32:45 <elliott> dbc: Using x commands? Ah, well, right. No, what I meant was that if you have a program of length l that calculates n,
02:32:51 <elliott> then you just append the 2^ code, and get 2^n.
02:32:57 <elliott> So it does not even have to be a straight run of +s.
02:33:04 <elliott> It could be a more compact method of generating a large number.
02:33:15 <elliott> there is also http://www.iwriteiam.nl/D0904.html#15
02:33:42 <oerjan> in fact the Brainfuck constants page contains several examples of the method.
02:35:07 <elliott> Meanwhile, [on googlefight] 23:37:25 <thematrixeatsyou> whoever's repeatedly doing god vs s***n can piss off
02:35:44 <elliott> 23:38:28 <Arrogant> http://www.googlefight.com/index.php?lang=en_GB&word1=jesus+porn&word2=furry+porn
02:35:45 <elliott> 23:38:36 <Arrogant> That is ... frightening.
02:35:48 <oerjan> i mean without garfunkel to protect him.
02:36:06 <elliott> Garfunkel obviously IS god.
02:36:19 <elliott> hard to reason sitting down
02:36:55 <elliott> oerjan: So did the Garfield [WORD THAT SOUNDS LIKE MINUS] Garfield thing finally die?
02:37:06 <elliott> ah, "Garfield Skynet Garfield: Judgment Day" really did end them :D
02:37:23 <dbc> Something like [[>]+[<]>-]>>[<[>++<-]>>] is reasonably concise, though imprecise.
02:37:24 <oerjan> elliott: i recall dmm saying something about taking a break at least.
02:39:04 <elliott> http://www.mezzacotta.net/garfield/comics/0629.png this is nice
02:39:09 <dbc> It doesn't produce powers. It produces big power-y numbers.
02:51:08 <elliott> http://www.mezzacotta.net/garfield/?comic=652
02:52:50 <elliott> http://www.mezzacotta.net/garfield/comics/0655.png
03:04:47 -!- shachaf has quit (Remote host closed the connection).
03:09:00 <elliott> 12:09:16 <fizzie> Anything I do that's related to the silly prototype phone is probably automagically under the NDA I signed when starting there.
03:18:15 <pikhq_> He can neither confirm nor deny it.
03:20:40 <elliott> 11:20:10 <ihope> ```si`k``si`k``sii``s``s`kski
03:20:40 <elliott> 11:21:06 <ihope> I think that's the Church numeral for Steinhaus's Mega.
03:20:40 <elliott> 11:30:14 <ihope> And ```si`k``si`k``si`k``sii``s``s`kski is much, much bigger...
03:20:40 <elliott> 12:15:32 <ihope> Now here's a nice sequence: !1 = 2, !2 = 8, !3 = 402653184*2^402653184.
03:28:32 -!- shachaf has joined.
03:36:11 <olsner> elliott: was it you who were trying to say something to me somewhere past my scrollback?
03:37:28 <elliott> 05:44:13 <Keymaker> done; http://koti.mbnet.fi/yiap/stuff/selfmd5.py
03:37:29 <elliott> 05:45:32 <Keymaker> it's md5 (and output) is (or at least should be) b1f532d69db9c1366389ff855da9ae04
03:37:49 <elliott> well hexdigest of that string isn't same :P
03:46:07 -!- pikhq_ has quit (Ping timeout: 250 seconds).
03:46:09 -!- pikhq has joined.
03:46:16 -!- RodgerTheGreat has joined.
03:48:22 -!- BeholdMyGlory has quit (Remote host closed the connection).
03:54:01 -!- variable has quit (Quit: /dev/io failed).
03:55:52 <olsner> "I thought 4.3 billion potential addresses would be adequate for conducting the experiments to prove the technology. If it worked, then we could go back and design the production version. Of course, it is now 2011, and the experiment never exactly ended." :D
03:56:45 * elliott watches no red pandas do absolutely nothing -- live
03:56:48 <RodgerTheGreat> I still contend that the ugliness of IPv6 addresses is a major stumbling block to adoption over v4
03:56:53 <elliott> The wonders. Of the internet.
03:57:02 <elliott> RodgerTheGreat: DNS was invented decades ago to solve the ugliness of IP addresses.
03:57:15 <elliott> (he says, while hosting logs at "208.78.103.223")
03:57:45 <RodgerTheGreat> see also LANs and a million other places where people like us work with IPs
03:58:07 <elliott> RodgerTheGreat: Anyway, considering that IANA is completely devoid of IPv4 addresses (apart from strongly reserved ->IPv6 transitional blocks), and the RIRs are running out fast, quibbles like that really don't matter any more. :)
03:58:08 <RodgerTheGreat> at the end of the day we'll have to look at the damn things
03:58:15 <elliott> In that if IPv6 isn't adopted, there just is no internet.
03:58:22 <elliott> RodgerTheGreat: If they are internal addresses, you can assign them how you want with IPv4...
03:58:45 <elliott> IPv4 isn't going to "go away" any time in the next trillion years, it'll just be relatively useless externally in the long term.
03:59:04 <RodgerTheGreat> I'm not saying IPv6 isn't going to be adopted, I'm saying it kinda sucks and represents a missed opportunity/misstep
03:59:28 <elliott> Secure, decentralised, human-meaningful: pick two.
03:59:32 <elliott> IP addresses *must* be decentralised.
03:59:39 <elliott> IP addresses *must* be secure (in that you can't just pick the same IP as someone else).
03:59:44 <elliott> Therefore they cannot be human meaningful.
03:59:55 <elliott> That needs to be handled at a separate layer, i.e. DNS.
04:00:05 <elliott> BTW, there's no reason you can't assign internal hostnames either, at the router level.
04:00:45 <RodgerTheGreat> tacking on another couple of .FF suffixes would've solved the problem without making them nasty to parse and look at
04:01:05 -!- augur has joined.
04:01:06 <elliott> "Couple"? 32-bit vs. 128-bit :P
04:01:50 <elliott> Clearly we all need to use the @DN instead.
04:01:55 <elliott> Until then, IPv6 is perfectly cromulent.
04:04:36 -!- azaq23 has quit (Ping timeout: 246 seconds).
04:05:06 <RodgerTheGreat> in other news I have built a partial implementation of itertools for forth: http://pastebin.com/kMsZRR8U
04:06:35 <elliott> Wow... it'll offend both Forthers and Pythonistas (hate that term) alike.
04:07:14 <elliott> It looks a bit un-factored, especially range/sequence/slice/filter/chain/zip having very similar structure to my eyes. But fun.
04:07:22 <elliott> A pain to manage the memory manually though.
04:07:34 <elliott> Also I think standard convention is to put the ; on the last line, but who cares...
04:07:50 <RodgerTheGreat> well, I haven't implemented repeat and cycle, so I don't have to do dynamic allocation
04:08:15 <elliott> So map destroys the original iterator?
04:08:53 <elliott> In HASKELL, generators/iterators are exactly equivalent to lists. >:)
04:09:06 <RodgerTheGreat> I am currently using defining words that build anonymous words to function as closures
04:09:27 <elliott> ("newtype Generator a = Gen (Maybe (a, Generator a))" is directly algebraically transformable into the list type.)
04:09:29 <RodgerTheGreat> yeah, well in Forth I know what actually happens when I use generators
04:09:43 <elliott> I know what happens in Haskell, too. :p
04:09:50 <elliott> But that's because I know the language and stuff.
04:09:54 <olsner> elliott: and in PYTHON, generators are merely retarded >:)
04:10:10 <elliott> olsner: Whaddya do when you have a limited set of control structures and they all suck.
04:11:05 <RodgerTheGreat> in my language none of the control structures are primitive
04:11:37 <pikhq> Heck, I've actually directly implemented Haskell-like lists in C.
04:11:42 <pikhq> ... A few different times.
04:11:55 <elliott> (Well... "if x then y else z" is, but that's a wart; you can just as easily rewrite that as a function (though without the then/else, but those are warts in themselves))
04:16:06 <elliott> oerjan: if your language has no way to distinguish any two values, then you're not going to be able to implement every other control structure :D
04:16:17 <elliott> (you could do it Church style in Haskell I guess, buuuut...)
04:16:17 <RodgerTheGreat> forth could conceivably be extended to act like haskell. Dunno why anyone would want to do that, though.
04:16:24 <elliott> RodgerTheGreat: To get a high-level language?
04:16:41 <pikhq> Indeed, Forth is both low-level and highly flexible.
04:16:54 <pikhq> Pretty much any bending/breaking of the language is permissible.
04:17:02 <elliott> I like Forth, but I'd rather write a large program in Haskell than Forth by far.
04:17:12 <elliott> It's just about levels of expression and abstraction.
04:17:23 <elliott> At a certain point in Forth, to go further you have to write your own interpreter loop.
04:17:31 <elliott> And at that point you can't reasonably claim you're programming in Forth any more.
04:17:50 <RodgerTheGreat> forth is somewhat hampered by the general "anti-library" culture
04:18:19 <elliott> RodgerTheGreat: Well... it excels in writing self-contained systems.
04:18:22 <elliott> So that's hardly surprising.
04:18:26 <elliott> (Embedded work is a subset of this.)
04:18:50 <elliott> "It's 2011, and my IDE still doesn't have a REPL!" ;; the title of a blog post written by somebody using the wrong IDE.
04:19:32 <RodgerTheGreat> part of this is because the language is only half of "forth". The other half is an engineering approach that is about agressive simplification. If you don't have a closed system, unnecessary complexity from the outside world will leak in and make your forth uglier and more complex
04:19:53 <elliott> Sure... which is a direct argument *against* libraries.
04:20:12 <elliott> That kind of thing works for many tasks, but Forth tends to fall apart when it comes into contact with large *inherent* complexity.
04:20:36 <elliott> Like I said, you can do it, but you end up writing an ad-hoc, probably buggy and flawed language, and then writing your actual program in that language.
04:20:50 <pikhq> Moore would hate MPEG.
04:21:00 <elliott> I don't think he would. I don't know Moore as a person who says things that are blatantly wrong.
04:21:13 <elliott> RodgerTheGreat: Uh, actually, he did this talk on colorForth where he suggested someone write a web browser.
04:21:37 <RodgerTheGreat> but his argument isn't completely flawed. Browsers could be much, much simpler than they are
04:21:41 <elliott> The web is of course totally accidental/engineered overcomplexity. But not everything fits directly into Forth as cleanly as it might in another language.
04:21:58 <elliott> Oh, I hate the web, who doesn't? It's incredibly badly architectured.
04:22:21 <RodgerTheGreat> I'm imagining he'd like something more like wget with a graphics package
04:22:35 <elliott> wget? That involves all the complexity of TCP.
04:22:39 <elliott> wget? That involves all the complexity of HTTP.
04:23:03 <elliott> I'd imagine he'd just load arbitrary Forth programs off the wire... I'm not sure he'd add any security to it either :
04:23:21 <elliott> ...which is a worse design than the web, but at least a simpler one.
04:23:36 <elliott> It can be critiqued in a few lines, rather than the book it'd take to dissect the web.
04:24:19 <elliott> Right. Then the problem is transferring stuff out (but it wouldn't be too hard).
04:24:24 <RodgerTheGreat> and given how easy forth-in-forth can be it wouldn't be that ridiculous to implement
04:24:31 <elliott> RodgerTheGreat: Unfortunately a sandbox would take quite a bit of work in Forth, since words usually touch the hardware very directly.
04:24:34 <elliott> I don't think it would be elegant.
04:25:09 <pikhq> Perhaps the worst bit of that design is that it would be very hard to design pages *well* in such a scheme.
04:25:12 <RodgerTheGreat> if you don't care about speed it comes down to a handful of "dangerous" primitives like ! @ and execute
04:25:17 <pikhq> Much like HTML, to be honest.
04:25:24 <elliott> RodgerTheGreat: and p@ and p! (in cforth)
04:25:32 <elliott> probably dozens of others that access memory without asking :)
04:25:45 <pikhq> Though at least you wouldn't be spending your time working around straight-up misfeatures.
04:25:49 <RodgerTheGreat> there are really only a handful that can't be implemented in terms of others
04:26:09 <elliott> RodgerTheGreat: So now you've complicated the problem of an information system into a Forth implementation.
04:26:14 <RodgerTheGreat> and again, if speed is not a consideration you can build a huge percentage of a forth system in high-level forth
04:26:20 <elliott> Imagine implementation incompatibilities in *that* :)
04:26:27 <elliott> RodgerTheGreat: Sure, but then you're not taking advantage of Forth really.
04:26:30 <elliott> You can implement Forth in anything.
04:26:36 <pikhq> RodgerTheGreat: Why yes, you can write a Lisp in anything.
04:26:50 <elliott> My Pet Solution to the web is simply distributed object retrieval.
04:26:55 <elliott> (Where object is _not_ used in the OOP sense.)
04:27:09 <elliott> (Well... slightly. But >90% of OOP is bunk.)
04:27:18 <RodgerTheGreat> if it's a mirror of how the underlying system works, it isn't a significant increase in the complexity of the whole, which is really what I see as the issue
04:27:21 -!- copumpkin has joined.
04:27:53 <elliott> One thing is that systems like Haskell seem complex and inscrutable *only* because we approach them from a background biased against them; take a look at your x86.
04:28:04 <RodgerTheGreat> OOP isn't necessary for programming per se. OOP is useful for sawing up tasks and distributing them across multiple programmers. It's a teamwork methodology.
04:28:13 <elliott> Consider if we all had Reducerons, a CPU with no instruction set: http://www.cs.york.ac.uk/fp/reduceron/
04:28:19 <elliott> It's a symbolic graph reducer on a chip.
04:28:26 <elliott> From that, Haskell would seem a billion times more natural than Forth or C
04:28:40 <elliott> So simplicity can often be a misleading concept, because it's relative.
04:28:55 <elliott> <RodgerTheGreat> OOP isn't necessary for programming per se. OOP is useful for sawing up tasks and distributing them across multiple programmers. It's a teamwork methodology.
04:29:03 <elliott> I could believe this if people did not include inheritance in OOP.
04:29:19 <pikhq> elliott: I certainly don't call inheritance mandatory for OOP.
04:29:26 <elliott> But people use inheritance in OOP.
04:29:33 <elliott> And inheritance breaks APIs.
04:29:41 <pikhq> Which can often cause pain and agony and sorrow.
04:29:50 <elliott> Any time composition can't do something and inheritance can, that is because of a design flaw somewhere.
04:30:01 <elliott> And inheritance impedes distributed teamwork with its intense coupling of code.
04:30:13 <elliott> Inheritance is a tool to break an object's interface.
04:30:31 <elliott> RodgerTheGreat: What can inheritance do that composition can't, that does not arise from a design flaw?
04:30:54 <elliott> Anyway, re tool-improperly-you-will-bleed: by that argument, assembly is perfectly OK for teamwork.
04:31:09 <elliott> The fact that it has a huge possibility for error and messing beyond API boundaries -- hey, apply improperly and you'll bleed.
04:31:46 <RodgerTheGreat> inheritance and composition are of equivalent expressive power. Lemme go fire up my turing machine.
04:32:38 <elliott> RodgerTheGreat: No. Because a subclass of class A can be used as an A, despite the fact that its implementation may break the Liskov substitution principle. (And this can be VERY tricky to get right, even if it does not seem so). (Note: Eiffel avoids this. Most people do not use Eiffel.)
04:32:51 <elliott> Also, in many languages subclasses can access data that the rest of the world can't... which is just *wrong wrong wrong*.
04:33:15 <RodgerTheGreat> I will parenthetically note that C++ is OOP in name only
04:34:03 <elliott> Paraphrase of Alan Kay: "I invented the term OOP, and I can tell you, I didn't have C++ in mind. [laughter] Not Smalltalk, either.
04:34:12 <elliott> (This is usually quoted without that last sentence; one may speculate freely on the reasons why.)
04:34:28 <elliott> (I would paste the real quote but it is impossible to find; Google only yields the incomplete versions.)
04:39:33 -!- optbot has set topic: logs: http://tunes.org/~nef/logs/esoteric/?C=M;O=D and http://208.78.103.223/esoteric/ | it's done, the only thing it doesn't do is annotate a paste.
04:39:36 -!- optbot has set topic: logs: http://tunes.org/~nef/logs/esoteric/?C=M;O=D and http://208.78.103.223/esoteric/ | ;P.
04:39:38 -!- optbot has set topic: logs: http://tunes.org/~nef/logs/esoteric/?C=M;O=D and http://208.78.103.223/esoteric/ | heh.
04:39:39 -!- optbot has set topic: logs: http://tunes.org/~nef/logs/esoteric/?C=M;O=D and http://208.78.103.223/esoteric/ | + Nick change: AntiGarlicMonste -> ais523.
04:39:41 -!- optbot has set topic: logs: http://tunes.org/~nef/logs/esoteric/?C=M;O=D and http://208.78.103.223/esoteric/ | its hard to see the fractals :(.
04:40:40 <optbot> elliott: what pikhq said
04:40:40 <optbot> fungot: System to take template file and packages and build bit-exact ISO from those.
04:41:18 -!- pikhq_ has joined.
04:41:31 -!- pikhq has quit (Ping timeout: 250 seconds).
04:41:41 <RodgerTheGreat> pikhq_: dude, you really need to do something about your net connection
04:41:47 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
04:42:16 <pikhq_> It's my stepdad's new router. It sucks ass. And he thinks he's better at tech than I. And is paranoid.
04:42:22 <pikhq_> So I can't do anything about it at all.
04:42:46 <pikhq_> I live at home, for I am cheap.
04:42:57 <elliott> <pikhq_> It's my stepdad's new router. It sucks ass. And he thinks he's better at tech than I. And is paranoid.
04:43:58 <RodgerTheGreat> in my opinion living at home to save money is a rather egregious false economy.
04:44:20 <elliott> RodgerTheGreat: Only if you can get decent work.
04:44:26 <elliott> I'm looking at you, America.
04:44:40 <pikhq_> The money to move out isn't going to come out of thin air. And employment is hard to find ATM.
04:45:02 <RodgerTheGreat> especially if you have enough brain cells to rub together for undergrad research
04:45:24 <pikhq_> Community college, because I can't bloody well afford to do otherwise.
04:45:49 <elliott> "Well, at least I'm not going to Sgeo's."
04:46:17 <pikhq_> elliott: Not even joking, an associate's from here would be worth more than a bachelor's from there.
04:46:35 <pikhq_> IT REQUIRES MORE BUSINESS CLASSES THAN MATH CLASSES FOR GOD'S SAKE
04:46:41 <elliott> Or a Ph.D. from there. God, they'll actually do Ph.D.s, won't they.
04:57:50 -!- azaq23 has joined.
05:21:50 -!- optbot has set topic: logs: http://tunes.org/~nef/logs/esoteric/?C=M;O=D and http://208.78.103.223/esoteric/ | very fine... just got back from holidays..
05:22:19 <oerjan> optbot: so where did you have your holiday?
05:22:19 <optbot> oerjan: computer records.
05:28:39 -!- asiekierka has joined.
05:51:30 -!- augur has quit (Remote host closed the connection).
05:55:56 -!- augur has joined.
06:04:41 -!- augur has quit (Remote host closed the connection).
06:14:06 -!- asiekierka has quit (Remote host closed the connection).
06:16:35 -!- asiekierka has joined.
06:23:18 <RodgerTheGreat> I am constantly baffled at the things people post online
06:23:41 <elliott> RodgerTheGreat: it's not about online. it's just that you only see it because it's online
06:24:07 <elliott> unless people regularly tell you about people 6 degrees separated from you and how they talked to this idiotic person they know
06:24:41 <elliott> the more ignorant and prejudiced, the less realising of that they are.
06:24:43 <RodgerTheGreat> it surprises me that people say stuff like that in a public forum
06:25:09 <elliott> it seems obvious that they thought their original point was totally unobjectionable, and then just tried to save face badly when their social peers reacted badly
06:25:11 <RodgerTheGreat> but you're right, it shouldn't really be that hard to believe
06:25:33 <elliott> I'd like to live in a world where such things _do_ elicit legitimate incredulity.
06:26:38 <pikhq_> I'm worried about the 5 "likes".
06:27:04 <elliott> Ehh, I'm sure "like" is applied to things people hate but lol at.
06:27:18 <Sgeo> Depends on the liker, probably
06:27:19 <elliott> (Someone else can confirm/deny this, I don't use facebook.)
06:27:20 <pikhq_> There needs to be a "Fuck you" button.
06:28:05 <elliott> Thought: emacs : unix :: facebook : the internet.
06:28:13 <elliott> "Emacs is a great OS, but I prefer Unix."
06:28:52 <elliott> 06:05:03 <oerjan> optbot: so where did you have your holiday?
06:28:52 <optbot> elliott: making this is so hard :D
06:28:52 <elliott> 06:05:03 <optbot> oerjan: computer records.
06:28:52 <elliott> 06:05:10 <oerjan> ...i see.
06:28:52 <optbot> elliott: http://www.esolangs.org/wiki/Defcalc
06:29:03 <elliott> oerjan: it traversed into another data structure :)
06:29:40 <olsner> oh, the horror when people start thinking facebook "is" the internet like they think google is
06:29:47 <olsner> or maybe they already have
06:30:16 <elliott> olsner: Maybe they have. Let's put it this way: facebook has all but *replaced* the Internet for some people.
06:30:22 <elliott> It literally does everything but packet switching.
06:30:26 <elliott> And this is fucking scary.
06:31:01 <elliott> (Email? Yep. IM? Yep. Usenet...sorta? Yep. Social networking? Yep. Casual games? Yep. ...)
06:34:29 <pikhq_> And yet I find myself spending maybe 10 minutes on Facebook a day.
06:34:51 <pikhq_> Only really got one to shut people up.
06:35:21 <pikhq_> Okay, well, I suppose I'm *logged in* 24/7. Logged in via Jabber and all that. :P
06:35:50 <elliott> I had one, but never ever ever used it, and then one day I noticed that occasionally people actually noticed it existed, so I deleted it.
06:36:05 <elliott> AFAICT this doesn't bother anyone because I'm boring anyway.
06:36:14 <pikhq_> Man. The Simpsons has been running for *21 freaking seasons*.
06:36:36 <pikhq_> ... And is almost exactly as old as I am.
06:37:17 <elliott> And almost as unfunny HAHAAHAHHAAHHAHAHAHAHAhem.
06:37:36 <pikhq_> elliott: For the first, oh, 9 seasons, it was brilliant.
06:38:28 <oerjan> we must conclude that pikhq_ was hilarious as a child.
06:38:57 <elliott> (picking on innocents//=my favourite pasttime)
06:39:24 <pikhq_> ... If The Simpsons ends, do I die?
06:39:24 -!- augur has joined.
06:39:44 <olsner> pikhq_: it shall be the end of you
06:39:52 -!- augur has quit (Remote host closed the connection).
06:39:53 <elliott> It is, after all, not EXACTLY as old as you.
06:39:57 -!- augur has joined.
06:40:02 <elliott> pikhq_: BETTER GIVE MONEY TO RUPERT MURDOCH.
06:40:26 <pikhq_> So, if I can just make The Simpsons about as likely to end as, say, Superman comics, I'll be immortal?
06:40:31 <oerjan> hm death, or money to murdoch. decisions, decisions.
06:41:06 <oerjan> olsner, always with his win-win options.
06:41:47 <pikhq_> Step one will have to be death to Murdoch. If The Simpsons gets genuinely popular again, rather than carrying on on inertia, then it's fucked with Murdoch at the helm.
06:42:20 <elliott> pikhq_: note that as the Simpsons gets shittier, so will you.
06:42:38 -!- RodgerTheGreat has quit (Quit: RodgerTheGreat).
06:42:38 <elliott> if "The Simpsons" gets televised weekly and it's just a pile of sludge steaming for half an hour... that's what you will be.
06:42:57 <pikhq_> elliott: Which, again, is why I must bring death to Murdoch.
06:43:06 <elliott> pikhq_: note that matt groening is still mortal.
06:43:38 <pikhq_> Okay, then I'll have to make Groening immortal somehow.
06:43:41 <elliott> pikhq_: (his life depends on, believe it or not, Family Guy.)
06:43:49 <elliott> you must do a great many terrible things to stay alive.
06:44:17 <elliott> pikhq_: and Seth MacFarlane depends on goatse.
06:44:29 <pikhq_> Dammit, Seth MacFarlane is immortal!
06:44:35 <oerjan> wait i'm pretty sure matt groening is older than family guy
06:44:55 <elliott> matt groening will die [the difference] before family guy ends.
06:45:09 <pikhq_> Which would also suggest Family Guy will never end, so Groening is immortal.
06:45:33 <pikhq_> elliott: Memes do not die.
06:45:33 <elliott> That is not dead which can eternal lie,
06:45:42 <elliott> And with strange aeons, even Seth MacFarlane can get sick of the sound of his own voice.
06:45:45 <wareya> Did someone say memes?
06:45:53 <oerjan> that guy who was born the same day as mickey mouse truly has it made.
06:46:18 <pikhq_> oerjan: Oh, dear God, he will probably outlast the heat death of the Universe.
06:46:31 <elliott> there will only be mickey mouse.
06:46:45 <elliott> ...for his copyright to expire
06:46:50 <oerjan> until his copyright _finally_ expi...dammit
06:47:08 <pikhq_> And then he said, let there be light. And there was light, and he saw that it was good.
06:47:18 <oerjan> i guess it's not the first time we've done that meme
06:47:37 <pikhq_> After all, Mickey Mouse will need humans around to extend copyright.
06:47:40 <elliott> pikhq_: I approve of this Mickeymouseology.
06:51:17 <wareya> I'll become a mickeymousetian if you set up the mickeymousefunhouse.
06:52:20 <elliott> That sounds slightly paedophilic.
06:52:58 <pikhq_> Saint Pedobear approves.
06:53:34 <elliott> ok, i need to figure out how to enable bochs' debugger. this is ridiculous.
06:54:33 <pikhq_> SANCTVS PAEDOBARIVS, you mean.
06:54:49 <oerjan> pikhq_: i don't think church latin is that capital intensive
06:54:53 * pikhq_ disbelieves in lower-case Latin
06:55:27 <pikhq_> Church Latin is blasphemy.
06:55:45 <elliott> so is molestation, doesn't stop 'em!
06:56:12 <oerjan> i'm not sure the bible outlaws molestation anywhere
06:56:14 <wareya> I have the formation of the last word wrong
06:56:30 <pikhq_> oerjan: It outlaws sexual activity outside of marriage.
06:56:41 <wareya> I passed latin 1 with a 60. That's how good at it I was.
06:56:52 <pikhq_> Marriage at birth is entirely permissible, however.
06:56:55 <oerjan> as long as it wasn't latin 60 with a 1
06:57:25 <pikhq_> Also, the Catholic church mandates celibacy in its clergy.
06:57:26 <oerjan> (void in regions where lower characters are better)
06:58:51 <oerjan> wareya: i think OMNIA is perfectly appropriate plural neuter accusative
06:59:15 <oerjan> whether that is the form you intended, i cannot say
07:00:02 <wareya> pikhq_: I learned church latin :<
07:00:33 <pikhq_> wareya: That's about as valid as learning txt nglsh.
07:00:38 <elliott> oerjan: that's good. it's funny!1
07:00:54 <elliott> http://www.mezzacotta.net/ads/finland.png
07:01:00 * pikhq_ especially "loves" the bit where they pronounce Latin using Italian pronunciation rules.
07:01:24 <elliott> (relevant fodder for oerjan)
07:02:27 <oerjan> ï hävë nö ïdëä whät ÿöü ärë tälkïng äböüt
07:03:45 <pikhq_> Ï ẗöö ẅöüld lïkë ẗö knöẅ ẗḧäẗ.
07:06:58 -!- asiekierka has quit (Ping timeout: 260 seconds).
07:17:34 -!- asiekierka has joined.
07:26:40 <Ilari> APNIC Depletion predicted 3rd June (Huston). I recall when 3rd June was predicted APNIC deplation date.
07:26:47 <Ilari> *IANA depletion date.
07:32:18 -!- azaq23 has quit (Ping timeout: 240 seconds).
07:35:12 -!- azaq23 has joined.
07:35:13 <elliott> olsner: its built in debugger flags syntax error with no info on almost any input, and the inputs that do work don't give me anything helpful like, say, the line _my_ code executed, not the bios
07:35:25 <elliott> (the stack trace was just a bunch of seemingly-random hexs, not related to my program locations.)
07:35:39 <elliott> also even though i specify -q it still brings up a menu when it starts :)
07:36:59 <olsner> yes, it's very very simple, the debugger
07:37:06 -!- azaq23 has quit (Client Quit).
07:37:13 <olsner> simple in the retarded sense, I guess
07:38:04 <olsner> I still find it more useful than no debugger, and I've decided not to complain about crappy debuggers but be happy about the luxury of a debugger even existing
07:40:06 <elliott> olsner: I would, except I literally can't figure out how to do the simplest task
07:40:42 <olsner> hmm, that could just be you being stupid though
07:53:07 <pikhq_> ... *What the hell George Lucas*.
07:53:20 <pikhq_> Y'know the cantina scene in "A New Hope"?
07:53:29 <pikhq_> That genre of music, in-universe, is called "jizz".
07:53:37 <pikhq_> I am *not* fucking kidding.
07:54:11 <olsner> next time you see it, think of it as George Lucas jizzing in your living room
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:00:34 <pikhq_> And it's *still* less embarrassing than the Holiday Special.
08:03:15 <pikhq_> Y'know it's bad when it makes its actors start doing crack.
08:03:33 <pikhq_> Erm, cocaine. Not crack cocaine.
08:07:01 -!- Phantom_Hoover has joined.
08:07:24 <elliott> hello Phantom_Hoover, i've not slept again, prepare for criticism
08:28:17 -!- wareya_ has joined.
08:30:48 -!- wareya has quit (Ping timeout: 246 seconds).
08:34:36 <fizzie> Database terminology is so colorful: "If the primary server fails and then immediately restarts, you must have a mechanism for informing it that it is no longer the primary. This is sometimes known as STONITH (Shoot the Other Node In The Head), which is necessary to avoid situations where both systems think they are the primary, which will lead to confusion and ultimately data loss."
08:39:25 <elliott> do tracks/sectors/heads start from 0 or 1
08:44:34 -!- azaq23 has joined.
08:45:56 <fizzie> I think the cylinder and head values are 0-based, but the sector count starts from 1.
08:46:12 <fizzie> The table at http://en.wikipedia.org/wiki/Logical_Block_Addressing#CHS_conversion seems to agree.
08:49:29 <fizzie> Well, you *could* use the LBA version -- http://www.ctyme.com/intr/rb-0708.htm -- though constructing that data structure for the address would probably cost more bytes.
08:49:38 <fizzie> What do you need disk reading for?
08:50:47 <elliott> fizzie: I just want something that loads some kilobytes of kernel and jumps to it. It seems to be working.
08:50:55 <elliott> (Decided the best break from a Forth bootsector is a Forth OS.)
08:51:09 <elliott> It even makes a nice little | / - \ spinner while it loads, too!
08:51:18 <elliott> And on real hardware you might even see that for half a second!
08:51:35 <fizzie> Got tired of sticking everything into 510 bytes, I see.
08:52:30 <elliott> fizzie: it can be... frustrating
08:52:55 <elliott> 45 0000003D 64C70600007C0F mov word [fs:0], vgachar('|')
08:53:00 <elliott> That instruction; it is uncomfortably long.
08:54:25 * elliott turns on a20 using the bios, because does anything NOT support that?
08:54:52 <fizzie> Segment override prefix (64h), opcode (C7h), modrm byte for operand (06h), 16-bit offset (0000h) and data (7C0Fh)... they do add up.
08:55:53 <fizzie> If you happened to have bx or si or di 0 at that point, "mov word [fs:di], ..." would be shorter. But I guess they most likely hold real values.
08:57:15 <fizzie> On MIPS you could use r0, the best register of them all. (It's hardwired to have the value 0.)
08:58:49 -!- asiekierka has quit (Ping timeout: 250 seconds).
09:00:24 -!- MigoMipo has joined.
09:00:46 <fizzie> IIRC the assembler pseudo-op "li r8, 0x1234" is internally encoded as "ori r8, r0, 0x1234" or some such.
09:01:05 <elliott> <fizzie> If you happened to have bx or si or di 0 at that point, "mov word [fs:di], ..." would be shorter. But I guess they most likely hold real values.
09:01:17 <elliott> I think si/di are free, it's just a boot sector. But it's tiny, so I don't really care that much :P
09:01:31 <elliott> Can we get a register for every word?
09:21:07 <oklopol> elliott: do you know japanese yet
09:21:25 <elliott> oklopol: no, been a bit busy not sleeping and such, i plan to figure out how to operate amazon with no cognition today
09:21:37 <elliott> i suppose that would let me purchase book things that could be helpful
09:21:38 -!- elliott has left (?).
09:21:40 -!- elliott has joined.
09:21:45 <elliott> why do keys do things when you press them
09:23:58 <elliott> so what are the things, oklopol.
09:28:05 -!- oerjan has quit (Quit: Reboot).
09:32:15 -!- asiekierka has joined.
09:32:39 <oklopol> except learning japanese, and reading a paper
09:33:10 <oklopol> i have an exam on monday tho so will have to work a few hours at some point
09:34:37 <elliott> erm oh right this channel exists?
09:34:49 <oklopol> and i'm asking you what the things is
09:34:53 <elliott> i haven't had much sleep. in fact, any
09:34:57 <elliott> 12:45:10 <fizzie> Out of curiosity, what should happen if a Funge-98 IP were to hit the > on the line ";>#;"? (Quotes not part of the line, obviously.)
09:35:18 <elliott> now does # skip over ; or not, lemme check funge
09:35:36 <elliott> ok so the > goes onto the #
09:35:39 <elliott> then that goes on to the ;
09:35:41 <elliott> which wraps around to the ;
09:36:11 <elliott> oklopol: _not_ explicitly wrapping
09:36:20 <elliott> if you have "a#" on a line, it goes to a, because # moves to the space to the right of it
09:36:56 <elliott> the # moves us into the _space_
09:38:47 <elliott> 23:36:20 <AnMaster> ais523, there?
09:38:48 <elliott> 23:36:29 <AnMaster> ais523, seems c-intercal was added to portage(!)
09:38:48 <elliott> wonder how hideously out of date it is now
09:38:53 <elliott> oklopol: logreading, i am also logreading
09:39:04 -!- azaq23 has quit (Ping timeout: 255 seconds).
09:40:12 <elliott> oklopol: so any plans for december?
09:41:43 <elliott> oklopol is all...what's december, right now
09:47:11 <Phantom_Hoover> I think someone on RW is claiming to have worked out how to factorise numbers very quickly.
09:47:26 <elliott> 22:29:30 <oklocod> GregorR: computers are turing complete, and 0..2^64-1 is an infinite set
09:47:26 <elliott> 22:29:57 <GregorR> By what stretch of the imagination is 0..2^64-1 an infinite set?
09:47:27 <elliott> 22:30:15 <oklocod> GregorR: it's reeeeeally big
09:47:43 <Phantom_Hoover> elliott, http://rationalwiki.org/wiki/RationalWiki:Saloon_bar#Friday_conundrum
09:48:03 <Phantom_Hoover> He doesn't actually give any evidence or even any indication how fast it is, though.
09:48:06 <elliott> Phantom_Hoover: Uhh, that's a joke/hypothetical.
09:48:20 <elliott> I refuse to provide any more justification for this obvious fact than "Adrian Chen".
09:49:01 <elliott> Additional evidence: Nobody actually asks actual dilemma-related questions in that way.
09:50:37 <elliott> Phantom_Hoover: Who blocked pi.
09:51:02 <elliott> Also this SusanG person talks way too much.
09:51:08 <elliott> And has an irritatingly non-textual signature.
09:51:15 <Phantom_Hoover> No idea; it's almost certainly one of RW's many frivolous blocks.
09:51:51 <elliott> "I won't comment on any LQT page. No matter how much I care about the subject. I think it's terrible as it stands."
09:51:55 <elliott> Well, at least there's that.
09:52:08 <elliott> Phantom_Hoover: http://rationalwiki.org/w/images/3/3b/Blue2pwnage.png
09:52:11 <elliott> Phantom_Hoover: ENJOY YOUR BLOCK
09:53:01 <elliott> Phantom_Hoover: I also like how nobody responded to that factoring thing with an even vaguely ethical response.
09:53:35 <elliott> Well, I mean at the top level.
09:53:36 <elliott> 1) Tell me. 2) Exploit it for every penny you can. DeltaStarSenior SysopSpeciationspeed! 15:57, 11 March 2011 (UTC)
09:53:46 <elliott> OK, so there's exactly one.
09:54:50 <Phantom_Hoover> http://www.thesun.co.uk/sol/homepage/news/3455095/Extreme-supermoon-said-to-set-Earth-up-for-weather-chaos.html
09:55:01 <elliott> anyway, Phantom_Hoover sucks, i'm coding more os
09:55:16 <Phantom_Hoover> [[Some amateur scientists warn it could trigger extreme conditions all over the world, from earthquakes to tsunamis.]]
09:55:18 <elliott> "Some amateur scientists warn it could trigger extreme conditions all over the world, from earthquakes to tsunamis."
09:55:34 <elliott> Phantom_Hoover: It will cause them RETROACTIVELY
09:55:39 <elliott> THE MOON IS MAGIC AND DEFIES TIME.
09:55:53 <elliott> Phantom_Hoover: "Published: 09 Mar 2011"
09:55:56 <elliott> THE SUN: Ahead of the curve.
09:56:00 <Phantom_Hoover> [[Oh Dear. Looks like John Kettley should have listened to his physics teacher. Quakes rock Japan news just in. Gravitational force increases inversely by the square of the distance. Half the distance, and you quadruple the force between those two objects. Of course the moon can cause earthquakes and tsunamis!! The force between earth and the moon can move billions of tons of water, and the earth's mantle too!!]]
09:56:20 <elliott> "Coo another excuse for them to hike petrol prices up, they don't need decent excuses you know."
09:56:30 <elliott> "if it gets too close the PM will invent a tax for us looking at it"
09:56:43 <elliott> "Tell the moon not to stop too close as it might get a parking ticket"
09:56:46 <elliott> My god, the right wing, it hurts.
09:57:11 <Phantom_Hoover> [[Of course a planet moving closer to Earth can cause an earth quake, what would a weather man know.
09:57:11 <Phantom_Hoover> They only get it right now because of satellite coverage, I can predict my own weather by watching live satellite imagery.]]
09:57:13 <elliott> "oh no, stock pile endless cans of spam, panic buy bread and milk, nail crooked bits of wood across the doors and windows to keep out the mutant zombies, WE'RE ALL GONNA DIE.........
09:57:14 <elliott> or maybe nothing at all will happen, and I can get on and watch Emmerdale..."
09:57:14 <elliott> Stockpiling food for fear of zombies, and watching Emmerdale: two equally bad situations.
09:57:35 <elliott> Phantom_Hoover: Sarcasm, I *think*.
09:57:48 <elliott> Anyway, laugh at my hee-larious Emmerdale quip.
09:58:07 <elliott> "LOL the scientists say it's moving several metres a year away from us, and now they say it's the closest in 18 years? okay then, the scary thing is, that a repeat of the 2004 tsunami could happen again."
09:58:17 <elliott> "The last time Haleys comet passed by the Earth it rendered me impotent for years,luckily Viagra fixed it and now the wife is over the moon !."
09:58:38 <elliott> "Well I blame the Government LOL!" "I blame immigrants." ;; first one probably joke, second one joke
09:58:45 <elliott> "Well personally I blame the "Global warming folks". Even George Bush knew they were nutters and now they have caused the moon to collide with Mars......Oops, sorry! I mean Earth. What are we to do? I have the answer. Let's put up some more of those wind-turbines. Perhaps we can blow it of course at the last minute.
09:58:45 <elliott> I hope you will excuse me now as I have to return to the real world."
09:59:20 <elliott> "The moons gravity does have an effect on magma under the earth, just like the effect on water it is being pulled, therefore one of a possible number of causes of earth quakes."
09:59:33 <elliott> "we will get taxed for increased flood risks"
09:59:37 <elliott> "could we be taxed for this? ...like is it our fault in any way"
09:59:51 <elliott> "The Liberals will try and conjur another tax out of this." ;; TAXES
09:59:56 <oklopol> "<elliott> oklopol: so any plans for december?" no
10:00:00 <elliott> "They've missed an oppotunity to blame it on global warming there" ;; CLIMATE CHANGE
10:00:23 <elliott> "What's the good news, well if it happens as stated, there is nothing we can do about it, we will probably be told it is down to global warming, but, no matter what happens to this world, it' all down to NATURE, only nature will decide what will or will not happen, those who keep shouting that humans are causing the CO2 causing Global Warming are talking rubbish, one Volcanic eruption covers the world in many gases, including CO2, when Krakatoa e
10:00:23 <elliott> xploded early in the 1800s, according to records, some of those gases were still in the atmosphere in 1960, since then we have had many volcanic eruptions, Iceland, Hawaii, and the ring of fire, only nature will decide in most cases whether we live or die." ;; WHAT
10:00:55 <elliott> "It probably also means that people will start going mental. The human body is made up of 70% water after all..." ;; NO, JUST NO
10:01:23 <elliott> "Maxnex.. No green tax but if its too close then It will be subject to Londons congestion charge!" ;; FFF
10:01:35 <elliott> It is a wonder the government or the EUC has not asked the tax payers for an additional "green" tax on this.
10:01:44 <elliott> shut up about taxes and global warming you shitpots
10:01:47 <Phantom_Hoover> It's at times like this you wonder how anyone with the slightest hint of rationality doesn't go around punching people.
10:01:57 <elliott> good question, right now it's because i'm tired
10:02:16 <elliott> oklopol: you know. that thing.
10:02:56 <Phantom_Hoover> http://www.reddit.com/r/math/comments/g1r53/it_is_possible_to_translate_any_turing_machine/
10:03:30 <elliott> "Something tells me that Turing would have been very fond of Wang had he lived into the 1960's..."
10:03:36 <elliott> Phantom_Hoover: Which is the top comment for you?
10:03:50 <elliott> Phantom_Hoover: Try setting the sorting to best, it's quite good.
10:03:55 <elliott> Although RANDALL MUNROE made it so it sucks.
10:04:04 <elliott> "Doesn't that involve solving the halting problem? Isn't that impossible?" ;; hey, i've lost the ability to rage at this
10:04:16 <elliott> "Linked page says “[the halting problem] is highly undecidable” (emphasis mine). Can anyone explain to me what highly means, in that context? Isn’t a problem either decidable or undecidable?" IT'S LIQUIDS!!!
10:04:29 <Phantom_Hoover> Well, that's just a misunderstanding and jesus I really need to get going.
10:04:37 <elliott> get going for what, DEATH??
10:04:40 <elliott> we all get going for death.
10:05:16 <elliott> ojooojoijojiwerwerwerefwefwefwefjooijoijoifefwefewwefwewefojiijjiooijwfewefiojojiwefweiojjiwefewfjiojiowefwefjoiowefoijoiweffweojiojiwfewfejiowefojiwefojiwfeoijojiwfewefojioijwefioi
10:05:20 <elliott> Phantom_Hoover: ohgod]h;'juklo\p[p]\
10:05:58 <elliott> Phantom_Hoover: http://www.reddit.com/r/programming/comments/g0d5g/breaking_news_html5css3_is_turing_complete/c1ker31
10:06:03 <elliott> Phantom_Hoover: fun game: try and find any meaning in this comment
10:06:16 <elliott> (Cook is the one who proved /rule 110/ TC.)
10:06:24 <elliott> (I almost googled "Cook html css turing".)
10:07:25 <Phantom_Hoover> So do I continue goading him into saying "I daresay I know more about this than ais" and then pounce?
10:07:46 <elliott> that's a childish waste of time, even i've abandoned that alley since he didn't call me out on it :)
10:08:00 <elliott> i'd just stop bothering, i've totally got it covered by way of him ignoring me
10:08:19 <oklopol> "<elliott> oklopol: Oh. So you lied." <<< i did?
10:12:20 <oklopol> i suppose i didn't make it a plan, but assumed i'll just happen to do it anyway?
10:12:40 <elliott> oklopol: it was a plan. and for it to work, you have to remember.
10:12:52 <oklopol> to rape you so you won't win the 50 pounds?
10:13:23 <oklopol> to... kill you so you won't win the 50 pounds?
10:13:56 -!- asiekierka has quit (Read error: Operation timed out).
10:14:09 <elliott> oklopol: you will remember, on the day. and it will be glorious.
10:16:15 <elliott> holy shit qbasic has a repl
10:16:18 <elliott> why did fizzie never tell me.
10:16:51 -!- Phantom_Hoover has quit (Ping timeout: 255 seconds).
10:23:21 -!- Phantom_Hoover has joined.
10:30:09 <Phantom_Hoover> [[misinformation about drugs kills infinitely more people than drugs themselves.]]
10:31:26 <elliott> Phantom_Hoover: When that's in your opening line what :P
10:31:57 <Phantom_Hoover> I severely question the sensibility of the rest of the essay.
10:35:15 -!- azaq23 has joined.
10:44:26 -!- elliott has quit (Read error: Connection reset by peer).
10:44:30 -!- elliott_ has joined.
10:44:50 -!- elliott_ has quit (Remote host closed the connection).
10:44:55 -!- elliott has joined.
11:04:34 -!- elliott has quit (Remote host closed the connection).
11:17:33 -!- elliott has joined.
11:20:51 -!- pikhq_ has quit (Ping timeout: 240 seconds).
11:21:06 -!- pikhq has joined.
11:21:39 -!- optbot has set topic: logs: http://tunes.org/~nef/logs/esoteric/?C=M;O=D and http://208.78.103.223/esoteric/ | Anywho, I actually wanted an ereader /primarily/ for reading. For anything else it wouldn't be worthwhile..
11:23:49 -!- aloril_ has quit (Ping timeout: 276 seconds).
11:25:56 -!- asiekierka has joined.
11:38:10 -!- FireFly has joined.
11:48:01 -!- aloril has joined.
11:52:39 -!- asiekierka has quit (Ping timeout: 255 seconds).
11:55:34 -!- elliott has quit (Remote host closed the connection).
12:03:00 -!- elliott has joined.
12:09:32 -!- cheater00 has joined.
12:11:22 -!- cheater- has quit (Ping timeout: 248 seconds).
12:12:21 -!- cheater99 has joined.
12:14:14 -!- cheater00 has quit (Ping timeout: 255 seconds).
12:15:15 -!- aloril has quit (Remote host closed the connection).
12:24:54 -!- aloril has joined.
12:34:53 <elliott> "This is my husband. His name is the Berlin Wall and he was born on August 13, 1961. I expect you've heard of him; he is quite a celebrity. He lives in Berlin.
12:34:55 <elliott> I used to work in a pharmacy. Now I own a museum. My husband's job was to divide East and West Berlin. He is retired now."
12:35:37 <elliott> "It was very much a long distance romance as neither of us likes to travel."
12:38:58 <elliott> Phantom_Hoover: THESE THINGS ARE NOT THINGS THAT I AM MAKING UP
12:39:52 <elliott> Phantom_Hoover: She changed her last name to Berliner-Mauer (Berlin Wall) after getting married to it.
12:39:56 <elliott> (http://www.berlinermauer.se/)
12:40:16 <elliott> "Animism is the belief that inanimate objects are sentient beings, i.e. they have intelligence, feelings, and are able to communicate. Animism is the foundation of objectum-sexuality. My belief in Animism is that artifacts (objects) have the same level of awareness as human beings. I don’t see them as superior beings, which is claimed in some encyclopedias and other literature. That I do NOT believe in. I see artifacts as equal to human beings,
12:40:36 <elliott> "We even made it through the terrible disaster of November 9, 1989, when my husband was subjected to frenzied attacks by a mob."
12:40:40 <elliott> This is the best thing ever.
12:40:57 <elliott> "The Berlin Wall - Brandenburger Tor - 1989 and this will be the ONLY such picture on my site. I hate to see this disaster."
12:48:51 -!- variable has joined.
12:50:32 -!- MigoMipo_ has joined.
12:52:25 -!- MigoMipo__ has joined.
12:53:34 -!- MigoMipo has quit (Ping timeout: 250 seconds).
12:54:11 <cheater99> breaking news: pokemon creator died in earthquake
12:56:19 -!- MigoMipo_ has quit (Ping timeout: 264 seconds).
12:56:30 -!- impomatic has joined.
12:57:19 <impomatic> Elliott: any progress on the Forth?
12:57:55 <elliott> impomatic: Yes, I'm taking a break from it to write an OS with significantly more than 510 bytes to it :-)
12:58:06 <elliott> But at least I think I know how I'd do a compiler compactly with quite some space left over.
13:01:06 <elliott> impomatic: Any progress with yours?
13:02:28 <impomatic> No, I've been ill so I've had a rough week. Planning to start again on Monday.
13:04:26 <elliott> Ah, ok. Hope you're feeling better soon etc.
13:04:32 <impomatic> My MSP430 devboard hasn't arrived yet anyway. I've bought another couple of devboards too. It's amazing how many are under £10 on eBay.
13:04:55 <elliott> That interpreter word you wrote -- how do you plan to actually execute it? Running it through the compiler (written in asm)?
13:05:03 <impomatic> elliott: it's only toothache :-) At least that's what my girlfriend tells me.
13:05:24 <elliott> Now I just have to think of the worst possible thing a toothache could be.
13:05:40 <elliott> Unless I'm seriously mistaken, toothaches can't be cancerous, so logic dictates that you're probably fine.
13:06:30 <impomatic> It is toothache, but with a jaw infection. I tried about a dozen different things but nothing killed the pain :-(
13:07:02 <elliott> I bet you're feeling better already.
13:07:13 <Phantom_Hoover> impomatic, I swear I typed that before it turned out that was basically what you have.
13:07:51 -!- sebbu2 has quit (Ping timeout: 250 seconds).
13:08:16 <impomatic> Yes feeling better. Most of the week I was trying to sleep alway the pain. Now I'm on a couple of antibiotics and painkillers it's not so bad :-)
13:09:13 -!- sebbu has joined.
13:09:13 -!- sebbu has quit (Changing host).
13:09:13 -!- sebbu has joined.
13:11:31 <Phantom_Hoover> impomatic, but you could have died the death of TUTANKHAMEN!
13:14:16 <impomatic> Thankfully I didn't. I still have work to do.
13:14:44 -!- MigoMipo__ has quit (Remote host closed the connection).
13:16:14 -!- MigoMipo has joined.
13:37:37 -!- BeholdMyGlory has joined.
14:09:17 -!- cpressey has joined.
14:10:04 <cpressey> i'm starting to think all programming language criticism boils down to "these two things should be next to each other, but aren't"
14:11:00 <cpressey> the problem of course is that there are always multiple ways to sensible co-locate things
14:12:11 <cpressey> that sort of leads to the idea of storing the program in a database, and reading/editing it under various views
14:12:56 <elliott> cpressey: like TUNES to the max
14:13:08 <elliott> TUNES stores all the objects in fancy databases :P
14:14:18 <cpressey> exactly -- it'll never work ;)
14:15:10 <cpressey> guido's talking about stuff, something about threads and callbacks, i'm not paying attention
14:15:25 <elliott> I think I get to swat people for that.
14:15:46 <cpressey> tunes is a useful, not existent, system
14:16:33 <elliott> well hey, @ matches up with TUNES in almost every aspect in which TUNES has a solid vision, so clearly that's doomed too
14:16:44 -!- iconmaster has joined.
14:16:58 <Phantom_Hoover> cpressey, what do you mean by "these two things should be beside each other"?
14:17:27 <cpressey> Phantom_Hoover: for some two things x and y
14:18:47 <cpressey> Phantom_Hoover: program more. you'll figure it out
14:21:29 <cpressey> by "program" i mean, make changes to >20KLoc programs
14:21:50 <cpressey> writing little elegant programs in scheme doesn't count
14:23:11 -!- azaq23 has quit (Ping timeout: 250 seconds).
14:23:14 <elliott> cpressey: Making changes to >20 kloc programs doesn't sound like my idea of fun.
14:23:24 <elliott> (Unless they're written in Haskell maybe.)
14:23:37 <elliott> (But then it's probably a nuclear reactor if it's that long, and I don't want to touch one of them.)
14:23:44 -!- BeholdMyGlory has quit (Remote host closed the connection).
14:23:59 -!- copumpkin has joined.
14:25:32 <cpressey> thus the programming language criticism
14:28:36 <elliott> I think I'd agree if you said that shallow criticism came down to that. At least I don't think you can argue asm vs. Haskell based on things being beside.
14:30:09 -!- elliott_ has joined.
14:30:09 -!- elliott has quit (Read error: Connection reset by peer).
14:30:13 <cpressey> i'm not sure they aren't just more abstract "things" that you want beside in that case. but i haven't thought about it much
14:30:33 <cpressey> http://us.pycon.org/2011/schedule/presentations/90/ looks somewhat interesting
14:31:39 <elliott_> cpressey: In entirely the wrong way, perhaps.
14:31:52 <elliott_> "This is a good thing! Only the best ideas survive the python-dev gauntlet!"
14:31:56 <elliott_> Or the lowest-common-denominator ones.
14:32:37 <oklopol> that looks like it could be interesting, because they are actually listing facts
14:32:56 <cpressey> oh, well obviously i wouldn't be going to it to agree with that message. rather, to get a look into their thought/selection process.
14:33:29 -!- BeholdMyGlory has joined.
14:33:32 <cpressey> "they rejected *that*? for *that* reason? interesting..."
14:33:57 <elliott_> cpressey: Well hey, Guido removed fold because "it confuses me and for loops are better".
14:34:01 <elliott_> At the very least it will be entertaining.
14:34:25 <elliott_> (I still can't believe he didn't know that TCO != TRE.)
14:35:20 <cpressey> i don't know what those mean either
14:35:50 <oklopol> total cost of ownership and thyroid response element
14:35:55 -!- cpressey has quit (Quit: leaving).
14:36:10 <elliott_> tail-call optimisation and tail recursion elimination
14:36:16 <elliott_> acronyms don't matter, knowing that the latter != the former does
14:36:26 <elliott_> guido thought that TCO was useless because "you can just use a for loop"
14:36:30 <elliott_> which is true for TRE only, ofc
14:36:49 -!- Phantom_Hoover has quit (Ping timeout: 255 seconds).
14:37:57 <oklopol> that's a pretty ridiculous argument, yes
14:38:13 <oklopol> i'm not sure it's because he's confusing the terms though
14:38:25 <elliott_> oklopol: in the next post he was like
14:38:32 <elliott_> "o, i see, so tco is where you do MUTUAL things
14:38:35 <elliott_> [shows example of mutual recursion]
14:38:43 <elliott_> i was skooled on this, didn't know, lol, not that i'm gonna change my mind"
14:40:06 <oklopol> Producing such code instead of a standard call sequence is called tail call elimination, or tail call optimization.
14:40:15 <oklopol> ignore that, was a bit too hasty
14:40:18 -!- asiekierka has joined.
14:40:55 <oklopol> tail recursion elimination can't really be misunderstood, but tail call optimization sounds a bit more ambiguous
14:42:04 <elliott_> oklopol: i like r5rs' solution to this, just says "when you do tail calls, the implementation has to behave exactly like it has an infinite stack" :D
14:42:27 <elliott_> also its approach to memory management is "Scheme is defined assuming infinite memory, and objects are never freed, you can optimise that if you want tho"
14:43:41 <oklopol> i assume that's always the case in high-level languages? erm, except python. and probably others
14:44:11 <elliott_> python doesn't even have a spec :P
14:44:19 <elliott_> i dunno about haskell, i think it's too abstract to even talk about memory ;D
14:44:36 <elliott_> but r5rs' wording is a bit more blunt about it than i would expect most others to be
14:45:14 <oklopol> we have a course on ml and hol soon btw. if you still care about that stuff.
14:45:25 <oklopol> if you care, that may be almost interesting news :)
14:45:37 <elliott_> ml doesn't really have much to do with hol, but yeah sure
14:45:39 <oklopol> because then i'll learn to love it
14:45:49 <oklopol> well you can use hol to prove ml programs correct
14:45:49 <elliott_> but it's a theorem prover, so yeah
14:46:19 <elliott_> ML's a decent language, it has some warts and it's not as overall coherent as Haskell, but some parts are nicer.
14:46:26 <oklopol> but yeah maybe i should've said just hol
14:46:27 <elliott_> hol is cool because every theorem prover is cool :)
14:50:07 <oklopol> i'm so gonna prove that something's true
14:51:24 <elliott_> oklopol: i prefer proving things that are false.
14:52:11 <oklopol> you have an eye for them challenges right
15:04:34 <oklopol> them challenges being the provings of them false things
15:05:58 -!- pikhq_ has joined.
15:06:13 -!- pikhq has quit (Ping timeout: 248 seconds).
15:29:46 -!- copumpkin has quit (Ping timeout: 252 seconds).
15:30:28 -!- copumpkin has joined.
15:59:14 <elliott_> Delivery to the following recipient has been delayed:
15:59:15 <elliott_> Message will be retried for 2 more day(s)
16:05:56 -!- Phantom_Hoover has joined.
16:05:58 -!- Phantom_Hoover has quit (Changing host).
16:05:58 -!- Phantom_Hoover has joined.
16:07:33 -!- Zuu_ has joined.
16:07:35 -!- Zuu has quit (Read error: Connection reset by peer).
16:08:19 -!- Zuu_ has changed nick to Zuu.
16:22:44 <elliott_> "Lady Gaga's approach to clothing seems like hacking to me." --rms
16:22:50 -!- Wamanuz3 has joined.
16:25:38 -!- Wamanuz2 has quit (Ping timeout: 248 seconds).
16:26:06 -!- cheater99 has quit (Ping timeout: 255 seconds).
16:29:43 -!- Behold has joined.
16:31:28 -!- cheater- has joined.
16:31:43 -!- iconmaster has quit (Read error: Connection reset by peer).
16:33:06 -!- BeholdMyGlory has quit (Ping timeout: 248 seconds).
16:33:07 -!- iconmaster has joined.
16:35:12 -!- asiekierka has quit (Ping timeout: 252 seconds).
17:05:06 -!- asiekierka has joined.
17:12:53 -!- elliott_ has changed nick to elliott.
17:12:55 -!- elliott has quit (Changing host).
17:12:55 -!- elliott has joined.
17:16:20 -!- impomatic has quit (Read error: Connection reset by peer).
17:17:37 -!- Behold has quit (Remote host closed the connection).
17:19:08 -!- BeholdMyGlory has joined.
17:21:28 -!- optbot has set topic: logs: http://tunes.org/~nef/logs/esoteric/?C=M;O=D and http://208.78.103.223/esoteric/ | max(X, Y) -> Y..
17:23:33 -!- optbot has set topic: logs: http://tunes.org/~nef/logs/esoteric/?C=M;O=D and http://208.78.103.223/esoteric/ | ^show cho.
17:23:35 -!- optbot has set topic: logs: http://tunes.org/~nef/logs/esoteric/?C=M;O=D and http://208.78.103.223/esoteric/ | For programming or not, there is many things discussed in this channel.
17:31:52 <oklopol> have you ever lived next to a microwave and a fridge? it's awesome
17:38:13 <oklopol> i also live on top of an armchair, but i that's probably not at all uncommon
17:40:02 <pikhq_> It's a bit more problematic living next to a 48" TV in addition to that.
17:40:07 <pikhq_> And several game consoles.
17:40:11 <pikhq_> In the space of a dorm room.
17:41:11 <elliott> just put the tv on the floor and walk on it PROBLEM SOLVED???
17:43:12 -!- cpressey has joined.
17:43:30 <cpressey> indeed there is many things discussed here
17:45:36 <cpressey> this environment is making me want to design a production language & that makes me sad
17:46:32 <cpressey> at least it's not making me want to build a python library, upload it to pypi, and promote it shamelessly
17:47:07 <cpressey> well it sort of is but that's easier to deal with
17:47:35 <elliott> cpressey: make a binding to haskell, it'll annoy EVERYONE!
17:49:00 <elliott> cpressey: i don't know, but it'll upset the pythonistas
17:49:37 <elliott> I guess something that lets you write haskell.run_io(haskell.eval("putStrLn").call(Thunk(lambda: haskell.make_string("Hello, world!"))))
17:51:56 <cpressey> i don't understand how people think
17:53:24 <cpressey> "The goal of the project: [...] 3. Not a goal per se, but I wanted [...]
17:53:31 <cpressey> if you wanted it, it was a goal
17:54:33 <elliott> cpressey: now we're all stuck in a quote.
17:55:58 <cpressey> now it's a misquote and *I'm* buggin'
17:57:25 <cpressey> http://pypi.python.org/pypi/Python/2.5 <-- Python is a package for Python.
17:58:01 <iconmaster> ( Quotes are the least of your problems.
17:58:06 <elliott> cpressey: I like how it explains Python in depth.
17:58:18 <elliott> cpressey: if you liked Python, why not try Python, an interpreted, interactive, object-oriented programming language [...]
17:59:15 <lambdabot> <no location info>: parse error on input `}'
18:00:38 <elliott> NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
18:02:28 <elliott> feather isn't done yet, you fool!
18:05:41 <iconmaster> We need a language where all parens must be unmatched. This would make annoying-looking code.
18:07:31 <iconmaster> Once I make the language, I will paste programs here and wreck unprecedented havoc.
18:10:33 <iconmaster> []{}<>() would be 8 commands, so ] would be a good BF variant... but i'm going for something more original.
18:13:10 <cpressey> ok, apparently being a pythonista causes you to forget that '**' is a workaround for environments where you are not able to depict an actual superscript.
18:13:17 <cpressey> slides are not such an environmen
18:15:27 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
18:18:08 <cpressey> so, a talk on continuous deployment which didn't really address any of the hard issues about continuous deployment
18:18:33 <cpressey> "deploy to a few machines first in case theres a regression" was about it
18:18:41 <elliott> cpressey: continuous deployment and continuous integration sound like they should be much better concepts than they are
18:18:51 <elliott> I'm thinking every single fraction of a diff is integrated and deployed
18:18:52 <cpressey> oh yeah, neither is actually continuous
18:18:58 <elliott> even if you only change one character
18:19:06 <elliott> it ends up integrating half-a-character change
18:19:10 <elliott> it would be beautiful and make no sense.
18:19:12 <cpressey> "frequent integration" doesn't sound sexy enough
18:19:35 <cpressey> yes, that... is... beautiful nonsense
18:19:46 <oklopol> "<elliott> Sorta kinda like nopol :P" toi has that ({} thing
18:20:06 <elliott> cpressey: yes. i eagerly await your esolang based on the noise.
18:20:32 <olsner> eugh, mistranslated prepositions... "waiting on a friend"
18:20:43 <elliott> olsner: um that sounds ~right to me
18:21:13 <olsner> elliott: really? isn't waiting "on" people what a waiter does?
18:21:36 <elliott> but you can definitely wait on an event and/or person
18:21:36 <olsner> and you'd generally be more likely to wait *for* a friend
18:21:48 <oklopol> waiting on your friend means you're on top of your friend, waiting for something
18:22:10 <olsner> oh, didn't know 'on' worked like that too
18:22:14 <olsner> don't think I've seen that
18:22:50 <oklopol> yes, "on" can mean "on" sometimes
18:22:59 <elliott> <olsner> and you'd generally be more likely to wait *for* a friend
18:23:06 <oklopol> erm what? i'm certainly not wrong
18:23:08 <elliott> "oh, yeah, i have a commit to do that, but I'm waiting on dfgjiodfg to approve it"
18:23:25 <elliott> oklopol: well. yes it's technically correct, it could mean that. no, nobody has ever, or will ever, say that and mean that :)
18:24:20 <oklopol> well after saying "on top of a friend" a few hundred times, it gets kinda annoying.
18:25:19 <oklopol> "are you waiting on a table or a shelf btw?" "neither, actually, i'm waiting on a friend"
18:28:03 -!- cpressey has quit (Ping timeout: 276 seconds).
18:29:29 <oklopol> also if you can "cheer someone on", in a race, you can naturally also "wait someone on" in a race, waiting can be encouraging
18:29:39 <oklopol> but i'm not sure wait on a friend is very natural then
18:30:13 <elliott> pikhq_: should I even bother getting rtk3, or should I just buy rtk1 and rtk3 later if I feel the need?
18:30:15 <oklopol> "why are you waiting?" "my friend is running a marathon, so we're all waiting him on" "oh, waiting on a friend i see, i'll join ya"
18:30:57 <oklopol> i should write an english a learn it book
18:32:27 <pikhq_> elliott: RTK3 isn't particularly necessary.
18:32:55 <elliott> pikhq_: Yah, but I save on shipping if I buy it now, so if I'm *likely* to find it useful, I'd like to buy it now ...
18:33:15 <pikhq_> By the time you're done with RTK1, you'll be automatically decomposing kanji and memorising them that way, so it's not like you'll be using it for anything more than a list of kanji Heisig felt were important.
18:33:35 <oklopol> pikhq_: should i maybe buy a golden cape for when i become the king of the universe?
18:33:54 <pikhq_> oklopol: Only iridium!
18:34:18 <oklopol> alright. i'm just wondering since i'm buying a pizza and it's easier to buy those two together than to go to the shop twice
18:34:32 <elliott> pikhq_: How long will it take me to be done with RTK1 anyway? :-P That is, define "done".
18:34:47 <elliott> If "done" by your definition = a few weeks, I'd prefer to get RTK3 now. If it's more like a month or two by your definition, I'll get it later.
18:35:00 <oklopol> pikhq_: will it take me long to finish the pizza btw? would be nice to get to that king stuff as quickly as possible
18:35:19 <oklopol> pikhq_: why am i doing this?
18:35:35 <elliott> bewks are not cheep o'er 'ere.
18:36:17 <pikhq_> elliott: Month or two.
18:36:43 <elliott> rite, i'll just buy rtrkjtkrtjkrtkrtjkrtkjrktjkrjtkrtk11111111111111111111 then
18:36:51 <elliott> hey free shipping if i get it from amazon
18:37:04 -!- cpressey has joined.
18:37:59 <cpressey> I would say I'm waiting for dfgjiodfg to approve it, but *it* is waiting *on* dfgjiodfg's approval
18:38:15 <cpressey> anyway it occurs to me that i've never bootstrapped a compiler for a high-level language
18:38:39 <elliott> cpressey: PIXLEY! given a specialiser.
18:38:43 <elliott> ok that doesn't even vaguely count.
18:38:50 <cpressey> int is 12 bytes in python. jeez
18:39:38 <cpressey> oh, i was more surprised when i thought it was 12 bits
18:39:38 <elliott> (at the risk of mentioning one thing TOO MUCH in too short a span of days, first quote from http://prog21.dadgum.com/39.html is relevant)
18:40:52 <elliott> pikhq_: what's the good and bad std for snes roms again. istr something like that. so complicated.
18:40:56 <elliott> is goodsnes the one that's the bads
18:42:08 <cpressey> i'm pulled in too many different directions now
18:42:23 <elliott> cpressey: like python!! what?
18:42:35 <elliott> cpressey: ooh, ooh, bootstrap a compiler for a python subset. to maximise self-hatred.
18:43:03 <elliott> pikhq_: what's the good one.
18:43:55 <cpressey> elliott: icould skip a step and just hate rpython, it wdoul save time
18:44:02 <cpressey> hi non-woking keyboard i missed you
18:44:17 <elliott> cpressey: tinypy is more what i was thinking.
18:44:51 <elliott> pikhq_: hmm, nice, europe vs. usa versions of the same game, that's... so easy to decide :D
18:45:31 <iconmaster> look at http://esolangs.org/wiki/Right_bracket )
18:46:08 -!- copumpkin has quit (Ping timeout: 246 seconds).
18:46:35 -!- GregorOpMonger has joined.
18:46:40 -!- Gregor has set channel mode: +o GregorOpMonger.
18:46:53 <Gregor> Just protecting a scarce resource :P
18:47:02 -!- copumpkin has joined.
18:47:08 <elliott> pikhq_: How big is that torrent of aaaaaaaaaaaaaall the SNES games? :P
18:50:28 <cpressey> so,the productive suffixes of fans of programming languages: "-ista", "-ist", and "-er" at least
18:50:46 <pikhq_> elliott: Something like 8 gigs?
18:50:46 <cpressey> i want there to be a "-nik" but i will be disappointed
18:52:07 <cpressey> quintopia: i gather from your statement that you told a friend of yours who is at PyCon that I am at PyCon and that he or she should look for me
18:52:20 <elliott> pikhq_: Hmm, I can only find 2.6 gigs...
18:52:26 <quintopia> i gather from your statement she did not
18:52:31 <pikhq_> Okay, so I seriously overestimated.
18:52:39 <elliott> pikhq_: http://torrentz.eu/6a74b187e40ef0414b52588eb3d1a36b47f3f97a
18:53:06 <elliott> pikhq_: Oh, there's this smaller one: http://torrentz.eu/f525add4936c1b11853b5a96247a98961ced6dda but I know not what "(merged)" means there.
18:53:19 <cpressey> quintopia: does your friend have any interest in esolangs?
18:53:47 <elliott> cpressey: BAND TOGETHER AND OVERTHROW PYCON
18:53:59 <quintopia> cpressey: ruby is an esolang, right?
18:54:54 -!- asiekierka has quit (Ping timeout: 248 seconds).
18:55:10 <quintopia> enjoy your pizza and beer at the tip bof
18:55:15 <cpressey> fun was not expected... i'm surviving, that's all i ask
18:55:35 <elliott> cpressey: what kind of insanity made you think this was in any way something you could do?
18:56:01 <elliott> pikhq_: I conclude you got them from a wizard.
18:56:42 <elliott> how many kazoos does it involve?
18:56:57 <cpressey> i'll probably be attending 2 other conferences this year, both very different -- more academic
18:57:44 <elliott> "Theoretical BDSM" and "The Python-induced Crippling Alcoholism Support Group".
18:58:25 <elliott> Wizardry should be illegal.
19:00:32 <elliott> optbot: what do you think of wizardry?
19:00:32 <optbot> elliott: http://zem.fi/~fis/cont.png -- none of those look very non-essential to me. Although I'm not quite sure what "Program handler" does.
19:03:47 <elliott> "Oh well", I'm sure 20080712 is new enough.
19:05:24 <cpressey> i've noticed that when i have irssi running, when a talk gets dry, i can't concentrate on it
19:05:40 <cpressey> ah well most of these could be compressed to 10 minutes anyway
19:08:12 <cpressey> hg clone http://hg.python.org/cpython/
19:09:07 <elliott> cpressey: please tell me you're going to crash some ad-hoc meetup where they're sharing code and go all "oh this doesn't work in my cpython"
19:09:13 <elliott> and it's because you've added a prng to every damn function
19:09:21 <elliott> and nothing does what it's supposed to any more
19:09:38 <elliott> *sigh* ONE DAY i'll go to python conferences ON MY VERY OWN and prank them all.
19:09:42 <cpressey> i didn't have that in mind but i will admit it is brilliant
19:10:32 <cpressey> "i installed the included batteries backwards"
19:10:52 <elliott> oh, the re module? yeah, a bunch of functions for Religious Education... this _is_ a library after all
19:11:25 <elliott> "well what did you *expect* 2.0 + 2.0 to give apart from 5? this is floating point you know, it's imprecise!"
19:11:53 <elliott> pikhq_: WHY ARE YOU THE BAD
19:12:44 <optbot> cpressey: as a toggle marker
19:12:53 <elliott> cpressey: um yes. he used to be here a while back.
19:12:57 -!- oerjan has joined.
19:13:00 <elliott> cpressey: it sets the topic every 6 hours
19:13:03 <elliott> and also when you say "optbot!"
19:13:04 <optbot> elliott: it is not ransom
19:13:08 <elliott> and also replies to mentions of its name.
19:13:14 <elliott> all messages come from random log entries
19:13:23 <elliott> it was what inspired fungot's babble generator.
19:13:23 <fungot> elliott: a yucca clone might be nice to them.
19:14:03 <elliott> this time it's... python BUT
19:14:14 <elliott> I was trying to think of the language most amusingly unsuited to the task at hand
19:14:21 <elliott> but rejected Fortran and J for just being WAY TOO MUCH OF A PAIN
19:14:25 <elliott> so I picked the next best thing, Python
19:15:50 <elliott> i think cpressey is still judging me.
19:15:59 <cpressey> ett's ssseeeeeeeeeeeeeeee if mmmmmmmmmmmmmmmmmmmmmmmmmmmmy hg clone makes any progres by time this tkis over
19:16:13 -!- pikhq_ has quit (Read error: Operation timed out).
19:16:18 -!- pikhq has joined.
19:16:20 <elliott> your keyboard. it's impressive.
19:16:26 <cpressey> elliott: you should come here, give talk on it
19:16:50 <cpressey> i suspect the keyboard driver for this laptop in ubuntu is not perfect
19:16:52 <elliott> line = random.choice(lines)
19:16:52 <elliott> return re.sub(r'^[a-zA-Z\\[\]\\`_^{|}][a-zA-Z0-9\\[\]\\`_^{|}]+:\s+', '', line)
19:20:31 <elliott> gmail's keyboard shortcuts are awesome.
19:27:36 <cpressey> configuring and building this puppppp
19:27:41 <cpressey> *pupppppppppppppppppppppppppppppppppppppp
19:29:04 <elliott> write a python->pixley compiler!!198379328
19:29:10 -!- ChanServ has set channel mode: +o oerjan.
19:29:18 -!- oerjan has set channel mode: -o GregorOpMonger.
19:29:44 -!- oerjan has set channel mode: -o Gregor.
19:30:00 -!- oerjan has set channel mode: -o oerjan.
19:30:08 <oerjan> i think that got a little out of hand.
19:31:00 <elliott> cpressey: quick, change the lexer to parse { as INDENT and } as DEDENT
19:31:21 <elliott> then add a semicolon at the end of the statement rule
19:32:36 <cpressey> Python 3.3a0 (default:9e70e818d434, Mar 12 2011, 14:13:12)
19:33:20 <cpressey> looking through source dir for interesting source file to modify
19:33:44 <elliott> cpressey: excuse me i just gave you the best ideas?
19:33:54 <elliott> also swap [] and (), just because.
19:34:14 <elliott> print["good morning", "abc"(2)];
19:35:09 <elliott> cpressey: yes. the most boring part of an esolang.
19:35:15 <cpressey> (&#&)@^ have to modify both the grammar and the parser???
19:35:18 <elliott> but also the easiest, and who wants to waste time on python
19:35:38 <cpressey> it might think i want to do a more than trivial change
19:36:16 <cpressey> changed the syntax for newstyle classes to
19:36:47 <elliott> i'm joining in the fun too
19:37:15 <cpressey> yeah, it can't even finish building because it tries to load existing python code, looks like
19:37:25 <elliott> cpressey: just add it as an alternative >:D
19:37:38 -!- Lymia has quit (Ping timeout: 250 seconds).
19:39:20 <pikhq> elliott elliott elliott
19:39:46 <elliott> pikhq: WHENCE DO I ILLEGALLY PROCURE AT A SPEED GREATER THAN THAT OF A TORTOISE THIS MYSTICAL COLLECTION, FOR THE BITS, THEY RUN TRY EVERYWHERE THE GOOGLES CAN LOCATE
19:40:46 <elliott> pikhq: Shoot me Chrono Trigger or something so I can test this bsnes build? :-P
19:41:27 <cpressey> Fatal Python error: Non-statement found: -13824 8308512
19:41:39 <cpressey> I added an '*' alternate to the grammar
19:41:42 <elliott> cpressey: THIS IS SO MUCH FUN
19:42:01 <cpressey> stop making such good suggestions!
19:42:25 <cpressey> maybe i'll go to the ast talk after all
19:42:36 <elliott> but unfortunately, the most difficult.
19:42:50 <cpressey> in docstrings? but that would be so cheating
19:43:30 <elliott> yield_expr: 'yield' [testlist]
19:43:39 <cpressey> it might be easier here than in a non-offside-rule langauge
19:43:52 <elliott> cpressey: python isn't really offside rule though in the way haskell is
19:44:06 <cpressey> no, but i only mean, it cares more about the column than, say, ruby does
19:45:36 <elliott> every function call f(x,y,z) becomes x.__getfunc__('f')(y, z)
19:45:44 <elliott> object.__getfunc__('f') just returns the global symbol f by default.
19:45:54 <elliott> unless f is an attribute of this object and a function
19:45:56 <cpressey> cheater-: make cpython crash, apparently
19:45:57 <elliott> in which case it returns that
19:46:09 <elliott> so f(x,y,z) == x.f(y,z) if f is defined on x
19:46:25 <elliott> and f(x,y,z) and f(x',y,z) can behave totally differently according to x and x''s whims!!
19:47:19 <elliott> SyntaxError: 'yield' outside function
19:48:02 <elliott> suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT | NEWLINE '{' stmt+ '}'
19:48:27 <elliott> nice, had to make twice to get it to recompile
19:49:17 <cpressey> blurg need to shut down again battery gasping
19:49:21 <elliott> hmm, doesn't work, oh well
19:49:36 <elliott> pikhq: So disappointed in you. SO disappointed
19:50:15 -!- Lymia has joined.
19:52:52 <cheater-> https://lh4.googleusercontent.com/-VWFCAOgti6g/TXqUxvpr9lI/AAAAAAAACdQ/mdX79YsluRY/s1600/google_vintage.jpg
19:53:54 -!- cpressey has quit (Ping timeout: 255 seconds).
20:18:15 <elliott> all this sobbing, there's a person at the centre of this sobbing, who doesn't care, that person is pikhq, folks
20:19:58 -!- ais523 has joined.
20:20:09 <elliott> pikhq is an evil space demon
20:22:27 <elliott> My bsnes compile remains UNTESTED, my computer's performance UNCERTAIN.
20:22:37 <elliott> All because of evil space demons.
20:23:06 <oerjan> elliott: they clearly had to think of something that could top that earthquake they made
20:23:30 <pikhq> Fukushima-Daiichi reactor explosion.
20:24:13 <pikhq> Appears to have just affected an outer wall. Still, eeek.
20:24:41 <oerjan> i'd expect the japanese to take some care while building reactors.
20:24:56 <pikhq> Yes. They didn't expect a 9.0.
20:24:56 <elliott> pikhq: ONE MEASLY LITTLE ROM
20:25:17 <oerjan> pikhq: um this is JAPAN. how could they not expect it.
20:25:25 <elliott> oerjan: because japan doesn't get 9.0.
20:25:32 <pikhq> oerjan: What, one of the largest earthquakes ever?
20:25:40 <elliott> it's actualy 8.8-8.9 but w/e
20:25:52 <pikhq> Significantly larger than it was previously believed *possible* to get there?
20:26:16 <olsner> they really should expect the largest earthquake ever, because they regularly get those
20:26:22 <elliott> ok, so pikhq is an undercover agent of the MPAA.
20:26:58 <ais523> hmm, time to write a compiler backend from desugared Algol 60 syntax trees, minus recursive data types or any sort of memory allocation, but including recursion, to hardware: 2 days
20:27:18 <ais523> I'm quite proud of that, although it explains why you haven't heard much from me recently
20:27:21 <pikhq> It's also the largest earthquake to ever hit Japan...
20:27:54 <oklopol> there's this guy in finland who SWEARS he once felt the earth move a bit
20:28:16 <elliott> i'd totally ask random people for the rom except i distinctly recall asking before and only pikhq had it >:)
20:28:19 <oklopol> that was big news some years back, i hear
20:28:53 <oklopol> this is one damn exciting country
20:29:23 <oklopol> also this one time it rained so much there was a 5x5 meter pond outside, pretty insane
20:29:35 <olsner> http://en.wikipedia.org/wiki/2008_Skåne_County_earthquake
20:29:41 <olsner> sweden has earthquakes too!
20:29:50 <oerjan> oklopol: i thought finland had plenty of water...
20:30:09 <oklopol> oerjan: well yes but not disasterous INTERESTING water
20:30:51 <elliott> pretty sure pikhq caused the tsunami.
20:31:28 <oerjan> norway isn't actually earthquake territory either. on some outlying islands they sometimes feel a bit, i think.
20:31:42 -!- cpressey has joined.
20:31:49 <ais523> <oklopol> also this one time it rained so much there was a 5x5 meter pond outside, pretty insane <-- for some reason that implies to me that the pond was exactly square
20:31:52 <ais523> which would indeed be insane
20:31:56 <oklopol> "The Oresund Bridge between Sweden and Denmark was investigated for cracks and other problems but nothing was found." holy SHIT, and here i thought scandinavia was a safe place
20:31:57 <oerjan> elliott: no it was his mom taking a dive
20:32:17 <oklopol> but no, a bridge was almost damaged
20:32:17 <cpressey> i figured out what class Foo*: should mean. it should mean that Foo inherits from itself.
20:32:30 <ais523> does that operation actually do anything, though?
20:32:32 <elliott> cpressey: you are truly a great visionary of our time
20:32:36 <pikhq> ais523: Minecraftian pond.
20:32:42 <ais523> it'd cause the equivalent of super() to go into an infinite loop, and make no difference the rest of the time
20:32:53 <cpressey> CONCEPTUALLY IT IS PERFECTLY WELL DEFINED
20:32:56 <elliott> ais523: he's hacking up cpython, he can do whatever he wants!
20:33:05 <ais523> I suppose that makes perfect sense in an esolang
20:33:12 <oerjan> pikhq: minecraftian ponds in the real world would be rather lovecraftian. despite being euclidean.
20:33:16 <ais523> much like Claudio Calvelli's unary division
20:34:11 <ais523> (defined as (x / (x >> 2)), which nearly always returns 2 except for when there are rounding errors)
20:34:35 <ais523> hmm... IIRC, the behaviour is "normally return 2, except occasionally return 3 or crash"
20:35:34 -!- cpressey_ has joined.
20:37:07 <ais523> all unary ops in INTERCAL are op(x, x>>1)
20:37:21 <oklopol> i haven't actually used these silly operators, because bits are so 50's
20:37:28 <ais523> except there's some sort of rotation involved too
20:37:30 <ais523> which I forgot to allow for
20:37:34 <oklopol> so i figured maybe i don't understand how they work
20:37:51 <ais523> oklopol: TriINTERCAL uses trits instead, and unary division is well-defined there too
20:37:56 <ais523> although still pretty useless
20:38:27 <oerjan> ais523: (x>>1) | ((x&1) << 31) ?
20:38:45 <ais523> ah, I just looked it up
20:38:54 <ais523> it normally does a pure rightshift in inconsistency to the rest of the INTERCAL
20:38:59 <ais523> but you can change it to a rotation with a compiler option
20:39:03 <ais523> *to the rest of the INTERCAL operators
20:39:19 <ais523> <clc> CLC-INTERCAL 1.-94.-4 introduced a new unary operator, division. This differs from normal unary operators because it is arithmetic, not bitwise. The operation is as follows: the operand is shifted right arithmetically, then the original value is divided by the result of the shift and truncated to an integer. Note that the most frequent result is the base, since a right shift is equivalent to a division by the base, truncating the result to an
20:39:21 <ais523> integer. For example, in base 5, unary division of #62 is #62 divided by #12, which just happens to be #5. However, the operation can also return other values, for example in base 5 unary division of #12 is #6. And of course any value smaller than the base produces a division by zero splat. A compiler option, bitwise-divide, changes the unary division to behave like a normal unary operation, performing a bitwise rotate of its operand and so on. You
20:39:22 <ais523> can figure out what it does.
20:39:59 <Gregor> Why hasn't somebody written fuse-hg yet >_>
20:40:00 -!- cpressey_ has left (?).
20:41:06 <Gregor> elliott: AFAICT there's no good gitfs either.
20:41:26 <oerjan> > [x `div` (x `div` 2) | x <- [1..]]
20:41:29 <elliott> This PEP is rejected. It is considered a feature that None raises
20:41:30 <elliott> an error when called. The proposal falls short in tests for
20:41:30 <elliott> obviousness, clarity, explictness, and necessity. The provided Switch
20:41:30 <elliott> example is nice but easily handled by a simple lambda definition.
20:41:30 <elliott> See python-dev discussion on 17 June 2005.
20:41:33 <oerjan> > [x `div` (x `div` 2) | x <- [2..]]
20:41:34 <lambdabot> [2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,...
20:41:34 <cpressey> i'm in the "myopic language improvement suggestions" talk
20:41:46 <elliott> > filter (/= 2) $ [x `div` (x `div` 2) | x <- [2..]]
20:41:50 <oerjan> ais523: not very much 3 there...
20:41:56 <elliott> that should at least produce [3,
20:42:26 <Gregor> elliott: If you get sgfs working, I will switch Hackiki to Scape🐐
20:42:35 <ais523> elliott: no, 2 / (2 / 2) is 1
20:42:41 <elliott> ais523: <lambdabot> [2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,...
20:42:47 <elliott> it should produce [3, before timing out
20:42:53 -!- zzo38 has joined.
20:42:57 <oklopol> ais523: are you sure 2/2/2 is 1
20:43:12 <ais523> but 3 / (3 / 2) is 3 if you use integer division
20:43:20 <oklopol> your points are rather floaty today
20:43:20 <ais523> and 1 / (1 / 2) is divide-by-zero
20:43:53 <oerjan> > 1:let f x = f (x+1) in f 1
20:43:57 <zzo38> Now I completed making a chess program with TeX. http://sprunge.us/QSWX http://sprunge.us/MdJW http://zzo38computer.cjb.net/img_13/texchess1.png
20:44:11 <Gregor> elliott: btw, I have no idea what the conceptual advantage of Scape🐐 is over any other VCS :P
20:44:12 <zzo38> Probably the pieces is a bit too small?
20:44:14 <cpressey> "hiding flow control inside of macros is a bad idea" -- raymond chen
20:44:23 <ais523> zzo38: does it generate the annotations itself?
20:44:26 <Gregor> Nor, really, what concept is unique to Scape🐐 at all.
20:44:41 <cpressey> what is that character after Scape?
20:44:47 <ais523> cpressey: C-INTERCAL not only hides flow control inside macros, but hides it inside a postprocessor
20:44:50 <elliott> Gregor: Explaining it more in-depth has been known to put people who aren't me and ais523 to sleep, so I won't bother.
20:44:50 <Gregor> elliott: Mandelbrot is dead.
20:44:52 <zzo38> But it does parse the moves itself and draw the board itself.
20:44:54 <olsner> cpressey: nice, I guess he uses only inline-assembly for control flow then
20:45:13 <oerjan> > 1:let f x = f (x+1 :: Double) in f 1
20:45:23 <elliott> Gregor: The end effect is that it does merging properly :P
20:45:52 <oerjan> elliott: i think it's just that lambdabot doesn't produce anything if it times out before filling the output buffer
20:45:54 <Gregor> How properly is "properly" :P ... I mean, neither git nor hg SUCK at branching and merging, though there's always room for improvement.
20:46:15 <ais523> elliott: ah, is it just that my attention span is so variable that it's impossible to tell if I'm paying attention or not?
20:46:29 <zzo38> ais523: If you want to see what the TeX chess generates, look at the example source file, everything not typed in the example file but is shown in the picture, is the things it makes by itself.
20:46:30 <elliott> ais523: Err, I meant people who aren't either me or you
20:46:32 <elliott> Gregor: git and hg both have a "dumb" view of the repository: they just see it as a bunch of trees stuck together. All the knowledge of patches is hacked on to this.
20:46:47 <elliott> Gregor: This is inherently more limited than scapegoat, which keeps track more than just the textual content of lines changed in its patches.
20:46:51 <ais523> elliott: I know, I was trying to figure out why I'd been singled out as an exception?
20:47:00 <elliott> ais523: because you're the one who explained it to me
20:47:03 <elliott> and I assume you didn't put yourself to sleep
20:47:05 <ais523> ah, is Scape a sort of easier-to-implement version of Scapegoat?
20:47:11 <ais523> I hadn't noticed the name connection
20:47:19 <elliott> that's scape[unicode goat character]
20:47:43 <Gregor> ais523: I call Scape🐐 Scape🐐 because Unicode goat > Unicode 'g' 'o' 'a' 't' :P
20:47:45 <ais523> that character isn't parsed by my client
20:48:01 <Gregor> Then your clients suck ... mine can't render it, but it knows that it's there :P
20:48:07 <elliott> Gregor: Basically, instead of having patch operations like "insert STRING between STRING and STRING in FILE", it has "insert STRING between CHANGE and CHANGE".
20:48:19 <ais523> as in, it doesn't even figure out the encoding correctly
20:48:23 <cpressey> everything that hides anything anywhere sucks
20:48:29 <elliott> Gregor: Each file has its own SOF and EOF changes.
20:48:40 <zzo38> My client does display the unicode correctly but I have no font to display it.
20:48:54 <oklopol> cpressey: does this guy prefer copy paste over functions?
20:49:08 <Gregor> elliott: "insert STRING between CHANGE and CHANGE" <-- more details plx
20:49:26 <cpressey> oklopol: raymond chen? i have no idea; that quote influenced someone else to reject a proposed feature
20:49:35 <cpressey> i hear raymond chen is awesome but i forget who he is
20:49:40 <elliott> Gregor: Change := start of file <fileid> | end of file <fileid> | insert string between change and change | replace change with string | delete change | move (change,change) between (change,change)
20:49:47 <elliott> cpressey: the old new thing
20:50:00 <elliott> Gregor: Basically, sg changes have a very trivial merging algorithm (topographically sort each change by its dependencies (changes it mentions), apply in order; if a patch fails, there is a conflict), that can trivially be shown to never "do the wrong thing".
20:50:02 <cpressey> i didn't say i wanted to remember
20:50:20 <zzo38> When trying to look up "Raymond Chen" in Wikipedia I get "MSDN Blogs". So maybe that is who Raymond Chen is.
20:50:30 <elliott> Gregor: A line is identified by the change that creates it.
20:50:45 <elliott> Gregor: So consider "insert 'hello' between (SOF,EOF)". Call this change <c1>.
20:50:46 <zzo38> It is "The Old New Thing", according to Wikipedia.
20:50:53 <elliott> Gregor: Let's say you turned this file into 'hello\ngoodbye'.
20:50:53 <cpressey> ugh this is painful (not the talk, it's interesting, it's what it's making me think about language design
20:50:55 <Gregor> I think I'm starting to conceptualize it here ... in a sense the repository ends up forming an (implicit) lattice instead of a tree.
20:51:02 <elliott> Gregor: The corresponding change is "insert 'goodbye' between (<c1>,EOF)".
20:51:09 <ais523> it's one of the better MSDN blogs
20:51:25 <elliott> Gregor: (In practice, you give a hash to every change and identify changes with that.)
20:51:33 <ais523> cpressey: heh, those unbalanced parens were worrying me too
20:51:52 <elliott> Gregor: Changes can also be a set of changes, and in fact the change "changeset {c1,c2}" produces a merge of c1 and c2.
20:51:57 <olsner> cpressey: is that a talk available online somewhere?
20:52:07 <Gregor> elliott: And so, you don't create false dependencies just because you happened to make a change in one branch, even though it applies to all branches.
20:52:16 <cpressey> olsner: it might be, in the future, but i can't find them online yet
20:52:21 <elliott> hmm, I'm not quite sure what you mean by that, maybe ais523 knows because he's slept :)
20:52:39 <elliott> Gregor: The same basic principle with changes on files is applied to directories, except that since directories are unordered, you say "insert <entry> into <change that created directory>".
20:52:44 <elliott> Where <entry> can be e.g. an empty directory itself.
20:53:02 <Gregor> elliott: Well, I frequently fix something in hg, then go "aww shit I fixed it in branch <X> but I should have put it in default so that things will merge properly" ... but your changes aren't assigned to "branches", they're just assigned to dependent changes, so fixes like that wouldn't be so affixed to the branch you happened to be working in.
20:53:21 <ais523> Gregor: yes, it avoids the problem where a VCS doesn't have enough context to know what a chain means
20:53:23 <elliott> Right, in fact with scapegoat there's not much of an explicit concept of a branch...
20:53:31 <elliott> In fact all possible changes platonically exist in every repository :-)
20:53:41 <elliott> (And the One Big Repository has shitloads of branches.)
20:53:44 <ais523> the definition's done the other way round, a branch is defined by which changes you happen to allow into it
20:53:48 <elliott> The question is just what you whitelist.
20:53:53 <Gregor> elliott: Well, I would hope that you could label a set of changes in some way, then call that a "branch", just for human convenience.
20:54:03 <Gregor> elliott: Although like I was saying above, if it's a lattice then conceptually there's a shitload of branches.
20:54:07 <elliott> Gregor: This can also be extended to language-aware changes -- consider "insert argument <x> between <y> and <z>", where y and z are arguments to some application.
20:54:44 <elliott> Gregor: This would produce totally kickass merging, but it would be a pain to get the mode resilient :P
20:54:54 <elliott> (But really you shouldn't be committing invalid code.)
20:54:56 <cpressey> i don't know what you two are talking about but it is awesome, please continue
20:55:29 <elliott> Gregor: BTW most of this stuff are ais523's ideas, I just kept prodding him with questions until I had a vision of a coherent system in my head :P
20:55:42 <elliott> cpressey: Unfortunately I must tell you everything.
20:55:43 <Gregor> elliott: Yeah, so I was told :P
20:56:11 <Gregor> elliott: You realize of course that now that I'm starting to have some conceptualization of it, I'll go implement it and trounce your implementation and you'll go "awwww no"
20:56:20 <elliott> Gregor: Yeaaah, good luck with that.
20:56:30 <elliott> Gregor: There is a lot more :P
20:56:46 <elliott> For instance, in a theoretical platonic model, you can define a branch as a predicate that takes a patch and returns whether it's in the branch or not.
20:57:01 <elliott> (Whether this is feasible or even useful in an actual implementation is up for debate.)
20:57:49 <Gregor> There is a correctness criterion for said predicate, namely that if it evaluates to true for change X, it evaluates to true for all parents of X, and as a result I question the value of defining it so abstractly.
20:57:53 <elliott> Gregor: Oh, and one of the parts of sg I made was that you can push ANY changes by simply recursive cp.
20:58:18 <elliott> Gregor: (Assuming a directory-based store.)
20:58:23 <elliott> (If not, there'll be a trivial command to merge two databases.)
20:58:40 <elliott> Basically every object in the database is assigned a longcat hash, and things are never addressed without it :P
20:58:45 <elliott> <Gregor> There is a correctness criterion for said predicate, namely that if it evaluates to true for change X, it evaluates to true for all parents of X, and as a result I question the value of defining it so abstractly.
20:58:51 <cpressey> I HAVE TO MOVE TO ANOTHER ROOM NOW
20:59:38 <cpressey> so scapegoat is some kind of VCSWiki
20:59:39 <Gregor> elliott: Dependency. I suppose "parent" is a bit of a strong implication for that, but *eh* :P. A change named by the given change.
20:59:50 <cpressey> with a language for describing changes
20:59:53 <elliott> cpressey: Mmm, if by VCSWiki you mean nothing like a wiki at all, then yes, absolutely.
21:00:08 <cpressey> i thought Gregor mumbled something about replacing giki with it
21:00:16 <zzo38> They do describe thing about broken stack in MSDN Blogs, which is something I have sometimes had problem with too (although I was using gdb instead).
21:00:21 <elliott> Gregor: I've been thinking of those as "dependencies", but they are pretty close to parents.
21:00:34 <elliott> Gregor: It's just that most VCSes don't have like fifty parents per change :P
21:00:49 <cpressey> So that just means he'd just be dropping the wikiness from his site, I guess?
21:00:55 <elliott> Gregor: (Consider that every individual line insertion is addressable, as it must be to be referencable in further commits.)
21:00:58 <Gregor> cpressey: I'm talking about replacing one COMPONENT of Hackiki, and sg is just a thought.
21:01:09 <elliott> Gregor: (An efficient way to store this -- probably inline with some kind of lookup table -- will have to be found.)
21:01:12 <Gregor> cpressey: Hackiki uses a VCS as its store.
21:01:21 <elliott> (This would cause ridiculous inode blowup, thus why I'm partial to using an object database file.)
21:02:26 <elliott> Gregor: A nice thing about the "you can literally just shove any two repositories together" thing is that a hypothetical ScapegoatHub can just store everything in one big honking repository and get deduplicative storage of forks for free :P
21:02:52 <Gregor> elliott: Of course, naming the "repository" (in the classic sense) that you want to check out is a bit painful :P
21:03:08 <elliott> Gregor: Well, a "repository" is essentially defined by its tip commit.
21:03:11 <elliott> You work backwards from there.
21:03:16 <olsner> elliott: btw, git starts blowing up at around 30 parents of a commit
21:03:28 <elliott> Gregor: Note that in the naïve case, checking out an sg commit is slooooooooooooow, because you have to simulate every change back to the beginning of time.
21:03:38 <elliott> Gregor: A sane implementation would store full copies of files every N revisions or so.
21:03:56 <cpressey> you should be able to uncheckout as well as checkout and it should keep reference counts and should garbage collect changes that no one is using
21:04:12 <elliott> A garbage collect is basically copying the tip and all its dependencies to a new repo, then removing the old one.
21:04:14 <Gregor> elliott: But there are no commits, only changes, so a "tip" commit is artificial on top of that. You can't from any given change (thinking of them as lines for ease) necessarily trace your way back to every other change, since you'd have to trace forwards too ...
21:04:28 <Gregor> elliott: Commit == multiple changes
21:04:30 <elliott> ais523 defined the tip precisely, I think.
21:04:47 <elliott> The oldest commit with most dependencies?
21:04:55 <Gregor> Presumably it would be the set of all changes representing the current view with no dependents.
21:05:01 <elliott> Basically it's "good practice" in sg to commit two conflicting changes to the tip without merging immediately.
21:05:06 <elliott> And you don't want either to become the tip.
21:05:14 <elliott> So you have to be careful with the definition.
21:05:14 <olsner> elliott: you don't have to store forward deltas though - e.g. git will usually store the head as non-delta, then make older commits deltas of newer ones
21:05:22 <elliott> (Consider that "conflicting changes" is basically the definition of an sg branch.)
21:05:33 <elliott> olsner: Indeed, but, eh, that's "implementation details".
21:05:34 <Gregor> olsner: That becomes a bit tricky with this design, it's not so linear.
21:05:50 <elliott> Right, sg sorta discards conventional notions of time and whatnot X-D
21:06:08 <elliott> Every possible change exists, and you just pick which ones you like.
21:06:10 -!- zzo38 has left (?).
21:06:15 <elliott> Usually by making them manually and running "sg commit".
21:06:59 <elliott> Gregor: An sgfs could, I think, work, but I have no idea what you'd actually expose via it...
21:07:16 <elliott> A scapegoat repository is essentially a big hash-indexed object store.
21:07:21 <oerjan> <Gregor> There is a correctness criterion for said predicate [...] <-- hm a closed set in a finite topological space...
21:07:26 -!- Mathnerd314 has joined.
21:07:47 <elliott> ais523: oerjan is now going to ruin our version control system.
21:07:50 <elliott> Soon it will become topology.
21:08:16 <ais523> elliott: don't worry, he'll end up getting stuck into trying to work out the theoretical basis behind darcs
21:08:36 -!- cpressey has quit (Ping timeout: 252 seconds).
21:08:39 <elliott> ais523: He's a theoretical mathematician. He hand-waves over the utterly nonsensicality of his models on a *daily basis*.
21:09:42 <elliott> Gregor: sg was apparently born after the TAEB guy looked into darcs and concluded its merging algorithm made no sense at all, FWIW :P
21:10:07 <Gregor> I thought it was born after ais523 went "lol VCS sux I'mma make my own"
21:10:19 <oerjan> <elliott> Gregor: Note that in the naïve case, checking out an sg commit is slooooooooooooow, because you have to simulate every change back to the beginning of time. <-- isn't this like a problem with darcs too, without further optimization?
21:10:20 <ais523> it was the other person working on TAEB::AI::Planar, which is a side project of mine
21:10:34 <ais523> oerjan: well, obviously
21:10:40 <ais523> it's a problem even with CVS in the really naive case
21:10:40 <elliott> Gregor: I would like to take credit for convincing ais523 that for the time being, the turtles do not have to go down to per-character-change granularity.
21:10:50 <elliott> (With complete editor integration on every keystroke)
21:10:53 <ais523> wait, are they still called turtle?
21:11:04 <elliott> ais523: I was implicitly invoking the all-the-way-down story.
21:11:05 <ais523> do we really not have a better name for them?
21:11:07 <Gregor> Per ... modified block?
21:11:11 <elliott> ais523: I'm calling them changes :P
21:11:26 <elliott> Gregor: As in, every single character insert or removal generates a commit.
21:11:33 <elliott> It should be noted at this point that ais523 is slightly insane.
21:11:42 <Gregor> elliott: Yeah, but what is the current thoughts on it?
21:11:43 <olsner> if sg is as general as that would imply, it'd be neat to actually call them turtles
21:11:53 <Gregor> Change = "sequence of modifications with no intervening unmodified character"?
21:11:55 <elliott> Gregor: Commits happen only manually, and line-basedb y default :-P
21:12:13 <Gregor> Well, commits happening manually is totes acceptable :P
21:12:14 <elliott> I'm open to non-line-based suggestions, but it's what every VCS uses, and it's hard to merge two changes to the same line.
21:12:25 <elliott> The ideal solution is language-aware change types.
21:12:32 <ais523> Gregor: changes are mostly defined recursively as bundles of other changes, although there has to be a bottom level somewhere
21:12:44 <ais523> elliott convinced me that it's best to be flexible about where it is, depending on what you're versioning
21:13:01 <Gregor> There needs to be a common solution too, you can't integrate every language :P
21:13:08 <elliott> Gregor: Well, yah. Line-based.
21:13:13 <elliott> But really, why can't you? There's an Emacs mode for every language.
21:13:16 <ais523> for the time being we're basing it on lines, as they're the most commonly meaningful
21:13:20 <olsner> so then there's a bottom level, and it's turtles all the way *up*?
21:13:26 <elliott> But yeah, this is pie-in-the-sky talk for now.
21:13:30 <Gregor> elliott: I'mma go write a new language HEY WHERE'S MY EMACS MODE
21:13:32 <ais523> olsner: heh, that's one way to describe it
21:13:42 <ais523> Gregor: I can ship you a copy of brainfuck-joust-mode if you like
21:13:48 <elliott> Gregor: Oh, and the SOF/EOF commits created for each file use the file identifier... and the file identifier is just the hash of the {directory-change} that added the file to a folder.
21:14:08 <oerjan> <elliott> Soon it will become topology. <-- finite topological spaces are rather trivial, that "including ancestors" or "including descendants" thing is basically all there is to them. also, this is the same as a finite partial order.
21:14:10 <ais523> I wrote it in the latest BF Joust spate, in order to get decent syntax highlighting and indentation
21:14:51 <elliott> Gregor: Oh, and technically the directory change structures would be POSIX-specific at first... mostly because if you cater to working well on Windows, you can't version things like symlinks, and that's incredibly irritating.
21:15:07 <elliott> I suppose you could translate them to NTFS links or whatever, but at the present time the amount I care about Windows is ~0.
21:15:25 <Gregor> Windows is made of fail, nobody cares.
21:15:31 <olsner> NTFS links don't work like symlinks anyway
21:15:41 <olsner> only kind of similarly in certain circumstances
21:15:44 <elliott> ais523: btw, I really like how sg's merge algorithm can be implemented in a dozen lines in just about any language :)
21:15:48 <elliott> without even a built-in topological sort
21:16:01 <ais523> implementing it efficiently is rather harder
21:16:10 <elliott> Topological sort by dependencies, apply each in resulting order; if any fail, the changeset fails.
21:16:20 <ais523> but it's got the property of Underlambda that I like: easy to implement, possible to implement efficiently
21:16:34 -!- fungot has quit (Quit: server upgrade time).
21:16:56 <ais523> wow, that quit message from fungot seemed almost intelligible
21:18:45 <elliott> Gregor: Anywho, implementing scapegoat's basics is really quite trivial, it's making it actually "work" that's significantly more difficult.
21:19:07 <elliott> I mean, for one, the change-generator needs to recognise moves, replacements, etc.
21:19:18 <elliott> Gregor: (Note: sg is the only VCS I know of to handle splicing a file properly :P)
21:19:21 <ais523> elliott: remember we were discussing Paul Levy a few days ago
21:19:27 <elliott> i.e. splitting x.c into a.c and b.c
21:19:29 <ais523> he unintentionally gave me some advice on Feather
21:19:33 <elliott> git, for instance, sees it as renaming x.c to one of them
21:19:36 <elliott> and creating an entirely new file for the other
21:19:42 <elliott> in sg, you move both halves of the file out to the new one
21:19:45 <elliott> then remove the resulting empty file
21:20:01 <ais523> he was explaining the theoretical basis behind continuation-passing-style
21:20:33 <elliott> "It's all about call-by-push-value, you see."
21:20:45 <elliott> "And call-by-push-value's theoretical basis is itself."
21:20:55 <ais523> and I realised that although it's hard to track the control flow of a program when you retroactively modified what it was doing, it's much easier to track it in CPS
21:20:56 -!- cpressey has joined.
21:21:17 <ais523> (the problem is: if you retroactively modify a program, what in its new execution corresponds to what in its old execution?)
21:21:38 -!- pikhq_ has joined.
21:21:39 <cpressey> elliott: no, it has to be reference-counted, so every repo knows who has cloned what from it
21:21:52 <cpressey> because otherwise it's not insane enough
21:21:58 <elliott> cpressey: err...certainly. in the wiki, yes.
21:21:59 <ais523> cpressey: this is meant to be practical
21:22:09 -!- pikhq has quit (Ping timeout: 276 seconds).
21:22:42 <elliott> At least as practical as Haskell!111
21:22:50 <cpressey> in that case i am totally designing a language
21:22:50 <elliott> Gregor: So what would you actually want out of an sgfs or whatever?
21:23:44 <Gregor> What I want out of <whatever>FS is the ability to mount a particular revision as a filesystem, make any (or no) changes, then commit as part of unmounting.
21:24:13 <Gregor> I want this to be done without writing to the real filesystem if I don't write to the mounted filesystem, making it potentially faster than just a checkout.
21:24:28 <elliott> Err, does every page load involve a commit in Hackiki or something?
21:24:36 -!- cpressey1 has joined.
21:24:39 <elliott> Don't quite see why you want it to support doing nothing so efficiently :P
21:25:22 <elliott> Yeah, but why would that be common?
21:25:26 <cpressey> (that was an attempt at a joke)
21:26:14 <elliott> Gregor: I am INTERROGATING your usecase.
21:26:23 <Gregor> elliott: Most pageloads don't involve a commit, I'm optimizing for the NO-commit case.
21:26:26 -!- cpressey1 has left (?).
21:26:38 <Gregor> elliott: A checkout involves HD write, HD write is bad.
21:27:03 <cpressey> every pageload would mount a FUSE-backed fs...?
21:27:05 <elliott> Gregor: I'm not sure scapegoat checkout can be very lazy.
21:27:12 <Gregor> I just can't have them all trouncing around in the same repo since one of them MIGHT write.
21:27:15 <elliott> Gregor: Is it OK if it checks it all out into memory before the mount completes?
21:27:21 <elliott> (In a realistic sg implementation, this would not take long.)
21:27:31 <Gregor> elliott: Memory is fine.
21:27:39 <Gregor> cpressey: Presently every pageload (modulo caching) triggers a hg clone.
21:27:57 <elliott> Gregor: What if you had to explicitly tell it to commit on unmount so I don't have to keep track of a dirty flag X-D
21:28:09 <Gregor> elliott: Also fine, I know if it wrote or not.
21:28:34 <elliott> Gregor: Then that should be pretty easy, really; sg already _has_ a mental model of the entire directory tree.
21:28:47 <elliott> Gregor: (Fun thing about sg: You can move the / of a repository into a subdirectory of another)
21:29:01 <elliott> So you can move your libvm/ subdirectory out into another repository :P
21:29:33 <elliott> Gregor: What happens when Hackiki gets a conflict?
21:29:54 <elliott> Gregor: I'm assuming that it always commits from the commit you checkout, not from whatever the tip happens to be when you unmount.
21:30:15 <elliott> (Multi-process safe writing to object databases, hooray X_X)
21:30:24 <Gregor> elliott: It commits to that, then tries to merge; if the merge fails, too bad, your commit goes away.
21:31:03 <elliott> I think sg tends to in theory flag up more conflicts than most VCSes, but in practice it shouldn't matter.
21:31:22 <elliott> (Purely in that editing the same few lines of a file is likely to mess the ordering up and thus cause a conflict.)
21:32:09 <elliott> No, I implemented some algos.
21:32:23 <elliott> Gregor: Say you have a file [a, b, c] (those are lines).
21:32:39 <elliott> Say one commit inserts a line so it becomes [a, b, d, c]; insert d between (b,c)
21:32:57 <elliott> Say another commit replaces b with q so it becomes [a, q, c]; replace b with q.
21:33:00 <elliott> These two commits conflict.
21:33:11 <elliott> Same if two commits inserted a line between b and c.
21:33:17 <Gregor> Those two commits conflict in almost /any/ VCS.
21:33:42 <elliott> Mm. I don't really have many experiences with conflicts in practice because I dont work on any large-number-of-developer projects.
21:33:43 <Gregor> Actually, make that every VCS, ever :P
21:33:48 <elliott> But scapegoat is definitely very anal about its ordering.
21:33:53 <elliott> I possibly did not pick the best example.
21:34:06 <elliott> Gregor: OK, how's this for you:
21:34:19 <elliott> Gregor: In scapegoat, two people can start a repository with a file "foo" in it.
21:34:25 <Gregor> elliott: Think of every major VCS' merging algorithm as just taking two unified patches and trying to apply them both. That's pretty much all you get, with a little bit more cleverness sometimes. If your context changes, you fail.
21:34:28 <elliott> John can insert [a,b,c] into foo.
21:34:35 <elliott> Anne can insert [a,b,c] into foo.
21:34:38 <elliott> They both commit, and try and merge.
21:34:41 <elliott> In scapegoat, this is a conflict.
21:34:58 <Gregor> I'll bet there's at least one that does! :P
21:35:13 <elliott> (Because the hash of John's and Anne's changes will be different, because it involves the timestamp, their name, summary, etc. etc. etc.)
21:35:21 <cpressey> gehhh... what does "merge" mean here if that is the case
21:35:29 <cpressey> nothing can be merged, effectively
21:35:33 <elliott> cpressey: Completely false.
21:35:47 <elliott> cpressey: The fact is that this is an unrealistic scenario.
21:35:55 <elliott> Two people never independently reinvent a file from scratch.
21:36:10 <elliott> Scapegoat is based on blame; merging works based on the common ancestors that identify each line.
21:36:44 <elliott> cpressey: No, but really: If foo started off as [a,b]
21:36:48 <elliott> And John changed it to [a,x,b]
21:36:52 <elliott> And Anne changed it to [a,b,y]
21:36:58 <elliott> Then they'd merge successfully into [a,x,b,y].
21:37:05 <elliott> Because the a and the b are the asme in both cases.
21:37:26 <elliott> The thing is that John's and Anne's a, b, and c are different in that above example, because scapegoat doesn't just work on the literal bytes of the line, it works on the change that produces them.
21:38:06 <ais523> elliott: and ofc if your users have the habit of doing this sort of thing, it's entirely possible to generate a merge conflict resolution automatically, or automatically-with-confirmation
21:38:20 <elliott> You should probably slap such users, of course.
21:38:28 <elliott> Yeah, clarification, by conflict I don't mean you can NEVER COMMIT THEM EVER :P
21:38:45 <elliott> In this case, you'd just have to pick one of John's and Anne's a, b, and c.
21:38:54 <elliott> The decision is essentially arbitrary.
21:39:04 <ais523> or resolve it any other way you like
21:39:16 <cpressey> so to clarify: when you said "hash of the timestamp, name, summary" you meant of these properties when the file was created, not properties of the change?
21:39:18 <elliott> Although then commits to Anne's branch wouldn't get merged in properly... but basically this is the least realistic scenario ever.
21:39:23 <elliott> cpressey: The properties of the change.
21:39:29 <elliott> cpressey: Every single change is a change.
21:39:38 <elliott> Of course "add line X between Y and Z" is unlikely to have a summary.
21:39:39 <cpressey> ok, then i still don't understand, but i don't care enough to commit the brainpower to trying
21:39:45 <elliott> But it'll have the author, and the timestamp in it.
21:39:57 <elliott> cpressey: Most VCSes have change = author + timestamp + diff.
21:40:08 <elliott> Scapegoat has patch = author + timestamp + change.
21:40:21 <elliott> Where change = insert string between patch and patch, delete patch, ..., changeset (set of patch)
21:40:29 -!- Lymia has quit (Quit: ==(>^w^)> ==(> >.<)>).
21:40:33 <elliott> You almost always commit changesets (implicitly, by making multiple changes).
21:40:42 <cpressey> elliott: you can stop typing if you like-- see my previous line
21:40:48 <elliott> cpressey: Just trying to help.
21:40:55 <ais523> he's monologuing in case anyone reads the logs
21:41:13 <elliott> ais523: I think it might also be for my own benefit :P
21:41:22 <elliott> And for Gregor's in case he's still listening.
21:41:26 <cpressey> that would make sense, since you're the main consumer of the logs
21:41:28 <ais523> well, you're an avid logreader :)
21:41:34 <ais523> gah, cpressey beat me to the joke
21:41:48 -!- Lymia has joined.
21:41:59 <elliott> I'm the channel's official Historian, I have to be!
21:43:06 <elliott> Gregor: ...to summarise, AFAICT implementing scapegoat efficiently basically involves lots of caching.
21:43:09 <elliott> Ludicrous amounts of caching.
21:43:28 <elliott> ais523: BTW, I was thinking that changes should be signed with the author's GPG key...
21:43:37 <elliott> With the GPG public key stored in the author object.
21:43:46 <elliott> And perhaps some sg magic to automatically migrate any seen author objects to a common store.
21:43:55 <ais523> what if someone's GPG key changes or expires?
21:44:08 <elliott> ais523: then they become a new person-hash (but the same happens if they change their email, etc.)
21:44:17 <ais523> hmm, that's acceptable
21:44:27 <elliott> ais523: maybe there'll be some way an author can give everyone an "i'm this person now" object
21:44:40 <elliott> or maybe it could just be left for people to work out; it's not a big issue, IMO
21:44:56 <elliott> ais523: Automatic migration would be a security hole if you first saw an author in a malicious repository though. Anyway.
21:44:59 <coppro> are we discussing the new dvcs you're making?
21:45:01 <elliott> You couldn't sign every single change...
21:45:06 <elliott> because that'd include every single line touched.
21:45:14 <elliott> But I'm not sure how to do it more granularly without breaking the object-hash structure.
21:45:27 <coppro> what are we calling it again?
21:46:27 * iconmaster just noticed that he has invented 27% of the 2011 esolangs.
21:46:42 <olsner> elliott: hmm, if you sign something won't you implicitly be signing all its parents?
21:46:54 <elliott> olsner: err, no, considering that other people write the parents
21:47:00 <elliott> do you mean that it counts as like
21:47:17 <elliott> "I verify that the authorship information contained in these depended-upon commits is accurate"?
21:47:29 <elliott> so then things committed as changesets would just get unsigned constitutents, and the whole thing would be signed as a seal of approval
21:47:39 <elliott> the only problem is that, looking only at a subcommit, the system would not know it is signed
21:47:43 <elliott> without traversing up the graph
21:47:59 <olsner> yeah, it's slow unless you make it fast
21:48:32 -!- cpressey has quit (Ping timeout: 240 seconds).
21:48:50 <elliott> olsner: can't just cache everything, dude :)
21:48:59 * iconmaster is writing to Esolang all the languages he hasn't bothered to put down there yet.
21:49:01 <elliott> Gregor: Well, I think sgfs should be perfectly feasible to do efficiently.
21:49:33 <elliott> Gregor: I refuse to accept Hackiki's legitimately unless it draws fancy dependency lines in the revision history and has a merge conflict settler interface, though :-)
21:49:51 <ais523> iconmaster: I should do that sometime
21:50:02 <ais523> I haven't documented DownRight anywhere, and it's been finished for ages
21:50:14 -!- Phantom_Hoover has joined.
21:50:19 <elliott> ais523: DID YOU USE MY AMAZING SYNTAX IDEA
21:50:39 <ais523> I keep forgetting that languages need one of those
21:50:53 <ais523> (the compiler I wrote this weekend doesn't have one, you feed it ASTs as an argument)
21:52:10 <ais523> even Lisp has a syntax, although a very lightweight one
21:52:40 <Phantom_Hoover> It's basically just a syntax for serialising ASTs, though.
21:55:53 <ais523> Phantom_Hoover: it has quotes
21:56:03 <ais523> which are something which seem relatively Lisp-specific, in that context
21:56:35 <elliott> just use (quote x) directly
21:56:55 <elliott> ((LAMBDA (X) (LIST X (LIST (QUOTE QUOTE) X))) (QUOTE (LAMBDA (X) (LIST X (LIST (QUOTE QUOTE) X)))))
21:57:00 <oklopol> why is it always ast, why never a general asg :\
21:57:07 <elliott> you just construct an ast object
21:57:10 <elliott> and then pass it to the compiler
21:57:34 <oklopol> Phantom_Hoover: u r stupid
21:58:26 -!- cpressey_ has joined.
21:58:46 <oklopol> can you write a lisp loop that's just code that's a cycle?
21:59:00 <Gregor> Lisp is as close to syntax-free as you can POSSIBLY get, although I'll admit that quoting (as opposed to the list constructor) is borderline syntaxy. BORDERLINE.
21:59:47 <Gregor> elliott: OK, Forth is definitely less ensyntaxed than Lisp :P
21:59:55 <elliott> Forth has literally no formal syntax, it's just a system that starts in a mode that: Reads a bunch of letters or digits; stops on a space; executes it; and repeats.
22:00:02 <Phantom_Hoover> I doubt it, since Lisp is applicative order (henceforth to be known as boringplative order).
22:00:18 <Phantom_Hoover> eval would try to walk the entire graph and just get stuck in a loop.
22:00:32 <Phantom_Hoover> Although that's a cool esolang idea and one which must be done.
22:00:34 <elliott> not if you used a special form
22:00:46 <elliott> #1#=(begin (display "fart") (newline) #1#)
22:03:12 <Phantom_Hoover> I have a feeling that would end up being boring... right.
22:03:12 <Gregor> I suppose, where Lisp is "please hand my your AST as I am too lazy to parse a language", Forth is "please hand me your bytecode as I am too lazy to deserialize an AST" <trollface/> <alsohorriblyinaccuratedefinitionofforth/>
22:03:43 <elliott> #1#=(set-car! #1# set-cdr!)
22:03:58 <elliott> #1#=(begin (set-car! (cadr #1#) set-cdr!) #1#)
22:05:02 -!- TLUL has joined.
22:07:20 -!- fungot has joined.
22:07:39 -!- zzo38 has joined.
22:08:27 <Phantom_Hoover> So, erm, is this going to be a graph reduction language where cyclical graphs are allowed, or...?
22:10:23 <oklopol> just scheme where you can write code with loops with ease + magic
22:11:07 <oklopol> let's not start bikeshedding details like what the language is like.
22:11:46 <Phantom_Hoover> elliott's two examples are kind of tricky, though, since it's unclear how evaluation proceeds.
22:12:23 <elliott> literals like that are immutable i think :)
22:13:06 <oklopol> in theory, it should just recursively evaluate children, and apply the function in the parent.
22:13:32 <Phantom_Hoover> oklopol, which doesn't work because you end up trying to walk an infinitely deep tree.
22:14:16 <cpressey_> elliott: so ok. john changes [a, b, c] to [a, e, c]: it has hash 1234. anne changes [a, b, c] (same as john's starting point) to [a, e, c] (same as john's end point): it has hash 8765 (because anne != john). scapegoat merges these in some way that is not based on the contents, i.e, it does not look at e and compare e with e. explain how
22:14:29 <elliott> each individual element of that list has its own hash.
22:14:35 <oklopol> well yeah but only a COUNTABLY infinite tree, so it shouldn't be that hard ay
22:14:37 <elliott> which is the important thing.
22:14:40 <elliott> the list doesn't really exist
22:14:40 <cpressey_> which does not contain the author?
22:14:51 <elliott> cpressey_: like i said, there ARE no lines
22:14:58 <elliott> lines are identified by the commit that creates them
22:15:25 <elliott> cpressey_: not automatically
22:15:30 <elliott> cpressey_: by the scapegoat auto-merger
22:15:35 <Phantom_Hoover> This basically sums up half of what happens in this channel.
22:15:40 <elliott> cpressey_: but you could _trivially_ have a merge handler that just chooses one of two identical nodes.
22:15:41 <cpressey_> elliott: what kind of change could be?
22:15:49 <elliott> cpressey_: any change not like that.
22:16:02 <elliott> *two people never modify a file in the exact same way*; that's not a realistic user case.
22:16:13 <elliott> <elliott> cpressey: No, but really: If foo started off as [a,b]
22:16:13 <elliott> <elliott> And John changed it to [a,x,b]
22:16:13 <elliott> <elliott> And Anne changed it to [a,b,y]
22:16:13 <elliott> <elliott> Then they'd merge successfully into [a,x,b,y].
22:16:13 <elliott> <elliott> Because the a and the b are the asme in both cases.
22:16:21 <elliott> this is far more representative of how changes are actually made
22:16:55 <elliott> basically, if two scapegoat commits don't conflict, then they fit together perfectly; otherwise, they might have a perfectly reasonable resolution, but no objectively correct one; what happens next is up to you
22:17:42 <cpressey_> that's why i initially asked: what's the definition of "merge" here
22:17:57 <elliott> cpressey_: merge simply means that (changeset {c1,c2}) is valid
22:18:20 <elliott> can apply properly to any input that c1 and c2 can apply to.
22:18:26 <elliott> i'm no good at the explainy.
22:23:31 -!- cpressey_ has quit (Ping timeout: 260 seconds).
22:25:28 -!- elliott has quit (Ping timeout: 240 seconds).
22:25:34 <Sgeo> Bleh, I think Rust may really be better with just immutable and state, rather than immutable, state, gc
22:25:52 <Sgeo> How regularly are Phantom Types used in Haskell?
22:32:39 -!- azaq23 has joined.
22:32:57 <Zwaarddijk> what would be interesting would be if someone managed to abuse terminology cleverly enough to get an uncountably finite something
22:33:40 <Zwaarddijk> but who knows if someone really cleverly abuses terminolgoy
22:33:44 <Phantom_Hoover> You can have sets which are countably infinite, but with uncomputable countability, sooo...
22:33:52 <ais523> Zwaarddijk: it's possible if you don't have the axiom of choice
22:34:10 <ais523> as you can have two things that can't be put into one-to-one correspondence with {1,2} because there's no way you can decide which one goes to which number
22:34:14 <ais523> and you can't make an arbitrary choice either
22:34:27 <Zwaarddijk> ah, so cantor's diagonalization breaks down
22:34:44 <ais523> hmm, that might be one reason why people like axiom-of-choiceless systems
22:34:50 <ais523> even though they don't seem to correspond to reality too well
22:35:04 <Zwaarddijk> or like, diagonalization gets too powerful, rather
22:36:50 <Phantom_Hoover> Hmm... perhaps you could do something silly with computational equivalence.
22:37:53 <Phantom_Hoover> Like, you have a set defined as {x : x = f \/ x = g} where f and g are arbitrary functions, and you can't tell if that set has 1 or 2 members
22:39:00 <ais523> wouldn't that just be an uncomputable set?
22:39:04 <ais523> I don't see why that would make it uncountable
22:42:44 <ais523> I don't see why the two things have to have anything in common
22:45:38 -!- azaq23 has quit (Ping timeout: 250 seconds).
22:47:06 -!- azaq23 has joined.
22:47:47 <Phantom_Hoover> Zwaarddijk, conclusion: *all* finite sets are uncountable.
22:48:19 -!- augur has quit (Remote host closed the connection).
22:49:46 -!- poiuy_qwert has quit (Ping timeout: 255 seconds).
22:53:42 <oerjan> <elliott> *two people never modify a file in the exact same way*; that's not a realistic user case. <-- um what if there's a single, obvious fix to a bug?
22:53:56 -!- ais523 has quit (Remote host closed the connection).
22:53:59 -!- MigoMipo has quit (Read error: Connection reset by peer).
22:54:57 -!- poiuy_qwert has joined.
22:55:40 <oerjan> <ais523> and you can't make an arbitrary choice either <-- you don't need the axiom to make a finite number of arbitrary choices
22:57:24 <oerjan> <Phantom_Hoover> "Countable" = "is bijectible with N". <-- countable usually includes finite sets as well, iirc
22:58:43 <oerjan> "In mathematics, a countable set is a set with the same cardinality (number of elements) as some subset of the set of natural numbers."
22:59:12 <oerjan> Phantom_Hoover: well without the axiom of choice you can have uncountably finite sets, as said
22:59:32 <oerjan> it's just a bit more complicated than not selecting between two elements
23:00:08 <oerjan> the trick is that there are two possible definitions of "finite", which don't agree if you don't gave AoC
23:00:44 <oerjan> one is "same cardinality as some {1,...,n} where n is a natural number"
23:01:04 <oerjan> same cardinality as == has bijection with
23:01:32 <oerjan> the other is "contains no proper subset of the same cardinality as itself
23:02:14 <oerjan> you can have a set of the second type which has no bijection with any subset of the natural numbers
23:03:55 <oerjan> the axiom of choice allows to keep selecting elements of a set until you either run out or have got a subset matching N
23:05:03 <oerjan> in fact if you _do_ have a proper subset with the same cardinality, you don't even need the axiom to get such a subset
23:06:26 <oerjan> just let f : A -> B be the bijection, let x in A - B, and select {x, f(x), f^2(x), ...}
23:09:17 <oerjan> (mind you the axiom does not allow selecting elements _directly_, you need to prove the corollary of dependent choice first)
23:21:17 -!- optbot has set topic: logs: http://tunes.org/~nef/logs/esoteric/?C=M;O=D and http://208.78.103.223/esoteric/ | but using small numbers like 4.
23:23:04 -!- wareya_ has quit (Quit: leaving).
23:24:22 -!- wareya has joined.
23:31:31 -!- wareya has quit (Read error: Connection reset by peer).
23:33:16 -!- wareya has joined.
23:40:32 <Phantom_Hoover> I like the way their symbol is just the province drawn simply.
23:41:55 -!- augur has joined.
23:51:35 -!- Phantom_Hoover has quit (Remote host closed the connection).
23:57:08 -!- poiuy_qwert has quit (Quit: Leaving).