00:05:44 -!- augur has joined. 00:18:28 -!- Patashu has joined. 00:25:58 -!- Rugxulo has joined. 00:28:27 I'm surprised, I had given up on IOCCC coming back (at least for the foreseeable future) 00:35:12 it's just the end times, nothing to worry about. 00:35:55 -!- derdon has quit (Remote host closed the connection). 00:45:54 oerjan: unfortunately no one actually knows C anymore 00:45:59 so the submissions will all bad bad. 00:46:13 bad bad :( 00:46:23 what, how can you possibly doubt our Gregor 00:47:46 no one knows C? eh? it's still like #1 or #2 at TIOBE 00:48:00 GNU still worships it like crazy, that's for sure 00:48:10 similarly Clang users (Apple), etc. 00:49:21 -!- pikhq_ has quit (Ping timeout: 245 seconds). 00:49:24 -!- pikhq has joined. 00:51:41 Rugxulo: no one writes C anymore. it's all just robots that program C now. 00:51:47 :> 00:51:56 robots? 00:52:13 even *BSD funded PCC to get to 1.0 stage 00:52:22 so apparently everybody is (still) gaga over C 00:52:39 maybe thinking of another language while they're compiling C ;-) 01:00:11 I anticipate C lasting at least as long as COBOL already has. 01:00:16 Quite plausibly longer. 01:02:15 -!- pikhq_ has joined. 01:04:35 did I hear right or did C1x finish? 01:05:08 -!- pikhq has quit (Ping timeout: 252 seconds). 01:06:32 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 dunno, I read somewhere that there's some weird rule that it can pass early if unanimous, and supposedly it was, so ... 01:11:48 ah well 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 elliott's not here for me to tell em UPDATE 02:08:15 Sgeo|web: question: do you do anything other than refresh MSPA? 02:08:24 Nope! 02:08:34 tsk tsk 02:08:48 * Sgeo|web is pleased that CakeProphet thinks that he refreshes MSPA constnatly 02:09:04 mspa refresh pride 02:10:14 CakeProphet: EPDOOT 02:11:06 OH LOOK I'VE ALREADY SEEN IT WHAT NOW? 02:11:32 I thought there was another update almost immediately after 02:11:45 epdoot 02:12:51 My notifier went off a second time, for some reason 02:13:06 CakeProphet: Sorry to reveal I'm not a constantly refreshing madman 02:13:16 notifier??? 02:14:02 CakeProphet: 6058 changed 02:23:58 -!- pikhq has quit (Ping timeout: 240 seconds). 02:24:12 -!- pikhq has joined. 02:46:01 Sgeo|web: I'm surprised you don't read Dr Brinner: Ghost Psychiatrist. 02:58:32 I want to, but I don't have the time... 03:00:59 I mean, I can barely find the time to read Mezzacotta 03:02:14 There isn't enough. 03:03:11 http://www.mezzacotta.net/archive.php?date=-9999999999999-01-01 Here, begin archive binging. 03:03:31 If people can read all of Dr. Brinner: Ghost Psychiatrist, then I can read all of Mezzacotta 03:03:49 I mean literally there isn't enough time. 03:03:59 The Universe isn't old enough. 03:04:17 CakeProphet: Where'd you get your time machine for reading Dr. Brinner? 03:05:10 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 Sgeo|web: I'm just so cool I don't need one. 03:47:39 Sorry 03:48:07 you don't need a time machine at 16 picokelvin 03:48:27 uh so does 03:48:29 delete [] array; 03:48:35 delete objects in the array as well? 03:48:41 if so, why is C++ so delete happy? 03:48:50 if not, what the fuck is wrong with my program? 03:49:15 CakeProphet: Yes, that is the intended semantics of delete[]; 03:49:24 zdhvjibhdfhbsj pikhq: can I just like 03:49:33 delete the array and not the things in it? 03:49:39 actually... hmmm 03:49:42 nevermind that's not the problem 03:49:44 delete array; does that, I think. 03:49:46 because I'm copying those things anyway. 03:49:50 Also, you don't want to do that. 03:49:51 I think 03:50:28 hmmm 03:51:01 okay so 03:51:03 v.key = key; 03:51:09 where the right-hand key is a string reference 03:51:13 this copies the string, yes? 03:52:10 yeah nevermind 03:52:13 that's not the problem. 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 I'm guessing something's wrong with my table resize... 04:26:16 ooooooooooooooh 04:26:31 once again fooled by the assignment operator on references. 04:28:54 silly me, thinking I could use and re-assign variables as mere symbolic constructs to write clear algorithms 04:29:05 and not RECKLESSLY OVERWRITE THINGS. 04:30:41 there we go. 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:37 `run cat welcome 04:43:39 cat: welcome: No such file or directory 04:43:45 `run cat `which welcome` 04:43:48 ​#!/usr/bin/perl -w \ if (defined($_=shift)) { s/ +/ @ /g; exec "bin/@", $_ . " ? welcome"; } else { exec "bin/?", "welcome"; } 04:43:55 `run cat `which @` 04:43:57 ​#!/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:45:51 `run which not 04:45:52 No output. 04:46:11 is there a command that negates a return status? 04:46:37 i dunno, there's a reason i used perl instead of sh :P 04:47:20 `run ls 04:47:22 bin \ canary \ karma \ lib \ paste \ quotes \ share \ wisdom 04:47:59 `run if cat wisdom/CakeProphet | grep -i hi; then echo "hi" fi 04:48:01 bash: -c: line 1: syntax error: unexpected end of file 04:48:02 CakeProphet: if [ $? ];then false;else true;fi 04:48:17 what is $? 04:48:28 The error status of the previous command. 04:48:34 ah 04:48:36 yay bash 05:08:46 it makes so much sense. 05:08:49 bash does. 05:09:02 so much sense I sometimes struggle to understand it. 05:12:40 CakeProphet: ! negates a return status 05:13:25 Deewiant: anywhere or just within the [] thingy 05:13:28 ? 05:14:22 Anywhere 05:15:23 `run !echo "I don't believe you" && exit 05:15:25 bash: !echo: command not found 05:15:31 `run !(echo "I don't believe you") && exit 05:15:33 I don't believe you 05:15:42 `run !(echo "I don't believe you") && echo "oh right" 05:15:44 I don't believe you 05:15:47 okay. 05:16:03 I thought: "surely it could not be this simple in bash" 05:16:04 `run ! echo foo && echo bar 05:16:06 foo 05:16:18 You don't need the (), that spawns a subshell 05:16:32 oh right of course... 05:17:14 * CakeProphet is tempted to use perl always for bashy things. 05:20:03 hmmm, so {} doesn't spawn a subshell or??? 05:21:13 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 that doesn't really explain the {cmd1; cmd2; cmd3; ... } | parallel 05:23:09 thing 05:24:32 Hmm, bah, so it doesn't 05:24:50 -!- pikhq_ has quit (Ping timeout: 240 seconds). 05:24:59 But no, {} doesn't spawn a subshell 05:25:30 -!- Darth_Cliche has quit (Ping timeout: 276 seconds). 05:25:34 but in this usage is otherwise identical? 05:27:22 Uh, pretty much so, yes, I think 05:27:50 It's a big enough difference that I'm not sure what you include in "otherwise identical" :-P 05:28:21 they pretty much have the same purpose when piped and such. 05:29:00 Yes 05:29:55 they both allow a sequence of commands to share the same piped input/output 05:36:41 wait what congress wants to censor the internet? 05:37:09 That sounds like a good way to make the internet really really angry. 05:38:28 wow amazing. 05:41:12 http://en.wikipedia.org/wiki/Stop_Online_Piracy_Act 05:41:20 wow they even tie it into protecting American jobs. 05:45:34 That sounds like a good way to make Google abandon ship. 05:47:21 Then what happens when even Google leaves 05:47:50 "Sources suggest Google has packed up and moved to Greenland. It has reportedly taken its money and jobs with it." 05:48:16 Probably a few other tech companies join them. 05:48:33 Suddenly, Silicon Valley is in Greenland. 05:48:44 -!- oerjan has quit (Quit: In other news, Greenland's population triples). 05:48:48 :) 05:48:54 And America :(s? 05:49:35 http://www.thatvideosite.com/video/dr_michio_kaku_discusses_americas_secret_weapon 05:50:08 pikhq: I wonder if they'll ban youtube? 05:50:56 CakeProphet, that'd be a good way to secure a very very bad approval rating. 05:50:58 Doubtful. I think the first widespread action against Youtube would be Google going "Uh... Fuck you." 05:51:11 Madoka-Kaname: Congress has a lower approval rating than communism ATM. 05:51:17 Can you really cover that up propaganda? 05:51:30 Google's pretty much holding up a middle finger at you. 05:51:54 Yes, communism, the movie villain of decades, is more popular than Congress. 05:53:31 Maybe we should switch to monarchy 05:54:01 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:54:59 * Madoka-Kaname ??? 05:55:33 Madoka-Kaname: play Alpha Centauri and you will know it is true. 05:57:47 pikhq: I wonder if they'll ban youtube? 05:57:49 er 05:57:51 what? 05:57:55 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:03 AAAAAAAAAAAAAAAAAAAAAAH 05:58:50 string field theories which use elements of both light-cone and BRST gauge-fixed string field theories. 05:59:04 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH 05:59:33 string string metasuperstring membrane field cone theory 06:00:01 Further testing of FTL neutrinos done. Yup, still FTL. 06:01:22 what 06:01:57 -!- augur has joined. 06:05:06 wtf why am I reading about string theory 06:05:13 IT BURNS. 06:11:47 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:11:55 help needs more category theory 06:15:02 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:15:12 oh what now [34]!!!! 06:20:45 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 ITT: theoretical physicists play with existing theories that have no empirical basis. 06:32:19 That's why they're called theoretical physicists, not regular physicists. 06:34:30 Shame it's not "hypothetical physicists". 06:37:34 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:41:04 hm 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:29:39 Hm? 09:32:16 hm at what? 09:36:28 Hm at Vorpal's hm. 09:36:57 (The one a bit less than hour ago.) 09:49:21 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 I approve of this theory 10:00:22 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 Hm at Vorpal's hm. <-- that was just to check for lambdabot messages 11:13:07 Hm. 11:22:23 -!- ais523 has quit (Ping timeout: 240 seconds). 11:44:20 -!- Phantom_Hoover has joined. 12:31:31 So I'm thinking my best bet with my JIT's target language would be to choose some machine code. 12:31:33 But which ... 12:36:38 Or ... some kind of bytecode? 12:38:19 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 ais523: Suggest a language for my JIT to ... well, JIT. 13:08:23 Gregor: how simple? 13:08:42 I would say Unlambda, but it's a bitch to compile into imperative code 13:09:20 meanwhile, what's up with the vandalism on http://esolangs.org/wiki/Excela? 13:09:30 [CTCP] Received CTCP-PING reply from ais523: 22 seconds. 13:09:42 the ridiculous part: this connection in the University library is actually /better/ than the one in my office 13:10:11 ais523: Current target is BF. I want something more interesting. 13:10:24 Pretty much has to be imperative. 13:10:50 kipple? 13:11:39 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 and I know you know the language 13:14:06 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 [13:15] INTERCAL-72? 13:17:47 [13:15] probably a bit too large 13:17:58 ... ow X-D 13:18:30 -72 would /really/ benefit from JITting 13:18:33 In spite of asking in #esoteric , I was also hoping for something a bit more ... real :P 13:19:23 I'm not sure how many simple real languages there are 13:19:30 some Lisp variant without closures, perhaps 13:20:31 Gregor: what about BASIC? 13:22:30 Hm 13:24:47 -!- ais523 has quit (Ping timeout: 245 seconds). 13:25:30 TI-BASIC, the best BASIC. 13:28:03 -!- ais523_ has joined. 13:28:16 Gregor: serious suggestion: BASIC 13:28:51 Non-serious suggestion: dc. 13:30:00 dc's concatenative, not imperative, right? 13:31:17 Yep. 13:32:52 ais523_: Sure, but Dang it, a stack-based language would be perfect but Forth is so done :P 13:33:05 It's the next best thing. 13:53:47 -!- ais523_ has quit (Quit: Page closed). 13:53:59 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 The only big problem with dc is bignum :P 13:59:27 Concatenative works fine functionally. 14:00:06 All commands are of type Stack -> Stack and . is replaced with space. 14:00:12 Erm, *all functions 14:00:43 Soooo all the world's a monad. 14:00:57 Functional does not mean Haskell. 14:02:19 I'm just saying that that's a very disingenuous way of describing a concatenative language X_X 14:02:25 Why? 14:04:09 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:05:52 Yeah, but it fits better for concatenative languages. 14:09:06 None of this helps me choose a language anyway :P 14:09:12 How bad would non-bignum dc be? 14:15:39 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:32:03 Bleh 14:33:52 -!- derrik has joined. 14:34:21 Non-bignum dc wouldn't be hard at all, I should think, although I don't know much about JIT. 14:34:46 Although its only control structure is an eval statement. 14:36:27 It wouldn't be hard in the least, my question is whether it would suck :) 14:36:53 languages 14:36:57 Oops 14:36:58 http://iasos.com/artists/erial/celestial-soul-portraits/ 14:37:03 Holy christ this is amazing. 14:38:10 lol 14:42:05 How 'bout integer dc? 14:42:07 Would that be useless? 14:42:19 ISTR that it's the default behaviour. 14:42:23 !show pi 14:42:24 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:27 Wait, that's bc. 14:42:40 `run echo '2 3 / p' | dc 14:42:47 bash: dc: command not found 14:42:48 Yeah, it is; it rounds down, too. 14:42:51 ... wtf 14:42:52 O.o 14:42:58 That's something to be fixed. 14:43:33 `run echo '2 3 / p' | dc 14:43:35 0 14:43:40 Hmmmmmmmmm 14:43:49 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 elliott: dc. Terribad? 14:54:46 Gregor: Wow, fuck you, dc is my favourite. 14:54:47 elliott: You have 3 new messages. '/msg lambdabot @messages' to read them. 14:55:00 elliott: Good, then it's my JIT target :P 14:55:21 Gregor: You're JITting... to dc? 14:55:27 Do you have a C->dc compiler? 14:55:27 Errr 14:55:30 JIT source rather 14:55:37 Gregor: I guess that works? 14:55:45 It feels a bit less retarded than BF :P 14:55:46 Gregor: It's kind of unsuited though. 14:55:51 Functions are first-class by way of being strings. 14:56:02 JIT is a command in my JIT :) 15:07:08 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 15:08:00 20:07:29: pikhq_: oh also 15:08:00 20:07:31: if you were sane before 15:08:00 20:07:33: http://www.usdebtclock.org/ 15:08:00 20:07:36: now you're not. 15:08:00 Would you two stop circlejerking in the logs. 15:08:39 `addquote 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 721) 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:36 http://www.beanactuary.com/ 15:31:40 Bean actuary! 15:31:41 Best job. 15:31:48 -!- copumpkin has joined. 16:01:28 -!- derrik has quit (Quit: remains of the day). 16:03:30 Damn ... my new JITting method is sound in principle, but probably isn't going to work with even the slightest optimization >_> 16:03:49 What method is that :P 16:04:40 SEKRIT 16:05:54 Gregor: Have you pushed it yet :P 16:05:58 Nope. 16:15:17 Basically this: void jit(volatile struct Data *allMyDeliciousData) { record("prologue"); /* do an addition */ record("+"); /* etc */ } 16:15:23 record() records its return address. 16:15:29 Then I use those return addresses to slice up the function. 16:16:14 Gregor: Why wouldn't that work? 16:16:21 You might need a "volatile" on record(). 16:16:25 elliott: Getting rid of the call to record itself. 16:16:32 Gregor: Can't be done, if it has side-effects... 16:16:36 Gregor: Make it poke a volatile variable. 16:16:57 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 (Using a volatile function pointer argument for record instead of a global function) 16:19:10 OS.js (JavaScript Operating System) - The world is moving forward. [X-post from /r/linux] (anderse.wordpress.com) 16:19:10 submitted 6 hours ago by Forconin to programming 16:19:10 WHY IS THIS ON MY FRONT PAGE 16:19:14 I blame Gregor, Lord of Javascripts. 16:19:27 ^^ 16:19:30 "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:39 lolwut 16:19:40 $ ssh --javascript-bullshit 16:19:51 I guess the browser doesn't count as a graphical environment with a bunch of dependencies :P 16:20:00 "remote administration of servers [by retards]" 16:20:05 They forgot that part. 16:20:39 Hmmm ... so far my new technique works on x86, and works then segfaults everywhere else. 16:20:50 Maybe I can just avoid my broken function epilogue by always calling exit! 8-D 16:21:36 Nowait, that doesn't work once I have other functions X-D 16:21:52 "Hell, for consistency you should serve it all up with node.js instead of Apache." 16:21:55 THIS IS INSUFFERABLE 16:21:58 Gregor: Maintain your own call-stack with CPS? 16:22:05 Then you never actually have to return. 16:22:16 Hmmmmm 16:22:27 Gregor: That needs TCO to work decently though, which you said breaks things 16:22:29 Gregor: Although... 16:22:38 record("goto"); goto &&computed_label; record("endgoto"); 16:22:42 You COULD hack something up with that :P 16:22:45 No, C doing TCO breaks things, me doing TCO doesn't. 16:23:01 Gregor: How are you going to do TCO? That's platform-specific. 16:23:26 Same way I record return addresses, but change them >: ) 16:23:31 "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 /R/PROGRAMMING IS THE WORST 16:23:38 Gregor: Wow :P 16:24:01 Damn it, works-then-segfaults on ARM >_< 16:24:04 Gregor: So, y'know, if you're doing TCO... a mini Lisp-alike would make a lot of sense... >:) 16:24:08 Something must be wrong with my epilogue generation. 16:30:52 Aha, fixed. 16:31:46 http://en.wikipedia.org/wiki/File:Circle-trig6.svg 16:31:51 I love this diagram so much. 16:34:25 Phantom_Hoover: Insert link to that synchronicity diagram. 16:34:31 http://upload.wikimedia.org/wikipedia/commons/e/e2/Sch%C3%A9ma_synchronicit%C3%A9_in_English.png 16:34:33 Oh, OK. 16:34:49 I never said that the trig diagram was the *best*, though. 16:35:20 "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 OK so I need to synthesise thioacetone with acetone, hydrochloric acid and stink bombs. 16:49:06 elliott: My new method, although still having the problem of pointless calls, works on friggin' everything X-D 16:49:24 Gregor: I thought your previous method did too. 16:49:28 Or do you mean flags don't disturb it? 16:50:21 elliott: I mean it just works, no need for flags in most places. 16:50:27 Also it works on IBM z/Series which the last one didn't :P 16:50:49 Gregor: Does it work with... -O3 on VAX? :P 16:52:08 elliott: I can't even get VAX to compile shit with -O3 :P 16:52:11 GCC segfaults when I try. 16:53:12 Gregor: Re empty calls: It's because the calls to the volatile function pointer are still there, right? 16:53:21 elliott: Yeah. 16:53:24 Gregor: I have an idea. 16:53:35 I can't remove them because they're of differing lengths depending on how it optimized loading the arguments :( 16:53:56 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 (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 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:43 Brilliant sir. 16:54:44 Brilliant. 16:54:56 Oh, so it would! 16:54:58 I didn't realise that myself :P 16:55:01 Wooo 16:55:27 In fact, I can even simplify that a wee bit. 16:55:32 But the idea is very sound either way. 16:55:34 Gregor: You might need to take a third, nop void(void) funptr, just to find out how large calls to that are... 16:55:35 Oh wait 16:55:37 You can use the second 16:55:42 By special-casing the first three calls 16:55:49 (As "start", "call to void(void)", "end") 16:56:02 ARRRRRGH damn it sh4. 16:56:17 Works with -O0, doesn't work with -O1, works with every flag that goes into -O1 >_< 16:56:25 X-D 16:56:26 -!- Behold has joined. 16:56:27 How is that even possible 16:56:35 I don't know 16:56:53 Gregor: Maybe some code checks optimisation level directly... like, not direct compilation stuff 16:56:55 Linker optimisations? 16:57:03 Maybe -O1 is doing linker optimisations and the flags aren't 16:57:04 ... ARGH I'M AN IDIOT >_< 16:57:10 My O0 list was my O3 list :P 16:57:53 I thought that seemed like a lot of optimizations for O1 >_> 16:58:08 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 Also, it works with -O0 and -O3 but not -O1? 16:58:26 * elliott wonders wtf -O1 is doing. 16:58:43 No, it doesn't work with -O3, but it works with all those flags that are in -O3 but not -O1. 16:59:07 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:41 Oh come on. 16:59:44 This time I know I got the right list. 17:00:20 Maybe it's just not very good at outputting the list for -O0 >_> 17:02:13 WTF WTF WTF 17:02:16 What is -O1 doing??? 17:02:47 I used the man page's instructions for discovering what -O does >_< 17:03:38 -!- MSleep has changed nick to MDude. 17:04:14 -!- Zuu has joined. 17:05:50 Yup, every friggin' flag. 17:06:14 Gregor: Why not find out exactly what is broken about the -O1 asm :P 17:06:29 elliott: Because I don't speak SH4 :P 17:06:43 Gregor: How hard can it be :P 17:07:23 Hard enough? >_> 17:07:39 Gregor: Wiiiiiiimp 17:07:48 :'( 17:08:06 Hm, on SPARC it seems to segfault before even getting to the JITting part ... 17:08:55 Gregor: It works on everything, huh :P 17:09:11 I'm going in alphabetical order here X-P 17:10:36 Gregor: "Works on architectures that don't start with 'S'" 17:10:42 It works on SH4! 17:10:44 Just not with -O1 17:10:56 Gregor: It's SH-4, btw :P 17:11:20 Also it works on SPARC if I put a printf in my record function X-D 17:11:48 OHHH fussing with the stack. 17:11:50 Always fun. 17:12:10 Gregor: Just call a dummy function in record? :P 17:12:28 That I am! (Problem is that dummy functions tend to get inlined, but I'm sure I can find somethin') 17:12:40 Presumably something is stackweird if it's a leaf *shrugs* 17:12:56 you discussing IOCCC entry? 17:13:23 Or, y'know, it only works if it's printf. 17:13:25 quintopia: Yeah. 17:13:25 That I am! (Problem is that dummy functions tend to get inlined, but I'm sure I can find somethin') 17:13:37 Gregor: volatile __attribute__((noinline)) :P 17:13:45 elliott: No GCC-specifics. 17:14:58 The bigger problem though is that it only works if it's printf X-D 17:15:42 Gregor: Not even puts? 17:15:50 Gregor: Maybe it's about what you pass to printf. 17:15:56 Gregor: Maybe you're forcing something from a register to the stack. 17:16:01 elliott: OK, puts works. 17:16:11 Gregor: fputs("",stdout) 17:16:16 100% side-effect free 17:16:31 elliott: No go. 17:16:39 Gregor: Maybe it needs to make a syscall 17:16:41 putchar('.')? 17:17:04 Except wait, stdio is buffered ??? 17:17:11 I bet putchar('.') fails 17:17:15 Because no syscalls because buffering 17:19:07 -!- Behold has quit (Quit: Leaving). 17:21:08 ?!?!? 17:21:08 Unknown command, try @list 17:21:13 putchar made it go CRAAAAAAAZY 17:21:35 I wonder if the return address on SPARC is strictly the return address ... 17:22:05 (As opposed to "return to here+4" or something) 17:23:13 Dammit ais where are you when I'm being paranoid. 17:27:46 -!- monqy has joined. 17:29:07 Gregor: since instructions are word-sized on sparc there would be no problem with preincrementing the instruction pointer 17:29:41 olsner: But that would be SPARC-specific. 17:30:11 and maybe it has delay slots (but I think that was MIPS rather than SPARC) 17:30:27 Both. 17:30:30 But delay slots are fine. 17:32:21 -!- Ngevd has joined. 17:32:22 Quick 17:32:28 How does "Iason" decline? 17:34:42 Slowly. 17:36:53 depends what declension it is of course 17:48:47 Third, I think 17:48:59 Masculine 17:49:06 Singular only 17:58:17 Google competing with PNG... I guess they don't aim low these days :P 17:58:38 PNG the image format!? 17:58:41 Yes. 17:58:53 28% smaller than recompressed PNGs, supposedly. 17:59:35 Ooh, you can encode all channels except the alpha lossily, and just have lossless alpha... that's a neat trick. 18:00:45 Link? 18:01:21 http://blog.chromium.org/2011/11/lossless-and-transparency-encoding-in.html 18:02:19 Also http://code.google.com/speed/webp/gallery2.html. 18:05:17 * CakeProphet circlejerks furious 18:05:30 uhhhhhhhhhhh 18:07:27 -!- nys has joined. 18:13:11 elliott: I assume that the 28% figure was with strictly-lossless? 18:14:40 Gregor: Yeah. 18:15:12 -!- Ngevd has quit (Ping timeout: 245 seconds). 18:15:21 Hm. I wonder how well you'd do if you just took libpng and swapped out zlib for LZMA. (Ignoring speed) 18:17:02 Gregor: Probably vastly better :P 18:17:20 Gregor: But not only speed would be the problem, imagine how much RAM your browser would hog up... 18:17:33 Heh 18:17:34 Especially phones would be fucked. 18:17:58 Now for ultimate portability, we'll reimplement LZMAPNG in JavaScript. 18:18:02 And do the image decoding in-VM. 18:18:23 "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 Uhh, are Wikipedia on crack? 18:18:36 I'm pretty sure LZMA decoding sucks compared to gzip decoding :P 18:18:47 Gregor: That'll be SO FAST 18:18:54 Gregor: Decompess to a data: URI. 18:19:12 Which is itself a PNG :) 18:19:57 Gregor: Nahh, BMP, so you can load incrementally by just appending strings 18:20:21 X-D 18:21:46 elliott: NOOOOOOOOOOOOOO my new system doesn't work on VAX either :'( 18:21:49 My new system SUCKS 18:22:06 lol, tanenbaum won't admit linux has won 18:22:20 Gregor: Why not... 18:22:20 ? 18:22:26 elliott: Donno yet, debuggling. 18:22:32 Gregor: "?"? 18:22:52 lol, tanenbaum won't admit linux has won 18:23:16 Gregor: 18:23:21 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 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 . 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 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 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 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:38 [...] 18:23:40 LinuxFr.org : Do you think the Linux success is a proof he was right or is it unrelated? 18:23:42 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 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 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:23:54 It's amazing :P 18:25:47 It's not an entirely unreasonable argument, really, although his success comparison with Mac being "BSD inside" is a bit silly. 18:26:15 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:18 "nerds" 18:26:35 Gregor: But wait, MINIX is definitely winning, people just aren't telling anyone else about it: 18:26:37 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 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:26:51 lol 18:27:37 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 Gregor: No, it's 'cuz their lawyers don't let them use ANY GPL'D SOFTWARE WHATSOEVER 18:28:08 EVEN IF THEY DON'T WANT TO MODIFY IT 18:28:28 Gregor: Their legal team was quoted as saying "AAARGH GET THE COOTIES OFF OUR SERVERS" 18:28:38 X-D 18:28:45 Sounds like something Microsfot would say. 18:32:30 I wonder how much GPL software is in a standard MINIX system. 18:32:37 (MINIX 3) 18:32:40 My bet: More than none. 18:36:06 elliott: Is the return address on VAX ... two bytes beyond where you return to ... 18:36:51 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 Might be tricky to do portably :P 18:37:08 I can't compare to the IP. 18:37:09 This is C. 18:37:38 I think I'm gonna have to switch back to my old solution :( 18:37:41 Gregor: Call record() at the very top of the function 18:37:44 Gregor: Compare to the address of the function 18:37:53 elliott: Hello, prologue? 18:38:00 elliott: I do that to find the prologue anyway. 18:38:01 Gregor: Yes, so find out how large the prologue is 18:38:05 And subtract that from the return value 18:38:06 -!- Ngevd has joined. 18:38:08 return blah 18:38:10 You know what I mean 18:38:16 HELLO! 18:38:32 -!- ais523 has joined. 18:38:35 Gregor: Of course that means you have to detect the prologue in some other way, but... here's an idea 18:38:42 Oh thank god. 18:38:44 Gregor: Just scan the function code for the address of record. 18:38:45 The return address is right. 18:38:49 So the bug is elsewhere. 18:38:50 Then you just need to know how long "CALL" is. 18:38:51 Gregor, how goes IOCCC? 18:38:59 Ngevd: My new version is either better or worse. 18:39:22 Like that comic my dad reads from time to time! 18:39:34 Gregor: What WAS your old version? 18:39:39 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds). 18:39:51 elliott: The version you've seen... 18:40:05 Gregor: I have no idea how it actually JITted :P 18:40:09 Oh X-D 18:40:33 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 It was very sensitive to varying pro/epilogues. 18:40:46 Heh 18:42:36 -!- Phantom_Hoover has joined. 18:44:05 friendship aneurysm. 18:47:41 remind me not to read tvtropes stuff about homestuck anymore. 18:47:44 it's a genuine waste of time. 18:54:25 Gregor: dude so what if you like JIT from the future. 18:54:36 you just have to compile the program sometime in the future. 18:55:26 actually no you'd want to JIT in the future 18:55:31 so your future-JIT can take as much time as it wants 18:55:43 and the present-JIT will just grab code from the future. 18:55:52 this is all totally feasible in Feather, I imagine. 18:56:40 elliott: Hm, VAX is definitely doing something skwonky with return addresses ... 18:57:02 Gregor: Just google, man, VAX's insanities will be well-documented. 18:57:10 I'm tryin'! 19:01:43 111111:42455 19:01:43 111112:111112 19:01:43 111113:1 19:01:43 111121:8 19:01:43 111122:1 19:01:43 111123:1 19:02:00 Literals and the calculated size for the code to generate that literal. 19:02:02 mmmm numbers 19:02:36 Gregor: ...111112 bytes to generate 111112? 19:02:46 elliott: Shocking, innit! 19:03:00 Gregor: But... isn't that just a mov... 19:03:19 elliott: It's certainly not 111112 bytes worth of bullshit X-D 19:04:05 ARE YOU SURE??? 19:04:29 Quite :P 19:04:42 OMG ... 19:04:46 I think I figured out what's going on X-D 19:05:00 All my literals are in the same range as valid addresses X-D 19:05:16 So the heuristic for determining whether it's an address or not goes all shitty. 19:06:11 ..gross 19:07:18 I'm still really confused why 111112 requires 111112 bytes to generate... 19:07:52 while other increments of previous numbers take 1 or whatever. 19:07:57 It doesn't, it was the heuristic that was wrong. 19:08:10 oh good. :) 19:08:38 VAX can only generate the value 111112 by incrementing 0 111112 times, not by generating 111111 and incrementing it. 19:08:52 * CakeProphet mind blows. 19:09:21 111111:80 19:09:22 111112:0 19:09:22 111113:0 19:09:22 111121:0 19:09:22 111122:0 19:09:24 Gettin' better :P 19:09:55 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 then those two statements are equivalent. :> 19:11:11 but anyway that sounds really dumb. 19:11:26 maybe you shouldn't use VAX 19:11:46 I'm improving my heuristic :P 19:11:50 The problem with arguing with idiots on reddit for fun is that you have to deal with idiots on reddit. 19:11:53 Ya never know, this may be what was broken on SPARC too. 19:12:18 elliott: I thought you would have figured that out earlier. :P 19:12:44 111111:80 19:12:44 111112:1 19:12:45 111113:3 19:12:45 111121:60 19:12:47 YOU VAXY PIECE OF GARBAGE 19:12:58 Why are there so many ambiguous constants in my stack :'( 19:13:16 not enough popping 19:13:22 if you pop things then there won't be anything at all 19:13:25 * CakeProphet is awesome logic 19:14:17 "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 Gregor: Why not pad out the constants? 19:14:38 Push all-0s, push value, push all-0s 19:14:40 Or something 19:14:55 This - is - C 19:15:11 111111:80 19:15:11 111112:68852 19:15:11 111113:80 19:15:11 111121:80 19:15:13 111122:80 19:15:15 // Gettin' closer X-D 19:15:33 elliott: the operations are GONE RIGHT THERE? 19:15:35 fascinating. 19:15:40 s/GONE/DONE/ 19:15:49 Gregor: So? 19:15:55 Gregor: f(0, value, 0) 19:16:01 Assuming a contiguous stack... 19:16:22 contiguous. stack? ha ha ha ha 19:16:31 elliott: Remember that anything I do at detection time, I do at runtime. 19:16:36 I like how CakeProphet just says stupid things all day. 19:16:45 -!- Darth_Cliche has joined. 19:16:46 Gregor: You can erase arbitrary code sections with your void(void) funptr... 19:17:04 elliott: I haven't tested that yet :P 19:17:17 Gregor: There we go then! No complaint :) 19:17:43 elliott: how are the operations done right there? 19:17:46 "WE"""W""W"E"E"E 19:17:47 R""W 19:18:00 :) 19:18:38 also 19:18:53 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 how would you go about extending Haskell so that :: could be defined within Haskell as a normal operator? 19:20:19 You mean (x::T) evaluating to x but with type T? 19:20:24 You can't use operators as declarations, that's nonsense. 19:20:24 yes 19:20:36 not in vanilla Haskell, no. 19:20:38 CakeProphet: Well that's easy-ish... 19:20:50 the question was to create a hypothetical extension in which you could do things like that. 19:21:07 CakeProphet: Uh, so do you want the first thing I said, or do you want the second thing I said? 19:21:10 You are contradicting yourself. 19:21:27 -!- copumpkin has changed nick to damocles. 19:21:30 no I'm not... 19:21:37 Yep, you are. 19:21:39 You mean (x::T) evaluating to x but with type T? 19:21:41 yes 19:21:42 You can't use operators as declarations, that's nonsense. 19:21:45 the question was to create a hypothetical extension in which you could do things like that. 19:21:57 You either want the first thing I said, or the second; first answer implies first, second answer implies second. 19:22:13 elliott: lol, I can push any literal but 1. 19:22:21 Gregor: Just push 2 and subtract 1 :) 19:22:39 How can I subtract 1 with no 1! ;) 19:23:03 elliott: um? 19:23:09 Gregor: Push 3 and subtract 2 19:23:29 elliott: I'd rather figure out wtf is going on thank you very much. 19:23:36 Gregor: No this is the best. 19:23:43 :P 19:24:13 -!- damocles has changed nick to copumpkin. 19:24:46 Push 2, dup, div 19:25:04 elliott: I suppose :: doesn't really worklike an operator, so, yeah.. 19:25:20 CakeProphet: There are two infix uses of ::. 19:25:27 You have not specified which you want to make non-primitive. 19:25:41 elliott: oh, see... 19:25:46 the way you worded those "two things" 19:25:56 made it not actually sound like you were specifying the two things. 19:26:18 one was just a question, the other was you saying it was nonsensical. 19:26:34 >_> anyway 19:26:59 the one that's used within expressions, I suppose. 19:27:18 since that would be the easier one. 19:28:14 Wouldn't that need a type type? 19:28:26 CakeProphet: Dependent types make that pretty trivial. 19:28:30 CakeProphet: Although (A :: x) is easier. 19:28:46 That's (::) :: (a :: Type) -> a -> a 19:28:50 (::) _ x = x 19:29:10 You can flip (::) but that messes with the quantification, but I suppose it could work. 19:29:26 (::) :: forall a. a -> (b::Type) -> (a ~ b) => a 19:29:27 :p 19:40:17 -!- zzo38 has joined. 19:40:47 Aha 19:40:54 Something is clearing my variable. 19:40:57 Trivia: greater is the only bi-directional Piet command 19:42:08 elliott: I wonder what else you could do with a type type. 19:42:18 CakeProphet: Nothing much, without dependent typing. 19:45:06 looooooooooooooool buffer overflow. 19:45:10 I am the greatest C programmer. 19:45:43 Gregor, is your program still less than or equal to 140 characters? 19:45:57 Ngevd: This is an unrelated program ;P 19:46:07 Ngevd: My tweetable interpreter will probably be another submission. 19:46:12 I CARETH NOT 19:47:56 tweetable code. what an effective marketing strategy. 19:48:08 we need a tweetable OS! 19:48:33 Well wouldja look at that, I have a working dc on VAX :P 19:48:40 lies 19:50:13 Youtube supports Feather! 19:50:49 woot? 19:51:25 http://channel9.msdn.com/Forums/Coffeehouse/Prototyping-New-Language-With-Haskell 19:51:29 someone has taken the name Feather 19:53:34 It will fade into obscurity like Mondrian and the first Numberwang 19:53:57 NUMBERWANG 20:09:46 Hey, Ngevd. 20:09:50 I present to you http://www.matthen.com/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:41 hm 20:12:43 Phantom_Hoover, oh god 20:12:56 Vorpal: YOUR METHOD AIN'T WORKING 20:13:52 ? 20:14:01 `? ? 20:14:03 ​? is wisdom 20:14:06 -!- sebbu has quit (Ping timeout: 260 seconds). 20:14:18 hrrg, most people on that page seem to be playing WordWang, but somehow they manage to hit NumberWang anyway 20:14:46 supercalifragilisticexpialidocious 20:17:52 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 Dammit ais where are you when I'm being paranoid. <-- obviously reporting you to THEM 20:34:37 Assuming a contiguous stack... <-- of spherical cows? 20:35:07 Ngevd, YOUR MOVEWANG 20:37:06 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 oerjan: I agree, but (x ::) would be much more fun. 20:37:36 scary 20:38:36 oerjan: quick, name (a -> b) -> Tagged a b 20:38:39 but then in some sense that's how System F/Core implements polymorphic values 20:38:46 (so you can e.g. do "foo bitSize :: Tagged Word32 Int"...) 20:38:53 and yeah 20:39:15 Phantom_Hoover, your move 20:39:36 Ngevd: -wang 20:39:50 elliott: um there's no way to implement that, since you don't actually _have_ a b. 20:40:09 oerjan: It's for converting things that use (a -> b) as (Tagged a b), silly :P 20:40:18 oh right 20:40:22 Implementation is \f -> Tagged . f $ error "YOU LIED TO ME" 20:40:45 elliott: phantomize 20:41:02 Ngevd, the game continueswang. 20:41:03 oerjan: hoover :: (a -> b) -> Tagged a b 20:41:15 O KAY 20:41:34 Your turn 20:42:01 wang 20:42:31 ais523: oh, hi 20:42:38 elliott: or tagomize (far side reference) 20:42:38 hi btw 20:42:46 ais523: "btw"? 20:42:47 Ngevd, argh, you continuewang to outfox me. 20:43:02 elliott: it was in response to your "oh, hi" 20:43:10 I was going to ask ais523 whether he was termcasting or not but then I realised he wasn't \unfoogy. 20:43:11 I was trying to find an even more noncommital way to say it 20:43:29 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 Hey, ais523, can motherboards dissolve in slightly humid air? 20:43:41 I was with friends earlier, and it was much nearer home than work 20:43:52 Phantom_Hoover: err, they're not water-soluble, as far as I know 20:43:53 (fffff, case doesn't arrive until Monday.) 20:44:03 ais523, good, good. 20:44:23 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 (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 (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 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 just use a chlorine atmosphere, dugh 20:46:16 *-g 20:47:05 Ngevd, do you concedewang? 20:47:08 eww, why would you implement an API like that 20:47:24 Phantom_Hoover, nah, had to empty the dishwasher 20:47:43 Phantom_Hoover, your turn 20:47:44 application painful interface 20:48:24 Phantom_Hoover: it should be fine 20:48:38 you'll want to make sure they're dry before actually switching the thing on 20:48:50 but the motherboard is exposed to humidity inside the case just as much as it is outside it 20:48:54 as it relies on air for cooling 20:49:15 I am seriously beginning to doubt Colloson's impartiality. 20:50:42 Ngevd, playwang. 20:52:12 elliott: which API is that? 20:52:18 And you, Phantom_Hooverwang 20:52:25 ais523: this opencl binding 20:52:39 This is getting ridiculouswang. 20:53:11 Yourwang turn 20:53:52 elliott: tell me when they've stopped, if I'm still here? I just /ignored both of them 20:54:04 And yours. 20:54:06 Wang. 20:54:22 welcome to #esowang 20:54:30 And yourswang 20:54:42 I don't really think (x ::) could be used in normal Haskell. 20:54:47 er, usefully 20:54:49 -_-wang 20:55:21 I'm goodwang at this 20:55:33 for example, map (x ::) [SomeTypes, GoHere] 20:55:36 :t (x ::) 20:55:37 parse error on input `)' 20:55:39 would not type. 20:55:51 hmm, is the discussion about the fact that that doesn't parse? 20:55:51 CakeProphet: That seem non-meaningful 20:55:52 Ngevd: mewang toowang 20:55:56 ais523: no 20:56:07 it's a continuation of a discussion about :: as an operator 20:56:07 oh right, I confused Haskell with OCaml 20:56:13 where :: is a perfectly reasonable operator 20:56:37 I am scarewangly good at this 20:56:46 Not only would (x ::) not be a meaningful function, but you cannot map in that way anyways since the types don't match 20:56:57 zzo38: this is what I was saying. 20:57:06 but it could be a meaningful function in a dependently typed language. 20:57:34 elliott: tell me when they've stopped, if I'm still here? I just /ignored both of them 20:57:44 ais523: you can check the logs yourself... 20:57:48 well, OK 20:57:50 Then, maybe you could add a dependent type extension to Haskell and then add (x ::) to that extension 20:57:53 but that would mean actually looking at all the wanging 20:57:54 ais523: zzo38: scroll up just a bit to get the context. 20:58:15 :t (:: Int) 20:58:16 parse error on input `::' 20:58:22 ;_; 20:58:28 (:: T) seems more useful in normal Haskell usage. 20:58:43 :t (\x :: Int -> x) 20:58:44 Illegal result type signature `Int' 20:58:44 Result signatures are no longer supported in pattern matches 20:58:44 In a lambda abstraction: \ x :: Int -> x 20:58:51 :t (\x -> x :: Int) 20:58:52 Int -> Int 20:58:54 there we go 20:59:03 Phantom_Hoover, it's your turn 20:59:06 ?ty (`asTypeOf` (undefined :: Int)) 20:59:07 Int -> Int 20:59:23 @src asTypeOf 20:59:23 asTypeOf = const 20:59:34 This is so stupid. 20:59:42 How does it even decide numbers? 20:59:43 oh, I see, asTypeOf has a type annotation in order to do its astypeofing 20:59:45 No idea 20:59:49 But it's your turn 20:59:50 ?ty asTypeOf 20:59:51 forall a. a -> a -> a 20:59:53 Phantom_Hoover doesn't get the joke. 20:59:54 (Yep) 21:00:03 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:05 ais523: correct 21:00:43 I guess const sort of is a conditional that always takes the same branch. :P 21:01:06 Your turn, Phantom_Hoover 21:01:08 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 oerjan: I was wondering if someone would throw that in :P 21:01:36 Your turn, Phantom_Hoover 21:01:44 >_> 21:01:58 ais523: oerjan: hmm, would a language that forced you to use the most general inferred types be TC? 21:02:06 actually asTypeOf is even closer, it also has the expected type for a church encoded boolean 21:02:08 I think yes, since Haskell without type signatures and type classes is TC 21:02:24 elliott: my guess would be yes, yes. 21:02:27 :) 21:02:34 elliott: I don't see why it wouldn't be TC at all 21:02:35 sounds like it 21:02:40 especially as I think you could write astypeof in it 21:02:45 Phantom_Hoover, your turn 21:03:08 Ngevd: hi 21:03:42 sir, sir. I think you need to calm down, sir. 21:03:56 sir? 21:04:06 Ngevd, no wait, that's me 21:04:10 CakeProphet, I REFUSE 21:04:14 Ngevd: your turn, sir. 21:04:19 your turn to calm down. 21:04:23 let asTypeOf x y = if True then x else y 21:04:27 NEEEEVEEEER 21:04:28 *-let 21:04:40 starlet? :P 21:04:48 heh that's actually circular, i think 21:05:14 well, time to go, see you in about a week 21:05:24 olsner: bye paste olsner 21:05:33 paste? 21:05:35 I will say hello to fugutur you for you. 21:05:35 Phantom_Hoover, your godwang turn! 21:05:43 oh, past 21:05:49 ais523: hm i'm not sure you could do it with just functions 21:06:07 -!- olsner has quit (Quit: Leaving). 21:06:28 oerjan: why do you think that definition of asTypeOf above is circular? it's how I'd implement it 21:06:30 oerjan: iff c a b = if c then a else b 21:06:31 :P 21:06:54 ais523: because as i said above, asTypeOf is the closest thing to a church encoding of True 21:07:00 ah, I see 21:07:33 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 that'd force the results to be the same type 21:07:47 oerjan: doesn't mean you have to construct every language the same way. 21:07:54 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 well the question is _can_ you make that 21:08:39 oerjan: what about (not (not true))? 21:08:44 oh not = flip 21:08:52 > let true x y = x; let false x y = y; let nand x y = x (y false true) (y true true) 21:08:53 : parse error (possibly incorrect indentation) 21:09:13 :t flip (flip const) 21:09:14 forall a a1. a -> a1 -> a 21:09:14 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 :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 forall t t1 t2 t3 t4. (t -> t -> t1) -> ((t2 -> t2 -> t2) -> (t3 -> t4 -> t3) -> t) -> t1 21:10:07 well, that forced a t2->t2->t2 into the middle of the expression 21:10:09 :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 forall t t1 t2 t3. ((t1 -> t1 -> t1) -> (t2 -> t3 -> t2) -> t) -> t 21:10:30 ais523: what a terrible way to fix it 21:10:33 oerjan: so? :P 21:10:38 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 elliott: not a very simple one 21:11:01 ais523: there is no expression, where is your "in" clause? 21:11:14 ais523: more importantly, you never close any of the "let"s 21:11:20 :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 elliott: you're looking at the wrong line 21:11:21 forall t t1 t2 t3 t4. (t -> t -> t1) -> ((t2 -> t2 -> t2) -> (t3 -> t4 -> t3) -> t) -> t1 21:11:30 ais523: no, I'm not, I'm saying you fixed it in a ridiculous manner 21:11:31 :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 elliott: btw, the version without an in works just fine in OCaml 21:11:58 the interp responds by telling you the name and type of everything you defined 21:12:02 and the value, if it's not a function 21:12:13 @hoogle a -> a -> a 21:12:14 Prelude asTypeOf :: a -> a -> a 21:12:14 Network.BufferType buf_append :: BufferOp a -> a -> a -> a 21:12:14 Prelude atan2 :: RealFloat a => a -> a -> a 21:12:20 ais523: evaluating syntactic nonsense like that is not a feature 21:12:31 but it's not nonsense 21:12:40 it's something that you'd write a lot in an actual program 21:12:48 no it isn't, because it isn't valid haskell 21:12:51 in a program you'd typically follow it with something that /used/ the definitions 21:12:53 "let" is rare in haskell, anyway 21:13:03 ais523: similarly, int main() { is valid C 21:13:07 but in a REPL, that's typically going to be on a future line 21:13:11 ais523: what would they scope over? 21:13:16 yes, which is why "let x = y" works in GHCi 21:13:17 copumpkin: future lines in the same REPL 21:13:17 ais523: in ghci, you can write let without in 21:13:22 oh hm i think i got it, using how lambdas are monomorphic internally 21:13:23 because it's a do block 21:13:39 but "let a = b; let c = d" is most assuredly not an expression 21:13:45 Phantom_Hoover, your turn 21:13:47 elliott: I was using ; as newline 21:13:52 is that not valid in Haskell? 21:14:13 ais523: that's a bit of a loaded question; I'm sure "a;b" doesn't mean "a\nb" in OCaml... 21:14:31 :t (\id x y -> (\x y -> x) (id x) (id y)) (\x -> x) 21:14:32 forall t. t -> t -> t 21:14:34 anyway, no, because the layout isn't right 21:14:38 I don't think OCaml needs anything there at all, it isn't whitespace-sensitive 21:14:56 # let a = 1 let b = 2 ;; 21:14:57 oh hmm the layout is okay 21:14:57 val a : int = 1 21:14:59 val b : int = 2 21:14:59 er oh wait 21:15:08 yeah no 21:15:10 the layout doesn't work out 21:15:11 whereas Haskell is, so you can't just write space to mean newline 21:15:13 because the "let"s aren't aligned 21:15:18 ais523: do { let a = 3; let b = 4; ... } 21:15:23 perfectly valid 21:15:33 ?ty do let { a = b }; let { c = d }; Just 1 21:15:34 forall t. (Num t) => Maybe t 21:15:52 ?ty do { let a = b ; let c = d; Just 1 } -- elliott 21:15:53 parse error on input `}' 21:16:03 :t (\c a b -> [a, b] !! fromEnum c) 21:16:04 Deewiant: err, right, ofc 21:16:04 forall a a1. (Enum a1) => a1 -> a -> a -> a 21:16:09 :t do let { a = b } ; let { c = d } ; return 1 21:16:10 forall t (m :: * -> *). (Num t, Monad m) => m t 21:16:20 conversely: 21:16:25 do let {a = 3}; let {b = 4} 21:16:27 return (a+b) 21:16:28 is perfectly valid 21:16:45 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 it's an expression evaluator 21:16:56 CakeProphet: using !! there is cheating, I think, but the same idea can be done without it, I Think 21:16:59 *think 21:17:22 CakeProphet: you can't construct lists like that with the lambda calculus 21:17:37 :t \a b -> case [a,b] of [x,_] = x; otherwise = x 21:17:38 parse error on input `=' 21:17:40 elliott: erm, why did the topic suddenly switch to lambda calculus? 21:17:43 :t \a b -> case [a,b] of [x,_] -> x; otherwise -> x 21:17:44 Expr -> Expr -> Expr 21:17:47 that was always the topic 21:17:58 I thought it was "can you write asTypeOf with functions and no explicit type declarations in Haskell" 21:17:58 elliott: so that's a solution abusing the type of cons 21:18:00 ais523 also doesn't know how scoping works 21:18:02 :t \a b -> case [a,b] of [x,_] -> x; otherwise -> a 21:18:02 forall t. t -> t -> t 21:18:05 that's what I meant 21:18:13 elliott: not scoping, just a thinko 21:18:17 although a pretty funny one 21:18:32 that was the original question anyway. 21:18:35 that's actually flip astypeof, but I don't care 21:18:38 CakeProphet: well, lists are not functions 21:18:53 `echo "ais523: wiki spam" 21:18:54 and also, i did it above 21:18:55 ​"ais523: wiki spam" 21:18:58 :t (\id x y -> (\x y -> x) (id x) (id y)) (\x -> x) 21:18:59 forall t. t -> t -> t 21:19:10 oh i didn't see you do that 21:19:17 oerjan: that doesn't work in lambda calculus though :P 21:19:34 elliott: it works in lambda calculus with the hindley-milner type system 21:19:34 hmm, which lambda calculus are we even talking about? 21:19:40 it's a nonsense question in untyped LC ofc 21:19:46 the one that is Haskell. 21:19:46 STLC seems like the interesting one here 21:19:48 which is the one which requires let for polymorphism 21:19:54 what /is/ up with the excela spambots? 21:20:04 they seem to be running articles through babelfish twice or something 21:20:06 Best Numberwang. 21:20:14 ais523: they love excela 21:20:20 Ngevd, you might as well just give in now, you won't top that one. 21:20:33 also, what is that language? 21:20:38 it seems to allow embedded Ruby, at least 21:20:44 "at least" 21:20:51 Phantom_Hoover, you're rightwang 21:20:59 well, it's obviously not identical to Ruby 21:21:02 ais523: http://esolangs.org/wiki/Cobol_on_Cogs; delete for offtopic 21:21:02 and yet it's incredibly similar 21:21:14 Phantom_Hoover, but we have equal score, call it a tie? 21:21:21 Yeswang. 21:21:32 elliott: what do you think of Smjg's comment on the talk page? 21:21:38 ML on your mom OH SNAP 21:21:39 elliott, tell ais523 to unblock us 21:21:43 I think it's misinterpreting mine 21:21:56 ais523: "misinterpreting mine"? 21:22:03 oh, I see 21:22:03 my comment on the talk page 21:22:12 I think so too, but am not sure of the relevance 21:23:15 elliott: you are joking about cobol on cogs, of course. 21:23:31 oerjan: ? 21:23:51 no way that's not esoteric :P 21:24:01 C on Crack. Perl on Propellers. Scheme on Speed. Python on Poop. C# on This. Is. Stupid. 21:24:39 oerjan: pls no promotion of the "anything unserious is esoteric" meme :( 21:24:46 that's what got us LOLCODE 21:25:03 * oerjan promotes with the swatter -----### 21:25:23 esolangs are all about the THEORETICAL AWESOME of course. 21:25:27 elliott: I think lolcode is esoteric 21:25:34 it's a thematic language; it's uninteresting semantically 21:25:41 but it fits the requirements to be an esolang 21:25:48 Glass is an esolang 21:25:57 ais523: http://esolangs.org/wiki/Talk:Cobol_on_Cogs#Off-topic 21:26:01 and it's pretty much just an OO stack machine with weird syntax. 21:26:10 you can wait for someone else to express an opinion, I suppose :P 21:26:14 elliott: I'll wait for other comments, like usual 21:26:19 CakeProphet: how many OO stack machines are there? 21:26:29 I know of Python. 21:26:52 well 21:26:57 the leading implementation of Python 21:27:00 more like stuck machine *HACK* *COUGH* *WHEEZE* 21:27:03 but not python itself I guess. 21:28:08 don't get stuck by putting stock in stack machines, stick to stg 21:28:25 wait that has a stack. strike that. 21:31:43 stackless spineless tagless g-machine 21:31:48 !glass {M[m(_o)O!"Hello World!"(_o)o.?]} 21:31:51 Hello World! 21:32:04 hmmm 21:32:06 hello world 21:32:09 I wonder if there are any processors with a cactus stack. 21:33:52 and yet another spam 21:34:01 -!- MDude has quit (Ping timeout: 276 seconds). 21:34:32 !glass {M[m(_o)O!(_a)A!<2><2>(_a)a.?(_o)(on).?]} 21:34:32 4 21:35:37 -!- elliott_ has joined. 21:35:39 -!- elliott has quit (Read error: Connection reset by peer). 21:41:48 Now I made ligatures work in the Haskell program for DVI processing 21:41:59 -!- pikhq has joined. 21:42:18 !glass {M[m(_o)O!(_a)A!n<5>=t<1>=/ntnn1(_a)s.?(_a)m.?=nn1(_a)s.?=\t(_o)(on).?]} 21:42:18 0 21:42:20 (It is not needed to read a DVI file, but kerning/ligature is useful when writing DVI files) 21:42:22 :( 21:42:34 oh rite 21:42:43 -!- DCliche has joined. 21:43:20 !glass {M[m(_o)O!(_a)A!n<5>=t<1>=/nttn(_a)m.?=nn1(_a)s.?=\t(_o)(on).?]} 21:43:20 0 21:43:23 :( 21:43:26 0 21:44:51 -!- Darth_Cliche has quit (Ping timeout: 240 seconds). 21:45:00 -!- pikhq_ has quit (Ping timeout: 258 seconds). 21:46:57 !glass {M[m(_o)O!(_a)A!n<5>=t<1>=/nttn(_a)m.?=nn<1>(_a)s.?=\t(_o)(on).?]} 21:46:57 0 21:46:59 :( 21:47:17 Gregor: help make my factorial work. 21:47:43 Oh god, Children in Need is on. 21:47:54 Someone distract me before I start wanting to kick babies. 21:48:08 Phantom_Hoover: that's Wordwang! 21:49:46 that's quaternionwang! 21:54:38 !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:54:38 0 21:54:41 nsjentkjwerkhsdkfhwert 21:56:51 oh 21:57:34 !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 120 21:57:38 yaaaaaaaay 22:00:47 "Homeomorphic to a 3-sphere." — Minecraft title screen text. 22:01:07 Protip, Notch: if you're going to make glib little references to maths, *get them right*. 22:01:37 Phantom_Hoover: you assume that most people actually care that it's correct. 22:01:53 Phantom_Hoover totally said that. 22:02:15 Phantom_Hoover: I assume that you assume that most people actually care that it's correct. 22:03:17 well, does minecraft have a point at infinity? if so it could be right :P 22:03:29 oh hm there's that height limit 22:03:41 so not likely 22:04:01 oerjan: it's infinite in two dimensions and finite in one 22:04:31 oerjan: But IF YOU'D HELP ME WITH MY PLANETARY MODEL, I think an Elliottcraft planet would be a 3-sphere 22:04:33 homeomorphic to a 3-ball then, probably. assuming open. 22:04:40 FSVO 'infinite'. 22:04:50 Phantom_Hoover: It's infinite in intention and in practice. 22:04:51 you assume he is referring to the topological space of the minecraft world. 22:04:53 how foolish. 22:05:08 Yes, because homeomorphism is a topological thing. 22:05:35 Phantom_Hoover: When will you realise that CakeProphet just says dumb things as his special version of a "joke". 22:06:00 no that wasn't a joke. 22:06:04 elliott_: i don't see planets as being 3-spheres, really 22:06:15 oerjan: they're infinite in three dimensions 22:06:21 oerjan: Elliottcraft space travel involves moving in the fourth :P 22:06:25 elliott_, that's not a 3-sphere. 22:06:31 Oh, hmm. 22:06:44 Yeah, oops. 22:06:49 Also you realise that you're recreating Madoka-Kaname's stupid realm system. 22:06:53 R^3 + a point at infinity 22:06:58 Phantom_Hoover: Not really? 22:07:10 Phantom_Hoover: The idea is proper space, but I don't really feel like sacrificing infinite worlds. 22:07:27 wait 22:07:27 what 22:07:33 if you made the point at infinity 22:07:38 the access point 22:07:44 (This makes literally no sense.) 22:07:51 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 sacrificing infinite worlds should be the goal of any respectable galactic overlord 22:09:13 -!- sebbu2 has changed nick to sebbu. 22:09:36 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:09:52 I don't know? 22:11:44 -!- sebbu2 has joined. 22:11:44 -!- sebbu2 has quit (Changing host). 22:11:44 -!- sebbu2 has joined. 22:13:42 Phantom_Hoover: Gregor: "Danger Mouse co-creator Mark Hall dies after battle with cancer" ;______; 22:13:55 Oh good here's a more reliable source: http://www.bbc.co.uk/news/entertainment-arts-15792282 22:14:23 noooo? 22:14:27 -!- sebbu has quit (Ping timeout: 240 seconds). 22:14:34 Phantom_Hoover: Why the question mark this is the SADDEST 22:15:15 I'm sorry I never really watched Danger Mouse? 22:15:26 I'll blame it on Except For Viewers In Scotland. 22:15:27 Phantom_Hoover: Your life is woefully incomplete? 22:16:15 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:00 CakeProphet: ACCEPT 22:17:20 Phantom_Hoover: satisfactory answers to what if questions include "woah" or "dude" 22:17:27 or "woah dude" 22:17:39 elliott: I don't know how to accept silly invites. 22:17:44 /join 22:17:44 I've yet to figure it out. 22:17:53 elliott: but that's not really accepting anything 22:17:55 I can do that anyway. 22:17:59 * CakeProphet is confused by these IRC customs. 22:18:01 That's how you accept invites. 22:18:28 CakeProphet, because it's not exactly tongue-in-cheek? 22:18:33 elliott: that makes no sense. 22:18:43 CakeProphet: /join #esoteric-minecraft 22:18:53 but I can just do that anyway. 22:18:57 your invite is meaningless. 22:19:00 if there is no way to accept it 22:19:06 It's screaming "look how clever I am, I know what a 3-sphere is" without actually /knowing/. 22:19:06 that is distinct from the normal way of joining channels. 22:19:10 CakeProphet: JOIN NOW. 22:19:21 Phantom_Hoover: I bet Notch knows what a 3-sphere is. 22:19:22 Invites allow you to join invite-only channels, for one. 22:19:37 CakeProphet, he evidently doesn't know what either it or homeomorphism is. 22:20:00 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 based on his tongue-in-cheek reference to them? :P 22:20:08 I'm not convinced. 22:20:46 CakeProphet, *it's not isomorphic to the 3-sphere*. 22:20:52 Not even *close*. 22:21:06 RIP mother of Brian Joseph Burton 22:21:30 It's isomorphic to R^2×[0,1] in the ideal case. 22:21:31 er, co-father? I'm confused. 22:21:33 CakeProphet: JOIN THE FUCKING CHANNEL 22:21:39 Phantom_Hoover: but uh... 22:21:41 okay nevermind 22:22:50 -!- ais523 has quit (Remote host closed the connection). 22:23:40 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 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 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 CakeProphet: You don't actually play Minecraft, do you? 22:24:59 but that he has instead successfully pulled someone's strings. 22:25:01 elliott: nope 22:25:02 I can assure you that Notch has no idea what he's talking about. 22:25:11 And that the 3-sphere remark will be taken from someone else telling him it is. 22:25:38 but can you /know/? 22:25:38 Now join the fucking channel 22:25:48 epistemology time 22:26:55 elliott: I refuse to concede to the demands of ruthless channel despots. 22:27:01 Join or die. 22:27:36 you are not the catholic church / expanding Islamic empire / etc 22:28:26 Expanding Islamic empire? 22:28:35 yes. 22:28:56 Any particular Islamic empire? 22:29:03 I guess the Umayyad Caliphate? I dunno they probably did that in the Orthodox Caliphate too. 22:29:23 the one, that was the empire, that was islamic, back in the day, with the caliphates. 22:29:49 Ottoman? 22:29:51 no. 22:30:30 I could explain it, or I could just link this http://en.wikipedia.org/wiki/Islamic_empire 22:31:13 I guess it is a pretty ambiguous term... 22:31:47 but yeah the caliphates expanded their empire by conquering people and then forcing them to either convert to Islam or die. 22:31:58 that empire is the one I was referring to. 22:32:47 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 `addquote but yeah the caliphates expanded their empire by conquering people and then forcing them to either convert to Islam or die. [...] i thought it was sort of, convert to islam or pay extra taxes, but i guess it varied a lot. 22:33:04 722) but yeah the caliphates expanded their empire by conquering people and then forcing them to either convert to Islam or die. [...] i thought it was sort of, convert to islam or pay extra taxes, but i guess it varied a lot. 22:33:09 oerjan: well, for monotheists yes 22:33:09 -!- Ngevd has changed nick to yorrick. 22:33:16 -!- yorrick has changed nick to Ngevd. 22:33:26 I was under the impression that they were not so merciful to polytheists. 22:33:38 yeah there was that dhimmi distinction 22:35:37 -!- sebbu2 has changed nick to sebbu. 22:35:46 Could've sworn it was something like "convert to Abrahamic monotheism or die, convert to Islam or pay taxes" 22:37:10 i read the zoroastrians were accepted as well, in iran 22:37:48 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:40 `welcome tica_chan 22:40:43 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:40:50 Hi ! 22:41:18 Hello! 22:41:49 How are you? 22:41:58 Fine and you ? 22:42:03 -!- Ngevd has set topic: !. 22:42:15 I did not mean to change the topic 22:42:17 Um... 22:42:22 Not entirely sure how it happened 22:42:26 eek 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 oerjan: wtf is `welcome and why does it exist 22:42:59 oO 22:43:02 it's `@ person ? welcome :P 22:43:10 elliott: it accepts more than one person 22:43:18 elliott: ths is `welcome 22:43:23 `welcoem elliott 22:43:25 oerjan: that would go in @, not a specific command... 22:43:25 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: welcoem: not found 22:43:25 `url bin/welcome 22:43:27 also, no one could remember the syntax :P 22:43:27 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/welcome 22:43:34 ew 22:43:37 elliott: it calls @ inside 22:43:40 `rm bin/welcome 22:43:42 No output. 22:43:42 oerjan: elliott doesn't like people installing shortcuts to other commands on HackEgo 22:43:46 for some reason. 22:43:47 oerjan: it's about 5000 times more complicated than it needs to be :P 22:43:48 ah. 22:43:49 tica_chan, we're a bunch of geeks 22:43:56 And nerds 22:43:59 Ow. I see that x) 22:44:03 elliott: i said it accepts a list of nicks 22:44:03 But comparatively few dorks! 22:44:10 oerjan: yes, it still is 22:44:18 ;_; 22:44:43 elliott: official resident HackEgo despot. 22:44:47 if [ $# -e 0 ]; then exec ? "$@"; else name=$1; shift; exec @ "$name" welcome "$@"; fi 22:45:23 So... geeks and nerds make me afraid... I think I'll escape 22:45:41 tica_chan: (if you want the other kind of esoteric, see #Philosophy) 22:45:46 warning: it's a really crappy channel 22:45:51 (lol) 22:46:01 goodbye, geeks ! 22:46:13 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 tica_chan, no stay! 22:46:28 oerjan: oh, well that's trivially fixable 22:46:36 -!- tica_chan has left. 22:46:40 wrap whole thing in f () { ... }, do f "$*" 22:46:55 Well, with any luck the topic fiasco will NEVER HAPPEN AGAIN 22:46:55 I GUESS I'll add it 22:47:29 `run echo '#!/bin/sh' >bin/welcome; echo 'if [ $# -eq 0 ]; then' >>bin/welcome 22:47:31 No output. 22:47:53 `run echo ' exec ? $*' >>bin/welcome 22:47:55 No output. 22:48:07 `run echo else >> bin/welcome; echo ' name=$1' >>bin/welcome; echo ' shift' >>bin/welcome 22:48:08 i think my (echo ...; echo ...) >... method is shorter 22:48:09 No output. 22:48:32 erm 22:48:36 fuck :P 22:49:02 oerjan: hmm, what was that? 22:49:06 i didn't actually read yours, obviously >:) 22:49:42 just to put the piping outside all the echos 22:49:54 oerjan: wasn't it also Perl? 22:50:03 or, no? 22:50:10 there was something that was perl. 22:50:12 oerjan: oh 22:50:24 OK I now have a cat on the arm of my chair. 22:50:25 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 oerjan: elliott also deleted my perl scripts. SOUNDS SUSPICIOUS DOESN'T IT. ;) 22:51:01 CakeProphet: AHA 22:51:17 oerjan: sh freaks me out too 22:51:24 `runperl print "though he may have forgot this one" 22:51:25 though he may have forgot this one 22:51:29 oh yeaaaaah 22:51:31 but thankfully irc names cannot have spaces in them. 22:51:33 `rm bin/runperl 22:51:35 No output. 22:51:37 I ALREADY REMOVED THAT :( 22:51:40 !perl print "HMPH\n" 22:51:41 HMPH 22:51:41 noep 22:51:48 elliott: no, but they can have \'s, i think :P 22:51:50 `fetch http://sprunge.us/dXcP 22:51:51 2011-11-18 22:51:51 URL:http://sprunge.us/dXcP [156] -> "dXcP" [1] 22:51:57 `run mv dXcp bin/welcome; chmod +x bin/welcome 22:52:00 mv: cannot stat `dXcp': No such file or directory 22:52:00 elliott: but EgoBot is not HackEgo 22:52:05 `run mv dXcP bin/welcome; chmod +x bin/welcome 22:52:07 No output. 22:52:08 `welcome oerjan blah blah 22:52:17 ... 22:52:18 and whatever else confuses sh 22:52:24 ​/hackenv/bin/welcome: 7: Syntax error: end of file unexpected (expecting "fi") 22:52:52 wtf 22:53:18 you didn't terminate your if 22:53:18 ? 22:53:27 oh, no. 22:55:19 tica_chan: (if you want the other kind of esoteric, see #Philosophy) <-- is this the official redirect now? 22:55:45 elliott: declarer of official things. 22:55:46 oerjan: yes; the trick is that it's a really terrible channel composed of two #esoteric rejects who are completely bizarre. 22:56:08 you may decide for yourself whether this is a cruel joke or the best possible alternative :P 22:56:10 too esoteric for #esoteric, as it were. 22:56:14 What rejects? 22:56:43 -!- SgeoN1 has joined. 22:57:00 zzo38: people who came in here thinking it's about that other kind of esoteric :P 22:57:18 O, those people. But which ones, specifically? 22:58:28 i forget the names 23:00:08 elliott: does shift return anything? 23:00:22 nothing in shell "returns" anything 23:00:36 ah. 23:00:37 okay. 23:01:12 I guess shift > /dev/null would suck for the common case 23:01:13 `cat bin/welcome 23:01:15 ​#!/bin/sh \ f () { \ if [ $# -eq 0 ]; then \ exec ? welcome \ else \ name=$1 \ shift \ exec @ "$name" welcome "$@" \ fi \ } \ f $* \ 23:01:50 the mind boggles at the brain that could consider this preferable to my perl. 23:02:08 someone who doesn't like perl. 23:03:10 oerjan: a haskell solution will also be accepted 23:03:18 `welcome now what? 23:03:21 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:28 ah it works 23:03:29 ooh, someone fixed it? 23:03:30 `welcome hi 23:03:32 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 I don't know, why do you need a different one from shell script in this case. 23:03:38 `welcome weird\nick 23:03:40 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:49 elliott: *MWAHAHAHA* 23:03:56 -!- oerjan has changed nick to weird\nick. 23:04:01 perfectly legal, too 23:04:03 oerjan: it's the \n :P 23:04:05 -!- weird\nick has changed nick to oerjan. 23:04:08 i'll write a haskell version >:) 23:04:22 elliott: does HackEgo _have_ haskell? 23:04:33 `run ghc --version 23:04:35 The Glorious Glasgow Haskell Compilation System, version 7.2.1 23:04:42 Why do you need a Haskell version? Shell scripts works for this case (but you need to correct the mistake) 23:04:54 elliott: what _do_ you have against perl... 23:05:11 it's my second favorite language, basically 23:06:04 and won't haskell be slow unless precompiled 23:06:17 we have ghc 23:06:29 do { names <- getArgs; let x:xs = ["@", name | name <- names] ++ ["?", "welcome"]; (_,_,_,p) <- proc x xs; waitforProcess p >>= ... bah 23:06:46 oerjan: fine put the perl version back :P 23:06:47 best choice: perl 23:06:54 `help 23:06:55 Runs arbitrary code in GNU/Linux. Type "`", or "`run " for full shell commands. "`fetch " downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert " can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 23:07:05 `revert 997 23:07:06 Done. 23:07:07 `rm bin/runperl 23:07:08 `url bin/welcome 23:07:09 No output. 23:07:10 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 oerjan: if (defined($_=shift)) 23:07:29 i am more than 100% sure you can do that more nicely :P 23:08:13 oerjan: anyway what's wrong with 23:08:17 exec map { "@", $_ } @ARGV, "?", "welcome"; 23:08:22 oh 23:08:36 exec map { "@", $_ } (split / /, $ARGV[1]), "?", "welcome"; 23:08:40 or something 23:08:55 the @ needs to get its arguments as one string 23:09:01 `cat bin/@ 23:09:03 ​#!/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:08 oerjan: wrong. 23:09:19 oh? hm. 23:09:39 `run @ test @ this echo hi 23:09:40 test: this: hi 23:09:52 ah 23:09:57 although... 23:09:59 exec map { "@", $_ } ($#ARGV > 1 ? @ARGV : split(/ /, $ARGV[1])), "?", "welcome"; 23:10:09 `run @ weird\nick @ this echo hi 23:10:11 weirdnick: this: hi 23:10:20 *MWAHAHAHA* 23:10:20 exec map { "@", $_ } ($#ARGV > 1 ? @ARGV : split(/\s+/, $ARGV[1])), "?", "welcome"; 23:10:25 oerjan: that's shell escaping, doofus 23:10:30 `run @ 'weird\nick' @ this echo hi 23:10:32 weird \ ick: this: hi 23:10:36 fuq 23:10:49 `@ weird\nick echo hi 23:10:51 weird \ ick: exec: 9: weird: not found 23:10:58 what 23:11:07 XD 23:11:22 * oerjan might convert elliott to perl yet at this rate 23:12:13 oerjan: or maybe i'll implement a wonderful process handling library for haskell >:) 23:12:47 well you could always do $_=shift; if (defined) 23:13:31 regarding the defined($_=shift) bit 23:13:36 but, I think that looks fine. good perl. :) 23:13:45 defined($_=shift) was the first thing i tried which worked 23:13:55 i tried just $_[0] before 23:14:07 hm or something 23:14:40 ah yeah perl is weird about @_ 23:14:51 because it's readonly 23:18:10 oh wait 23:18:12 oerjan: you think i'm joking, but i actually just sketched a simple API right now :P 23:18:19 @_ isn't a thing in your current scope anyway. 23:18:19 Maybe you meant: . ? @ v 23:18:27 elliott: there's rawSystem btw 23:18:34 shift uses @ARGV when outside of functions and @_ when inside them 23:18:36 @hoogle rawSystem 23:18:36 System.Process rawSystem :: String -> [String] -> IO ExitCode 23:18:37 System.Cmd rawSystem :: String -> [String] -> IO ExitCode 23:18:41 oerjan: yeah but it's ugly and planned for deprecation 23:18:46 wat 23:18:59 oerjan: you're meant to do everything through createProcess 23:19:34 elliott: have they gone completely insane? 23:19:42 oerjan: createProcess isn't that bad... 23:20:41 welcome :: [String] -> IO () 23:20:41 welcome names = startCommand cmd >=> waitProcess >>= exitWith 23:20:41 where cmd = proc $ ["@", name | name <- names] ++ ["?", "welcome"] 23:20:41 yesssssss 23:23:10 nope 23:23:55 oerjan: ? 23:24:41 proc takes the command separately. also i see no startCommand. 23:25:17 oerjan: whoosh 23:25:46 oh it's your own redesign? 23:27:20 CakeProphet: @_ is @ARGV outside functions 23:27:30 oh? 23:28:13 or wait 23:28:30 `run echo '$_=shift; s/ +/ @ /g; exec ($_?"@ $_ ":"")."? welcome";' > bin/welcome2 23:28:32 No output. 23:28:34 -!- MSleep has joined. 23:28:34 -!- copumpkin has joined. 23:28:41 `run perl bin/welcome2 23:28:43 No output. 23:28:45 :( 23:29:41 `run perl bin/welcome2 test 23:29:43 test: 23:29:46 lol 23:29:59 CakeProphet: nice complete lack of escaping. 23:30:09 CakeProphet: d'oh i've misread the documentation, no wonder @_ didn't work :P 23:30:10 I escape from no one. 23:30:21 `cat bin/welcome2 23:30:23 ​$_=shift; s/ +/ @ /g; exec ($_?"@ $_ ":"")."? welcome"; 23:30:46 it's @ARG which is a synonym for @_, not @ARGV 23:31:46 CakeProphet: #!/usr/bin/perl -w , friend 23:31:55 :( 23:32:44 `run {echo '#!/usr/bin/perl -w'; echo '$_=shift; s/ +/ @ /g; exec ($_?"@ $_ ":"")."? welcome";'} > bin/welcome2 23:32:47 bash: {echo: command not found 23:32:53 `run { echo '#!/usr/bin/perl -w'; echo '$_=shift; s/ +/ @ /g; exec ($_?"@ $_ ":"")."? welcome";' } > bin/welcome2 23:32:55 bash: -c: line 1: syntax error: unexpected end of file 23:32:58 ekkrjiwerjiuwhejr 23:33:01 help bash 23:33:05 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:30 it does. 23:33:31 >_> 23:33:34 right? 23:33:51 mind you, @ also breaks it 23:33:51 MUAHAHAHAH 23:34:17 `run echo '#!/usr/bin/perl -w' > bin/welcome2; echo '$_=shift; s/ +/ @ /g; exec ($_?"@ $_ ":"")."? welcome";' >> bin/welcome2 23:34:19 No output. 23:34:29 `cat `which welcome2` 23:34:32 cat: `which welcome2`: No such file or directory 23:34:37 `run cat `which welcome2` 23:34:45 I am m4st3r h4k3g0 23:35:08 No output. 23:35:45 >_> 23:35:59 `which welcome2 23:36:01 No output. 23:36:05 >_> 23:36:13 elliott: Feel free to read JIT try2. 23:36:13 `run chmod +x bin/welcome2 23:36:15 No output. 23:36:17 oh hi. 23:36:25 `which welcome2 23:36:26 ​/hackenv/bin/welcome2 23:36:27 oerjan: stupid executable bit... 23:36:33 `welcome2 23:36:35 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:41 lul 23:36:50 `run echo '#!/usr/bin/perl -w' > bin/welcome2; echo '$_=shift; s/ +/ @ /g; exec (($_?"@ $_ ":"")."? welcome");' >> bin/welcome2 23:36:52 No output. 23:36:57 `run chmod +x bin/welcome2 23:36:58 No output. 23:37:00 `welcome2 hi 23:37:02 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:07 `welcome2 23:37:10 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:12 `welcome2 weird\nick\asshole 23:37:15 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 CakeProphet: @ itself is not \ clean 23:38:40 `cat bin/@ 23:38:42 ​#!/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 `run echo '#!/usr/bin/perl -w' > bin/welcome2; echo '$_=shift and s/ +/ @ /g; exec ((defined?"@ $_ ":"") . "? welcome");' >> bin/welcome2 23:39:39 No output. 23:39:42 `run chmod +x bin/welcome2 23:39:44 No output. 23:39:48 `run welcome2 hi asshole 23:39:50 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:39:55 awediuhweiuhwiuerhiuw4hriuhswr 23:39:59 oerjan: screw -w :P 23:40:08 and -e 23:40:10 which is 23:40:25 an imaginary option that makes errors cause perl programs not to execute. 23:41:17 `run echo '#!/usr/bin/perl -w' > bin/welcome2; echo '$_=shift and s/ +/ @ /g; exec (((defined)?"@ $_ ":"") . "? welcome");' >> bin/welcome2 23:41:19 No output. 23:41:23 `run chmod +x bin/welcome2 23:41:25 No output. 23:41:27 `welcome2 23:41:29 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:32 `welcome2 hi hi 23:41:35 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:37 `welcome2 weird\dude 23:41:39 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:45 `run welcome2 'weird\dude' 23:41:48 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 $ clang -O4 full.c 23:41:51 /tmp/cc-p91cPs.o: file not recognized: File format not recognized 23:41:52 >_O 23:42:06 `url bin/welcome2 23:42:07 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/welcome2 23:42:15 is this version betterer than welcome? 23:43:09 `welcome 23:43:11 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 `run (echo '#!/usr/bin/perl -w'; echo '$_ = join " ", @ARGV; if (s/^.*? +.*? //) { print "$1: "; exec $2, $_; }' >bin/@ 23:43:23 bash: -c: line 1: syntax error: unexpected end of file 23:43:30 `run (echo '#!/usr/bin/perl -w'; echo '$_ = join " ", @ARGV; if (s/^.*? +.*? //) { print "$1: "; exec $2, $_; }') >bin/@ 23:43:32 No output. 23:43:37 elliott: OH NO PERL IS TAKING OVER 23:43:42 elliott: BEAR ARMS 23:43:46 `run chmod +x bin/@ 23:43:48 No output. 23:43:54 -!- Zuu has quit (Ping timeout: 244 seconds). 23:43:55 `@ test echo hi 23:43:57 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:03 XD 23:44:13 oh duh 23:44:46 oerjan: stop replacing everything with perl >:( 23:45:02 `run (echo '#!/usr/bin/perl -w'; echo '$_ = join " ", @ARGV; if (s/^([^ ]*) +([^ ]*) +//) { print "$1: "; exec $2, $_; }') >bin/@ 23:45:04 No output. 23:45:09 `run rm bin/welcome2; # breaks on \ 23:45:11 No output. 23:45:14 `run chmod +x bin/@ 23:45:16 No output. 23:45:22 `@ test echo hi 23:45:23 test: hi 23:45:29 `@ test\nick echo hi 23:45:31 test\nick: hi 23:45:35 elliott: it doesn't 23:45:43 `welcome2 weird\dude 23:45:43 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:43 `welcome test\nick ho 23:45:45 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:45:50 CakeProphet: it does 23:46:11 that has nothing to do with my script. 23:46:18 elliott: now there's a @ and welcome which escape properly, at least 23:46:27 (or not-unescape) 23:46:33 oerjan: you could have just fixed @ without rewriting it... 23:46:47 (in perl) 23:46:55 elliott: no, because i cannot get my head around sh's escape madness 23:47:04 oerjan: then tell someone who can to fix it :P 23:47:17 elliott: feel free to rewrite it in sh again 23:47:30 it wouldn't need rewriting 23:47:34 `run echo '#!/usr/bin/perl -w' > bin/welcome2; echo '$_=shift and s/ +/ @ /g;' >> bin/welcome2; echo 'exec (((defined)?"@ $_ ":"") . "? welcome");' >> bin/welcome2 23:47:36 No output. 23:47:37 OSHI HACKEGO EDIT WAR 23:47:49 `run chmod +x bin/welcome2 23:47:50 No output. 23:48:01 `welcome2 weird\nick\asshole 23:48:03 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:10 oh look it is my script, wonder why. 23:48:18 `welcome weird\nick\asshole 23:48:20 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:48:53 `rm bin/welcome2 23:48:54 No output. 23:49:48 I was under the impression that interpolation did no escapey nonsense. 23:50:11 CakeProphet: exec uses a shell if you have just one string argument to it 23:50:36 you must split away the command to avoid that 23:50:59 oh i was going to check 23:51:07 `run @ test @ ho echo hi 23:51:09 test: ho: hi 23:51:14 good 23:52:45 challenge: make a script that is like @ but automatically uses the command invoker as the nick. 23:53:17 i'm not sure HackEgo passes on that information, or does it 23:53:27 `printenv 23:53:29 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:30 s/make a script/hack hackego so/ 23:53:34 `which printenv 23:53:36 ​/usr/bin/printenv 23:53:42 wtf is that distinct from env 23:53:56 `env 23:53:58 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 i didn't know env could print too 23:54:23 `run file `which printenv` 23:54:25 ​/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:31 `run file `which env` 23:54:33 ​/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:54:37 huh 23:54:42 not even a softlink or anything. 23:55:07 well env lets you set them. 23:55:16 `run ls -l /usr/bin/printenv /usr/bin/env 23:55:19 ​-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:24 they 23:55:31 're not the same file... 23:56:07 because printenv can't set 23:56:10 the question is why it exists at all 23:56:21 yeah but why have printenv at all, right 23:56:37 `env TERM 23:56:39 env: TERM: No such file or directory 23:56:45 `printenv TERM 23:56:47 linux 23:56:53 ok that's a difference 23:56:55 ah 23:57:01 aka $TERM :P 23:57:03 or getenv("TERM") 23:57:04 or [...] 23:57:25 so do we have an alias for sprunge? 23:57:42 `which fetch 23:57:44 No output. 23:57:45 you can't access sprunge 23:57:50 use paste 23:58:05 `which curl 23:58:07 ​/usr/bin/curl 23:58:10 I bet I can. :P 23:58:25 `help paste 23:58:26 Runs arbitrary code in GNU/Linux. Type "`", or "`run " for full shell commands. "`fetch " downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert " can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 23:58:33 CakeProphet: try. 23:58:38 `run paste --help 23:58:40 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.22312 23:58:45 lol 23:59:17 `url bin/paste 23:59:19 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/paste 23:59:48 ah okay. 23:59:49 good.