00:05:44 -!- augur has joined.
00:18:28 -!- Patashu has joined.
00:25:58 -!- Rugxulo has joined.
00:28:27 <Rugxulo> I'm surprised, I had given up on IOCCC coming back (at least for the foreseeable future)
00:35:12 <oerjan> it's just the end times, nothing to worry about.
00:35:55 -!- derdon has quit (Remote host closed the connection).
00:45:54 <CakeProphet> oerjan: unfortunately no one actually knows C anymore
00:46:23 <oerjan> what, how can you possibly doubt our Gregor
00:47:46 <Rugxulo> no one knows C? eh? it's still like #1 or #2 at TIOBE
00:48:00 <Rugxulo> GNU still worships it like crazy, that's for sure
00:48:10 <Rugxulo> similarly Clang users (Apple), etc.
00:49:21 -!- pikhq_ has quit (Ping timeout: 245 seconds).
00:49:24 -!- pikhq has joined.
00:51:41 <CakeProphet> Rugxulo: no one writes C anymore. it's all just robots that program C now.
00:52:13 <Rugxulo> even *BSD funded PCC to get to 1.0 stage
00:52:22 <Rugxulo> so apparently everybody is (still) gaga over C
00:52:39 <Rugxulo> maybe thinking of another language while they're compiling C ;-)
01:00:11 <pikhq> I anticipate C lasting at least as long as COBOL already has.
01:00:16 <pikhq> Quite plausibly longer.
01:02:15 -!- pikhq_ has joined.
01:04:35 <Rugxulo> did I hear right or did C1x finish?
01:05:08 -!- pikhq has quit (Ping timeout: 252 seconds).
01:06:32 <coppro> I don't know if the new C standard has been published yet
01:07:07 -!- Zuu has quit (Ping timeout: 244 seconds).
01:10:03 <Rugxulo> dunno, I read somewhere that there's some weird rule that it can pass early if unanimous, and supposedly it was, so ...
01:11:50 -!- Rugxulo has quit (Quit: Leaving).
01:24:34 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
01:48:49 -!- copumpkin has joined.
01:52:23 -!- pikhq has joined.
01:54:31 -!- pikhq_ has quit (Ping timeout: 244 seconds).
02:04:33 -!- Sgeo|web has joined.
02:04:46 <Sgeo|web> elliott's not here for me to tell em UPDATE
02:08:15 <CakeProphet> Sgeo|web: question: do you do anything other than refresh MSPA?
02:08:48 * Sgeo|web is pleased that CakeProphet thinks that he refreshes MSPA constnatly
02:09:04 <monqy> mspa refresh pride
02:11:32 <Sgeo|web> I thought there was another update almost immediately after
02:12:51 <Sgeo|web> My notifier went off a second time, for some reason
02:13:06 <Sgeo|web> CakeProphet: Sorry to reveal I'm not a constantly refreshing madman
02:23:58 -!- pikhq has quit (Ping timeout: 240 seconds).
02:24:12 -!- pikhq has joined.
02:46:01 <CakeProphet> Sgeo|web: I'm surprised you don't read Dr Brinner: Ghost Psychiatrist.
02:58:32 <Sgeo|web> I want to, but I don't have the time...
03:00:59 <Sgeo|web> I mean, I can barely find the time to read Mezzacotta
03:02:14 <pikhq> There isn't enough.
03:03:11 <pikhq> http://www.mezzacotta.net/archive.php?date=-9999999999999-01-01 Here, begin archive binging.
03:03:31 <Sgeo|web> If people can read all of Dr. Brinner: Ghost Psychiatrist, then I can read all of Mezzacotta
03:03:49 <pikhq> I mean literally there isn't enough time.
03:03:59 <pikhq> The Universe isn't old enough.
03:04:17 <Sgeo|web> CakeProphet: Where'd you get your time machine for reading Dr. Brinner?
03:05:10 <Sgeo|web> pikhq: the solution is more universes
03:16:27 -!- Sgeo|web has quit (Quit: Page closed).
03:26:33 -!- Sgeo|web has joined.
03:46:21 <CakeProphet> Sgeo|web: I'm just so cool I don't need one.
03:48:07 <oerjan> you don't need a time machine at 16 picokelvin
03:48:50 <CakeProphet> if not, what the fuck is wrong with my program?
03:49:15 <pikhq> CakeProphet: Yes, that is the intended semantics of delete[];
03:49:24 <CakeProphet> zdhvjibhdfhbsj<ehfshe hf uiwhe riu wh iur hwr
03:49:33 <CakeProphet> delete the array and not the things in it?
03:49:44 <pikhq> delete array; does that, I think.
03:49:50 <pikhq> Also, you don't want to do that.
03:51:09 <CakeProphet> where the right-hand key is a string reference
03:54:45 -!- augur has quit (Remote host closed the connection).
04:06:39 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
04:13:13 <CakeProphet> I'm guessing something's wrong with my table resize...
04:26:31 <CakeProphet> once again fooled by the assignment operator on references.
04:28:54 <CakeProphet> silly me, thinking I could use and re-assign variables as mere symbolic constructs to write clear algorithms
04:39:46 -!- pikhq_ has joined.
04:39:51 -!- pikhq has quit (Ping timeout: 244 seconds).
04:40:34 -!- GreaseMonkey has joined.
04:40:42 -!- GreaseMonkey has quit (Changing host).
04:40:42 -!- GreaseMonkey has joined.
04:43:39 <HackEgo> cat: welcome: No such file or directory
04:43:48 <HackEgo> #!/usr/bin/perl -w \ if (defined($_=shift)) { s/ +/ @ /g; exec "bin/@", $_ . " ? welcome"; } else { exec "bin/?", "welcome"; }
04:43:57 <HackEgo> #!/bin/sh \ if echo "$1" | grep -c ' ' >/dev/null; then \ echo -n "$1" | sed 's/ .*/: /' \ exec $(echo "$1" | sed 's/[^ ]* //') \ else \ echo -n "$1: " \ shift \ exec "$@" \ fi \
04:46:11 <CakeProphet> is there a command that negates a return status?
04:46:37 <oerjan> i dunno, there's a reason i used perl instead of sh :P
04:47:22 <HackEgo> bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom
04:47:59 <CakeProphet> `run if cat wisdom/CakeProphet | grep -i hi; then echo "hi" fi
04:48:01 <HackEgo> bash: -c: line 1: syntax error: unexpected end of file
04:48:02 <pikhq_> CakeProphet: if [ $? ];then false;else true;fi
04:48:28 <pikhq_> The error status of the previous command.
05:09:02 <CakeProphet> so much sense I sometimes struggle to understand it.
05:12:40 <Deewiant> CakeProphet: ! negates a return status
05:13:25 <CakeProphet> Deewiant: anywhere or just within the [] thingy
05:15:25 <HackEgo> bash: !echo: command not found
05:15:31 <CakeProphet> `run !(echo "I don't believe you") && exit
05:15:42 <CakeProphet> `run !(echo "I don't believe you") && echo "oh right"
05:16:03 <CakeProphet> I thought: "surely it could not be this simple in bash"
05:16:18 <Deewiant> You don't need the (), that spawns a subshell
05:17:14 * CakeProphet is tempted to use perl always for bashy things.
05:20:03 <CakeProphet> hmmm, so {} doesn't spawn a subshell or???
05:21:13 <Deewiant> http://stackoverflow.com/questions/2188199/bash-double-or-single-bracket-parentheses-curly-braces
05:21:29 -!- MDude has changed nick to MSleep.
05:21:44 -!- DCliche has joined.
05:21:57 -!- pikhq has joined.
05:23:06 <CakeProphet> that doesn't really explain the {cmd1; cmd2; cmd3; ... } | parallel
05:24:50 -!- pikhq_ has quit (Ping timeout: 240 seconds).
05:24:59 <Deewiant> But no, {} doesn't spawn a subshell
05:25:30 -!- Darth_Cliche has quit (Ping timeout: 276 seconds).
05:27:22 <Deewiant> Uh, pretty much so, yes, I think
05:27:50 <Deewiant> It's a big enough difference that I'm not sure what you include in "otherwise identical" :-P
05:28:21 <CakeProphet> they pretty much have the same purpose when piped and such.
05:29:55 <CakeProphet> they both allow a sequence of commands to share the same piped input/output
05:36:41 <CakeProphet> wait what congress wants to censor the internet?
05:37:09 <Madoka-Kaname> That sounds like a good way to make the internet really really angry.
05:41:12 <CakeProphet> http://en.wikipedia.org/wiki/Stop_Online_Piracy_Act
05:41:20 <CakeProphet> wow they even tie it into protecting American jobs.
05:45:34 <pikhq> That sounds like a good way to make Google abandon ship.
05:47:50 <CakeProphet> "Sources suggest Google has packed up and moved to Greenland. It has reportedly taken its money and jobs with it."
05:48:16 <pikhq> Probably a few other tech companies join them.
05:48:33 <pikhq> Suddenly, Silicon Valley is in Greenland.
05:48:44 -!- oerjan has quit (Quit: In other news, Greenland's population triples).
05:49:35 <Madoka-Kaname> http://www.thatvideosite.com/video/dr_michio_kaku_discusses_americas_secret_weapon
05:50:56 <Madoka-Kaname> CakeProphet, that'd be a good way to secure a very very bad approval rating.
05:50:58 <pikhq> Doubtful. I think the first widespread action against Youtube would be Google going "Uh... Fuck you."
05:51:11 <pikhq> Madoka-Kaname: Congress has a lower approval rating than communism ATM.
05:51:30 <Madoka-Kaname> Google's pretty much holding up a middle finger at you.
05:51:54 <pikhq> Yes, communism, the movie villain of decades, is more popular than Congress.
05:54:01 <CakeProphet> Madoka-Kaname: Dr. Michio Kaku is secretly this guy from Alpha Centauri http://2.bp.blogspot.com/_s2Xyd2TRbi8/SlkqC18nSII/AAAAAAAAAAM/bx2D97B6ABs/S660/zakharovface.jpg
05:55:33 <CakeProphet> Madoka-Kaname: play Alpha Centauri and you will know it is true.
05:57:55 <CakeProphet> In addition, depending on the method used to fix the worldsheet diffeomorphisms and conformal transformations in the original free string theory, the resulting string field theories can be very different. Using light cone gauge, yields light-cone string field theories whereas using BRST quantization, one finds covariant string field theories. There are also hybrid string field theories, known as covariantized light-cone
05:58:50 <CakeProphet> string field theories which use elements of both light-cone and BRST gauge-fixed string field theories.
05:59:33 <CakeProphet> string string metasuperstring membrane field cone theory
06:00:01 <pikhq> Further testing of FTL neutrinos done. Yup, still FTL.
06:01:57 -!- augur has joined.
06:11:47 <CakeProphet> If two theories are related by a duality transformation, it means that the first theory can be transformed in some way so that it ends up looking just like the second theory. The two theories are then said to be dual to one another under that kind of transformation. Put differently, the two theories are mathematically different descriptions of the same phenomena.
06:15:02 <CakeProphet> Within the framework of the Standard-Model Extension (SME theory), various theorists have suggested that the neutrino might have a tachyonic nature,[30][31][32][33] while others have disputed the possibility.[34]
06:20:45 <CakeProphet> Giacomo Cacciapaglia, a theoretical physicist at King's College London, has suggested that the neutrinos might take "shortcuts" through extra dimensions, bypassing the Cohen-Glashow effect. Jorge Páramos, a theoretical physicist at the Higher Technical Institute in Lisbon, counters that tinkering with the current theory in this way is difficult.
06:21:56 <CakeProphet> ITT: theoretical physicists play with existing theories that have no empirical basis.
06:32:19 <fizzie> That's why they're called theoretical physicists, not regular physicists.
06:34:30 <pikhq> Shame it's not "hypothetical physicists".
06:37:34 <fizzie> Those are the physicists that may or may not exist.
06:46:29 -!- variable has quit (Excess Flood).
06:47:48 -!- variable has joined.
06:51:36 -!- FireFly has quit (Excess Flood).
06:52:14 -!- FireFly has joined.
06:59:48 -!- DCliche has quit (Quit: You are now graced with my absence.).
07:49:47 -!- CakeProphet has quit (Ping timeout: 245 seconds).
07:56:37 -!- CakeProphet has joined.
07:56:37 -!- CakeProphet has quit (Changing host).
07:56:37 -!- CakeProphet has joined.
08:11:59 -!- FireFly has quit (Ping timeout: 240 seconds).
08:14:08 -!- FireFly has joined.
08:33:18 -!- Vorpal has joined.
08:54:31 -!- monqy has quit (Quit: hello).
08:55:40 -!- copumpkin has quit (Ping timeout: 260 seconds).
08:55:51 -!- GreaseMonkey has quit (Quit: The Other Game).
08:56:05 -!- copumpkin has joined.
08:58:45 -!- ais523 has joined.
09:36:57 <fizzie> (The one a bit less than hour ago.)
09:49:21 <ais523> <billstewart> You're dismissing the efficacy of tin foil hats because you've only tried using aluminum foil - they need real tin to work right.
09:49:25 <ais523> I approve of this theory
10:00:22 <fizzie> There are quite a few papers on foil hats; like http://berkeley.intel-research.net/arahimi/helmet/ from MIT, and a rebuttal for it at http://zapatopi.net/blog/?post=200511112730.afdb_effectiveness
10:39:05 -!- derdon has joined.
11:06:55 <Vorpal> <fizzie> Hm at Vorpal's hm. <-- that was just to check for lambdabot messages
11:22:23 -!- ais523 has quit (Ping timeout: 240 seconds).
11:44:20 -!- Phantom_Hoover has joined.
12:31:31 <Gregor> So I'm thinking my best bet with my JIT's target language would be to choose some machine code.
12:36:38 <Gregor> Or ... some kind of bytecode?
12:38:19 <Gregor> Dang it, a stack-based language would be perfect but Forth is so done :P
12:39:27 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
12:51:51 -!- myndzi has quit (Read error: Connection reset by peer).
12:53:48 -!- myndzi has joined.
13:05:45 -!- ais523 has joined.
13:07:53 <Gregor> ais523: Suggest a language for my JIT to ... well, JIT.
13:08:42 <ais523> I would say Unlambda, but it's a bitch to compile into imperative code
13:09:20 <ais523> meanwhile, what's up with the vandalism on http://esolangs.org/wiki/Excela?
13:09:30 <ais523> [CTCP] Received CTCP-PING reply from ais523: 22 seconds.
13:09:42 <ais523> the ridiculous part: this connection in the University library is actually /better/ than the one in my office
13:10:11 <Gregor> ais523: Current target is BF. I want something more interesting.
13:10:24 <Gregor> Pretty much has to be imperative.
13:11:39 <ais523> you might have to make the stacks finite, but otherwise there don't seem to be any issues with it other than parsing
13:11:54 <ais523> and I know you know the language
13:14:06 <Gregor> I want something with literals, to make it more of a challenge.
13:17:34 -!- ais523 has quit (Read error: Connection reset by peer).
13:17:40 -!- ais523 has joined.
13:17:44 <ais523> [13:15] <ais523> INTERCAL-72?
13:17:47 <ais523> [13:15] <ais523> probably a bit too large
13:18:30 <ais523> -72 would /really/ benefit from JITting
13:18:33 <Gregor> In spite of asking in #esoteric , I was also hoping for something a bit more ... real :P
13:19:23 <ais523> I'm not sure how many simple real languages there are
13:19:30 <ais523> some Lisp variant without closures, perhaps
13:20:31 <ais523> Gregor: what about BASIC?
13:24:47 -!- ais523 has quit (Ping timeout: 245 seconds).
13:25:30 <fizzie> TI-BASIC, the best BASIC.
13:28:03 -!- ais523_ has joined.
13:28:16 <ais523_> Gregor: serious suggestion: BASIC
13:28:51 <fizzie> Non-serious suggestion: dc.
13:30:00 <ais523_> dc's concatenative, not imperative, right?
13:32:52 <fizzie> ais523_: Sure, but <Gregor> Dang it, a stack-based language would be perfect but Forth is so done :P
13:33:05 <fizzie> It's the next best thing.
13:53:47 -!- ais523_ has quit (Quit: Page closed).
13:53:59 <Gregor> Uhhh, OK, and which concatenative language is non-imperative? As far as I'm concerned, imperative is a parent group of concatenative ...
13:54:18 <Gregor> The only big problem with dc is bignum :P
14:00:06 <Phantom_Hoover> All commands are of type Stack -> Stack and . is replaced with space.
14:00:43 <Gregor> Soooo all the world's a monad.
14:02:19 <Gregor> I'm just saying that that's a very disingenuous way of describing a concatenative language X_X
14:04:09 <Gregor> Are you kidding me? All your functions are stack->stack and you just string them together. That's like saying that C is a functional language where every statement is a function state->state.
14:09:06 <Gregor> None of this helps me choose a language anyway :P
14:09:12 <Gregor> How bad would non-bignum dc be?
14:15:39 <Gregor> I really feel like I want to do Forth ... frankly I'm surprised that the previous Forth entry in IOCCC /didn't/ JIT (slash compile to memory)
14:33:52 -!- derrik has joined.
14:34:21 <Phantom_Hoover> Non-bignum dc wouldn't be hard at all, I should think, although I don't know much about JIT.
14:34:46 <Phantom_Hoover> Although its only control structure is an eval statement.
14:36:27 <Gregor> It wouldn't be hard in the least, my question is whether it would suck :)
14:36:58 <Phantom_Hoover> http://iasos.com/artists/erial/celestial-soul-portraits/
14:42:07 <Gregor> Would that be useless?
14:42:24 <EgoBot> sh read p; if [ "x$p" = "x" ]; then p=5; fi; echo "scale=$p; a(1)*4;" | BC_LINE_LENGTH=490 bc -l | tr -d '\\'
14:42:40 <Gregor> `run echo '2 3 / p' | dc
14:42:47 <HackEgo> bash: dc: command not found
14:42:58 <Gregor> That's something to be fixed.
14:43:33 <Gregor> `run echo '2 3 / p' | dc
14:43:49 <Gregor> OK, dc isn't such a terrible idea then.
14:44:36 -!- pikhq_ has joined.
14:45:37 -!- pikhq has quit (Ping timeout: 245 seconds).
14:48:54 -!- elliott has joined.
14:54:12 <Gregor> elliott: dc. Terribad?
14:54:46 <elliott> Gregor: Wow, fuck you, dc is my favourite.
14:54:47 <lambdabot> elliott: You have 3 new messages. '/msg lambdabot @messages' to read them.
14:55:00 <Gregor> elliott: Good, then it's my JIT target :P
14:55:21 <elliott> Gregor: You're JITting... to dc?
14:55:27 <elliott> Do you have a C->dc compiler?
14:55:37 <elliott> Gregor: I guess that works?
14:55:45 <Gregor> It feels a bit less retarded than BF :P
14:55:46 <elliott> Gregor: It's kind of unsuited though.
14:55:51 <elliott> Functions are first-class by way of being strings.
14:56:02 <Gregor> JIT is a command in my JIT :)
15:07:08 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
15:08:00 <elliott> 20:07:29: <CakeProphet> pikhq_: oh also
15:08:00 <elliott> 20:07:31: <CakeProphet> if you were sane before
15:08:00 <elliott> 20:07:33: <CakeProphet> http://www.usdebtclock.org/
15:08:00 <elliott> 20:07:36: <CakeProphet> now you're not.
15:08:00 <elliott> Would you two stop circlejerking in the logs.
15:08:39 <elliott> `addquote <olsner> characters in tv series should learn to check the timestamp before they get their hopes up... *no chance* this will work at 10 minutes into the episode
15:08:41 <HackEgo> 721) <olsner> characters in tv series should learn to check the timestamp before they get their hopes up... *no chance* this will work at 10 minutes into the episode
15:31:48 -!- copumpkin has joined.
16:01:28 -!- derrik has quit (Quit: remains of the day).
16:03:30 <Gregor> Damn ... my new JITting method is sound in principle, but probably isn't going to work with even the slightest optimization >_>
16:05:54 <elliott> Gregor: Have you pushed it yet :P
16:15:17 <Gregor> Basically this: void jit(volatile struct Data *allMyDeliciousData) { record("prologue"); /* do an addition */ record("+"); /* etc */ }
16:15:23 <Gregor> record() records its return address.
16:15:29 <Gregor> Then I use those return addresses to slice up the function.
16:16:14 <elliott> Gregor: Why wouldn't that work?
16:16:21 <elliott> You might need a "volatile" on record().
16:16:25 <Gregor> elliott: Getting rid of the call to record itself.
16:16:32 <elliott> Gregor: Can't be done, if it has side-effects...
16:16:36 <elliott> Gregor: Make it poke a volatile variable.
16:16:57 <Gregor> I made it work, but now my JITted code is full of function calls to empty functions (which may or may not be incurably retarded)
16:17:30 <Gregor> (Using a volatile function pointer argument for record instead of a global function)
16:19:10 <elliott> OS.js (JavaScript Operating System) - The world is moving forward. [X-post from /r/linux] (anderse.wordpress.com)
16:19:10 <elliott> submitted 6 hours ago by Forconin to programming
16:19:10 <elliott> WHY IS THIS ON MY FRONT PAGE
16:19:14 <elliott> I blame Gregor, Lord of Javascripts.
16:19:30 <elliott> "This project was originally intended for remote administration of servers without the hassle of installing a graphical environment and all the dependencies that comes along."
16:19:40 <elliott> $ ssh --javascript-bullshit
16:19:51 <elliott> I guess the browser doesn't count as a graphical environment with a bunch of dependencies :P
16:20:00 <Gregor> "remote administration of servers [by retards]"
16:20:05 <Gregor> They forgot that part.
16:20:39 <Gregor> Hmmm ... so far my new technique works on x86, and works then segfaults everywhere else.
16:20:50 <Gregor> Maybe I can just avoid my broken function epilogue by always calling exit! 8-D
16:21:36 <Gregor> Nowait, that doesn't work once I have other functions X-D
16:21:52 <elliott> "Hell, for consistency you should serve it all up with node.js instead of Apache."
16:21:58 <elliott> Gregor: Maintain your own call-stack with CPS?
16:22:05 <elliott> Then you never actually have to return.
16:22:27 <elliott> Gregor: That needs TCO to work decently though, which you said breaks things
16:22:38 <elliott> record("goto"); goto &&computed_label; record("endgoto");
16:22:42 <elliott> You COULD hack something up with that :P
16:22:45 <Gregor> No, C doing TCO breaks things, me doing TCO doesn't.
16:23:01 <elliott> Gregor: How are you going to do TCO? That's platform-specific.
16:23:26 <Gregor> Same way I record return addresses, but change them >: )
16:23:31 <elliott> "Dude, I think it kicks butt. I just logged in and was blown away by how much better it was than I expected. I CANNOT believe people are downvoting you just because you named it os.js, instead of actually appreciating it for what it is. Fuck 'em, you're awesome."
16:23:36 <elliott> /R/PROGRAMMING IS THE WORST
16:24:01 <Gregor> Damn it, works-then-segfaults on ARM >_<
16:24:04 <elliott> Gregor: So, y'know, if you're doing TCO... a mini Lisp-alike would make a lot of sense... >:)
16:24:08 <Gregor> Something must be wrong with my epilogue generation.
16:34:25 <elliott> Phantom_Hoover: Insert link to that synchronicity diagram.
16:34:31 <elliott> http://upload.wikimedia.org/wikipedia/commons/e/e2/Sch%C3%A9ma_synchronicit%C3%A9_in_English.png
16:34:49 <Phantom_Hoover> I never said that the trig diagram was the *best*, though.
16:35:20 <elliott> "One of Jung's favourite quotes on synchronicity was from Through the Looking-Glass by Lewis Carroll, in which the White Queen says to Alice: "It's a poor sort of memory that only works backwards".[10][11]"
16:37:08 <Phantom_Hoover> OK so I need to synthesise thioacetone with acetone, hydrochloric acid and stink bombs.
16:49:06 <Gregor> elliott: My new method, although still having the problem of pointless calls, works on friggin' everything X-D
16:49:24 <elliott> Gregor: I thought your previous method did too.
16:49:28 <elliott> Or do you mean flags don't disturb it?
16:50:21 <Gregor> elliott: I mean it just works, no need for flags in most places.
16:50:27 <Gregor> Also it works on IBM z/Series which the last one didn't :P
16:50:49 <elliott> Gregor: Does it work with... -O3 on VAX? :P
16:52:08 <Gregor> elliott: I can't even get VAX to compile shit with -O3 :P
16:52:11 <Gregor> GCC segfaults when I try.
16:53:12 <elliott> Gregor: Re empty calls: It's because the calls to the volatile function pointer are still there, right?
16:53:35 <Gregor> I can't remove them because they're of differing lengths depending on how it optimized loading the arguments :(
16:53:56 <elliott> Gregor: Take /two/ volatile function pointers; the first one is used like you use your existing one, and the second one is used BEFORE and AFTER each call. You use the calls to the latter to find out how large calls to the former are, and remove them.
16:54:11 <elliott> (And then twiddle with things so that the calls to the second are as large as the calls to the first and remove them too)
16:54:37 <Gregor> That was my first idea, but the "twiddle with things" id--OH BUT IT WOULD WORK HERE because it would be a void(void) function!
16:54:58 <elliott> I didn't realise that myself :P
16:55:27 <Gregor> In fact, I can even simplify that a wee bit.
16:55:32 <Gregor> But the idea is very sound either way.
16:55:34 <elliott> Gregor: You might need to take a third, nop void(void) funptr, just to find out how large calls to that are...
16:55:42 <elliott> By special-casing the first three calls
16:55:49 <elliott> (As "start", "call to void(void)", "end")
16:56:17 <Gregor> Works with -O0, doesn't work with -O1, works with every flag that goes into -O1 >_<
16:56:26 -!- Behold has joined.
16:56:53 <elliott> Gregor: Maybe some code checks optimisation level directly... like, not direct compilation stuff
16:57:03 <elliott> Maybe -O1 is doing linker optimisations and the flags aren't
16:57:04 <Gregor> ... ARGH I'M AN IDIOT >_<
16:57:10 <Gregor> My O0 list was my O3 list :P
16:57:53 <Gregor> I thought that seemed like a lot of optimizations for O1 >_>
16:58:08 <elliott> Gregor: btw, I'd replace the long list-o'-platforms-and-flags in the hints with a link, that way the judges are less likely to elide it :P
16:58:17 <elliott> Also, it works with -O0 and -O3 but not -O1?
16:58:43 <Gregor> No, it doesn't work with -O3, but it works with all those flags that are in -O3 but not -O1.
16:59:07 <Gregor> I'm actually just shortening the list a ton, it will only have special entries for those needing special flags, which will be few. It may still be worthwhile to link it ...
16:59:44 <Gregor> This time I know I got the right list.
17:00:20 <Gregor> Maybe it's just not very good at outputting the list for -O0 >_>
17:02:47 <Gregor> I used the man page's instructions for discovering what -O<foo> does >_<
17:03:38 -!- MSleep has changed nick to MDude.
17:04:14 -!- Zuu has joined.
17:05:50 <Gregor> Yup, every friggin' flag.
17:06:14 <elliott> Gregor: Why not find out exactly what is broken about the -O1 asm :P
17:06:29 <Gregor> elliott: Because I don't speak SH4 :P
17:06:43 <elliott> Gregor: How hard can it be :P
17:08:06 <Gregor> Hm, on SPARC it seems to segfault before even getting to the JITting part ...
17:08:55 <elliott> Gregor: It works on everything, huh :P
17:09:11 <Gregor> I'm going in alphabetical order here X-P
17:10:36 <elliott> Gregor: "Works on architectures that don't start with 'S'"
17:11:20 <Gregor> Also it works on SPARC if I put a printf in my record function X-D
17:11:48 <Gregor> OHHH fussing with the stack.
17:12:10 <elliott> Gregor: Just call a dummy function in record? :P
17:12:28 <Gregor> That I am! (Problem is that dummy functions tend to get inlined, but I'm sure I can find somethin')
17:12:40 <Gregor> Presumably something is stackweird if it's a leaf *shrugs*
17:13:23 <Gregor> Or, y'know, it only works if it's printf.
17:13:25 <elliott> <Gregor> That I am! (Problem is that dummy functions tend to get inlined, but I'm sure I can find somethin')
17:13:37 <elliott> Gregor: volatile __attribute__((noinline)) :P
17:13:45 <Gregor> elliott: No GCC-specifics.
17:14:58 <Gregor> The bigger problem though is that it only works if it's printf X-D
17:15:50 <elliott> Gregor: Maybe it's about what you pass to printf.
17:15:56 <elliott> Gregor: Maybe you're forcing something from a register to the stack.
17:16:01 <Gregor> elliott: OK, puts works.
17:16:39 <elliott> Gregor: Maybe it needs to make a syscall
17:17:04 <elliott> Except wait, stdio is buffered ???
17:17:15 <elliott> Because no syscalls because buffering
17:19:07 -!- Behold has quit (Quit: Leaving).
17:21:13 <Gregor> putchar made it go CRAAAAAAAZY
17:21:35 <Gregor> I wonder if the return address on SPARC is strictly the return address ...
17:22:05 <Gregor> (As opposed to "return to here+4" or something)
17:27:46 -!- monqy has joined.
17:29:07 <olsner> Gregor: since instructions are word-sized on sparc there would be no problem with preincrementing the instruction pointer
17:29:41 <Gregor> olsner: But that would be SPARC-specific.
17:30:11 <olsner> and maybe it has delay slots (but I think that was MIPS rather than SPARC)
17:30:30 <Gregor> But delay slots are fine.
17:32:21 -!- Ngevd has joined.
17:32:28 <Ngevd> How does "Iason" decline?
17:36:53 <quintopia> depends what declension it is of course
17:58:17 <elliott> Google competing with PNG... I guess they don't aim low these days :P
17:58:38 <Ngevd> PNG the image format!?
17:58:53 <elliott> 28% smaller than recompressed PNGs, supposedly.
17:59:35 <elliott> Ooh, you can encode all channels except the alpha lossily, and just have lossless alpha... that's a neat trick.
18:01:21 <elliott> http://blog.chromium.org/2011/11/lossless-and-transparency-encoding-in.html
18:02:19 <elliott> Also http://code.google.com/speed/webp/gallery2.html.
18:07:27 -!- nys has joined.
18:13:11 <Gregor> elliott: I assume that the 28% figure was with strictly-lossless?
18:15:12 -!- Ngevd has quit (Ping timeout: 245 seconds).
18:15:21 <Gregor> Hm. I wonder how well you'd do if you just took libpng and swapped out zlib for LZMA. (Ignoring speed)
18:17:02 <elliott> Gregor: Probably vastly better :P
18:17:20 <elliott> Gregor: But not only speed would be the problem, imagine how much RAM your browser would hog up...
18:17:34 <elliott> Especially phones would be fucked.
18:17:58 <Gregor> Now for ultimate portability, we'll reimplement LZMAPNG in JavaScript.
18:18:02 <Gregor> And do the image decoding in-VM.
18:18:23 <elliott> "Small code size and relatively low memory overhead, particularly with smaller dictionary lengths, and free source code make the LZMA decompression algorithm well-suited to embedded applications."
18:18:28 <elliott> Uhh, are Wikipedia on crack?
18:18:36 <elliott> I'm pretty sure LZMA decoding sucks compared to gzip decoding :P
18:18:47 <elliott> Gregor: That'll be SO FAST
18:18:54 <elliott> Gregor: Decompess to a data: URI.
18:19:12 <Gregor> Which is itself a PNG :)
18:19:57 <elliott> Gregor: Nahh, BMP, so you can load incrementally by just appending strings
18:21:46 <Gregor> elliott: NOOOOOOOOOOOOOO my new system doesn't work on VAX either :'(
18:22:06 <elliott> lol, tanenbaum won't admit linux has won
18:22:26 <Gregor> elliott: Donno yet, debuggling.
18:22:52 <Gregor> <elliott> lol, tanenbaum won't admit linux has won
18:23:21 <elliott> LinuxFr.org : If you could return in the past to change the MINIX original proprietary licence to the GPL licence, do you think your system might have become the dominant free OS today?
18:23:21 <elliott> Andrew Tanenbaum : Never. The reason MINIX 3 didn't dominate the world has to do with one mistake I made about 1992. At that time I thought BSD was going to take over the world. It was a mature and stable system. I didn't see any point in competing with it, so I focused MINIX on education. Four of the BSD guys had just formed a company to sell BSD commercially. They even had a nice phone number: 1-800-ITS-UNIX. That phone number did them and me in
18:23:21 <elliott> . AT&T sued them over the phone number and the lawsuit took 3 years to settle. That was precisely the period Linux was launched and BSD was frozen due to the lawsuit. By the time it was settled, Linux had taken off. My mistake was not to realize the lawsuit would take so long and cripple BSD. If AT&T had not brought suit (or better yet, bought BSDI), Linux would never have become popular at all and BSD would dominate the world.
18:23:25 <elliott> Now as we are starting to go commercial, we are realizing the value of the BSD license. Many companies refuse to make major investments in modifying Linux to suit their needs if they have to give the code to their competitors. We think that the BSD license alone will be a great help to us, as well as the small size, reliability, and modularity.
18:23:30 <elliott> LinuxFr.org : Yet we see the contributions of numerous companies during each development cycles of the Linux kernel (Intel, IBM, Novell, Google, Oracle, Broadcom, Samsung, TI, Freescale, Fujitsu, etc).
18:23:33 <elliott> Andrew Tanenbaum : Clearly some companies are willing to do this but I also know of quite a few companies that refuse to use Linux for this reason. It depends on the company and whether it feels its contribution would help its competitors. Also it is easy to overestimate what companies have contributed. Usually it is things that benefit them directly, like making sure their drivers and programs work on Linux.
18:23:40 <elliott> LinuxFr.org : Do you think the Linux success is a proof he was right or is it unrelated?
18:23:42 <elliott> Andrew Tanenbaum : No, Linux "succeeded" because BSD was frozen out of the market by AT&T at a crucial time. That's just dumb luck. Also, success is relative. I run a political website that ordinary people read. On that site statistics show that about 5% is Linux, 30% is Macintosh (which is BSD inside) and the rest is Windows. These are ordinary people, not computer geeks. I don't think of 5% as that big a success story.
18:23:46 <elliott> LinuxFr.org : So you don't think the so-called "fairness" of the GPL ("your improvements need to be available the same way the original is available"), the bazaar model and a great project leader triggered the contributions to the Linux kernel? For you it's only dumb luck?
18:23:51 <elliott> Andrew Tanenbaum : Yes, I think Linux succeeded against BSD, which was a stable mature system at the time simply because BSDI got stuck in a lawsuit and was effectively stopped for several years.
18:25:47 <Gregor> It's not an entirely unreasonable argument, really, although his success comparison with Mac being "BSD inside" is a bit silly.
18:26:15 <elliott> Gregor: I was giving him the benefit of the doubt until "lol only 5% of the visitors to my website use linux qed"
18:26:35 <elliott> Gregor: But wait, MINIX is definitely winning, people just aren't telling anyone else about it:
18:26:37 <elliott> LinuxFr.org : Since 2005, MINIX 3 has been designed to be an OS for resource-limited and embedded computers and no more as a teaching tool only. Is MINIX being taken up in industry at present?
18:26:37 <elliott> Andrew Tanenbaum : In truth, one of the problems with the BSD license is that I don't know. Companies using it don't have to tell us anything. My experience is that a lot of companies don't like to talk about what technology they are using. But we are starting to make a real effort in embedded systems now.
18:27:37 <Gregor> NEWSFLASH: Companies everywhere use MINIX! When asked why, unanimously they were quoted as saying "Because FUCK TORVALDS and FUCK STALLMAN, THAT'S WHY!"
18:28:05 <elliott> Gregor: No, it's 'cuz their lawyers don't let them use ANY GPL'D SOFTWARE WHATSOEVER
18:28:08 <elliott> EVEN IF THEY DON'T WANT TO MODIFY IT
18:28:28 <elliott> Gregor: Their legal team was quoted as saying "AAARGH GET THE COOTIES OFF OUR SERVERS"
18:28:45 <Gregor> Sounds like something Microsfot would say.
18:32:30 <Gregor> I wonder how much GPL software is in a standard MINIX system.
18:32:40 <Gregor> My bet: More than none.
18:36:06 <Gregor> elliott: Is the return address on VAX ... two bytes beyond where you return to ...
18:36:51 <elliott> Gregor: After you call record(), examine the (now garbage) piece of stack that its return value was on and compare to the IP?
18:36:55 <elliott> Might be tricky to do portably :P
18:37:08 <Gregor> I can't compare to the IP.
18:37:38 <Gregor> I think I'm gonna have to switch back to my old solution :(
18:37:41 <elliott> Gregor: Call record() at the very top of the function
18:37:44 <elliott> Gregor: Compare to the address of the function
18:37:53 <Gregor> elliott: Hello, prologue?
18:38:00 <Gregor> elliott: I do that to find the prologue anyway.
18:38:01 <elliott> Gregor: Yes, so find out how large the prologue is
18:38:05 <elliott> And subtract that from the return value
18:38:06 -!- Ngevd has joined.
18:38:32 -!- ais523 has joined.
18:38:35 <elliott> Gregor: Of course that means you have to detect the prologue in some other way, but... here's an idea
18:38:44 <elliott> Gregor: Just scan the function code for the address of record.
18:38:45 <Gregor> The return address is right.
18:38:49 <Gregor> So the bug is elsewhere.
18:38:50 <elliott> Then you just need to know how long "CALL" is.
18:38:51 <Ngevd> Gregor, how goes IOCCC?
18:38:59 <Gregor> Ngevd: My new version is either better or worse.
18:39:22 <Ngevd> Like that comic my dad reads from time to time!
18:39:34 <elliott> Gregor: What WAS your old version?
18:39:39 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
18:39:51 <Gregor> elliott: The version you've seen...
18:40:05 <elliott> Gregor: I have no idea how it actually JITted :P
18:40:33 <Gregor> It had a separate function per each template, detected the absolute minimum prologue/epilogue, then copied out the appropriate parts from each function.
18:40:40 <Gregor> It was very sensitive to varying pro/epilogues.
18:42:36 -!- Phantom_Hoover has joined.
18:47:41 <CakeProphet> remind me not to read tvtropes stuff about homestuck anymore.
18:54:25 <CakeProphet> Gregor: dude so what if you like JIT from the future.
18:54:36 <CakeProphet> you just have to compile the program sometime in the future.
18:55:26 <CakeProphet> actually no you'd want to JIT in the future
18:55:31 <CakeProphet> so your future-JIT can take as much time as it wants
18:55:43 <CakeProphet> and the present-JIT will just grab code from the future.
18:55:52 <CakeProphet> this is all totally feasible in Feather, I imagine.
18:56:40 <Gregor> elliott: Hm, VAX is definitely doing something skwonky with return addresses ...
18:57:02 <elliott> Gregor: Just google, man, VAX's insanities will be well-documented.
19:02:00 <Gregor> Literals and the calculated size for the code to generate that literal.
19:02:36 <elliott> Gregor: ...111112 bytes to generate 111112?
19:02:46 <Gregor> elliott: Shocking, innit!
19:03:00 <elliott> Gregor: But... isn't that just a mov...
19:03:19 <Gregor> elliott: It's certainly not 111112 bytes worth of bullshit X-D
19:04:46 <Gregor> I think I figured out what's going on X-D
19:05:00 <Gregor> All my literals are in the same range as valid addresses X-D
19:05:16 <Gregor> So the heuristic for determining whether it's an address or not goes all shitty.
19:07:18 <CakeProphet> I'm still really confused why 111112 requires 111112 bytes to generate...
19:07:52 <CakeProphet> while other increments of previous numbers take 1 or whatever.
19:07:57 <Gregor> It doesn't, it was the heuristic that was wrong.
19:08:38 <Gregor> VAX can only generate the value 111112 by incrementing 0 111112 times, not by generating 111111 and incrementing it.
19:09:55 <CakeProphet> Gregor: well, unless generating a number n requires that you generate n-1 and then increment, and generating 0 is the base case.
19:10:00 <CakeProphet> then those two statements are equivalent. :>
19:11:46 <Gregor> I'm improving my heuristic :P
19:11:50 <elliott> The problem with arguing with idiots on reddit for fun is that you have to deal with idiots on reddit.
19:11:53 <Gregor> Ya never know, this may be what was broken on SPARC too.
19:12:18 <CakeProphet> elliott: I thought you would have figured that out earlier. :P
19:12:47 <Gregor> YOU VAXY PIECE OF GARBAGE
19:12:58 <Gregor> Why are there so many ambiguous constants in my stack :'(
19:13:22 <CakeProphet> if you pop things then there won't be anything at all
19:14:17 <elliott> "APA stands for Associative Processing Array, a kind of content-addressable memory. Just memory. How do you compute using just memory? The operations are done right there, near the cells where your bits are kept. No need to read your data word by word into a processor, than write it back - rather, your operations run in parallel, inside the memory, on every data word! SIMD operations on steroids."
19:14:33 <elliott> Gregor: Why not pad out the constants?
19:14:38 <elliott> Push all-0s, push value, push all-0s
19:15:33 <CakeProphet> elliott: the operations are GONE RIGHT THERE?
19:16:01 <elliott> Assuming a contiguous stack...
19:16:31 <Gregor> elliott: Remember that anything I do at detection time, I do at runtime.
19:16:36 <elliott> I like how CakeProphet just says stupid things all day.
19:16:45 -!- Darth_Cliche has joined.
19:16:46 <elliott> Gregor: You can erase arbitrary code sections with your void(void) funptr...
19:17:04 <Gregor> elliott: I haven't tested that yet :P
19:17:17 <elliott> Gregor: There we go then! No complaint :)
19:17:43 <CakeProphet> elliott: how are the operations done right there?
19:18:53 <Gregor> wtf, can I seriously have the return address at a different point on the stack depending on what literal I'm pushing X-D
19:19:05 <CakeProphet> how would you go about extending Haskell so that :: could be defined within Haskell as a normal operator?
19:20:19 <elliott> You mean (x::T) evaluating to x but with type T?
19:20:24 <elliott> You can't use operators as declarations, that's nonsense.
19:20:38 <elliott> CakeProphet: Well that's easy-ish...
19:20:50 <CakeProphet> the question was to create a hypothetical extension in which you could do things like that.
19:21:07 <elliott> CakeProphet: Uh, so do you want the first thing I said, or do you want the second thing I said?
19:21:10 <elliott> You are contradicting yourself.
19:21:27 -!- copumpkin has changed nick to damocles.
19:21:39 <elliott> <elliott> You mean (x::T) evaluating to x but with type T?
19:21:42 <elliott> <elliott> You can't use operators as declarations, that's nonsense.
19:21:45 <elliott> <CakeProphet> the question was to create a hypothetical extension in which you could do things like that.
19:21:57 <elliott> You either want the first thing I said, or the second; first answer implies first, second answer implies second.
19:22:13 <Gregor> elliott: lol, I can push any literal but 1.
19:22:21 <elliott> Gregor: Just push 2 and subtract 1 :)
19:22:39 <Gregor> How can I subtract 1 with no 1! ;)
19:23:09 <elliott> Gregor: Push 3 and subtract 2
19:23:29 <Gregor> elliott: I'd rather figure out wtf is going on thank you very much.
19:23:36 <elliott> Gregor: No this is the best.
19:24:13 -!- damocles has changed nick to copumpkin.
19:25:04 <CakeProphet> elliott: I suppose :: doesn't really worklike an operator, so, yeah..
19:25:20 <elliott> CakeProphet: There are two infix uses of ::.
19:25:27 <elliott> You have not specified which you want to make non-primitive.
19:25:56 <CakeProphet> made it not actually sound like you were specifying the two things.
19:26:18 <CakeProphet> one was just a question, the other was you saying it was nonsensical.
19:26:59 <CakeProphet> the one that's used within expressions, I suppose.
19:28:14 <Ngevd> Wouldn't that need a type type?
19:28:26 <elliott> CakeProphet: Dependent types make that pretty trivial.
19:28:30 <elliott> CakeProphet: Although (A :: x) is easier.
19:28:46 <elliott> That's (::) :: (a :: Type) -> a -> a
19:29:10 <elliott> You can flip (::) but that messes with the quantification, but I suppose it could work.
19:29:26 <elliott> (::) :: forall a. a -> (b::Type) -> (a ~ b) => a
19:40:17 -!- zzo38 has joined.
19:40:54 <Gregor> Something is clearing my variable.
19:40:57 <Ngevd> Trivia: greater is the only bi-directional Piet command
19:42:08 <CakeProphet> elliott: I wonder what else you could do with a type type.
19:42:18 <elliott> CakeProphet: Nothing much, without dependent typing.
19:45:06 <Gregor> looooooooooooooool buffer overflow.
19:45:10 <Gregor> I am the greatest C programmer.
19:45:43 <Ngevd> Gregor, is your program still less than or equal to 140 characters?
19:45:57 <Gregor> Ngevd: This is an unrelated program ;P
19:46:07 <Gregor> Ngevd: My tweetable interpreter will probably be another submission.
19:47:56 <CakeProphet> tweetable code. what an effective marketing strategy.
19:48:33 <Gregor> Well wouldja look at that, I have a working dc on VAX :P
19:50:13 <Ngevd> Youtube supports Feather!
19:51:25 <CakeProphet> http://channel9.msdn.com/Forums/Coffeehouse/Prototyping-New-Language-With-Haskell
19:53:34 <Ngevd> It will fade into obscurity like Mondrian and the first Numberwang
20:10:26 -!- Slereah has joined.
20:10:36 -!- Slereah_ has quit (Ping timeout: 260 seconds).
20:10:55 -!- sebbu2 has joined.
20:11:01 -!- oerjan has joined.
20:12:43 <Ngevd> Phantom_Hoover, oh god
20:12:56 <oerjan> Vorpal: YOUR METHOD AIN'T WORKING
20:14:06 -!- sebbu has quit (Ping timeout: 260 seconds).
20:14:18 <olsner> hrrg, most people on that page seem to be playing WordWang, but somehow they manage to hit NumberWang anyway
20:14:46 <oerjan> supercalifragilisticexpialidocious
20:17:52 <Ngevd> Would it be possible to make a game in XML+SVG+XML Events+XSLT?
20:21:44 -!- tiffany has joined.
20:23:19 -!- tiffany has left.
20:26:23 <oerjan> <Phantom_Hoover> Dammit ais where are you when I'm being paranoid. <-- obviously reporting you to THEM
20:34:37 <oerjan> <elliott> Assuming a contiguous stack... <-- of spherical cows?
20:37:06 <oerjan> <CakeProphet> elliott: I suppose :: doesn't really worklike an operator, so, yeah.. <-- i've been thinking before that (:: T) should be a legal section, it would be useful
20:37:28 <elliott> oerjan: I agree, but (x ::) would be much more fun.
20:38:36 <elliott> oerjan: quick, name (a -> b) -> Tagged a b
20:38:39 <oerjan> but then in some sense that's how System F/Core implements polymorphic values
20:38:46 <elliott> (so you can e.g. do "foo bitSize :: Tagged Word32 Int"...)
20:39:15 <Ngevd> Phantom_Hoover, your move
20:39:50 <oerjan> elliott: um there's no way to implement that, since you don't actually _have_ a b.
20:40:09 <elliott> oerjan: It's for converting things that use (a -> b) as (Tagged a b), silly :P
20:40:22 <elliott> Implementation is \f -> Tagged . f $ error "YOU LIED TO ME"
20:41:03 <elliott> oerjan: hoover :: (a -> b) -> Tagged a b
20:42:38 <oerjan> elliott: or tagomize (far side reference)
20:43:02 <ais523> elliott: it was in response to your "oh, hi"
20:43:10 <elliott> I was going to ask ais523 whether he was termcasting or not but then I realised he wasn't \unfoogy.
20:43:11 <ais523> I was trying to find an even more noncommital way to say it
20:43:29 <ais523> and I'm not playing right now; in fact, I'm at work, but that's just because I haven't gone home yet
20:43:35 <Phantom_Hoover> Hey, ais523, can motherboards dissolve in slightly humid air?
20:43:41 <ais523> I was with friends earlier, and it was much nearer home than work
20:43:52 <ais523> Phantom_Hoover: err, they're not water-soluble, as far as I know
20:44:23 <ais523> copper tracks can be damaged by humidity, but any sane motherboard manufacturer knows that and will lacquer them to prevent them being damaged like that
20:44:42 <ais523> (an easy way to tell if copper's been lacquered or not: if it hasn't been, it tend to be copper-coloured rather than green)
20:45:20 <ais523> (transparent lacquer exists but isn't used commercially because it's more expensive than the green sort; it's pretty good for applying by hand, though)
20:46:11 <Phantom_Hoover> OK basically what I'm saying is will leaving the motherboard, CPU and RAM in an antistatic bag with the opening folded over for 6 days in a room which is occasionally used for washing up result in it exploding?
20:46:14 <oerjan> just use a chlorine atmosphere, dugh
20:47:08 <elliott> eww, why would you implement an API like that
20:47:24 <Ngevd> Phantom_Hoover, nah, had to empty the dishwasher
20:47:43 <Ngevd> Phantom_Hoover, your turn
20:47:44 <oerjan> application painful interface
20:48:24 <ais523> Phantom_Hoover: it should be fine
20:48:38 <ais523> you'll want to make sure they're dry before actually switching the thing on
20:48:50 <ais523> but the motherboard is exposed to humidity inside the case just as much as it is outside it
20:48:54 <ais523> as it relies on air for cooling
20:49:15 <Phantom_Hoover> I am seriously beginning to doubt Colloson's impartiality.
20:52:12 <ais523> elliott: which API is that?
20:52:18 <Ngevd> And you, Phantom_Hooverwang
20:52:25 <elliott> ais523: this opencl binding
20:53:52 <ais523> elliott: tell me when they've stopped, if I'm still here? I just /ignored both of them
20:54:42 <CakeProphet> I don't really think (x ::) could be used in normal Haskell.
20:55:21 <Ngevd> I'm goodwang at this
20:55:33 <CakeProphet> for example, map (x ::) [SomeTypes, GoHere]
20:55:51 <ais523> hmm, is the discussion about the fact that that doesn't parse?
20:55:51 <zzo38> CakeProphet: That seem non-meaningful
20:56:07 <CakeProphet> it's a continuation of a discussion about :: as an operator
20:56:07 <ais523> oh right, I confused Haskell with OCaml
20:56:13 <ais523> where :: is a perfectly reasonable operator
20:56:37 <Ngevd> I am scarewangly good at this
20:56:46 <zzo38> Not only would (x ::) not be a meaningful function, but you cannot map in that way anyways since the types don't match
20:57:06 <CakeProphet> but it could be a meaningful function in a dependently typed language.
20:57:34 <elliott> <ais523> elliott: tell me when they've stopped, if I'm still here? I just /ignored both of them
20:57:44 <elliott> ais523: you can check the logs yourself...
20:57:50 <zzo38> Then, maybe you could add a dependent type extension to Haskell and then add (x ::) to that extension
20:57:53 <ais523> but that would mean actually looking at all the wanging
20:57:54 <CakeProphet> ais523: zzo38: scroll up just a bit to get the context.
20:58:28 <CakeProphet> (:: T) seems more useful in normal Haskell usage.
20:58:44 <lambdabot> Illegal result type signature `Int'
20:58:44 <lambdabot> Result signatures are no longer supported in pattern matches
20:58:44 <lambdabot> In a lambda abstraction: \ x :: Int -> x
20:59:03 <Ngevd> Phantom_Hoover, it's your turn
20:59:06 <Deewiant> ?ty (`asTypeOf` (undefined :: Int))
20:59:43 <ais523> oh, I see, asTypeOf has a type annotation in order to do its astypeofing
20:59:49 <Ngevd> But it's your turn
21:00:03 <ais523> I thought the impl would be something like a conditional that always took the same branch, I forgot you didn't /have/ to use the inferred types
21:00:43 <CakeProphet> I guess const sort of is a conditional that always takes the same branch. :P
21:01:06 <Ngevd> Your turn, Phantom_Hoover
21:01:08 <oerjan> well yes, const is the church encoding of True
21:01:17 -!- GreaseMonkey has joined.
21:01:17 -!- GreaseMonkey has quit (Changing host).
21:01:17 -!- GreaseMonkey has joined.
21:01:17 <CakeProphet> oerjan: I was wondering if someone would throw that in :P
21:01:36 <Ngevd> Your turn, Phantom_Hoover
21:01:58 <elliott> ais523: oerjan: hmm, would a language that forced you to use the most general inferred types be TC?
21:02:06 <oerjan> actually asTypeOf is even closer, it also has the expected type for a church encoded boolean
21:02:08 <elliott> I think yes, since Haskell without type signatures and type classes is TC
21:02:34 <ais523> elliott: I don't see why it wouldn't be TC at all
21:02:40 <ais523> especially as I think you could write astypeof in it
21:02:45 <Ngevd> Phantom_Hoover, your turn
21:03:42 <CakeProphet> sir, sir. I think you need to calm down, sir.
21:04:06 <Ngevd> Ngevd, no wait, that's me
21:04:10 <Ngevd> CakeProphet, I REFUSE
21:04:23 <oerjan> let asTypeOf x y = if True then x else y
21:04:48 <oerjan> heh that's actually circular, i think
21:05:14 <olsner> well, time to go, see you in about a week
21:05:35 <Ngevd> Phantom_Hoover, your godwang turn!
21:05:49 <oerjan> ais523: hm i'm not sure you could do it with just functions
21:06:07 -!- olsner has quit (Quit: Leaving).
21:06:28 <ais523> oerjan: why do you think that definition of asTypeOf above is circular? it's how I'd implement it
21:06:54 <oerjan> ais523: because as i said above, asTypeOf is the closest thing to a church encoding of True
21:07:33 <ais523> what about just defining church-true and church-false by hand, then doing a complicated computation that returns one or the other?
21:07:43 <ais523> that'd force the results to be the same type
21:07:47 <CakeProphet> oerjan: doesn't mean you have to construct every language the same way.
21:07:54 <ais523> it doesn't even have to be that complicated, it just has to look to the type system like it might return false
21:08:02 <oerjan> well the question is _can_ you make that
21:08:39 <elliott> oerjan: what about (not (not true))?
21:08:52 <ais523> > let true x y = x; let false x y = y; let nand x y = x (y false true) (y true true)
21:08:53 <lambdabot> <no location info>: parse error (possibly incorrect indentation)
21:09:14 <oerjan> CakeProphet: well i'm saying that using True is cheating because you could not actually recode True in terms of just functions while preserving the type restriction
21:09:17 <ais523> :t let true x y = x in let false x y = y in let nand x y = x (y false true) (y true true) in nand
21:09:18 <lambdabot> forall t t1 t2 t3 t4. (t -> t -> t1) -> ((t2 -> t2 -> t2) -> (t3 -> t4 -> t3) -> t) -> t1
21:10:07 <ais523> well, that forced a t2->t2->t2 into the middle of the expression
21:10:09 <ais523> :t let true x y = x in let false x y = y in let nand x y = x (y false true) (y true true) in nand true
21:10:10 <lambdabot> forall t t1 t2 t3. ((t1 -> t1 -> t1) -> (t2 -> t3 -> t2) -> t) -> t
21:10:30 <elliott> ais523: what a terrible way to fix it
21:10:38 <elliott> ais523: what type do you think (let true x y = x; let false x y = y; let nand x y = x (y false true) (y true true)) has?
21:10:48 <ais523> elliott: not a very simple one
21:11:01 <elliott> ais523: there is no expression, where is your "in" clause?
21:11:14 <elliott> ais523: more importantly, you never close any of the "let"s
21:11:20 <elliott> :t let true x y = x; false x y = y; nand x y = x (y false true) (y true true) in nand
21:11:20 <ais523> elliott: you're looking at the wrong line
21:11:21 <lambdabot> forall t t1 t2 t3 t4. (t -> t -> t1) -> ((t2 -> t2 -> t2) -> (t3 -> t4 -> t3) -> t) -> t1
21:11:30 <elliott> ais523: no, I'm not, I'm saying you fixed it in a ridiculous manner
21:11:31 <ais523> <ais523> :t let true x y = x in let false x y = y in let nand x y = x (y false true) (y true true) in nand
21:11:50 <ais523> elliott: btw, the version without an in works just fine in OCaml
21:11:58 <ais523> the interp responds by telling you the name and type of everything you defined
21:12:02 <ais523> and the value, if it's not a function
21:12:14 <lambdabot> Network.BufferType buf_append :: BufferOp a -> a -> a -> a
21:12:14 <lambdabot> Prelude atan2 :: RealFloat a => a -> a -> a
21:12:20 <elliott> ais523: evaluating syntactic nonsense like that is not a feature
21:12:40 <ais523> it's something that you'd write a lot in an actual program
21:12:48 <elliott> no it isn't, because it isn't valid haskell
21:12:51 <ais523> in a program you'd typically follow it with something that /used/ the definitions
21:12:53 <elliott> "let" is rare in haskell, anyway
21:13:03 <elliott> ais523: similarly, int main() { is valid C
21:13:07 <ais523> but in a REPL, that's typically going to be on a future line
21:13:11 <copumpkin> ais523: what would they scope over?
21:13:16 <elliott> yes, which is why "let x = y" works in GHCi
21:13:17 <ais523> copumpkin: future lines in the same REPL
21:13:17 <copumpkin> ais523: in ghci, you can write let without in
21:13:22 <oerjan> oh hm i think i got it, using how lambdas are monomorphic internally
21:13:39 <elliott> but "let a = b; let c = d" is most assuredly not an expression
21:13:45 <Ngevd> Phantom_Hoover, your turn
21:13:47 <ais523> elliott: I was using ; as newline
21:13:52 <ais523> is that not valid in Haskell?
21:14:13 <elliott> ais523: that's a bit of a loaded question; I'm sure "a;b" doesn't mean "a\nb" in OCaml...
21:14:31 <oerjan> :t (\id x y -> (\x y -> x) (id x) (id y)) (\x -> x)
21:14:34 <elliott> anyway, no, because the layout isn't right
21:14:38 <ais523> I don't think OCaml needs anything there at all, it isn't whitespace-sensitive
21:14:56 <ais523> # let a = 1 let b = 2 ;;
21:15:10 <elliott> the layout doesn't work out
21:15:11 <ais523> whereas Haskell is, so you can't just write space to mean newline
21:15:13 <elliott> because the "let"s aren't aligned
21:15:18 <elliott> ais523: do { let a = 3; let b = 4; ... }
21:15:33 <Deewiant> ?ty do let { a = b }; let { c = d }; Just 1
21:15:52 <Deewiant> ?ty do { let a = b ; let c = d; Just 1 } -- elliott
21:16:04 <lambdabot> forall a a1. (Enum a1) => a1 -> a -> a -> a
21:16:09 <ais523> :t do let { a = b } ; let { c = d } ; return 1
21:16:10 <lambdabot> forall t (m :: * -> *). (Num t, Monad m) => m t
21:16:25 <elliott> do let {a = 3}; let {b = 4}
21:16:45 <elliott> basically all we're learning here is that ais523 doesn't know Haskell's layout rules, but this is irrelevant anyway as lambdabot isn't a REPL
21:16:48 <elliott> it's an expression evaluator
21:16:56 <ais523> CakeProphet: using !! there is cheating, I think, but the same idea can be done without it, I Think
21:17:22 <elliott> CakeProphet: you can't construct lists like that with the lambda calculus
21:17:37 <ais523> :t \a b -> case [a,b] of [x,_] = x; otherwise = x
21:17:40 <CakeProphet> elliott: erm, why did the topic suddenly switch to lambda calculus?
21:17:43 <ais523> :t \a b -> case [a,b] of [x,_] -> x; otherwise -> x
21:17:58 <CakeProphet> I thought it was "can you write asTypeOf with functions and no explicit type declarations in Haskell"
21:17:58 <ais523> elliott: so that's a solution abusing the type of cons
21:18:00 <elliott> ais523 also doesn't know how scoping works
21:18:02 <ais523> :t \a b -> case [a,b] of [x,_] -> x; otherwise -> a
21:18:13 <ais523> elliott: not scoping, just a thinko
21:18:17 <ais523> although a pretty funny one
21:18:35 <ais523> that's actually flip astypeof, but I don't care
21:18:38 <oerjan> CakeProphet: well, lists are not functions
21:18:53 <Ngevd> `echo "ais523: wiki spam"
21:18:54 <oerjan> and also, i did it above
21:18:58 <oerjan> :t (\id x y -> (\x y -> x) (id x) (id y)) (\x -> x)
21:19:10 <elliott> oh i didn't see you do that
21:19:17 <elliott> oerjan: that doesn't work in lambda calculus though :P
21:19:34 <oerjan> elliott: it works in lambda calculus with the hindley-milner type system
21:19:34 <elliott> hmm, which lambda calculus are we even talking about?
21:19:40 <elliott> it's a nonsense question in untyped LC ofc
21:19:46 <elliott> STLC seems like the interesting one here
21:19:48 <oerjan> which is the one which requires let for polymorphism
21:19:54 <ais523> what /is/ up with the excela spambots?
21:20:04 <ais523> they seem to be running articles through babelfish twice or something
21:20:20 <Phantom_Hoover> Ngevd, you might as well just give in now, you won't top that one.
21:20:33 <ais523> also, what is that language?
21:20:38 <ais523> it seems to allow embedded Ruby, at least
21:20:51 <Ngevd> Phantom_Hoover, you're rightwang
21:20:59 <ais523> well, it's obviously not identical to Ruby
21:21:02 <elliott> ais523: http://esolangs.org/wiki/Cobol_on_Cogs; delete for offtopic
21:21:02 <ais523> and yet it's incredibly similar
21:21:14 <Ngevd> Phantom_Hoover, but we have equal score, call it a tie?
21:21:32 <ais523> elliott: what do you think of Smjg's comment on the talk page?
21:21:39 <Ngevd> elliott, tell ais523 to unblock us
21:21:43 <ais523> I think it's misinterpreting mine
21:21:56 <elliott> ais523: "misinterpreting mine"?
21:22:03 <ais523> my comment on the talk page
21:22:12 <elliott> I think so too, but am not sure of the relevance
21:23:15 <oerjan> elliott: you are joking about cobol on cogs, of course.
21:23:51 <oerjan> no way that's not esoteric :P
21:24:01 <CakeProphet> C on Crack. Perl on Propellers. Scheme on Speed. Python on Poop. C# on This. Is. Stupid.
21:24:39 <elliott> oerjan: pls no promotion of the "anything unserious is esoteric" meme :(
21:24:46 <elliott> that's what got us LOLCODE
21:25:03 * oerjan promotes with the swatter -----###
21:25:23 <CakeProphet> esolangs are all about the THEORETICAL AWESOME of course.
21:25:27 <ais523> elliott: I think lolcode is esoteric
21:25:34 <ais523> it's a thematic language; it's uninteresting semantically
21:25:41 <ais523> but it fits the requirements to be an esolang
21:25:57 <elliott> ais523: http://esolangs.org/wiki/Talk:Cobol_on_Cogs#Off-topic
21:26:01 <CakeProphet> and it's pretty much just an OO stack machine with weird syntax.
21:26:10 <elliott> you can wait for someone else to express an opinion, I suppose :P
21:26:14 <ais523> elliott: I'll wait for other comments, like usual
21:26:19 <elliott> CakeProphet: how many OO stack machines are there?
21:27:00 <oerjan> more like stuck machine *HACK* *COUGH* *WHEEZE*
21:28:08 <oerjan> don't get stuck by putting stock in stack machines, stick to stg
21:28:25 <oerjan> wait that has a stack. strike that.
21:31:43 <elliott> stackless spineless tagless g-machine
21:32:09 <elliott> I wonder if there are any processors with a cactus stack.
21:34:01 -!- MDude has quit (Ping timeout: 276 seconds).
21:34:32 <CakeProphet> !glass {M[m(_o)O!(_a)A!<2><2>(_a)a.?(_o)(on).?]}
21:35:37 -!- elliott_ has joined.
21:35:39 -!- elliott has quit (Read error: Connection reset by peer).
21:41:48 <zzo38> Now I made ligatures work in the Haskell program for DVI processing
21:41:59 -!- pikhq has joined.
21:42:18 <CakeProphet> !glass {M[m(_o)O!(_a)A!n<5>=t<1>=/ntnn1(_a)s.?(_a)m.?=nn1(_a)s.?=\t(_o)(on).?]}
21:42:20 <zzo38> (It is not needed to read a DVI file, but kerning/ligature is useful when writing DVI files)
21:42:43 -!- DCliche has joined.
21:43:20 <CakeProphet> !glass {M[m(_o)O!(_a)A!n<5>=t<1>=/nttn(_a)m.?=nn1(_a)s.?=\t(_o)(on).?]}
21:44:51 -!- Darth_Cliche has quit (Ping timeout: 240 seconds).
21:45:00 -!- pikhq_ has quit (Ping timeout: 258 seconds).
21:46:57 <CakeProphet> !glass {M[m(_o)O!(_a)A!n<5>=t<1>=/nttn(_a)m.?=nn<1>(_a)s.?=\t(_o)(on).?]}
21:47:54 <Phantom_Hoover> Someone distract me before I start wanting to kick babies.
21:49:46 <oerjan> that's quaternionwang!
21:54:38 <CakeProphet> !glass {M[m(_o)O!(_a)A!(_n)<5>=(_t)<1>=/(_n)(_t)(_t)(_n)(_a)m.?=(_n)(_n)<1>(_a)s.?=\(_t)(_o)(on).?]}
21:57:34 <CakeProphet> !glass {M[m(_o)O!(_a)A!(_n)<5>=(_t)<1>=/(_n)(_t)(_t)*(_n)*(_a)m.?=(_n)(_n)*<1>(_a)s.?=\(_t)*(_o)(on).?]}
22:00:47 <Phantom_Hoover> "Homeomorphic to a 3-sphere." — Minecraft title screen text.
22:01:07 <Phantom_Hoover> Protip, Notch: if you're going to make glib little references to maths, *get them right*.
22:01:37 <CakeProphet> Phantom_Hoover: you assume that most people actually care that it's correct.
22:01:53 <elliott_> Phantom_Hoover totally said that.
22:02:15 <CakeProphet> Phantom_Hoover: I assume that you assume that most people actually care that it's correct.
22:03:17 <oerjan> well, does minecraft have a point at infinity? if so it could be right :P
22:03:29 <oerjan> oh hm there's that height limit
22:04:01 <elliott_> oerjan: it's infinite in two dimensions and finite in one
22:04:31 <elliott_> oerjan: But IF YOU'D HELP ME WITH MY PLANETARY MODEL, I think an Elliottcraft planet would be a 3-sphere
22:04:33 <oerjan> homeomorphic to a 3-ball then, probably. assuming open.
22:04:50 <elliott_> Phantom_Hoover: It's infinite in intention and in practice.
22:04:51 <CakeProphet> you assume he is referring to the topological space of the minecraft world.
22:05:35 <elliott_> Phantom_Hoover: When will you realise that CakeProphet just says dumb things as his special version of a "joke".
22:06:04 <oerjan> elliott_: i don't see planets as being 3-spheres, really
22:06:15 <elliott_> oerjan: they're infinite in three dimensions
22:06:21 <elliott_> oerjan: Elliottcraft space travel involves moving in the fourth :P
22:06:49 <Phantom_Hoover> Also you realise that you're recreating Madoka-Kaname's stupid realm system.
22:06:53 <oerjan> R^3 + a point at infinity
22:07:10 <elliott_> Phantom_Hoover: The idea is proper space, but I don't really feel like sacrificing infinite worlds.
22:07:51 <CakeProphet> elliott_: I was saying that "homeomorphic to a 3-sphere" doesn't imply that he's specifically referring to the shape of the minecraft world, or well, anything. Especially considering the tongue-in-cheek nature of those title things.
22:07:52 <oerjan> sacrificing infinite worlds should be the goal of any respectable galactic overlord
22:09:13 -!- sebbu2 has changed nick to sebbu.
22:09:36 <elliott_> Phantom_Hoover: What if you could get four-dimensional TNT so you could blow up an entire planet with just one block's worth of damage.
22:11:44 -!- sebbu2 has joined.
22:11:44 -!- sebbu2 has quit (Changing host).
22:11:44 -!- sebbu2 has joined.
22:13:42 <elliott_> Phantom_Hoover: Gregor: "Danger Mouse co-creator Mark Hall dies after battle with cancer" ;______;
22:13:55 <elliott_> Oh good here's a more reliable source: http://www.bbc.co.uk/news/entertainment-arts-15792282
22:14:27 -!- sebbu has quit (Ping timeout: 240 seconds).
22:14:34 <elliott_> Phantom_Hoover: Why the question mark this is the SADDEST
22:15:27 <elliott_> Phantom_Hoover: Your life is woefully incomplete?
22:16:15 <CakeProphet> elliott_: but hey, I could be worse; what if I got offended by tongue-in-cheek math references
22:16:31 -!- elliott_ has changed nick to elliott.
22:16:33 -!- elliott has quit (Changing host).
22:16:33 -!- elliott has joined.
22:17:20 <CakeProphet> Phantom_Hoover: satisfactory answers to what if questions include "woah" or "dude"
22:17:39 <CakeProphet> elliott: I don't know how to accept silly invites.
22:17:53 <CakeProphet> elliott: but that's not really accepting anything
22:18:01 <elliott> That's how you accept invites.
22:18:28 <Phantom_Hoover> CakeProphet, because it's not exactly tongue-in-cheek?
22:18:43 <elliott> CakeProphet: /join #esoteric-minecraft
22:19:06 <Phantom_Hoover> It's screaming "look how clever I am, I know what a 3-sphere is" without actually /knowing/.
22:19:06 <CakeProphet> that is distinct from the normal way of joining channels.
22:19:21 <CakeProphet> Phantom_Hoover: I bet Notch knows what a 3-sphere is.
22:19:22 <elliott> Invites allow you to join invite-only channels, for one.
22:19:37 <Phantom_Hoover> CakeProphet, he evidently doesn't know what either it or homeomorphism is.
22:20:00 <Ngevd> <elliott_> Phantom_Hoover: Gregor: "Danger Mouse co-creator Mark Hall dies after battle with cancer" ;______; <-- we should make an esolang in his memory
22:20:05 <CakeProphet> based on his tongue-in-cheek reference to them? :P
22:21:33 <elliott> CakeProphet: JOIN THE FUCKING CHANNEL
22:22:50 -!- ais523 has quit (Remote host closed the connection).
22:23:40 <zzo38> Did David R. Fuchs or Donald Knuth know about functional programming languages in designing DVI format or TeX? I am just curious.
22:23:48 -!- Patashu has joined.
22:24:29 <CakeProphet> Phantom_Hoover: it's entirely possible that he knows exactly what those things are and is referring to them in an absurd manner. for other examples of Notch saying absurd things see: many other title thingies.
22:24:44 <CakeProphet> and the fact that his possibly absurd title thingy uses the terminology incorrectly does not mean that he doesn't know what they are.
22:24:55 <elliott> CakeProphet: You don't actually play Minecraft, do you?
22:24:59 <CakeProphet> but that he has instead successfully pulled someone's strings.
22:25:02 <elliott> I can assure you that Notch has no idea what he's talking about.
22:25:11 <elliott> And that the 3-sphere remark will be taken from someone else telling him it is.
22:25:38 <elliott> Now join the fucking channel
22:26:55 <CakeProphet> elliott: I refuse to concede to the demands of ruthless channel despots.
22:27:36 <CakeProphet> you are not the catholic church / expanding Islamic empire / etc
22:28:56 <Ngevd> Any particular Islamic empire?
22:29:03 <CakeProphet> I guess the Umayyad Caliphate? I dunno they probably did that in the Orthodox Caliphate too.
22:29:23 <CakeProphet> the one, that was the empire, that was islamic, back in the day, with the caliphates.
22:30:30 <CakeProphet> I could explain it, or I could just link this http://en.wikipedia.org/wiki/Islamic_empire
22:31:47 <CakeProphet> but yeah the caliphates expanded their empire by conquering people and then forcing them to either convert to Islam or die.
22:31:58 <CakeProphet> that empire is the one I was referring to.
22:32:47 <oerjan> i thought it was sort of, convert to islam or pay extra taxes, but i guess it varied a lot.
22:32:54 -!- Ngevd has changed nick to yorrick.
22:33:00 -!- yorrick has changed nick to Ngevd.
22:33:02 <elliott> `addquote <CakeProphet> but yeah the caliphates expanded their empire by conquering people and then forcing them to either convert to Islam or die. [...] <oerjan> i thought it was sort of, convert to islam or pay extra taxes, but i guess it varied a lot.
22:33:04 <HackEgo> 722) <CakeProphet> but yeah the caliphates expanded their empire by conquering people and then forcing them to either convert to Islam or die. [...] <oerjan> i thought it was sort of, convert to islam or pay extra taxes, but i guess it varied a lot.
22:33:09 -!- Ngevd has changed nick to yorrick.
22:33:16 -!- yorrick has changed nick to Ngevd.
22:33:26 <CakeProphet> I was under the impression that they were not so merciful to polytheists.
22:33:38 <oerjan> yeah there was that dhimmi distinction
22:35:37 -!- sebbu2 has changed nick to sebbu.
22:35:46 <pikhq> Could've sworn it was something like "convert to Abrahamic monotheism or die, convert to Islam or pay taxes"
22:37:10 <oerjan> i read the zoroastrians were accepted as well, in iran
22:37:48 <pikhq> Yeah, they'd have a bit of trouble trying to kill them off; that was kinda *the* religion of Iran.
22:40:01 -!- tica_chan has joined.
22:40:43 <HackEgo> tica_chan: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
22:42:03 -!- Ngevd has set topic: !.
22:42:15 <Ngevd> I did not mean to change the topic
22:42:22 <Ngevd> Not entirely sure how it happened
22:42:46 -!- oerjan has set topic: The IOCCC is back on! http://www.ioccc.org | Even a dog can learn these cat training techniques | http://codu.org/logs/_esoteric/.
22:42:49 <elliott> oerjan: wtf is `welcome and why does it exist
22:43:02 <elliott> it's `@ person ? welcome :P
22:43:10 <oerjan> elliott: it accepts more than one person
22:43:25 <elliott> oerjan: that would go in @, not a specific command...
22:43:25 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: welcoem: not found
22:43:27 <oerjan> also, no one could remember the syntax :P
22:43:27 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/welcome
22:43:37 <oerjan> elliott: it calls @ inside
22:43:42 <CakeProphet> oerjan: elliott doesn't like people installing shortcuts to other commands on HackEgo
22:43:47 <elliott> oerjan: it's about 5000 times more complicated than it needs to be :P
22:43:49 <Ngevd> tica_chan, we're a bunch of geeks
22:44:03 <oerjan> elliott: i said it accepts a list of nicks
22:44:03 <Ngevd> But comparatively few dorks!
22:44:43 <CakeProphet> elliott: official resident HackEgo despot.
22:44:47 <elliott> if [ $# -e 0 ]; then exec ? "$@"; else name=$1; shift; exec @ "$name" welcome "$@"; fi
22:45:23 <tica_chan> So... geeks and nerds make me afraid... I think I'll escape
22:45:41 <elliott> tica_chan: (if you want the other kind of esoteric, see #Philosophy)
22:45:46 <elliott> warning: it's a really crappy channel
22:46:13 <oerjan> elliott: i don't know sh syntax well enough. also welcome gets all its nick list as one argument, by HackEgo default
22:46:19 <Ngevd> tica_chan, no stay!
22:46:28 <elliott> oerjan: oh, well that's trivially fixable
22:46:36 -!- tica_chan has left.
22:46:40 <elliott> wrap whole thing in f () { ... }, do f "$*"
22:46:55 <Ngevd> Well, with any luck the topic fiasco will NEVER HAPPEN AGAIN
22:47:29 <elliott> `run echo '#!/bin/sh' >bin/welcome; echo 'if [ $# -eq 0 ]; then' >>bin/welcome
22:47:53 <elliott> `run echo ' exec ? $*' >>bin/welcome
22:48:07 <elliott> `run echo else >> bin/welcome; echo ' name=$1' >>bin/welcome; echo ' shift' >>bin/welcome
22:48:08 <oerjan> i think my (echo ...; echo ...) >... method is shorter
22:49:02 <elliott> oerjan: hmm, what was that?
22:49:06 <elliott> i didn't actually read yours, obviously >:)
22:49:42 <oerjan> just to put the piping outside all the echos
22:50:25 <oerjan> CakeProphet: yes. another reason i use perl is because sh freaks me out because i never know if i get escaping right.
22:50:55 <CakeProphet> oerjan: elliott also deleted my perl scripts. SOUNDS SUSPICIOUS DOESN'T IT. ;)
22:51:17 <elliott> oerjan: sh freaks me out too
22:51:24 <CakeProphet> `runperl print "though he may have forgot this one"
22:51:25 <HackEgo> though he may have forgot this one
22:51:31 <elliott> but thankfully irc names cannot have spaces in them.
22:51:48 <oerjan> elliott: no, but they can have \'s, i think :P
22:51:50 <elliott> `fetch http://sprunge.us/dXcP
22:51:51 <HackEgo> 2011-11-18 22:51:51 URL:http://sprunge.us/dXcP [156] -> "dXcP" [1]
22:51:57 <elliott> `run mv dXcp bin/welcome; chmod +x bin/welcome
22:52:00 <HackEgo> mv: cannot stat `dXcp': No such file or directory
22:52:05 <elliott> `run mv dXcP bin/welcome; chmod +x bin/welcome
22:52:18 <oerjan> and whatever else confuses sh
22:52:24 <HackEgo> /hackenv/bin/welcome: 7: Syntax error: end of file unexpected (expecting "fi")
22:55:19 <oerjan> <elliott> tica_chan: (if you want the other kind of esoteric, see #Philosophy) <-- is this the official redirect now?
22:55:46 <elliott> oerjan: yes; the trick is that it's a really terrible channel composed of two #esoteric rejects who are completely bizarre.
22:56:08 <elliott> you may decide for yourself whether this is a cruel joke or the best possible alternative :P
22:56:43 -!- SgeoN1 has joined.
22:57:00 <elliott> zzo38: people who came in here thinking it's about that other kind of esoteric :P
22:57:18 <zzo38> O, those people. But which ones, specifically?
23:00:22 <elliott> nothing in shell "returns" anything
23:01:12 <CakeProphet> I guess shift > /dev/null would suck for the common case
23:01:15 <HackEgo> #!/bin/sh \ f () { \ if [ $# -eq 0 ]; then \ exec ? welcome \ else \ name=$1 \ shift \ exec @ "$name" welcome "$@" \ fi \ } \ f $* \
23:01:50 <oerjan> the mind boggles at the brain that could consider this preferable to my perl.
23:03:10 <elliott> oerjan: a haskell solution will also be accepted
23:03:21 <HackEgo> now: what?: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:03:32 <HackEgo> hi: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:03:35 <zzo38> I don't know, why do you need a different one from shell script in this case.
23:03:40 <HackEgo> weird \ ick: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:03:56 -!- oerjan has changed nick to weird\nick.
23:04:05 -!- weird\nick has changed nick to oerjan.
23:04:08 <elliott> i'll write a haskell version >:)
23:04:22 <oerjan> elliott: does HackEgo _have_ haskell?
23:04:35 <HackEgo> The Glorious Glasgow Haskell Compilation System, version 7.2.1
23:04:42 <zzo38> Why do you need a Haskell version? Shell scripts works for this case (but you need to correct the mistake)
23:04:54 <oerjan> elliott: what _do_ you have against perl...
23:05:11 <oerjan> it's my second favorite language, basically
23:06:04 <oerjan> and won't haskell be slow unless precompiled
23:06:29 <elliott> do { names <- getArgs; let x:xs = ["@", name | name <- names] ++ ["?", "welcome"]; (_,_,_,p) <- proc x xs; waitforProcess p >>= ... bah
23:06:46 <elliott> oerjan: fine put the perl version back :P
23:06:55 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
23:07:10 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/welcome
23:07:18 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
23:07:23 <elliott> oerjan: if (defined($_=shift))
23:07:29 <elliott> i am more than 100% sure you can do that more nicely :P
23:08:13 <elliott> oerjan: anyway what's wrong with
23:08:17 <elliott> exec map { "@", $_ } @ARGV, "?", "welcome";
23:08:36 <elliott> exec map { "@", $_ } (split / /, $ARGV[1]), "?", "welcome";
23:08:55 <oerjan> the @ needs to get its arguments as one string
23:09:03 <HackEgo> #!/bin/sh \ if echo "$1" | grep -c ' ' >/dev/null; then \ echo -n "$1" | sed 's/ .*/: /' \ exec $(echo "$1" | sed 's/[^ ]* //') \ else \ echo -n "$1: " \ shift \ exec "$@" \ fi \
23:09:39 <oerjan> `run @ test @ this echo hi
23:09:59 <elliott> exec map { "@", $_ } ($#ARGV > 1 ? @ARGV : split(/ /, $ARGV[1])), "?", "welcome";
23:10:09 <oerjan> `run @ weird\nick @ this echo hi
23:10:20 <elliott> exec map { "@", $_ } ($#ARGV > 1 ? @ARGV : split(/\s+/, $ARGV[1])), "?", "welcome";
23:10:25 <elliott> oerjan: that's shell escaping, doofus
23:10:30 <elliott> `run @ 'weird\nick' @ this echo hi
23:10:51 <HackEgo> weird \ ick: exec: 9: weird: not found
23:11:22 * oerjan might convert elliott to perl yet at this rate
23:12:13 <elliott> oerjan: or maybe i'll implement a wonderful process handling library for haskell >:)
23:12:47 <CakeProphet> well you could always do $_=shift; if (defined)
23:13:36 <CakeProphet> but, I think that looks fine. good perl. :)
23:13:45 <oerjan> defined($_=shift) was the first thing i tried which worked
23:13:55 <oerjan> i tried just $_[0] before
23:18:12 <elliott> oerjan: you think i'm joking, but i actually just sketched a simple API right now :P
23:18:19 <CakeProphet> @_ isn't a thing in your current scope anyway.
23:18:27 <oerjan> elliott: there's rawSystem btw
23:18:34 <CakeProphet> shift uses @ARGV when outside of functions and @_ when inside them
23:18:36 <lambdabot> System.Process rawSystem :: String -> [String] -> IO ExitCode
23:18:37 <lambdabot> System.Cmd rawSystem :: String -> [String] -> IO ExitCode
23:18:41 <elliott> oerjan: yeah but it's ugly and planned for deprecation
23:18:59 <elliott> oerjan: you're meant to do everything through createProcess
23:19:34 <oerjan> elliott: have they gone completely insane?
23:19:42 <elliott> oerjan: createProcess isn't that bad...
23:20:41 <elliott> welcome :: [String] -> IO ()
23:20:41 <elliott> welcome names = startCommand cmd >=> waitProcess >>= exitWith
23:20:41 <elliott> where cmd = proc $ ["@", name | name <- names] ++ ["?", "welcome"]
23:24:41 <oerjan> proc takes the command separately. also i see no startCommand.
23:25:46 <oerjan> oh it's your own redesign?
23:27:20 <oerjan> CakeProphet: @_ is @ARGV outside functions
23:28:30 <CakeProphet> `run echo '$_=shift; s/ +/ @ /g; exec ($_?"@ $_ ":"")."? welcome";' > bin/welcome2
23:28:34 -!- MSleep has joined.
23:28:34 -!- copumpkin has joined.
23:29:59 <elliott> CakeProphet: nice complete lack of escaping.
23:30:09 <oerjan> CakeProphet: d'oh i've misread the documentation, no wonder @_ didn't work :P
23:30:23 <HackEgo> $_=shift; s/ +/ @ /g; exec ($_?"@ $_ ":"")."? welcome";
23:30:46 <oerjan> it's @ARG which is a synonym for @_, not @ARGV
23:31:46 <oerjan> CakeProphet: #!/usr/bin/perl -w , friend
23:32:44 <CakeProphet> `run {echo '#!/usr/bin/perl -w'; echo '$_=shift; s/ +/ @ /g; exec ($_?"@ $_ ":"")."? welcome";'} > bin/welcome2
23:32:47 <HackEgo> bash: {echo: command not found
23:32:53 <CakeProphet> `run { echo '#!/usr/bin/perl -w'; echo '$_=shift; s/ +/ @ /g; exec ($_?"@ $_ ":"")."? welcome";' } > bin/welcome2
23:32:55 <HackEgo> bash: -c: line 1: syntax error: unexpected end of file
23:33:05 <oerjan> CakeProphet: it should be quite clear that since \ is a legal char in a nick, you want to be very careful to avoid escape interpretation
23:33:51 <oerjan> mind you, @ also breaks it
23:34:17 <CakeProphet> `run echo '#!/usr/bin/perl -w' > bin/welcome2; echo '$_=shift; s/ +/ @ /g; exec ($_?"@ $_ ":"")."? welcome";' >> bin/welcome2
23:34:32 <HackEgo> cat: `which welcome2`: No such file or directory
23:36:13 <Gregor> elliott: Feel free to read JIT try2.
23:36:13 <oerjan> `run chmod +x bin/welcome2
23:36:35 <HackEgo> Useless use of concatenation (.) or string in void context at /hackenv/bin/welcome2 line 2. \ Use of uninitialized value $_ in substitution (s///) at /hackenv/bin/welcome2 line 2.
23:36:50 <CakeProphet> `run echo '#!/usr/bin/perl -w' > bin/welcome2; echo '$_=shift; s/ +/ @ /g; exec (($_?"@ $_ ":"")."? welcome");' >> bin/welcome2
23:37:02 <HackEgo> hi: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:37:10 <HackEgo> Use of uninitialized value $_ in substitution (s///) at /hackenv/bin/welcome2 line 2. \ Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:37:15 <HackEgo> weirdnickasshole: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:37:27 <oerjan> CakeProphet: @ itself is not \ clean
23:38:42 <HackEgo> #!/bin/sh \ if echo "$1" | grep -c ' ' >/dev/null; then \ echo -n "$1" | sed 's/ .*/: /' \ exec $(echo "$1" | sed 's/[^ ]* //') \ else \ echo -n "$1: " \ shift \ exec "$@" \ fi \
23:39:36 <CakeProphet> `run echo '#!/usr/bin/perl -w' > bin/welcome2; echo '$_=shift and s/ +/ @ /g; exec ((defined?"@ $_ ":"") . "? welcome");' >> bin/welcome2
23:39:50 <HackEgo> Warning: Use of "defined" without parentheses is ambiguous at /hackenv/bin/welcome2 line 2. \ Bareword found where operator expected at /hackenv/bin/welcome2 line 2, near "?"@ $_ ":"") . "? welcome" \.(Missing operator before welcome?) \ Unquoted string "welcome" may clash with future reserved word at /hackenv/bin/welcome2 line 2. \ String found where operator expected at /hackenv/bin/welcome2 line 2, at end of
23:40:25 <CakeProphet> an imaginary option that makes errors cause perl programs not to execute.
23:41:17 <CakeProphet> `run echo '#!/usr/bin/perl -w' > bin/welcome2; echo '$_=shift and s/ +/ @ /g; exec (((defined)?"@ $_ ":"") . "? welcome");' >> bin/welcome2
23:41:29 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:41:35 <HackEgo> hi: hi: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:41:39 <HackEgo> weirddude: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:41:48 <HackEgo> weirddude: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:41:51 <Gregor> /tmp/cc-p91cPs.o: file not recognized: File format not recognized
23:42:07 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/welcome2
23:43:11 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:43:21 <oerjan> `run (echo '#!/usr/bin/perl -w'; echo '$_ = join " ", @ARGV; if (s/^.*? +.*? //) { print "$1: "; exec $2, $_; }' >bin/@
23:43:23 <HackEgo> bash: -c: line 1: syntax error: unexpected end of file
23:43:30 <oerjan> `run (echo '#!/usr/bin/perl -w'; echo '$_ = join " ", @ARGV; if (s/^.*? +.*? //) { print "$1: "; exec $2, $_; }') >bin/@
23:43:54 -!- Zuu has quit (Ping timeout: 244 seconds).
23:43:57 <HackEgo> Use of uninitialized value $1 in concatenation (.) or string at /hackenv/bin/@ line 2. \ Use of uninitialized value $2 in exec at /hackenv/bin/@ line 2. \ Can't exec "": No such file or directory at /hackenv/bin/@ line 2. \ :
23:44:46 <elliott> oerjan: stop replacing everything with perl >:(
23:45:02 <oerjan> `run (echo '#!/usr/bin/perl -w'; echo '$_ = join " ", @ARGV; if (s/^([^ ]*) +([^ ]*) +//) { print "$1: "; exec $2, $_; }') >bin/@
23:45:09 <elliott> `run rm bin/welcome2; # breaks on \
23:45:43 <elliott> <CakeProphet> `welcome2 weird\dude
23:45:43 <elliott> <HackEgo> weirddude: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:45:45 <HackEgo> test\nick: ho: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:46:18 <oerjan> elliott: now there's a @ and welcome which escape properly, at least
23:46:33 <elliott> oerjan: you could have just fixed @ without rewriting it...
23:46:55 <oerjan> elliott: no, because i cannot get my head around sh's escape madness
23:47:04 <elliott> oerjan: then tell someone who can to fix it :P
23:47:17 <oerjan> elliott: feel free to rewrite it in sh again
23:47:30 <elliott> it wouldn't need rewriting
23:47:34 <CakeProphet> `run echo '#!/usr/bin/perl -w' > bin/welcome2; echo '$_=shift and s/ +/ @ /g;' >> bin/welcome2; echo 'exec (((defined)?"@ $_ ":"") . "? welcome");' >> bin/welcome2
23:48:03 <HackEgo> weirdnickasshole: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:48:20 <HackEgo> weird\nick\asshole: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
23:49:48 <CakeProphet> I was under the impression that interpolation did no escapey nonsense.
23:50:11 <oerjan> CakeProphet: exec uses a shell if you have just one string argument to it
23:50:36 <oerjan> you must split away the command to avoid that
23:50:59 <oerjan> oh i was going to check
23:51:07 <oerjan> `run @ test @ ho echo hi
23:52:45 <CakeProphet> challenge: make a script that is like @ but automatically uses the command invoker as the nick.
23:53:17 <oerjan> i'm not sure HackEgo passes on that information, or does it
23:53:29 <HackEgo> TERM=linux \ http_proxy=http://127.0.0.1:3128 \ HACKENV=/hackenv \ PATH=/hackenv/bin:/opt/python27/bin:/opt/ghc/bin:/usr/bin:/bin \ PWD=/hackenv \ SHLVL=0 \ HOME=/tmp
23:53:42 <elliott> wtf is that distinct from env
23:53:58 <HackEgo> TERM=linux \ http_proxy=http://127.0.0.1:3128 \ HACKENV=/hackenv \ PATH=/hackenv/bin:/opt/python27/bin:/opt/ghc/bin:/usr/bin:/bin \ PWD=/hackenv \ SHLVL=0 \ HOME=/tmp
23:54:09 <oerjan> i didn't know env could print too
23:54:25 <HackEgo> /usr/bin/printenv: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
23:54:33 <HackEgo> /usr/bin/env: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
23:55:07 <elliott> well env lets you set them.
23:55:16 <oerjan> `run ls -l /usr/bin/printenv /usr/bin/env
23:55:19 <HackEgo> -rwxr-xr-x 2 0 0 27576 Apr 28 2010 /usr/bin/env \ -rwxr-xr-x 2 0 0 27448 Apr 28 2010 /usr/bin/printenv
23:55:31 <oerjan> 're not the same file...
23:56:07 <elliott> because printenv can't set
23:56:10 <elliott> the question is why it exists at all
23:56:21 <oerjan> yeah but why have printenv at all, right
23:56:39 <HackEgo> env: TERM: No such file or directory
23:56:53 <oerjan> ok that's a difference
23:58:26 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
23:58:40 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.22312
23:59:19 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/paste