00:00:48 yeah ?where was the loophole i was thinking of. 00:01:08 god help us if someone makes a bot triggered by "I" or a space 00:01:09 @where paste 00:01:09 http://lpaste.net/new/haskell 00:01:48 @where+ loop @where q 00:01:48 Good to know. 00:01:52 @where loop 00:01:52 @where q 00:02:00 ?where ?where 00:02:00 ?where ?where 00:02:05 hth 00:02:20 yeah. it really should just add a space to everything :) 00:02:29 No, spaces are annoying. 00:02:47 @where- loop 00:02:48 Maybe you meant: where+ where 00:03:40 jconn: ) 1+1 00:03:41 oerjan: |syntax error 00:03:41 oerjan: | )1+1 00:03:50 jconn: 1+1 00:03:50 oerjan: 2 00:04:11 i think jconn and lambdabot can loop. 00:04:33 well, assuming J can output formatted text. 00:04:44 do you know that great feature where lambdabot checks whether a nick ends in "bot" 00:04:59 shachaf: it does? 00:05:22 elliott discovered it when testing in the channel "#lambdabot" 00:05:39 it was removed. 00:05:46 do you know that great feature where lambdabot checked whether a nick ends in "bot" 00:07:11 did it just silently ignore every command you'd give in #lambdabot. if so that sounds... fun 00:07:18 shachaf: it did? 00:14:15 -!- tertu has quit (Ping timeout: 272 seconds). 00:15:10 -!- nooodl has quit (Quit: Ik ga weg). 00:17:54 -!- Sgeo has joined. 00:19:08 -!- tertu has joined. 00:32:20 -!- Oj742 has joined. 00:35:14 -!- Slereah_ has joined. 00:36:21 -!- Slereah has quit (Ping timeout: 240 seconds). 00:49:42 -!- Oj742 has quit (Ping timeout: 246 seconds). 00:56:36 !malbolge (=<`#9]~6ZY32Vx/4Rs+0No-&Jk)"Fh}|Bcy?`=*z]Kw%oG4UUS0/@-ejc(:'8dc 00:56:37 Hello World! 00:57:13 -!- Taneb has quit (Quit: Leaving). 00:58:38 huh, i thought malbolge programs were generally longer 00:59:08 User:ErichS8 at wikipedia has been greatly improving it 01:04:11 hm the one in our wiki's hello world page is none of the ones in wikipedia. 01:04:26 "After each instruction is executed, the guilty instruction gets encrypted[...] after a jump, Malbolge will encrypt the innocent instruction just prior" this seems unwikipedian 01:04:34 good pun though 01:04:50 but _starts_ with the same code as the newest short version. 01:05:12 !malbolge (=<`#9]~6ZY32Vw/.R,+Op(L,+k#Gh&}Cdz@aw=;zyKw%ut4Uqp0/mlejihtfrHcbaC2^W\>Z,XW)UTSL53\HGFjW 01:05:12 Hello, world. 01:05:23 oh it's not exactly the same text. 01:06:09 -!- typeclassy has quit (Ping timeout: 246 seconds). 01:06:21 first 14 chars are the same. 01:09:46 mtve: hey you made the one in the wiki http://esolangs.org/w/index.php?title=Hello_world_program_in_esoteric_languages&diff=6158&oldid=5803 01:10:36 idle as a snail 01:12:34 `seen mtve ever 01:12:39 2013-03-15 11:37:33: i like kenrube's homepage btw (not really sure its his, but it was mentioned somewhere linked to him) - http://www.yyyyyyy.info/ 01:25:49 -!- Phantom__Hoover has quit (Ping timeout: 272 seconds). 01:35:41 -!- oerjan has quit (Quit: nuit). 02:00:01 -!- Sprocklem has joined. 02:29:34 http://arstechnica.com/tech-policy/2013/11/newegg-trial-crypto-legend-diffie-takes-the-stand-to-knock-out-patent/ 02:29:40 -!- Sprocklem has quit (Ping timeout: 246 seconds). 02:30:56 ^good article 02:34:47 -!- yorick has quit (Remote host closed the connection). 02:39:03 discovery: opencl is really boring 02:40:18 -!- Sorella`` has changed nick to Sorella. 02:40:19 -!- Sorella has quit (Changing host). 02:40:19 -!- Sorella has joined. 02:40:24 why does seemingly every C library define a typedef around int and other basic types 02:45:05 -!- Taneb has joined. 02:45:13 Missing: Taneb's sleep schedule 02:45:15 Reward if found 02:50:16 -!- Sprocklem has joined. 02:50:31 Sorry, i borrowed it. 02:50:49 ion, give it back when you're done 02:51:10 Crap. It seems i have lost it, too. 02:51:17 :O 02:59:26 I must be some kind of cruel, heartless neurogengineer 02:59:39 :O 02:59:58 Don't know if I already mentioned my latest norn cruelty or not 03:00:02 did you decerberate a cat 03:00:05 cerebrate 03:00:06 god 03:00:22 look did you mutilate a fucking cat or not fuck this language fuck science fuck everything 03:00:36 No cats were mutilated in the mutilation of norns 03:03:01 -!- zzo38 has joined. 03:03:24 Made a norn that's blind to anything that's moving, relative to its own location. Norns tend to move around a lot, especially when they can't do anything, e.g. if they're blind 03:03:49 What's a norn 03:04:13 -!- typeclassy has joined. 03:04:19 pointless nerd shit. i want to see blood sgeo 03:04:39 blood on your hands 03:05:23 Taneb: a species of virtual creature in the Creatures series of games 03:09:35 -!- typeclassy has quit (Read error: Connection reset by peer). 03:13:24 -!- typeclassy has joined. 03:24:27 -!- typeclassy has quit (Ping timeout: 265 seconds). 03:25:25 -!- realz has quit (Ping timeout: 245 seconds). 03:39:51 -!- carado has quit (Ping timeout: 252 seconds). 03:41:28 -!- parduse has joined. 03:41:44 -!- parduse has left. 03:55:33 -!- tertu has quit (Ping timeout: 272 seconds). 04:02:32 -!- Taneb has quit (Quit: Leaving). 04:04:11 -!- nisstyre has joined. 04:10:40 -!- Oj742 has joined. 04:59:20 -!- tertu has joined. 05:06:17 -!- zzo38 has quit (Remote host closed the connection). 05:14:47 -!- typeclassy has joined. 05:15:36 Bike: There are a lot of utterly incompetent C coders out there. 05:15:53 this is an industry standard, though... 05:15:53 Bike: There's also a lot of stupid cargo cult stuff going on. 05:16:13 Yes, but even zlib is in freaking terrible C. 05:17:15 i just, i don't get it. what's the thought process behind foo_int 05:17:29 typedef unsigned char Byte; 05:17:33 * pikhq cries 05:18:00 typedef unsigned char FAR Bytef; // Yes, because DOS is *that* important in software released today. 05:18:25 And yes, believe it or not zlib still is littered with far pointer annotations. 05:18:43 Just in case you wanna use your 286. 05:18:49 I think the modern descendant of DOS now supports x64 as well :S 05:19:00 modern descendants, to be exact 05:19:31 Eh, WinNT is about as much DOS as Linux is. 05:21:20 Bike: Part of the issue is, so few people write good C that there's nothing to learn good C style *from*. 05:21:37 I mean, shit, people use int instead of size_t for goodness sake. 05:22:10 this explains a lot about my formative years programming. 05:22:31 pikhq: and ssize_t. 05:22:36 pikhq: and ptrdiff_t. 05:22:37 in that i read a lot of C and didn't understand a bit of it 05:22:46 lifthrasiir: Yes. 05:22:47 pikhq: and intptr_t and uintptr_t and int_fastN_t etc. 05:22:52 ha. 05:23:12 lifthrasiir: To be fair-ish, intptr_t, uintptr_t, intN_t, etc. are C99-isms. 05:23:31 And Microsoft's compiler is still stuck in 1989. 05:23:39 right now i'm kind of weirded out that opencl not only has a runtime compiler but lets you call it asynchronously by specifying a callback function (??) 05:23:52 right, but that has changed printf formatting specifications as well, and there is not much need for two copies of printf in libc. 05:24:15 I really hate that %zd specifier... 05:24:27 Meh, Microsoft's C library is also psycho broken in many other regards. 05:24:55 (SUPPORT UTF-8 YOU PSYCHOTIC BASTARDS) 05:25:19 zd is size_t? 05:26:02 Yeah, z is the size_t or ssize_t length modifier. 05:26:03 pikhq: I think once upon a time msvcrt did not support floating point printing in printf() unless there are no floating point library (analogous to libm, but automatically linked) used. is this still a case? 05:26:14 what's wrong with it? 05:27:11 * pikhq looks forward to the days of i686-windows-musl 05:27:15 Bike: there are bunch of other prefixes for such integral-but-i-dunno-its-size pseudo-types. 05:27:33 ptrdiff_t is assigned, I think, %jd. 05:27:44 or that's for intptr_t? I dunno. 05:27:46 Only 2 others. j is intmax_t and t is ptrdiff_t. 05:27:59 ha. 05:28:04 The intN_t types have preprocessor defines. 05:28:08 yeah, there is intmax_t as well. 05:28:27 PRId64 etc? :S 05:28:32 Yup. 05:28:40 Suboptimal, but eh. 05:29:03 and we have INT64_C(...) macros. 05:29:07 In a sense they're the least intrusive way of doing so. Especially since they're only exposed by inttypes.h 05:29:44 this conversation has gotten away from me but now i know uint_least32_t and uint_fast32_t are distinct 05:30:19 Bike: Nominally distinct. They're pretty likely to be typedef'd the same though. 05:30:26 right 05:30:31 diggin all these constants. INTMAX_MIN 05:30:58 And you can just use "unsigned int" instead of uint_least32_t on POSIX... 05:40:23 Seriously, have you ever looked at zlib's source? 05:41:21 well, no. 05:41:41 https://github.com/madler/zlib/blob/master/adler32.c Freaking adler32 was made this complicated. 05:42:28 "#define local static" i see. 05:43:27 uint32_t adler32(uint32_t adler, const char *buf, size_t len) {uint16_t sum1 = adler, sum2 = adler>>16;for(;len;len--,buf++){sum1+=*buf;sum2+=sum1;sum1%=65521;sum2%=65521;}return (sum1 << 16) | sum2; } 05:44:00 It's not a hard function. 05:44:16 oh i'm liking ZEXPORT what's that do 05:44:33 except that division by 65521 is expensive. 05:44:44 On Windows, __declspec(dllexport). On BeOS, __declspec(dllexport). Elsewhere, nothing. 05:44:56 be used dlls? 05:46:26 pikhq: anyway, I think a freshly-redesigned version of zlib would be better to manage, there are actually several known issues with zlib's performance. 05:47:02 lifthrasiir: Fine, while(len){ size_t i = 0;for(;i < 5552 && i < len;i++) { sum1+=buf[i]; sum2+=sum1; } sum1%=65521; sum2%=65521; buf+=i;len-=i; } 05:47:06 Yeah, I'm aware. 05:47:40 * pikhq looks at ~/src/pikhq-zlib 05:49:39 -!- Sprocklem has quit (Ping timeout: 272 seconds). 05:51:46 It's not even *that* big of an interface, just kinda ugly. 05:54:27 http://sprunge.us/HLVF Like, that's the whole thing. 05:55:30 what's the difference between a voidpf and a voidp. 05:55:51 On DOS, a voidpf is far. 05:56:22 oh i like all that stuff to get a 32 bit int 05:56:46 This is the actual interface that it exports, not the official header. 05:56:56 The official header is an order of magnitude larger. 05:57:50 https://github.com/madler/zlib/blob/master/zlib.h 06:00:28 The application can compare zlibVersion and ZLIB_VERSION for consistency. If the first character differs, the library code actually used is not compatible with the zlib.h header file used by the application. This check is automatically made by deflateInit and inflateInit. 06:03:18 -!- Oj742 has quit (Ping timeout: 246 seconds). 06:03:30 Yeah, zlib's a bit... special. 06:09:11 -!- typeclassy has quit (Ping timeout: 240 seconds). 06:09:35 -!- tertu has quit (Ping timeout: 245 seconds). 06:09:47 -!- zzo38 has joined. 06:16:18 -!- tertu has joined. 06:32:05 huh, i hd no idea half-precision floats exist 06:33:47 I think they're mainly for storange and less so calculation? 06:34:01 though that guess kinda comes from the fact that intel added functions to convert to/from FP16 but no arithmetic on them 06:34:08 s/functions/instructions/? 06:34:18 that's what wikipedia said 06:34:23 but opencl c has 'em 06:34:45 O_O 06:34:51 I wonder if GPUs have them as a thing. 06:35:47 "The half data type can only be used to declare a pointer to a buffer that contains half values. 06:35:51 so, yeah, storage only. 06:36:31 you have to use builtins to get a real float out of em 06:36:43 and do, like, arithmetic. 06:38:13 and there are length three vectors. ok then! 06:39:36 float4 f = (float4)((float2)(1.0f, 2.0f), (float2)(3.0f, 4.0f)); 06:39:40 i feel right at home. 06:41:02 oh man there are arbitrary permutations of vectors. rad i guess 06:42:09 x = (float16)(a.xxxx, b.xyz, c.xyz, d.xyz, a.yzw) // now x is four of a.x, then b, c, d, then a permuted a. 06:49:54 "A divide by zero with integer types does not cause an exception but will result in an unspecified value." fuck the police 06:55:39 -!- Slereah_ has quit (Read error: Connection reset by peer). 06:55:52 -!- Slereah has joined. 07:23:40 8-bit floats ftw. 07:24:10 I have a vague recollection some system somewhere had those as a built-in data type. 07:26:21 What programs would use 8-bit floats? 07:28:48 uint8_t with a 64K multiplication table. 07:28:51 I can't think of an example offhand. http://www.mrob.com/pub/math/floatformats.html (see "Microfloats") points out that the IBM PC keyboard repeat rate is set using what's essentially a floating-point format. 07:29:44 -!- FreeFull has quit. 07:29:50 μ-law also acts as a sort of a floating point type. 07:32:14 That's also mentioned on the page. 07:50:25 -!- Vorpal has quit (Ping timeout: 245 seconds). 07:58:29 -!- tertu has quit (Ping timeout: 248 seconds). 08:05:42 -!- Vorpal has joined. 08:13:56 I think it would be useful, if PuTTY would have an option which, if enabled, does something special with SCROLL LOCK. How is such a feature made suggested? What I wanted it to do is: If scroll lock is on, it does two things: [1] Disables the "reset scrollback" options. [2] Makes the up/down/pgup/pgdn keys to scroll the window instead of sending to the server. 08:14:34 Is it would seem useful to you, too? 08:17:02 Bike: Might it be better if it would be defined to instead mean, it is undefined whether integer division by zero will cause an exception or an unspecified result? 08:17:13 -!- tromp__ has quit (Ping timeout: 272 seconds). 08:17:55 -!- tromp__ has joined. 08:34:01 -!- Phantom_Hoover has joined. 08:40:58 -!- zzo38 has quit (Remote host closed the connection). 08:41:53 -!- Phantom__Hoover has joined. 08:42:49 -!- Phantom_Hoover has quit (Ping timeout: 252 seconds). 08:56:35 Bike: yeah, GLSL also has the permutation thing. it's really useful when you're writing vector-intensive stuff 09:04:09 -!- Phantom_Hoover has joined. 09:05:12 -!- Phantom__Hoover has quit (Ping timeout: 265 seconds). 09:17:39 -!- ais523_ has joined. 09:22:39 `unicode EM DASH 09:22:43 ​— 09:22:46 thanks 09:22:52 public computer, no compose key :( 09:22:55 * :-( 09:26:45 -!- Phantom__Hoover has joined. 09:27:13 -!- Phantom_Hoover has quit (Ping timeout: 246 seconds). 09:30:40 `run unicode 'COMPOSITION SYMBOL' 'COMBINING ENCLOSING KEYCAP' # ais523_: There you go, a compose key. 09:30:41 ​⎄⃣ 09:30:59 fizzie: it doesn't render properly on this OS :-( 09:32:02 It renders quite badly in my terminal, too. (Mostly okay in the browser.) 09:49:21 -!- Phantom_Hoover has joined. 09:49:28 -!- Phantom_Hoover has quit (Changing host). 09:49:28 -!- Phantom_Hoover has joined. 09:50:16 -!- Phantom__Hoover has quit (Ping timeout: 264 seconds). 09:54:24 http://arstechnica.com/tech-policy/2013/11/jury-newegg-infringes-spangenberg-patent-must-pay-2-3-million/ 09:57:06 that's a p. great patent 09:58:30 "The lawyers from both teams took in the verdict without emotion and shook hands following the verdict." "The weather shifted dramatically since the beginning of trial, and it was cold and rainy then." "Diffie looked the part of the eccentric genius, resplendent with his long white hair and beard. He spoke with a booming voice but carefully articulated manner; he was professorial but not ... 09:58:36 ... overbearing." That's a p. weird way of reporting. 09:58:43 fizzie: yeah 09:58:56 -!- Phantom__Hoover has joined. 09:59:05 -!- Phantom_Hoover has quit (Ping timeout: 252 seconds). 10:00:52 -!- ais523_ has quit (Quit: Page closed). 10:18:06 -!- tromp__ has quit (Remote host closed the connection). 10:18:09 -!- Phantom__Hoover has quit (Ping timeout: 252 seconds). 10:19:40 -!- tromp__ has joined. 10:33:43 -!- carado has joined. 11:18:28 -!- Slereah has quit (Ping timeout: 245 seconds). 11:26:57 -!- tromp__ has quit (Remote host closed the connection). 11:28:29 -!- tromp__ has joined. 11:35:04 -!- Jafet has quit (Quit: Quit). 11:35:23 -!- Jafet has joined. 11:35:24 -!- Jafet has quit (Changing host). 11:35:25 -!- Jafet has joined. 11:35:30 -!- Jafet has left. 11:38:33 -!- Slereah has joined. 12:23:51 -!- myndzi has quit (Ping timeout: 240 seconds). 12:32:45 -!- myndzi has joined. 12:41:32 -!- Sgeo has quit (Read error: Connection reset by peer). 13:06:42 -!- yorick has joined. 13:07:28 -!- boily has joined. 13:07:36 -!- metasepia has joined. 13:14:16 -!- Frooxius has quit (Read error: Connection reset by peer). 13:15:35 -!- Frooxius has joined. 13:27:50 quintopia: bontopia matin! 13:39:41 -!- Frooxius has quit (Read error: Connection reset by peer). 13:41:53 -!- Frooxius has joined. 13:42:50 * boily ties Bike and Frooxius together. “With their disconnection powers combined, may they be Present in this Channel and Not Leave!” 13:45:25 -!- oerjan has joined. 13:49:48 `? sgeo 13:49:50 Sgeo is a language nomad. (Not to be confused with a language monad.) He invented Metaplace sex, thus killing it within a month. 13:50:59 -!- Taneb has joined. 13:51:01 `? impomatic 13:51:01 `run sed -i 's/$/ He was Doctor Mengele in his previous life, as evidenced by his norn experiments./' wisdom/sgeo 13:51:06 impomatic? ¯\(°​_o)/¯ 13:51:09 No output. 13:51:14 i think the evidence is clear by now. 13:51:16 `? Taneb 13:51:18 Taneb is not elliott, no matter who you ask. He also isn't a rabbi although he has pretended in the past. He has at least two backup keyboards, and five genders. (See also: d-modules) 13:51:26 :-) 13:52:37 oerjan: are you writing down the SGSGS? 13:52:40 It is true that I am not elliott. 13:52:48 what's the SGSGS 13:52:52 I have played the Rabbi in Fiddle orn the Roof 13:52:56 Strange and Great SGeo Saga. 13:53:17 I used to have two spare keyboards, but I have since thrown one out because it did not work 13:53:19 Taneb: i didn't hear you say any more about it, so i assume the latest auditions didn't go too well. 13:53:28 oerjan: didn't get any parts 13:53:38 Also I realised I really don't have the time 13:53:48 mechanical keyboards are proliferating in our workplace. mwah ah ah. 13:54:01 The gender thing I can't remember why, probably the kind of joke I make about myself 13:54:37 Someone sharing my surname is cited on the wikipedia page for d-modules 13:54:38 that's because one of the genders is amnesiosexual hth 13:54:42 `? tanebventions 13:54:44 Tanebventions include D-modules, automatic squirrel feeders, the torus, and Go. 13:54:55 When did the torus get there 13:55:04 recently. 13:55:31 sadly there is no way to find out unless you dare to poke into the murky depths of our hg browser. 13:56:06 -!- augur has quit (Remote host closed the connection). 13:56:22 I have a vague feeling Taneb's torus is related to chess and pineapples... 13:56:25 -!- augur has joined. 13:56:30 `? people who taneb is not 13:56:32 elliott, a rabbi, Mark Zuckerberg, James Bond 13:56:44 That is an exhaustive list 13:56:45 -!- augur has quit (Remote host closed the connection). 13:57:11 -!- augur has joined. 13:57:12 Hmm, adding torus I think predates the pdf 13:57:31 `? torus 13:57:33 Topologically, a torus is just a torus. Taneb invented them. 13:57:45 http://codu.org/projects/hackbot/fshg/index.cgi/rev/b3ecbbf31355 <-- you definitely are amnesiosexual 13:57:47 `help 13:57:48 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/ 13:57:56 oh wait 13:58:29 oh right you keep adding that s 13:59:37 `learn Impomatic never did anything weird enough to get into this database. 13:59:42 I knew that. 14:00:07 `learn impomatic never did anything weird enough to get into this database. 14:00:12 I knew that. 14:00:42 Aha! 14:00:44 Phantom_Hoover, topologically, a torus is a torus (I think) 14:00:48 April 14th 14:01:09 -!- augur has quit (Ping timeout: 240 seconds). 14:01:37 In response to "Topologically, an elliptic curve is a torus." dude 14:02:25 browsing the PDF sources, apparently Sgeo is also a wall. 14:02:26 Mystery solved 14:04:30 Hmm 14:04:38 Could one argue that FALSE is the first modern esolang? 14:06:08 modern? that'd imply we had a classical, a baroque, and a romantic esolanging periods. 14:06:27 boily: classical = P'', baroque = INTERCAL, romantic = Biota 14:06:30 Problem solved 14:07:55 -!- Slereah has quit (Ping timeout: 246 seconds). 14:12:24 @ask ais523 May I "interview" you for an essay on the impact of Turing's paper On Computable Numbers? 14:12:24 Consider it noted. 14:18:39 Biota wasn't the first 2D programming language. 14:21:47 Mouse reminds me of FALSE and was quite a few years earlier. (I have a copy of Grogono's book) 14:23:26 -!- Taneb has quit (Quit: Page closed). 14:39:52 -!- mrhmouse has joined. 14:45:32 -!- metasepia has quit (Remote host closed the connection). 14:45:37 -!- Phantom__Hoover has joined. 14:46:07 ~duck grogono 14:46:07 ...? 14:46:27 -!- metasepia has joined. 14:46:32 ~metar CYUL 14:46:33 CYUL 261420Z 22012KT 12SM -SHSN BKN030 BKN050 OVC080 01/M04 A3017 RMK SC5SC1AC2 SLP217 14:46:42 much better. 14:47:10 ~metar ENVA 14:47:10 ENVA 261420Z 25012KT 9999 VCSH BKN025 07/04 Q1011 TEMPO 25030G40KT RMK WIND 670FT 26017G30KT 14:48:27 too much TEMPO 14:50:30 here they are called «abris tempo» → http://www.abristempo.com/ 14:51:07 Ô KAY 14:51:47 Ô CANADA. 14:52:38 ꙮ CANADA 14:53:11 -!- tertu has joined. 14:59:51 -!- Phantom_Hoover has joined. 15:00:56 -!- Phantom__Hoover has quit (Ping timeout: 265 seconds). 15:01:55 -!- realzies has joined. 15:02:24 `relcome realzies 15:02:26 ​realzies: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: . (For the other kind of esoterica, try #esoteric on irc.dal.net.) 15:06:01 hoily 15:06:12 quintopia: the package, it was received :D 15:06:24 wat! 15:06:35 * boily claps with small hands *CLACKACLACKACLACKACLACKACLACKA* 15:06:37 boily: good catch! 15:06:55 but but these packages were obviously destined to be eternally in transit! 15:07:15 you have doomed us all 15:07:40 boily: your hands sound suspiciously wooden 15:07:41 the Doom was already Sealed when Roujo and I met irl. 15:07:48 oerjan: plasticky. 15:07:54 ah. 15:07:58 oerjan: we can restore the balance by putting another package in transit asap 15:08:09 quintopia: ah, good thinking 15:08:11 so quick, send me something cool 15:09:20 i sense a disturbance in the force 15:10:26 someone else has suggested the world will end anyway due to the alignment of thanksgiving and the start of hanukkah 15:10:43 boily: hi 15:10:45 yes, clearly this has never happened before. 15:11:19 quintopia: maybe it will instead cause thanksgiving to last 8 times as long as usual. 15:12:16 oerjan: yes, please 15:12:17 this will _seem_ welcome, until they discover on the 3rd day that this does not extend to turkey supply. 15:12:33 that seems unlikely 15:12:49 thanksgiving leftovers always last well over a week 15:13:00 hm i see 15:13:19 realzies: what brings you here? 15:13:29 dunno 15:13:33 I been idling here 15:13:42 oh. so were you already `relcomed? 15:13:48 lol don't remember 15:13:53 but I don't remember why I joined 15:13:59 ah esoteric programming, sounded interesting 15:14:49 fizzie!!!! 15:14:52 quintopia: here we have réveillon leftovers. a little bit later in the year, but just about the same: lots of meat and gravy and sauces and things that make you fat even if they had some fruits in them at some time. 15:15:50 "Jean-Baptiste Réveillon, (Paris, 1725 – Paris, 1811) was a French wallpaper manufacturer. Réveillon's career was an exemplary story of the self-made businessman in the Ancien Régime." 15:16:02 why are you yelling for fizzie? 15:16:17 ~duck réveillon 15:16:18 --- No relevant information 15:16:30 quintopia: if you look closely, you can see something missing... 15:16:33 oerjan: https://fr.wikipedia.org/wiki/R%C3%A9veillon_de_No%C3%ABl 15:16:53 what the fungot could it be? 15:17:32 no fungotting idea 15:17:52 * boily casts a nasty look over at fizzie. “I WANT MY FUNGOT FIX!” 15:18:34 "instant magique pour les enfants". yes please! <3 magic 15:19:44 boily: i note the cross-language links for that are generally like "christmas eve" 15:20:00 boily: it's probably good you got some time off. you seem a bit overly attached. this could be the sign of addiction 15:20:30 but the english wp also has Réveillon by itself 15:22:13 oerjan: do you know anything about polar representation of quaternions 15:22:26 quintopia: I can quit fungotting any time I want. 15:23:01 okay good now's a good time 15:23:11 hm the picture in french wp is actually swedish christmas eve. by carl larsson, who is of course _the_ painter to use for such. 15:23:24 quintopia: "no" 15:23:44 oerjan: O KAY 15:23:56 quintopia: as oerjan said, “no.” 15:24:17 :\ 15:26:48 ooh Réveillon made the paper for the montgolfier balloons 15:28:54 "His wine cellar, containing 2,000 bottles of wine, was pillaged and quickly consumed by the riotious mob. Réveillon and his family escaped by climbing a wall and fleeing to the nearby Bastille." 15:29:20 -!- AnotherTest has joined. 15:30:31 mmm wine 15:33:27 Oh, no. 15:34:27 -!- fungot has joined. 15:34:30 Phew. 15:42:28 -!- Sprocklem has joined. 15:43:04 fungot: hi there! (and nothing about my mother.) 15:43:04 boily: yeah, it kinda is. :) must've been a burp. first time that's happened in a recent email he sent from think.com was in 1993. 15:45:03 fungot: 1993 is not recent 15:45:04 mrhmouse: it features dolph lundgren. nuff said. :) for me, then period fnord me like that before: mors said i suck. choose two. i'd rather use some sort of 15:49:08 i wish i had a burger 15:55:16 <`^_^v> who doesnt 15:56:44 the burgeousie 15:57:46 -!- nooodl has joined. 15:58:24 * boily cringes at the sight of that missspelling 15:58:45 the last u was note ven intended 15:59:48 bourgeoisie DID I DO IT RITE 16:00:10 it's the hardest word to spell ever, so... 16:01:00 YOUR RITED IT WELL. 16:01:35 it has too many vowels relative to consonants 16:01:37 * boily mutters to himself... «à cause que le monde ont de la misère tant que ça avec l'orthographe...» 16:01:49 boozhwazee 16:02:05 the vowels are short! 16:02:08 that's a little better 16:03:36 /buʁ.ʒwa.zi/. 16:04:14 bourjoisie 16:04:24 hm. that reminds me it's been a long time since I've last disturbed Koen_ with my "horrible" accent :D 16:04:27 i think that's the only plausible simplification 16:04:52 oerjan: that'd be logicaler, but then you're going against the Académie Française of Décisions Stupides concerning la Langue Française. 16:06:23 boily: maybe someone could arrange to have the academie and the OQLF have an ... accident? 16:19:40 -!- FreeFull has joined. 16:23:51 -!- Slereah has joined. 16:33:36 oerjan: for the right price, I could. 16:33:46 (hey, people outside of Québec know about the OQLF! :D) 16:34:34 from this channel, no less 16:34:55 -!- AnotherTest has quit (Ping timeout: 246 seconds). 16:40:43 -!- MindlessDrone has joined. 16:47:16 Does the CPU automatically increment the instruction pointer with each instruction, and if so, what happens once the code reaches the end of the code segment (or addressable memory, even) 16:47:36 Does it just stop? 16:47:48 -!- Phantom__Hoover has joined. 16:49:40 -!- Phantom_Hoover has quit (Ping timeout: 265 seconds). 16:52:36 i still haven't heard enough canadian french to imagine what boily's accent sounds like 16:52:57 -!- carado has quit (Ping timeout: 252 seconds). 16:53:41 Quebecer accent is hilarious 16:53:44 At least to us french people 16:56:00 -!- ais523 has joined. 16:56:30 nooodl: sample → http://www.radio-canada.ca/widgets/mediaconsole/medianet/6893298 16:57:28 @messages? 16:57:29 You have 2 new messages. '/msg lambdabot @messages' to read them. 16:58:07 @candy? 16:58:07 Unknown command, try @list 16:58:10 :( 16:58:12 @tell Taneb I'm not opposed to the idea, but given that I've never actually read that paper, it may be a less informative paper interview than you expect 16:58:13 Consider it noted. 16:58:23 oh, this reminds me 16:58:39 a question that this channel has a decent chance of knowing the answer of 16:58:52 is there a monad for which a >>= b is defined as a b? 16:58:57 (and does it have a name?) 16:59:05 a applied to b? 16:59:08 oerjan: yes 16:59:15 Maybe you mean b a? 16:59:33 shachaf: I don't think so, but that might inspire me 16:59:44 I realised that something I did for work looked a lot like do-notation 16:59:46 shachaf's is the Identity monad. 16:59:52 then tried to work out the monad it was the do notation for 17:00:00 Yes (modulo newtypes). 17:00:25 oh hm 17:00:29 well you'd have (a :: m p) and (b :: p -> m q) and (a >>= b :: m q) 17:00:44 Yes. 17:00:48 my do-notation looks something like "(a, b, c) <- x; (d,e) <- y a b; (f) <- z c d e" 17:00:58 the only application you can get outta there is "b a" where m is Identity 17:01:23 which desugars into \q.x(\(a,b,c).y(\(d,e).z(\f.q))) 17:01:58 OK, maybe that's a continuation monad of some sort? 17:02:10 ais523: given that a >>= return = a for all monads, what would return be in yours? 17:02:23 Or trying to be one somehow. 17:02:38 oerjan: I'm not sure, I just noticed the similarity to do-notation 17:02:43 -!- Sprocklem has quit (Ping timeout: 265 seconds). 17:02:57 which made me think there might be a monad in there somewhere 17:03:29 -!- carado has joined. 17:03:39 you would need a return = a (with some newtype wrapping for the types to even work) 17:03:59 perhaps a >>= b = a b is the wrong definition 17:04:11 yeah, it's compose 17:04:13 I'm not sure I understand your desugaring. 17:04:13 not apply 17:04:25 a >>= b = a . b 17:04:29 that seems a lot saner 17:05:44 now you need return x . b = b x 17:06:03 wait, which way round does compose go? 17:06:05 perhaps it's b.a 17:06:26 \x.(a >>= b) x = b(a(x)) 17:06:39 :t \x -> b(a(x)) 17:06:40 Couldn't match expected type `t1 -> t0' with actual type `Expr' 17:06:40 The function `b' is applied to one argument, 17:06:40 but its type `Expr' has none 17:06:49 :t \b -> \a -> \x -> b(a(x)) 17:06:50 (t1 -> t) -> (t2 -> t1) -> t2 -> t 17:06:53 err 17:06:53 b (a x) == (b.a) x 17:07:06 OK, then (>>=) = flip (.) 17:07:14 sorry for being so bad at Haskell :-( 17:07:25 ais523: What happens to the "y a b" and "z c d e" in your desugaring? 17:07:43 err, whoops 17:08:29 it produces \q->x(\(a,b,c)->(y a b)(\(d,e)->(z c d e))(\f->q))) 17:08:59 apologies for the gratuitous Verity 17:09:10 I'll try to remember that Haskell uses -> not . in its lambdas 17:09:35 I'm not sure I see how that "q" thing is working. 17:09:36 ais523: i think you still have some parentheses wrong there, but otherwise it's the Cont monad. 17:09:44 oerjan: right 17:09:49 I can believe that this is Cont 17:09:49 if you drop the \q-> 17:09:54 yeah, that's fine 17:10:07 Anyway I have to go now. 17:10:29 the application for this is that I'm trying to write a linker 17:10:35 @src >>= Cont 17:10:35 Source not found. I am sorry. 17:10:39 @src Cont >>= 17:10:40 Source not found. Do you think like you type? 17:10:43 * shachaf vanishes for a while. 17:10:46 @src ContT >>= 17:10:46 Source not found. You untyped fool! 17:10:53 @src >>= ContT 17:10:53 Source not found. 17:10:56 @src Cont (>>=) 17:10:56 m >>= k = Cont $ \c -> runCont m $ \a -> runCont (k a) c 17:10:57 hth 17:11:12 @djinn-add type Contt r a = (a -> r) -> r 17:11:16 that links together various libraries which are basically just open terms 17:11:21 int-e: please fix @src to be parenthesis-insensitive thx 17:11:27 @djinn Contt r a -> (a -> Contt r b) -> Contt r b 17:11:27 f a b c = a (\ d -> b d c) 17:11:50 @tell int-e please fix @src to be parenthesis-insensitive thx 17:11:50 Consider it noted. 17:12:57 ais523: oh your \q is actually correct 17:12:59 -!- Phantom_Hoover has joined. 17:13:12 for Cont 17:13:29 why don't we ever get to talk to keymaker 17:13:30 oerjan: I thought it would be, otherwise I don't see how >>= would be associative 17:13:41 Oh, another reason it didn't make sense is that you don't have a ... at the end of the do block. 17:13:51 You don't actually mean a lone "q" at the end there, I guess. 17:14:09 shachaf: ah right 17:14:16 -!- Phantom__Hoover has quit (Ping timeout: 264 seconds). 17:14:21 I don't have a lone \q at the start either, though 17:14:45 ? 17:14:55 why don't we ever get to talk to keymaker <-- i don't think he uses irc? 17:15:03 `seen keymaker ever 17:15:07 A do block can't end on a <-, anyway. 17:15:14 I am the gate keeper 17:15:29 Slereah: koo koo kachoo 17:15:34 No output. 17:16:12 `seen keymaker ever 17:16:14 * shachaf really vanishes. 17:16:43 No output. 17:17:05 `seen output 17:17:10 not lately; try `seen output ever 17:17:16 `seen output ever 17:17:19 `cat bin/seen 17:17:20 ​#! /usr/bin/env perl \ ($n,$e)=split /\s+/, join(" ",@ARGV); $n=~s/ *$//; $c="ls -r /var/irclogs/_esoteric/????-??-??.txt"; $c.=" | head -n 30" unless $e eq "ever"; @f=split /\s+/, `$c`; for $f (@f) { open F,"<$f"; @l=grep(/^..:..:..: <$n>/i,); close F; if (@l) { $b=$f; $b=~s#.*/(.*?).txt#$1#; print "$b $l[-1]"; exit 1; } } print $e eq "ever 17:17:27 `url bin/seen 17:17:31 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/seen 17:17:36 but you're not *really* a part of the community if you're not in the channel RIGHT 17:17:47 No output. 17:18:18 it's not supposed to give no output if it doesn't find somewhere, so it's probably timing out 17:18:39 which of course means he hasn't been here in a _long_ time. 17:18:46 `pastelogs keymaker 17:18:55 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.28419 17:19:25 heh he was here in 2004 17:19:38 a _lot_. 17:19:59 `pastelogs keymaker has 17:20:08 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.32253 17:20:29 can you tail that? 17:20:36 that got up to 2005. 17:20:37 i was not here in 2004. i didn't even create spiral until 2004. 17:21:32 `url bin/pastelogs 17:21:34 hmm 17:21:34 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/pastelogs 17:21:42 matrix reloaded came out in 2003 17:21:51 `which pastelog 17:21:52 ​/hackenv/bin/pastelog 17:21:52 so maybe that was when keymaker came into existence 17:21:57 `url bin/pastelog 17:21:59 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/pastelog 17:22:30 the stopping is written into the pastelogs program. 17:22:40 -!- Phantom_Hoover has quit (Ping timeout: 264 seconds). 17:24:02 `pastelog keymaker has quit 17:24:18 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.20577 17:24:35 Last here in 2008 17:24:53 so, anyway speaking of keymaker, Etre really is a tour de force in my opinion. there couldn't have been an easier lang to implement in SELECT. 17:25:57 * quintopia foresees a future in which all new imperative tape languages are reduced from Etre rather than BF 17:26:49 but BF has IO! 17:28:06 -!- oerjan has quit (Quit: that's irrelevant to TC-ness, boily). 17:28:38 boily: IO is unnecessary for TC! 17:28:53 quintopia: it's necessary for BF-completeness 17:28:57 which is a real, interesting category 17:29:33 fwiw, if I have a lang that's really /really/ eso and want to prove it TC, then cyclic tag tends to be easiest 17:30:31 BCT? 17:31:38 BCT is a specific syntax for cyclic tag 17:31:58 just like you can invent a syntax for Turing machines, say 17:32:13 but Turing machines are a concept that exists independent of syntax 17:32:26 is it? i thought it was just specifying the alphabet was 10 and a specific rule for when to apply the production 17:33:04 ah well 17:33:13 cyclic tag always has an alphabet of two symbols 17:33:22 it's the original tag that can have more 17:33:31 cyclic tag would have been harder to implement than etre for SELECT. 17:34:18 -!- FreeFull has quit (Ping timeout: 245 seconds). 17:34:35 hmm, really? that surprises me 17:35:16 etre needs an extendable tape, whereas cyclic tag needs a queue, which mostly uses the same structure but doesn't need an internal pointer 17:36:21 -!- FreeFull has joined. 17:36:26 but an infinite tape is already a feature in SELECT 17:36:33 as well as a tape pointer 17:37:12 -!- impomatic has left. 17:37:23 as it is in most imperative tape languages 17:44:03 yeah but I consider those uninteresting :-) 17:45:31 they don't have to be uninteresting. depends on what your goals are 17:46:40 speaking of which, i came up with a new lang. partially. basically it's oklopol's minigolf idea in 3D. interesting because i have a TC proof. 17:46:42 something I haven't seen yet: a Game of Life where cells are fragments of a 2D esolang. 17:47:14 (although i am not trying to encode anything in the decimal digits) 17:47:24 boily: make it 17:49:12 quintopia: after reimplementating metasepia. 17:49:42 boily: inventing a languabe is not nearly so time-consuming as implementing *anything* 17:49:56 languabes are fun 17:50:02 * quintopia eats a languabe 17:50:52 Eat a languava, it's healthy. 17:50:56 `run echo 'Languabes are edible and fun. They provide a quick implementation energy boost!' >wisdom/languabe 17:51:00 No output. 17:52:58 * shachaf unvanishes a bit. 17:53:04 -!- nisstyre has quit (Quit: Leaving). 17:55:18 Did you figure out your monad? 17:57:56 shachaf: yeah, it was Cont 17:58:41 Cont is p. good 17:58:49 Codensity is even better, of course. 18:16:15 btw, today I had a complaint that Verity wasn't sexp-based, making it harder to implement a macro syste 18:16:18 *system 18:16:29 my conclusion for this is that the world generally needs better ways to manipulate parse trees 18:16:50 @tell zzo38 i don't think opencl c even has provisions for exceptions 18:16:50 Consider it noted. 18:17:22 how would you implement an exception happening in some threads and not others? 18:17:45 even if statements are a little tricky to implement at anything finer-grained than the warp level 18:18:08 right 18:18:08 closest you can get is to do the calculations anyway and just not store the data anywhere 18:18:44 incidentally, Don Knuth apparently uses this technique when writing INTERCAL 18:19:04 not because it's necessary, but because he finds it easier than actually writing a control flow statement 18:22:07 i like don. he seems like a p cool guy. 18:22:09 fungot: how many warps do you support? 18:22:09 boily: hmm. when was it pebble and co surge? 18:22:49 fungot: pebbles are smart watches. the co-everything are propagated by Nutty Categoricists. 18:22:50 boily: forth is worth learning ( for chicken at least behaves much like emacs lisp to me. all you need is 18:23:37 quintopia: his secretary has actually emailed me, because esr CCed me on an email to him and it went reply-all from then on 18:23:45 fizzie: s/fnord/chicken/g 18:23:49 he was commissioning a new version of C-INTERCAL 18:23:54 some day, we may find out why 18:23:56 his secretary has emailed me also 18:24:08 interesting 18:24:09 what for? 18:24:42 ais523: why is a new version necessary? is the spec changing? 18:25:05 quintopia: he just wanted a bugfix release, it seems 18:25:14 i was accidentally removed from the bank of san serriffe page 18:25:15 just to make sure everything was up to date 18:25:22 and also some other thing 18:25:41 ais523: are there any bugs? 18:25:50 yes, we find them every now and then 18:26:20 here's a particularly nasty one I fixed a couple of months ago: https://gitorious.org/intercal/intercal/commit/a905156af4fd2ab88036f59c13321081bd203d47 18:32:38 even better, the bug was in the build system so you don't need to know any INTERCAL to understand it 18:34:58 yeah. what is ick though 18:35:06 what is pit 18:35:43 quintopia: ick is the Intercal compiler library 18:35:49 and pit is the directory containing the testsuite 18:37:16 -!- activ_Trinidad has joined. 18:37:24 `relcome activ_Trinidad 18:37:27 ​activ_Trinidad: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: . (For the other kind of esoterica, try #esoteric on irc.dal.net.) 18:37:43 `bienvenido activ_Trinidad 18:37:46 activ_Trinidad: ¡Bienvenido al centro internacional para el diseño y despliegue de lenguajes de programación esotéricos! Por desgracia, la mayoría de nosotros no hablamos español. Para obtener más información, echa un vistazo a nuestro wiki: http://esolangs.org/wiki/Main_Page. (Para el otro tipo de esoterismo, prueba #esoteric en irc.dal.ne 18:37:49 How many bots are around nowadays 18:38:12 -!- nisstyre has joined. 18:38:43 where is the bot prefix list again 18:38:58 nooodl: there's a bot prefix list? 18:39:07 hackego has it? 18:39:39 ^prefixes 18:39:39 Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia ~, jconn ) , blsqbot ! 18:40:02 (if things were sane, it would be accessible by just saying "prefices" on its own line without any prefix) 18:40:36 `seen blsqbot 18:40:40 `seen blsqbot ever 18:40:40 not lately; try `seen blsqbot ever 18:40:45 2013-03-08 14:18:29: Pong! 18:41:02 clearly a nonbot 18:44:08 `prefixes 18:44:10 Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia ~, jconn ) , blsqbot ! 18:44:12 !prefixes 18:44:14 Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia ~, jconn ) , blsqbot ! 18:44:19 (Just checking.) 18:44:54 Doesn't lambdabot also respond to > ? 18:44:57 > 1 + 1 18:44:58 2 18:45:30 It's not quite the same sort of prefix, but admittedly it is a kind of a prefix. 18:45:46 well, I mean, it invokes lambdabot 18:45:46 :k Int 18:45:47 * 18:45:58 -!- activ_Trinidad has quit (Remote host closed the connection). 18:46:07 lambdabot: You're such a prefix-hog. 18:46:32 -!- activ_Trinidad has joined. 18:46:35 at least it doesn't respond to its name 18:46:43 @pinky Are you thinking what fizzie is thinking? 18:46:43 But where will we find an open tattoo parlor at this time of night? 18:46:55 I don't think I'm thinking the same. 18:46:56 lambdabot: ? 18:46:56 Maybe you meant: . 1337 ? @ activity activity-full admin all-dicts arr ask b52s bf bid botsnack bouvier brain bug check choice-add choose cide clear-messages clear-topic compose define dequeue-topic devils dice dict-help djinn djinn-add djinn-clr djinn-del djinn-env djinn-names djinn-ver do docs dummy easton echo elements elite eval faq farber 18:46:56 flush foldoc forget fortune free freshname gazetteer get-shapr get-topic ghc girl19 google googleit gsite gwiki hackage haskellers help hitchcock hoogle hoogle+ id ignore index instances instances-importing irc-connect irc-password jargon join karma karma+ karma- karma-all keal kind l33t learn leave leet let list listall listchans listmodules 18:46:56 listservers localtime localtime-reply messages messages-loud messages? more msg nazi-off nazi-on nixon oeis offline palomer part paste ping pinky pl pl-resume pointful pointless pointy poll-add poll-close poll-list poll-remove poll-result poll-show pop-topic pretty print-notices protontorpedo purge-notices push-topic queue-topic quit quote rc 18:46:56 reconnect remember repoint roll run sequence set-topic shift-topic shootout show slap smack spell spell-all src tell thank you thanks thesaurus thx tic-tac-toe ticker time todo todo-add todo-delete type undefine undo unlambda unmtl unpf unpl unpointless unshift-topic uptime url v vera version vote what where where+ wiki wn world02 yarr yhjulwwiefzo 18:46:56 jcbxybbruweejw yow 18:47:02 to anyone good at hackego: the bienvenido message drops a "t" at the end 18:47:18 @help jcbxybbruweejw 18:47:18 help . Ask for help for . Try 'list' for all commands 18:47:29 It also drops a ). 18:47:30 @help yhjulwwiefzojcbxybbruweejw 18:47:30 V RETURNS! 18:47:34 hmm 18:48:02 @v 18:48:02 Exception: <> 18:48:19 @oeis 346357 18:48:20 Sequence not found. 18:48:36 @oeis 32,53,92 18:48:37 Sequence not found. 18:49:02 @oeis 1,11,21,1211 18:49:03 Look and Say sequence: describe the previous term! (method A - initial term ... 18:49:24 -!- Nisstyre-laptop has joined. 18:49:55 @tic-tac-toe 18:49:55 how about a nice game of chess? 18:50:04 -!- Nisstyre-laptop has quit (Read error: Connection reset by peer). 18:50:16 @poll-list 18:50:16 ["(++)","ConfusedWithVixenSituation","FlavaOfJRuby","Prelude-(.)?","best-programming-language","best-spoken-language","food","funniest-thing-in-the-whole-world","naming","nethack","president","prove->","remove@src","sleep"] 18:50:33 @poll-result funniest-thing-in-the-whole-world 18:50:33 Poll results for funniest-thing-in-the-whole-world (Open): unintentionally-funny-situations=1, Poles=1 18:50:50 @poll-result nethack 18:50:50 Poll results for nethack (Open): Val_Dwa_Fem_Law=1, Wiz_Elf_Mal_Cha=1 18:51:00 boring 18:51:03 that wizard should be a gnome :-( 18:51:07 but valks are better 18:51:08 Gnome? Why? 18:51:26 @poll-result best-spoken-language 18:51:26 Poll results for best-spoken-language (Open): magyar=3, Polish=484, Welsh=1, Georgian=2, Manx=1, norwegian=8 18:51:26 shachaf: you get to play neutral 18:51:29 and their caps are easily high enough 18:51:31 I always played Wiz_Elf_Mal_Cha back in the day. 18:51:36 and they're not human, which is the really important thing 18:51:41 Wow, that's quite a win for Polish. 18:51:45 What's the advantage of being neutral? 18:51:59 no chaotic disadvantages, and you get the best artifact selection 18:52:24 You can get Magicbane and the quest artifact anyway. 18:52:33 -!- activ_Trinidad has quit (Remote host closed the connection). 18:52:45 What are the chaotic disadvantages? 18:52:55 And the artifact advantages? 18:53:01 (I haven't played NetHack in quite a while.) 18:54:06 artifact advantages: there is 1 useful lawful artifact and basically 0 useful chaotic artifacts (best is the MKoT, which isn't really good) 18:54:13 also the lawful artifact's only really good on speedruns 18:54:18 there are like 5 or 6 viable neutral artifacts 18:54:24 -!- activ_Trinidad has joined. 18:54:46 chaotic disadvantages (and advantages) are all minor but there are a lot of them 18:54:51 quite a lot to keep in track 18:54:58 god mollification is a big one, it's harder for chaotics 18:55:03 True. 18:55:33 I remember there being less of a penalty for killing shopkeepers, or something. 18:56:18 yeah, but if you're powerful enough to kill the shopkeeper, the penalty mostly doesn't matter anyway 18:56:42 Maybe I should play NetHack 4. 18:57:43 shachaf: you might want to wait a couple of weeks, we're working on a stable version atm 18:58:12 I'm trying to do stuff with the stack, but the assembler bitches when I do this : 18:58:17 push 2, mov dx, [sp] 18:58:30 Is it a syntax problem or can you not move the stack pointer? 18:58:41 I'm not sure what that's supposed to mean. 18:58:44 what's the comma after 2 for 18:58:55 what's the mov after the comma for 18:59:02 It's not in the program 18:59:09 Are those two lines? 18:59:12 I just wanted to paste it here in one line 18:59:16 ah right 18:59:18 push 2 18:59:19 mov dx, [sp] 18:59:23 If you insist 18:59:40 I get "reserved word used as symbol" 19:00:11 On which token? 19:00:13 I was wondering whether derefencing sp is allowed, but it probably is due to omit-frame-pointer 19:00:34 for mov dx, [sp], no idea which part 19:00:42 Yes, it should be fine (at least on 32-bit x86?). 19:00:44 I don't know Intel syntax very well. 19:02:16 Do you need to specify "dword" or something? 19:03:36 Hm, maybe 19:03:40 Let's see how big is SP 19:04:35 I guess it'd be "word" or whatever it's called. But I don't think that's the issue. 19:06:12 I think they're both 16? 19:06:40 Oh wait, it's the address 19:06:52 -!- Taneb has joined. 19:06:52 Right, I think addresses are 4 bytes 19:06:59 Probably the problem 19:07:05 Why are you using sp, then? 19:07:18 Just looking at the content of the stack 19:08:10 sp is a 16-bit register 19:08:14 Maybe you want esp. 19:08:45 if he had esp, he'd already know the answer 19:08:53 he'd just read some intel guru's mind 19:08:58 Yes, but when you use it in an address, it points to a 4 bytes object, no? 19:09:10 32 19:09:20 Which I guess is the problem 19:09:49 So it would either be mov edx,[sp] or mov dx, byte ptr [sp], I guess 19:10:11 k 19:10:21 Let's try. 19:10:22 ? 19:14:38 you shouldn't need "word ptr" for "mov dx, [sp]" because the size is known from the destination being a 16-bit register 19:15:02 Sounds reasonable. 19:15:29 and I thought Slereah is doing 16-bit programmin' 19:15:42 Hm 19:15:52 I thought so too, but in that case what's the "addresses are 4 bytes" deal? 19:15:59 wrongness? 19:16:19 Ah 19:16:23 Wrong, yes 19:16:28 Nevermind 19:16:33 Then I don't know the problem 19:16:52 I think maybe [sp] addressing modes just don't exist in 16-bit 19:17:03 does the code assemble if you change sp to another register? 19:17:09 Yes. 19:17:25 Wait 19:17:28 No it doesn't 19:17:30 Hm 19:17:34 16-bit x86 is less orthogonal than the newer versions; it's more of a thing that ax is the "accumulator" and bx is the "base" and such 19:17:42 this affects what you can do with them 19:17:53 Oh, looks like that's right. 19:18:10 Maybe flat assembler doesn't use [] 19:18:19 I tried getting this working here and it didn't work with mov edx,[esp] either. 19:18:25 hmm 19:18:31 But I think that was an issue with GNU as's Intel mode or something. 19:18:38 Ah, mov dx, [bx] works 19:18:44 Because I did manage to get code that disassembled to that. 19:18:49 So I guess sp is the problem 19:18:58 Is there a way to get the value of the stack pointer? 19:19:10 Slereah: yeah, you can use bp, si, di, bx as pointers, but maybe not the other regs in 16-bit mode 19:19:31 Slereah: mov ax, sp 19:19:46 So I guess what I want is like 19:19:55 mov ax, sp 19:20:02 mov bx, [ax] 19:21:04 It works! 19:21:15 Woo 19:21:26 -!- Sprocklem has joined. 19:21:35 Any less circuitous way to get a value from the stack without popping it? 19:22:16 you could just pop and then sub sp, 2 ;P 19:22:25 pop bx; ... what kmc said 19:22:35 I think that's probably more circuitous, though. 19:22:43 Wouldn't I need add sp, 2? 19:22:47 To put the pointer back up? 19:22:55 the stack grows towards smaller addresses 19:22:57 -!- AnotherTest has joined. 19:23:00 Oh, I see 19:23:02 Thanks 19:23:12 this confuses roughly everyone at some point 19:23:16 I guess both are as circuitous 19:23:56 how did i find out all these things 19:24:03 probably by looking at disassembled code 19:24:34 I wish assembly was a bit less stringent with its functiond 19:24:44 Just treating all registers the same way 19:24:48 Except for specific functions 19:24:57 why are you writing 16-bit x86 19:25:02 well, the newer versions of x86 are more like that 19:25:08 and other architectures even moreso 19:25:09 I'm running it in DosBox 19:25:25 Not sure it allows 32 19:25:27 in the original ARM architecture, even the instruction pointer is an ordinary register that can be used as an operand for anything else 19:25:38 Slereah: it does, however you'd need to write the code to switch to 32-bit mode yourself, which is gross 19:25:45 or hook into some "dos extender" 19:25:46 yeah 19:25:54 I'll wait to be a bit more experimented first 19:25:57 you could just write 32-bit Linux programs in assembly instead 19:25:59 but shrug 19:26:01 16-bit is fun 19:26:06 you can write a boot sector graphics demo :) 19:26:17 I find it weird that they always say "you can't change the IP!" everywhere 19:26:24 But JMP is basically mov ip 19:26:26 yep 19:27:01 you can even do "jmp [some_addr]" which is like "mov ip, [some_addr]" 19:27:03 or "jmp ax" 19:27:25 there's even conditional move into ip 19:27:29 By the way 19:27:30 v. sophisticated 19:27:30 you can actually do a mov ip on a PIC, but the jmp is more efficient because there are only two registers you can assign a constant to, and one of them's the IP 19:28:07 Can I move the IP in such a way that the variables are interpreted as functions? 19:28:22 Like say, I dunno 19:28:41 123456 is [opcode 12] 34 56 19:28:45 You do ip++ 19:28:50 -!- muskrat has joined. 19:28:53 And then it reads as [opcode 34] 56 19:29:02 Slereah: sure 19:29:06 Neat 19:29:07 sometimes that's used for golfing, or obfuscatoin 19:29:10 *obfuscation 19:29:13 -!- muskrat has quit (Client Quit). 19:29:38 -!- activ_Trinidad has left. 19:31:28 -!- MindlessDrone has quit (Quit: MindlessDrone). 19:39:54 `pbflist 19:39:55 pbflist: shachaf Sgeo quintopia ion 19:40:01 `pbflist 19:40:02 pbflist: shachaf Sgeo quintopia ion 19:40:42 `peanut-butter-fjelly-list 19:40:44 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: peanut-butter-fjelly-list: not found 19:40:54 `pbflistdeluxe 19:40:56 pbflistdeluxe: 19:41:01 Such a shame. 19:41:12 You would've gotten higher-quality updates, and earlier. 19:45:07 _LIBCPP_ALWAYS_INLINE _LIBCPP_CONSTEXPR operator int __nat::*() const {return 0;} 19:45:30 I can see why that was wanted always inline 19:45:35 and it looks like an excellent candidate for constexpr 19:45:45 although, hmm 19:45:54 * kmc can't parse operator int __nat::*() 19:46:05 "operator int" is a fine name for a function 19:46:08 yeah, constexpr is useful in case you want to parse something in terms of it 19:46:18 kmc: isn't that the name of the "(int)" cast that casts things to int? 19:46:28 yeah but what's the "__nat::*()" doing 19:46:40 hmm.. 19:47:11 where's that from 19:47:12 gah, my attempted fix to the random compose key breakages didn't help 19:47:17 *hmm… 19:47:19 there we go 19:47:40 shachaf: it's from libc++ i guess 19:47:45 "it's from compiler errors" 19:47:51 perhaps it's an int*, with a weird order 19:48:18 Man the part that's really gonna be shitty is when I'll have to learn protected mode 19:48:25 Can't understand much so far 19:48:34 Oh, https://llvm.org/viewvc/llvm-project/libcxx/trunk/include/cstddef?revision=111750&pathrev=113270 clears up a bit about it, maybe. 19:48:53 Slereah: writing ordinary userspace code to run under a typical protected mode OS is nice and simple 19:49:05 Slereah: putting the CPU into protected mode yourself, i.e. writing a protected mode OS, is not simple 19:49:18 Yeah 19:49:27 I looked at it a bit 19:49:34 I can't seem to quite grasp it 19:49:39 what about it 19:50:26 The global descriptor table, I guess 19:50:49 the basic thing is that in real mode, the segment selector registers (cs ds es ss fs gs) are just a value that gets multiplied by 16 and added to your address, but in protected mode they are indexes into one of these descriptor tables 19:51:03 That much I got 19:51:08 each entry ("segment descriptor") in the descriptor table describes a segment 19:51:08 But how do you fill these tables 19:51:21 they live in memory 19:51:34 What is the type "int T::*"? 19:51:39 And why does the code even have overlapping segments? 19:51:43 Where T is a struct. 19:51:46 That's the weirdest part 19:51:49 you just build those structures in memory and then use the "sgdt" instruction to set the global descriptor table base 19:52:00 kmc: LGDT. 19:52:10 oh is it 19:52:11 sorry 19:52:26 Slereah: what about it's weird? 19:52:28 or what do you mean 19:52:51 (It's like, LGDT loads the GDT register from memory, and SGDT stores it into memory, like other L/S pairs.) 19:53:07 Why aren't the address built as DS * 1000h + DI instead of * 10h 19:53:17 oh 19:53:21 you're back to real mode now 19:53:29 Yeah 19:53:42 I guess what I'm asking is, why did they even need protected mode to access all memory 19:54:02 the *10h is kind of weird 19:54:06 because real mode had already been defined that way 19:54:10 but I think I can explain why, too 19:54:34 basically it's handy for a kind of position independent code 19:54:36 shachaf: "ptr-operator: * cv-qualifier-seq_opt | & | ::_opt nested-name-specifier * cv-qualifier-seq_opt" is part of the C++ declarator syntax, but I can't quite figure out what it means. 19:54:50 your code doesn't need to know where it lives in physical memory, as long as CS is properly initialized when it runs 19:55:40 Yes, but in that case, why not let DI or whatever offset run the full course of the segment 19:55:49 it does 19:56:00 Sure, but then you get overlap 19:56:08 a "segment" in the real mode context is just 2^16 consecutive bytes 19:56:20 with 16-byte alignment 19:56:49 if you're adjusting CS to relocate code then you want it to be *10h so that you can put it on any 16-byte-aligned address 19:57:04 Aligned? 19:57:08 if it were *10000h then you could only put it at one of 16 different points 19:57:15 Slereah: yes, meaning the address is a multiple of 16 19:57:20 Ah 19:57:40 (one of 16 different points, assuming the physical address size is still 20 bits) 19:58:19 So does the protected mode allow you 2^32 addresses by having the two address arguments not overlap? 19:58:28 template 19:58:28 _LIBCPP_ALWAYS_INLINE 19:58:28 operator _Tp _Up::* () const {return 0;} 19:58:28 (And be indexed by a table as a nicety) 19:58:29 help 19:59:09 shachaf: Actually, are you sure operator int __nat::*() const {return 0;} isn't just the same as int __nat::operator *() const { return 0; } ? 19:59:42 As in, an overload for the unary * with a return type of int. 19:59:53 Slereah: well, firstly, let's ignore the 286's weirdo 16-bit protected mode 20:00:06 fizzie: Yes, because it gives a different error message. 20:00:20 in that case, "protected mode" also means "32-bit mode", and the base specified in a segment descriptor is 32 bits 20:00:28 so they still overlap... 32-bit base plus 32-bit pointer 20:00:33 Ah, okay 20:00:50 Backward compatibility is nice but damn, you have to drag some shit 20:00:52 in fact there's no multiply now 20:00:54 yep 20:01:12 i mean this overlapping isn't backwards compat though 20:01:17 it's a totally different CPU mode 20:01:25 Yeah, but the fact that real mode is still around 20:01:28 yeah 20:01:43 And still being real mode in 16 bits 20:01:46 not only that but there's a new "Virtual 8086" mode in the 386 which lets you run real mode code within a protected mode OS 20:01:55 Apparently there's a long mode with 64 bits registers 20:01:59 that's right 20:02:06 that's x86-64 i.e. amd64 20:02:09 And yet the CPU still has to drag around the 16 bits mode 20:02:12 yep 20:02:15 Like some old grmapa in a wheelchair 20:02:31 at least with EFI you don't need to write 16-bit code when you write an OS, anymore 20:03:00 Are there any CPUs that don't have backward compatibility issues like that? 20:03:04 sure 20:03:06 And are just servicable on their own 20:03:18 non-x86 CPUs 20:03:20 i wonder to what extent real mode is basically a complete 8086 20:03:29 like, Alpha was 64-bit from the beginning 20:03:33 neat 20:04:01 i don't know if there are (say) MIPS64 or AArch64 (64-bit ARM) chips that only run in those modes 20:04:04 i expect not 20:04:20 though 20:04:33 if you're putting a soft MIPS64 in your FPGA, you probably don't want to waste FPGA resources on compat modes 20:04:38 so I bet you can disable them for that 20:04:56 Intel did make a 386 or two that could only run in 32-bit protected mode, but nothing like that since then 20:05:10 and anyway MIPS and ARM and PowerPC don't have any legacy 16-bit mode like x86 has 20:05:13 I wonder how far back the compatibility extends 20:05:19 tertu: oh, interesting! do you have some info on that? 20:05:29 Like could you still install the old DOS on modern CPUs 20:05:35 think so 20:05:50 https://en.wikipedia.org/wiki/Intel_80376 20:05:57 yeah DOS runs on modern cpus 20:06:02 Dang 20:06:06 compatibility goes back to the 8086 20:06:12 tertu: nice 20:06:22 try sticking a freedos boot cd in your computer, it'll work and that's all real mode code 20:06:23 i'm always interested in non-PC-compatible x86 platforms 20:07:07 -!- impomatic has joined. 20:07:08 One day we will have quantum computers and they will have a fucking 16 qbit mode 20:07:12 hahaha 20:07:29 There's gonna be 16 atoms just there to run the DOS 20:07:41 yeah I like seeing the x86 used in non-pc things 20:07:53 (A)bort, (R)etry, (D)o both 20:07:57 hahahaha 20:07:59 nowadays the chips are so tied to being pcs though 20:08:01 :D 20:08:08 the OLPC XO-1 is an x86 platform with OpenFirmware 20:08:59 I wish there were quantum computers out by now 20:09:03 at some point somebody's going to just go fuck ISA, fuck all this 80s legacy shit 20:09:10 I could at least use my half quantum physics half software engineering diploma 20:09:19 the 80s are here to stay man 20:09:21 I wonder what quantum assembly looks like 20:09:36 cool you have a quantum physics diploma? 20:09:38 There's a quantum version of Core War 20:09:41 right now i think quantum computers work by physically arranging bits somehow 20:09:50 like they're at the eniac stages 20:09:55 fizzie: Oh, I think it's a member pointer. 20:10:10 ENIAC had punchcards, no? 20:10:17 yeah but no stored program 20:10:20 you had to wire it in 20:10:21 Or did they recode it by rewiring? 20:10:24 Ah yes 20:10:31 eventually they hacked it up to support stored programs though 20:10:50 * Slereah googles QUANTUM ASSEMBLY 20:10:58 shachaf: I had just arrived at that same conclusion. 20:11:00 but that was after other computers that actually supported it from the start were built 20:11:02 in the future, we'll have holographic cubes. (mind you, those will be 80-column cubes, EBCDIC) 20:11:13 heh 20:11:15 16 colors! 20:11:22 http://arxiv.org/ftp/quant-ph/papers/0201/0201082.pdf 20:11:23 Yessss 20:11:30 QUANTUM C 20:11:35 I want to put that on my resume 20:11:36 kmc: ☝ 20:11:47 I am an expert in quantum COBOL 20:11:52 shachaf: ? 20:11:57 Oh man 20:11:57 shachaf: In retrospect, I guess that should've been pretty obvious, and I thought of it, but then for some reason discarded the idea. 20:12:05 Quantum Core War is described here http://www.freelogy.org/wiki/Coreworld_QTAAS 20:12:05 Imagine the esolangs you could do 20:12:08 QUANTUM BRAINFUCK 20:12:31 kmc: It's pointer-to-member syntax. 20:12:36 E.g. http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Flanguage%2Fref%2Fcplr034.htm 20:12:43 in a world... saturated with quantum brainfuck derivatives... a young boy is about to discover his destiny... 20:13:09 shachaf: yeah i thought it might be 20:13:10 So, a conversion operator into a pointer-to-int-member-of-__nat. 20:13:14 Many Tapes Interpretation 20:13:20 but couldn't make it fit 20:13:33 also for anybody who knows modern x86 architecture: do individual PCIX devices get assigned IO ports still 20:13:43 but what fizzie said makes sense 20:13:46 and is also terrifying 20:14:03 hm? I fail to see the terror in fizzie's utterances. 20:14:29 boily: Then you've been C++-infected. We're going to have to put you out, sorry. 20:15:04 how i learned to stop worrying and love c++ 20:15:40 More like C peepee 20:16:09 fizzie: oh well. my only regret is to not have eaten as much sushi as I would have liked. 20:17:17 I wonder how close is a commercially available quantum CPU 20:17:29 there's that one company which claims to sell a quantum computer 20:17:32 but people think it's bullshit maybe 20:17:48 http://en.wikipedia.org/wiki/D-Wave_Systems 20:18:15 it might be more of a special purpose device for quantum annealing, and not something which can implement an arbitrary quantum circuit 20:18:26 Too bad 20:19:27 can we emulate quantomputing on regular hardware? 20:19:33 Yes 20:19:42 It's a pretty old result, actually 20:19:55 Probabilistic Turing machines have the same power as regular Turing machines 20:20:00 Hence you can emulate it 20:20:08 -!- muskrat has joined. 20:20:36 Either by emulating all possible outputs, or if you can cheat, pseudo randum generator 20:21:21 i don't think doing it with a PRNG is satisfactory for the computability-theoretic result 20:21:27 but people do things like that in complexity theory 20:22:07 if you can invent a PRNG which no poly-time algo can distinguish from true randomness, then you've proven BPP = P 20:22:12 this is called derandomization 20:22:21 -!- Slereah_ has joined. 20:22:23 Like, if you have QUANTUM BRAINFUCK 20:22:29 If there's a probability popping up 20:22:34 Clone the tape 20:22:42 And work on the two tapes with the program 20:22:43 of course it's not known whether BPP = P; nobody has been able to do this yet 20:22:49 why do so many people not understand how quantum computers work 20:22:51 BPP? 20:22:55 kmc: does P = NP iply that? 20:22:56 *impl 20:23:00 *imply 20:23:06 ais523: yes, BPP is contained in NP 20:23:19 Slereah_: https://complexityzoo.uwaterloo.ca/Complexity_Zoo:B#bpp 20:23:43 I see. 20:23:44 that definition of BPP actually doesn't refer to "randomness" per se 20:23:49 and makes it more obvious that BPP is in NP 20:24:13 but basically, BPP is the class of problems that can be solved efficiently on a TM if you have randomness 20:24:41 the probability of a wrong answer needs to be sufficiently far from 1/2 that you can run the machine n times to get an O(2^n) reduction in the error rate 20:25:00 -!- Slereah has quit (Ping timeout: 245 seconds). 20:25:23 ais523, as the person credited with the proof of the universality of Wolfram's 2-3 machine, how important do you think it is to prove or disprove the Turing-completeness of things? 20:25:38 He has a sick sexual fetish for it 20:26:38 Taneb: I think it's fun, but except when you're trying to design a sandbox or similar intentionally sub-TC system, it's less practically important than the question of whether it can run practically useful programs in a reasonable amount of time 20:27:26 ais523: I think people misunderstand quantum computers because there are a lot of appealing but false analogies to classical computers, and because quantum mechanics is fucking weird 20:27:35 Eh 20:27:37 elliott: I'm using Helvetica for parts of my thesis, but it keeps giving me the uncanny valley effect because it's not Arial 20:27:43 like, it's more perfect, but it seems wrong as a result 20:27:47 and maybe a little bit of the "programmers are experts at everything and can work anything out from first principles" bias 20:27:47 I don't think QM is *that* relevant to quantum computing 20:28:01 Basically it's just the state superposition that is relevant to it 20:28:09 and measurement 20:28:20 and the fact that you can rotate probabilities 20:29:08 You know what's cool? 20:29:15 The SUPERTURING computer designs 20:29:21 They will never be fucking built 20:29:21 actually rotating probabilities is probably the weirdest part, it's necessary for any sort of understanding of how quantum computers work 20:29:25 and yet it intuitively makes no sense 20:29:43 What is the probability rotation in quantum terms? 20:29:51 the state of a QC isn't directly made of probabilities either 20:30:30 Slereah_: well probabilities of things in quantum mechanics are given by (possibly entangled) phasors 20:30:35 the probability is the square of the length of the phasor 20:30:42 and the phasors can be rotated so that probabilities cancel out 20:31:05 Phasors? 20:31:13 Is that QC talk for "Hilbert space vector" 20:31:19 the aim of a quantum computer program is to start with a random value, then entangle the phasors in such a way that the ones for the incorrect results cancel out 20:31:31 giving you a high chance of getting the correct answer 20:31:36 and they're basically just vectors in the plane 20:31:39 entangle the phasors! detach the saucer section! 20:31:41 capped at a maximum length of 1 20:33:53 if I get a quantum computer, will I be able to go on Facebook? 20:34:06 No, just quantum facebook 20:34:17 Oh, and there's no JMP in quantum assembly 20:34:19 Only the 20:34:23 QUANTUM LEAP 20:34:25 Is that the one where you can be in multiple relationship statii at once? 20:34:36 that would be convenient 20:34:41 where did the second 'i' come from 20:34:50 Latin plural 20:34:56 shachaf: it's fun to pronounce 20:34:58 ee-eye 20:35:10 yes, but does it make sense 20:35:17 although the second declension male plural would be stati because the original word is status not statius 20:35:24 and I'm not sure it's a second declension male word in the first place 20:35:27 i think molecular orbitals are a better analogy for poly relationships, though 20:35:30 delocalized pi bonds 20:35:42 It's probably an incorrect Latin plural, I don't know any Latin. 20:35:52 i've seen it for words like "radius" but that has an 'i' already 20:35:52 might have something to do with the fact that i'm dating a physical chemist (or chemical physicist?) by education 20:36:32 and for words like hawaius 20:36:54 esotericians' relationships are as weird as the languages they create. 20:37:15 kmc: you're educated to date specific people? 20:37:40 lol 20:38:08 What esolang is your relationship like 20:38:15 boily: i haven't even created any esolangs yet 20:38:19 shachaf: Fun fact: individual characters of ASCII are called "ascius". 20:38:23 (Not true.) 20:38:28 although "x86 with no registers" probably counts, once I write that up 20:38:47 How do you do x86 with no registers 20:38:52 -!- muskrat has quit (Read error: Connection reset by peer). 20:38:58 Are there any instructions that use no registers? 20:39:00 fizzie: zomg 20:39:01 Slereah_: i'll send you a link when it's done 20:39:02 yes 20:39:19 mov dword ptr [some_addr], 1234 20:39:22 add dword ptr [some_addr], 1234 20:39:27 jmp [some_addr] 20:39:28 I guess 20:39:31 these are the main tools 20:39:37 `learn ascii is the plural of ascius 20:39:42 I knew that. 20:39:50 plus self-modifying code 20:40:01 but it's cheating to modify an instruction into one that uses registers 20:40:22 I just modify the address and immediate operands of those instructions 20:40:24 Esolangs are all about cheating 20:40:25 -!- muskrat has joined. 20:40:39 nah 20:40:48 I wanted to define a legitimately difficult subset and then work my way out of it 20:41:00 if you can modify the instructions to use registers then it's pretty much trivial 20:41:11 Well, if you have jumps and addition 20:41:14 That's a good start 20:41:24 Do you know µ-recursive functions? 20:41:28 yes 20:41:35 That's probably the easiest parallel 20:41:42 yeah 20:41:49 i wrote a compiler from brainfuck 20:41:54 but that's probably not the easiest way 20:42:06 i just like it because it's a pretty normal programming language, not too esoteric 20:42:22 and yet we can compile it into this nonsense 20:42:27 Well 20:42:34 ADD does change flags :o 20:42:40 that's ok 20:42:52 i'm fine writing to registers if we never depend on their contents 20:43:07 Just remove the registers by hand 20:43:26 i have a program which uses ptrace() to zero out all the registers after every instruction 20:43:45 anyway I'll send you the link when it's done ;P 20:43:56 lunchtime -> 20:44:18 kmc: are you allowed to use rip-relative addressing 20:45:08 probably but i don't think it's useful so i didn't make up my mind about it 20:45:45 Wait 20:45:45 Are you allowed to use the stack? 20:47:58 -!- Sprocklem has quit (Ping timeout: 246 seconds). 20:49:44 Not the stack pointer register, presumably. 20:50:39 kmc: this reminds me of Malbolge, but easier 20:51:37 I think if you can use the stack 20:51:47 It's probably trivial 20:52:30 You can use INC and DEC, create function calls and do a loop for a µ-functions 20:52:41 You can do µ recursive functions, which are TC 20:54:43 -!- AnotherTest has quit (Ping timeout: 265 seconds). 20:55:23 -!- Frooxius has quit (Quit: *bubbles away*). 20:57:18 -!- Oj742 has joined. 20:58:03 From what I recall about the rules, I think the stack wasn't allowed. 20:58:23 -!- muskrat has quit (Read error: Connection reset by peer). 20:59:09 I used the stack a lot when writing ASCII-only programs 20:59:31 -!- muskrat has joined. 21:00:15 Well you can probably still do function calls without the stack 21:00:20 It's just gonna be a bit more tricky 21:04:17 no you can't use the stack because those instructions depend on the value of sp 21:04:31 You can always use a manual stack, of course. (E.g. just keep the stack pointer in the immediate operand of a "mov dword ptr [foo], 1234; jmp [bar]", and when you want to write the stack pointer somewhere -- probably to some register -- self-modify the foo displacement to point at where you want, and the bar to next instruction, and jump to that snippet.) 21:04:48 Er, "register" should've been "operand". 21:05:04 I think this should be doable without self-modifying code 21:05:08 Yeah 21:05:17 let me know if you figure out a way :) 21:05:19 Just µ recursive functions should be doable pretty easily 21:05:35 Hell even a compiler of it 21:05:35 you could do something like MiniMAX, I guess 21:05:51 i ended up needing only one level of non-tail calls so I didn't have to implement a stack, just a single place to store a return address 21:05:53 except the difficulty you have doing addition 21:05:57 because one of the arguments has to be a constant 21:10:12 If you wan't "unbounded" (up to the address space size, anyway) memory, I don't see how you can do it without self-modifying the operands, since otherwise you can only touch memory mentioned in the "source". 21:11:14 Hm, true 21:11:35 And if you try functions you need to store the arguments somewhere 21:12:17 you can just store those in memory right 21:13:16 Yeah, but how can you access it 21:13:37 If you only use numbers, you won't be able to use arbitrarily large numbers of recursions and function calls 21:14:43 Clearly the next Intel instruction set rehash should add a double-indirect addressing mode. 21:15:25 "If the 6502 could do it..." 21:15:39 Like [[butts]]? 21:15:52 That seems like a reasonable syntax for it. 21:16:01 Especially the butt part 21:16:05 -!- yiyus has joined. 21:18:33 fizzie: you can touch unmentioned memory via indirects, can't you? 21:19:01 ais523: What indirects? 21:19:07 oh, I see 21:19:12 you can store values in unmentioned memory 21:19:24 but you can't read them, except to store a different value back in the same memory 21:19:24 ais523: I don't see how you can do that either. 21:19:37 mov [123], 456 21:19:42 ais523: Stores to address 123. 21:19:48 oh right 21:19:56 I'm getting my syntaxes muddled 21:20:09 even with double indirects I don't see how you can usefully read distant memory 21:20:31 Well, small steps. 21:20:32 and being TC without the ability to read (only write and add constants) seems dubious, if not completely impossible 21:20:37 You can just use some memory as a data pointer? 21:20:51 Slereah_: apparently I was mistaken 21:21:04 so yes, you'd need self-modifying code to make this work 21:21:32 Wait, don't you need the instruction pointer for that? 21:21:36 -!- sebbu2 has joined. 21:21:36 -!- sebbu2 has quit (Changing host). 21:21:36 -!- sebbu2 has joined. 21:21:46 Well I guess you can know the exact position of your code 21:21:47 Slereah_: you can write to absolute addresses 21:22:20 can you do introspection in assembly? 21:22:24 the idea of "double indirects, no self-modifying" has me thinking, though 21:22:32 actually it's easy, if you can JMP to a double indirect 21:22:41 Can you do double indirects? 21:22:44 Slereah_: no 21:22:49 this is a different esolang I'm thinking of now 21:22:49 Hm 21:22:54 oh 21:22:59 hmm… can it be done with computed or conditional jumps? 21:23:05 -!- sebbu has quit (Ping timeout: 240 seconds). 21:23:09 err, no computed or conditional jumps 21:23:17 just running the same commands over and over again, forever 21:23:33 I guess you can simulate double indirect using a self modifying code 21:23:45 Just do some mov [address], value 21:23:52 And modify the code to change the address 21:24:14 yes 21:24:23 Then implement a stack or whatnot 21:24:48 ais523: You can do the usual sort of "conditional" jump by having an indirect "jmp [0]" and then doing a double-indirect "mov [[foo]], newcode" -- that'll make a conditional jump to newcode if the value at foo is 0. 21:24:49 anyway reads are the hard part, I think 21:25:02 fizzie: right 21:25:35 I guess that kind of thing could be used to "read" a bounded value. 21:25:37 kmc: not really; use only 0 and (insert small constant here, something around 12 or 16) for your data 21:25:52 then to read, add, indirect jump, get the destination to subtract again 21:26:44 Ah, I suppose you don't even need the double-indirect for that approach. 21:26:57 yep 21:27:03 this is basically how MiniMAX works 21:27:15 except that MiniMAX uses a VM (that has an 8-byte implementation) 21:27:39 yeah that's like what i did ais523 21:27:46 i still consider that the hard part, compared to writes 21:27:52 fair enough 21:28:07 Now try to write an OS without registers 21:29:37 Regarding hardware access, can't write to I/O ports (not that they're probably all that important these days?) without registers. 21:29:51 Yeah 21:29:57 Them ports sure love the accumulator 21:30:27 -!- boily has quit (Quit: ACCUMULATING CHICKEN!). 21:30:29 -!- metasepia has quit (Remote host closed the connection). 21:31:13 Hm 21:31:22 Can't think of any way to access any hardware, yeah 21:32:04 You could access memory-mapped hardware just fine. Well, for some values of "fine". (If you start from real mode, I don't think you can get to any sort of usable protected mode without loading segment registers.) 21:32:39 Even the interrupts needs the accumulatore 21:33:05 I guess you'll just have to use your imagination for the GUI 21:33:33 -!- impomatic has quit (Ping timeout: 252 seconds). 21:35:54 -!- impomatic has joined. 21:38:05 fizzie: did you know that that "return 0;" gets compiled to "mov $-1, %rax" 21:38:07 (so i'm told) 21:38:27 Is $ for a literal value? 21:38:38 in AT&T assembler syntax yeah 21:38:47 Weird 21:38:51 and the operand order is reversed from intel 21:38:57 Maybe it's a signed zero 21:39:04 nah 21:39:07 I dunno 21:39:18 there's no negative zero in two's compliment integer arithmetic 21:39:24 I know 21:39:28 It's a bit disappointing 21:39:37 You could do -0 and +0 21:39:45 And their divisions would give +- infinity 21:39:55 there's no infinity in integer arithmetic, either 21:39:57 I think floating points has signed infinities 21:40:00 yes 21:40:34 +Infinity represents an unknown positive value which is too large to represent 21:41:08 and NaN represents a value about which nothing is known 21:41:17 which is why NaN ≠ NaN i guess 21:41:17 yeah 21:41:33 kmc, fungot: you're both cute imo 21:41:33 shachaf: they only need to remove the adverts, come to think of a regex as a string that the host language without using call/ cc 21:41:36 "two's compliment" 21:41:43 :) 21:41:46 thanks shachaf 21:41:47 but fungot produces better ebooks 21:41:47 shachaf: totally hilarious. 21:42:37 fungot's ebooks are extremely hilarious 21:42:37 mrhmouse: use the fink package? 21:45:22 -!- muskrat has quit (Read error: Connection reset by peer). 21:45:49 -!- muskrat has joined. 21:45:59 -!- Oj742 has quit (Ping timeout: 272 seconds). 21:52:09 Wait, can you do a conditional jump without registers? 21:52:28 The µ function idea I had kinda hinged on that 21:53:04 Ah yes, we discussed it earlier 21:53:09 So yeah, probably TC 21:55:56 -!- muskrat has quit (Quit: Leaving). 22:00:23 ion: i'm surprised you haven't been through the who-sent-you cslounge dance yet 22:00:30 i guess you're too quiet 22:02:04 heh 22:03:59 so maybe i'll fly to san jose in december 22:04:01 who knows 22:04:16 shachaf: Are you *sure* that is a return 0;? 22:05:13 maybe you're not using the return value and the compiler decided to pre-load some constant into rax? 22:05:43 I didn't try it but I believe the person who did try it because returning 0 wouldn't make sense. 22:06:43 why? 22:14:02 Because in the g++ implementation 0 is (/could be) a pointer to the first member. 22:16:44 for int foo() { return 0; }? 22:17:38 No, for the code discussed above. 22:17:56 "did you know that that" 22:18:20 int T::*foo() { return 0; } 22:19:14 oh, you're saying that a NULL function pointer is not represented by the integral value 0? 22:19:20 NULL member pointer, I mean 22:19:23 interesting 22:19:52 I think it's implementation dependant 22:19:58 right I meant in this implementation 22:20:29 shachaf: Oh 22:20:33 Then I'm not surprised at all 22:21:12 shachaf: Huh, so it does. 22:21:35 http://sprunge.us/YChV 22:22:08 fizzie: g++ -O2 -S -o/dev/stdout tmp.cc 22:22:17 Member pointer representations are a terribly complicated thing, anyway. 22:23:18 Or at least pointers to member functions. 22:23:29 http://www.codeproject.com/Articles/7150/Member-Function-Pointers-and-the-Fastest-Possible "Implementations of Member Function Pointers" has a nice table. 22:26:00 shachaf: "-o -" hth 22:26:55 -!- typeclassy has joined. 22:27:28 fizzie: https://codereview.appspot.com/22170044/ hth 22:28:37 -!- mrhmouse has quit (Read error: Connection reset by peer). 22:28:46 What's "govet"? 22:29:17 Probably http://godoc.org/code.google.com/p/go.tools/cmd/vet 22:29:18 (Except a non-stationary veterinarian.) 22:29:35 Anyway I meant the collapsed messages earlier in the thread. 22:30:15 Well it's about stdin anyway! Nothing to do with using - for stdout. 22:30:59 `run echo hi > - 22:31:03 No output. 22:32:30 Also - is the convention "too bad" "so sad" 22:33:37 "wow" 22:35:04 (Also, I didn't know "null member pointer value" even existed, v. fancy.) 22:40:25 [[ A prvalue of type "pointer to member of B of type cv T", where B is a class type, can be converted to a prvalue of type "pointer to member of D of type cv T", where D is a derived class (Clause 10) of B. If B is an inaccessible (Clause 11), ambiguous (10.2), or virtual (10.1) base class of D, or a base class of a virtual base class of D, a program that necessitates this conversion is ... 22:40:31 ... ill-formed. The result of the conversion refers to the same member as the pointer to member before the conversion took place, but it refers to the base class member as if it were a member of the derived class. The result refers to the member in D's instance of B. Since the result has type "pointer to member of D of type cv T", it can be dereferenced with a D object. The result is the same ... 22:40:37 ... as if the pointer to member of B were dereferenced with the B subobject of D." 22:40:40 Well, that's good to know. 22:47:50 -!- augur has joined. 22:56:47 -!- sebbu2 has changed nick to sebbu. 22:57:00 -!- nooodl has quit (Ping timeout: 265 seconds). 23:08:01 what's a TIL except I didn't learn it today, rather a few days ago? 23:08:26 well, AFDAIL that BNF was invented for the original Algol 60 spec 23:08:26 kmc says "shachaf: did you know [...]" 23:08:32 which lists Backus and Naur as authors 23:13:04 -!- oerjan has joined. 23:26:47 hackego has it? <-- the prefixes command is in all of fungot, HackEgo and EgoBot, which are the bots i know how to update a command in. 23:26:47 oerjan: are you serious? what else is there to call/ cc 23:27:47 * oerjan swats everyone for being idle -----### 23:28:07 @tell quintopia hackego has it? <-- the prefixes command is in all of fungot, HackEgo and EgoBot, which are the bots i know how to update a command in. 23:28:07 Consider it noted. 23:28:08 oerjan: plus i got some really nice fnord. but if you told me, i hate google doing that. 23:31:07 to anyone good at hackego: the bienvenido message drops a "t" at the end <-- oops 23:31:13 `bienvenido 23:31:15 `^! prefixes 23:31:16 ​¡Bienvenido al centro internacional para el diseño y despliegue de lenguajes de programación esotéricos! Por desgracia, la mayoría de nosotros no hablamos español. Para obtener más información, echa un vistazo a nuestro wiki: http://esolangs.org/wiki/Main_Page. (Para el otro tipo de esoterismo, prueba #esoteric en irc.dal.net.) 23:31:17 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: ^!: not found 23:31:57 i think it's simply over HackEgo's limit with a nick, because of the "Most people here don't speak Spanish" addition. 23:32:34 has that variant ever been used in anger? 23:33:29 ais523: i use it when someone shows up who says "hola" as their first message :P 23:33:44 which happens surprisingly often. 23:33:49 have they been Spanish speakers? or just people who hola'd out of the blue? 23:34:15 ais523: mostly Spanish speakers, although the last time i did it wasn't. 23:34:26 (also it's not always literally "hola") 23:35:12 `안녕하세요 23:35:13 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: 안녕하세요: not found 23:35:14 we have the theory it happens because #esoteric starts with es. although i don't think that has ever really been confirmed. 23:35:42 apparently `bienvenido cuts off it the nick is longer than 12 chars. 23:35:49 *if 23:36:03 which happened earlier today, but isn't common. 23:36:19 oh wait 23:36:44 it dropped "t.)", and the nick was 14, so longer than 11. 23:37:10 isn't 14 the absolute limit? 23:37:32 `welcome fourteenletter 23:37:34 fourteenletter: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: . (For the other kind of esoterica, try #esoteric on irc.dal.net.) 23:37:43 `bienvenido fourteenletter 23:37:45 fourteenletter: ¡Bienvenido al centro internacional para el diseño y despliegue de lenguajes de programación esotéricos! Por desgracia, la mayoría de nosotros no hablamos español. Para obtener más información, echa un vistazo a nuestro wiki: http://esolangs.org/wiki/Main_Page. (Para el otro tipo de esoterismo, prueba #esoteric en irc.dal.ne 23:37:54 seems pretty conclusive 23:38:04 `nick fifteenletter12 23:38:05 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: nick: not found 23:38:07 oops 23:38:10 -!- oerjan has changed nick to fifteenletter12. 23:38:12 (I use "twelveletter" as a test name when I'm trying to test if there's room in the status area) 23:38:13 -!- fifteenletter12 has changed nick to fifteenletter123. 23:38:24 ok 16 is the limit 23:38:26 fifteenletter123: bu that's 16 letters 23:38:29 -!- fifteenletter123 has changed nick to oerjan. 23:38:30 you should be sixteenletter123 23:38:37 I KNOW 23:38:50 actually, it's only 13 letters 23:38:57 it's 16 /characters/ but "123" are not letters 23:38:58 in any case there's a simple fix. 23:39:30 `run sed -i 's!wiki/Main_Page!!' wisdom/bienvenido 23:39:31 sed: can't read wisdom/bienvenido: No such file or directory 23:39:36 wat 23:39:37 oh 23:39:37 oerjan: hmm, all the fixes I thought of were massively complicated 23:39:43 but then I was trying to fix something else 23:39:44 `run sed -i 's!wiki/Main_Page!!' wisdom/welcome.es 23:39:48 No output. 23:39:54 `? wisdom.es 23:39:56 wisdom.es? ¯\(°​_o)/¯ 23:40:02 eep 23:40:12 er 23:40:15 `cat bin/bienvenido 23:40:16 *cough* 23:40:16 ​#!/usr/bin/perl -w \ if (defined($_=shift)) { s/ *$//; s/ +/ @ /g; exec "bin/@", $_ . " ? welcome.es"; } else { exec "bin/?", "welcome.es"; } 23:40:24 aha 23:40:26 `? welcome.es 23:40:28 ​¡Bienvenido al centro internacional para el diseño y despliegue de lenguajes de programación esotéricos! Por desgracia, la mayoría de nosotros no hablamos español. Para obtener más información, echa un vistazo a nuestro wiki: http://esolangs.org/. (Para el otro tipo de esoterismo, prueba #esoteric en irc.dal.net.) 23:40:34 -!- ais523 has quit. 23:40:37 `bienvenido sixteenletters12 23:40:39 sixteenletters12: ¡Bienvenido al centro internacional para el diseño y despliegue de lenguajes de programación esotéricos! Por desgracia, la mayoría de nosotros no hablamos español. Para obtener más información, echa un vistazo a nuestro wiki: http://esolangs.org/. (Para el otro tipo de esoterismo, prueba #esoteric en irc.dal.net.) 23:45:02 ? 23:45:15 lambdabot: > [1..] 23:45:23 huh 23:45:29 lambdabot: @run [1..] 23:45:30 [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28... 23:45:34 ic 23:46:19 (just testing if the lambdabot: ? spam is only for lambdabot: ? or something more general. seems it isn't.) 23:48:31 @tic-tac-toe 23:48:31 how about a nice game of chess? 23:48:33 @tic-tac-toe 23:48:34 how about a nice game of chess? 23:49:32 @poll-result remove@src 23:49:32 Poll results for remove@src (Closed): no=1, yes=1 23:50:19 -!- typeclassy has quit (Ping timeout: 252 seconds). 23:51:31 @poll-list 23:51:31 ["(++)","ConfusedWithVixenSituation","FlavaOfJRuby","Prelude-(.)?","best-programming-language","best-spoken-language","food","funniest-thing-in-the-whole-world","naming","nethack","president","prove->","remove@src","sleep"] 23:51:35 @poll-result (++) 23:51:35 Poll results for (++) (Open): (++)::Semigroup_m=>m->m->m=1, (++)::Monoid_m=>m->m->m=2, (++)::[a]->[a]->[a]=2 23:51:50 @poll-result best-programming-language 23:51:50 Poll results for best-programming-language (Open): COBOL=2, PHP=1, Coq=0, Agda=0, anything-else=0, Haskell=0 23:52:02 @poll-result naming 23:52:02 Poll results for naming (Closed): Lovelace=1, Babbage=0 23:52:14 @poll-result sleep 23:52:14 Poll results for sleep (Open): no=1, yes=7 23:52:17 -!- typeclassy has joined. 23:52:21 hmm, p. sure i made that last one 23:52:26 @poll-result prove-> 23:52:26 Poll results for prove-> (Open): proven=1, proved=0 23:52:28 well did you sleep 23:52:32 eventually 23:52:42 @poll-result president 23:52:42 Poll results for president (Open): cthulhu=3, kmc=1, copumpkin=5 23:53:06 @poll-result food 23:53:06 Poll results for food (Open): quesadilla=2, meatball-sub=2 23:53:37 man, tough choice. 23:53:46 @help poll-add 23:53:47 poll-add Adds a new poll, with no candidates 23:53:53 @list poll 23:53:53 poll provides: poll-list poll-show poll-add choice-add vote poll-result poll-close poll-remove 23:54:01 @help choice-add 23:54:01 choice-add Adds a new choice to the given poll 23:54:11 @choice-add food lutefisk 23:54:11 New candidate "lutefisk", added to poll "food". 23:54:23 @vote food lutefisk 23:54:23 voted on "lutefisk" 23:54:43 @choice-add best-programming-language SNOBOL 23:54:43 New candidate "SNOBOL", added to poll "best-programming-language". 23:54:49 @vote best-programming-language SNOBOL 23:54:49 voted on "SNOBOL" 23:55:32 copumpkin for president 23:56:01 @poll-result best-spoken-language 23:56:01 Poll results for best-spoken-language (Open): magyar=3, Polish=484, Welsh=1, Georgian=2, Manx=1, norwegian=8 23:56:24 @vote best-spoken-language Georgian 23:56:24 voted on "Georgian" 23:56:31 Mgrvgrvladje! 23:57:33 -!- Phantom_Hoover has joined. 23:57:50 -!- sebbu has quit (Ping timeout: 240 seconds). 23:59:50 @poll-add olist 23:59:50 Added new poll: "olist"