00:01:05 <oerjan> Braber01: it's working with the different name.  our wiki itself is fine, but the name server provider for one of the names is closing down. 
00:01:21 <oerjan> so you need to use the other address. 
00:01:42 <Braber01> do you think my IP will get banned if I convert a 99 bottles bf program to what I like to call forkfork? 
00:02:03 <Braber01> baned from 99-bottles-of-beer.net 
00:02:14 -!- sebbu2 has changed nick to sebbu. 
00:02:24 <oerjan> Sgeo: the concept of dimension as "number of variables you need to describe a shape" is not the same as topological dimension. 
00:03:33 <Braber01> neither do I but at least I'll have a fun project to do over the weekend. 
00:04:30 <oerjan> Braber01: no one will mind if you put it on our wiki, at least.  (well not for the swearing, anyhow.  there are some who have a burning hate against brainfuck derivatives.) 
00:05:13 <itidus20> but thats only for the reason that there are so many brainfuck derivatives that even a smee hee like me knows about them 
00:06:06 <Braber01> I think I kind of liked i-hate-your-bf-deritive-i-really-do I thought that article was pretty funny. 
00:06:21 <monqy> there are at least two reasons to hate brainfuck derivatives 
00:06:21 <oerjan> Sgeo: but i think if you _really_ want to understand the concept of this as it relates to hyperplane stuff, then algebraic geometry is probably the field for it. 
00:06:25 <monqy> 1) there are so many it's getting old 
00:06:45 <Sgeo> monqy, do you hate me. 
00:06:49 <monqy> 2) they're typically really uncreative, just renaming the commands or adding a new command or something like that 
00:06:53 <monqy> Sgeo: what did you do 
00:07:02 <Sgeo> monqy, made a brainfuck derivative. 
00:07:10 <monqy> some brainfuck derivatives are good 
00:07:19 <itidus20> By appending an exclamation mark ('!') a command can be repeated, without the need to write the word again. <-- that right there is very clever indeed 
00:07:45 <oerjan> itidus20: yeah +!!!!! is _so_ much better than ++++++ :P 
00:07:47 <Sgeo> I think zzo38 using my BF derivative is not necessarily an indicator of goodness 
00:08:12 <oerjan> oh wait this is fuckfuck 
00:08:24 <oerjan> so i guess it is a slight improvement 
00:08:38 <itidus20> oerjan: but the idea is genius 
00:09:23 <oerjan> fucking tourettes, bitches 
00:11:03 <oerjan> itidus20: wait are you actually making a euphemism for "smeg head" :P 
00:12:04 <itidus20> i don't follow red dwarf much but i saw a youtube of it the other day with that euphemism 
00:13:18 <oerjan> i haven't exactly seen every episode either. 
00:14:06 <itidus20> i'm no lister.. even though i consider myself quite possibly the least nerdiest in here 
00:15:10 <itidus20> i don't think this room really attracts lister types 
00:15:32 <lifthrasiir> oerjan: or you can use a binary encoding so +!?! is really + followed by five copies of it 
00:15:42 <oerjan> lifthrasiir: ooh, fancy! 
00:16:27 <itidus20> i might never look at !?!?! the same 
00:17:21 <itidus20> now to translate hello world into binary encoded fuck fuck 
00:19:44 <Gregor> gcc: fatal error: no input files 
00:19:44 <Gregor> compilation terminated. 
00:19:46 -!- kwertii has quit (Quit: bye). 
00:19:51 <Gregor> When did they change this error message??? 
00:20:00 <Gregor> It's been "gcc: no input files" for DECADES. 
00:20:08 <elliott> Still is on this old version 
00:20:32 <oerjan> Gregor: maybe they discovered it had actually killed someone. 
00:20:35 <monqy> gcc: fatal error: no input files 
00:20:36 <monqy> compilation terminated. 
00:22:00 <lifthrasiir> boob!???!!! cock boob!!!?? cock boob!!? cock! boob!? cock tits!????!? cock tits!?!! cock boob!?!?!!? cock tits!!! cock boob!? cock tits!?! cock tits!!! cock tits!????!? cock tits!?!!? cock 
00:22:53 * Braber01 is ashamed that I startted something... 
00:24:50 <lifthrasiir> i recall one from the list of ideas that recommends the use of chinese characters for golfing 
00:25:59 <oerjan> <meme>Scumbag Taneb makes Uniquode;  never gets beyond 256 commands.</meme> 
00:26:19 <elliott> 17:22:58: <Gregor> "Apple decided to use an archaic object file format for Mac OS X, a variant of the old aout format. This format predates dynamic linking. Apparently without proper staffing, they have to reinvent lots of stuff for their obsolete object format. Had they chosen a current object formats, they could have taken more benefit of the the quality work already done within the GNU project." 
00:26:19 <elliott> 17:22:59: <Gregor> -- http://gmplib.org/macos.html 
00:26:33 <lifthrasiir> oerjan: no, he can still combine Uniquode with Unispace 
00:27:16 <Gregor> elliott: I love how unbiased that is :P 
00:27:49 <elliott> Gregor: You see, Apple failed to create GNU/Hurd. 
00:27:54 <elliott> SO THEY HAVE FAILED TERRIBLY 
00:28:19 <Gregor> Well, to be fair, they got close, in that they used a microkernel infrastructure, but missed pretty terribly as they put a monolithic kernel on the microkernel. 
00:28:38 -!- cheater has quit (Ping timeout: 246 seconds). 
00:29:10 <elliott> 19:48:44: <Gregor> Seems to be special-cased for @messags. 
00:29:12 <elliott> Gregor: It just spell-corrects. 
00:29:21 <pikhq_> Gregor: That's been the standard means of using Mach. 
00:29:28 <elliott> I resolved it sooner, relativity-wise. 
00:29:34 <Gregor> pikhq_: IT'S NOT THE HURD WAY 
00:29:39 <elliott> 20:17:25: <Gregor> 4) ... GNU lightning? 
00:29:39 <elliott> 20:17:37: <Gregor> There aren't really any good JIT libraries, are there :P 
00:29:45 <Gregor> HURD IS A HIRD OF UNIX-REPLACING DAEMONS 
00:29:45 <elliott> Gregor: GNU lightning is pretty good, so is LLVM :P 
00:29:52 <Gregor> GNU lightning is good??? 
00:29:54 <elliott> LLVM is better but probably harder to use. 
00:29:54 <pikhq_> The Hurd way involves not hitting 1.0 for decades. 
00:30:19 <elliott> Racket, GNU Smalltalk and CLISP use it apparently, so it can't be so terrible. 
00:30:28 <elliott> It's probably not very fast though. 
00:30:35 <Gregor> That's probably almost fifteen end users. 
00:30:36 <elliott> "It does not provide register allocation, data-flow, and control-flow analysis, or optimization." 
00:30:55 <elliott> Racket and CLISP are pretty big :P 
00:31:05 <pikhq_> Also. I'm pretty sure all the work on Mach-O was done before Apple bought NeXT. 
00:31:10 <Gregor> elliott: Yeah, I'm bein' a durp. 
00:31:38 <Gregor> pikhq_: I was laughing at how stupid that whole paragraph was, not agreeing with it. Although it is a silly format. 
00:31:54 <elliott> I like the implication that writing a binutils is the HARDEST THING EVR. 
00:32:04 <elliott> Presumably because GNU aren't very good at it. 
00:32:08 <pikhq_> elliott: Not writing a binutils. 
00:32:28 <pikhq_> Which *seems* to be one of the few things that's easy with GNU binutils. 
00:32:48 <pikhq_> The whole thing is based around an object format abstraction library, after all. 
00:33:04 <elliott> 20:42:14: <Gregor> I wonder if there's a crazy mix of options that would cause GCC to compile a single function and output the machine code for it, not in any object file format. 
00:33:12 <Gregor> elliott: We found one. 
00:33:14 <elliott> Gregor: with -S , filtering and gas options, I suspect so 
00:33:23 <elliott> Gregor: But it'll be SO SLOW :P 
00:33:25 <Gregor> No, I'm not going to implement gcc as a JIT, though I desperately want to. 
00:33:40 <Gregor> (GNU lightning) "The available backends cover the x86, SPARC and PowerPC architectures." I hope this at least includes x86_64 ... 
00:33:57 <pikhq_> Bit silly if it didn't. 
00:34:08 <elliott> Gregor: Your template JIT is probably the best you'll get for Fythe without writing something better yourself, I think. 
00:34:16 <pikhq_> x86_64 is easy to target from x86-land if you're not retarded. 
00:34:19 <elliott> I mean, LLVM ain't exactly designed for compiling things tiny bits at a time 
00:34:28 <elliott> Which Fythe practically mandates :P 
00:34:55 <itidus20> im not sure if i made a mistake converting this in notepad but: fuck boob!??? arse shag boob!!! tits butt shag cock fuck boob!!? arse shag boob!! tits butt shag boob cock boob!!? cock! boob!? cock fuck!? boob!!! arse shag boob!! tits butt shag cock fuck!? boob!??! arse shag boob!??? tits butt shag tits!? cock shag!! cock boob!? cock tits!?! cock tits!!! cock fuck! boob cock 
00:34:58 <elliott> Any optimisation pretty much kills that. 
00:35:22 <pikhq_> Aside from trivial ones. 
00:35:28 <Gregor> My goal was to have fastjit be the baseline, and use something else as the optimizing JIT for oft-called functions. 
00:35:32 <Gregor> fastjit itself ain't goin' nowhere. 
00:35:58 <elliott> Sucks to depend on two totally different JITs 
00:36:02 <elliott> Especially interoperability 
00:36:21 <Gregor> SpiderMonkey has two JITs and an interpreter :P 
00:36:53 <elliott> Yeah, but I mean "you have to ensure LLVM works on your machine and links in and also that fastjit works on your machine" vs. "you have to check our two related JITs work on your machine" 
00:37:13 -!- javawizard has quit (Read error: Operation timed out). 
00:37:32 <Gregor> Mmmmm, fair enough, although the slow JIT ought to be optional. 
00:37:40 <elliott> 21:53:08: <oerjan> there is no reliable way to have a > bottom always return True, if it looks at the second argument at all 
00:37:40 <elliott> 21:53:24: <oerjan> _some_ bottoms can be catched, but not all 
00:37:40 <elliott> 21:53:35: <oerjan> and that is not pure code 
00:37:46 <elliott> oerjan: you can do a lot with unamb, mind you 
00:38:07 <elliott> Gregor: Shrug, it's more like one JIT that has two compilers :P 
00:38:09 -!- jcp|other has joined. 
00:38:46 <Gregor> elliott: Are you referring to SpiderMonkey? 
00:39:09 <elliott> Gregor: No, I'm talking about writing your own slow-JIT 
00:40:03 <Gregor> OK, time to implement my fork-to-GCC-JIT! 
00:40:06 -!- jcp has quit (Ping timeout: 252 seconds). 
00:40:32 <Gregor> AKA JWGCCGATI (Just-When-GCC-Gets-Around-To-It compilation) 
00:41:06 -!- cheater has joined. 
00:41:14 <elliott> Does gcc really not have a library after all these years 
00:41:47 <Gregor> Though either way it's still a traditional compiler in the sense that it writes assembly. So even with a library, it's be a slow piece of shit :P 
00:41:49 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 
00:42:04 <elliott> I can't wait until gcc stops being a thing that anyone takes seriously. 
00:42:20 <elliott> Also clang and every other piece of UNIX software. 
00:42:27 <elliott> Wait, that arrow didn't point in both directions. 
00:42:31 <elliott> Darn, I can't put wordsi nto your mouth. 
00:46:43 -!- jcp has joined. 
00:48:53 <oerjan> <elliott> oerjan: you can do a lot with unamb, mind you <-- i don't think that will help make a > bottom work 
00:49:12 <elliott> depends how screwy your ordering is :) 
00:50:30 <Braber01> do I really want to plug my laptop in? 
00:51:11 <oerjan> assuming > is still antisymmetric, a > a and a > bottom need to be different for such an a 
00:51:27 <CakeProphet> Also I was wondering if you including bottom in an Ord instance, or would that require solving the halting problem? 
00:51:30 <oerjan> a >= bottom might work only for a the unique top element 
00:51:50 <oerjan> 's what i was saying you couldn't 
00:52:10 <elliott> yeah, (inf >= bottom) is perfectly doable 
00:52:15 <CakeProphet> oh we're talking about something I asked a while ago? 
00:52:54 <oerjan> elliott: inf has a rather different meaning once partial orders are involved 
00:53:17 <oerjan> although it then does need an argument 
00:54:12 <oerjan> CakeProphet: i logread you, then elliott logread my response to you 
00:54:57 <Braber01> Damnit I want a cake but I'm on weight watchers >:( 
00:55:19 <oerjan> Braber01: some people here have lately taken to misspell things a lot on purpose 
00:56:43 <monqy> im agre with elliott 
00:56:44 <oerjan> which is strange because we also frequently correct our own spelling, and sometimes other's 
00:57:07 <oerjan> CakeProphet: alot is not an #esoteric meme. 
00:57:53 -!- Braber01 has quit (Quit: ZIRC 0.3 - 100% zsh, woot.). 
00:58:24 <oerjan> there are three words in the english language: angry, hungry and aggry. 
00:59:27 <oerjan> i think the misspellings were too much for Braber01 
01:00:01 <elliott> its ok we're just too brilliant 
01:00:11 <elliott> eventually we'll become so brilliant that _nobody_ will be able to stand being in this channel 
01:00:36 <oerjan> btw is elliott alot?  it's suspiciously close 
01:02:11 <oerjan> funny, it's like someone is shouting, but it's being stopped by my spelling filter 
01:03:23 <elliott> today, i write more shiro code for good mycology adventure aftershave cocaine racketeer 
01:04:50 <monqy> can shiro run fungot 
01:04:51 <fungot> monqy: deleting the lines " italy openly propagates irredentistic ideas even in the southern german leagues, which directs, fnord, 
01:05:05 <elliott> i implement everything it wants just bugs??? 
01:10:17 <Sgeo> fungot needs a Homespring style 
01:10:18 <fungot> Sgeo: ' ' he or she' is widespread. universal male is widespread ( though becoming less so). --user:cybbecybbe 21:10, apr 28, 2005 ( utc 
01:11:57 <CakeProphet> are there large corpii of homespring programs? 
01:17:12 <CakeProphet> I don't think a Roman would understand what that means. 
01:17:53 <CakeProphet> lies no such thing. If you go to Rome today it is a ghost town. 
01:18:16 <monqy> are the friendly ghoss 
01:18:59 <monqy> friend ghsot, ghost firend, friendhsip ghost, friendship town 
01:22:59 <oerjan> the place they call rome today is just an amusement park built around the vatican city and based on asterix comics 
01:23:30 <copumpkin> oerjan: it's a pretty grungy amusement park :P 
01:24:00 <oerjan> copumpkin: well how do you explain why they made a clown into "prime minister"? 
01:24:38 <oerjan> it's just a bit of dark grey humor 
01:24:40 <copumpkin> http://www.reddit.com/r/worldnews/comments/k1ndd/berlusconi_vows_to_leave_shitty_italy_in/c2gyesv 
01:39:25 -!- elliott has set topic: It is the 90s and there is time for the requirements of supervision and control of transmissible spongiform encephalopathies, also an Esolang event @ Hel/Finland on 3.10.2011:  https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet | god bless haskell america | 12345678 | http://codu.org/logs/_esoteric/. 
01:41:26 <monqy> god bless haskell america 
01:47:26 -!- GuestIceKovu has quit. 
01:53:10 <CakeProphet> wow how do people get so bad at programming 
01:53:50 <CakeProphet> hey at least I know when to use for loops instead of while loops. 
01:56:45 <elliott> a low-level concept used before people figured out abstraction 
01:57:04 <CakeProphet> and then still used after people figured out abstraction. 
01:57:53 <elliott> only by irresponsible people 
02:02:51 <elliott> Has anyone used Perl's XS to evaluate Perl code from C? 
02:06:43 <CakeProphet> http://search.cpan.org/dist/perl/pod/perlxstut.pod 
02:06:49 <CakeProphet> http://search.cpan.org/dist/perl/pod/perlxstut.pod 
02:07:00 <CakeProphet> http://search.cpan.org/dist/perl/pod/perlxs.pod 
02:07:23 <elliott> It's not helpful; that's showing it the other way around. 
02:07:25 <oerjan> what do you expect from the pod people 
02:07:27 <elliott> IIRC The Camel book has something but I don't want to read it 
02:07:40 <CakeProphet> I'm not entirely sure it would work the other way around. 
02:07:50 <elliott> You can initialise the perl interpreter from C and feed it code. 
02:07:54 <elliott> I just don't remember how. 
02:07:56 <CakeProphet> I mean you would just want to invoke the interpreter in C right? 
02:08:36 <elliott> Perl's C API is always called XS, to my knowledge. 
02:08:42 <elliott> Whatever the controlling process is. 
02:12:28 <elliott> Section 21.4. Embedding Perl (Using Perl from C) 
02:13:13 <elliott> OReilly - Programming Perl.pdf 4 Mb 
02:13:39 <elliott> Dude, I run a secure-ish operating system. 
02:13:54 <elliott> Are you trying to be annoying? 
02:16:57 <pikhq_> He's not using Adobe reader. 
02:17:20 <elliott> http://search.cpan.org/~jesse/perl-5.14.1/pod/perlembed.pod oh this is useful 
02:17:44 <elliott> oh, heh, this has more information than the camel book sample 
02:17:47 <elliott>         PERL_SYS_INIT3(&argc,&argv,&env); 
02:19:08 <CakeProphet> http://perldoc.perl.org/perlembed.html same thing I believe 
02:19:17 <elliott> /usr/lib/perl/5.10/CORE/perl.h oh dear god 
02:19:39 <elliott> oh my god it handles plan9 
02:19:55 <elliott> jesus christ guys i just want to know the return type of perl_construct 
02:20:09 <pikhq_> If it makes you feel better, Configure is autogenerated by something that inspired autoconf. 
02:20:23 <elliott> ./proto.h:PERL_CALLCONV voidperl_construct(PerlInterpreter *my_perl) 
02:21:04 <oerjan> perl_construct has an inconstructible return type 
02:22:01 <CakeProphet> elliott: are you being irresponsible and using loops right now? 
02:22:33 <elliott>         Perl_sys_init3(&argc, &argv, &env); 
02:22:34 <elliott> ok good they're functions here 
02:24:41 <CakeProphet> it looks pretty easy to call perl subroutines actually. 
02:26:03 <CakeProphet> but the example doesn't show you how to pass arguments to the subroutine. 
02:27:36 <CakeProphet> also http://perldoc.perl.org/perlguts.html may be of use here. 
02:28:01 <elliott> Evaluating Perl expressions as scalars and getting the result back. 
02:28:24 <CakeProphet> then yeah perlguts will show you how to convert to-from C-Perl types. 
02:28:24 <elliott> Preferably without maintaining any state between evaluations but it's understandable if that happens. 
02:28:51 <CakeProphet> ...I would think the only way to do that would be to invoke a fresh interpreter each time. 
02:36:30 -!- derrik has joined. 
02:47:21 -!- sebbu2 has joined. 
02:47:21 -!- sebbu2 has quit (Changing host). 
02:47:21 -!- sebbu2 has joined. 
02:49:49 -!- sebbu has quit (Ping timeout: 245 seconds). 
02:51:46 <CakeProphet> I'm going to use map when I just need to apply a single function to a list. 
02:52:45 <Jafet> They don't speak, they hiss 
02:52:59 -!- augur has quit (Remote host closed the connection). 
02:54:07 <pikhq_> But functional programming is unPythonic! 
02:54:31 <pikhq_> (just like closures, garbage collection, and everything but C! :P) 
02:55:16 <Sgeo> You can do functional programming in Python! See? See? I mean, it's ugly, and not recommended, but why would you curse Python for something it can do? 
02:55:35 <pikhq_> It's a bit like Perl but less awful. 
02:55:40 * Sgeo might be becoming an ex-Pythonista 
02:56:01 <Sgeo> Although not sure that Ruby is much better... 
02:56:03 <monqy> I was never a python fanatic 
02:56:11 <pikhq_> Ruby is like Python but more awful. 
02:56:58 <pikhq_> The implementation actually does hacks to prevent GCC from optimising their undefined behavior in undesirable ways. 
02:57:07 <pikhq_> Definitely more awful. 
02:58:02 <Sgeo> It's undefined behavior, why would it matter if it were optimized in some way? Or do you mean C's undefined behavior? 
02:58:36 <Jafet> linux does it too; they're in good company 
02:58:40 <elliott> wtf? /usr/lib/libperl.so.5.10 exists, but -lperl doesn't get it? 
02:59:27 <pikhq_> elliott: -l only looks for .so 
02:59:33 <Sgeo> Well, aren't there other implementations? 
02:59:37 <elliott> pikhq_: what am I meant to do then 
02:59:39 -!- derrik_ has joined. 
02:59:52 -!- derrik_ has left. 
03:00:12 <pikhq_> Also, because Perl is *blithering stupid*, you're not supposed to link it with -lperl at all. 
03:00:32 <monqy> personal insult to cake prohpet 
03:00:49 <pikhq_> IIRC you're supposed to query the interpreter for the path to the libperl file, and make sure to set the rpath to include the path to the libperl file. 
03:00:58 <oerjan> "Haskell is the only language I know of where you can't tell what wheel you just reinvented..." - alpha123 
03:01:11 <elliott> <pikhq_> Also, because Perl is *blithering stupid*, you're not supposed to link it with -lperl at all. 
03:01:15 -!- derrik has quit (Ping timeout: 264 seconds). 
03:01:15 <elliott> elliott@katia:~/Code/shiro$ perl -MExtUtils::Embed -e ldopts 
03:01:16 <elliott> -Wl,-E  -fstack-protector -L/usr/local/lib  -L/usr/lib/perl/5.10/CORE -lperl -ldl -lm -lpthread -lc -lcrypt 
03:01:17 <pikhq_> *By default libperl.so.foo does not go in the library search path*. 
03:01:23 <oerjan> (first comment on http://stackoverflow.com/questions/7223901/haskell-what-monad-did-i-just-reinvent) 
03:01:39 <elliott> Sgeo: http://timetobleed.com/the-broken-promises-of-mrireeyarv/ has information on Ruby's undefined behaviour 
03:01:44 <pikhq_> *Perl. Fucking. Hates. You.* 
03:02:00 <elliott> the above is the documented way to do it 
03:02:05 <elliott> so clearly -lperl is meant to work 
03:02:38 <pikhq_> elliott: Strange, that actually cannot work on out-of-the-box Perl. 
03:02:50 <pikhq_> libperl does not install in the library search path at all. 
03:03:16 <elliott> ok but seriously, i'm working with ghc here, what do i need to pass to ld to link with libperl in some VAGUELY portable awy 
03:04:09 <elliott>   ld-options: /usr/lib/libperl.so.5.10 
03:04:32 <oerjan> ghc + perl now that sounds like a match 
03:04:44 <elliott> oerjan: implementing the PERL fingerprint 
03:05:53 <oerjan> elliott: i sincerely hope that is not required for running fungot. 
03:05:53 <fungot> oerjan: as i have, and it began in 57, as bryant still had his glory days ahead of him at that time. 
03:08:56 <CakeProphet> elliott: assuming eval_pv is how the eval operator is implemented, then you can maintain state between evals. 
03:09:53 <CakeProphet> perlapi seems to seems to suggest that eval_pv is basically like eval. 
03:11:32 <CakeProphet> also maybe perl_construct is not very expensive so that could be used to reset state. 
03:14:05 <CakeProphet> well, maybe not: http://perldoc.perl.org/perlembed.html#Maintaining-multiple-interpreter-instances 
03:17:51 <aspect> Python makes me hate lots of things.  Usually myself, for forgetting how much I hate it in between uses 
03:18:19 <Sgeo> I think I'm using some stupid Ruby IDE just for the editor 
03:18:33 <Sgeo> Erm, editor component 
03:18:57 <CakeProphet> I should probably get an IDE for Python as python-mode in emacs is especially not so great with indents. 
03:19:29 <Sgeo> :/ how difficult could it be to do the right thing with indentation in Python? 
03:19:46 <CakeProphet> well it's just dedenting takes more keystrokes than I would like, basically. 
03:21:07 <CakeProphet> spamming tab a bunch basically cycles through all of the possible indent levels, starting with the highest level 
03:21:32 <aspect> don't you just write some elisp to fix that? 
03:21:47 <CakeProphet> ...well, if I had the time to learn how, sure. 
03:21:56 <aspect> like in vim we might use a macro or a :noremap 
03:22:15 <CakeProphet> usually a backspace does the right thing, but not always. 
03:22:21 <aspect> see, as a vim user I long for the cleanliness of elisp 
03:23:02 <aspect> maybe Zimbu deserves a place in the esolang hall of fame 
03:23:05 <Sgeo> I was hoping to just pass a bunch of numbers to some google API in a URL to get a nice pretty chart 
03:24:01 <elliott> Do you have to free SVs after using them? 
03:24:42 <elliott> Or will destroying a Perl interpreter do that? 
03:24:49 <elliott> The example doesn't free the result of eval_pv. 
03:25:02 <CakeProphet> hmmm... freeing the interpreter would probably do that, yes. 
03:25:46 <Sgeo> cur_value = rand 
03:25:56 <Sgeo> I can't help but thinking how... nonsensical that looks 
03:26:17 <Sgeo> Giving cur_value a random value between 0 and 1 
03:26:43 <CakeProphet> well, that makes sense to me, but only because that's exactly what perl does. :P 
03:27:26 <CakeProphet> if you want 0 or 1 in Perl you'd write int(rand(2)) 
03:27:30 <Sgeo> Erm, didn't mean to imply it's included in Ruby 
03:27:49 <Sgeo> Just that... my Python instincts are yelling at me that I'm just storing the rand function in cur_value 
03:28:31 <CakeProphet> use references, or, uh, Ruby uses symbols or someting right? 
03:30:28 <Sgeo> method(:rand) works, and I think there's syntax sugar for that 
03:31:02 <CakeProphet> I think in most "higher-order functions" you'd pass a block that does the calling. 
03:32:45 <elliott> gah, eval_pv is too limited 
03:33:15 <elliott> I need to specify that I want a scalar result 
03:35:26 <CakeProphet> so it always forces scalar? What if you wanted an AV or HV? 
03:36:16 <elliott> (((x)->sv_flags & (0x00000400)) == 0x00000400 ? ((x)->sv_u.svu_pv) : Perl_sv_2pv_flags(my_perl, x,0,2)) 
03:36:22 <elliott> CakeProphet: then you need eval_sv i guess 
03:36:53 <elliott> hmm, SvPVX is ((x)->sv_u.svu_pv) 
03:36:54 <CakeProphet> er.... is there no constant for 0x00000400? 
03:37:39 <elliott> The backend for the SvPVbytex_force macro. Always use the macro instead. 
03:37:53 <elliott> (I should really write C glue for this but I DO WHAT I WANT) 
03:40:40 -!- MDude has changed nick to MSleep. 
03:41:49 <elliott> dist/build/shiro/shiro-tmp/Shiro/Fingerprints/PERL.o: In function `s2Lr_info': 
03:41:49 <elliott> (.text+0xac): undefined reference to `eval_pv' 
03:41:50 <elliott> dist/build/shiro/shiro-tmp/Shiro/Fingerprints/PERL.o: In function `s2MP_info': 
03:41:50 <elliott> (.text+0x224): undefined reference to `sv_pv' 
03:43:02 <CakeProphet> the api docs mention that perl_eval_pv is deperecated, btw. 
03:43:06 <elliott>     ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ 
03:43:06 <elliott>      ? SvPVX(sv) : sv_2pv_flags(sv, 0, SV_GMAGIC)) 
03:43:10 <elliott> CakeProphet: capital letter 
03:43:44 <elliott> A private implementation of the SvNVx macro for compilers which can't cope with complex macro expressions. Always use the macro instead. 
03:44:17 <CakeProphet> so what are you doing with these fingerprints exactly? 
03:46:33 <elliott> http://catseye.tc/projects/funge98/library/PERL.html 
03:46:40 <elliott> (might need to view source to read) 
03:46:54 <elliott> it exists, CCBI implements it, cfunge implements it, Mycology tests it. so I implement it. 
03:48:04 <elliott> CakeProphet: does this answer your question? 
03:48:15 <elliott> UNDEF: S claims that Perl is already loaded 
03:51:12 <monqy> this perl.hmtl isn't quite workinge... 
03:52:27 <monqy> why does f98 have perl ffi 
03:52:35 <elliott> monqy: because someone wrote it 
03:53:08 <CakeProphet> like.. is it not possible to set a breakpoint in your C? 
03:53:51 <elliott> At least, not a coherent one. 
03:54:15 <CakeProphet> I thought you were using C to interface the perl interpreter to GHC/Haskell. 
03:54:33 <oerjan> > let (n!) = product [1..n] in (10!) 
03:54:34 <lambdabot>   <no location info>: Parse error in pattern 
03:54:48 <elliott> oerjan: that's obviously bunk syntax... 
03:54:49 <CakeProphet> elliott: oh, so that doesn't involve writing actual C code? 
03:54:52 <elliott> > let (!) n = product [1..n] in (10!) 
03:54:54 <oerjan> > let (!) n = product [1..n] in (10!) 
03:55:07 <elliott> foreign import ccall "perl.h perl_alloc" c_perl_alloc :: IO (Ptr CPerlInterpreter) 
03:55:07 <elliott> foreign import ccall "perl.h perl_construct" c_perl_construct :: Ptr CPerlInterpreter -> IO () 
03:55:07 <elliott> foreign import ccall "perl.h &perl_destruct" p_perl_destruct :: FunPtr (Ptr CPerlInterpreter -> IO CInt) 
03:55:07 <elliott> foreign import ccall "perl.h &perl_free" p_perl_free :: FunPtr (Ptr CPerlInterpreter -> IO ()) 
03:55:24 <oerjan> elliott: i was checking if ghc supported it, though, i saw a question on stackoverflow 
03:56:05 <oerjan> i knew about the _using_ it like (10!) but i was not sure if the extension allowed defining it that way too 
03:56:58 <CakeProphet> or is it n-ary because that would be sweet... 
03:57:04 <elliott> using it like that is obviously standard haskell. 
03:57:06 <oerjan> it's a minor adjustment to section syntax 
03:57:38 <oerjan> elliott: not quite, standard haskell wants (10!) to have a function type 
03:57:51 <oerjan> because it desugars to (\x -> 10 ! x) 
03:57:56 <elliott> well that's just an overly draconian standard :P 
03:58:11 <oerjan> well, so ghc relaxes it. 
03:58:21 <Sgeo> Binary Searches should not be going that far off the rails! 
03:59:09 <Sgeo> MY GOAL WITH THIS BINARY SEARCH IS NOT TO FIND THE AVERAGE BETWEEN MY INITIAL BOUNDARIES FOR THIS SEARCH 
03:59:13 * Sgeo decides to bug hunt 
03:59:44 <Jafet> You should re-evaluate your goals 
03:59:52 <quintopia> (his goal is to find a life partner) 
04:00:16 <oerjan> hm (!10) desugars to (\x -> x ! 10) which is the same as flip (!) 10 
04:00:20 <lambdabot> forall (f :: * -> *) a b. (Functor f) => f (a -> b) -> a -> f b 
04:00:36 <oerjan> so what if it used caleskell flip... 
04:01:04 <oerjan> this is not necessarily that much of an improvement. 
04:01:07 <CakeProphet> for some reason my parser enters an infinite loop, but I am not sure what is causing it. 
04:01:16 <CakeProphet> I thought it was binary operators but apparently not. 
04:01:18 <oerjan> CakeProphet: left recursion 
04:01:21 <Sgeo> The distribution looks skewed, as I expect 
04:01:37 <Sgeo> Then again, I can't tell whether a distribution is skewed 
04:02:22 <CakeProphet> oerjan: thats where the first alternative is recursive and descends infinitely before the simpler terms are ever checks, right? 
04:03:16 <CakeProphet> well, it could be, since I didn't actually implement the binary operator code. 
04:03:38 <CakeProphet> just calling a helper function, similar to the one Parsec has. 
04:03:44 <Sgeo> Stupid auto-return 
04:03:55 <Sgeo> I auto-returned the result of resetting the simulation 
04:05:11 <Sgeo> I wasn't getting the results of the simulation 
04:05:24 <Sgeo> Instead getting the "result" of a freshly reset simulation 
04:05:50 <CakeProphet> I don't really understand, if you anted the simulation you could just explicitly return... 
04:05:52 <Sgeo> Maybe I shouldn't be resetting it in the same method that returns the result 
04:06:08 <Sgeo> Yes, but I didn't see that I messed it up 
04:06:22 <oerjan> @hoogle expressionParser 
04:06:23 <lambdabot> Text.Parsec.Expr buildExpressionParser :: Stream s m t => OperatorTable s u m a -> ParsecT s u m a -> ParsecT s u m a 
04:06:23 <lambdabot> Text.ParserCombinators.Parsec.Expr buildExpressionParser :: OperatorTable tok st a -> GenParser tok st a -> GenParser tok st a 
04:06:41 <CakeProphet> Sgeo: oh you're still thinking in Python where assignment doesn't result in anything or whatever, maybe? 
04:06:57 <Sgeo> I don't... think so 
04:07:28 <oerjan> CakeProphet: you're not doing the equivalent of expression = buildExpressionParser table expression, are you?  because that i think would infinitely recurse iirc what that means 
04:08:49 <CakeProphet> I am not recursively evaluating expression 
04:09:34 <oerjan> because that would have been an error 
04:17:00 <elliott> dear perl api an ultimatum 
04:17:03 <elliott> work or i will an kills you 
04:17:11 <elliott> maybe i fail to keep the reference around 
04:21:32 -!- Jafet has quit (Quit: Leaving.). 
04:22:38 <elliott> oh well/ me scraps it for now 
04:42:11 <CakeProphet> ...wat. operator.__and__ apparently cannot and Nones 
04:43:50 <lambdabot>   No instance for (Data.Bits.Bits (Data.Maybe.Maybe a)) 
04:47:34 <Sgeo> {0.0...0.1=>5, 0.1...0.2=>72, 0.2...0.3=>76, 0.3...0.4=>158, 0.4...0.5=>194, 0.5 
04:47:34 <Sgeo> ...0.6=>187, 0.6...0.7=>148, 0.7...0.8=>89, 0.8...0.9=>64, 0.9...1.0=>7} 
04:47:37 -!- augur has joined. 
04:47:50 <Sgeo> There's no way to just paste those results into some Google thingy and see what it looks like, is there? 
04:48:23 <elliott> maybe i should implement MODE, the most painful fingerprint EVR 
04:48:27 <Sgeo> Although I guess it looks very bell curve-y 
04:48:43 <elliott> CakeProphet: view-source:http://catseye.tc/projects/funge98/library/MODE.html look at this shit 
04:48:53 <elliott> The <tt>Q</tt> "Toggle Queuemode" instruction toggles an internal flag called 
04:48:53 <elliott> <i>queuemode</i>.  When queuemode is active, cells are <b>popped</b> off the 
04:48:53 <elliott> stack from the <b>bottom</b> instead of the top.<p> 
04:49:02 <elliott> YES GREAT I LOVE FINGERPRINTS THAT JUST CHANGE THE ENTIRE SEMANTICS OF THE LANGUAGE 
04:51:09 -!- Jafet has joined. 
04:51:20 <CakeProphet> do you currently have a system that allows you to make huge changes to language semantics like that? 
04:51:31 <elliott> i just need to abstract out push/pop but sodjfsdjfoi 
04:51:32 <CakeProphet> I know in Haskell this requires a bit of forethought. 
04:52:06 <elliott> http://www.rcfunge98.com/rcsfingers.html#TRDS 
04:52:21 <elliott> MVRS is multiverse, basically a bunch of fungespaces that shit runs in, http://www.rcfunge98.com/rcsfingers.html#MVRS 
04:52:33 <elliott> and FNGR is just a "switch around loaded fingerprint instructions and shit" fingerprint 
04:52:39 <elliott> it assumes the wrong semantics for fingerprints 
04:52:44 <elliott> fingerprints push each instruction, not the fingerprint as a whole 
04:52:57 <elliott> so basically you have to change the entire fingerprint push/pop system when FNGR is loaded 
04:53:11 <elliott> CakeProphet: there are programs using them, Mycology tests most of them 
04:54:24 <CakeProphet> I see that you want your implementation to be complete, basically. 
04:54:41 <elliott> it could be worse, I need to implement WIND portably 
04:54:49 <elliott> hmm, actually that's not so hard 
04:55:00 <elliott> what will be harder to implement portably 
04:55:04 <Sgeo> Why is what I thought would be a weird distribution normal? 
04:55:11 <Sgeo> Or at least, it looks normal at a glance 
04:55:15 <elliott> "MSGQ"0x44d534751SysV IPC Message Queues(RCS) 
04:55:15 <elliott> "SMEM"0x534d454dSysV IPC Shared Memory(RCS) 
04:55:15 <elliott> "SMPH"0x534d5048SysV IPC Semaphores(RCS) 
04:55:21 <elliott> those will be hard to do portably. 
04:55:25 <elliott> "UNIX"0x554e4958Some Unix access functions(RCS) 
04:55:43 <elliott> I'm sure there's /some/ Windows API to switch user 
04:56:16 <CakeProphet> you should use your perl interpreter for REXP 
04:56:29 <elliott> nah, it's obviously meant to be posix regexps I think 
04:56:51 <elliott> rcfunge fingerprints may suck but I'm not going to misimplement them just to be better 
04:57:06 <elliott> T( -- pid flg)Fork new process 
04:57:06 <elliott> can't wait to do this portably mmm 
04:57:18 <elliott> it's not that bad since i can just like serialise state and spawn but still 
04:57:39 <elliott> doing fork() on Windows is basically impossible 
04:57:45 <elliott> but spawning a process works 
04:59:44 -!- augur has quit (Remote host closed the connection). 
04:59:47 <elliott> I don't have SUBR yet, no. 
05:00:17 <elliott> http://www.rcfunge98.com/rcsfingers.html#MACR 
05:31:05 <shachaf> Hey, people of #esoteric, here's a language for you: http://timmaxwell.org/pages/monad-embed/index.html 
05:31:28 <shachaf> People of #esoteric who are not elliott, feel free to give the author feedback. 
05:31:36 <elliott> Gosh! I have never seen that page before in my life! 
05:32:57 <monqy> a new way of using monads, eh? 
05:38:46 <pikhq_> shachaf: I see you don't want right-by-definition feedback. 
05:39:21 <pikhq_> shachaf: All of elliott's opinions are right, by definition. 
05:39:53 <shachaf> pikhq_: I didn't say elliott shouldn't give feedback. 
05:40:03 <shachaf> In fact, I already told him to do so, in another channel. 
05:40:14 <elliott> I am the Keeper of the Right. 
05:40:15 <shachaf> Asking twice seemed silly. 
05:40:19 <elliott> Nobody else may have the Right. 
05:41:10 -!- ive has quit (Quit: leaving). 
05:41:27 <Sgeo> "When C++ is your hammer, every problem looks like your thumb. 
05:41:54 <oerjan> monqy: shachaf is a shameless cheater 
05:42:38 <shachaf> Ugh, he's going to get highlighted now. 
05:42:59 <oerjan> shachaf: that is... a problem? 
05:43:17 <elliott> Sounds like a problem to me. 
05:43:46 <shachaf> This channel is actually for esoteric people, not esoteri languages, right? 
05:43:51 <shachaf> That would explain the assortment you've got in ehre. 
05:43:55 <oerjan> shachaf: fouwf avkugefreølevf abekh 
05:44:07 <elliott> shachaf: That's an unfortunate result of the latter. 
05:44:13 <elliott> Well, sometimes unfortunate. 
05:44:37 <CakeProphet> can someone enlighten me as to the difference between /usr/lib and /usr/local/lib? 
05:44:46 <elliott> CakeProphet: Former is OS, latter is system. 
05:44:48 <oerjan> yes, there is a local in there 
05:44:55 <elliott> OS manages former, system administrator latter. 
05:45:05 <oerjan> also an extra /, although its position is ambiguous. 
05:45:31 <oerjan> hm strictly speaking it could be an extra ocal/l 
05:45:35 <fizzie> The latter is for diet versions of libraries. (lo-cal, yo see.) 
05:46:18 <fizzie> CakeProphet: They're like the Power Glove. 
05:47:57 <oerjan> or perhaps the _second_ l is the original, making it an extra loca and /l 
05:48:48 <quintopia> but there is no doubt as to who the original pedant-for-hire of #esoteric is 
05:49:25 <oerjan> and also, why haven't i been paid 
05:49:41 <quintopia> oerjan: you, of course. you would never miss an opportunity to state the obvious for humor value, and then discourse about it for ten more minutes 
05:50:01 <quintopia> (and occasional real ones from gregor) 
05:50:39 <aspect> that's a really weird smiley you guys use 
05:50:49 <elliott> we're frowning in both directions 
05:50:55 <elliott> it's due to our hyper-dimensional nature 
05:52:07 <oerjan> i did not know strokes could do that 
05:53:05 <fizzie> oerjan: Maybe it was a... keystroke? 
05:53:52 <quintopia> no, i mean, ever since that awful billy squier song came out, i've been unable to truly smile 
05:54:13 <oerjan> oh.  good like i have no idea what song you are referring too, then. 
05:54:53 <oerjan> that sounds like it could be readable 
05:55:00 <cheater> <shachaf> I am now cheater. < NOOOOOOOOOOOOOoooooooooooooooooooooooooooooooooooooooooooooooo 
05:55:01 <lambdabot> cheater: You have 1 new message. '/msg lambdabot @messages' to read it. 
05:55:17 <elliott> shachaf would make a nicer cheater than the one we have now. 
05:55:21 <elliott> Can we apply for a transfer? 
05:55:33 <quintopia> surely someone here remembers that song...it was on the small soldiers soundtrack...surely someone remembers that movie...it was probably worse than the son 
05:55:34 <elliott> Oh, there's a spider here. Hi spider. 
05:55:37 <oerjan> but brain transfers are so complicated 
05:55:50 <elliott> quintopia: wow i think i remember small soldiers........ 
05:55:56 <shachaf> elliott: Sorry, I'm deeply embedded in #haskell-blah as my off-topic channel of choice. 
05:55:59 <shachaf> Sadly cheater is in there too. 
05:56:18 <elliott> shachaf: He's quieter in here. Just sayin', we have benefits. 
05:56:25 <elliott> And a great retirement plan, too. 
05:56:36 <shachaf> elliott: On the other hand you talk about esoteric languages all the time. 
05:56:40 <quintopia> elliott: you remember it existing or you remember the movie itself? if the latter, my many condolences. 
05:56:45 <shachaf> elliott: In #haskell-blah, C++ is considered an esolang. 
05:56:52 <elliott> shachaf: Where on earth did you get the perception that we tend to be on-topic? 
05:56:58 <elliott> Apart from my Shiro babbling which is more about the Haskell. 
05:57:10 <elliott> quintopia: A little bit of both. 
05:58:24 <monqy> is haskell-blah good 
05:58:50 <elliott> It lacks the Holder of the Rightness. 
06:02:04 * shachaf wonders if #esoteric-blah etnds to talk about esoteric languages. 
06:02:18 <elliott> #esoteric-blah is usually used for botspam. 
06:02:21 <elliott> Or at least it was, years ago. 
06:02:37 <elliott> -ChanServ- 1     freenode-staff         +voOtsriRfAF [modified 2 years, 12 weeks, 4 days, 20:53:47 ago] 
06:02:40 <elliott> Also freenode stole it off me? 
06:03:20 <shachaf> Your nick has only been registered for <a year. 
06:03:32 <elliott> shachaf: Yes, because I only got it back then. 
06:03:58 <oerjan> elliott: i think #esoteric was changed to freenode-staff too 
06:04:00 <quintopia> shachaf: he has been named "elliott" for like 16 some-odd years though. fun fact. 
06:04:09 <elliott> shachaf: Previously I had it for ages, then someone managed to steal it off me (with some kind of bot, said the freenode staffer; I'm not sure I buy that). 
06:04:22 <elliott> But now it is back to its rightful owner, me. 
06:04:29 <elliott> All other elliotts can just suffer. 
06:04:44 <elliott> Elliotttttttttttttttttttttttttttttttttttttttt. 
06:04:50 <shachaf> elliottt is the best of all the elliots. 
06:05:05 <elliott> I wonder whether I should try and sell this to elliotttcable again. 
06:05:08 <monqy> are there any other elliottts 
06:05:09 <elliott> He seemed quite willing to buy. 
06:05:19 <elliott> He didn't seem to like the sound of five hundred dollars though. 
06:05:54 <shachaf> It's the way of the future. 
06:06:08 <elliott> I'm not sure his political leanings are aligned with that. 
06:06:32 <elliott> (Though I certainly don't claim to understand the American right-wing.) 
06:08:06 <elliott> I wonder who the richest bitcoiner is, in terms of bitcoins. 
06:08:15 <elliott> That should be calculable from the public data, I think. 
06:10:04 <elliott> Also: Does nobody care about any actually interesting alternative currencies now that Bitcoin is so big? I haven't seen anyone mention Ripple in years. 
06:11:44 <cheater> #haskell-blah is working on implementing one 
06:12:06 <elliott> I'm sure it'll do wonderfully. 
06:13:28 <quintopia> so bitcoin is not actually interesting? i think "catching on enough to work" is damn interesting. 
06:14:22 <elliott> FSVO work. Anyway, it's essentially a digital gold standard, which is incredibly boring. 
06:14:55 <elliott> "Everyone agrees that this scarce but useless resource is incredibly valuable, feels smugly superior over fiat currencies for all eternity" is a yawn-inducing story. 
06:17:15 <quintopia> the only reason i yawned is because you used the word yawn and seeing yawn in a sentence when you are in a yawny mood is automagically yawn-inducing despite the story actually being pretty cool and not boring at all yawn. 
06:18:26 <elliott> So how do bitcoins fit into your post-apocalyptic libertarian paradise? 
06:19:29 <quintopia> i'm going to collect a whole bunch of them and bury them on a private island where i will become benevolent dictator of Zombie-Free Land 
06:19:55 <quintopia> so called because it will the be the only place free of zombies 
06:26:55 -!- sllide has joined. 
06:33:46 <lambdabot> Numeric floatToDigits :: RealFloat a => Integer -> a -> ([Int], Int) 
06:33:57 <elliott> oerjan: what's a nice way of (init xs, last xs) 
06:34:32 <oerjan> i'm not convinced there is a faster one 
06:34:42 <elliott> oerjan: um not scanning the list twice? 
06:35:17 <elliott> foo [x] = ([], x); foo (x:xs) = let (xs',y) = foo xs in (x:xs',y) 
06:36:06 <elliott> actually it's (reverse (init xs), last xs) but I doubt that can be optimised more 
06:36:19 <elliott> foo [x] = ([], x); foo (x:xs) = let (xs',y) = foo xs in (xs'++[x],y) 
06:36:56 <oerjan> elliott: um of course that can duh 
06:37:11 <oerjan> (reverse (init xs), last xs) is tail recursive 
06:37:46 -!- Patashu has joined. 
06:38:11 <oerjan> foo l = foo' l []; foo' [x] r = (r, x); foo' (x:xs) r = foo' xs (x:r) 
06:42:08 <elliott> oerjan: now design me a more efficient stack structure :) 
06:43:38 <oerjan> <elliott> oerjan: now design me a more efficient stack structure :) <-- there is an oxymoron in that sentence somewhere 
06:44:42 <monqy> implementing funge98 sounds painful, a thing i do not want to do 
06:44:48 <olsner> oerjan and design maybe 
06:45:05 <oerjan> olsner: also, efficient 
06:45:08 <monqy> maybe i would be fine with implement an old befunge,,, one without pain,, 
06:45:35 <elliott> oerjan: but my current one is so lame :( 
06:45:44 <elliott> data StackElems = (:-) {-# UNPACK #-} !Value StackElems deriving (Show) 
06:45:44 <elliott> it's literally just a micro-optimised stream type 
06:46:01 <elliott> so i can know how many real values are present 
06:46:06 <oerjan> elliott: NOT MY FIELD OF EXPERTISE 
06:46:17 <elliott> I should probably try Data.Sequence 
06:46:30 <elliott> it doesn't seem like it'd be a massive benefit 
06:46:56 <fizzie> > let f = span (not . null . tail) . filter (not . null) . tails; g x = let (a,b) = f x in (head <$> a, head . head $ b) in g [1,2,3,4,5] 
06:47:05 <fizzie> I'm sure that's the efficientest. 
06:47:35 <elliott> fizzie's writing completely point-free functions; is he off the: deep end? Experts disagree. 
06:47:45 <elliott> But the prevailing opinion is that he has no: hope now. 
06:47:56 <elliott> And that his indoctrination is: complete. 
06:47:59 <elliott> Am I doing the colont hing right? 
06:52:31 -!- GreaseMonkey has joined. 
06:59:36 -!- Patashu has quit (Ping timeout: 252 seconds). 
07:07:13 <fizzie> Actually now that I look at it, maybe it could be a bit more pointless. 
07:07:15 <fizzie> > let f = ((head <$>) *** head . head) . break (null . tail) . tails; in f [1,2,3,4,5] 
07:14:45 <fizzie> @hoogle (a -> b) -> (c -> d) -> (a,c) -> (b,d) 
07:14:46 <lambdabot> Data.Graph.Inductive.Query.Monad (><) :: (a -> b) -> (c -> d) -> (a, c) -> (b, d) 
07:14:56 <fizzie> What an obvious place for it. 
07:15:08 <fizzie> Also that's one angry-looking operator. 
07:15:14 <lambdabot> forall (a :: * -> * -> *) b c b' c'. (Arrow a) => a b c -> a b' c' -> a (b, b') (c, c') 
07:15:26 <elliott> I mean, it's an okay operator, for functions. 
07:16:46 <monqy> are (|||) or (+++) ever useful 
07:17:02 <lambdabot> forall (a :: * -> * -> *) b d c. (ArrowChoice a) => a b d -> a c d -> a (Either b c) d 
07:17:09 <lambdabot> forall (a :: * -> * -> *) b c b' c'. (ArrowChoice a) => a b c -> a b' c' -> a (Either b b') (Either c c') 
07:17:57 -!- sllide has quit (Read error: Connection reset by peer). 
07:18:05 <monqy> I can sort of imagine them being useful 
07:18:11 <monqy> for functions of course 
07:18:59 <lambdabot> forall a c b. (a -> c) -> (b -> c) -> Either a b -> c 
07:19:19 <oerjan> for functions, ||| is either it seems 
07:20:37 <monqy> back to only imagining about +++ 
07:25:01 <elliott> hmm, this could surely be expressed more nicely... 
07:26:23 <elliott> I'm just trying to express a really simple game in FRP, and I have this really unsatisfying expression of gravity that depends on a game tick event 
07:26:48 <elliott> player :: Vec -> Behavior Player 
07:26:49 <elliott> player pos = accumB (Player pos (0,0)) (gravity <$ tick) 
07:26:49 <elliott>   where gravity (Test p v) = Test (p .+. v) (v .+. (0,1)) 
07:26:56 <elliott> and i'm just thinking......can this be done.......more elgelgantly..... 
07:27:37 * oerjan learns something surprising about the andromeda galaxy http://spluch.blogspot.com/2007/01/size-comparison-of-andromeda-galaxy-and.html 
07:28:12 <oerjan> monqy: +++ is sort of dual to *** 
07:28:38 <monqy> but I'v enever had to do anything like that to eithers 
07:28:46 <monqy> so it is all up to imagineation 
07:29:40 <olsner> oerjan: wow, that's cool 
07:29:51 <monqy> i wish it was easily visible 
07:30:01 <monqy> now i want to see it :( 
07:32:30 <monqy> i want frogs in my night sky 
07:38:10 <monqy> i wish i knew frp ;_; i a,m try frp soonbut finishing other thigns first 
07:41:19 <elliott> player :: Vec -> Discrete Player 
07:41:19 <elliott> player initialPos = Player <$> pos <*> vel 
07:41:20 <elliott>   where pos = accumD initialPos ((.+.) <$> changes vel) 
07:41:20 <elliott>         vel = accumD (0,0) (collision $> (.+. (0,1))) 
07:41:20 <elliott>         collision = (/= (9,9)) <$> changes pos 
07:41:20 <elliott> ok this is starting to get better... 
07:41:29 <elliott> I guess it needs to take a list of things it can collide with... 
07:42:37 <monqy> CakeProphet: hi what 
07:42:51 <CakeProphet> monqy: just me trying to write functional code in Python. 
07:43:01 <lambdabot> forall a. (a -> Bool) -> [a] -> Bool 
07:46:36 <monqy> would none be something like (fmap (fmap not) any) 
07:46:36 <lambdabot> forall a. (a -> Bool) -> [a] -> Bool 
07:47:27 <elliott> player :: Vec -> Discrete Vec -> Discrete Entity 
07:47:27 <elliott> player initialPos collider = Entity <$> pos <*> vel 
07:47:27 <elliott>   where pos = accumD initialPos ((.+.) <$> changes vel) 
07:47:27 <elliott>         vel = accumD (0,0) (changes falling $> (.+. (0,1))) 
07:47:30 <elliott>           (\p q -> p .-. (0,1) /= q) 
07:47:36 <elliott> this looks right but is wrong :( 
07:48:27 <monqy> "a really simple game" - elipt 
07:48:41 <monqy>  - a few minutes ago 
07:48:43 <CakeProphet> similar to the one we were discussing before? 
07:49:21 <CakeProphet> I am suspicious of things so vaguely named. 
07:50:00 <oerjan> eek, an entity in the channel 
07:58:09 -!- oerjan has quit (Quit: Bye!). 
08:14:03 -!- nooga has joined. 
08:23:46 <CakeProphet> you know a library has bad code when I can rewrite it to be faster. 
08:30:30 <CakeProphet> uh, is there even such a thing as a left-associative prefix unary operator? 
08:31:41 <shachaf> !!x isn't necessarily equal to x. 
08:32:13 <shachaf> No, just referring to a #haskell discussion. 
08:32:38 <elliott> It's like a #haskell away from #haskell in here. 
08:32:43 <elliott> God bless haskell america. 
08:33:13 <lambdabot> Local time for elliott is Thu Sep  8 09:34:00 
08:33:30 <monqy> The class method [...] mentions none of the type variables of the class [...] When checking the class method: [...] In the class declaration for [...] ;________; 
08:33:36 <elliott> I'm... not sure how much I trust this computer's clock. 
08:33:45 <lambdabot> Local time for monqy is Thu Sep  8 01:35:07 2011 
08:33:47 <lambdabot> I live on the internet, do you expect me to have a local time? 
08:36:17 <elliott> Car Crush II is a thrilling high speed 2-D driving 
08:36:17 <elliott> game. This game has got new concepts and ideas. Again made in QBASIC and DirectQB. You have to drive through an extremely challenging track and play well enough to achieve a high score. Enemy cars in the game are extremely dangerous. They will try to slam into your car and inflict serious damages, so be a bit careful. 
08:36:38 <elliott> "be a bit careful" is definitely the best part. 
08:36:46 <elliott> Not too careful. Just a bit. 
08:37:37 <monqy> so i'm considering using not using a typeclass for this thing but I'm afraid it would get messier 
08:37:55 <elliott> typeclasses are never the answer don't do it n;o 
08:38:02 <elliott> (Typeclasses are sometimes the ansewr.) 
08:38:22 <monqy> it would probably be better to use a normal record but...mess... 
08:39:14 <monqy> i want multiple ui ends for a thing and the signature is right now a typeclass 
08:39:41 <elliott> today on esoteric: monqy attempts to be as vague as possible so that nobody can help him 
08:40:05 <elliott> would you have to create a new dummy type just so you can make an instance 
08:40:14 <monqy> yes that's what i'm doing right now 
08:40:25 <monqy> is there any way to clean it up 
08:42:08 <monqy> hard to describe :( 
08:43:44 <monqy> its incomplete :( I'm just worried about having to pass the record around everywhere in the cases where the type system would do it if it's a class?? 
08:43:59 <monqy> the first three lines 
08:44:00 <monqy> class UI a where type Key a :: * getKey :: IO (Key a) 
08:44:04 <monqy> oh no it got condensed 
08:44:26 <elliott> monqy: since you have to do 
08:44:39 <elliott> monqy: you would have to pass around the dummy Gtk value _anyway_ 
08:45:01 <elliott> what's with the Key thing though, sounds like you could eliminate that 
08:45:32 <monqy> the next line might explain it 
08:45:36 <monqy>   keyToCommand :: Key a -> Command 
08:46:02 <monqy> e.g. hscurses represents keys differently than gtk?? 
08:46:09 * elliott diagnoses you with overcomplicating it syndrome 
08:46:16 <monqy> what should i do help 
08:46:20 <elliott> since you can't examine values of (Key a) except via the other methods 
08:46:27 <elliott> for instance that class is equivalent to 
08:46:33 <elliott> class UI a where getKey :: IO Command 
08:46:38 <elliott> (note lack of "a" occurring because it's dummy) 
08:46:43 <elliott> data UI = UI { getKey :: IO Command } 
08:46:47 <elliott> obviously a key can do somewhat more maybe 
08:46:58 <elliott> but that's fine, just define an abstract key type that would be all the class methods taking (Key a) 
08:47:05 <elliott> data Key = Key { keyName :: String, keyCommand :: Command } 
08:47:09 <elliott> data UI = UI { getKey :: IO Key } 
08:47:51 <monqy> the reason i had it that way was becuase i was afraid of the pattern (keyToCommand <$> getKey) because i am irrational fears 
08:48:19 <elliott> how does that help you avoid that pattern? 
08:48:23 <elliott> that gives you that pattern exactly 
08:48:26 <elliott> that's the only way to use yours 
08:48:52 <elliott> but yeah seriously, the point is that your library can never examine the (Key a) values, so it's identical, from your point of view, to a record that contains the results of every function you could apply to it, from the class 
08:48:58 <monqy> i think i was thinking defining it generally for UI a?? i'll simplify it anyway 
08:49:05 <elliott> and if you create that record, you'll realise that you never actually use the a in UI 
08:49:09 <elliott> and it can be a trivial data type 
08:50:05 <monqy> well there are other parts too...and i'm afraid if i simplify all of them i'll lose valauble things...or have to duplicate more code than with that example 
08:50:35 <monqy> ending up making the sad empty type anyway and type families 
08:50:50 <elliott> monqy: http://sprunge.us/gDXW 
08:51:01 <elliott> monqy: "lose valuable things" <-- how can you? the translation is literally an isomorphism 
08:51:19 <elliott> it is impossible to lose anything because everything you could do with the overcomplicated, awkward design is possible with the data type design 
08:51:45 * elliott transformed a typeclass over a dummy empty type with type families into a two-element data type with no existentials in Shiro and it helped things massively 
08:54:38 <elliott> monqy: basically if you use the version which requires: a dummy empty data type being passed around everywhere; pointless type families; more compliacted error messages; longer code to implement a UI 
08:54:41 <CakeProphet> this debug output is getting pretty furious. 
08:54:57 <elliott> monqy: over the identical-in-the-literally-identical-sense, simple record types that cannot possibly longer your code 
08:55:12 <monqy> i;m going to use the records one don;t worry 
08:55:32 <monqy> right now i am just being sad about not thinking of useing more records than one; _; 
08:55:37 <elliott> THE WORRYING WILL NEVER STOP 
08:55:41 <CakeProphet> typeclasses are still useful if you want other data types to interface with your code easily. 
08:55:46 <elliott> monqy: IT IS OK I HAD TO UNLEARN IT TOO 
08:55:57 <elliott> CakeProphet: That's... well, it's a sentence. 
08:56:34 <elliott> monqy: I think the hardest part of Haskell is forcing yourself to not try anything fancy at all ever until you try functions and data types. 
08:57:15 <CakeProphet> for example, Ord is nice to have because you can just pass your types into any Ord-accepting function, instead of wrapping it in some ord structure. 
08:57:44 <elliott> typeclasses are not completely useless? WOW REALLY :P 
08:57:57 <monqy> is cakeprohpet aware of the context i suspect not..... 
08:57:58 <CakeProphet> ...yes I'm just discussing HOW they are useful. :P 
08:58:20 <CakeProphet> not the specific problem no. Just that you guys are talking about typeclasses and data types being isomorphic. 
08:58:41 <elliott> please...you have no idea what the context is at all stop... taking things we say out of context and trying to disprove them 
08:58:56 <CakeProphet> .......I am not trying to disprove anything? 
08:59:29 <monqy> then why are you saying 
08:59:48 <CakeProphet> to like, I dunno, talk about it in detail? 
09:00:03 <monqy> it's funny because that wasn't what we were talking about 
09:00:22 <monqy> also: since when wasn't it??? 
09:02:26 * CakeProphet does not say things on this channel with the intent of always refuting or proving someone else wrong. 
09:05:09 <CakeProphet> in any case, elliott mentioned that typeclasses can be translated to ADT and that in many cases it simplifies the design. I was providing an example of where the opposite is true. That's... pretty much all. 
09:05:16 <elliott> i never mentioned that sorry 
09:05:20 <elliott> i was talking about one specific case 
09:11:57 -!- CakeProphet has set topic: intelectrical property | It is the 90s and there is time for the requirements of supervision and control of transmissible spongiform encephalopathies, also an Esolang event @ Hel/Finland on 3.10.2011: https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet | god bless haskell america | 12345678 |  http://codu.org/logs/_esoteric/. 
09:12:05 <CakeProphet> why is 9 and 0 excluded from the number list? 
09:13:05 <CakeProphet> I assume the reason they're up there is because elliott's number keys are broken. 
09:13:43 <monqy> why doesn't 0 on the left of 1 anyway 
09:13:46 <monqy> this has bugged me forever 
09:14:11 -!- ais523 has joined. 
09:14:14 -!- ais523 has quit (Changing host). 
09:14:14 -!- ais523 has joined. 
09:14:27 <monqy> how is it relevant 
09:14:33 <CakeProphet> maybe if I were like an accountant or something 
09:15:08 <monqy> that sounds like hell 
09:15:40 -!- Patashu has joined. 
09:15:42 <CakeProphet> it's not too different from what programmers do... 
09:15:54 <elliott> it's not too different from what programmers like you do, maybe 
09:16:01 <CakeProphet> except we have to think about what we're typing. 
09:16:22 <monqy> thinking a smaller difference than typing is a similarity 
09:16:27 <monqy> the wonderful world of hell 
09:17:42 <CakeProphet> elliott: I'm not really sure that makes any sense, but I don't really appreciate it either. 
09:18:30 <elliott> Well, if you think programming is like that, you can't be doing very interesting programming. 
09:18:51 <CakeProphet> it's similar in that you are confined to one place typing for hours 
09:19:28 <monqy> but that's not the hellish part 
09:19:30 <CakeProphet> programming is interesting. why else would I be here? 
09:20:02 <monqy> programming is usually fairly awful, things not doing what I want them to do 
09:20:12 <CakeProphet> monqy: programming can be its own special hell. :) 
09:20:30 <monqy> that's when people make me do things I don't want to do 
09:20:59 <monqy> people intentionally vague, _perhaps not vague enough_ 
09:21:05 <CakeProphet> but if you have a degree of pain tolerance, then even that sort of programming can be enjoyable. 
09:21:58 <monqy> I'm scared of that 
09:22:11 <CakeProphet> it's really not so bad, you just can't be so stingy. :P 
09:22:24 <monqy> I guess there might be a sort of joy in some cases, but it is a very bad joy 
09:23:11 <CakeProphet> if you have the money or the welfare state for that. 
09:23:22 <monqy> academia scares me too 
09:24:26 <CakeProphet> monqy: well, then there's always doing something amazing that makes you rich or at least somewhat well-off. 
09:27:24 <CakeProphet> monqy: well if you go into academia you could always design a language or something. 
09:27:50 <monqy> would it be a good language 
09:28:03 <monqy> would it be new and exciting and fresh 
09:28:23 <monqy> would it solve problems 
09:28:23 <CakeProphet> the idea with academia is that you produce original research. 
09:28:35 <monqy> I'm afraid of not being cool enough for that 
09:28:53 <monqy> I'm also afraid of parts of academia that aren't that 
09:29:00 <Patashu> if you know of something that makes you think 'surely there's a better way!' 
09:29:01 <CakeProphet> DON'T YOU SEE? YOUR FEAR IS WHAT SHACKLES YOU, SIR. 
09:29:05 <Patashu> and you feel strongly about it 
09:29:16 <monqy> now i have to go into academia 
09:29:40 <CakeProphet> well it's that develop practical software of some kind. 
09:29:58 <CakeProphet> or find a different source of income and program as a hobby. 
09:30:24 <monqy> everything is terrible 
09:30:36 <monqy> maybe i will make a living off of being dead 
09:31:14 <CakeProphet> maybe this guy will allow me to use him as a reference, so that I can get a better paying job. 
09:31:23 <CakeProphet> instead of my current zero work experience state. 
09:31:41 <monqy> work experience terrifies me 
09:32:01 <CakeProphet> you can use open source experience on a resume, if you're worried about how to get started. 
09:32:17 <CakeProphet> or freelance work, which is the route I'm going. 
09:38:37 <shachaf> Yo elliawtt, I heard u mad, so I put all the things in your things, so u can mad while u mad? 
09:40:01 <elliott> shachaf: It's ok; now _you_ hate yourself. 
09:40:23 <shachaf> elliott: No, as a matter of fact, I'm rather pleased with myself. 
09:40:45 <shachaf> ...I suppose that's not strictly disjoin from self-hatred. 
09:40:51 <elliott> But eventually, you will feel the virus inside you. You will realise the horror you have caused. 
09:41:01 <elliott> And it will evaporate your sense of self-worth. 
09:41:11 <elliott> Or at least this is what _should_ happen to people who say u mad. 
09:41:29 <shachaf> Wow, you're right. It's happening already. 
09:41:33 <Patashu> 'u mad' is possibly the worst internet meme 
09:42:03 <Patashu> unless someone knows of a meme more engineered towards debate ending 
09:42:39 * shachaf realizes he's brought himself down to cheater's level. 
09:43:19 <elliott> shachaf: Enjoy your self-destruction. 
09:43:34 * shachaf will take elliott down with him. 
09:44:18 <cheater> < totally not mad. you sai i'm mad? u mad? aargghhgh 
09:44:25 <shachaf> elliott: What's your localtime? 
09:44:41 <elliott> Mad mad mad mad, u, mad u, mad mad. 
09:45:26 <elliott> Well, we're reaching new heights of discourse here. 
09:45:35 <elliott> If height is measured by seeing how low something's sunk. 
09:45:40 <cheater> thank you shachaf for this interesting experience. 
09:46:07 <shachaf> Universal mutually assured destruction. 
09:46:51 <elliott> I wonder if there's a meme so bad that it literally does cause complete mental breakdown in anyone who uses it, but spreads so rapidly that they use it anyway. 
09:46:52 <monqy> not paying attention 
09:46:59 <elliott> (Oblig. joke answer: religion) 
09:47:19 -!- Jafet has quit (Ping timeout: 245 seconds). 
09:47:24 <shachaf> elliott: That depends on what you call "mental breakdown". 
09:47:38 <shachaf> Religion is in many ways beneficial to its host. 
09:47:49 <elliott> Note the "joke" part of "oblig. joke answer" :P 
09:48:01 -!- Jafet has joined. 
09:48:02 <ais523> religion does wonders in activating the placebo effect 
09:48:20 <elliott> Hello ais523, u mad this fine day? 
09:48:23 <CakeProphet> elliott: hey I disagree with your very serious answer. 
09:48:32 <elliott> It's like a rash. I must rip off all my skin. 
09:48:33 <cheater> as well as in unifying the masses by limiting their potential severely 
09:48:37 <ais523> incidentally, there was an experiment recently in which people with irritable bowel syndrome were given placebos, and told they were placebos but would work anyway 
09:48:40 <ais523> and they did indeed work anyway 
09:48:54 <monqy> elliott: maybe this...is your answer... 
09:49:12 <ais523> the scientists running the experiment were pretty surprised 
09:49:18 <cheater> ais523, irritable bowel has a strong psychological element though 
09:49:19 <ais523> perhaps the participants just didn't know what a placebo was 
09:49:20 <shachaf> ais523: Did they test this by using a control group and giving them placebos? 
09:49:21 <elliott> I wish the placebo effect worked for really useful things. 
09:49:28 <ais523> cheater: it does, that's why they were testing on that 
09:49:31 <cheater> it's not like it would cure a bacterial infection i think 
09:49:35 <elliott> Like, curing cancer by placebo. 
09:49:38 <elliott> That would be really useful. 
09:49:40 <ais523> shachaf: tests /of/ the placebo effect typically are compared to not using anything at all 
09:49:41 <CakeProphet> elliott: perhaps one could treat air as a placebo 
09:49:53 <elliott> CakeProphet: One could do that, if one were trying to make no sense at all. 
09:49:55 <CakeProphet> elliott: and then breathing automatically invokes a placebo effect of whatever desired. 
09:50:02 <shachaf> ais523: Note the "joke" part of elliott's "oblig. joke answer" above. 
09:50:05 <cheater> i'm sure you've you seen children in africa with stomachs full of air 
09:50:14 <elliott> shachaf: Does that enable joke mode for the rest of eternity? 
09:50:21 <shachaf> elliott: Just for this channel. 
09:50:25 <ais523> shachaf: I'm not discussing elliott's answer 
09:50:28 <elliott> Well, that's been on since the start. 
09:50:43 <shachaf> Hey, you're ais523 from #nethack. 
09:50:51 <cheater> i have a leftover slicehost VPS. can i use it to run DF? 
09:50:53 <ais523> so the fact that elliott made a joke doesn't cause everything said after that in the channel to be humour value only 
09:50:56 <elliott> There's so many ais523s going around. 
09:51:02 <CakeProphet> elliott: it makes just as much sense as a sugar pill creating a placebo effect... 
09:51:07 <monqy> I saw an ais523 over there too 
09:51:20 <ais523> shachaf: luckily both channels are on Freenode, so it's kind-of easy to verify I'm the same ais523 in each case 
09:51:23 -!- derdon has joined. 
09:51:27 <ais523> and I know of toft, but haven't interacted with him/her much 
09:52:25 <shachaf> At any rate, I, too, was making a joke. 
09:52:33 <shachaf> preflex isn't in this channel. :-( 
09:52:52 <elliott> Nor is mauke. Get him back. 
09:52:55 <ais523> elliott: hey, I think shachaf may be someone who can be placed in a channel with both you and Vorpal and all three of you won't get each other's jokes 
09:52:57 <elliott> Does preflex follow mauke around everywhere? 
09:53:06 <elliott> An IRC pet bot. That's adorable. 
09:53:17 * ais523 pats fungot on the head 
09:53:17 <fungot> ais523: 6. as seen above, any attempt to insert them. user:thatsothatso 01:29, 18 september 2006 ( utc 
09:53:31 <monqy> I used to have a pet bot, but then it died, because i killed it 
09:53:32 <ais523> hmm, looks like it's in wikipedia mode 
09:53:33 <elliott> fungot's chained to a stick because of its volatile nature. 
09:53:33 <fungot> elliott: it has come under criticism for it. --user:ghcoolghcool 06:15, 28 november 2007 ( utc))) 
09:53:48 <monqy> isn't fungot in other channels too 
09:53:49 <fungot> monqy: there seems to be about wilson, but there are many points worth mentioning that eisenhower was facing fnord that november and wanted everything looking smooth and fnord. i have created the universe. though buddhas are skillful in helping all fnord beings, their power is limited by the fnord and the fnord. 
09:53:59 <CakeProphet> monqy: if only there were some way to check. 
09:54:03 <ais523> haha, the sigs don't get fnorded? 
09:54:11 <ais523> presumably because they're repeated so much 
09:54:21 <fungot> Selected style: europarl (European Parliament speeches during approx. 1996-2006) 
09:54:25 <monqy> I think fungot is in #scheme? I remember I visited there and fungot was therE?? 
09:54:25 <fungot> monqy: unfair practice occurs when an airline that has made the european parliament around two years ago, the sequence of responses is correct. 
09:54:42 <elliott> shachaf: A monster... of boringness... and despair. 
09:54:44 <monqy> whois doesn't work like that 
09:54:44 <ais523> someone who typically idles in this channel 
09:54:47 <ais523> although he isn't here atm 
09:54:56 <monqy> CakeProphet: whois doesn't work like that here 
09:55:12 <ais523> elliott and Vorpal are known for not understanding the other's brand of humour 
09:55:21 <elliott> I _understand_ Vorpal's, it just isn't funny. 
09:55:23 <CakeProphet> monqy: I recall previous times whois would show me all channels. 
09:55:25 <elliott> Vorpal is the one who goes eh a lot. :p 
09:55:47 <elliott> shachaf: I, um, do you know AnMaster? I am really having trouble explaining Vorpal, I mean, a priori. 
09:55:53 <shachaf> elliott: It sounds to me like u just mad 
09:56:09 * shachaf is not familiar with AnMaster 
09:56:16 <elliott> Darn, so you don't know him at all. 
09:56:24 <elliott> You will just have to... imagine. 
09:56:30 <monqy> i have the humour trohpy 
09:56:32 <elliott> ais523: Explain Vorpal to shachaf or he might mad. 
09:56:42 <shachaf> elliott: You ought to go to sleep. 
09:57:02 <elliott> "good at jkoe" is a good motto. 
09:57:08 <elliott> Is it a motto? I'm not sure what it is. 
09:57:08 <shachaf> Good at jkoe and doesn't afraid of anything? 
09:57:26 <monqy> it says so on my the humour trohpy 
09:57:40 <CakeProphet> I think Vorpal is a pretty cool guy. eh tells jokes and doesn't afraid of anything. 
09:58:33 <elliott> shachaf: Sounds like u might be a tad mad. 
09:58:47 <elliott> This is really quite liberating, just being a horrible person. 
09:59:01 * shachaf assumes elliott lives in EDT. 
09:59:09 <monqy> I'm horrible in my own special way, or maybe someone else's way too, I haven't bothered to check 
09:59:16 <elliott> Assumptions are great things. 
09:59:54 <elliott> What even _are_ timezones, anyway? 
10:00:03 <elliott> I ask the questions on everyone's minds. 
10:00:08 <shachaf> You know that yellow blob in the sky? 
10:00:19 * shachaf worries that he's using words unfamiliar to elliott. 
10:00:57 <monqy> how do ehggs in the sky 
10:01:03 <monqy> is that how where you live works 
10:01:30 <shachaf> So egg yolks float around in the sky, and sometimes they disappear. 
10:01:37 <shachaf> When they disappear, we call that "breakfast" or "morning". 
10:01:44 <elliott> Yes. I have, at times, been sufficiently sleep-deprived to imagine such things. 
10:01:46 <shachaf> Then we're awake until they come back. 
10:01:53 <elliott> Thank god for the great frying pan in the sky. 
10:01:55 <shachaf> And that's what a time zone is. 
10:01:58 <monqy> I tend not to hallucinate 
10:02:11 * shachaf hallucinates lovely classical music when he's tired. 
10:02:21 <monqy> maybe I just haven't deprived myself enough 
10:03:27 <monqy> miserable crummy wacro 
10:03:45 <elliott> Now that I know how to use Perl's C API, maybe I'll make mcmap use it as its embedded language. 
10:04:27 <CakeProphet> And because you won't what  you should, you are unethical. 
10:05:19 <shachaf> elliott: You should come to #haskell-blah, yo. 
10:05:26 <shachaf> We make fun of people who aren't us. 
10:05:37 <monqy> sounds like a cool place 
10:05:45 <elliott> Hmm, the last time I did that cheater got banned. 
10:05:48 <elliott> Sure, I'll give it a shot. 
10:05:48 <Patashu> the only moral tribalism is my tribalism 
10:06:33 <elliott> monqy: Yes, I was so naughty that they banned someone who isn't me. 
10:06:42 <elliott> Whereby they I mean oerjan. 
10:06:57 <monqy> maybe you can ban cheater again 
10:07:05 <CakeProphet> elliott has been established to be naughty from his lack of regard for Perl's C API suggestions to use macros in place of direct function calls. 
10:07:21 <lambdabot> monochrom says: The Three Laws of Types. (1) Must protect programmer. (2) Must obey programmer, when not in conflict with (1). (3) Must protect computer, when not in conflict with (1) or (2). 
10:07:33 <lambdabot> monochrom says: "Monad is about computation." "Our company is about synergy." "iPod is about coolness."  Godawful postmodernism nothingness. 
10:07:56 <shachaf> elliott: Next step is to /part #esoteric. 
10:07:59 <lambdabot> monochrom says: Don't wrap your head around haskell. Immerse! Wrap haskell around your head. 
10:08:02 <monqy> wow my company is about synergy too 
10:08:02 <lambdabot> monochrom says: premature generality is the root of OOP 
10:08:08 <lambdabot> monochrom says: just add #! /usr/bin/runghc to your haskell file. then type errors occur at runtime only. 
10:08:21 <elliott> shachaf: But that's a bad step. 
10:08:28 <lambdabot> elliott says: Top universities now employ people to watch infomercials all day to find the latest mysteries. 
10:08:32 <lambdabot> elliott says: i'm here to prove theorems and compile code and I'm all out of code 
10:08:36 <lambdabot> elliott says: Only two things in the universe are certain: Death, and two of the libraries you've decided to use taking different types of ByteString. 
10:08:38 <lambdabot> elliott says: Only two things in the universe are certain: Death, and two of the libraries you've decided to use taking different types of ByteString. 
10:08:51 <lambdabot> No quotes match. My pet ferret can type better than you! 
10:08:53 * shachaf regularly @forgets his quotes from lambdabot. 
10:09:05 <lambdabot> shachaf says: boost::lambda: The ultimate error message. 
10:09:14 <HackEgo> 555) <fungot> fizzie: i, myself, will bring an end to all. 
10:09:15 <elliott> ?remember shachaf * shachaf regularly @forgets his quotes from lambdabot. 
10:09:26 <shachaf> @forget shachaf * shachaf regularly @forgets his quotes from lambdabot. 
10:09:36 <HackEgo> 617) <elliott> Deewiant: How do you go through life without seeing at least one gaping anus, that's what I want to know 
10:09:45 <elliott> CakeProphet: Hey, it's a legitimate query. 
10:10:17 <monqy> is haskell-blah being a good place I'm tempted to join 
10:10:46 <shachaf> monqy: Only if you like Haskell and simultaneously have no desire to talk about it. 
10:12:17 <shachaf> Wow, I can't believe I missed an opportunity there. 
10:12:24 <shachaf> Yo elliawtt, I hird u mad, so I put all the things in your things, so u can mad while u mad? 
10:12:49 <Patashu> u not even mad serious jelly? 
10:13:02 <elliott> I see your conditions only continue to deteriorate. 
10:13:09 <elliott> Soon u will so mad that there will be nothing but the mad. 
10:13:43 -!- itidus20 has quit (Ping timeout: 260 seconds). 
10:14:50 <Patashu> If 4chan never existed, would the internet be notably different? 
10:15:13 <CakeProphet> there is no such thing as internet without 4chan. 
10:15:20 <CakeProphet> if there were no 4chan then something else would have taken its place. 
10:16:23 <CakeProphet> apparenty I can magically make things true by saying them. 
10:16:33 <lambdabot> When i get kinky, i have been known to engage in watersports... Does that turn you on as well? 
10:16:51 <lambdabot> i hate it when i get stuck with chatting with a bot! 
10:17:34 <Patashu> Hey elliott, me and lambdabot need some alone time together... Eyebrow waggle, eyebrow waggle 
10:18:08 <lambdabot> Network.BufferType buf_append :: BufferOp a -> a -> a -> a 
10:18:08 <lambdabot> Language.Haskell.TH CondE :: Exp -> Exp -> Exp -> Exp 
10:18:08 <lambdabot> Language.Haskell.TH.Syntax CondE :: Exp -> Exp -> Exp -> Exp 
10:18:23 <lambdabot> Text.Regex.Base.RegexLike MR :: a -> a -> a -> [a] -> Array Int a -> MatchResult a 
10:18:23 <lambdabot> Text.Parsec.Error showErrorMessages :: String -> String -> String -> String -> String -> [Message] -> String 
10:18:23 <lambdabot> Text.ParserCombinators.Parsec.Error showErrorMessages :: String -> String -> String -> String -> String -> [Message] -> String 
10:20:44 <lambdabot> Text.Parsec.Error showErrorMessages :: String -> String -> String -> String -> String -> [Message] -> String 
10:20:44 <lambdabot> Text.ParserCombinators.Parsec.Error showErrorMessages :: String -> String -> String -> String -> String -> [Message] -> String 
10:20:44 <lambdabot> Control.Monad liftM5 :: Monad m => (a1 -> a2 -> a3 -> a4 -> a5 -> r) -> m a1 -> m a2 -> m a3 -> m a4 -> m a5 -> m r 
10:20:57 <monqy> are you looking for something 
10:21:22 <monqy> :t undefined :: a -> a -> a -> a -> a -> a 
10:21:23 <lambdabot> forall a. a -> a -> a -> a -> a -> a 
10:21:37 <elliott> CakeProphet: those are the whole point of hoogle 
10:22:09 <CakeProphet> elliott: to give you answers that don't match what you're looking for? 
10:22:24 <monqy> because you really wany a -> a -> a -> a -> a -> a 
10:22:29 <monqy> where wany means want 
10:22:50 <CakeProphet> yes, if I didn't I'd type a -> b -> c -> d -> e -> f 
10:23:17 <monqy> nobody wants a -> a -> a -> a -> a -> a 
10:23:44 <monqy> who cares the point is bad 
10:24:14 <monqy> the most matchy appear at the top 
10:24:40 <monqy> there's really not much of a difference at all except now you can enter things that are like but not exactly the types you want? 
10:24:48 <monqy> where now is hoogle 
10:25:26 <elliott> ?hoogle (a -> b -> c) -> (a -> b) -> a -> c 
10:25:27 <lambdabot> Data.Function on :: (b -> b -> c) -> (a -> b) -> a -> a -> c 
10:25:27 <lambdabot> Data.Data gmapQl :: Data a => (r -> r' -> r) -> r -> (d -> r') -> a -> r 
10:25:28 <lambdabot> Control.Parallel.Strategies parZipWith :: Strategy c -> (a -> b -> c) -> [a] -> [b] -> [c] 
10:25:34 <elliott> Darn, it didn't find ap :P 
10:27:17 <monqy> :t ap :: (a -> b -> c) -> (a -> b) -> a -> c 
10:27:19 <lambdabot> forall a b c. (a -> b -> c) -> (a -> b) -> a -> c 
10:27:23 <lambdabot> forall (m :: * -> *) a b. (Monad m) => m (a -> b) -> m a -> m b 
10:27:45 <elliott> CakeProphet: ap meets that type very well, thank you very much. 
10:27:52 <monqy> :t ap (undefined :: a -> b -> c) 
10:27:54 <lambdabot> forall a a1 b. (a -> a1) -> a -> b 
10:29:00 <lambdabot> Control.Applicative (<*>) :: Applicative f => f (a -> b) -> f a -> f b 
10:29:00 <lambdabot> Control.Monad ap :: Monad m => m (a -> b) -> m a -> m b 
10:29:00 <lambdabot> Control.Applicative (<**>) :: Applicative f => f a -> f (a -> b) -> f b 
10:29:45 <CakeProphet> as you may not always know what you're looking for. 
10:29:56 <CakeProphet> and be really specific when you want something general. 
10:30:42 <CakeProphet> obviously you don't know what you're looking for because you're searching for it. :P 
10:34:03 <fungot> CakeProphet: madam president, regarding the report by mr rosado fernandes, and in order to restore national control in europe of an industrial strategy for europe'. those who oppose it, when the system was greatly improved in 1999 when the revised system was adopted by the european commission' s proposal, a motion for resolution we now have between mr cox and mr david martin. it leaves parliament in a single market, the europea 
10:35:33 -!- Jafet has quit (Quit: Leaving.). 
10:51:32 -!- CakeProphet has changed nick to dons. 
10:51:42 -!- dons has changed nick to CakeProphet. 
10:53:35 -!- elliott has changed nick to totallyNotAScam. 
10:53:40 -!- totallyNotAScam has changed nick to elliott. 
10:54:41 -!- CakeProphet has changed nick to BritneySpears14. 
10:55:40 -!- BritneySpears14 has changed nick to CakeProphet. 
10:57:10 -!- brisingr has joined. 
10:57:25 -!- itidus20 has joined. 
10:57:45 <fungot> CakeProphet: i voted against the lannoye report gives a generally favourable verdict on two commission communications, seeking to migrate from one country to another. in any event, we in this parliament is ensuring that work is taxed less and the more developed agricultural areas rather than face paralysis and stagnation at the hands of the council. 
10:59:00 <fungot> Selected style: ff7 (Full script of the game Final Fantasy VII) 
10:59:01 <brisingr> I have a limited comprehension of the underlying context of the inception of this particular channel 
10:59:13 <fungot> CakeProphet: you the truth, i did work for cheap! i've had a way to get tattoos. is that all? 
10:59:30 <elliott> brisingr: http://esolangs.org/wiki/ 
10:59:37 <elliott> http://esoteric.voxelperfect.net/wiki/Main_Page 
10:59:46 <monqy> is dns still happening 
11:00:19 <brisingr> oh so #esoteric is language esoteric not general esoterism 
11:00:45 <elliott> brisingr: we get a lot of people looking for the latter 
11:00:53 <elliott> they tend to get quite upset somehow 
11:01:00 <monqy> except for some of them 
11:02:13 <brisingr> anyone here played trainyard? it would make an awesome esoteric language 
11:02:37 <brisingr> I know there are tons already with 2d movement 
11:03:15 <monqy> never heard of trainyard. what's special about it? 
11:03:50 <brisingr> it's a game involving 2d movement of the trains with tracks and all 
11:04:15 <brisingr> the fun part is where you have max 2 tracks per unit square and they automatically change every time a train passes 
11:04:25 <brisingr> you can make counter loops and stuff, theoretically 
11:04:48 <elliott> :t Data.Map.lookupWithDefault 
11:04:50 <lambdabot> Not in scope: `Data.Map.lookupWithDefault' 
11:05:16 <elliott> :t Data.Map.findWithDefault 
11:05:18 <lambdabot> forall a k. (Ord k) => a -> k -> M.Map k a -> a 
11:05:31 -!- GreaseMonkey has quit (Quit: The Other Game). 
11:10:12 -!- derrik has joined. 
11:10:25 -!- derrik has quit (Client Quit). 
11:10:51 -!- derrik has joined. 
11:15:06 <shachaf> Of all the places to go to after SLEEP, this channel is one of the worst. 
11:15:19 <elliott> Says the guy who hangs out in #haskell-blah of all places. 
11:17:44 <brisingr> so #esoteric is like a secondary #haskell-blah 
11:18:23 <monqy> from my perspective it's the other way around 
11:18:38 <elliott> These statements are true as of approximately half an hour ago when we all invaded there. 
11:18:50 <elliott> Also we keep getting people from #haskell. 
11:19:04 <elliott> But #haskell doesn't have, uh, ais523. And oerjan. And oerjan wrote most of the Haskell report by himself! 
11:19:12 <elliott> In fact, most refer to him as the TRUE father of Haskell. 
11:19:39 <elliott> Those typo fixes were crucial, Deewiant. 
11:19:42 <ais523> monqy: #haskell is like a secondary #esoteric-blah? 
11:20:01 <ais523> I haven't actually been in #esoteric-blah for a while 
11:20:05 <ais523> what's it like there nowadays? 
11:20:17 <ais523> it became mostly useless when pastebins were invented and bsmnt_bot disappeared 
11:20:28 <elliott> "pastebins were invented" XD 
11:20:37 <ais523> although I love the concept of a channel whose main purpose is for thousand-line pastes 
11:20:50 <monqy> what was bsmnt bot 
11:21:07 <ais523> a bot that ran arbitrary Python 
11:21:12 <ais523> with some sort of complex sandboxing 
11:22:08 <ais523> what happened to bsmntbombdood anyway? 
11:22:31 <ais523> -NickServ- Last seen  : Aug 06 23:37:08 2011 (4 weeks, 4 days, 11:45:55 ago) 
11:22:41 <elliott> he comes here occasionally 
11:22:46 <elliott> last time as subleq for a second or two 
11:23:15 <ais523> ah, aha, different nick, I was wondering about that 
11:23:30 <ais523> also, Slashdot just published a headline saying that Linux games run faster via an emulation layer on BSD 
11:23:43 <ais523> I don't know, or really care, if it's true or not 
11:23:45 <shachaf> Slashdot published articles? 
11:23:49 <elliott> Has Netcraft confirmed it? 
11:23:51 <ais523> but it seems like such a beautifully pointless thing to measure 
11:23:56 <ais523> elliott: nope, Phoronix 
11:24:20 <elliott> oh, the project gutenberg founder died 
11:24:30 <elliott> shachaf: Netcraft confirms u mad? 
11:24:38 <monqy> 04:25:41 < elliott> oh, the project gutenberg founder died 
11:24:38 <monqy> 04:25:42 * shachaf can't go on. 
11:34:13 -!- monqy has quit (Quit: hello). 
11:35:07 -!- brisingr has quit (Quit: haskell is asking me on a date). 
11:42:51 <elliott> https://github.com/ivmai/bdwgc/commit/5abff1068fcfb3234295021a635ea5167404a10b 
11:42:59 <elliott> Gregor: How long has Boehm GC been developed without -Wall... 
11:45:00 -!- sebbu2 has changed nick to sebbu. 
11:46:52 <Gregor> "Developed without -Wall" is not the same as "Having -Wall in configure.ac", which is just a bad option altogether. 
11:47:18 <Gregor> (Rather, "developed without -Wall" is not the same as "NOT having -Wall in configure.ac") 
11:48:41 <elliott> What's just a bad option altogether? 
11:49:57 -!- derrik has quit (Ping timeout: 264 seconds). 
11:50:55 <Gregor> Having -Wall in your configure.ac 
11:51:16 <Gregor> Considering that they add new and usually-stupid warnings to every version of GCC, that's just a recipe for pointless bug reports. 
11:57:49 -!- sllide has joined. 
12:05:27 <Patashu> Warning: Code insufficiently discombobulated. Consult with your physician before compiling. Thank you. 
12:08:03 -!- derrik has joined. 
12:08:15 -!- derrik has left. 
12:12:32 -!- nooga has quit (Ping timeout: 264 seconds). 
12:16:20 -!- DH____ has joined. 
12:19:16 <derdon> damn these noisy farmers! 
12:21:08 <DH____> I've been here quite a bit before, but I've just set up my phone to access this channel, so in this form I am new... 
12:23:08 <ais523> why is your phone using Virgin Media's cable service? 
12:23:08 <ais523> or is it a landline phone? 
12:23:41 <ais523> phones use wifi nowadays? 
12:24:03 <Deewiant> Where "nowadays" = "for several years" 
12:24:38 <ais523> elliott: the iPad was pretty much Apple realising "hey, our phones don't actually need to be phones to still do their job properly" 
12:25:27 <DH____> I usually use a nick of some variation upon DH or DHeadshot... 
12:27:11 <ais523> DH____ is the first nick you've been under from that exact hostname in here 
12:27:14 <DH____> The iPad is Apple taking inspiration from The Onion's parody of their products... 
12:27:19 <ais523> at least, while I've been in here simultaneously 
12:28:15 <ais523> logs/freenode_#esoteric.log:[Thursday, September 08, 2011] [01:17:04 pm] JoinDH____ has joined this channel (~DH____@cpc2-woki2-0-0-cust667.6-2.cable.virginmedia.com). 
12:28:16 <ais523> logs/freenode_#irp.log:[Sunday, July 18, 2010] [02:58:08 pm] JoinDH____ has joined this channel (~DHeadshot@cpc2-woki2-0-0-cust667.glfd.cable.ntl.com). 
12:28:51 <ais523> the first of those is you just joining 
12:28:56 <ais523> and the second is you joining #irp last year 
12:29:07 <ais523> amusingly, the only thing that's changed in the hostname is ntl.com to virginmedia.com 
12:29:18 <ais523> it seems that hostnaming structure survived the company buyout 
12:31:00 <ais523> why are you apologising for being ninja'd? 
12:31:03 <ais523> most people rage instead 
12:32:18 <DH____> Probably my Britishness kicking in... ;) 
12:32:27 <ais523> heh, there are quite a few Brits here 
12:32:34 <ais523> (as if being with virginmedia didn't give it away in your case) 
12:32:50 <ais523> in fact, I suspect the channel is more than half Europeans, although I'm not certain in that 
12:32:58 <ais523> there are certainly an unexpectedly high number of Scandinavians here 
12:33:04 <DH____> I should really find a.way to mask that... 
12:33:40 <DH____> The virginmedia I mean... 
12:33:51 <ais523> go to #freenode, /nick to DHeadshot (or whatever your primary nick is) and identify, ask for an unaffilated cloak, wait half an hour to an hour for a staffer to notice 
12:34:28 -!- FireFly has joined. 
12:35:03 <ais523> that's what unaffilated cloaks are for, hiding your hostname 
12:35:25 <ais523> they only work if you identify and take a few seconds to kick in, though (so if you're really paranoid, don't join any channels for a few seconds after logging on) 
12:37:24 -!- DH____ has quit (Changing host). 
12:37:24 -!- DH____ has joined. 
12:38:34 <DH____> Any way to check if it worked? 
12:38:51 <Deewiant> 2011-09-08 15:38:08 --> DH____ (~DH____@unaffiliated/dh----/x-6288474) has joined #esoteric 
12:40:03 <ais523> that's quite the cloak 
12:40:27 <ais523> presumably it's some encoding scheme for the underscores 
12:40:41 <ais523> it reminds me a bit of utf-5, although it isn't exactly that 
12:41:25 <ais523> DH____: /whoising yourself is a more direct way to make sure it worked 
12:42:21 <DH____> Well, given the channel theme, it shouldn't be hard for someone here to reverse engineer it... 
12:43:13 <ais523> well, translating 6288474 to hex would seem to be a good start 
12:43:21 <ais523> !c printf("%x",6288474) 
12:43:33 <ais523> hmm, that doesn't seem to help much 
12:43:42 <ais523> (also, interesting that EgoBot doesn't seem to need a semicolon there) 
12:44:02 <ais523> perhaps it's not an encoding scheme but just a random number there for uniquifying purposes 
12:45:09 <DH____> Maybe I'm the nth person to have underscores in their nick... 
12:45:43 <ais523> the 523 in my nick's a random number for uniquifying purposes too 
12:47:21 <ais523> hmm, I still want to get round to that language some time where the source code is just a number 
12:47:44 <ais523> and the interp looks on anagolf for the problem with that number, then takes majority opinion of the programs not marked as cheats 
12:48:11 <ais523> giving extra weight to ones specifically marked as not-cheating, I suppose 
12:48:35 <elliott> what about endless problems that don't reveal src? 
12:48:44 <DH____> Doesn't unary only use a number? 
12:48:53 <ais523> elliott: I, umm, don't know 
12:48:54 -!- azaq23 has joined. 
12:48:58 <ais523> DH____: yes, but it's a pretty /big/ number 
12:49:17 <ais523> the idea here would be to have astonishingly small programs for a range of popular programs 
12:49:30 <ais523> I suppose for the endless ones, we just hire elliott or someone to do reference impls 
12:50:27 <ais523> you'd be good at them! 
12:51:03 <DH____> You could use DMM's WebPEG encoding on the source... 
12:52:09 <DH____> Leaving a 20 byte source file or so... 
12:55:11 <ais523> that's a /different/ creative way to cheat 
12:57:20 <elliott> ais523: we need sg soon; git is driving me insane 
12:58:02 <ais523> what are you using to version sg itself while it's being written, incidentally? 
12:58:32 <elliott> nothing? :) or darcs I guess 
12:58:36 <ais523> presumably it's not yet complete enough to version itself 
12:58:47 <ais523> darcs seems to be the least-bad VCS that isn't vaporware 
12:58:57 <Deewiant> Write the sg repository by hand as you go until it can do it by itself 
12:58:58 <elliott> or, /maybe/ git, in case we think we might want other people to interact with the repo via github, although you'd be a major stopper to that 
12:59:25 <ais523> meh, I'd just maintain a mirror on gitorious and refuse to acknowledge the github repo existed except when I pulled from it 
12:59:27 <elliott> the main problem with darcs is that the only decent places to put the repository involve hosting it yourself, and darcsweb is rather... uninspiring 
12:59:27 <ais523> that's what I normally do 
12:59:40 <ais523> elliott: I would mention patch-tag, but you said decent 
12:59:55 <elliott> ais523: You could do that gitorious thing, but I would be far too lazy to pull your changes 
13:00:12 <ais523> pulling isn't that hard... 
13:00:19 <elliott> Harder than having someone else push for you 
13:00:48 <ais523> you can't push into a repo with working changes anyway 
13:00:55 <ais523> which is the usual state of a repo someone's directly working on 
13:00:59 <ais523> so in practice, you have to pull anyway 
13:01:32 <elliott> This is the thing where you're deliberately stupid to maintain your worldview and I ignore you, right? 
13:02:00 <elliott> You realise that the repositories you push to are not usually repositories with working directories? 
13:02:01 <ais523> I can't think of any reasonable git workflow that doesn't involve pulling at all 
13:02:08 <ais523> elliott: well, if you're too lazy to pull 
13:02:14 <elliott> Well, sure, the person pushing has to pull 
13:02:20 <ais523> then you wouldn't be pulling from any /other/ repo I push to 
13:02:21 <elliott> Pull changes, merge in, push them off 
13:02:41 <ais523> so what you mean is, you're too lazy to pull from two repos at once 
13:02:46 <ais523> despite the existence of git remote update 
13:03:06 <elliott> What I really mean is, being awkward wrt the existence of a GitHub repository will cause me to try and be as awkward as possible in turn 
13:04:08 <ais523> oh right, I didn't pick that up 
13:04:39 <elliott> I'll probably end up versioning it in nothing for the longest time, anyway 
13:05:02 <elliott> VCSes are too workflow-hostile for me to bother for a project still in its solo stage 
13:05:17 <ais523> I find that what I do with a VCS is to use it more and more properly as time goes on 
13:05:29 <ais523> starting off by just using it as a backup system rather than version control 
13:05:40 <ais523> and gradually making the commits more and more the correct size 
13:05:49 <elliott> I'm trying to do that for mcmap too, but mostly just because Deewiant complained 
13:05:50 <ais523> (so the commits tend to get smaller and more numerous as time goes on) 
13:06:01 <elliott> Being a good git citizen is really hard, because you have to do terrible things like modifying history 
13:06:45 <ais523> I don't think it's possible to use git correctly 
13:06:47 <elliott> ais523: Anyway, I honestly find cp -R src src.descriptivetag before embarking on a task more usable for solo, "linear" (as in generally one feature at a time) projects than any VCS 
13:06:49 <ais523> even using it as intended causes problems 
13:07:03 <ais523> elliott: heh, I've done that too, except I more usually use tarballs 
13:07:17 <elliott> I have about ten of those for Shiro right now 
13:07:23 <elliott> Holy crap, I somehow submitted a pull request... to my own repository. 
13:07:52 <elliott> "This pull request cannot be automatically merged." 
13:08:03 <elliott> I, umm, can't even delete it, I'll just have to close it 
13:08:07 -!- yorick has quit (*.net *.split). 
13:08:07 -!- mycroftiv has quit (*.net *.split). 
13:08:07 -!- Zetro has quit (*.net *.split). 
13:08:07 -!- twice11 has quit (*.net *.split). 
13:08:08 -!- sebbu has quit (*.net *.split). 
13:08:08 -!- CakeProphet has quit (*.net *.split). 
13:08:08 -!- MSleep has quit (*.net *.split). 
13:08:08 -!- myndzi has quit (*.net *.split). 
13:08:08 -!- lambdabot has quit (*.net *.split). 
13:08:08 -!- aloril has quit (*.net *.split). 
13:08:09 <ais523> darcs would have noticed the option wasn't semantically correct! 
13:08:12 -!- mycroftiv has joined. 
13:08:16 <elliott> ais523: it is semantically correct 
13:08:23 <elliott> It's a request from an older revision 
13:08:25 <elliott> "ehird wants someone to merge 5 commits into 848d2b9 from master" 
13:08:26 -!- CakeProphet has joined. 
13:08:28 -!- CakeProphet has quit (Changing host). 
13:08:28 -!- CakeProphet has joined. 
13:08:31 -!- MDude has joined. 
13:08:37 -!- aloril has joined. 
13:08:41 -!- sebbu has joined. 
13:08:41 <ais523> well, darcs would notice that the commits you were merging in were already in the repo, at least 
13:08:43 -!- myndzi has joined. 
13:08:57 -!- yorick has joined. 
13:10:04 <ais523> I suppose you can say that a no-op pull request is technically semantically correct... 
13:10:40 <elliott> The thing with VCSes is, I think, that almost everything they consider an error, I think should succeed 
13:11:06 <elliott> Pushing when you don't have changes that have happened since? Sure, go ahead 
13:11:21 <elliott> Basically errors are bad and make me sad. This is the way of elliott. 
13:11:47 <ais523> indeed, I think pushing then should give a friendly reminder rather than an error 
13:11:55 <elliott> But I like to think it's the VCS' job to sort out the tangle of noodles that is the development into something useful for me, not to force me into making sure they don't get into a tangle. 
13:11:57 <ais523> (it's not an error in darcs, but has a tendency to cause exponential performance) 
13:12:19 <ais523> actually, "friendly reminder" is pretty much exactly what darcs does 
13:12:23 <elliott> ais523: in sg, I think it just creates a new, unnamed branch 
13:12:28 <elliott> unless you did a lot of commits since 
13:12:31 <elliott> in which case it'd probably become the new tip 
13:12:34 <ais523> if you push before pulling, you get a "(By the way, the remote repository has 2 patches to pull.)", or whatever 
13:12:53 <elliott> as in, either {it creates a new branch, tip stays the same} or {it becomes the tip, tip becomes a new branch} happens 
13:12:54 -!- Zetro_ has joined. 
13:12:58 <elliott> depending on which trail is longer 
13:13:15 <elliott> well, that's assuming they conflict 
13:13:28 <elliott> if they can be merged automatically, then they merge and become the new tip, just one with a split in the middle 
13:13:32 <elliott> and that's the correct situation 
13:13:35 <ais523> yep, and assuming that people haven't nicknamed a particular whitelist set as their own personal concept of the tip 
13:13:50 <elliott> there's no personal concept of a tip; tip is an objective thing 
13:13:54 <elliott> they can call something my-tip, though, I'm sure 
13:14:00 <ais523> personal thing used instead of a tip? 
13:14:06 <elliott> personal-thing-used-instead-of-a-tip 
13:14:29 <elliott> I think the tip is literally just the longest self-consistent branch 
13:14:47 <elliott> although, actually, that's not right 
13:15:00 <elliott> because if you dump all the sg repos possible together into one massively infinite repository, it should have no tip 
13:15:28 <elliott> what was your definition, again? 
13:15:55 <ais523> I think it does have a tip, and it consists of the tips of each of the individual projects being worked on in the repos (identified by commits linking them to a common directory structure), in separate directory structures 
13:16:10 <ais523> umm, commit is the wrong word there 
13:16:14 <ais523> but you probably know what I mean 
13:16:17 <elliott> ais523: a tip has to point to one directory structure, though 
13:16:22 <elliott> the only way you can have multiple is by explicit nesting 
13:16:37 <elliott> to me, you've pretty much described the situation of having no tip 
13:16:40 <elliott> you have multiple viable tips 
13:16:47 <elliott> you have to select one to work 
13:17:00 <elliott> (and probably designate one quickly, likely moving them all into subdirectories of a new root) 
13:17:01 <ais523> oh, you mean actually on your own personal filesystem? 
13:17:10 <elliott> ais523: no, I'm talking about sg concepts 
13:17:22 <ais523> well, a tip is just a set of patches 
13:17:31 <ais523> and it's the maximal set of patches that combine without conflicts 
13:17:36 <elliott> yep, but a set of patches can't result in having two directories without explicitly doing that 
13:17:49 <elliott> because there's no mechanism for that? 
13:18:10 <ais523> I don't see why there's any mathematical reason that "two unrelated directories" is a concept that sg shouldn't be able to model, even if it's a little hard to place onto a filesystem 
13:18:32 <elliott> because it doesn't fit into the existing model? 
13:18:54 <ais523> and the mechanism is just having multiple new-directory «insert appropriate word that isn't turtle here»s that don't refer to each other and haven't been placed into a common directory structure by any other «same word» 
13:19:03 <elliott> give me a patch that isn't self-conflicting and results in two directory trees, neither containing the other 
13:19:19 <ais523> combination of {new directory} and {new directory} 
13:19:36 <elliott> ais523: by combination of, you mean patchset, right? 
13:19:52 <ais523> sorry, that should have been set of [{new directory}; {new directory}] 
13:19:52 <elliott> ais523: there is no "new directory", there's "new directory in [HASH]" 
13:19:59 <ais523> aha, that's possibly why I was confused 
13:20:00 <elliott> (and a special root directory change) 
13:20:03 <ais523> how do repos get started, then? 
13:20:16 <elliott> ais523: repos initially contain one commit by the Ghost of Scapegoat 
13:20:26 <ais523> that can be referred to to start off 
13:20:27 <elliott> that commit is just the root directory change 
13:20:35 <elliott> it has a single global hash worldwide 
13:20:59 <ais523> ah, so if I combine {new directory in Ghost of Scapegoat} and {new directory in Ghost of Scapegoat} I get two parallel directories 
13:21:08 <Gregor> And that hash is 0xDEFACED 
13:21:09 <elliott> you need to specify a name for the directory :) 
13:21:10 <ais523> that conflict if they have the same name, as you can't have multiple directories with the same name in one directory 
13:21:20 <ais523> elliott: yes, I'm not writing out all the metadata 
13:21:24 <elliott> changeset {new directory "foo" in root, new directory "bar" in root} 
13:21:31 <elliott> that doesn't produce two unrelated filesystems 
13:21:38 <ais523> no, it produces two parallel filesystems 
13:21:45 <elliott> with two empty directories in 
13:21:48 <elliott> that's what you'd get if you cloned it 
13:21:54 <elliott> s/cloned it/checked it out/ 
13:22:10 <elliott> ais523: the most you'd get is the directories of all the projects mushed together 
13:22:17 <elliott> not in neatly separated unnamed hierarchies, that's not possible 
13:22:34 <elliott> ais523: but really, the Infinite Repo should have no tip, not least because its commit changes go on literally forever 
13:22:36 <ais523> hmm, it'd happen if we had a convention not to make sgbombs 
13:22:48 <elliott> ais523: sgbombs are valuable 
13:23:09 <ais523> in what way? I notice most existing VCSes don't allow them, but I'm prepared to be convinced that sg should 
13:23:11 -!- twice11 has joined. 
13:23:20 <elliott> all existing VCSes allow them 
13:23:23 <elliott> they just clone into directories 
13:23:56 <elliott> ais523: I'm trying to think how you re-root a repository; as in, the old story of "two repositories, merge into one by copying objects, then move the root of one into a subdirectory of the other" 
13:23:58 <ais523> so I suppose the question should be "can you commit files directly into the Ghost of Scapegoat" 
13:24:09 <ais523> elliott: some sort of directory move patch, I guess 
13:24:16 <ais523> reparent HASH from HASH to HASH 
13:24:16 <elliott> it's a move change, but it's a move change on... the ghost of scapegoat? 
13:24:22 <elliott> it's a move change on the.. hmm 
13:24:25 <elliott> no, it's a move change on the ghost of scapegoat 
13:24:33 <elliott> because it's the root of the target repository, too 
13:24:40 <ais523> oh, if you're trying to rotate the root under a new directory? 
13:24:47 <ais523> yep, that's a good enough reason for it to have a unique hash 
13:24:51 <elliott> ais523: basically, say you have repos foo and bar checked out 
13:24:57 <elliott> you want to achieve the sg equivalent of 
13:25:02 <elliott> where bar/quux doesn't exist 
13:25:23 <elliott> I, umm, don't think we can do that, right now, unless every new repo starts by creating a _new_ root directory 
13:25:25 <Gregor> You cannot truly understand someone until you've walked a mile in their shoes. Since cats don't wear shoes, it is impossible to understand them. 
13:25:30 <elliott> which just seems wrong for some reason 
13:25:34 <ais523>        pivot_root  moves  the  root  file system of the current process to the       directory put_old and makes new_root the new root file  system.   Since       pivot_root(8)  simply  calls pivot_root(2), we refer to the man page of       the latter for further details. 
13:25:37 <elliott> a repo shouldn't depend on when you create it 
13:25:51 <elliott> ais523: I know what pivot_root is 
13:25:53 <ais523> elliott: I assumed that repos would start by creating a new root directory, because it's the most obvious way to understand what a repo is 
13:25:59 <ais523> elliott: I know, I just felt like quoting it 
13:26:06 <elliott> ais523: I assumed they'd start by creating a file 
13:26:10 <ais523> or, well, a related set of projects 
13:26:19 <elliott> you can just move every file into a new subdirectory to pivot the root, but that makes merging hard 
13:26:24 <elliott> because future files will end up in the root 
13:26:25 <ais523> you can tell that two repos are working on the same project because they share an initial root dir commit 
13:26:27 <elliott> rather than the pivoted root 
13:26:40 <ais523> yep, I agree that that's semantically wrong 
13:26:41 <elliott> I suppose the first commit you make can make a new directory called / 
13:26:51 <elliott> but then what is the name of the directory made by the Ghost of Scapegoat? 
13:27:02 <elliott> other pressing questions: does the Ghost of Scapegoat have a PGP key? 
13:27:27 <elliott> ais523: I think it's actually just called the null string 
13:27:35 <Gregor> Clearly the commit message associated with this root should be "Boo" 
13:27:37 <elliott> obviously you can't create a file at foo.c (absolute path) 
13:27:38 <ais523> but /../ is a much better name for the root dir's parent 
13:27:41 <elliott> so you have to make / first 
13:27:47 <elliott> the null string is behind it 
13:28:07 <ais523> I'm not entirely convinced it needs a name, maybe null-stringing it is the best option 
13:28:08 <elliott> ais523: in fact, ideally the genesis commit (THIS IS THE WORST RELIGIOUS METAPHOR) should have no author field 
13:28:24 <elliott> actually, it doesn't need any attributes at all 
13:28:27 <ais523> (random fact: I once tried to get Wikipedia's Main Page renamed to the null string, but the developers refused to implement that even though it was getting some support) 
13:28:34 -!- sebbu has quit (Ping timeout: 245 seconds). 
13:28:40 <elliott> it's literally just the defined-by-construction object root-directory 
13:28:41 -!- sebbu has joined. 
13:29:17 <ais523> more commonly I tried to get it moved to the Portal namespace, and the opposition was mostly "it'll cause problems" without specifying how 
13:29:40 <ais523> I suppose I'm one of the few people in the world who actually knows /how/ to rename Wikipedia's Main Page; it's not commonly-known knowledge 
13:29:43 <Gregor> ais523: Clearly the main page should have "This is the main page of Wikipedia. For the notion of main pages in general, see Main Page (disambiguation)" 
13:30:14 <ais523> (I know how to delete it too, but that requires overcoming well over ten separate safeguards, and the idea is that someone would likely notice you trying in time to stop you) 
13:30:21 <elliott> I really want a famous band/author/whatever to release a work called Main Page 
13:30:42 <ais523> Gregor: have you seen http://en.wikipedia.org/wiki/Talk:%25s 
13:30:58 <ais523> you might want to look at the history of [[%s]] itself, too 
13:31:08 <ais523> hmm, bleh, they stopped arguing about it in 2009 
13:31:44 <elliott> ais523: I can't believe people actually wanted to make it not redirect 
13:31:45 <ais523> I knew it would blow your mind :) 
13:31:49 <elliott> because %s is /such/ a popular topic to look up 
13:31:55 <elliott> MUST PUNISH USERS OF OBSOLETE SHORTCUTS 
13:32:19 <ais523> elliott: well, I wanted to make it not redirect on the basis that it was absurd that you'd /expect/ [[%s]] to redirect to the Main Page 
13:32:40 <elliott> ais523: it's a page nobody will ever look up on their own, modulo rounding error 
13:32:43 <ais523> and that it was only that way due to a bug in old versions of Firefox 
13:33:09 <elliott> Yet "According to statistics, %s is the 993rd most visited page this month" 
13:33:21 <elliott> It seems pretty clear-cut to me, the logic doesn't matter, usability does 
13:33:40 <ais523> hmm, Firefox bug 298697 is still open 
13:33:47 <ais523> https://bugzilla.mozilla.org/show_bug.cgi?id=298697 
13:33:52 <ais523> despite being over 6 years old 
13:34:24 <ais523> do any other popular search engines special-case searches for %s, I wonder? 
13:34:26 <elliott> Is it just me, or do bugzilla bugs never get fixed, ever? 
13:34:31 <ais523> elliott: they do sometimes 
13:34:37 <elliott> https://encrypted.google.com/search?hl=en&source=hp&biw=1058&bih=636&q=%25s&oq=%25s&aq=f&aqi=&aql=&gs_sm=e&gs_upl=485l485l0l599l1l0l0l0l0l0l0l0ll0l0 
13:34:39 <ais523> I used to subscribe to the entire bugzilla of MediaWiki 
13:34:43 <elliott> well, that worked, but it knows i came from the google.com page 
13:34:49 <elliott> so it's not a very useful result 
13:34:59 <ais523> and quite a lot of the bugs there got fixed 
13:35:02 <ais523> although not all of them 
13:35:10 <ais523> every now and then I get reports that one of the bugs I voted for got fixed 
13:35:18 <ais523> which amuses me, as I stopped voting on them years ago 
13:35:36 <elliott> ais523: Every time I've jumped over the insane hurdles required to get Bugzilla to accept a report, I've just received like three years of bugmail from it where tons of duplicates get marked forever and no progress ever happens 
13:35:52 <elliott> I don't know whether to blame bugzilla or the developers, I think it's both 
13:36:01 <ais523> random fact: Bugzilla is the only webform-login I've ever used that works without cookies 
13:36:10 <ais523> /however/, without cookies you have to relogin every page 
13:36:17 <ais523> but it does work eventually, after something like 5 relogins 
13:36:29 <elliott> And how can I make them hurt? 
13:36:39 <elliott> Terry Weissman, apparently 
13:36:49 <elliott> Stern glares in his direction, I tell you 
13:37:07 <elliott> "One of Bugzilla's major attractions to developers is its lightweight implementation and speed, so calls into the database are minimized whenever possible, data fetching is kept as light as possible, and generation of heavy HTML is avoided." 
13:37:10 <elliott> Why the hell's it so slow then 
13:38:55 <ais523> heh, one of my favourite bits on that [[Talk:%s]] page is someone moving the rfd template below the redirect, so that the redirect would still work 
13:39:11 <ais523> (and thus, so that nobody would see the rfd tag unless they thought of adding &redirect=no to the URL) 
13:39:26 -!- nooga has joined. 
13:40:26 <ais523> I think the biggest irony in that page is that Firefox visits [[%s]] when you type "wp" in the search bar precisely /because/ of %s's meaning in programming 
13:41:24 <ais523> <CraigF> Oh come on. %s clearly doesnt belong as a seperate article anyway. Are we going to list [[lparam]]? how about [[hwnd]]? 
13:41:35 <ais523> (lparam is currently a redlink; hwnd a redirect to handle (computing)) 
13:42:14 -!- augur has joined. 
13:44:23 <elliott> anyone who knows pthreads: why would you exit the threadright before exiting? 
13:44:57 <ais523> wow, I just followed random interesting-looking links and ended up at http://en.wikipedia.org/wiki/Memory_leak which explained to me what the hell RAII actually /is/ 
13:45:01 <ais523> in terms I actually understood 
13:45:17 <elliott> RAII is just equating scope with resources 
13:45:17 <ais523> (as opposed to everyone else, who hates it continuously) 
13:45:36 <ais523> it's like alloca, but objectorientized 
13:45:48 <elliott> and handling more than memory 
13:46:24 <fizzie> elliott: For is_stop it just quits the thread instead of exit(1)ing the whole process, so that the proxying bit is left alive. I guess the exit(1) could be in an else to make it more clear. 
13:46:37 <ais523> whereas when I see a close() in the finalizer for a File in Java, it looks like a mistake, or at least a very dangerous thing to rely on 
13:48:20 -!- Phantom_Hoover has joined. 
13:48:43 <elliott> fizzie: So, it's OK to start working on my Guile branch? Someone right now is working on getting Guile working Windows-native, and I'll make the build system offer to download/build a local copy of Guile if the system doesn't have a new enough version. 
13:48:55 <elliott> It's really the nicest language I could possibly bind to. 
13:48:59 <elliott> As far as binding quality goes. 
13:49:16 <elliott> (The download isn't big; just six megs or so, and the building only takes a few minutes.) 
13:49:23 <ais523> there were a bunch of articles recently about how Guile was still better than the alternatives at its intended purpose 
13:49:43 <ais523> GNU's NIH syndrome was mentioned as a positive for it ;) 
13:50:02 <elliott> probably gnu propaganda, but guile has a really nice c api, is a decent scheme, and is well-maintained 
13:50:31 <ais523> I suppose lua's the other language designed to bind nicely to things 
13:50:34 <elliott> hmm, how can I tell GNU that this bit of code is definitely unreachable? It's complaining that my noreturn function returns because scm_cancel_thread isn't marked noreturn 
13:50:45 <ais523> I noticed that the Guile fans were mostly ignoring it 
13:50:52 <elliott> ais523: Lua is an awful language, though 
13:51:00 <elliott> any way that doesn't involve including assert.h? 
13:51:17 <ais523> actually, I'm not convinced that assert(0) definitely works 
13:51:35 <elliott> Also, "Because Guile threads are isomorphic with POSIX threads, thread will not receive its cancellation signal until it reaches a cancellation point. See your operating system's POSIX threading documentation for more information on cancellation points; note that in Guile, unlike native POSIX threads, a thread can receive a cancellation notification while attempting to lock a mutex." 
13:51:37 <elliott> I don't even want to know. 
13:51:39 <ais523> if I ever write a Splint replacement, it'll be a warning if it can't prove that all asserts are always going to succeed 
13:51:55 <DH____> I've been meaning to learn List for years.. 
13:52:00 <elliott> ais523: ah, abort() makes it happy 
13:52:04 <fizzie> Add an exit(0) or something actually marked as noreturn there. (What do you mean inelegant?) 
13:52:16 <ais523> elliott: thread cancellation is a bad idea anyway 
13:52:26 <elliott> ais523: it's cancelling the thread I'm in :P 
13:52:35 <ais523> it's one of the few things that's marked "wow, we realised this is a really bad idea, don't use this" in Java (except in more enterprisey language) 
13:52:36 <Phantom_Hoover> http://www.reddit.com/r/worldnews/comments/k8p8b/the_lifetime_ban_on_blood_donations_by_homosexual/ 
13:53:01 <Phantom_Hoover> I like the way it's framed as gays being banned from donation just because the blood donation people don't like them. 
13:53:02 <elliott> SCM scm_cancel_thread(SCM thread) __attribute__((noreturn)); 
13:53:46 <fizzie> That's probably not any prettier. 
13:53:59 <elliott> fizzie: It avoids generating needless extra code to call abort() 
13:54:06 <elliott> fizzie: Anyway, give me official approval dammit :P 
13:54:09 <fizzie> Since it's not really a noreturn function if you call it for some other thread. 
13:54:28 <ais523> why would a thread cancel itself, rather than just exit? 
13:54:30 <elliott> But the declaration will be local to that file. 
13:54:30 <fizzie> Doesn't it have some sort of exit-this-thread function? 
13:54:38 <elliott> ais523: How can a thread "just exit"? 
13:54:45 <elliott> If pthreads has a function for that I can use it, but I couldn't find anything 
13:54:47 <ais523> elliott: there's typically an API call for that 
13:54:52 <elliott> What's the pthreads for it 
13:54:56 <ais523> I know Linux has a system call for exiting a thread 
13:55:09 <ais523> (it's called exit(2), not to be confused with exit_group(2) which is called by exit(3)) 
13:55:12 <elliott> man pthread_<tab> doesn't show much interesting 
13:55:27 <elliott> Why don't I have a manpage for pthread_exit 
13:55:41 <fizzie> "pthread_exit - terminate calling thread" 
13:55:51 <ais523> I don't have a manpage for pthread_exit either 
13:55:55 <ais523> maybe it's missing on my system 
13:55:58 <elliott> And what arguments does it take? 
13:56:48 <ais523> http://linux.die.net/man/3/pthread_exit 
13:56:58 <ais523> elliott: I can't believe /you/ didn't think of searching for "man pthread_exit" 
13:57:04 <ais523> it seems we're in reversed roles today 
13:57:22 <ais523> (also, I should have just gone to linux.die.net anyway as that's the site I always check for manpages) 
13:58:20 <ais523> it seems that the return value is just a pointer that's returned literally to anything trying to join the thread 
13:59:26 <elliott> how can I get a specific file out of a git stash from another branch? 
14:00:39 <ais523> gah, trying to edit Wikipedia, my connection to the server's getting reset while the page is loading 
14:00:42 <ais523> that hasn't happened for months 
14:01:06 <ais523> it started working again 
14:01:25 <ais523> my only conclusion is that something on this network randomly bombards me with RST packets when I try to submit a form via POST, for no obvious reason 
14:01:31 <fizzie> I've had some problems with missing some pthread function manpages but not all, too. There seems to be something screwy about them. 
14:01:34 <fizzie> $ dpkg-query -S `locate pthread_exit|grep usr/share/man` 
14:01:37 <fizzie> manpages-dev: /usr/share/man/man3/pthread_exit.3.gz 
14:01:42 <fizzie> That one is right there, though. 
14:01:50 <elliott> elliott@katia:~/Code/mcmap$ build/mcmap pyralspite.net 
14:01:51 <elliott> build/mcmap: error while loading shared libraries: libguile-2.0.so.22: cannot open shared object file: No such file or directory 
14:01:57 <elliott> I thought pkgconfig was meant to take care of those sorts of things 
14:02:26 <ais523> fizzie: weird, I think I have manpages-dev installed 
14:02:31 <fizzie> Just for finding them for linking and so on; not for actually using them. 
14:02:34 <elliott> ais523: different os, version 
14:02:43 <elliott> fizzie: but I thought LD_LIBRARY_PATH was a massive hack :'( 
14:02:45 <ais523> yep, I'm wondering if it's missing from manpages-dev by mistake 
14:02:54 <fizzie> ais523: This is the Ubuntu 11.04 thing. 
14:02:58 <ais523> the version I have, that is 
14:03:07 <ais523> it's bad enough having various syscalls not documented 
14:03:25 <elliott> GLib-ERROR **: The thread system is not yet initialized. 
14:03:46 <elliott> fizzie: do you need to initialise glib threads to use mutexes and the like? 
14:04:55 <fizzie> There was something slightly strange about when the explicit initialization was necessary, and when not; and in which order the glib/SDL initializations went. 
14:05:17 <elliott> 15:06:00 [DIED] select: Interrupted system call 
14:05:37 <elliott> fizzie: I'm pretty sure you're meant to handle those things 
14:05:45 <elliott> I seem to be getting it deterministically, though 
14:06:11 <fizzie> Possibly, though I don't recall where I select()'d anything. 
14:06:30 <elliott> fizzie: I wrote that code. :p 
14:06:45 <fizzie> Well, then s/you/I/ to you. 
14:07:02 <elliott> fizzie: Well, it's more that literally any syscall can do that and you have to handle it. 
14:07:54 <fizzie> Okay, there might well be some reads/writes that don't do the right thing either. 
14:08:17 * ais523 reads about mark-and-don't-sweep GCs 
14:10:15 <fizzie> A don't-mark-and-don't-sweep-either-in-fact-just-lounge-around-and-be-lazy GC. 
14:11:37 <ais523> well, mark-and-don't-sweep GCs don't actually do any garbage collection at all until they're out of memory 
14:12:01 <ais523> at which point, they effectively do a sweep but with different terminology so that they can claim it isn't a sweep 
14:12:15 -!- Jafet has joined. 
14:12:27 <elliott> ret = select(nfds, &rfds, NULL, NULL, NULL); 
14:12:56 <elliott> gah, EINTR doesn't do it, I need errno, duh 
14:13:09 <elliott> ret = select(nfds, &rfds, NULL, NULL, NULL); 
14:13:09 <elliott> while (ret == -1 && errno == EINTR); 
14:13:18 <elliott> ais523: We're retro coders at mcmap inc. 
14:13:23 <ais523> elliott: do you prefer the standard C API (return -1 and set errno) or Linux API (return -errno)? 
14:14:01 <elliott> All C error-handling conventions are intolerable :P 
14:14:03 <ais523> well, I was asking which of two options you preferred, not if you thought either was good 
14:14:23 <elliott> Setting errno is kind of iffy, because of calling other things in the interim, and thread-local storage 
14:17:57 <ais523> I think I prefer the latter too, it's less boilerplate than errno-style 
14:21:58 <fizzie> "Erno" is a Finnish male name; I haven't really ever been able to read "errno" as "error number" instead of just a silly-sounding variant of that name. 
14:22:49 <ais523> anyway, anyone here have advice on a problem from work: I want to be able to benchmark a large number of OCaml programs, in as repeatable a set of circumstances as possible 
14:23:03 <ais523> and the Secret Project cannot be used for benchmarking (have a free clue about it while you're at it) 
14:23:21 <ais523> ideally, I'd like to count instructions rather than realtime 
14:23:57 <ais523> suggested solutions are allowed to rely on or ignore the fact that the programs are in OCaml as required, and absolute speed doesn't matter (within reason), just relative speed of the programs 
14:26:16 <ais523> Jafet: hmm, interesting, explain more 
14:26:32 <ais523> presumably it wouldn't be used in a memory-checking mode but some other mode 
14:27:17 <Jafet> There's cachegrind and lackey 
14:27:52 <elliott> used exclusively with step 
14:27:52 <Jafet> Since valgrind adds a huge amount of indirection to the code, the results should be repeatable 
14:27:55 <ais523> cachegrind checks cache hits/misses, right? 
14:27:57 <elliott> counting step until program termination 
14:28:23 <ais523> elliott: I thought of that, and could implement it myself (it's a trivial modification to Secret Project to make it single-step), but it's monstrously slow 
14:28:37 <elliott> ais523: I think you can do "step N" for some large N 
14:28:42 <Jafet> Yes, but with a simulated cache. 
14:28:58 <ais523> elliott: the API only allows one step at a time 
14:29:28 <EgoBot> sh dc -e "1k?459.67+5*9/p" 
14:29:41 <ais523> is that converting farenheit to kelvin? 
14:30:27 <EgoBot>  is not a user interpreter. 
14:30:29 <ais523> Phantom_Hoover: what did it used to do? 
14:30:31 <EgoBot> Interpreter sanetemp deleted. 
14:30:54 <ais523> ah, and someone changed it to kelvin as a joke 
14:30:55 <EgoBot> Interpreter sanetemp installed. 
14:30:58 <fizzie> Well, Kelvin's eminently sane. 
14:32:37 <fizzie> Heh, that was just a guess. 
14:34:17 <fizzie> 17:34 <fizzie> !sanetemp 66.7 
14:34:17 <fizzie> 17:34 <fizzie> !insanetemp 19.2 
14:34:17 <fizzie> 17:34 <fizzie> !sanetemp 66.5 
14:34:22 <fizzie> 17:34 <fizzie> !insanetemp 19.1 
14:37:51 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 
14:45:37 -!- FireFly has quit (Quit: FireFly). 
14:53:16 -!- Patashu has quit (Ping timeout: 260 seconds). 
14:55:22 -!- ive has joined. 
14:59:44 -!- pikhq has joined. 
14:59:51 -!- pikhq_ has quit (Ping timeout: 258 seconds). 
15:01:20 <elliott> Is there a more impolite way of killing a thread than cancelling it? 
15:01:43 <elliott> Like, that doesn't wait for a cancellation point? 
15:02:54 <elliott> pthread_kill with SIGKILL? 
15:03:35 -!- jcp|other has quit (Excess Flood). 
15:03:37 -!- yorick has quit (Excess Flood). 
15:03:54 -!- jcp|other has joined. 
15:04:09 -!- yorick has joined. 
15:05:35 <ais523> elliott: I imagine pthread_kill with SIGKILL might work, but might just screw up the threading model generally 
15:05:43 <ais523> why would you want to do that anyway¿ 
15:05:44 <elliott> hmm, but pthread_kill with SIGTERM? 
15:05:51 <elliott> ais523: because pthread_cancel does nothing 
15:05:55 <elliott> the thread never hits a cancellation point 
15:05:58 -!- yorick has quit (Excess Flood). 
15:06:03 <ais523> why is the thread not hitting a cancellation point 
15:06:13 <elliott> library code, don't tell me to change it, I can't 
15:06:29 -!- yorick has joined. 
15:06:36 -!- jcp|other has quit (Excess Flood). 
15:06:53 <ais523> why is the library code in an infinite loop? 
15:07:06 <elliott> because the user typed //eval (...infinite loop...) 
15:07:13 <elliott> or, possibly, just //eval (computation they did not realise would blow up) 
15:07:27 <elliott> stop trying to avoid answering the question, it's like #python :) 
15:07:55 <ais523> ah, OK, I was trying to work out what you were doing so I could better formulate an answer 
15:08:01 -!- jcp|other has joined. 
15:08:11 <ais523> perhaps spinning off a process would make more sense than a thread in that situation 
15:08:12 <elliott> I can control the thread enough to set up appropriate signal handlers 
15:08:18 <ais523> you can kill those as impolitely as you like 
15:08:42 <elliott> (it has to be able to call the shared-state-using functions I provide to the environment) 
15:08:43 <ais523> I have a hunch that threads aren't really designed for that sort of thing 
15:08:59 <elliott> What you're trying to say is, you don't know the answer, right? 
15:09:14 <ais523> if arbitrary code can go in that eval, it may well be something that interferes with the threading model 
15:09:19 <ais523> elliott: well, I'm not entirely sure I know the question 
15:09:25 <ais523> but I fear that if I did, I wouldn't know the answer 
15:09:46 <elliott> <elliott> Hmm, it seems that scm_cancel_thread'ing a thread currently doing scm_c_eval_string("(while #t '())") doesn't ever kill it; is there a supported way to kill a thread evaluating Guile code less politely, or should I do my evaluation timeout in another manner? 
15:10:28 <ais523> hmm, I wonder what happens if you use SIGALRM, and then put a cancellation point in your SIGALRM handler 
15:10:36 <ais523> (/me believes in using semantically correct signals for this sort of thing) 
15:11:12 <ais523> or better, a pthread_exit in your SIGALRM handler 
15:11:25 -!- copumpkin has joined. 
15:11:37 <elliott> the question is exiting the evaluation loop safely and putting all the interpreter state back as it should be, euurgh 
15:12:09 <ais523> wait what? you're trying to do multiple evals on the same interp? 
15:12:17 <ais523> can you set handlers from within Scheme? 
15:12:25 <elliott> Multiple whats on the same what what? 
15:12:34 <ais523> if you could put an exit in a SIGALRM handler /in the Scheme program/, I think it would work 
15:12:37 <elliott> I'm saying that just killing a thread while it's modifying interpreter state might not be smart. 
15:13:18 <ais523> I mean, I assumed you'd have one interpreter for each eval 
15:13:29 -!- Gregor` has joined. 
15:13:32 <elliott> no, that's absurd for my usecase 
15:13:40 <elliott> this isn't just a toy //eval, it's an integrated language :P 
15:14:47 -!- Gregor has quit (Disconnected by services). 
15:14:56 -!- Gregor` has changed nick to Gregor. 
15:15:06 <ais523> elliott: I'm not entirely convinced that what you're asking is possible 
15:15:30 <ais523> you're asking to shut down an interpreter with all relevant cleanup, while simultaneously not modifying the code of the interpreter or letting it know it should shut down in any way 
15:15:40 <elliott> I'm fine with letting it know 
15:15:40 <ais523> the problem's not fundamentally about threading, but about the interpreter's API 
15:15:44 <elliott> I just don't know how to let it know :) 
15:15:48 <elliott> that's why I'm asking people who might know 
15:17:29 -!- Phantom_Hoover has quit (*.net *.split). 
15:17:30 -!- fizzie has quit (*.net *.split). 
15:17:30 -!- EgoBot has quit (*.net *.split). 
15:18:07 -!- jcp|other has quit (Excess Flood). 
15:18:08 -!- yorick has quit (Excess Flood). 
15:18:08 -!- EgoBot has joined. 
15:18:17 -!- fizzie has joined. 
15:18:21 -!- jcp|other has joined. 
15:18:36 <ais523> elliott: I'm seeing increased use of ~ to end a sentence (that is, ending with ~ rather than .~ which pretty universally means sarcasm), in a context where sarcasm wouldn't really seem to make sense 
15:18:43 <ais523> do you know if it signifies anything else? 
15:18:56 -!- yorick has joined. 
15:19:04 <elliott> it signifies trying to be Lymia, also possibly succeeding 
15:19:29 <elliott> I guess it's meant to denote a kind of light tone of voice or something but w/e I don't care 
15:19:40 -!- yorick has quit (Client Quit). 
15:19:42 <elliott> Unless it's a third use of the tilde 
15:19:44 <elliott> In which case I have no idea 
15:20:16 -!- jcp|other has quit (Excess Flood). 
15:21:00 -!- pumpkin has joined. 
15:21:16 -!- copumpkin has quit (Ping timeout: 260 seconds). 
15:21:29 -!- pumpkin has changed nick to copumpkin. 
15:21:30 -!- jcp|other has joined. 
15:21:50 <ais523> light tone of voice but w/e would seem to fit 
15:21:58 <elliott> "Immediately after receiving this notification, thread will call its cleanup handler (if one has been set) and then terminate, aborting any evaluation that is in progress." 
15:22:08 <elliott> ais523: aha, I can do scm_thread_cleanup(thread), and then pthread_kill it 
15:22:21 <ais523> it's an interp API problem, not a threading problem 
15:22:28 <ais523> I'll be annoyed if you don't use SIGALRM, though 
15:22:44 -!- Phantom_Hoover has joined. 
15:22:51 <elliott> ais523: Does SIGALRM quit the thread by default? 
15:23:14 -!- Zetro_ has changed nick to Zetro. 
15:23:36 <ais523> SIGALRM      14       Term    Timer signal from alarm(2) 
15:23:48 <ais523> the nice thing about semantically correct signals is that they do the right thing by default 
15:24:31 <elliott> ugh, minecraft.net, get back up, I'm testing mission-critical software here 
15:24:58 <ais523> elliott: strangely, I had a dream about Minecraft a couple of nights ago 
15:25:53 <ais523> I can't remember many details anyway 
15:26:23 <ais523> it looked rather more like Final Fantasy Tactics Advance (with a higher resolution), though, probably because I have played that game and I haven't played Minecraft and my brain needed something to attach to 
15:26:44 <ais523> all I remember is flooding the area with lava and standing on high ground to avoid it, then it mostly cooled, and there were some map spots that were permanently water 
15:26:51 <elliott> hmm, just scm_thread_cleanup(thread); does nothing 
15:26:54 <ais523> then night came and I was killed by an infinite number of monsters, game over 
15:26:57 <elliott> the CPU keeps getting used forever 
15:27:03 <elliott> that makes me worry that the thread won't be in a safe staet to kill 
15:27:15 <ais523> (dreams tend not to distinguish between character and player, although it was pretty clear that the death was just a game-death and not anything permanent) 
15:27:18 <elliott> lava doesn't cool in minecraft, though 
15:27:29 <ais523> I was thinking that next time, I should probably build a wall or something 
15:27:52 -!- jcp|other has quit (Read error: Connection reset by peer). 
15:28:01 <elliott> yeah ok thread cleanup thing doesn't work 
15:28:05 <ais523> (the permanently water map spots were yellow, and shown as permanently water when I cursor-hovered them, which is apparently an operation I can do mentally while inside a game world and have no cursor) 
15:28:35 <elliott> And I can't use pthread_kill because the API doesn't expose it 
15:29:56 <elliott> aha, hmm, scm_sigaction_for_thread 
15:31:52 <ais523> bleh, I want to go home but it's rush rather-more-than-an-hour 
15:32:57 <ais523> hmm, RAII is misnamed, I think; it's not really about allocation or initialization at all, but about deallocation and finalization 
15:33:37 <elliott> grr, the exact function I want is offered 
15:33:46 <elliott> so I have to go through hoops to get at it through c 
15:36:27 <elliott> scm_call_1(scm_c_public_variable("(srfi srfi-18)", "thread-terminate!"), thread); 
15:36:43 <ais523> what's the exclamation mark doing there? quoting? 
15:37:55 <elliott> ERROR: In procedure catch-closure: 
15:37:55 <elliott> ERROR: In procedure public-lookup: Module named (#{\x28;srfi}# #{srfi-18\x29;}#) does not exist 
15:38:13 <ais523> elliott: I mean, it's part of the name 
15:38:29 <elliott> albeit a vaguely inconsistent one 
15:38:30 <ais523> I was wondering why the name contained an exclamation mark; although you can do that in Scheme, you'd need a reason to do it 
15:38:35 <ais523> I was wondering what the naming convention signified 
15:38:48 <elliott> "destructive", it originally just applied to mutating versions of procedures 
15:38:53 <elliott> but then it got applied tovariable assignment too 
15:39:00 <elliott> so now it means something like "called for side-effects" 
15:39:17 <ais523> or "impure" more generally, I suppose 
15:39:36 <elliott> it's not applied enough for that 
15:39:41 <elliott> and it's not even really applied consistently 
15:39:44 <elliott> IMO the original convention was best 
15:40:04 <ais523> amusingly, in ICA you use ! to not assign to a variable 
15:40:12 <ais523> it's the get-contents operator (basically a dereference) 
15:40:24 <ais523> same idea as in ML, although not quite semanticaly identical IIRC 
15:40:26 <elliott> ERROR: In procedure catch-closure: 
15:40:27 <elliott> ERROR: Wrong type to apply: #<variable 340db90 value: #<procedure thread-terminate! (thread)>> 
15:40:48 <ais523> does it say what the right type is? 
15:40:58 <ais523> but it looks like you've passed it a variable holding a thread, rather than a thread 
15:41:04 <ais523> unless Scheme doesn't distinguish between those cases 
15:42:40 <elliott> yay, thread-terminate just doesn't work 
15:43:01 <ais523> Gregor: heh, I just noticed that I was on that page, denying a change that I personally agreed with 
15:43:19 <ais523> because the person in question had used a tag designed for uncontroversial edits only 
15:43:26 <ais523> and anything done to that page has been controversial 
15:43:27 <elliott> oh, I noticed you on that page 
15:45:36 <ais523> (well, I did accept a change to the CSS of the page to make it user-stylable, at least; I doubt anyone would disagree that that was an improvement) 
15:47:04 <ais523> <flamingspinach> That's besides the point. I mean, if we REALLY wanted to, we could just fork the whole encyclopedia over this issue. Why not transclude? Because, as I stated above in my redirect vote, a transcluded Main Page is nonetheless not the main page. Simple as that. Oops, forgot to sign this. 
15:47:26 <elliott> wtf? not even setting an alarm signal works 
15:48:06 <ais523> are you sure it's not messing with signal handlers? 
15:48:26 <ais523> note that signals and threads interact weirdly, if you use a non-thread-aware function like alarm it'll go SIGALRM a random thread 
15:48:40 <ais523> rather than, say, the thread it was given on 
15:48:55 <elliott> wait, alarm isn't signal-aware? 
15:49:24 <ais523> <h2g2bob> This is the same as a search for "s" - the "%" is ignored when searching (this is the case for both mediawiki search and google searches). 
15:49:33 <ais523> elliott: it's signal-aware (obviously) but not thread-aware, IIRC 
15:50:02 <elliott>   return scm_from_uint (alarm (scm_to_uint (i))); 
15:50:05 <ais523> yep, the man page just mentions that the alarm's delivered to the calling process 
15:50:30 <ais523> if you block SIGLARM in all threads but one, it'll be bound to be delivered to the thread that doesn't have it blocked, though 
15:50:45 <elliott> I'm trying to figure out how to set an alarm for the current thread 
15:51:07 <elliott> ooh, ooh, or how about this: can you get the current thread from pthread? 
15:52:01 <ais523> elliott: pthread_self(3) 
15:52:10 <elliott> no manual entry, wooo, /me googles 
15:52:12 <ais523> which I don't have a manpage for, but it's mentioned in man pthreads 
15:52:49 <elliott> ok, so at the start of the thread, I spawn another one, passing the thread id; that thread then sleeps ten seconds, and sends SIGALRM 
15:53:18 <ais523> I hope that the sleep isn't implemented in terms of alarm (which is allowed), or the universe will explode 
15:53:36 <ais523> you might want to explicitly sleep using select in order to avoid that (select is guaranteed to be independent of alarm) 
15:54:12 <ais523> hmm, there's a function called ftw(3) 
15:54:19 <ais523> it'll go nicely with Android's wtf() 
15:55:13 <ais523> apparently it's for traversing directory structures 
15:55:33 <elliott> mcmap has the wonderful (die|stop|wtf)f? family of functions. 
15:55:55 <ais523> I wouldn't normally bother with a formatted error message for a wtf 
15:56:03 <ais523> unless it was happening a lot and I wanted to give debug info at the same time 
15:57:36 <elliott> it's good to know "invalid zlib id blah" 
15:57:40 <elliott> as opposed to just "invalid zlib id" 
15:58:43 <ais523> heh, I'm still amused I called a template {{REMOVE THIS TEMPLATE WHEN CLOSING THIS AfD}} 
15:58:54 <ais523> it seems that the lowercase f is intrinsically part of the spelling of AfD to me 
16:02:12 <elliott> if I send SIGTERM rather than SIGALRM, everything quits 
16:04:47 <elliott> fuck this, I'm committing a non-timeouting //eval and doing more important things 
16:08:19 -!- pumpkin has joined. 
16:09:44 <ais523> oh right, I invented http://en.wikipedia.org/wiki/CAT:AFD/I 
16:09:52 <itidus20> elliott: at some stage, my lessons on FSMs led me to write: (wo|hu|)man 
16:09:59 -!- copumpkin has quit (Ping timeout: 260 seconds). 
16:11:10 <ais523> elliott: I think that category would be a good place to look for language inspiration, especially as it gets completely replaced every 14 days 
16:11:20 <ais523> every 7, actually, I think 
16:11:55 <elliott> A potentially deadly illness, clinically referred to as UML (Unified Modeling Language) fever, is plaguing many software-engineering efforts today. 
16:12:00 <elliott> i was hoping it was an unrelated UML 
16:12:04 <elliott> that could be turned into a diagram hell language 
16:12:24 <ais523> CAT:AFD/? is a little larger, but a little lower-quality on average, because some people file everything in ? as a protest against the system 
16:13:09 <ais523> and still more people file everything in U for the same reason (although for a while U was typically empty due to AFD categorizing gnomes) 
16:14:09 <elliott> grrr, someone reverted my addition of a {{prod}} using Twinkle 
16:14:19 <elliott> anon edit? BETTER REVERT IT! 
16:14:47 -!- jcp|other has joined. 
16:15:08 <ais523> this is what's wrong with Wikipedia, ofc 
16:15:17 <ais523> you can follow up with an actual AfD, except you'd probably have to log in for taht 
16:15:29 <elliott> I just reverted their reversion 
16:15:35 <ais523> why don't you talk-message them and ask why they deprodded? if every anon did that, they'd stop doing it after a while, because talk edits stop twinkle 
16:15:44 <ais523> you're not supposed to revert prod removals ever, though, that's what prods are for 
16:16:10 <elliott> but come on, it said "identified as vandalism" right there in the commit, there's clearly no cogent objection gone into that :P 
16:16:14 -!- augur has quit (Remote host closed the connection). 
16:16:34 -!- Zuu has quit (Ping timeout: 260 seconds). 
16:16:44 <ais523> hmm, seems that 'crats can remove admin rights nowadays, I wonder why that change was made? 
16:17:48 <ais523> I should see if the WT:RFA discussion on adminship reform is still going, sometime 
16:17:54 <ais523> it had been going for years with no sign of stopping back in 2007 
16:18:31 <ais523> I almost certainly will at some point, though 
16:19:07 -!- pumpkin has changed nick to copumpkin. 
16:29:04 -!- augur has joined. 
16:30:54 <ais523> yep, I'm reading WT:RFA, the same argument's still going 
16:31:48 <ais523> and someone's created WP:RFA2001 in order to have /yet another/ attempt at changing the system 
16:32:18 <ais523> <Sven Manguard> I've closed the below thread. With respect to Mr. Keeper, who is only the latest person to start one of these (I may have started one myself a while back), the monthly compliant threads generate a lot of heat, rehash the same arguments, and generally serve no purpose but to create tension and sour relations. That's not the intent, of course, but it's what happens every single time, and it's what has happened this time. 
16:34:41 <ais523> now, I'm wondering whether WP:GRFA has a) become massively insane, or b) is exactly the same as it used to be 
16:34:46 <ais523> I'm not sure which is the more predictable option 
16:36:55 <ais523> hmm. looks like content is basically the same but was rewritten in managementspeak 
16:37:02 <ais523> or maybe it's always been like that, and I just didn't notice 
16:39:37 <ais523> aha, /now/ I've found the list of insane requirements I was looking for: http://en.wikipedia.org/wiki/Wikipedia:RfA_reform_2011/Sysop_on_request 
16:41:48 -!- Taneb has joined. 
16:42:04 -!- kmaker has joined. 
16:44:45 <Taneb> So how is everyone today? 
16:45:06 <kmaker> i came to ask what's going with esowiki but i see it's still online, it's just esolangs.org that isn't working 
16:45:19 <Gregor> kmaker: Yeah, whoever owns esolangs.org effed up. 
16:45:49 <ais523> kmaker: the DNS service hosting esolangs.org got bought out 
16:46:02 <ais523> and are asking for more money in order to keep hosting the DNS 
16:48:26 <ais523> the esoteric.voxelperfect.net address should probably be considered the canonical one from now on, because it still works 
16:51:50 <kmaker> so ais523, what's this feather language all about? it's mentioned here and there but i still don't know anything about it 
16:51:59 <cheater> ais523 why can't you transfer esolangs.org 
16:52:13 <ais523> cheater: because I don't own it 
16:52:16 <cheater> just reading scrollback now 
16:52:29 <ais523> kmaker: it's a combination of two things: an esolang idea that hurts my head when I think about it, and an inside joke 
16:52:41 <ais523> basically, because whenever I work on it I end up having to quit due to getting to confused 
16:52:50 <ais523> and its vaporwareness has become a #esoteric meme 
16:53:12 -!- Zuu has joined. 
16:53:13 <ais523> the general concept is a prototype-based OO language that uses time travel rather than delegation 
16:54:11 <ais523> where all variables are immutable once created (as in SSA), but you can retroactively change the values that they had when they were created 
16:55:17 <ais523> single static assignment 
16:55:30 <ais523> a programming technique in which variables can't have their values changed once they're assigned for the first time 
16:55:54 <ais523> very common in functional languages, and many imperative language compilers compile via an intermediate SSA form 
16:56:56 <kmaker> it sounds interesting. can't imagine how programming is done heh 
16:57:04 <ais523> kmaker: neither can I, that's part of the problem 
16:57:08 <ais523> or at least, I can, but only slightly 
16:57:15 <Sgeo> Phantom_Hoover, elliott, Taneb, CakeProphet, Jailbreak update 
16:57:40 <ais523> Phantom_Hoover: "inheriting" methods via asking the superclass to handle them when they aren't present in the class itself 
16:57:56 <ais523> doing things Feather-style is one way to eliminate the distinction between classes and objects, which I like 
16:58:24 <ais523> with delegation: change superclass, subclass delegates to superclass and gets the new changed method 
16:58:39 <ais523> with time travel: change superclass, subclass got a copy of the new version of the superclass when it was created 
16:58:41 <elliott> ais523: I'm designing a makefile with user input and network connectivity; help 
16:58:58 <ais523> that should have been "hlep", surely? 
16:59:04 <ais523> wow, that word is hard to intentionally typo 
16:59:17 <ais523> is this a makefile as in program run via make(1)/ 
16:59:24 <ais523> if so, I think it counts as alternative programming 
16:59:34 <ais523> (that said, IIRC buildroot has user input and network connectivity) 
16:59:43 <Gregor> This most recent system upgrade seems to have improved Terminal.app from being /almost/ completely unusable to being completely unusable. 
16:59:44 <ais523> (it is also beautifully insane, and even actually works sometimes) 
16:59:53 <ais523> Gregor: what was the change? 
17:00:02 <elliott> <ais523> is this a makefile as in program run via make(1)/ 
17:00:11 <Gregor> ais523: Before, Terminal was occasionally slow and horrible. Now, it's always slow and horrible. 
17:00:27 <ais523> is this a subjective "horrible", or some specific horriblizer? 
17:01:12 <Gregor> You type something, it goes through data buffer purgatory for a while, then shows up later. It's like they have a TCP connection to whatthefuckistan through which all data sent to/from the PTTY is routed. 
17:01:16 <elliott> ais523: to clarify, it's for a completely non-esoteric purpose 
17:01:49 <ais523> Gregor: ah, so it's just very laggy for no sane reason at all 
17:01:54 <elliott> hmm, does anyone know how to trap sh so that it outputs the status code it's going to execute with to a file? 
17:02:43 <ais523> Vorpal almost certainly knows; I don't but think I know where in the man page to look it up, so I'm looking there now 
17:03:58 <ais523> it's trap EXIT (something), I'm trying to work out what the something is atm 
17:05:15 <ais523> I think it's probably just trap EXIT (echo $? > filename.txt) 
17:05:21 <ais523> but I'm not sure; it shouldn't be too hard to test 
17:05:52 <ais523> oh, and if you want to keep the same exit status, you'd need to store $? in a temporary variable and exit with it afterwards 
17:06:16 <ais523> it didn't say what format the args were meant to be in, so I assumed you put a command there rather than the string representation of a command there 
17:07:11 <ais523> elliott: what should my reaction be to [[Talk:Binary lambda calculus]]? 
17:07:31 <ais523> perhaps to mention that <math> is a nonstandard extension to MediaWiki, and just because it's used on Wikipedia doesn't mean every wiki in existence has it? 
17:07:48 <ais523> <Nthern> BTW: until this problem is fixed, the way to read this article is to edit the page, copy all the text, paste it into the [http://en.wikipedia.org/wiki/Wikipedia:Sandbox wikipedia sandbox], and then preview. 
17:07:53 <elliott> meh, it's a reaonable mistake to make; I thought <math> was standard fo rthe longest time 
17:08:03 <elliott> direct em to http://en.wikipedia.org/wiki/Binary_lambda_calculus 
17:08:09 <elliott> which is the same article inexplicably not deleted for notability after years 
17:08:19 <ais523> elliott: is that the article you just prodded? 
17:08:44 <elliott> aw, the guy apologised to me and now i feel bad 
17:09:07 <ais523> it does have references, at least 
17:09:34 <ais523> heh, I'll have no idea which article you prodded unless I can guess your IP 
17:09:41 <ais523> or check for recent prods, I guess, but that's nontrivial to do 
17:11:38 <kmaker> by the way, has anyone made any brainfuck programs lately? 
17:12:01 <ais523> we were playing a bit of BF Joust recently, but I don't think so apart from that 
17:15:50 <kmaker> i have a few ideas but it remains to be seen if i actually get anything done this year 
17:17:11 <elliott> trap: cd `dirname $0`; rm -rf support; echo $? >guile.built: bad trap 
17:17:20 <ais523> elliott: FOSD Program Cubes 
17:17:29 <ais523> might be difficult to find, but not completely impossible 
17:18:05 <elliott> NOOO NOW YOU KNOW MY CONSTANTLY-CHANGING IP FOREVER 
17:18:22 * elliott wonders if there's any contributions not by him logged on that ip 
17:18:27 <ais523> that took a while, including a bunch of API searches 
17:18:36 <elliott> yep, someone seven days ago 
17:18:51 <elliott> ais523: what a waste of effort :P 
17:19:07 <ais523> it was fun, and I wanted to see if I could still remember how to do it 
17:24:04 <ais523> I just looked for a page in the prod category whose most recent recategorization was around the time of your revert 
17:26:26 <ais523> and the problem is that there's no way to specify that in the interface, so I had to use the API 
17:35:03 -!- kmaker has quit (Quit: Page closed). 
17:37:04 -!- Braber01 has joined. 
17:37:33 <Braber01> I'm having trouble trying to install BeQuinge on Ubuntu could somebody help me? 
17:39:03 <Braber01> yes apperently the ubuntu pacakge that's provided on the site, is looking or an older version of a package that doesn't exist anymore, 
17:39:30 -!- ais523 has quit (Read error: Connection reset by peer). 
17:40:50 -!- ais523 has joined. 
17:41:11 <Braber01> i'm trying to figure out how to download the binary however the howto link seemms dead, i get a 404 error, when I click on the howto link 
17:44:31 -!- Braber01 has quit (Remote host closed the connection). 
17:44:36 <elliott> Braber01: BeQunge is incredibly non-standards-compliant and ... 
17:44:43 -!- augur has quit (Remote host closed the connection). 
17:52:41 <ais523> elliott: what's the second-most-... Befunge interp? 
17:53:02 <ais523> hey, my compose key has … on it 
17:53:02 <elliott> ais523: Definitely GLfunge. 
17:53:08 <ais523> that's a fun discovery 
17:54:21 -!- augur has joined. 
17:57:20 <Phantom_Hoover> elliott, what's the least-... Befunge interpreter that is in a reasonably complete state? 
17:59:19 <elliott> Phantom_Hoover: Shiro is reasonably complete. 
17:59:35 <elliott> It passes Mycology with one BAD and implements enough fingerprints for fungot, although there's a bug in probably the socket one that stops it running. 
17:59:35 <fungot> elliott: i said i don't care about who they like or don't like this ain't gonna show up. 
17:59:42 <elliott> It's just a churn of implementing more fingerprints now. 
17:59:45 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7* fisher homestuck ic irc jargon lovecraft nethack pa sms speeches ss wp youtube 
17:59:51 <elliott> Phantom_Hoover: Definitely BeQunge, then. 
18:01:29 -!- ais523 has quit (Read error: Connection reset by peer). 
18:02:40 -!- ais523 has joined. 
18:03:26 <elliott> Phantom_Hoover: I never said it was coherent. 
18:08:03 -!- CakeProphet has quit (Ping timeout: 252 seconds). 
18:14:50 -!- cheater has quit (Ping timeout: 245 seconds). 
18:16:35 <Taneb> elliott: May I ask, what is the BAD bit of Shiro>? 
18:17:15 -!- jcp|other has quit (Read error: Connection reset by peer). 
18:18:49 -!- jcp|other has joined. 
18:19:26 <Taneb> <elliott> It passes Mycology with one BAD and implements enough fingerprints for fungot, although there's a bug in probably the socket one that stops it running. 
18:19:26 <fungot> Taneb: it looks like the sky? 
18:19:42 <elliott> Oh. fungot got it, it fails because it looks like the sky. 
18:19:42 <fungot> elliott: even employees can't walk around above the 60th floor. but, then it's easy to get our materia! 
18:19:52 <elliott> Actually it's a bug with reading or writing in text mode I'm not sure which 
18:20:13 <Taneb> I may learn Funge-98 
18:20:20 <Taneb> AND DEVELOPE IN IT 
18:20:48 <Taneb> Would I get a swat for a Monty Python quote? 
18:21:13 <Taneb> WITH THIS HERRING! 
18:21:58 <ais523> elliott: look at the file it generates and see if it's correct? 
18:22:07 <ais523> Taneb: wait, you're using /that/ quote? 
18:22:13 <ais523> perhaps you'll get swatted anyway 
18:22:46 <Taneb> I was going to say it directly after "AND DEVELOPE WITH IT" but I thought it would be risky so I asked for approval 
18:23:04 <Taneb> But yeah, it's not the best quote 
18:23:11 <Taneb> Not even the best from Holy Grail 
18:23:50 -!- jcp|other has quit (Read error: Connection reset by peer). 
18:24:46 <Taneb> In Befunge, if a line feed character is p'd into the program, does that reshape the program? 
18:25:03 <elliott> would be fun if it did but no 
18:25:22 -!- jcp|other has joined. 
18:27:38 <Taneb> I'm going to sign off with "TTFN" now 
18:27:55 -!- Taneb has quit (Quit: TTFN). 
18:28:19 -!- jcp|other has quit (Read error: Connection reset by peer). 
18:30:47 -!- cheater has joined. 
18:31:36 -!- jcp|other has joined. 
18:33:34 -!- jcp|other has quit (Remote host closed the connection). 
18:55:15 -!- ais523 has quit (Remote host closed the connection). 
18:57:06 -!- pumpkin has joined. 
18:59:09 -!- copumpkin has quit (Ping timeout: 260 seconds). 
18:59:32 -!- Taneb has joined. 
19:04:22 <Taneb> Would Befunge-93 be Turing Complete if it used a queue rather than a stack 
19:10:26 <nooga> - (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication 
19:10:37 <nooga> OH THANK YOU MIGHTY COCA 
19:14:47 -!- ive has quit (Ping timeout: 252 seconds). 
19:29:08 -!- pumpkin has changed nick to copumpkin. 
19:37:49 -!- ais523 has joined. 
19:41:21 <nooga> http://en.wikipedia.org/wiki/Hilbert_R-tree 
20:09:52 <Taneb> Once I've finished my Travelling Salesman problem esolang 
20:16:17 -!- pumpkin has joined. 
20:16:58 -!- pumpkin has changed nick to copumpkin_. 
20:17:36 -!- copumpkin has quit (Ping timeout: 276 seconds). 
20:22:06 <Taneb> Uniquode is a long term project; lingua abstrusa and Salesman are on hold, Binary Variety Pack is dead 
20:23:35 <Taneb> Next project: NonE Minimilastic One inSTRuction sET computEr 
20:24:00 <ais523> please tell me that's not a typo 
20:24:03 <ais523> because it's a great word 
20:24:31 <Taneb> It's e combination of minimalistic and elastic 
20:24:50 <Taneb> It is neither Minimalistc nor Elastic 
20:25:38 <Taneb> I'm going to try and make it as useful as possible while still fundamentally not Turing Complete and also hard to program in 
20:25:55 <Taneb> The instruction will have FOURTEEN operands 
20:27:01 <Taneb> Or possibly loads of registers 
20:27:11 -!- copumpkin_ has changed nick to copumpkin. 
20:28:30 -!- ive has joined. 
20:31:57 <Taneb> Actually, more fun idea 
20:32:12 <Taneb> An Iota interpreter... IN XSLT 
20:32:57 -!- elliott has quit (Ping timeout: 240 seconds). 
20:33:36 <Taneb> Wait a minute, wait a goddamn minute 
20:34:00 <Taneb> Combinatory logic can be expressed as tree rearranging from within the tree, right? 
20:34:25 <Taneb> And trees can be expressed as XML, right? 
20:34:39 <Taneb> Are you thinking what I'm thinking? 
20:39:28 <Taneb> <S><x/><y/><z/></S> becomes <x><z/><y><z></y></x> 
20:42:46 <Taneb> I saw a Microsoft advert that really sums the company up. 
20:42:56 <Taneb> "I'm a PC and I'm finally up-to-date!" 
20:43:28 <ais523> the whole "I'm a PC" campaign was ridiculous IMO 
20:43:41 <ais523> also, I hate the conflation of "PC" and "Windows" 
20:43:46 <ais523> although I'm pretty sure it's deliberate 
20:44:08 <Taneb> It is delibrate on the part of Microsoft and IBM before it 
20:49:01 <Taneb> Can someone who understands XPath better than me tell me what //s/*[3]/.. would match? 
20:58:02 <ais523> Taneb: I'm trying to read it as a regex 
20:58:04 <Taneb> W3C reccomendation used to navigate an XML document with XSLT or XQuery 
20:58:14 <fizzie> It just might match any <s> elements with at least three or four children of any type. If [n] was the index-thing, and depending on whether it was 0- or 1-indexed. 
20:58:29 <Taneb> I'm hoping 1-indexed 
20:58:43 <Taneb> And I'm hoping fizzie is right 
20:59:53 <fizzie> It could be a shorthand for something like //s/*[position()=3]/.. 
21:00:26 <Taneb> Right, looked it up 
21:00:48 <Taneb> IE is 0-indexed, everything else with XPath (including the reccomendation) is 1-indexed 
21:10:45 -!- zzo38 has joined. 
21:11:23 -!- Wamanuz has quit (Remote host closed the connection). 
21:11:50 <zzo38> I have read about Curry-Howard stuff, and how it can be related to Haskell (they are even named after the same people, I think) 
21:11:59 -!- Wamanuz has joined. 
21:14:00 -!- GreaseMonkey has joined. 
21:14:05 -!- GreaseMonkey has quit (Changing host). 
21:14:05 -!- GreaseMonkey has joined. 
21:15:21 -!- nooga has quit (Quit: Lost terminal). 
21:16:23 -!- kmc has quit (Quit: Leaving). 
21:17:50 -!- nooga has joined. 
21:17:54 <Taneb> Does anyone know how to create a copy of an element with a copy of a different element as an additional child node in XSLT? 
21:22:15 <zzo38> Why are type families not allowed in instance declarations in Haskell? 
21:23:12 <zzo38> Actually I think I see there are overlapping instances with what I am doing 
21:23:57 <zzo38> (There seems to be overlapping instances even though there is only a single instance declaration.) 
21:24:30 -!- KingOfKarlsruhe has joined. 
21:26:56 <nooga> preprocessing C to get decent OOP syntax 
21:30:15 <Taneb> I leave you with http://esoteric.voxelperfect.net/wiki/User:Taneb/XSLT_S_and_K 
21:30:19 -!- Taneb has quit (Quit: TTFN). 
21:31:36 -!- derdon has quit (Remote host closed the connection). 
21:48:43 <zzo38> Type families does not seem to do everything. 
21:49:39 <zzo38> It seems to accept type families in a constraint although they seem to don't work even though it is acceptable. 
21:52:07 -!- CakeProphet has joined. 
21:53:45 -!- CakeProphet has quit (Client Quit). 
21:53:59 -!- CakeProphet has joined. 
21:54:05 -!- CakeProphet has quit (Changing host). 
21:54:05 -!- CakeProphet has joined. 
21:58:00 -!- augur has quit (Remote host closed the connection). 
21:58:00 -!- sllide has quit (Read error: Connection reset by peer). 
22:02:44 <CakeProphet> is it bad that some of my dreams involve conversing in #esoteric? 
22:03:10 <ais523> CakeProphet: if I said no, would you believe me? 
22:03:29 <CakeProphet> ais523: if I believe you, will that make it any more true? 
22:03:57 <CakeProphet> if I mandate conditionals, will they be upheld rigorously? 
22:03:59 <ais523> well, if you /are/ dreaming, and I convince you that you are 
22:04:03 <ais523> then you'll probably wake up 
22:04:06 <ais523> it's the most common result 
22:04:26 <ais523> if you're dreaming, then probably I am too 
22:04:28 -!- monqy has joined. 
22:04:38 <CakeProphet> I find it is much easier to realize you are not dreaming than it is to realize you are. 
22:05:16 <CakeProphet> even the most vivd dreams aren't like being fully awake. 
22:05:32 <CakeProphet> and you have the cognitive faculty while awake to determine such things. 
22:05:39 <olsner> so how many of those times you've realized you were "not" dreaming were you actually wrong? can you even know? 
22:05:46 <CakeProphet> so fucking you philosophy and your dream shit. 
22:05:53 <ais523> olsner: that's only ever happened to me with recursive dreams 
22:05:53 <monqy> I've been wrong about realizing I'm not dreaming 
22:06:02 <ais523> where I assumed I wasn't dreaming because I just work up 
22:06:07 <olsner> ais523: recursive dreams are awesome! 
22:06:09 <ais523> which turns out not to be an entirely reliable check 
22:06:12 <ais523> olsner: no they aren't 
22:06:17 <ais523> you go through your boring morning routine 
22:06:18 <olsner> I've just had one, it was hilarious 
22:06:21 <ais523> then have to do it all /again/ 
22:06:29 <ais523> well, it's funny the first time 
22:06:40 <monqy> my recursive dreams don't involve morning routines, interestingly enough 
22:06:44 <CakeProphet> but I am /not/ dreaming now, for sure. it may be hard to determine these things when you're dreaming, but not when you're actually awake. 
22:07:01 <CakeProphet> unless my entire life has been a dream, I guess. 
22:07:02 <monqy> I usually wake up in a strange place but know what's going on 
22:07:20 <ais523> monqy: do you realise it's a recursive dream that time? 
22:07:24 <ais523> or only when you wake up a second time? 
22:08:01 <monqy> I don't think I'm not dreaming when I wake up 
22:08:15 <monqy> maybe it just doesn't occur to dream me 
22:08:21 <olsner> the worst case would be some kind of fixpoint dream where you wake up in the dream you were waking up from 
22:08:47 <olsner> ... and you keep doing it the rest of your life 
22:08:59 <monqy> tonight I had a dream in which I had a series of dreams within that dream and I was describing them 
22:09:00 <CakeProphet> most of my dreams are not very vivid. Sometimes they are. Sometimes they nest as well. 
22:09:25 <ais523> olsner: you just need each dream to go twice as quickly, in realtime, as the previous one 
22:09:42 <ais523> once you go past the convergence point, you are now capable of thinking an infinite amount in finite time 
22:10:02 <CakeProphet> I don't think the ratio was 2 though in Inception. 
22:10:10 <ais523> this strikes me as probably better than a singularity, because you can't trust a random AI, but you can probably trust olsner 
22:10:16 <olsner> CakeProphet: inception did not go deep enough ... into the subject of nested and recursive dreams 
22:10:35 <CakeProphet> olsner: I was referring to the time stuff, as ais523 mentioned it. 
22:10:54 -!- Phantom_Hoover has quit (Quit: Leaving). 
22:11:08 <monqy> never seen inception. probably shjould. 
22:11:30 <CakeProphet> it's one of the few movies that made my brain hurt a little bit. 
22:12:28 <olsner> didn't make my brain hurt, but maybe I wasn't watching it thinkingly enough 
22:13:06 <CakeProphet> occasionally I'd lost track of some detail and be slightly confused as to what was going on 
22:13:16 <CakeProphet> until it returned to a previous dream. "oh right..." 
22:14:02 <olsner> what was going on was always moving into, out of or around inside a dream 
22:15:59 -!- GreaseMonkey has quit (Quit: The Other Game). 
22:20:15 <CakeProphet>  Entertainment Weekly gave the film a B+ rating and Lisa Schwarzbaum wrote, "It's a rolling explosion of images as hypnotizing and sharply angled as any in a drawing by M.C. Escher or a state-of-the-biz videogame; the backwards splicing of Nolan's own Memento looks rudimentary by comparison."[ 
22:20:30 <CakeProphet> I don't trust anyone from Entertainment Weekly to have actually followed what was going on in that moive. 
22:21:24 <zzo38> Now, it cannot make type level programming in Haskell. Because, I try thing it failed 
22:22:19 <olsner> CakeProphet: it cannot make type level 
22:22:40 <CakeProphet> I recall walking out of the theater feeling as though I were in a dream 
22:23:02 <zzo38> I have watched Inception movie. And then I said they have read Godel, Escher, Bach. My brother said no they did not do so. But, I wanted to make sure I checked, in Wikipedia, in fact one of the people did read that book. 
22:24:20 <zzo38> Did you read the book Godel, Escher, Bach? 
22:26:22 <CakeProphet> According to Hollywood Reporter, both Brad Pitt and Will Smith were offered the role. 
22:26:36 <CakeProphet> I don't think Will Smith would have been as good in that role. 
22:26:56 <CakeProphet> he would do his Will-Smith-sad-face thing and it would ruin everything. :P 
22:27:27 <zzo38> How do you make it in Haskell, that if   instance GreaterThan t u => DoesNotDivide (Succ t) (Succ u);   doesn't work, then it will try    instance DoesNotDivide t (Subt u t) => DoesNotDivide t u;   instead? 
22:29:35 <zzo38> Is there any way to make an extension in Haskell to make it to work? 
22:29:49 <CakeProphet> you have typeclasses, and instances of such. if the type matches the instance declaration then it has an implementation of the methods. 
22:30:03 <CakeProphet> there isn't any sort of re-routing or conditional logic involved. 
22:31:38 <zzo38> GHC does allow overlapping instances and incoherent instances and so on. Sometimes it does it by specificness. But sometimes it should instead assume they are equivalent if defined?? 
22:41:40 <CakeProphet> zzo38: basically you can't make typeclass implications when the instance doesn't match. 
22:47:59 <CakeProphet> ...what, why did my date and time disappear 
22:48:10 <CakeProphet> and why is there a large inaccessible hole on the panel where I cannot add things. 
22:48:25 <monqy> @localtime CakeProphet 
22:49:33 <monqy> maybe a minute ago in a few more seconds 
22:49:39 <CakeProphet> but I CAN'T GET IT TO GO IN THE SAME PLACE 
22:49:46 <monqy> i checked your time it must be broken 
22:50:26 <monqy> yeah but when i checked it it said 01:49:43 
22:50:36 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 
22:50:36 <monqy> oh wait no that must have been the server 
22:50:51 <monqy> oh I didn't use the right command 
22:51:18 <monqy> 15:52:58 [freenode] CTCP TIME reply from CakeProphet: Thu Sep  8 18:51:57 2011 
22:51:31 <monqy> just ctcp time yourself whenever you need it 
22:52:05 <monqy> how does that even happen 
22:52:28 <CakeProphet> my computer does this shit for some reason after restarts sometimes. 
22:52:39 <CakeProphet> first my shutdown button disappeared... though I don't really need that one. 
22:55:30 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 6.0.1/20110830092941]). 
23:01:05 <CakeProphet> something weird happened to the original clock app so I just manually removed it in gconf. 
23:07:33 <itidus20> random youtube comment: "and I thought Finland was bad for making the moomins..........  :P" 
23:09:04 <zzo38> The instance for DoesNotDivide doesn't work. OK, I have been told why it doesn't work. Does it mean there is some things missing from Haskell type system? Or, does it mean other thing instead? 
23:09:28 -!- kmc has joined. 
23:14:01 <CakeProphet> if by "missing" you mean "doesn't do what you want it to do"  then yes. 
23:14:25 <CakeProphet> though there are probably things that are actually missing... ask elliott I bet he knows. 
23:16:51 -!- copumpkin has joined. 
23:16:52 <zzo38> As far as I know there could be a lot of improvement that could be made in Haskell, including new kinds and new pragmas and new macros and other stuff 
23:20:40 <CakeProphet> my stance is that nothing could ever be improved about Haskell it is perfect in every way. 
23:20:55 <shachaf> CakeProphet: Without more-notation? 
23:22:25 <CakeProphet> man this code is going to be a pain in the ass to debug 
23:22:33 <CakeProphet> maybe if I just stare at it long enough I'll find all of the bugs. 
23:22:40 <monqy> is this for your thing 
23:23:07 <zzo38> Is there some things in category theory that cannot be made in Haskell?