←2011-03-11 2011-03-12 2011-03-13→ ↑2011 ↑all
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> er.
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:11:05 <elliott> probably.
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:30 <elliott> 14:34:05 <GregorR-W> *yes
00:12:32 <elliott> 14:34:28 <ihope_> He was a carpenter?
00:12:34 <elliott> 14:34:45 <GregorR-W> O_O
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:40 <elliott> 14:36:07 <GregorR-W> O_O
00:12:42 <elliott> 14:36:25 <GregorR-W> I am stunned.
00:15:57 -!- cheater- has joined.
00:16:22 <elliott> pastebin.ca is back
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:02 <kipple> hei
00:20:10 <elliott> 15:05:31 <oerjanj> hei kipple (=rune?)
00:20:10 <elliott> 15:05:41 <kipple> ja
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:15 <elliott> 15:09:47 <ihope> Swedish?
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:21 <Gregor> *skilled laborer
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:46 <Gregor> *communism
00:21:47 <pikhq_> Oh, and baptism of believers. That's actually in there, too.
00:22:00 <elliott> *baguette
00:22:01 <pikhq_> Gregor: Communism is not a practice of the modern church.
00:22:04 <elliott> YES IT IS.
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:31 <elliott> [[>+<-]>-]
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:22:57 <elliott> well, essentially that.
00:23:01 <elliott> [-[>+<-]>]
00:23:03 <pikhq_> And rejecting it is actually the raison d'etre for many Protestant sects.
00:23:12 <elliott> *baptism of fire
00:23:15 <elliott> *of fire of infants
00:23:24 <pikhq_> Including, of all things, the Amish.
00:23:33 <elliott> oh wait
00:23:37 <elliott> can you swap two tape cells in BF?
00:23:39 <elliott> without using a third value...
00:23:40 <elliott> I think not
00:23:50 <Gregor> Without using a third? No.
00:24:22 <elliott> Gregor: indeed.
00:24:26 <pikhq_> I think you may be able to pull it off in 1-bit BF.
00:24:35 <Gregor> Hmmmmmmmmaybe
00:24:42 <elliott> that's just
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:25:44 <elliott> and what's ==, xor?
00:25:47 <elliott> no wait xor is !=.
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:26:58 <elliott> hmm
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:00 <elliott> ok, wait
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:46 <elliott> BUT
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:41 <elliott> oh wait
00:29:43 <elliott> both end with flip right
00:29:43 <pikhq_> You realise you need to actually implement if-else for that to work, right?
00:29:44 <elliott> excellent
00:29:52 <elliott> while { right; flip; if {left}; flip right } left
00:30:01 <elliott> *unfortunately*,
00:30:06 <elliott> while { right; flip; while {left}; flip right } left
00:30:07 <elliott> will not work
00:30:15 <elliott> since left is *true* here...
00:30:20 <pikhq_> while {left; flip} will.
00:30:25 <pikhq_> :P
00:30:31 <elliott> pikhq_: yes, but gives the wrong result for the rest of the code :)
00:30:35 <elliott> ok, wait
00:30:40 <elliott> this can be done as a truth table
00:30:42 <elliott> the problem is
00:30:44 <elliott> either 1,1
00:30:46 <elliott> or 0,0
00:30:49 <elliott> will have both 1s in the output
00:31:01 <elliott> even if you flip one way
00:31:08 <elliott> so there is no way to do an if, I think...
00:31:16 <elliott> yes, indeed
00:31:21 <elliott> you can't halt after generating "1,1" with []
00:31:29 <elliott> without moving outside those bounds
00:31:33 <elliott> Gregor: Alas.
00:33:13 <pikhq_> Well, you *could* successfully flip 0,1 and 1,0 around. :P
00:33:22 <pikhq_> flip; left; flip
00:33:26 <elliott> pikhq_: *right
00:33:27 <pikhq_> Erm, right;
00:33:30 <elliott> Well, yes. :p
00:33:40 <elliott> I think you can swap two bits with one extra bit trivially.
00:33:46 <elliott> (initialised to 0)
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:34:45 <elliott> yep
00:34:57 <elliott> [>>*<<*]>[<*>*]>[<*>*]<<
00:35:08 <elliott> or in bitchanger
00:35:25 <elliott> eh, too hard :D
00:35:47 <elliott> hmm
00:35:48 <elliott> interesting
00:35:54 <elliott> you can't swap the two registers of a minsky machine
00:35:56 <elliott> i don't think
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:07 <elliott> --Wikipedia
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:23 <elliott> Gregor: "Uh."
00:41:26 <elliott> getopt usually... works.
00:41:28 <elliott> glib has something.
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:44:59 <elliott> else
00:44:59 <elliott> {{{
00:45:00 <elliott> what.
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:02 <elliott> *parsing stream,
00:49:03 <Gregor> It's not stack based and word's can't control the parsing stream ... per se.
00:49:05 <elliott> LISP ON THE BRAIN.
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:07 <elliott> Gregor: Uhh, no?
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 <Gregor> It's JITted.
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:34 <elliott> GASPETHETTE
00:53:36 <Gregor> (Or probably ever)
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:15 <elliott> I'm talking about mine.
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:13 <Gregor> Oh, HOSTED
00:56:14 <elliott> Gregor: Like I said, hosted implementation of @. Like a 16-bit OS considers the BIOS, hosted @ considers Linux.
00:56:18 <Gregor> I totes read.
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:30 <Gregor> (Ponies)
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.)
00:59:55 <elliott> (No court would thount.)
01:00:29 -!- oerjan has joined.
01:00:51 <elliott> oerjan!
01:00:53 <elliott> did you just wake up? :)
01:00:59 <oerjan> *MWAHAHAHA*
01:01:04 <elliott> let's call that a yes
01:01:12 <elliott> ØST SUCCESSFULLY CALIBRATED
01:01:19 <oerjan> lol
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:01:59 <elliott> round to 1:30 UTC.
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:35 <elliott> like, 7 am? 9 am? 12 pm?
01:02:37 <elliott> Gregor: THIS IS IMPORTANT
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:27 <lambdabot> Unknown command, try @list
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:09:44 <elliott> yep!
01:09:47 <elliott> ok let's see
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:15 <elliott> bah
01:12:16 <elliott> this data is useless
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:16:38 <elliott> I'm a scientist, dammit
01:16:41 <oerjan> O KAY
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:22:24 <oerjan> )
01:22:37 <elliott> indeed.
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:24:44 <elliott> *with
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:28:43 <oerjan> ah.
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:16 <Sgeo> I can do this
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:43:57 <Gregor> THAT'S THE ONE
01:44:10 <Gregor> Grelnakov?
01:44:44 <oerjan> Gregor: GOOGLE EXISTENCE FAILURE
01:45:04 <Gregor> Grezhnev?
01:45:57 <oerjan> "Grezhnev, VA (V A) :: [A device for automatic determination, calculation and storage of parameters in cardiointervalography]
01:46:00 <oerjan> "
01:46:41 <oerjan> parameters after my heart
01:47:02 <Gregor> GreekSalad?
01:47:08 <oerjan> no.
01:47:11 <Gregor> Grep?
01:47:16 <oerjan> no.
01:47:32 <oerjan> in fact the first one was closest.
01:47:36 <Gregor> Gremlins?
01:47:37 -!- iconmaster has joined.
01:47:46 <oerjan> just add water.
01:48:45 <Gregor> Oh GreaseMonkey?
01:49:04 <oerjan> i fail to see how these are closer than the first one.
01:49:33 <Gregor> WELL IDONNO
01:49:40 <Gregor> But will continue to guess.
01:50:24 <Gregor> Greuido van Rossum?
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:03 <Gregor> Greenbeanicle?
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:30 <oerjan> *facepalm*
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:02:44 <elliott> Siner :P
02:02:57 <Gregor> :P
02:03:26 <elliott> oerjan: hmm
02:03:29 <elliott> oerjan: Grerik Naggum?
02:03:53 <elliott> oerjan: Grohn McCarthy?!?!??!?!!
02:04:04 <elliott> oerjan: Graul Praham?!
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:18 <bsmntbombdood> sounds like he's been a busy beaver
02:05:36 <elliott> bsmntbombdood: ba-dum
02:05:37 <elliott> TISH
02:05:48 <elliott> oerjan: HE LIVES ON IN SEXPRESSIONS.
02:09:08 <bsmntbombdood> thank you, i'll be here all week
02:10:41 <oerjan> maybe i should point out it's not the first name which starts with gre.
02:10:51 <elliott> oerjan: Paul Grehem?
02:10:57 <elliott> so if I got up at 10:45. hmhm
02:11:01 <elliott> erm.
02:11:03 <elliott> arithmetic is hard.
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:45 <elliott> oerjan: howso?
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:17 <elliott> (time now is almost 3 am)
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:52 <elliott> oerjan: or 10 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:23:16 <oerjan> *+r
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:28:19 <elliott> There's that. :p
02:29:27 <elliott> oerjan: If I'm yawning now things are going well, right?
02:29:42 <oerjan> ...maybe
02:29:58 <elliott> oerjan: it's 3 am. SO gonna go outside at the crack of dawn*
02:30:00 <elliott> *post-crack.
02:30:04 <elliott> *like, really post crack.
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:30:30 <dbc> Uh huh.
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:31:41 <elliott> for constant k
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:06 <elliott> oerjan: oh did it :D
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:14 <elliott> Poor Stan.
02:35:19 <elliott> Wait, that's two letters.
02:35:25 <elliott> Poor... Santn.
02:35:32 <oerjan> simon. clearly.
02:35:33 <elliott> Poor span.
02:35:36 <elliott> oerjan: Of course.
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:10 <elliott> it stands to reason.
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:37:37 <elliott> Imprecise?
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:40:41 <elliott> A New Kind of Powers.
02:42:52 <oerjan> ->
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:09:00 <elliott> Was the phone a BOMB?
03:09:04 <elliott> It's plausible.
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:23:20 <pikhq_> What is prefix-!?
03:28:32 -!- shachaf has joined.
03:33:23 <elliott> pikhq_: WHO KNOWS
03:36:11 <olsner> elliott: was it you who were trying to say something to me somewhere past my scrollback?
03:37:25 <elliott> olsner: prolly
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:30 <elliott> wuut
03:37:49 <elliott> well hexdigest of that string isn't same :P
03:37:53 <elliott> *the same.
03:46:07 -!- pikhq_ has quit (Ping timeout: 250 seconds).
03:46:09 -!- pikhq has joined.
03:46:16 -!- RodgerTheGreat has joined.
03:46:40 <RodgerTheGreat> hey dudes
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:09 <RodgerTheGreat> nice
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:15 <elliott> Well. Zooko's triangle.
03:59:17 <RodgerTheGreat> we need more space- this is obvious and inescapable
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:06:42 <elliott> Impressive :P
04:07:04 <RodgerTheGreat> It's been a good day
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:20 <RodgerTheGreat> yeah
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:24 <RodgerTheGreat> more like consumes
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:41 <RodgerTheGreat> in haskell your guess is as good as mine
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:30 <elliott> Hey, nor in Haskell. :p
04:11:30 <RodgerTheGreat> suck it, monolithic compilers
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:15:30 <oerjan> elliott: case
04:15:46 <elliott> oerjan: well, right. but.
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:37 <RodgerTheGreat> moore would claim no system has inherent complexity
04:20:50 <pikhq> Moore would hate MPEG.
04:20:53 <RodgerTheGreat> he probably wouldn't write a web browser either
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:37 <elliott> Erm.
04:22:39 <elliott> wget? That involves all the complexity of HTTP.
04:22:45 <RodgerTheGreat> I meant in terms of interfaces
04:22:55 <RodgerTheGreat> "here is a word that fetches a page"
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:04 <elliott> *:)
04:23:09 <RodgerTheGreat> bingo
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:02 <RodgerTheGreat> if you sandboxed it you could make that approach work
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:24:40 <RodgerTheGreat> mm
04:24:50 <RodgerTheGreat> well think about it
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:26 <elliott> and uh
04:25:32 <RodgerTheGreat> c@ c!
04:25:32 <elliott> probably dozens of others that access memory without asking :)
04:25:36 <elliott> implicitly, that is
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:25:52 <pikhq> And bugs.
04:25:56 <pikhq> Lots of those.
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:39 <pikhq> :)
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:27:56 <elliott> It's a C processor.
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:27 <elliott> *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:21 <RodgerTheGreat> separation of concerns
04:29:23 <elliott> No.
04:29:26 <elliott> But people use inheritance in OOP.
04:29:31 <pikhq> Ah, true.
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:29:59 <RodgerTheGreat> in the same sense that "integers break APIs"
04:30:01 <elliott> And inheritance impedes distributed teamwork with its intense coupling of code.
04:30:03 <elliott> RodgerTheGreat: Uh, no.
04:30:13 <elliott> Inheritance is a tool to break an object's interface.
04:30:20 <RodgerTheGreat> if you apply the tool improperly you will bleed
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:34:31 <elliott> *either."
04:39:33 <elliott> optbot!
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 <elliott> optbot!
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:37 <elliott> optbot!
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 <elliott> optbot!
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 <elliott> optbot!
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 <elliott> ^echo optbot
04:40:40 <fungot> optbot optbot
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:40:44 <elliott> aww, no longer works.
04:40:52 <RodgerTheGreat> hm
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:41:53 <elliott> it goes into SPACE.
04:41:57 <elliott> well, ok, it used to.
04:41:59 <elliott> now it just buffers.
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:35 <RodgerTheGreat> I thought you were in college now
04:42:46 <pikhq_> I live at home, for I am cheap.
04:42:53 <RodgerTheGreat> oh good lord
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:42:59 <elliott> almost as bad as sgeo's!
04:43:58 <RodgerTheGreat> in my opinion living at home to save money is a rather egregious false economy.
04:44:05 <RodgerTheGreat> case in point
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:44:46 <RodgerTheGreat> colleges *love* to pay students to do things
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:35 <RodgerTheGreat> mm
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:46:46 <elliott> I'm going to go cry now.
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:22:26 <oerjan> ...i see.
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:11 <cheater-> http://imgur.com/V9aab
06:16:35 -!- asiekierka has joined.
06:17:24 <RodgerTheGreat> what the hell
06:21:34 <elliott> ?
06:23:01 <RodgerTheGreat> that screenshot
06:23:18 <RodgerTheGreat> I am constantly baffled at the things people post online
06:23:24 <elliott> Oh, cheater spoke.
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:09 <RodgerTheGreat> thus "the things people post online"
06:24:18 <RodgerTheGreat> I know people are ignorant and prejudiced
06:24:26 <elliott> :)
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:09 <elliott> Badly named.
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:28:54 <elliott> oerjan: brilliant.
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:16 <pikhq_> How very depressing.
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:37:41 <elliott> I know.
06:37:47 <elliott> Thus present tense.
06:38:28 <oerjan> we must conclude that pikhq_ was hilarious as a child.
06:38:46 <elliott> HAHAHAHAHA
06:38:50 <elliott> But of COURSE
06:38:56 <wareya> Correlation!
06:38:57 <elliott> (picking on innocents//=my favourite pasttime)
06:39:00 <pikhq_> \o/
06:39:00 <myndzi> |
06:39:01 <myndzi> >\
06:39:03 <elliott> wareya: IT'S CAUSATION!
06:39:24 <pikhq_> ... If The Simpsons ends, do I die?
06:39:24 -!- augur has joined.
06:39:35 <elliott> Yes.
06:39:44 <olsner> pikhq_: it shall be the end of you
06:39:47 <elliott> Well, slightly offset.
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:40:43 <olsner> death to murdoch?
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:21 <RodgerTheGreat> 'night all
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:19 <pikhq_> Fuck.
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:48 <pikhq_> Not worth it.
06:43:49 <elliott> you must do a great many terrible things to stay alive.
06:43:50 <elliott> :D
06:44:17 <elliott> pikhq_: and Seth MacFarlane depends on goatse.
06:44:17 <elliott> \
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:42 <elliott> oerjan: offsets.
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:28 <elliott> pikhq_:
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:45:55 <pikhq_> LMAO
06:46:18 <pikhq_> oerjan: Oh, dear God, he will probably outlast the heat death of the Universe.
06:46:28 <oerjan> indeed
06:46:28 <elliott> after all atoms end
06:46:31 <elliott> there will only be mickey mouse.
06:46:35 <elliott> staring. in the void.
06:46:36 <elliott> watching.
06:46:37 <elliott>
06:46:38 <elliott> waiting.
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:17 <elliott> oerjan: :D
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:53:48 <oerjan> Sanctus Paedobarius
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:19 <pikhq_> oerjan: I care not.
06:55:27 <pikhq_> Church Latin is blasphemy.
06:55:45 <elliott> so is molestation, doesn't stop 'em!
06:56:09 <wareya> POSSUM VIDERE OMNIA
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:15 <wareya> I'm sure
06:56:19 <elliott> oerjan: oh. it's ok then!
06:56:30 <pikhq_> oerjan: It outlaws sexual activity outside of marriage.
06:56:39 <oerjan> hm true
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:02 <wareya> Heheh
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:57:33 <oerjan> *grades
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
06:59:42 <wareya> Seems good I guess
06:59:49 <pikhq_> Also, POSSVM.
06:59:51 <pikhq_> There is no U.
06:59:55 <pikhq_> There is only V.
07:00:02 <wareya> pikhq_: I learned church latin :<
07:00:12 <oerjan> BLASPHEMER
07:00:20 <elliott> that's not canonical!
07:00:21 <elliott> get it
07:00:25 <wareya> Hahaha
07:00:29 <oerjan> yes, elliott.
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:40 <elliott> *funny!!
07:00:54 <elliott> http://www.mezzacotta.net/ads/finland.png
07:00:55 <oerjan> ELEVEN
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:05:34 <elliott> gah, bochs is the worst.
07:06:58 -!- asiekierka has quit (Ping timeout: 260 seconds).
07:08:56 * elliott compiles bochs
07:09:02 <elliott> which is the worst.
07:09:28 <olsner> how so?
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:34:54 <elliott> <olsner> how so?
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:28 <elliott> hmm, i miss perlnomic :(
07:40:42 <olsner> hmm, that could just be you being stupid though
07:41:01 <elliott> olsner: quite possibly
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:58:52 <elliott> pikhq_: yeah :D
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:07:59 * Phantom_Hoover dives for cover
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:38:16 <elliott> :D
08:39:19 <elliott> gah
08:39:25 <elliott> do tracks/sectors/heads start from 0 or 1
08:39:28 <elliott> in int13h
08:39:30 <elliott> (olsner :P)
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:48:05 <elliott> fizzie: THAT'S LOGICAL!
08:48:31 <elliott> yay, it works now :)
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:33 <elliott> fizzie: Boot sectory.
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:25 <elliott> r0, impressive.
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:21:47 <elliott> :so confusing:
09:22:04 <oklopol> everything always is
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:29 <oklopol> no things atm
09:32:39 <oklopol> except learning japanese, and reading a paper
09:32:46 <oklopol> very slowly
09:32:48 <oklopol> and sleeping a lot
09:32:57 <oklopol> general lazinessness
09:33:10 <oklopol> i have an exam on monday tho so will have to work a few hours at some point
09:34:29 <oklopol> and U?
09:34:37 <elliott> erm oh right this channel exists?
09:34:42 <oklopol> yes
09:34:46 <elliott> i'm like
09:34:48 <elliott> sitting here
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:55 <elliott> not sure if you knew.
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:34:58 <elliott> ooh a puzl.
09:35:18 <elliott> now does # skip over ; or not, lemme check funge
09:35:30 <elliott> no.
09:35:31 <elliott> it does not.
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:35:45 <elliott> and it all repeats again
09:35:48 <elliott> fizzie: FUCKIN' NOTHIN'
09:35:53 <elliott> a whole lotta nothing
09:35:53 <oklopol> # is what?
09:36:03 <elliott> oklopol: ip <- ip + delta
09:36:07 <elliott> *pos I guess
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:22 <elliott> and _that_ wraps
09:36:49 <elliott> oh wait
09:36:52 <elliott> ;>#;
09:36:56 <elliott> the # moves us into the _space_
09:36:58 <elliott> so we hit the first one
09:37:02 <elliott> then the second one
09:37:04 <elliott> then the
09:37:04 <elliott> right
09:37:06 <elliott> total interp lockup
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:28 <elliott> 22:30:19 <GregorR> :P
09:47:29 <elliott> Phantom_Hoover: wat
09:47:34 <Phantom_Hoover> What's worse, it's the Microsoft fanboy.
09:47:41 <elliott> link
09:47:43 <Phantom_Hoover> elliott, http://rationalwiki.org/wiki/RationalWiki:Saloon_bar#Friday_conundrum
09:47:52 <elliott> scared
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:48:35 <Phantom_Hoover> Hmm.
09:48:39 <Phantom_Hoover> Well, OK.
09:49:01 <elliott> Additional evidence: Nobody actually asks actual dilemma-related questions in that way.
09:49:20 <Phantom_Hoover> Yes OK.
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:10 <elliott> I choose to dislike her.
09:51:15 <Phantom_Hoover> No idea; it's almost certainly one of RW's many frivolous blocks.
09:51:25 <Phantom_Hoover> elliott, she's one of the rabider antitheists on RW.
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:51:56 <Phantom_Hoover> "All religious people are morons" level.
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:52:18 <elliott> All 30 seconds of it.
09:52:23 <elliott> In the past.
09:53:01 <elliott> Phantom_Hoover: I also like how nobody responded to that factoring thing with an even vaguely ethical response.
09:53:20 <Phantom_Hoover> Release it publicly?
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:53:51 <elliott> BUT THAT DOESN'T MATTER.
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:03 <Phantom_Hoover> The Sun continues to uphold journalistic standards.
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:18 <Phantom_Hoover> BEST LINE EVER
09:55:20 <elliott> amateur scientists
09:55:21 <elliott> lol
09:55:34 <elliott> Phantom_Hoover: It will cause them RETROACTIVELY
09:55:39 <elliott> THE MOON IS MAGIC AND DEFIES TIME.
09:55:51 <Phantom_Hoover> Oh Christ, look at the comments.
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:56:49 <Phantom_Hoover> I'm not sure whether to laugh or cry.
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:22 <Phantom_Hoover> WHAT WOULD A WEATHER MAN KNOW
09:57:35 <elliott> Phantom_Hoover: Sarcasm, I *think*.
09:57:39 <elliott> But I'm very unsure.
09:57:48 <elliott> Anyway, laugh at my hee-larious Emmerdale quip.
09:57:56 <Phantom_Hoover> ahahahahahaha
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:58:51 <elliott> FSVO real world.
09:59:14 <Phantom_Hoover> What does the 'S' stand for in that?
09:59:18 <Phantom_Hoover> Oh, rightl.
09:59:19 <elliott> Some.
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:44 <elliott> TAXES TAXES TAXES
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:02 <elliott> oklopol: Oh. So you lied.
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:37 <elliott> oh ffs
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:00 <elliott> how does tomorrow sound?
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:04 <Phantom_Hoover> The first comment is gold.
10:03:13 <elliott> IN MY DAY
10:03:21 <elliott> (I'm using best ordering)
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:31 <elliott> HURF DURF
10:03:36 <elliott> Phantom_Hoover: Which is the top comment for you?
10:03:40 <Phantom_Hoover> elliott, the latter.
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:03 <Phantom_Hoover> O NOES
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:12 <Phantom_Hoover> Oh god j_random_idiot has spoken again.
10:05:16 <elliott> ojooojoijojiwerwerwerefwefwefwefjooijoijoifefwefewwefwewefojiijjiooijwfewefiojojiwefweiojjiwefewfjiojiowefwefjoiowefoijoiweffweojiojiwfewfejiowefojiwefojiwfeoijojiwfewefojioijwefioi
10:05:20 <elliott> Phantom_Hoover: ohgod]h;'juklo\p[p]\
10:05:20 <elliott> [
10:05:28 <elliott> no replies for me yet
10:05:41 <Phantom_Hoover> UNINFORMED RUDENESS
10:05:47 <elliott> oh. that one
10:05:51 <elliott> my reply thread is better
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:35 <elliott> no.
10:07:37 <Phantom_Hoover> Aww.
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:08:24 <elliott> oklopol: yep.
10:08:26 <elliott> oklopol: and forgot.
10:09:10 <elliott> oklopol: 04:48:58.
10:09:16 <elliott> (clog time)
10:10:37 <elliott> oklopol: :)
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:30 <oklopol> what was it btw?
10:12:40 <elliott> oklopol: it was a plan. and for it to work, you have to remember.
10:12:51 <elliott> hint: 2007
10:12:52 <oklopol> to rape you so you won't win the 50 pounds?
10:13:02 <elliott> no.
10:13:23 <oklopol> to... kill you so you won't win the 50 pounds?
10:13:27 <elliott> no.
10:13:36 <oklopol> i have no other ideas.
10:13:56 -!- asiekierka has quit (Read error: Operation timed out).
10:13:59 <oklopol> i blame the tv
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:30:19 <Phantom_Hoover> When that's in your opening line...
10:31:16 <elliott> INFINITELY more?
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:32:03 <Phantom_Hoover> INFINITELY!
10:32:05 <Phantom_Hoover> EVERYONE IS DEAD
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:34:58 <elliott> Actual quote.
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:31 <Phantom_Hoover> I suspect she is joking to at least a degree.
12:39:52 <elliott> Phantom_Hoover: She changed her last name to Berliner-Mauer (Berlin Wall) after getting married to it.
12:39:53 <elliott> I don't think so.
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:16 <elliott> animals and plants."
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:40 <Phantom_Hoover> ...OK, she's nuts.
12:40:48 <Phantom_Hoover> But hilariously so.
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:49:02 <cheater99> lol
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:56:41 <impomatic> Hi :-)
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:04:57 <elliott> Precompiling it?
13:05:03 <impomatic> elliott: it's only toothache :-) At least that's what my girlfriend tells me.
13:05:09 <impomatic> Precompile it by hand
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:05:48 <elliott> Wow I should sleep.
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:06:42 <Phantom_Hoover> elliott, you could get septicaemia from an abcess.
13:06:52 <elliott> impomatic: What PH said!
13:06:53 <Phantom_Hoover> *abscess
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:23 <Phantom_Hoover> Well, the abscess part.
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:08:25 <impomatic> I can concentrate again! ;-)
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:11:06 <cpressey> *sensibly
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:26 <cpressey> but that'll never work
14:12:56 <elliott> cpressey: like TUNES to the max
14:13:08 <elliott> TUNES stores all the objects in fancy databases :P
14:13:15 <elliott> just needs the code too
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:20 <elliott> ooh, anti-TUNES slander.
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:15:54 <cpressey> *non-existent?
14:16:01 <elliott> :D
14:16:16 <Phantom_Hoover> cpressey, which two things?
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:40 <cpressey> Phantom_Hoover: ...
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:17:41 <Phantom_Hoover> So how should they be beside each other?
14:18:21 <cpressey> Phantom_Hoover: never mind
14:18:30 <Phantom_Hoover> NO I WANT TO KNOW
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:22:22 <Phantom_Hoover> Oh, right.
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:17 <cpressey> it usually isn't fun
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:54 <cpressey> indeed
14:35:55 -!- cpressey has quit (Quit: leaving).
14:35:59 <oklopol> :D
14:36:04 <elliott_> :D
14:36:10 <elliott_> tail-call optimisation and tail recursion elimination
14:36:15 <oklopol> oh!
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:19 <cheater99> all python idiots think that
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:23 <elliott_> oklopol: it was
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:38:47 <elliott_> truly embarrassing
14:38:58 <oklopol> oh. okay.
14:40:06 <oklopol> Producing such code instead of a standard call sequence is called tail call elimination, or tail call optimization.
14:40:08 <oklopol> erm
14:40:11 <oklopol> oh call
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:41:12 <oklopol> hmm.
14:41:17 <oklopol> well whatevs
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:16 <oklopol> yeah
14:44:19 <elliott_> i dunno about haskell, i think it's too abstract to even talk about memory ;D
14:44:32 <oklopol> certainlyw
14:44:36 <elliott_> but r5rs' wording is a bit more blunt about it than i would expect most others to be
14:44:37 <oklopol> *-w
14:45:14 <oklopol> we have a course on ml and hol soon btw. if you still care about that stuff.
14:45:17 <oklopol> i mean
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:42 <elliott_> i haven't actually used hol
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:45:56 <elliott_> right.
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:46:40 <oklopol> yeah
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
14:56:27 <elliott_> oklopol: wut
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:07:01 <elliott_> oklopol: rite
15:15:13 <elliott_> pikhq_: you there?
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_> charlesap@[redacted]
15:59:15 <elliott_> Message will be retried for 2 more day(s)
15:59:16 <elliott_> oh dear.
15:59:51 <elliott_> pikhq_: Pingol.
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 <elliott> optbot!
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:34 <elliott> optbot!
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:28:33 <oklopol> zzo?
17:29:17 <elliott> obviously.
17:30:12 <oklopol> quite
17:31:52 <oklopol> have you ever lived next to a microwave and a fridge? it's awesome
17:31:59 <elliott> no, sounds nie
17:32:00 <elliott> nice
17:38:13 <oklopol> i also live on top of an armchair, but i that's probably not at all uncommon
17:39:43 <pikhq_> I have, in fact.
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:41:28 <pikhq_> elliott: No.
17:43:12 -!- cpressey has joined.
17:43:30 <cpressey> indeed there is many things discussed here
17:43:44 <pikhq_> 実。
17:43:52 <elliott> manifold things
17:45:36 <cpressey> this environment is making me want to design a production language & that makes me sad
17:45:41 <cpressey> luckily i leave tomorrow
17:45:46 <elliott> ESCAPE
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:48:02 <cpressey> what does that even mean
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:52:03 <elliott> cpressey: badly
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:54:38 <elliott> by a pythonista, no less.
17:55:31 <cpressey> fine
17:55:31 <cpressey> "
17:55:37 <elliott> *phew*
17:55:58 <cpressey> now it's a misquote and *I'm* buggin'
17:56:10 <iconmaster> "The quote problems are NEVR over.
17:56:33 <elliott> "
17:56:42 <iconmaster> Damn, you are good.
17:57:25 <cpressey> http://pypi.python.org/pypi/Python/2.5 <-- Python is a package for Python.
17:57:27 <pikhq_> "
17:57:32 <elliott> "
17:57:32 <iconmaster> " "
17:57:42 <elliott> cpressey: :what:
17:57:46 <pikhq_> — #esoteric
17:58:01 <iconmaster> ( Quotes are the least of your problems.
17:58:03 <elliott> )
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:58:36 <iconmaster> ( " ' [ { <
17:59:14 <elliott> > } ] ' " )
17:59:15 <lambdabot> <no location info>: parse error on input `}'
18:00:04 <iconmaster> ) BWAHAHA
18:00:38 <elliott> NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
18:00:53 <iconmaster> Quick, you must go back in time!
18:01:17 <iconmaster> Can anyone loan me a time machine?
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:06:02 <elliott> Sorta kinda like nopol :P
18:06:11 <iconmaster> Imah call it ']'
18:06:22 <elliott> FFFFFFFFFFFFFFFFFFFF
18:06:36 <iconmaster> Whoops.
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:13:18 <cpressey> t
18:13:48 <elliott> :D
18:13:55 <elliott> notation hipster
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:34 <elliott> oklopol: so about Clue ;D
18:20:43 <elliott> olsner: um that sounds ~right to me
18:21:06 <cpressey> gwwmmkmkmkmkgwwwmmmwmmmm
18:21:13 <olsner> elliott: really? isn't waiting "on" people what a waiter does?
18:21:24 <elliott> well, yes.
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 <elliott> err.
18:22:50 <oklopol> yes, "on" can mean "on" sometimes
18:22:54 <elliott> oklopol is wrong :P
18:22:59 <elliott> <olsner> and you'd generally be more likely to wait *for* a friend
18:23:00 <cpressey> oklopol is funny
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:29:45 <oklopol> well why not
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:17 <elliott> moneys ;\
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:50 <pikhq_> oklopol: NO!
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:34:50 <elliott> (If I do at all.)
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:13 <oklopol> wait why am i doing this
18:35:19 <oklopol> pikhq_: why am i doing this?
18:35:21 <elliott> oklopol: SHIPPING COSTS K
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:36:53 <elliott> \\\\BEST DAY////
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:37:59 <cpressey> good ol' dfgjiodfg
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:38:55 <cpressey> *takes up
18:38:59 <elliott> who cares :)
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:35 <elliott> :D
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:42:51 <pikhq_> GoodSNES is terrible.
18:43:03 <elliott> pikhq_: what's the good one.
18:43:08 <pikhq_> NoIntro.
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:19 <elliott> that's bootstrapped too.
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:45:59 <iconmaster> Imah make examples now.
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:50:54 <cpressey> like, "Haskellnik"
18:51:16 <quintopia> chris. did my friend find you?
18:51:47 <elliott> oh lord.
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:52:41 <elliott> Right. :p
18:52:46 <elliott> Guh.
18:52:47 <elliott> No trackers.
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:12 <elliott> And also seederless.
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:54 <elliott> the perfect coup
18:53:59 <quintopia> cpressey: ruby is an esolang, right?
18:54:09 <cpressey> /ragequit
18:54:10 <elliott> oh boy.
18:54:29 <elliott> SO CPRESSEY
18:54:31 <elliott> HAVING A FUN TIME?
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:13 <quintopia> bai
18:55:15 <cpressey> fun was not expected... i'm surviving, that's all i ask
18:55:18 <cpressey> quintopia: no beer
18:55:24 <cpressey> according to otganizatre
18:55:27 <cpressey> *organizer
18:55:30 <cpressey> but thx
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:27 <cpressey> elliott: long story
18:56:37 <elliott> cpressey: boring!
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:42 <cpressey> hose won't be for work
18:57:44 <elliott> "Theoretical BDSM" and "The Python-induced Crippling Alcoholism Support Group".
18:58:21 <elliott> pikhq_: ;_;
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:04:04 <elliott> Hmm.
19:04:06 <elliott> No seeders.
19:04:13 <elliott> Woe's me.
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:06:46 <cpressey> also
19:06:52 <cpressey> i have an idea for an esolang
19:07:07 <elliott> zomgz!
19:07:19 <cpressey> also, the sky? blue.
19:08:10 <elliott> wow.
19:08:12 <cpressey> hg clone http://hg.python.org/cpython/
19:08:16 <cpressey> oops
19:08:20 <elliott> why.
19:08:22 <elliott> why, cpressey, why.
19:08:44 <cpressey> to make random changes to it
19:08:54 <cpressey> and
19:08:58 <cpressey> to saturate the network
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:08 <cpressey> with a plausibly innocent act
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:36 <elliott> :D
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:02 <cpressey> floating point gonna float
19:12:43 <cpressey> wait, is optbot a bot
19:12:44 <optbot> cpressey: as a toggle marker
19:12:51 <cpressey> i thought it might be fizzie
19:12:53 <elliott> cpressey: um yes. he used to be here a while back.
19:12:55 <elliott> i revived him.
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:13:47 <cpressey> what's it written in?
19:13:56 <elliott> cpressey: um.
19:13:59 <elliott> it used to be ruby.
19:14:03 <elliott> this time it's... python BUT
19:14:05 <elliott> I have a DEFENCE
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:44 <elliott> heh
19:16:50 <cpressey> i suspect the keyboard driver for this laptop in ubuntu is not perfect
19:16:51 <elliott> def random_line():
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:16:53 <elliott> pythonic.
19:20:31 <elliott> gmail's keyboard shortcuts are awesome.
19:21:07 <cpressey> >>> f = { 2.0: 'k' }
19:21:07 <cpressey> >>> f[2.0]
19:21:07 <cpressey> 'k'
19:21:11 <cpressey> so pythonic
19:21:45 <elliott> yes.
19:25:46 <cpressey> f[2] is also 'k'
19:27:28 <cpressey> ooh, i have cpython src now
19:27:36 <cpressey> configuring and building this puppppp
19:27:41 <cpressey> *pupppppppppppppppppppppppppppppppppppppp
19:27:47 <cpressey> *puppy
19:29:04 <elliott> write a python->pixley compiler!!198379328
19:29:10 -!- ChanServ has set channel mode: +o oerjan.
19:29:18 <elliott> er.
19:29:18 -!- oerjan has set channel mode: -o GregorOpMonger.
19:29:23 <elliott> *gasp*
19:29:29 <elliott> Gregor: INJUSTICE
19:29:30 <elliott> BAN OERJAN
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:30:10 <elliott> oerjan: Y U NO FUN?
19:30:19 <cpressey> glumpwhenge
19:30:27 <elliott> cpressey: what
19:30:41 <cpressey> hardwire my monkeypatch
19:30:47 <elliott> yes.
19:31:00 <elliott> cpressey: quick, change the lexer to parse { as INDENT and } as DEDENT
19:31:03 <elliott> and ignore whitespace
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:32:36 <cpressey> [GCC 4.4.3] on linux2
19:32:39 <cpressey> "woot"
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:05 <elliott> if hello == 4: {
19:34:14 <elliott> print["good morning", "abc"(2)];
19:34:18 <elliott> print["goodbye"];};
19:34:25 <elliott> ten times better already
19:34:51 <cpressey> ok, fine. syntax.
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:20 <elliott> cpressey: I doubt it
19:35:25 <cpressey> no, that's what it says
19:35:36 <elliott> heh
19:35:38 <cpressey> it might think i want to do a more than trivial change
19:36:09 <cpressey> gonna start small
19:36:16 <cpressey> changed the syntax for newstyle classes to
19:36:23 <cpressey> class Foo[Bar]:
19:36:32 <cpressey> see what happens
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:37:42 <cpressey> File "<string>", line 1
19:37:42 <cpressey> class CacheInfo(tuple):
19:37:42 <cpressey> ^
19:37:42 <cpressey> SyntaxError: invalid syntax
19:38:05 <elliott> pikhq pikhq pikhq
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:13 <pikhq> I REMEMBER NOT
19:40:35 <elliott> pikhq: FFFFFFFFF
19:40:46 <elliott> pikhq: Shoot me Chrono Trigger or something so I can test this bsnes build? :-P
19:40:59 <cpressey> File "<string>", line 1
19:41:00 <cpressey> class CacheInfo(tuple):
19:41:00 <cpressey> ^
19:41:00 <cpressey> SyntaxError: invalid syntax
19:41:05 <cpressey> grr
19:41:22 <elliott> poor cacheinfo
19:41:26 <cpressey> >>> class Foo*:
19:41:26 <cpressey> ... a = 1
19:41:27 <cpressey> ...
19:41:27 <cpressey> Fatal Python error: Non-statement found: -13824 8308512
19:41:27 <cpressey> Aborted
19:41:33 <elliott> :D
19:41:39 <cpressey> I added an '*' alternate to the grammar
19:41:42 <elliott> cpressey: THIS IS SO MUCH FUN
19:41:50 <elliott> cpressey: embed HQ9+
19:42:01 <cpressey> stop making such good suggestions!
19:42:17 <elliott> :D
19:42:23 <elliott> ok here's a bad one
19:42:25 <cpressey> maybe i'll go to the ast talk after all
19:42:26 <elliott> cpressey: embed Funge-98!
19:42:31 <elliott> actually that's like
19:42:33 <elliott> the best suggestion
19:42:36 <elliott> but unfortunately, the most difficult.
19:42:50 <cpressey> in docstrings? but that would be so cheating
19:42:55 <elliott> no
19:42:56 <elliott> in the raw code
19:42:57 <cpressey> yeah, no
19:43:00 <cpressey> yeah
19:43:01 <cpressey> no.
19:43:06 <elliott> you're lame. lamest.
19:43:09 <elliott> maximising lame!
19:43:10 <cpressey> :P
19:43:18 <elliott> oh god
19:43:20 <elliott> this lexer is insane
19:43:21 <cpressey> well actually
19:43:30 <elliott> yield_expr: 'yield' [testlist]
19:43:30 <elliott> ok
19:43:32 <elliott> let's make this
19:43:39 <cpressey> it might be easier here than in a non-offside-rule langauge
19:43:41 <elliott> | 'dleiy' [testlist]
19:43:43 <elliott> that might work.
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:44:23 <elliott> right
19:44:28 <elliott> ok!
19:44:30 <elliott> ./configure && make -j3
19:44:59 <cheater-> cpressey: what does the * do?
19:45:25 <elliott> cpressey: here's an idea.
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:46:29 <elliott> OH GOD IT'S SO BEAUTIFUL.
19:46:42 <cpressey> jesus hrist
19:46:52 <elliott> i'm a fuckin' visionary
19:47:18 <elliott> >>> dleiy 3
19:47:19 <elliott> File "<stdin>", line 1
19:47:19 <elliott> SyntaxError: 'yield' outside function
19:47:19 <elliott> bitching.
19:48:02 <elliott> suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT | NEWLINE '{' stmt+ '}'
19:48:09 <elliott> ;D
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:17:14 <elliott> pikhq: *sob*
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:03 <elliott> pikhq: sob.
20:20:06 <elliott> hi ais523
20:20:09 <elliott> pikhq is an evil space demon
20:21:19 <pikhq> 悪宇宙鬼?
20:22:13 <elliott> pikhq: Yes.
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:14 <elliott> yeah. evil pikhq.
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:24:58 <elliott> I BET YOU'RE A
20:24:59 <elliott> A
20:25:06 <elliott> A TOOL OF BIG COPYRIGHT
20:25:08 <elliott> WHICH IS NOW A THING
20:25:12 <elliott> (SO TIRED)
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:25:59 <oerjan> O KAY
20:26:09 <ais523> hi elliott
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:24 <elliott> except... for software.
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:30 <oklopol> what's the world record
20:27:49 <pikhq> 9.5.
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:35 <elliott> oklopol: :D
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:45 <oklopol> :o
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:37 <oerjan> *exactly
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:02 <elliott> oh snap.
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:13 <elliott> yes, like Python
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:34:52 <elliott> :D
20:34:57 <elliott> best function ever
20:35:34 -!- cpressey_ has joined.
20:35:45 <oerjan> :D
20:36:14 <oklopol> idgi, why 2?
20:36:48 <elliott> x>>2 = x/4
20:36:55 <elliott> thought you shoud know
20:36:55 <ais523> oh, I meant x >> 1
20:36:58 <elliott> oh
20:37:00 <ais523> said the wrong thing
20:37:01 <oklopol> right
20:37:03 <elliott> well right
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 <ais523> hmm, now I'm confused
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:40:21 <elliott> cuz hg sux
20:40:27 <elliott> obviously!
20:40:46 <oerjan> 12/2 == 6, hm
20:40:55 <cpressey> PEP 336: "Make None Callable"
20:41:06 <Gregor> elliott: AFAICT there's no good gitfs either.
20:41:12 <elliott> no, just sgfs
20:41:15 <elliott> cpressey: wat.
20:41:26 <oerjan> > [x `div` (x `div` 2) | x <- [1..]]
20:41:26 <lambdabot> [*Exception: divide by zero
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 <lambdabot> mueval-core: Time limit exceeded
20:41:50 <oerjan> ais523: not very much 3 there...
20:41:54 <elliott> wtf?
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:37 <elliott> Gregor: DONE.
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:43 <elliott> ais523: there's a 3 there
20:42:47 <elliott> it should produce [3, before timing out
20:42:48 <elliott> by definition
20:42:53 <elliott> all i added was a filter
20:42:53 -!- zzo38 has joined.
20:42:57 <oklopol> ais523: are you sure 2/2/2 is 1
20:43:01 <ais523> err, 2
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:13 <oerjan> now what
20:44:14 <cpressey> "hiding flow control inside of macros is a bad idea" -- raymond chen
20:44:19 <cpressey> yeah
20:44:20 <cpressey> sure
20:44:21 <lambdabot> thread killed
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:27 <oerjan> oh hm
20:44:36 <elliott> Gregor: It's FRACTAL.
20:44:41 <zzo38> ais523: No.
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:14 <cpressey> don't ever hide anything ever
20:45:23 <elliott> Gregor: The end effect is that it does merging properly :P
20:45:26 <lambdabot> mueval: ExitFailure 1
20:45:26 <lambdabot> mueval-core: Time limit exceeded
20:45:28 <elliott> And branching.
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:15 <elliott> err, no
20:47:19 <elliott> that's scape[unicode goat character]
20:47:23 <elliott> blame Gregor :)
20:47:35 <cpressey> no problem
20:47:36 <ais523> oh, I see
20:47:38 <cpressey> that's usually who i blame
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:47:50 <cpressey> nor mine
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:44 <elliott> etc.
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:25 <ais523> zzo38: it is
20:50:25 <elliott> Gregor: Basically,
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:51 <ais523> zzo38: indeed
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 <cpressey> and for elliott's benefit: )
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:24 <ais523> *change menas
20:53:27 <ais523> *change means
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:18 <Gregor> Whoaaaaaaaaaaaaah
20:54:20 <Gregor> *brain axplote*
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:01 <elliott> cpressey: Scapegoat!!!!!
20:55:13 <Gregor> (Scape🐐)
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:32 <elliott> *almost all of
20:55:33 <cpressey> i didn't say i wanted to know
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:40 <Gregor> Naturalismo :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:47 <elliott> Define "parent"
20:58:51 <cpressey> I HAVE TO MOVE TO ANOTHER ROOM NOW
20:59:21 <cpressey> no, i'm wrong
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:48 <Gregor> ... wiki? ... no
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:12 <cpressey> no, not giki...
21:00:14 <cpressey> whatever that is now
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:17 <elliott> Hackiki.
21:00:21 <elliott> Gregor: I've been thinking of those as "dependencies", but they are pretty close to parents.
21:00:21 <cpressey> Hackiki.
21:00:24 <cpressey> Yes thank you elliott
21:00:34 <elliott> Gregor: It's just that most VCSes don't have like fifty parents per change :P
21:00:46 <Gregor> elliott: True :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:01:23 <cpressey> Gregor: ok, understood now
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:05 <cpressey> and with that, bbl
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:13 <elliott> Like a copying GC!
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:19 <elliott> Gregor: Commit == change.
21:04:28 <Gregor> elliott: Commit == multiple changes
21:04:30 <elliott> ais523 defined the tip precisely, I think.
21:04:34 <Gregor> In classical parlance
21:04:47 <elliott> The oldest commit with most dependencies?
21:04:50 <elliott> Or was it the newest...
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:05:57 <olsner> :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:42 <elliott> oh dear god
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:34 <Gregor> THEORY OF PATCHES
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:08:46 <elliott> ;-)
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:06 <ais523> not the main TAEB guy
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:10:57 <ais523> *turtles?
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:00 <elliott> *line-based by
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:13:50 <elliott> *directory.
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:17:38 <elliott> ais523: har har har
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:19:46 <elliott> ais523: heh, nice
21:19:48 <elliott> ais523: what exactly?
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:06 <cpressey> oh dear
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:14 <cpressey> optimizing the common case?
21:25:22 <elliott> Yeah, but why would that be common?
21:25:26 <cpressey> (that was an attempt at a joke)
21:25:31 <elliott> oh
21:25:32 <elliott> ha
21:25:34 <elliott> ahem
21:26:06 * Gregor reappears.
21:26:14 <elliott> Gregor: I am INTERROGATING your usecase.
21:26:18 <elliott> Like Pythoneerstas do.
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:30 <elliott> Gregor: Oh, I see.
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:28:51 <elliott> And vice-versa.
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:35 <elliott> Just yells at you?
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:30:38 <elliott> Right.
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:31:39 <cpressey> how built is this thing
21:31:48 * Gregor doesn't follow ...
21:31:52 <elliott> cpressey: In theory, 70%.
21:31:55 <elliott> In practice, 3%.
21:32:03 <Gregor> In reality, -0.25% :P
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:33 <cpressey> almost?
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:50 <elliott> No other VCS does THAT :P
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:29 <cpressey> ok, whatever
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:37:27 <elliott> *produced
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:14 <elliott> ais523: Oh, of course.
21:38:20 <elliott> You should probably slap such users, of course.
21:38:26 <ais523> indeed
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:53 <cpressey> me too
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:18 <ais523> coppro: yep
21:45:27 <coppro> what are we calling it again?
21:46:13 <elliott> sg
21:46:16 <elliott> (= scapegoat)
21:46:27 * iconmaster just noticed that he has invented 27% of the 2011 esolangs.
21:46:41 <elliott> It's only March :-P
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:46:57 <elliott> although hmm
21:46:57 <iconmaster> I'm going to invent MOAR languages
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:27 <olsner> something like that
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:31 <elliott> intriguing idea
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:45 <elliott> which is probably slow
21:47:59 <olsner> yeah, it's slow unless you make it fast
21:48:24 <olsner> more caching :)
21:48:32 -!- cpressey has quit (Ping timeout: 240 seconds).
21:48:50 <elliott> olsner: can't just cache everything, dude :)
21:48:56 <olsner> why not!?
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:42 <elliott> sgiki.
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:28 <ais523> what was it?
21:50:33 <ais523> oh right, syntax
21:50:36 <Phantom_Hoover> HELLO GUYS I AM BACK
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:51:09 <Phantom_Hoover> ais523, that is the best thing ever.
21:51:18 <Phantom_Hoover> Wait, that already exists.
21:51:22 <Phantom_Hoover> It's called "Lisp".
21:51:25 <Phantom_Hoover> Gregor, comment!
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:52:48 <elliott> so is all syntax
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:25 * Phantom_Hoover ponders how one can not have a syntax, then.
21:56:35 <elliott> just use (quote x) directly
21:56:42 <Phantom_Hoover> How do you store the ASTs you pass to the compiler?
21:56:55 <elliott> ((LAMBDA (X) (LIST X (LIST (QUOTE QUOTE) X))) (QUOTE (LAMBDA (X) (LIST X (LIST (QUOTE QUOTE) X)))))
21:56:59 <elliott> Phantom_Hoover: @.
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:10 <elliott> easy
21:57:15 <Phantom_Hoover> oklopol, because how would that even work.
21:57:22 <elliott> um
21:57:24 <elliott> lisp is a graph
21:57:34 <oklopol> Phantom_Hoover: u r stupid
21:57:41 <elliott> '#1=(1 . #1#)
21:57:42 <elliott> IIRC
21:57:45 <elliott> I forget the exact syntax
21:57:47 <oklopol> sure
21:57:49 <Phantom_Hoover> Oh, you mean that thing?
21:58:09 <Phantom_Hoover> Ahh, right, forgot that conses can have cyclic links.
21:58:26 -!- cpressey_ has joined.
21:58:32 <Phantom_Hoover> cpressey_!
21:58:42 <Phantom_Hoover> Have you escaped the Pythonistas?
21:58:46 <oklopol> can you write a lisp loop that's just code that's a cycle?
21:58:49 <oklopol> i mean
21:58:58 <oklopol> without quoting
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:26 <Phantom_Hoover> oklopol, you mean use cyclic conses to loop?
21:59:31 <elliott> Gregor: Uh.
21:59:32 <elliott> Forth.
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.
21:59:56 <oklopol> Phantom_Hoover: what else
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:25 <oklopol> bleh...
22:00:30 <oklopol> that's a bit homo
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:35 <elliott> i.e. begin
22:00:42 <oklopol> mm but that's ugly
22:00:46 <elliott> #1#=(begin (display "fart") (newline) #1#)
22:01:15 <oklopol> hihi
22:01:22 <oklopol> such a cute idea
22:01:34 <oklopol> hihihiiiiiiiiiiiiiii
22:01:39 <Phantom_Hoover> Hmm, would code be able to alter itself?
22:02:59 <oklopol> of course not
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:17 <oklopol> purely functional
22:03:43 <elliott> #1#=(set-car! #1# set-cdr!)
22:03:58 <elliott> #1#=(begin (set-car! (cadr #1#) set-cdr!) #1#)
22:04:31 <Phantom_Hoover> elliott, let's assume it's not boringplative order.
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:20 <Phantom_Hoover> Hmm.
22:11:46 <Phantom_Hoover> elliott's two examples are kind of tricky, though, since it's unclear how evaluation proceeds.
22:12:17 <elliott> badly
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:24 <elliott> er.
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:43 <elliott> um.
22:14:46 <elliott> yes contains the author.
22:14:51 <elliott> cpressey_: like i said, there ARE no lines
22:14:53 <elliott> there are only changes
22:14:58 <cpressey_> hash(e, john) == hash(e, anne)?
22:14:58 <elliott> lines are identified by the commit that creates them
22:15:01 <elliott> no.
22:15:04 <elliott> by design.
22:15:13 <cpressey_> so these can't be merged afaics
22:15:15 <Phantom_Hoover> Ooh, Scapegoat!
22:15:22 <Phantom_Hoover> The awesome thing I don't understand!
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:22 <cpressey_> ok
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:02 <elliott> i.e. can apply properly.
22:18:10 <cpressey_> you speak in riddles
22:18:12 <elliott> er, that is
22:18:20 <elliott> can apply properly to any input that c1 and c2 can apply to.
22:18:23 <elliott> ask ais523.
22:18:26 <elliott> i'm no good at the explainy.
22:18:29 <cpressey_> successful merge is successful
22:18:37 <cpressey_> now, to eat!
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:29:07 <Phantom_Hoover> oklopol, so, uh, circuscheme.
22:32:12 <Phantom_Hoover> How do you have an uncountably infinite tree?
22:32:39 <Zwaarddijk> hm
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:12 <Phantom_Hoover> Heh.
22:33:17 <Phantom_Hoover> Weell...
22:33:29 <Zwaarddijk> I think it's mutually contradictory
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:51 <Zwaarddijk> true!
22:33:52 <ais523> Zwaarddijk: it's possible if you don't have the axiom of choice
22:34:01 <Zwaarddijk> ais523: ah, this sounds interesting.
22:34:03 <Zwaarddijk> tell me more.
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:34:55 <Phantom_Hoover> ais523, is the arbitrary choice the bit that needs C?
22:35:03 <ais523> yep
22:35:04 <Zwaarddijk> or like, diagonalization gets too powerful, rather
22:36:36 <Phantom_Hoover> But if you do have C?
22:36:38 <Zwaarddijk> (is that the right interpretation?)
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:39:12 <Phantom_Hoover> Yes, it was just a start.
22:39:30 <Phantom_Hoover> OTOH, is it countable if it's uncomputable?
22:42:44 <ais523> I don't see why the two things have to have anything in common
22:44:15 <Phantom_Hoover> Wait, countability is impossible for finite sets.
22:44:36 <Phantom_Hoover> "Countable" = "is bijectible with N".
22:45:38 -!- azaq23 has quit (Ping timeout: 250 seconds).
22:47:06 -!- azaq23 has joined.
22:47:12 <Phantom_Hoover> Zwaarddijk, there you go.
22:47:19 <Phantom_Hoover> Even abuse of notation won't work.
22:47:31 <Phantom_Hoover> Or, wait.
22:47:35 <Phantom_Hoover> It *does* work.
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:57:36 <Phantom_Hoover> oerjan, abuse of notation!
22:58:24 <oerjan> what abuse?
22:58:36 <Phantom_Hoover> To allow uncountable finite sense.
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:58:48 <Phantom_Hoover> Taking "countable" to mean "countably infinite".
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
22:59:38 <Phantom_Hoover> oerjan, you just said you couldn't... how?
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:18 <Phantom_Hoover> Ah.
23:00:22 <Phantom_Hoover> What are they?
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:13 <Phantom_Hoover> Yes, I know that.
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:02:51 <Phantom_Hoover> *without C, presumably?
23:02:58 <oerjan> yes, of course
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:09:25 <oerjan> *those elements
23:17:35 <oerjan> ->
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:20 <Phantom_Hoover> http://en.wikipedia.org/wiki/Aomori_Prefecture
23:40:32 <Phantom_Hoover> I like the way their symbol is just the province drawn simply.
23:40:39 <Phantom_Hoover> s/province/prefecture/
23:41:55 -!- augur has joined.
23:51:23 * Phantom_Hoover → sleep
23:51:35 -!- Phantom_Hoover has quit (Remote host closed the connection).
23:57:08 -!- poiuy_qwert has quit (Quit: Leaving).
←2011-03-11 2011-03-12 2011-03-13→ ↑2011 ↑all