00:00:02 the exception is 68000 which afaik doesn't match all that badly with C 00:00:25 @metar FPGA <-- apparently FP only has 3 airports. 00:00:45 mad: C has register 00:01:00 mad: C was ran on PDP-10 and stuff like that 00:01:05 -!- J_Arcane_ has joined. 00:01:06 its definition maps onto zeropage quite well, apart from the fact you can't take pointers to it 00:01:25 I see 00:01:38 yeah I guess register would sorts match 00:01:38 ish 00:02:09 that said zeropage pointers are different from main memory pointers 00:02:25 maybe C should have had near* and far* from the start 00:02:33 -!- J_Arcane has quit (Ping timeout: 240 seconds). 00:02:41 MIPS is basically the set of instructions that are (1) electrically feasible and (2) actually useful 00:02:44 -!- J_Arcane_ has changed nick to J_Arcane. 00:03:01 ais523: I don't think register matches, because register values are local to a function, whereas zeropage are global 00:03:26 does 'register' have any effect on compiler output nowadays? 00:03:43 MIPS := {x : x in Instructions, useful(x), feasible(x)} 00:03:54 hellørjan. they have enough space for three airports? 00:04:04 mad: no, and it is getting deprecated in C++ so the keyword can be reused in the future like the auto keyword 00:04:05 SomeEsolang := {x : x in Instructions, useful(x), feasible(x)}^C 00:04:11 @metar FPST 00:04:11 far future 00:04:11 No result. 00:04:17 pfshaw. 00:04:22 b_jonas: what would they reuse it for? 00:04:30 "auto" is a happy coincidence IMO 00:04:36 three airports, no weather. that is completely mad. 00:04:40 mad: Does MIPS have Fixpoint Locate? 00:04:46 (sort-of like Java's variances, except that's less of a coincidence) 00:04:49 @metar EGBB 00:04:49 EGBB 222350Z 35003KT 9999 OVC027 08/04 Q1016 00:05:01 ais523: not much yet, I don't remember, possibly a non-keyword identifier 00:05:09 hppavilion[1] : what's that? 00:05:15 ais523: it's very far future, it's not even deprecated yet in C++14 I think 00:05:48 mad: Something utterly useless, now that I've sent that message 00:06:15 ais523: and it's not really a co-incidence, given how C++ language extensions very often reuse keywords for new purposes 00:06:32 mad: FPL takes one address as an argument and looks at that register. If the value in that register is equal to its address, done. Put the value in the standard output (not stdout) register. Else, do FPL with the value in the register. 00:06:48 b_jonas: I mean that it happened to be very descriptive of "infer this", already a keyword, and basically unused 00:06:51 mad: It's useless, but interesting. You use it to implement OMEGA-MOV 00:07:20 Which is based on my MOV notation 00:07:56 hppavilion[1]: isn't it really inefficient because it has to scan all of memory? 00:08:01 ais523: No 00:08:01 I just guesstimate it <-- people claim freenode will disconnect you if you actually send a too long line, so your _client_ has to know... 00:08:07 ais523: It doesn't scan all of memory 00:08:20 ais523: Let me python it for you 00:08:23 wait, isn't this the operation that finds a pointer that points to itself? 00:09:09 -!- ais523|telnet has joined. 00:09:19 his523|telnet! 00:09:23 0123456789 00:09:30 wait. you can connect to IRC through telnet??? 00:09:35 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 00:09:39 yeah just gotta repoly to pings 00:09:42 ais523|telnet: http://pastebin.com/u4Y2EntC 00:09:49 afaik IRC is very close to telnet 00:09:51 vanelloa. the more you know. 00:09:52 01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 00:09:52 ais523|telnet: Yes, it is 00:09:57 ais523: class, inline, delete, new, default, extern, mutable have all been used for something else other than their first meanings (while their original meaning is and will be still live), and maybe even const has if you count the original C meaning 00:09:59 this is really good numbers 00:10:02 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 00:10:02 1234 00:10:04 lrol 00:10:08 mad: I still haven't found a proper porthello for you... 00:10:10 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 00:10:16 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456 00:10:21 boily: I figured out the portgoodbye for mad 00:10:26 ais523|telnet: stahp 00:10:35 he cant 00:10:36 ais523|telnet: GO ON! WOO! 00:10:39 this is the power of telnet 00:10:48 that was 500 00:10:50 hppavilion[1]: hppavellon[1]. and it is? 00:10:54 boily: madios 00:10:56 as 00:11:10 you can see it was cut off (bleh missing colon) 00:11:19 now I'll do 1000 00:11:27 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456 00:11:31 ais523|telnet: Why in Java are you on telnet? 00:11:37 haven't been booted yet 00:11:47 and how else could I send overlong lines? 00:11:52 ais523: yes, you can do up to I think 2300 00:11:53 ais523|telnet: Oh 00:11:57 doesn't show as overlong here 00:11:59 ais523: the length of the send queu 00:12:01 now for 2000 00:12:06 ais523|telnet: stahp 00:12:07 um, receieve queue 00:12:10 2000 is still safe 00:12:11 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456 00:12:28 ais523|telnet: Why would you do this on #esoteric? 00:12:29 OK, 2300 00:12:37 this iss importan tfor #esoteric 00:12:44 no it's not. 00:12:46 we will get to see a lot of numbers 00:12:50 so you can all see the results 00:12:51 its almost like a rainbow 00:13:02 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456 00:13:05 I never thought I'd put an incarnation of ais523|telnet on ignore... oh well. 00:13:09 that 00:13:11 ais523: no wait, sorry, not 2300 but a bit more than 3040 00:13:13 (minus the |telnet) 00:13:21 was 2300 00:13:28 3000 next? 00:13:31 ais523|telnet: NO. 00:13:37 hppavilion[1]: IT'S FOR SCIEEEEENCE!!!!!!1!!!one!!!!eleven!!! 00:13:39 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456 00:13:46 3000 works 00:13:46 ais523: 3040 is safe if your send queue is empty 00:13:52 let's do 3100 then 00:14:04 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456 00:14:09 I see 307 characters 00:14:36 huh, I'm being sent 421s, what does that mean? 00:14:37 ais523: and you can tell that your send queue is empty by sending PING and receiving the reply, for the server executes all local commands synchroniously, only commands that communicate with other servers or other clients or services can get a delayed response 00:15:13 ais523: 421 means unknown command, you typoed a command 00:15:18 ais523: or entered an empty line 00:15:52 looks like Freenode is splitting my command halfway then 00:16:11 if intel just did a copycat MIPS-like cpu like everyone else instead of itanium it would have been faster 00:16:23 ais523: that would be strange 00:17:05 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456 00:17:22 didn't that time 00:17:32 that was 3005 and I got no 421 00:17:43 mad: packaged ARM cpus cover that area of business quite well, so I don't think Intel would have much comparative advantage there 00:17:51 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456 00:18:12 b_jonas : "instead of itanium" 00:18:28 that was 5005 and I got two 421s 00:18:45 -!- XorSwap has joined. 00:18:50 the second one seemed to be from somewhere near the middle of the message 00:19:33 b_jonas : for embedded the story is mostly that ARM is displacing MIPS 00:19:57 and also 8 and 16bit cpus like PICs due to being a lot faster 00:20:47 a000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999b000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999c000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999d000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999e00000000011111111112222222222333333333344444444445555555 00:21:00 2600, no numerics 00:21:02 * boily cheers ais523|telnet with pom poms 00:21:14 * hppavilion[1] is disturbed by that image 00:21:18 ais523: try 3585 so you're finally quitted! 00:21:37 01234560123456012345601234560123456012345601234560123456012345601234560123456012345601234560123456012345601234560123456012345601234560123456 00:22:06 I don't remember the exact limit, although I think I've seen it somewhere in the server source code which is public 00:22:09 A000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999B000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999C000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999D000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999E00000000011111111112222222222333333333344444444445555555 00:22:19 5200 00:22:21 -!- lynn_ has quit (Ping timeout: 248 seconds). 00:22:34 0123456012345601234560123456012345601234560123456012345601234560123456012345601234560123456012345601234560123456012345601234560123456012345601234560123456012345601234560123456012345601234560123456012345601234560123456012345601234560123456012345601234560123456012345601234560123456 00:22:36 ais523: I'm seeing messages of fairly consistent length 00:22:39 the 421 started with "9g" 00:22:46 hppavilion[1]: of course, they're all being cut off 00:22:56 ais523: Then what is their purpose? 00:22:59 it ended with 9 6's after "j" 00:23:02 ais523, why not try setting the topic very long 00:23:09 hppavilion[1]: to see how the IRC server reacts 00:23:14 ais523: Ah 00:23:17 which isn't visible outside telnet, other than whether I get DC'ed 00:23:29 vanila: Because we'll lose our topic 00:24:07 a000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999b000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999c000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999f000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999e00000000011111111112222222222333333333344444444445555555 00:24:26 hmm, seems to be cut off at a different place each time 00:24:38 :cameron.freenode.net 421 ais523|telnet 888889999999999o000000000 00:25:29 PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :P 00:25:43 :cameron.freenode.net 421 ais523|telnet soteric :Unknown command 00:25:44 :cameron.freenode.net 421 ais523|telnet #esoteric :Unknown command 00:25:49 heap-spraying attack :-P 00:26:04 PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :P 00:26:14 "ic", that time 00:26:33 ais523: WHAT IS ic!? 00:26:37 PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :P 00:26:44 bleh 00:26:54 hppavilion[1]: cut off "PRIVMSG #esoteric" 00:27:04 ais523: Ohh 00:27:11 hppavilion[1]: ic time is close to fnord am hth 00:27:15 `? fnord am 00:27:26 ais523: what are you doing now? 00:27:29 * boily mapoles HackEgo 00:27:30 Fnord AM is the repeated hour that happens when DST resolves. It is customary to celebrate it with a Garou Ping if one is awake during that time. 00:27:40 soteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #es 00:27:55 lifthrasiir: trying to send two commands in one line of input 00:27:57 hellifthrasiir. he's being MAD! HE'S EXPERIMENTING! WITH SCIENCE! 00:28:07 oerjan: I think that GG binge is gaining on my sanity... 00:28:20 ais523: probably dependent to the recv queue size 00:28:39 lifthrasiir: yes 00:28:44 that's why I'm heap-spraying 00:28:55 What would be good for an esoteric calculator? 00:29:00 I'm thinking ` for grouping 00:29:02 hppavilion[1]: dc 00:29:15 1234567890PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #e 00:29:23 hppavilion[1]: dc. 00:29:23 lifthrasiir: Operators and perhaps values, not software 00:29:29 boily: Not software 00:29:44 hppavilion[1]: start with -> Knuth arrow and nothing else 00:29:45 Perhaps it would include @? 00:29:46 xxPRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric 00:30:03 lifthrasiir: Knuth Arrow or ->? There's a differenc 00:30:04 e 00:30:17 xxxxxxPRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esote 00:30:17 I meant the Knuth Arrow which has a common appearance of -> 00:30:22 kleisli arrow imo 00:30:26 -!- ais523|telnet has quit (Quit: bleh). 00:30:32 lifthrasiir: So no addition? 00:30:53 lifthrasiir: Do you mean uparrow, only including hypops >= 4? 00:31:03 yeah, that kind of thing 00:31:06 lifthrasiir: OK 00:31:07 ah 00:31:12 I've got the direction wrong 00:31:13 lol 00:31:23 lifthrasiir: That explains it 00:31:32 Knuth Arrow /|\ 00:31:34 lifthrasiir: So hyperoperations only >= 4? 00:31:50 lifthrasiir: Instead of Knuth Arrow, I think I'll go with /\**/ 00:31:58 what's that? 00:32:04 lifthrasiir: It's python 00:32:15 lifthrasiir: In python, * is multiplication, ** is exponentiation 00:32:28 And I've extended it so *** is tetration, **** is pentation... 00:32:36 hppavilion[1]: if multiplication can be implemented out of additions (not repeated ones), having *only* hyperoperations seem to be fine 00:33:02 lifthrasiir: So I shouldn't include addition, multiplication, or exponentation? Or did I interpret that wrong? 00:33:10 hppavilion[1]: I have an idea that ^ == ** and ^^ == **** and ^^^ == ******** and so on. 00:33:13 I meant that 00:33:18 OK 00:34:28 oerjan: I think that GG binge is gaining on my sanity... <-- don't worry, just drink this elixir and your sanity should be unstoppable hth 00:34:32 lifthrasiir: How about I have ^ be ternary instead? 00:34:44 lifthrasiir: what? isn't the normal notation ^^ = *** and ^^^ = **** ? 00:34:46 x^n:y = H[n](x, y) 00:34:49 lifthrasiir: as in, ^^ is tetration 00:35:08 ah, I have another idea 00:35:15 lifthrasiir: Tritshifts? 00:35:30 Oooh, segmented bitshift. 00:35:32 a sequence of * and ^ is interpreted as a hyperoperator of given binary number encoded by * and ^ 00:35:46 lifthrasiir: Maybe we should make it so ALL esocalc operators are ternary 00:35:51 given *bijective* binary number, sorry 00:35:56 lifthrasiir: Oh, that's good. 00:36:05 lifthrasiir: bijective? 00:36:10 oerjan: elixir? is it Norwegian? and traditional? me want some :D 00:36:13 What does bijection have to do with binary encoding? 00:36:25 hppavilion[1]: 0 1 00 01 10 11 000 001 010 011 100 101 110 111 0000 ... 00:36:35 Wut. 00:36:37 bijectivity is required for using all possible sequences 00:36:48 lifthrasiir: Ah, I get it 00:37:06 lifthrasiir: What's the algorithm for processing bijective binary? 00:37:09 so, well, * ^ ** *^ ^* ^^ *** etc? :p 00:37:10 Into decimal? 00:37:43 lifthrasiir: Though I still like the only-let-use-use-ternary-operators idea 00:38:00 hppavilion[1]: bijective abc...xyz is binary abc...xyz plus 2^(# of digits) 00:38:01 *ternary and higher 00:38:06 Oh 00:38:08 the inverse is also not too hard 00:38:10 That works 00:38:16 Logarithms, I presume 00:38:27 lifthrasiir: Wait, no... 00:38:41 Because + is hard to inverse given a single argument :P 00:38:59 ah, I meant that the conversion from injective to bijective is not too hard either 00:39:05 not about operations 00:39:06 Ah 00:39:09 boily: it is SCIENCE hth 00:39:12 lifthrasiir: What about surjective? 00:39:28 Or nonjective? 00:39:31 lifthrasiir: maybe you want conway chained arrows 00:39:33 I haven't heard of surjective numeration :p 00:39:39 oerjan: possibly. 00:39:40 DAMN. 00:39:41 lifthrasiir: I haven't either 00:39:46 I must have confused them 00:39:48 -!- lleu has joined. 00:39:55 lifthrasiir: I do like segmented bitshift though. 00:39:58 Good esop 00:40:05 what is segmented bitshift? 00:40:06 (not to be confused with aesop) 00:40:12 ais523: are you sure it wasn't telnet that did the cutting off? maybe it negotiated some max length >:) 00:40:15 lifthrasiir: It's bit rotate, but it takes another argumetn 00:40:24 And intstead of shifting the whole thing 00:40:27 oerjan: IRC servers don't respond to telnet negotiation 00:40:28 * boily drinks Dr. Aid Metaphorical Kool Kola 00:40:33 but if you insist I'll use netcat next time :-P 00:40:33 It shifts the segments of size s 00:40:39 a< hppavilion[1]: so 0b10111001<<2:5 is 0b1010011001, right? 00:41:44 So 0b1100_1011_0001<<1:4 = 0b1001_0111_0010 00:41:47 or is it 0b10100111? 00:41:49 lifthrasiir: It's that 00:42:03 -!- XorSwap has quit (Read error: Connection reset by peer). 00:42:24 a<>c< lifthrasiir: Esocalc also, obviously, would have registers 00:42:37 But they wouldn't be numeric 00:42:42 They would hold expressions 00:42:48 So you do algebra with numbered variables 00:42:54 I had an idea about ridiculously high level language 00:43:09 :t System.IO.openBinaryTempFile 00:43:12 FilePath -> String -> IO (FilePath, GHC.IO.Handle.Types.Handle) 00:43:14 lifthrasiir: HTF did you figure that out. 00:43:19 :t System.IO.openBinaryTempFileWithDefaultPermissions 00:43:20 FilePath -> String -> IO (FilePath, GHC.IO.Handle.Types.Handle) 00:43:39 -!- lambdabot has quit (Quit: brb). 00:43:50 hppavilion[1]: in terms of features, of course. (not about abstractions, I don't get category theory after all) for example, it has a built-in image type and can recognize letters from it, but it doesn't have an integer nor addition 00:44:05 something like that 00:44:09 lifthrasiir: Interesting 00:44:17 lifthrasiir: So it abstracts away simplicity? :P 00:44:24 exactly :p 00:44:58 lifthrasiir: I had an idea to make a magazine catalog advertising abstract computer science as things you could buy 00:45:38 Like a $300 binary Turing Machine (vertices, edges, and wiring kit not included) 00:45:58 DAMN. <-- what 00:46:01 A related idea is "abstract accessories" 00:46:19 Which are things that you plug into an abstract machine to make it more useful 00:46:24 Abstract Monitor and Abstract Mouse 00:46:33 Abstract Keyboard 00:46:49 AbstractKeyboardFactoryFactory. 00:46:56 boily: No. 00:47:19 * hppavilion[1] stabs boily with a walrus tusk for bringing up that kind of atrocity in his presence 00:47:26 but if you insist I'll use netcat next time :-P <-- *MWAHAHAHA* 00:47:42 (in the glossary, no less) 00:47:52 oerjan: the only real difference is that you exit netcat differently 00:48:01 "|telnet" is a bit of a meme though 00:48:09 -!- lambdabot has joined. 00:48:15 lambda-11235!? 00:48:33 lifthrasiir: Abstract keyboard. 00:48:42 hppavilion[1]: Yes? 00:49:03 hppavilion[1]: hey! I resent that! 00:49:17 lambda-11235: Whoops, I meant lambdabot 00:49:22 ais523: I usually use nc_jonas as my nick when I irc with netact (but this isn't a requirement of course) 00:49:32 lambda-11235: Your name is inconvenient for me. 00:49:36 (sometimes I do use other nicks) 00:49:46 (it's just a default) 00:50:52 I think we should take Abstract Machines to the logical extreme in a parodical matter and pile on other computer stuff with the "Abstract" prefix 00:51:01 oerjan: well, I spent more than an hour on figuring out why lambdabot created its state files with no read permissions for others 00:51:25 Your Abstract Browser uses Abstract Sockets to query an Abstract Server for an Abstract Webpage 00:51:53 oerjan: turns out that openBinaryTempFile does it that way and I wanted openBinaryTempFileWithDefaultPermissions instead. 00:52:02 Just be careful not to download any Abstract Malware 00:52:05 * boily lops hppavilion[1] with strengthened carballoy moose antlers 00:52:16 boily: I deserved that 00:52:19 boily: Though I'm serious 00:52:34 Why not abstract other stuff to make something stupid? 00:52:52 oerjan: which is quite a mouthful 00:53:16 oerjan: but mostly I'm annoyed that it took me so long 00:53:35 hppavilion[1]: I'm not so much against tacking Factory here and there. it's a well defined pattern by itself, and it's quite useful. 00:54:03 boily: FactoryFactory. 00:54:08 boily: That's too much. 00:54:12 on the other hand, I profundly despise Engine. it serves absolutely no purpose except making you type more, and for bureaucrats' solitary pleasures. 00:54:25 what's the Engine Pattern? 00:54:34 hppavilion[1]: the first is a Factory. the latter is a Factory. clear! 00:54:50 also, I think factories are only necessary due to the builder pattern 00:54:53 ais523: absolutely nothing. some people just like gluing that word to class names. 00:54:56 Probably something evil like the Factory Pattern 00:55:04 Factory 00:55:07 Yah 00:55:08 the /concept/ is useful, but if you aren't using builders, a factory can just be a function rather than a class 00:55:08 vanilaFactory 00:55:19 -!- vanila has changed nick to vanilaFactory. 00:55:23 I like builder. it's fluent, compact, and tremendously useful for objects with lots of options and configuration. 00:55:44 -!- vanilaFactory has changed nick to vanilaFactory[bu. 00:55:59 ais523: that's why I'll simply use static methods. I have to battle somme colleagues over code reviews for that, but I can get quite persuasive. 00:56:01 mwah ah ah. 00:56:15 builder makes me uneasy but it's hard to explain why 00:56:20 also static methods are not inherently a bad thing 00:56:48 oerjan: anyway, now http://silicon.int-e.eu/lambdabot/State/ works. 00:56:50 the Java I write dangerously leans on the functional side. immutable variables, static methods, fluent style. 00:56:53 ais523: What are the benefits of Minsky Machines over Turing Machines? 00:57:08 Is there some efficiency thing or something? 00:57:30 hppavilion[1]: turing machines have a sequential-access tape that can be scrolled both ways; this can be hard to implement in lower-level languages 00:57:45 minsky machines are a much more natural fit for very low-level work 00:58:31 ais523: Let me phrase that differently. Imagine Turing and Minsky machines were real computers you could buy- they were the /only/ computers you could buy. You go to the store and buy a Minksy Machine. Why might you have chosen it over the Turing Machine? 00:58:53 hppavilion[1]: oh, assuming that they aren't optimizing 00:58:56 the turing machine would be better 00:58:58 it's a more powerful language 00:58:59 Turing machine vs Minsky machines.. who would wiN? 00:59:10 turing tends to be faster 00:59:14 this is the reason minsky machines are useful, though, they're less powerful and thus easier to implement 00:59:23 ais523: I guess I'll just make the Minsky Machine cheaper then :P 01:00:24 -!- Lilly_Goodman has quit (Read error: Connection reset by peer). 01:01:03 Static ♥ 01:01:44 APic: AAAAAAAAAAAAAAAAAAAAAAH! 01:01:49 Gesundheit. 01:01:49 first time I see you speak. 01:01:52 Ok. 01:01:53 Happens. 01:02:16 Indeed. 01:08:15 as you see, APic can only say one word per line. 01:08:21 Yah. 01:08:30 So what if not? 01:09:25 ooh, upgrade 01:12:23 APic++ 01:15:11 B-) 01:15:30 So does „B“ count as Word? 01:16:02 > „B“ :: Word 01:16:04 :1:1: lexical error at character '\8222' 01:16:07 NOPE 01:16:32 B-) 01:16:33 Ok. 01:16:51 From English-Arabic FreeDict Dictionary ver. 0.6.2 [fd-eng-ara]: 01:16:51 B 01:16:51 بي - الحرف الثاني في اللغة الإنجليزية 01:16:53 ;=P 01:17:42 * boily shakes his terminal the other way round 01:17:51 nope. all jumbled. 01:18:09 Terminals ♥ 01:19:52 mad: I'm looking at the instruction set proposal you linked, and I'm a little confuse about the compare operations 01:20:22 I'd have assumed that the obvious thing to do would be to have a "/dev/null" register that discards everything written to it, and use that as an output on sub or xor or the like in order to do a compare 01:20:38 [wiki] [[The Abstract Computer]] N https://esolangs.org/w/index.php?oldid=46634 * Hppavilion1 * (+3308) Created Page (I'm so, so sorry) 01:20:42 what's there at the moment seems like a weird mix of "condition codes from normal arithmetic" and "condition codes from compare" 01:20:58 * APic remembers the good old Times where You actually needed Terminators for the good old 10MBit-BNC-Networking 01:21:01 [wiki] [[The Abstract Computer]] https://esolangs.org/w/index.php?diff=46635&oldid=46634 * Hppavilion1 * (-2) Fixed formatting 01:21:42 [wiki] [[The Abstract Computer]] https://esolangs.org/w/index.php?diff=46636&oldid=46635 * Hppavilion1 * (+47) Finished a dangling sentence. 01:22:54 [wiki] [[The Abstract Computer]] M https://esolangs.org/w/index.php?diff=46637&oldid=46636 * Hppavilion1 * (+0) s/edge/node/ 01:23:27 Marvel at the glory of my humor 01:23:42 Good Night Mat{,ress}es. 01:23:44 ☺ 01:24:22 lifthrasiir: There. I actually did it. 01:24:46 haha, wut 01:25:24 lifthrasiir: It's a fun little thing xD 01:25:35 lifthrasiir: I plan to make up all these stupid things and add them 01:25:41 "Abstract Mouse" and whatnot 01:25:57 "Abstract Networking" 01:26:08 lifthrasiir: Yep. 01:26:11 "Abstract Cryptography" 01:26:14 hmm, no 01:26:14 lifthrasiir: There will be abstract sockets. 01:26:27 lifthrasiir: Cryptography is already abstract 01:26:38 Abstracter Cryptography! 01:26:40 lifthrasiir: Though Abstract Operating Systems will be a thing 01:26:42 xD 01:26:53 Abstract Wire. 01:27:01 lifthrasiir: Wires are edges 01:27:02 (Wireworld sounds like this) 01:27:37 lifthrasiir: Maybe 01:27:50 lifthrasiir: You can feel free to add stuff to the page :P 01:28:00 I HAVE TO WORK 01:28:10 lifthrasiir: OKAY 01:28:13 10:28+09:00 here 01:28:25 enough procrastinating 01:28:41 lifthrasiir: YOU CAN NEVER PROCRASTINATE TOO MUCH 01:29:10 -!- vanilaFactory[bu has quit (Quit: Leaving). 01:29:14 yeah, I want to have enough resources to procrastinate forever 01:29:33 we have a close-to-explicit word for this in Korean 01:29:50 "laziness"? 01:29:50 unemployed billionare, something like that 01:30:00 oh, I didn't mean that :p 01:30:04 xD 01:30:34 https://medium.com/@azerbike/i-ve-just-liberated-my-modules-9045c06be67c hello, and fuck your micro-dependencies! 01:31:00 (not really about micro-dependencies, but kind of silly nevertheless) 01:31:20 FWIW, the dependency there that broke a bunch of things was 10 lines of code. 01:31:34 left-pad is, well, left padding function for String 01:31:40 a common micro-dependency in JS 01:31:46 hppavilion[1]: Abstract Pizza hth 01:31:53 i.e. the sort of thing that any sane programmer should realize is more expensive as a dependency than as explicit code. 01:31:58 oerjan: For abstract programmers? 01:32:19 lifthrasiir: I agree with it. 01:32:32 (I know, I know, don't repeat yourself, but dependencies have a fucking cost.) 01:32:34 pikhq: I see some value in very small bits of codes *as long as* it doesn't break. 01:32:59 would be a perfect fit for, say, Haskell 01:34:26 lifthrasiir: Libraries are decent in compiled languages, because they have no runtime cost AFAICT 01:34:54 Or if they do (e.g. shared libraries), then it's worth it because it's otherwise nigh-(if not literally)-impossible 01:35:03 hppavilion[1]: yeah. it would make much sense when the function itself is fully isolated from the outside 01:35:24 the modern JS has some protection but not sufficient 01:35:45 (go die elsewhere if you think "use strict"; is a shit) 01:36:40 lifthrasiir: Do you use Python? 01:36:46 yeah. 01:36:56 lifthrasiir: Do you do anything with compiler dev? 01:36:57 lifthrasiir: "is a shit"? I can't work out whether that's meant to mean "is good" or "is bad" in this context 01:37:08 ais523: Same here 01:37:25 hppavilion[1]: In real-world C++, libraries often have quite interesting runtime cost, FWIW. 01:37:26 "is the shit" means good, "is shit" means bad, for reference 01:37:33 pikhq: Huh. Why? 01:37:34 ais523: ah? I've used it as a bad sense, but I didn't know that connotation 01:37:40 Though I should add that that's generally *startup* cost. 01:37:49 what a nuance. 01:38:02 pikhq: Ah, yes. Then again, straight code also has a startup cost 01:38:08 lifthrasiir: it's not actually an English phrase, and I wasn't sure how to translate it into one that was 01:38:16 hppavilion[1]: Global constructors are one cause. The other is *symbols*. C++ libraries, as a property of how C++ is generally written, have an absurd number of symbols. 01:38:17 lifthrasiir: I've been writing a compiled language called DK using a python-based compiler 01:38:24 "is the shit" would normally be interpreted as highly positive, but also very crude/colloquial 01:38:25 And dynamic linking is *cheap*, not free. 01:38:34 -!- mihow has quit (Quit: mihow). 01:38:37 ais523: I'm generating a close-to-English sentence out of nothing :p 01:38:44 anyway, TIL 01:38:46 also, "use strict"; is basically a directive you can put on an insane language to make it very slightly less insane 01:38:59 That said, it's admittedly likely to come up only with things with things with a lot of dependencies or are actually insane. 01:39:01 yeah, it doesn't automagically prevent the prototype mess for example 01:39:03 (arguably the true is also the case of Perl, although there you have a range of different strictness pragmas) 01:39:34 e.g. Libreoffice pays a lot of this cost, but I think hardly anyone would argue it's an example of good C++. 01:39:54 hppavilion[1]: I'm building a language at work right now 01:39:59 lifthrasiir: Cool. 01:40:01 not that big, though 01:40:01 lifthrasiir: Compiled? 01:40:12 hppavilion[1]: more about a type checker for the existing language 01:40:16 Ah 01:40:18 s/about/like/ 01:40:43 I don't much care for the compiled/interpreted distinction. It's only relevant IMO when language semantics make a compiler or interpreter infeasible. 01:40:48 -!- mihow has joined. 01:40:51 -!- mihow has quit (Client Quit). 01:40:52 I agree. 01:41:05 the traditional distinction doesn't work well today 01:41:19 pikhq: I don't think being compiled or being interpreted should be a fundamentally defining feature of a language 01:41:30 many languages can reasonably be done either way 01:41:44 e.g. Java is normally interpreted, but compilers exist and nothing in its semantics rules them out 01:42:06 Mmm, I suppose it could be a useful adjective for languages that at least have one or the other as the clearly "reasonable" implementation choice. 01:42:20 java is typically just-in-time compiled no? :D 01:42:35 ais523: It's a fundamentally defining feature of an implementation 01:42:36 java is... it's weird. 01:42:44 mad: Yes, but the first few releases were a bytecode interpreter not a JIT. 01:42:44 well, with the presence of JIT compilation the "infeasible" language semantics do not seem to exist anyway 01:42:45 mad: that's a method of implementing interpreters, though 01:42:52 -!- boily has quit (Quit: PYRAMIDAL CHICKEN). 01:42:52 hppavilion[1]: yes, but not of the language it implements 01:42:58 ais523: Fair enough 01:42:58 ais523 : depends on your angle 01:43:07 ais523: Though most languages are designed with one or the other in mind 01:43:09 *And* there's absolutely nothing preventing you from just using a bytecode interpreter on Java today. 01:43:21 if your angle is speed and the language-feature sacrifices you need to get that speed, then java is a compiled language 01:43:31 But, for example, C could still be considered compiled, but you could certainly interpret it just fine. 01:43:34 pikhq: well you have to compile into bytecode first :-P 01:43:35 ais523: You generally wouldn't use a Rust interpreter except for debugging. 01:43:38 C interpreters exist 01:43:43 I actually think that WebAssembly can act as a portable retargetable binary format 01:43:43 Yup. 01:43:57 Though TCC, the commonly given example, is not a good example of it. :) 01:44:12 pikhq: TCC? 01:44:17 Tiny C Compiler. 01:44:17 Is that Turing-Complete C? 01:44:18 is there anything that is designed to be a retargettable format for C++ 01:44:19 ? 01:44:21 Ah 01:44:21 https://github.com/tjmehta/is-positive-integer/blob/master/index.js oh. 01:44:45 I'm sure a retargettable, platform independent... platform for C++ would totally be feasible 01:44:51 When used as an interpreter it compiles C in memory and then runs it. Which works just fine because it's rather ridiculously fast. 01:44:56 some sort of generic-ish CPU 01:45:05 lifthrasiir: Dafuq!? xD 01:45:17 when loading the exe it translates it to the target arch 01:45:26 mad: Sure, and WebAssembly or something similar seems like just that. 01:45:27 it already has to relocate everything in memory 01:45:33 hppavilion[1]: it is not even `module.exports = function(i) { return i > 0 && Math.floor(i) == i; }`! 01:45:34 might as well translate it too 01:45:40 it has *three* dependencies! 01:45:53 lifthrasiir: Three!? 01:46:04 passAll, isPositive, isInteger 01:46:26 passAll is \f g a -> f a && g a 01:46:43 pikhq : does it have to have "safe" array lookups? (ie it checks bounds on everything) 01:46:54 lifthrasiir: That's horrible. 01:47:10 why does that is-positive-integer thing exist? is it actually a hard task in JavaScript? 01:47:29 ais523: Probably 01:47:37 also I'm not sure if lifthrasiir's example actually works 01:47:37 doesn't js have === 01:47:45 hppavilion[1]: oh, isInteger was not *that* simple. it is actually: return typeof v === 'number' && isFinite(v) && Math.floor(v) === v; 01:47:47 mad: JS has == and === 01:47:48 I don't have Java's type coercion things memorized but think it might fail on a string like "1test" 01:47:54 yes exactly 01:47:58 === is like 01:48:01 ah right. I should've used === 01:48:02 mad: == is just horrible 01:48:09 "we messed up == ok we have to use === then" 01:48:16 I had some good bug with === in PHP, however 01:48:16 mad: It appears they're designing it to permit but not require such an implementation. 01:48:23 probably that's why I'm not used to === 01:48:29 ais523: Either that or it's a demonstratoin 01:48:47 I like Perl's ==! 01:49:02 -!- jaboja has quit (Remote host closed the connection). 01:49:03 actually, IMO there should be a Perl variant in which there is no distinction between integers and strings 01:49:09 I think all programming languages should have a library called "Horrible Hacks" that implements common code that is horrible and hacky, so that you don't have to do it and feel bad 01:49:14 the language is 99% designed like that but it leaks occasionally 01:52:09 -!- XorSwap has joined. 01:52:20 ugh, is this what modern development is like?: https://redd.it/4bjss2 01:52:44 (tl;dr: someone took an 11 line npm package off GitHub, a ton of stuff broke as a result) 01:52:44 Yes. 01:53:04 taking code from github directly as part of your build system is already something I consider to be shockingly broken by itself 01:53:11 and yet it seems to be the least of the offences here 01:53:19 ais523: that is what I've pasted above 01:53:42 I'd fault it less if you, y'know, also referenced a revision ID as well. 01:53:42 lifthrasiir: ah right, I missed it 01:53:51 it wasn't clear from the URL and I didn't click the link 01:53:53 it is also related to the unclear npm policy about trademark violation and DMCA requests 01:54:03 because I tend not to follow links if I don't know what they are or what site they're to 01:54:34 ais523: sounds reasonable. I guess I need to add more contexts 01:54:40 ais523: medium.com is a somewhat large and popular blog host. 01:54:55 pikhq: that implies that you can't deduce much about the destination of a link hosted there 01:55:09 True. 01:56:13 -!- nooga has quit (Ping timeout: 248 seconds). 01:58:03 pikhq: Isn't it great when everything is in one repository? 01:58:13 Distributed development is scow. 01:58:21 shachaf: Rather better than I expected, TBH. 01:58:54 Though "having tools that make it sane" help a lot. :P 01:59:09 -!- Phantom_Hoover has quit (Read error: Connection reset by peer). 01:59:20 What sorts of tools are you thinking of? 02:00:00 -!- Lilly_Goodman has joined. 02:00:17 Eh, y'know, mostly just the large amounts of automatic testing that make it hard to break things by mistake. 02:00:44 Well, sure. 02:00:48 You want that sort of thing anyway. 02:01:06 Yeah, I came to Google from a place with rather less... good repo hygiene. 02:01:36 I think the single largest build break I've seen here was... caused by me 02:02:08 be the only dev, then /every/ break will be caused by yourself :-P 02:02:17 actually I have a larger problem with people making changes without running the tests, than anything else 02:02:36 the problem being that as I'm working on a to-FPGA compiler, the tests require an FPGA simulator to run 02:03:02 Yeah, thankfully commits *block* on tests passing normally. 02:04:13 Doesn't help when it's an expensive test you can't run per commit though. 02:04:16 at my last place, commits would go into a dev branch 02:04:32 that would trigger a round of tests 02:04:52 if the tests pass the changes were comitted to the release brance 02:05:20 Though your definition of "expensive" tends to change when you can run code on spare capacity in a Google datacenter on a whim. :P 02:07:07 http://vanilla-js.com/ is best framework 02:07:44 "0 bytes uncompressed, 25 bytes gzipped." 02:07:51 wow, gzip headers are enormous 02:08:36 I think you can do *slightly* better than that. But, yeah, they kinda are. 02:08:51 ais523: Yeah, that was surprising when I saw that 02:08:59 I was looking at it and was like "Wait, what?" 02:09:04 bzip2's headers have an ASCII representation of pi in them, IIRC 02:09:10 in order to make them easy to locate in a corrupted file 02:09:10 `` < /dev/null gzip | wc -c 02:09:21 ais523: Weeeeiiiird... 02:09:25 or was it binary-coded-decimal? 02:09:32 20 02:09:36 You spend 18 bytes on just the gzip file headers. 02:09:46 int-e: < prefix notation looks so weird 02:09:52 `` < /dev/null bzip2 | wc -c 02:09:54 14 02:09:54 gzip the program by default includes the file name, though. 02:10:01 `` < /dev/null bzip2 | od -t x1z 02:10:02 0000000 42 5a 68 39 17 72 45 38 50 90 00 00 00 00 >BZh9.rE8P.....< \ 0000016 02:10:06 ais523: I like it, it's logical. 02:10:18 I assume it's the block header rather than the file header 02:10:26 `` `` uname -a | bzip2 | od -t x1z 02:10:28 0000000 1f 8b 08 00 0f fb f1 56 00 03 03 00 00 00 00 00 >.......V........< \ 0000020 00 00 00 00 >....< \ 0000024 02:10:29 0000000 42 5a 68 39 31 41 59 26 53 59 e1 49 ef 76 00 00 >BZh91AY&SY.I.v..< \ 0000020 16 5f 80 00 10 48 03 ff 70 08 95 06 80 b6 27 82 >._...H..p.....'.< \ 0000040 40 20 00 40 d5 3d 4c 9a 62 18 43 43 43 46 99 0c >@ .@.=L.b.CCCF..< \ 0000060 30 4c 09 80 86 8c 9a 61 50 d7 fc 66 49 cc 39 d4 >0L.....aP..fI.9.< \ 0000100 c7 08 b5 ed 41 91 68 50 2c ed 02:10:39 ah, there we go 02:10:49 -!- XorSwap has quit (Ping timeout: 252 seconds). 02:10:49 you can see the "31 41 59 26 53 59" in the header 02:11:06 hmm, let's see if we can get that all on one line to be more readable 02:11:33 ais523: Like, slice 11001001000011111101101010100010001000010110100011000010001101001100010011000110011000101000101110000000110111000001110011010001 at every 8 bits and spit out their chr()ing? 02:11:35 `` uname -a | bzip2 | od -w 128 -t x1z 02:11:36 od: 128: No such file or directory 02:11:39 `` uname -a | bzip2 | od -w128 -t x1z 02:11:40 0000000 42 5a 68 39 31 41 59 26 53 59 e1 49 ef 76 00 00 16 5f 80 00 10 48 03 ff 70 08 95 06 80 b6 27 82 40 20 00 40 d5 3d 4c 9a 62 18 43 43 43 46 99 0c 30 4c 09 80 86 8c 9a 61 50 d7 fc 66 49 cc 39 d4 c7 08 b5 ed 41 91 68 50 2c ed d5 65 d6 50 66 29 2e 56 36 86 ef e6 e0 98 cc 7b 29 0f 85 44 e8 28 29 8c c2 2a 08 df 8b b9 22 9c 28 48 70 a4 f7 bb 00 02:11:51 `` uname -a | bzip2 | od -w128 -tx1z 02:11:52 0000000 42 5a 68 39 31 41 59 26 53 59 e1 49 ef 76 00 00 16 5f 80 00 10 48 03 ff 70 08 95 06 80 b6 27 82 40 20 00 40 d5 3d 4c 9a 62 18 43 43 43 46 99 0c 30 4c 09 80 86 8c 9a 61 50 d7 fc 66 49 cc 39 d4 c7 08 b5 ed 41 91 68 50 2c ed d5 65 d6 50 66 29 2e 56 36 86 ef e6 e0 98 cc 7b 29 0f 85 44 e8 28 29 8c c2 2a 08 df 8b b9 22 9c 28 48 70 a4 f7 bb 00 02:12:07 oh, it must be long enough that it gets cut off 02:12:10 `` uname -a | wc -c 02:12:11 76 02:12:15 `` uname -a | bzip2 | wc -c 02:12:15 113 02:12:17 right 02:12:27 `` uname -a 02:12:27 Linux umlbox 3.13.0-umlbox #1 Wed Jan 29 12:56:45 UTC 2014 x86_64 GNU/Linux 02:12:29 * ais523 tries azip 02:12:52 `` run (uname -a | wc -c)-(uname -a | bzip2 | wc -c) 02:12:53 ​/hackenv/bin/`: eval: line 4: syntax error near unexpected token `uname' \ /hackenv/bin/`: eval: line 4: `run (uname -a | wc -c)-(uname -a | bzip2 | wc -c)' 02:12:55 114, bleh 02:12:58 `` (uname -a | wc -c)-(uname -a | bzip2 | wc -c) 02:12:58 ​/hackenv/bin/`: eval: line 4: syntax error near unexpected token `-' \ /hackenv/bin/`: eval: line 4: `(uname -a | wc -c)-(uname -a | bzip2 | wc -c)' 02:13:00 so close 02:13:01 ... 02:13:08 Seriously, bash? 02:13:12 http://www.forensicswiki.org/wiki/Bzip2 helps... 02:13:14 Why is that not a feature? 02:13:55 `` echo | bzip2 | od -tx1 02:13:56 0000000 42 5a 68 39 31 41 59 26 53 59 9e 7d 96 9d 00 00 \ 0000020 00 40 00 00 10 20 00 21 18 46 82 ee 48 a7 0a 12 \ 0000040 13 cf b2 d3 a0 \ 0000045 02:13:59 It'd be so much better that way 02:14:04 Almost Haskellic 02:14:05 huh, strange, it uses "Linu" as a dictionary word but not "Linux" 02:14:11 `` echo $(($(uname -a | wc -c)-$(uname -a | bzip2 | wc -c))) 02:14:11 ​-37 02:14:14 hppavilion[1]: ^ 02:14:20 basically you'll have the pi except for an empty input 02:14:21 lifthrasiir: Doesn't count 02:14:31 `` echo | bzip2 | od -w100 -tx1z 02:14:32 0000000 42 5a 68 39 31 41 59 26 53 59 9e 7d 96 9d 00 00 00 40 00 00 10 20 00 21 18 46 82 ee 48 a7 0a 12 13 cf b2 d3 a0 >BZh91AY&SY.}.....@... .!.F..H........< \ 02:14:40 there we go 02:14:54 Binary-Coded Decimal is stupid, IMHO, unless you're running on a VERY small processor 02:15:16 One that would make it hard to even convert binary to decimal 02:15:20 hppavilion[1]: well, those are magic numbers... 02:15:20 In any fashion 02:15:43 hppavilion[1]: that would actuaööy be a reason tp NOT support it 02:16:05 * ais523 wonders what sort of keyboard has ö next to l 02:16:11 german 02:16:14 german 02:16:18 que es esos numeros? 02:16:21 Irish 02:16:52 myname: how can you stand typing {} and [] though... 02:16:58 ais523: o is next to l on american keyboards 02:17:08 bcd 02:17:18 "bank carreer defense" 02:17:32 hppavilion[1]: Above, not next to. 02:17:48 myname: (semi-serious question; those characters are the main reason why I switched to US layout) 02:17:51 The character where ö is on a German keyboard, is ; on an American keyboard. 02:17:51 pikhq: "above" is a type of "next to" when dealing with keyboards 02:17:52 int-e: i don't see the problem 02:18:15 Because keyboards are usually horizontal 02:18:17 myname: alt-gr is so inconvenient. 02:18:43 I got used to alt-gr 02:18:46 nah, i don't have to think about it, therefore i don't have a problem with it 02:18:55 now US keyboard confuses me 02:19:10 simply because I have the alt-gr shortcuts burned into my fingers 02:19:11 it's not a thinking issue so much as an issue of not breaking my thumb while typing 02:19:12 it's not like i'd think "ouch, my fingers hurt, i should type [ less" 02:19:16 anyway... never mind. 02:19:31 I shouldn't have asked :O 02:19:49 i know many germans using us 02:19:55 the one that's kinda inconvenient is < > on the same key 02:20:01 the more sane i know switched to neo 02:20:17 and ` ^ that have to be typed with deadkey + space 02:20:58 and \ with altgr + key to the left of 1 02:21:00 `` 02:21:00 No output. 02:21:06 huh, deadkey+space works even on a UK keyboard 02:21:13 there's just no point because of the physical ` key 02:21:21 mad: huh? left of 1? 02:21:32 (in fact, one of those was typed as Compose ` space, which is more than a little pointless) 02:21:47 Compose a space doesn't work, so someone must have added that compose recipe explicitly 02:21:49 fortunately the deadkey behavior can be disabled 02:21:52 \ is pretty far to the right 02:21:53 myname : ` ~ on the typical US layout if I'm not mistaken 02:22:02 -!- Lilly_Goodman has quit (Remote host closed the connection). 02:22:07 `¬| in the UK layout 02:22:07 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: ¬|: not found 02:22:14 only it's a different | from the one that's shift-\ 02:22:24 (they're treated as the same by Linux, but not by DOS or Windows) 02:22:29 -!- Lilly_Goodman has joined. 02:22:40 mad: `~ is there, yes 02:22:57 Yup, ¬ is nowhere on a US keyboard. 02:22:58 ¦ is stupid afaik 02:23:12 mad: \ is right of 0, not left of 1 ... 02:23:15 ¦ vs | is a distinction I don't even understand. 02:23:22 pikhq: I assume we have a ¬ key because it's in EBCDIC 02:23:25 it isn't in ASCII though 02:23:27 `unidecode ¬ 02:23:28 ​[U+00AC NOT SIGN] 02:23:48 yeah it's like 02:23:58 bleh, I knew the reason for the vertical bar stuff at one point, but I've forgotten what it is 02:24:00 | vs ¦ made into ebcdic for some reason 02:24:01 IIRC it was really stupid though 02:24:05 afaik 02:24:27 well, one of the versions of ebcdic anyways 02:24:32 https://en.wikipedia.org/wiki/Vertical_bar#Solid_vertical_bar_vs_broken_bar talks about the distinction but doesn't really explain it 02:25:01 the broken bar with a center dot works as a rotated version of -.- 02:25:01 huh, I just got a reminder to finish a review that I submitted today... I knew that elsevier is evil, but that's just stupid :P 02:25:25 ¬ has nautical applications 02:25:30 1 ¬ = 1.852 km/h 02:25:40 huh, it is actually ISO-8859-1 which is at fault 02:25:44 `unidecode ¦ 02:25:45 ​[U+00A6 BROKEN BAR] 02:25:52 so, it's a knot? 02:25:56 which we could have figured out with a simple unidecode 02:26:28 shachaf: awful pun 02:26:48 `wisdom 02:26:49 reversal/lasrever 02:26:55 well, apparently the backslash was invented so that you could type /\ and \/ as and and or 02:27:09 ais523: I don't think ¬ is in the base EBCDIC, just a few EBCDIC code pages. 02:27:20 ais523: OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOH 02:27:24 ¬ is in latin one 02:27:24 pikhq: makes sense 02:27:26 ais523: That explains so much. 02:27:29 EBCDIC is crazily internally inconsistent 02:27:33 Yes, there's freaking EBCDIC code pages. 02:27:53 shachaf: indeed. ¬ that ¬ical mile is ¬ same to typical mile, though. 02:28:14 ¬ed 02:28:30 you are horrible 02:28:37 shachaf: `math/learn 02:28:44 latin-1 has a bunch of really stupid characters 02:28:54 I hate EBCDIC. I used to hate it more when I had to deal with it at work. 02:29:11 pikhq : wow 02:29:14 pikhq: I'm going to assume that you're talking about your current job. 02:29:17 is there anything that people hate less as they use it more, rather than hating more? 02:29:21 please don't disillusion me twh 02:29:24 `help 02:29:24 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/ 02:29:36 shachaf: I have not had to deal with EBCDIC at my current job. 02:29:40 Should I make a calculator and put it in HackEgo via `fetch? 02:29:41 pikhq: tdnh 02:29:47 ais523: Lots of things, surely. 02:29:58 now if we could get trigraphs out of C++ 02:30:00 For example pikhq and putting all your code in one repository. 02:30:13 Anything which people call an "acquired taste". 02:30:27 mad: Yeaaaah, I'm 25 years old and have professional experience in COBOL in some sense. 02:30:27 pikhq: Are you going to the ghcjs talk this week? 02:30:41 whoa whoa whoa, that's a quarter of a century 02:30:41 pikhq: :o 02:30:42 Iunno. 02:30:48 pikhq: your COBOL skills may at one point be necessary to save the word 02:30:49 *world 02:30:53 latin-1 has 32 extra control characters 02:31:16 I am best described as a COBOL n00b. But that's... far above average. 02:31:20 as if the 32 control characters in normal latin-1 weren't already useless enough 02:31:25 HackEgo: supports python, right? 02:31:32 Whoops 02:31:32 pikhq: I know a limited amount of COBOL syntax 02:31:37 Accidental : 02:31:50 I've parsed it. 02:31:50 `which python 02:31:52 ​/usr/bin/python 02:31:57 hppavilion[1]: you could just have asked it 02:32:00 all I know about cobol is to run away in the opposite direction :D 02:32:05 ais523: I don't speak bash very fluently 02:32:08 mad: A good call. 02:32:17 I like the use of COBOL in this article: http://blog.cr.yp.to/20160315-jefferson.html 02:32:36 I guess I mean in the 1997 lawsuit. 02:32:55 I think of COBOL as being a predecessor to SQL 02:33:01 whose major sin was not realising it wanted to be domain-specific 02:33:20 `mkx testpylib/#!/usr/bin/python\nimport ply 02:33:23 usage: mk[x] file//contents 02:33:28 `mkx testpylib//#!/usr/bin/python\nimport ply 02:33:31 testpylib 02:33:36 `testplylib 02:33:37 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: testplylib: not found 02:33:41 Dammit 02:33:49 Do I have to create bin/testplylib? 02:33:50 hppavilion[1]: you didn't make it executable and you didn't give a full path 02:33:54 Yeah, honestly COBOL isn't terrible considering the context of when it came to be and what it was for. 02:33:56 ais523: Ah 02:33:57 `` chmod a+x testplylib 02:33:57 chmod: cannot access `testplylib': No such file or directory 02:34:02 `` chmod a+x testpylib 02:34:03 No output. 02:34:04 ais523: How do I make it executable? 02:34:06 Oh, with that 02:34:08 `` ./testpylib 02:34:08 ​/hackenv/bin/`: ./testpylib: /usr/bin/python\nimport: bad interpreter: No such file or directory 02:34:17 COBOL's sins are that it wasn't domain specific but wanted to be, and it survived *well* past its welcome. 02:34:21 Dammit 02:34:25 Why does \n not work in that? 02:34:28 `? dsl 02:34:29 dsl? ¯\(°​_o)/¯ 02:34:30 hppavilion[1]: it appears that your file contains a literal backslash followed by a literal n 02:34:36 ais523: Yes, I noticed 02:34:56 `` sed -i -e 's/\\n/\n/g' testpylib 02:34:59 No output. 02:35:02 ais523: That works too 02:35:04 `` ./testpylib 02:35:05 Traceback (most recent call last): \ File "./testpylib", line 2, in \ import ply \ ImportError: No module named ply 02:35:09 Damn 02:35:16 `` pip install ply 02:35:16 ​/hackenv/bin/`: line 4: pip: command not found 02:35:21 *Sigh* 02:35:29 `which pip 02:35:29 No output. 02:35:34 `` which pip 02:35:35 No output. 02:35:37 OK... 02:35:56 ais523: Halp? 02:36:11 hppavilion[1]: pip is not python 02:36:18 also it wouldn't work on a VM that has no internet connection 02:36:23 ais523: There is a python pip 02:36:26 (not a direct one, anyway; you can do `fetch) 02:36:35 ais523: Python has pip too 02:36:37 hppavilion[1]: pip is not python in the same way that dpk is not Linux 02:36:39 *dpkg 02:36:42 Which posed an issue for me at one point 02:36:43 [Oh 02:36:46 and homebrew is not OS X 02:36:46 Makes sense 02:36:57 which video game console do you like the sound of the most 02:37:13 `which bestVideoGameConsoleSound 02:37:14 No output. 02:37:20 mad: HackEgo has no preference 02:37:27 i see 02:37:59 ais523: Perhaps I should `fetch www.dabeaz.com/ply/ply-3.8.tar.gz ? 02:38:21 hppavilion[1]: this is more likely to succeed than the other things you tried 02:38:25 the snes has always kinda stood out to me 02:38:30 sound wise 02:38:34 `fetch www.dabeaz.com/ply/ply-3.8.tar.gz 02:38:36 2016-03-23 02:38:32 URL:http://www.dabeaz.com/ply/ply-3.8.tar.gz [157286/157286] -> "ply-3.8.tar.gz" [1] 02:38:48 Oh, crap. Now I need to tarfile. 02:38:54 And I've heard things about tarfile 02:39:02 mad: the GBA hits the sweet spot of being powerful enough to sound good and limited enough to force sound designers to be creative, IMO 02:39:13 hppavilion[1]: tar isn't as hard as people make it out 02:39:26 ais523: But Randall Munroe said... 02:39:29 (:P) 02:39:32 the most confusing thing is that, by default, it accesses your primary connected tape driver 02:39:35 *tape drive 02:39:47 given that most people don't have a tape drive, and that most uses of tar don't want to access it anyway 02:39:57 you have to override the file you're accessing via the -f option 02:39:59 here 02:40:05 `tar -xf ply-3.8.tar.gz 02:40:06 tar: ply-3.8.tar.gz: Cannot open: No such file or directory \ tar: Error is not recoverable: exiting now 02:40:10 `` tar -xf ply-3.8.tar.gz 02:40:20 No output. 02:40:30 `ls ply-3.8 02:40:32 ANNOUNCE \ CHANGES \ doc \ example \ MANIFEST.in \ PKG-INFO \ ply \ ply.egg-info \ README.md \ setup.cfg \ setup.py \ test \ TODO 02:40:37 one option for the operation (x for extract), and one option for the file 02:40:41 (f for file) 02:40:50 it really isn't actually complicated, it just looks like it 02:40:57 `` python ply-3.8/setup.py 02:40:59 usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] \ or: setup.py --help [cmd1 cmd2 ...] \ or: setup.py --help-commands \ or: setup.py cmd --help \ \ error: no commands supplied 02:41:02 * hppavilion[1] prays that works 02:41:11 Yes, I meant to do that because I couldn't remember the syntax 02:41:22 admittedly I'm cheating a little because modern tar autodetects compression formats 02:41:35 `` python ply-3.8/setup.py --help-commands 02:41:36 Standard commands: \ build build everything needed to install \ build_py "build" pure Python modules (copy to build directory) \ build_ext build C/C++ extensions (compile/link to build directory) \ build_clib build C/C++ libraries used by Python extensions \ build_scripts "build" scripts (copy and fixup 02:41:37 with old versions of tar I'd need to use -xzf; x for extract, z for gzip-compressed, and f to specify the file 02:41:49 what does ply do anyway? 02:41:50 `` python ply-3.8/setup.py build 02:41:51 error: package directory 'ply' does not exist \ running build \ running build_py 02:42:38 HackEgo: try running it from its own directory 02:42:44 *hppavilion[1]: 02:42:54 ais523: Um? 02:43:03 ais523: How would I do that? 02:43:20 `` (cd ply-3.8; python setup.py build) 02:43:24 running build \ running build_py \ copying ply/lex.py -> build/lib.linux-x86_64-2.7/ply \ copying ply/cpp.py -> build/lib.linux-x86_64-2.7/ply \ copying ply/__init__.py -> build/lib.linux-x86_64-2.7/ply \ copying ply/ctokens.py -> build/lib.linux-x86_64-2.7/ply \ copying ply/yacc.py -> build/lib.linux-x86_64-2.7/ply \ copying ply/ygen.py -> build/l 02:43:28 bleh, you're conning me into doing everything myself, aren't you 02:43:33 Ah, I get it now 02:43:37 I forgot I could ; 02:43:44 ais523: Maybe... 02:43:48 `` ./testpylib 02:43:49 Traceback (most recent call last): \ File "./testpylib", line 2, in \ import ply \ ImportError: No module named ply 02:43:57 Probably hasn't finished yet 02:45:02 `` ./testpylib 02:45:03 Traceback (most recent call last): \ File "./testpylib", line 2, in \ import ply \ ImportError: No module named ply 02:45:05 Nope 02:45:17 I'll move to PRIVMSG 02:47:05 Dammit, I tried setup.py install 02:47:06 error: could not create '/usr/local/lib/python2.7/dist-packages/ply': Read-only file system 02:47:30 don't install 02:47:34 myname: Oh 02:47:37 myname: What do I do then? 02:47:42 use it 02:47:55 myname: Ah, I have to put it in the directory that I want to use it from? 02:53:01 -!- nooga has joined. 02:55:18 hppavilion[1]: you didn't make it executable [...] <-- incorrect, `mkx does that. 02:55:32 oerjan: Oh 02:55:34 oerjan: oh, is that what the x does? 02:55:42 lol 02:58:06 -!- nooga has quit (Ping timeout: 276 seconds). 02:59:03 What does the Standard #esoteric calculator need? 02:59:08 Fuzzy bags? 02:59:13 tswett: Are you online? 03:00:49 hppavilion[1]: dc is an esoteric calculator already 03:01:00 ais523: We're 1-upping it 03:01:12 you might be 03:01:17 I want no part of this :-P 03:01:21 ais523: Fine, *I'm* 1-upping it 03:01:31 also, have you seen the olympiad of misguided geeks? 03:01:35 ais523: Nope 03:01:38 it hardly ever ran 03:01:43 ... 03:01:49 but the only really successful run was basically literally "create an esoteric calculator" 03:01:55 * hppavilion[1] laughs hysterically 03:02:04 it was run by thedailywtf 03:02:12 Oh, it was really a thing? 03:03:11 hmm, when they changed their name from worsethanfailure back to thedailywtf, it seems they broke the links to it 03:03:20 I'm trying to find the results now 03:03:48 here we go: http://thedailywtf.com/articles/Announcing-the-OMGTWTF-Winner 03:03:50 hppavilion[1]: read that 03:04:47 wait, that's a pretty celebrity-stuffed judging panel 03:04:57 it has both raymond chen and joel spolsky on it 03:06:35 ais523: What I'm going for is a real calculator with subtle, horrifying features 03:06:46 Like implementing Nullity 03:06:46 hppavilion[1]: yes, some of them are like that 03:07:02 ais523: Excellent 03:07:13 hppavilion[1]: try this one: http://thedailywtf.com/articles/OMGWTF-Finalist-08-Universal-Calculator 03:07:17 ais523: And the occasional divide-by-5 error 03:10:27 hppavilion[1]: what about a divide-by-minus-one error? 03:10:34 ais523: Sure, why not xD 03:10:51 hppavilion[1]: that's an actual error that comes up in a bunch of programming languages but it isn't well known 03:10:58 ais523: Of course, I could alternatively include Notta Numbers (I already am implementing @) 03:11:04 the thing is, INT_MIN is a little further from zero than INT_MAX 03:11:08 so INT_MIN/-1 is an integer overflow 03:11:15 Huh 03:11:29 Interesting 03:12:51 INT_MIN * (-1) = INT_MIN 03:14:19 myname: I figured 03:15:01 INT_MIN * (-1) = fish is also a valid implementation. 03:15:29 ais523: How about I change it to "Divide by zero on a day other than easter" error? 03:16:46 in most implementations, INT_MIN / -1 is either INT_MIN or crashes the program 03:16:51 but these are only the most common outcomes 03:17:01 as pikhq said, theoretically it could do anything 03:17:21 (I guess fairly common would be to produce a negative number that is treated as positive when compared with 0) 03:17:42 how would you do that 03:17:46 ais523: ... huh? 03:18:10 myname: Certainly not with typechecking 03:18:38 myname: int_min is negative, right? thus dividing it by a negative number produces a nonnegative number 03:18:45 hppavilion[1]: The compiler will often assume that a negative times a negative is positive, and then optimize some conditionals based on that. 03:18:55 Which is legal, because signed overflow is not. 03:19:04 ais523: well, yeah, but where do you save the information about it being poitive? 03:19:05 because of the UB on overflow, this is true no matter what the arguments 03:19:11 however, if you actually do the calculation, you get a negative number 03:19:20 the information's saved in the asm 03:19:27 via static analysis and optimizations based on it 03:19:46 It's not that the number gets a magic "this is positive" bit set, it's just that the compiler makes that assumption when optimizing. 03:20:13 pikhq: Ooooooooooh 03:20:18 i.e. it will replace compares with that result with "true". 03:20:47 pikhq: -0*-9 03:20:52 *-0*-0 03:21:33 I assume that -0*-0 is evaluated to just 0 before compilation 03:21:37 -!- Lilly_Goodman has quit (Ping timeout: 240 seconds). 03:22:02 -0 wpuld be optimized to 0 03:22:05 (Why do I try to refute things that are so obvious that they're irrefutable?) 03:22:46 how do you express -0 in C? is the simplest way copysign(-1., 0.)? (assuming that I remembered which way round the arguments to copysign went) 03:22:59 huh, copysign is pretty weird as primitives go 03:23:19 myname: Should the Esocalc have a number Ω : 0Ω = 1? 03:23:42 -!- Lilly_Goodman has joined. 03:26:53 And, of course, 0nΩ = n, as omegoids are non-associative and non-commutative 03:27:28 In fact, the total set of numbers in the #esoteric calculator will have absolutely no consistent properties 03:27:52 that's pretty lame 03:27:56 myname: Why? 03:28:03 you could jusr output a random string, then 03:28:04 myname: The lack of properties, or Ω? 03:28:14 myname: No, subsets will have consistent properties 03:28:26 i would at least make some xonsistent modell that it will obey 03:28:33 Yeah, good poitn 03:29:48 myname: Should I just limit the weird constants to ijk@? 03:30:30 you can add whatever constant you like, just make sure to define the basic group operations on them 03:31:11 myname: Ah, that works 03:31:14 also, time to sleep 03:31:17 OK 03:31:31 hola 03:33:17 <\oren\> so today I found out that the .shp file format's .dbf metadata format is a dBase IV file 03:34:28 <\oren\> so that means that most GIS packages that can read such files, contain implementations of an MS DOS database 03:36:28 <\oren\> (unless they ignore the metadata, that is) 03:40:11 -!- Lilly_Goodman1 has joined. 03:40:45 -!- Lilly_Goodman has quit (Ping timeout: 248 seconds). 03:53:44 -!- nooga has joined. 03:58:01 -!- nooga has quit (Ping timeout: 240 seconds). 04:19:57 -!- MDead has joined. 04:20:09 -!- MDude has quit (Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/). 04:20:15 -!- MDead has changed nick to MDude. 04:24:20 -!- treaki_ has joined. 04:24:53 http://t3x.org/klong/index.html oh, another APL-esque small array language. 04:26:40 -!- treaki__ has quit (Ping timeout: 252 seconds). 04:27:25 http://thedailywtf.com/articles/The_Call_of_Codethulhu 04:28:45 still waiting for the language where you can go vector[$n] += table[$m][n] and it gets compiled as for(int m=0; m that's like einstein notation isn't it 04:30:24 I just want C++ except without having to type so much everytime I want to loop over something 04:30:26 Perl 6 has a feature that's reminiscent of that but isn't the same 04:31:24 some languages have foreach but it's more limited and often kindof a performance hog 04:31:54 like it's defined in really abstract ways like inheritance and generics and generators 04:32:25 instead of just something simple 04:34:30 <\oren\> well like I always have said, they should have built std::string and std::vector into the C++ compiler 04:34:33 -!- hppavilion[2] has joined. 04:34:35 yes 04:35:00 and, debatably, std::map 04:35:22 <\oren\> oh, yes, at least when the key is any builtin type 04:35:40 hm 04:35:58 a lot of the std::maps I've used have a struct{} as a key 04:36:20 there's also the std::string as key which is a classic 04:36:32 <\oren\> ok, any type where the < operator is autogenerated 04:36:47 <\oren\> and string would count as builtin. 04:36:54 -!- hppavilion[1] has quit (Ping timeout: 244 seconds). 04:37:11 <\oren\> (wait, is the < or == operator autogenerated for structs?) 04:37:21 don't think so :3 04:37:35 <\oren\> i could have sworn you can == structs in C? 04:37:35 and I would've had to override it possibly too 04:37:40 You can't. 04:37:42 \oren\: you can't 04:37:44 = works, == doesn't 04:37:55 you also can't memcmp them safely, in case they have padding bits 04:38:00 so you need to compare field by field 04:38:16 "in case they have padding bits" 04:38:22 that's almost always no? :D 04:38:22 that said, == is normally a dubious operation on structs anyway unless they're very simple 04:38:37 mad: struct {char x; int y;} will have padding bits on the majority of compilers 04:38:37 mad: It's fairly common for structs to have padding *bytes*. 04:38:51 also some stucts can have no padding bits in 32bits but do have them in 64bits 04:38:52 -!- Lilly_Goodman1 has quit (Ping timeout: 260 seconds). 04:38:56 it's a recipe for disaster 04:39:00 pikhq: and of course, bitfields that don't add up to a multiple of CHAR_BIT bits will have padding bits out of necessity 04:39:05 Yup. 04:39:20 <\oren\> Well, what if you memset the struct every time you make one? 04:39:34 \oren\ : some people do that 04:39:46 like the first step of the constructor is memset 0 on itself 04:39:49 I don't think the compiler's guaranteed to not mutate the padding bytes. 04:40:04 well 04:40:16 if it does a copy logically it would probably not copy the padding 04:40:31 though it could do that 04:41:14 tbh I think they should change the standard so that the compiler can reorder the fields of your struct 04:41:50 except if it's #pragma pack(push, 1) 04:42:06 actually that should be a language feature 04:42:12 <\oren\> that would render most embedded C code inoperable and cause countless manhours of work 04:42:17 like you'd have struct/class{} 04:42:56 and then struct exactlayout(littleendian) {int x; char q; int y; float z;} 04:43:12 <\oren\> I think compiler writers should think less about what they're allowed technically to do and more about what is least likely to cause new problems in existing code 04:44:17 basically right now, "who cares" layout classes/structs are conflated with basically structs used for loading exact byte layouts from files 04:44:56 with the unfortunate effect that the day you need a big endian port, you get some super grody byte reordering code all over the place in your binary file loader 04:46:42 and the other unfortunate effect that it encourages putting pointers in exact byte layout structs and having it break in 64bit ports 04:47:44 I also think they should make char officially 8bits, short 16bits and int 32bits except in like specialized embedded C for DSPs with 24bit accumulators 04:48:13 it's not like it's going to change from now on 04:48:55 <\oren\> mad: yes, I am all for making the formal standard more in line with the informal standard most C programmers write for. 04:48:57 its time for a standardized safe and common sense C standard for practical targets. 04:49:26 Of course, float's semantics don't even match what most C programmers think it is on common practical targets. 04:49:35 and it would help clamp down on int8_t/uint8_t/int16_t/uint32_t/etc and vox::s32/vox::s16/vox:u8/etc and GLUINT8/GLINT32/etc and the million variations 04:49:37 focusing on ILP32 and LP64 04:49:59 (the result of adding a float and a float is a float_t, not a float. :)) 04:50:38 <\oren\> pikhq: I thought it was a max-size float for the target, e.g. a long double on x86 04:50:47 No. 04:51:16 <\oren\> which is then rounded to whatever type you assign it to 04:51:17 On x86_64, float_t is float. 04:51:53 newsham : you forgot LLP64 04:51:58 It's more-or-less the type that the underlying hardware performs the addition as. 04:51:58 (!) 04:52:38 <\oren\> pikhq: well tbf, if C is readable assembler that makes perfect sense 04:52:46 mad: nah, we can just euthenize those ;-) 04:53:02 It's actually necessary to get reasonable floating point semantics. 04:53:03 pikhq : I as of now there's just no alternative to accepting that consistent float is impossible 04:53:25 newsham : good luck convincing the msvc guys to give up on 32bit long :( 04:53:40 since when has msft cared about std compliance? 04:53:57 The basic floating point operations in a good C implementation are *exactly rounded*. 04:54:01 <\oren\> oh, I use long long anyway when I want 64 bits 04:54:06 newsham : I care about msvc vs gcc/llvm complience 04:54:12 standard I couldn't care less about 04:54:26 Having float_t and double_t is necessary to avoid double rounding. 04:54:28 <\oren\> so my scale usually goes char short int long long 04:54:32 what adds to my work day is every time msvc and gcc can't agree on something 04:54:45 doesn't matter which way the difference get resolved 04:54:47 -!- nooga has joined. 04:55:22 <\oren\> mad: wait but doesn't adding to your work day add to your salary? 04:55:27 float_t and double_t are types declared in math.h. They're the types that float and double operations are performed as. And yes, MSVC provides it. 04:55:32 <\oren\> indirectly 04:55:39 Using them gets you a long damned way towards consistent float. 04:55:56 \oren\ : it adds to my hair pulling and frustration 04:56:26 <\oren\> well iff pulling your hair is what you're paid to do... 04:56:28 well, normally I care way more about fast float than consistent float 04:56:49 so I actually want the compiler to play cowboy with rounding 04:57:12 but I know that if I ever one consistent float it's not happening 04:57:52 the fact that modern architectures are turning towards "denormals replaced with zero" doesn't add to consistency either :D 04:58:24 <\oren\> exact calculations should be done with fixed point anyway 04:59:01 \oren\ : I'd rather pull my hair doing something useful for society rather than making sure "long" never appears anywhere ever :D 04:59:07 -!- nooga has quit (Ping timeout: 244 seconds). 05:00:00 \oren\ : that's how they're usually handled yes 05:00:43 one that kinda pisses me off 05:00:49 Using floating point (and understanding its semantics) is very useful if what you actually need is calculations with an error bar. 05:00:58 -3 / 2 = -1 05:01:02 -3 >> 1 = -2 05:01:26 <\oren\> fortran formats has a cool feature that C scanf/printf doesnt 05:01:27 pikhq : yeah that's basically my day job :D 05:01:43 Then how do you not know float_t and double_t? 05:01:45 <\oren\> the ability to have 10.05 read as 1005 05:01:53 <\oren\> and then write it out as 10.05 05:02:03 also, (int)(-0.5) = 0 is EVIL 05:02:05 Your analysis is gonna be all wrong if you assume double rounding happens all over the place... 05:03:21 you should realize that floating point number is not your typical real number 05:03:43 pikhq : well, I knew that the compiler uses long double for the actual computations on the x87 fpu 05:04:05 I didn't knew there was a data type for it 05:04:32 Yeah, very handy if you need to specifically store the result of a calculation without the possibility of added rounding. 05:04:44 yeah that's not a problem in my field 05:04:45 <\oren\> but when doing those new 3d extensions for floating point, it doesn't do long double 05:04:58 for sound, float is good enough 99.9% of the time 05:05:13 <\oren\> so the actual rounding depends on what instructions the cpu uses for it 05:05:19 so generally I don't really care when the compiler upgrades it to long double 05:05:30 <\oren\> but I thought it always promoted it to at least double 05:05:53 \oren\ : ah no 05:06:09 Ah, *sound*. Okay, yeah, even really absurdly high errors with float are minimal and irrelevant. 05:06:11 the promotion is really just because the x87 fpu forces promotion if you want any kind of perf 05:06:23 <\oren\> ah 05:06:27 The x87 fpu forces promotion period. 05:06:35 yeah 05:06:53 if you want non promotion you have to store/load the value after calculation 05:07:11 And that's actually going to give you incorrect results. 05:07:20 Because it double rounds. 05:07:32 oh 05:07:48 which means you just can't do the exact spec operation on x87? :D 05:08:04 you also have precision control flag that's *almost* as good but it actually doesn't limit the exponent range, afaik 05:08:46 Yep! 05:09:14 afaik llvm on iphone uses the SIMD unit floating point for float code 05:09:18 If you want to get exact-rounded float or double addition on x86, you need to use SSE or software floating point. 05:09:27 which has flushing denormals to zero (!) 05:10:29 ie if you compile float code on IOS it doesn't even follow the IEEE spec 05:11:48 mad: I thought that was an option, rather than something that always happened 05:11:49 That's surely if you don't have the -std=c99 or similar flag. 05:12:17 FWIW GCC or LLVM do not conform to IEEE without a strict conformance flag. Period. 05:12:19 ais523 : it depends on which floating point operations you use I think 05:12:31 They aren't -ffast-math broken, but they don't conform. 05:12:44 -ffast-math is broken? :D 05:12:54 pikhq: mad: -ffast-math is /intentionally/ broken 05:13:01 -ffast-math is -fbreak-my-math. 05:13:04 ais523: I'm aware. 05:13:05 in that it doesn't attempt to be remotely IEEE conforming 05:13:13 what does it do? 05:13:14 <\oren\> I always use -ffast-math 05:13:37 <\oren\> It basicallydoes things fast but often wildly wrong 05:13:48 mad: It permits essentially any algebraically justified expression changes with no care for preserving precision whatsoever. 05:13:51 define "wildly wrong" 05:14:14 pikhq : in my field, that's _good_ 05:14:21 <\oren\> but I used it to comile my game, and there I only requred chunkily correct results 05:14:33 And this is exactly why it's an option. 05:14:42 <\oren\> chunkily being the superlative of roughly 05:15:00 Because some users of floating point give approx. zero shits about floating point semantics. 05:15:03 if I start seeing wrong results I just upgrade all the variables involved from float to double 05:15:05 kdone 05:15:18 [wiki] [[A:;]] https://esolangs.org/w/index.php?diff=46638&oldid=43250 * 27.33.99.249 * (+197) 05:15:20 <\oren\> double is often faster 05:15:32 <\oren\> in my experience anyway 05:15:33 \oren\ : heh really? 05:15:45 wanna see proof of that 05:16:08 I've definitely seen lots of cases where it's "not slower", I admit 05:16:25 IIRC, without -std=c99, when GCC flushes a floating point computation to the stack it stores a float instead of a float_t. 05:16:39 Meaning your rounding behavior is at the whims of the compiler on x86. 05:16:48 pikhq : yes that's a given 05:17:01 ... Which is why people think floating point has horribly inconsistent magical behavior. 05:17:11 when does rounding behavior matter? 05:17:35 aside from trying to do something stupid like if(3 == 3.f * (1.f / 3.f)) 05:18:09 mad: rounding behavior does accumulate over series of FP ops 05:18:14 <\oren\> this game also used the ++ operator on a double 05:18:27 When you're trying to write code which computes results with a provable error range. 05:18:28 lifthrasiir : not if it's a series of addition 05:18:32 i.e. science. 05:18:46 lifthrasiir : then you get essentially the precision of the worst part of the addition 05:19:07 (the ability to do exactly this on common implementations is why FORTRAN is popular) 05:19:09 <\oren\> pikhq: go back to fortran from whence thee came 05:19:21 <\oren\> jinx! 05:19:24 ah yeah, if you want provability..... 05:19:42 Which you can do in ISO C, but sure as hell can't in GNU C. 05:19:49 <\oren\> I actually used fortran in one course 05:20:08 Though, you can do it with GCC on glibc, so there's that at least. 05:20:14 <\oren\> it was a "programming for science" bassicaly course 05:20:15 mad: even when you sum numbers of similar magnitudes, the error eventually ensues 05:20:42 we have a good pile of algorithm for just summing FP numbers (Kahan summation, pairwise summation etc) 05:21:08 lifthrasiir : suppose all your numbers are from -1..1 and the sum never goes over -1..1, then you're guaranteed a precision of at least 1/16million 05:21:33 basically as long as the exponent never grows, it's equivalent to 24bit fixed point 05:22:33 by precision you meant abs(real_sum - computed_sum) <= abs(real_sum)/2^24 ? 05:22:42 I mean 05:24:12 abs(real_sum - computed_sum) <= abs(real_sum)/2^24 + SUM_OF_ALL( abs(sum_term[x] - closest_valid_float) ) 05:25:19 basically for the error that happens between your individual term of your sum and a 32bit float value, you have no guarantee against that 05:25:49 if your values are systematically very slightly biased so that, say, it always rounds up or down.... it can't do anything about that 05:26:02 or actually the guarantee is lower than that 05:26:39 it's not against the closest float but rather the closest float at current precision of the sum variable 05:27:03 how to put this 05:27:15 basically float never does worse than 25bit fixed point 05:27:47 does that make sense? :D 05:28:56 but if you're doing infinite sums then you can easily get some systematic biasing and then you'll need a fancy algo yes 05:30:10 mad: (was afk) I had a feeling that you are saying that the error is irrelevant on your condition. I guess my interpretation was wrong (it is more about, uh, "insignificant") 05:30:51 yeah for sound and video games, you don't typically do infinite sums in the way that will mess up things 05:31:06 or rather you rarely do infinite sums at all 05:32:47 looking up https://en.wikipedia.org/wiki/Kahan_summation_algorithm 05:32:55 hmm 05:33:28 basically you're taking the part of the sum that wasn't taken along in the sum and keeping that in a second sum variable 05:33:30 clever 05:34:01 though I guess it's kindof like turning a 32bit float into a 64bit float 05:34:31 so I guess at first you'd switch from float to double, and then as a second step you'd put in that algo 05:36:05 I've used a similar algo once in a filter 05:37:12 basically because 16bit fixed point isn't enough for a filter so I added an error accumulation variable to more or less make it 32bits 05:40:03 -!- lambda-11235 has quit (Quit: Bye). 05:46:08 I guess if all your floating point is in double and even then it's not cutting it in terms of precision then you're in that case 05:51:48 mad: the same idea is also present in the Bresenham line drawing algorithm, the idea seems to be fairly universal 05:52:39 well, yeah 05:53:07 it's basically the equivalent of doing 64bit addition on a 32bit cpu 05:53:15 by doing ADD and ADC 05:55:38 -!- nooga has joined. 06:00:05 -!- nooga has quit (Ping timeout: 244 seconds). 06:10:21 https://github.com/twbs/bootstrap/issues/3057 06:10:23 Words fail me 06:14:17 <\oren\> christ 06:14:44 <\oren\> omg, look at the fucking scroll bar on that thread?! 06:14:50 Sgeo__: oh lol 06:14:56 http://wiki.ecmascript.org/doku.php?id=strawman:concurrency and it is a legitimate proposal 06:15:30 so every new expression syntax risks breaking the existing JS code and thus the Web(tm) 06:17:04 https://tedcruz.lgbt/ 06:20:44 Sgeo__: that thread is beautiful, /both/ sides have an argument that's clearly stupid 06:20:48 so I'm not sure which one I'm supporting 06:21:35 Don't minifiers habitually break valid code anyway? 06:21:43 that said, I suspect the jsmin side of the argument is stupid because JS is stupid 06:21:48 e.g. code that relies on a function's name 06:21:53 rather than stupid in its own right 06:22:51 And AngularJS does that, and so has a workaround to allow it to be minified. And forgetting to use that workaround does not mix with upgrades that minifier group wrongly thinks is backwards compatible 06:24:20 https://github.com/mishoo/UglifyJS2/issues/121#issuecomment-92522991 06:25:18 Hmm, maybe minifier != uglifier 06:25:48 clearly we need maxifiers; we have beautifiers 06:27:13 "fwiw, this was patched in bootstrap way before i even encountered this issue - otherwise i wouldn't have closed it outright." 06:27:34 looking at that js concurrency proposal 06:27:35 This after 23 million forks of both projects are made 06:27:52 is that thing even technically possible? 06:28:41 ais523: I feel the entire discussion is reasonable *and yet* stupid 06:28:42 I'm not familiar with js but I was under the impression that it was more or less designed against concurrency 06:28:59 I know that the automatic semicolon insertion is required for compatibility. but we need it *only* for compatibility! 06:29:41 TC39 should have limited the scope of automatic semicolon insertion 06:29:52 "Semicolons cause an equal amount of debate in English grammar circles and although it's yet to be proven I believe they partially caused the first World War. 06:29:52 " 06:30:07 so that ! won't never start a sentence when preceded by a newline 06:30:16 s/sentence/statement/ 06:30:22 (thank you Sgeo__ for the source of confusion) 06:30:52 Saw it on https://www.reddit.com/r/ProgrammerHumor/comments/4bf5kv/thanks_jslint_ill_tick_that_one/ 06:30:55 come to think of it, JSFuck makes a pretty good maxifier 06:34:14 you know, I really like the suggestion of using x || y rather than !x && y 06:34:29 it seems to have all the advantages of the original, and one less downside 06:34:40 it is still a bad choice, but isn't bad in any way the original wasn't 06:35:06 if (!x) y; 06:35:19 and then we would someday have an expression containing if 06:35:25 ruining everyone 06:37:51 clearly we need Perl's if statement modifier 06:37:56 it looks like this: "a if b;" 06:38:03 where a is a statement and b is an expression 06:38:28 it would be a if (b); 06:38:42 thanks to the orthogonality 06:39:23 I was never a fan of the semicolon 06:39:56 it's acceptable in two level lists (1a, 1b, 1c; 2a, 2b; 3a, 3b) 06:40:19 but to me it practically doesn't make sense in "grammar" 06:40:32 OCaml has semicolon as list separator, comma as tuple separator 06:40:43 and [a,b; c,d; e,f] is a list of tuples 06:41:00 ([a,b,c; d,e; f,g] is a type error) 06:41:41 and double semicolons as unit separator 06:42:50 kinda wonder 06:42:54 lifthrasiir: I originally misinterpreted that as () being unit, (;;) being a particularly bulky way to write unit 06:42:57 why you have to use shift to get : 06:43:02 and you naturally get ; instead 06:43:03 ais523: lol 06:43:07 isn't : more common? 06:43:10 there's some debate about what the purpose of ;; is in actual (non-interactive) OCaml code 06:43:11 ais523: in fact I was not sure about the naming 06:43:22 that is, the name of what is separated by ;; 06:43:29 as in, its purpose in the OCaml repl is clear 06:43:33 but not in actual code 06:43:54 most OCaml programs don't have a ;; anywhere 06:43:56 ais523: isn't that the type inference boundary? it might not have a value though. 06:44:05 (mostly I use it to make parse errors give more precise line numbers) 06:44:19 lifthrasiir: why would you want to place limits on type inference? 06:44:35 I think most Haskell programs don't have ; and {} anywhere. 06:44:49 ais523: not much, but may simulate multiple files of code into a single code without altering anything 06:45:00 not to say that it is useful :) 06:46:02 someone in girl genius needs to improve their haggling. 06:46:26 whoa whoa whoa 06:46:30 `gglist 06:48:14 rob ford is dead :o 06:50:05 "i'm not glad he's dead but i'm glad he's gone" 06:54:15 -!- AnotherTest has joined. 06:55:32 shachaf: records? 06:55:52 oerjan: I guess so, but that's just a pun. 06:56:10 -!- nooga has joined. 06:57:26 huh? 06:57:51 (also, `gglist is too regular to have a *list. it's even back to morning schedule...) 06:58:30 -!- AnotherTest has quit (Ping timeout: 244 seconds). 06:58:36 it's a list of good games hth 06:58:48 O KAY 06:58:55 oerjan: I mean that it's the same character being used in a different context syntactically. 06:59:52 perhaps. you cannot even use it with layout... 07:00:37 -!- nooga has quit (Ping timeout: 260 seconds). 07:22:30 -!- ais523 has quit (Quit: food). 07:31:11 is there anything that people hate less as they use it more, rather than hating more?” => yes, software with an initial learning curve like gimp 07:33:20 the most confusing thing is that, by default, it accesses your primary connected tape driver” => no way. these days it accesses stdin or stdout by default instead. 07:50:57 -!- ais523 has joined. 07:51:03 is there anything that people hate less as they use it more, rather than hating more?” => yes, software with an initial learning curve like gimp 07:51:12 the most confusing thing is that, by default, it accesses your primary connected tape driver” => no way. these days tar accesses stdin or stdout by default instead. 07:51:13 ugh, can you seriously not do rank 2 polymorphism in ocaml? 07:51:24 b_jonas: how do you access your tape drive then? 07:52:27 ais523: You have PolymorphicComponents, at least, right? 07:52:41 ais523: try it the C++ standard library way: make it polymorphic on a rank 1 type that has an associated type (or member type or something) with a rank 2 type, and give the type explicitly instead of inferring it. 07:52:46 shachaf: what does that mean? I'm not sure what that name refers to 07:52:57 Polymorphic fields in records. 07:53:23 ah, hmm 07:53:32 it's quite likely, given that OCaml has OO 07:55:26 It's better than nothing, though not allowing rank-2 types is pretty scow if you ask me. 07:56:45 here's a minimal example of what I'm trying to do, constructed for #ocaml: let g (f : 'a -> unit) = (f 1; f "a") 07:57:04 -!- nooga has joined. 07:58:24 -!- J_Arcane has quit (Ping timeout: 244 seconds). 07:58:35 So can you write type t = { f : 'a . 'a -> unit }, and then let g x = (x.f 1; x.f "a")? 07:58:45 I don't know OCaml syntax. 08:01:08 shachaf: according to #ocaml, yes; I'm not very good with records yet though 08:01:14 so I'm waiting for them to tell me the syntax :-) 08:01:23 ais523: try template void g(H f) { f(1); f("a"); } that is, H is a concrete type that has a rank 1 type member operator() 08:01:39 -!- nooga has quit (Ping timeout: 268 seconds). 08:02:13 ais523: Doesn't the syntax I used work? 08:02:21 shachaf: it does 08:02:25 OK, problem solved 08:02:26 ais523: anything that tries to pass f as a rank 1 type value with stat directly won't work, because you can't have *values* polymorphic 08:02:40 in C++ that is, I don't really know ocaml 08:03:21 right, that's the same as what shachaf says I think 08:04:11 b_jonas: That's more duck typing than rank-n polymorphism, I think. 08:05:14 shachaf: it's also duck typing because you can't verify that f really compiles on all types of x, only that it works on int and string 08:06:08 shachaf: C++ templates have straight rank 2 polymorphism, but only on the template level, not the value level, because you can't have a straight rank 1 value, so in the end almsot nobody uses that feature 08:06:21 it's called template template templates are great 08:06:34 yes, I know 08:06:44 they even get you to syntax troubles 08:07:58 What more can you want from a language feature? 08:09:13 I was unaware of the 'a. syntax in OCaml, and it's weird that it only works inside records 08:09:49 especially as the compiler seems to be able to handle the type of the record field after destructuring 08:10:17 In more than one context? 08:10:24 Well, that's not really that surprising, I guess. 08:10:51 Do you have a function that constructs a record in OCaml, like you do in Haskell? 08:10:58 If so that function would be rank-2. 08:12:34 the record constructor looks like {f=f} 08:12:53 but if you try to write it as a function, "let make_f f = {f=f}", type inference fails 08:13:18 because it can't infer the polymorphic type for the function argument 08:13:26 Makes sense. 08:13:43 that's pretty much as in ghc haskell, unless you provide an explicit type signature 08:13:55 GHC has the extension PolymorphicComponents for a similar feature, but it also makes a record constructor which is an actual rank-2 function. 08:14:03 right, the only difference with OCaml is that it doesn't let you provide the type signature 08:14:12 In practice PolymorphicComponents and Rank2Types and RankNTypes are all synonyms these days. 08:14:24 right, we discussed that a while back 08:14:47 the difference being that Rank2Types are inferrable (mathematically, ghc can't do it), RankNTypes aren't 08:14:58 Right. 08:15:03 and in ghc, _existential_ types still require destructuring something. 08:15:12 this is the only advantage to rank 2 types, I think 08:15:17 that they're decidable 08:15:18 I remember you gave some justification for that, which was something like you can do whole-program inference but not local inference. 08:15:30 it's a while since I read the papers 08:15:32 (For rank-2 types.) 08:15:57 Whole-program type-checking seems to me like it almost defeats the purpose of type-checking. 08:16:03 istvr rank-2 isn't inferrable, just checkable: you don't have principal types 08:16:42 Isn't that true of Rank-N? 08:17:02 The advantage of rank-2 types over rank-n, people usually claim, is that you can do inference. 08:17:30 And I think ais523 said that you can do whole-program inference (so you don't need principal types) but I'm not quite sure on that. 08:18:02 -!- hppavilion[2] has quit (Ping timeout: 244 seconds). 08:18:08 yes, there's an algo for whole-program inference somewhere 08:18:12 let me see if I can find the paper 08:18:54 http://dl.acm.org/citation.cfm?id=182456 08:18:58 shachaf: i don't think rank-N is checkable without explicit types, or else system F would be 08:19:04 not sure if it's publicly available via the ACM 08:19:15 oerjan: Oh, I thought you meant checkable with explicit types. 08:19:29 althoug even if it isn't, there might be copies floating around elsewhere (e.g. authors' website), there often are 08:19:48 nah with enough explicit types it's obviously checkable, that's just what core is. 08:19:54 Available for a token fee of $15. 08:19:56 "obviously", he said. 08:20:02 shachaf: that's a ridiculous price 08:20:17 You can also pay $3 for 24 hours of access apparently. 08:20:17 although, it's actually much cheaper than the "typical" price that these organizations charge… 08:20:35 "View-only access for 24 hours" 08:20:39 the usual trick of googling the title seems to work anyway 08:20:47 I wonder how much you pay to be able to modify the paper. 08:21:21 only your very soul, shachaf 08:22:25 apparently the ACM have a program which allows you to specify one referer that's able to view the paper for free 08:22:51 the idea being that you link to their site from your website, and people who reached the site like that can see the paper 08:23:54 * oerjan read that as "one referee" 08:24:18 it almost made sense at first 08:24:23 shachaf read that as "one referer". shachaf read good. 08:24:27 (this presumably doesn't lose them any money, because authors who want to make their papers generally available normally just post the preprints, which doesn't violate ACM's copyright) 08:24:41 hmm, it's interesting that "referer" has now become a word, and has a more precise meaning than "referrer" 08:25:07 now we need to work on referree 08:25:34 Hmm, that pun doesn't work at all for the same ambiguity that makes it possible. 08:25:35 bleh, all these paper publishers sites are at least mildly evil (except for probably arxiv), but I can't be mad at ACM 08:25:40 they're at least trying to be reasonable 08:28:39 of course arxiv is evil they won't publish my REVOLUTIONARY QUANTUM CHEESE THEORY 08:29:20 @yow! 08:29:22 Yow! Are you the self-frying president? 08:29:51 @yow 08:29:51 So, if we convert SUPPLY-SIDE SOYABEAN FUTURES into HIGH-YIELD T-BILL 08:29:52 INDICATORS, the PRE-INFLATIONARY risks will DWINDLE to a rate of 2 08:29:52 SHOPPING SPREES per EGGPLANT!! 08:29:52 spontaneous combustion in the white house 08:30:42 btw if you can find a zippy comic with dialogue starting with Z, b_jonas is interested hth 08:31:02 * oerjan goes back to stalking forums again 08:31:19 (actually, any panel with such dialogue) 08:33:45 the second-order &lgr;-calculus 08:34:11 what's &lgr; 08:34:24 Probably the greek letter lambda? 08:34:51 It could be the Lagrangian calculus, I guess. 08:35:32 'fraid it's actually λ 08:35:48 Well, that's on the page ais523 linked to. 08:36:15 there might be more than one entity for the same letter? 08:37:05 that might explain why it doesn't show up right 08:37:07 Or maybe λ is for LATIN SMALL LETTER LAMBDA WITH STROKE 08:37:41 Whereas &lgr; is for one of the LAMDA characters, which are much more prevalent in Unicode. 08:38:59 ok https://www.w3.org/TR/xml-entity-names/bycodes.html has both 08:41:26 i suppose the &lgr; escaped due to insufficient escaping. 08:41:38 no wait 08:41:43 too much 08:57:50 -!- nooga has joined. 09:02:19 -!- nooga has quit (Ping timeout: 260 seconds). 09:03:03 oerjan: no, it's more like whoever invented that requirement is interested. 09:04:02 @@ (@pinky) / (@brain) 09:04:02 I think so, Brain, but if they called them 'Sad Meals', kids wouldn't buy them! / It must be inordinately taxing to be such a boob. 09:04:11 @@ (@brain) / (@pinky) 09:04:12 Be quiet Pinky, or I shall have to hurt you. / I think so, Brain, but how would we ever determine Sandra Bullock's shoe size? 09:12:08 @yow president 09:12:08 On the other hand, life can be an endless parade of TRANSSEXUAL 09:12:08 QUILTING BEES aboard a cruise ship to DISNEYWORLD if only we let it!! 09:12:26 doesn't seem useful for searching 09:12:56 @brain 09:12:56 It is here that my cheap workforce of trained iguanas will work 09:12:56 night and day to make our shoes to my exacting specifications! 09:14:25 what's with the newlines? 09:14:36 adding random newlines on IRC is like adding random commas in regular English 09:14:59 the second quote it's not too bad, a comma /almost/ works there (it doesn't work but it's not too jarring) 09:15:03 the first quote it's terrible though 09:15:10 -!- lynn has joined. 09:15:42 I think these come from fortune. 09:15:53 Maybe it wraps to 80 columns? 09:23:19 -!- lynn has quit (Ping timeout: 260 seconds). 09:25:12 -!- nooga has joined. 09:31:05 -!- lynn has joined. 09:33:01 -!- oerjan has quit (Quit: Nite). 09:36:28 -!- AnotherTest has joined. 09:44:43 google "gimp masks" 09:50:23 -!- ais523 has quit. 09:58:48 -!- bender| has joined. 10:03:17 izabera: nice prank. 10:16:28 -!- hydraz has quit (Ping timeout: 252 seconds). 10:19:01 -!- hydraz has joined. 10:19:01 -!- hydraz has quit (Changing host). 10:19:01 -!- hydraz has joined. 10:21:38 -!- AnotherTest has quit (Ping timeout: 268 seconds). 10:21:39 -!- nooga has quit (Ping timeout: 260 seconds). 10:35:40 -!- boily has joined. 10:36:01 -!- heroux has quit (Ping timeout: 244 seconds). 10:39:42 Good morning 10:39:54 I've had a v ery nice sleep 10:40:11 13 hours, plus a two hour nap I had yesterday evening before dinner 10:41:38 Tanelle. good morning! that's a nice sleep. 10:45:10 -!- heroux has joined. 10:55:27 @tell oerjan I AM THE PRETTIEST FROG IN THIS ENTIRE POND!! 10:55:27 Consider it noted. 11:02:33 -!- bender| has quit (Read error: Connection reset by peer). 11:09:56 boily: as long as you don't anybody to pick you up and throw you against a wall so that you can reemerge as a prince... 11:10:06 ... don't -> don't expect 11:13:01 int-ello. I wouldn't dare to expect less. 11:13:26 Maybe it's time to bring up http://jokes.cc.com/funny-work/k7op88/the-engineer-and-the-frog 11:15:28 :D 11:15:43 @metar CYUL 11:15:44 CYUL 231100Z VRB02KT 6SM -SN OVC040 00/M01 A2991 RMK SC8 /S01/ PRESRR SLP132 11:22:24 -!- boily has quit (Quit: BET CHICKEN). 11:43:35 -!- bender| has joined. 12:09:39 Is there a triINTERCAL-like language that is binary but the words are 18 and 36 bit long instead of 16 and 32 bit, so that it's easier to interpret on a 18-bit computer? 12:13:39 -!- jaboja has joined. 12:16:42 so... a PDP INTERCAL 12:17:17 (I'm confused by the reference to *tri*INTERCAL) 12:17:40 and no, I don't know of any such thing 12:17:46 int-e: triINTERCAL has variants with different digit sizes and different number of digits per word 12:18:15 so I presumed one with 18 bits could be a special case 12:19:14 oh, I only knew the obvious variant with 10 and 20 trit words 12:20:14 because "tri" refers to ternary... and because those neatly fit into 16 and 32 bits, respectively 12:21:07 int-e: yes, but I believe the canon is that base 4, base 5, base 6, and base 7 variants are also called triINTERCAL 12:21:15 or maybe TriINTERCAL 12:22:47 `? TriINTERCAL 12:23:16 TriINTERCAL? ¯\(°​_o)/¯ 12:34:17 -!- jaboja has quit (Ping timeout: 260 seconds). 12:45:41 "The ick compiler actually recognizes filename suffixes of the form '.Ni', where N is any number from 2 to 7. 2 of course gives standard INTERCAL, while 3 gives TriINTERCAL." <-- they didn't give any name to the higher base variants 12:47:15 -!- Sgeo__ has quit (Ping timeout: 244 seconds). 12:47:41 -!- AnotherTest has joined. 12:56:35 -!- AnotherTest has quit (Ping timeout: 248 seconds). 13:01:39 int-e: I mean canon for C-INTERCAL, see http://c.intercal.org.uk/manual/qk5q4hrh.htm 13:06:10 I was quoting from http://web.archive.org/web/20080207035637/http://www.progsoc.uts.edu.au/~sbg/intercal/ick5.html#5.6 13:06:48 int-e: ok, but I think the C-INTERCAL docs supercedes it, given that it's actually maintained 13:07:26 it's funny because ick *is* C-INTERCAL, just before ais took over... 13:08:06 but my main objection is that Tri means three and therefore shouldn't refer to other bases, documentation be damned. 13:14:18 int-e: what do you call the decimal point inside a hexadecimal number representation like 0x1.6db7p+0 ? 13:21:23 Komma. 13:22:12 (some call it "radix point") 13:22:37 why can't it just be "point" 13:44:03 -!- Guest25470 has joined. 13:52:50 -!- nooga has joined. 13:57:35 -!- dingbat has joined. 14:00:25 <\oren\> a he x point 14:00:31 <\oren\> hex point 14:03:13 good point. it's easier in german 14:05:00 -!- nooga has quit (Ping timeout: 276 seconds). 14:07:19 -!- ais523 has joined. 14:07:54 anyone here with a 170-column wide Linux fbcon terminal on ctrl-alt-f1? 14:07:58 try this: for x in {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}0{0,1,3,5,7,8,A,C,E,F}0{0,0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}0; do printf "\x1b]P1$x\x1b[31m#"; done; printf "\x1b[0m\n" 14:08:07 on a clear screen 14:08:12 then keep repeating it until the screen scrolls 14:08:20 I am not sure if this is a bug or a feature 14:08:32 (b_jonas: you in particular might be interested in the results) 14:08:35 -!- Xe has quit (Ping timeout: 250 seconds). 14:09:01 -!- jameseb- has quit (Ping timeout: 250 seconds). 14:09:20 -!- tromp has quit (Read error: Connection reset by peer). 14:09:27 -!- JX7P has quit (Ping timeout: 250 seconds). 14:10:15 -!- tromp has joined. 14:12:29 -!- treaki_ has quit (Ping timeout: 250 seconds). 14:13:47 -!- me2 has quit (Ping timeout: 250 seconds). 14:13:47 -!- catern has quit (Ping timeout: 250 seconds). 14:14:35 -!- IRIXUser has joined. 14:15:00 -!- IRIXUser has changed nick to Guest87521. 14:15:01 -!- jameseb has joined. 14:15:21 (you could adapt it to work at other screen sizes too, but that one's based around 170 which is the width of the terminal on my screen) 14:15:54 ais523: palette cycling? 14:16:03 -!- treaki_ has joined. 14:16:06 b_jonas: right, we change the palette every character 14:16:12 I don't have a linux text console here to try, but I might try at home 14:16:20 and this somehow gives us more colours than the linux console can normally display 14:16:44 it seems that if you give linux a 256-color or truecolor code, it parses it, then substitutes the nearest 16-color entry 14:17:02 and the "nearest" substitution is based on some rule I'm unsure about but it doesn't seem related to the palette 14:17:13 -!- Xe has joined. 14:17:17 but, OTOH, you can get arbitrarily many colours by changing the palette, as long as the screen doesn't scroll 14:17:33 this feels more like an accidental feature than an intentoinal one 14:20:44 -!- me2 has joined. 14:21:01 ais523: I don't know if it's accidental, but I like it. this means there are 16 (or so) logical colors, the user is in control of their actual presentation, and if stupid programs that don't like this ask for more colors than that, then the console falls back to a nearby console 14:21:28 b_jonas: well the annoying thing for me is 14:21:31 ais523: that the palette can be controlled by an escape sequence rather than only an ioctl is probably a historical accident too ltae to fix now 14:21:36 linux console fallback breaks any attempt to do unparsable-code fallback 14:22:05 oh, actually, it's OK 14:22:10 linux console can't parse the colon-based codes 14:22:25 the semicolon-based codes are dangerous so I don't want to use them without user authorization 14:22:37 and it's the semicolon-based codes that break here, just in a different way from normal 14:25:01 -!- catern has joined. 14:26:38 but THOSE count as "deliberate gameplay changes" and so can't be applied. but if coppro or you change something that deliberately change the gameplay and I complain about it, it's ok 14:26:42 see why I'm angry 14:26:48 argh 14:26:50 wrong channel 14:40:17 -!- lambda-11235 has joined. 14:41:39 -!- bender| has quit (Quit: Leaving). 14:56:43 Is there something like Defender en-Vec that uses up +1/+1 counters from itself to heal others instead of fade counters? 14:59:13 Eg. a 0/0 cleric costing WW with "~ comes into play with two +1/+1 creatures. / Remove a +1/+1 counter from ~: prevent the next 1 damage that woudl be dealt to target creature or player this turn." 14:59:44 that card is crazily weak :-( 14:59:55 there are a ton of cards that can give away +1/+1 counters 15:00:03 I guess the xolor code stuff is not supposed to work in a plain xterm 15:00:18 which is an improved version of that effect, because the creature gets a power boost and will have more toughness on future turns 15:00:26 int-e: the thing I posted won't work in xterm as it uses a different syntax 15:00:33 I haven't actually tried this in xterm syntax yet 15:00:37 ais523: for free at any time as an instant, not just when a creature etb or if you pay mana for it? 15:00:48 ais523: sorry, I skipped the "fbcon" part. 15:01:04 ais523: I can still believe it's weak, but I wonder what creatures you're thinking of. 15:01:13 b_jonas: that narrows it down somewhat but there are still probably some 15:01:41 ais523: Modular creatures in Darksteel give away counters when they die. 15:02:10 ais523: would it still be weak if it costed 1W ? 15:02:54 The graft ability gives away counters when the destination creature etb. 15:03:44 Mikaeus, the Lunarch can do it with a cost of T 15:07:06 salt road quartermasters has a cost of 2G to move the counter (!) 15:07:20 that's kind-of ridiculous 15:08:56 all the "Spike" creatures can give away counters for a cost of 2, that's what I was thinking originally but I didn't realise there was a mana cost 15:09:21 "Remove two +1/+1 counters from Spinal Parasite: Remove a counter from target permanent." 15:09:29 nice reverse variant 15:43:39 -!- nvd has changed nick to Taneb. 15:53:13 -!- p34k has joined. 15:58:25 -!- vanila has joined. 16:00:28 -!- MoALTz has quit (Ping timeout: 244 seconds). 16:14:13 -!- J_Arcane has joined. 16:43:00 -!- MoALTz has joined. 16:47:42 -!- hppavilion[2] has joined. 16:54:40 -!- hppavilion[2] has quit (Ping timeout: 252 seconds). 16:59:38 -!- Taneb has changed nick to nitia. 17:00:44 -!- nitia has changed nick to Taneb. 17:00:53 -!- AnotherTest has joined. 17:02:28 `? nitia 17:03:18 nitia is the inventor of all things. The BBC invented her. 17:03:38 There is a new nitia 17:14:51 -!- hppavilion[2] has joined. 17:19:32 -!- J_Arcane has quit (Ping timeout: 244 seconds). 17:20:39 -!- hppavilion[2] has quit (Ping timeout: 276 seconds). 17:21:20 -!- hppavilion[2] has joined. 17:25:01 -!- J_Arcane has joined. 17:30:45 -!- ais523 has quit (Ping timeout: 246 seconds). 17:35:43 -!- ais523 has joined. 17:39:40 pikhq: whoa whoa whoa, pikhq++ 17:53:52 -!- rdococ has joined. 17:56:05 pikhr? 18:09:33 -!- jaboja has joined. 18:16:53 Who was the person here with the weird/interesting font that they were making? 18:17:23 \oren\ has a font... I believe there's more than one person now though 18:19:06 Thanks. And, of course, it's not that surprising that an esoteric languages community would have esoteric fonts... :P 18:20:15 \oren\: Out of curiosity, what was / where is your font? 18:20:32 \oren\: Never mind, found it. 18:23:40 -!- MDude has quit (Remote host closed the connection). 18:43:01 -!- hppavilion[2] has quit (Ping timeout: 252 seconds). 18:44:24 -!- hppavilion[2] has joined. 18:53:27 -!- puck1pedia has joined. 18:54:27 -!- impomatic_ has changed nick to impomatic. 18:55:01 -!- Gregor has quit (Ping timeout: 250 seconds). 18:55:07 -!- Gregor has joined. 18:55:53 -!- puckipedia has quit (Ping timeout: 250 seconds). 18:55:53 -!- puck1pedia has changed nick to puckipedia. 18:58:25 zgrep: \oren\, lifthrasiir, and me 18:58:36 but \oren\'s is probably the weirdest 19:00:15 -!- feliks has quit (Ping timeout: 268 seconds). 19:00:31 b_jonas: Huh. Good to know. 19:02:05 -!- feliks has joined. 19:15:52 b_jonas: Out of curiosity, what is your font? 19:16:33 -!- llue has joined. 19:16:33 -!- llue has quit (Changing host). 19:16:33 -!- llue has joined. 19:17:40 -!- hppavilion[2] has quit (Ping timeout: 252 seconds). 19:19:48 -!- lleu has quit (Read error: Connection reset by peer). 19:19:53 -!- p34k has quit (Ping timeout: 268 seconds). 19:20:36 -!- b_jonas has quit (Ping timeout: 268 seconds). 19:20:53 -!- b_jonas has joined. 19:28:22 -!- p34k has joined. 19:34:18 -!- hppavilion[2] has joined. 19:34:39 -!- jaboja has quit (Ping timeout: 246 seconds). 19:36:40 -!- lynn has quit (Read error: Connection reset by peer). 19:37:47 -!- lynn has joined. 19:39:26 -!- Phantom_Hoover has joined. 20:20:58 -!- AnotherTest has quit (Quit: ZNC - http://znc.in). 20:22:02 -!- carado has quit (Quit: Leaving). 20:24:50 -!- carado has joined. 20:27:17 -!- Phantom_Hoover has quit (Read error: Connection reset by peer). 20:27:29 -!- Phantom_Hoover has joined. 20:30:51 -!- jaboja has joined. 20:39:04 -!- hppavilion[2] has quit (Ping timeout: 252 seconds). 20:42:21 -!- hppavilion[2] has joined. 20:47:52 -!- hppavilion[2] has quit (Ping timeout: 264 seconds). 21:01:40 -!- hppavilion[2] has joined. 21:05:08 ≟ is "Probably equal to. I hope." now. I demand it. 21:05:41 You need a function from probabilities to code points. 21:32:19 -!- Guest25470 has quit (Ping timeout: 248 seconds). 21:32:47 -!- vanila has quit (Quit: Leaving). 21:35:37 -!- jaboja has quit (Ping timeout: 240 seconds). 21:40:17 -!- ais523 has quit. 21:47:08 -!- Guest87521 has quit (Changing host). 21:47:08 -!- Guest87521 has joined. 21:47:11 -!- Guest87521 has changed nick to JX7P. 21:50:52 -!- hppavilion[2] has quit (Ping timeout: 264 seconds). 21:52:24 -!- boily has joined. 21:53:14 [wiki] [[PythoLambda]] N https://esolangs.org/w/index.php?oldid=46639 * CodeMaster111 * (+434) Created page with "A language adding one small element to [[Wikipedia:Python (Programming language)|Python]]: You can use the ƛ (lambda) character in place of the Python function lambda [wiki] [[PythoLambda]] https://esolangs.org/w/index.php?diff=46640&oldid=46639 * CodeMaster111 * (-12) /* Example syntax */ 21:59:06 `wisdom 21:59:29 [wiki] [[PythoLambda]] https://esolangs.org/w/index.php?diff=46641&oldid=46640 * CodeMaster111 * (+5) 21:59:30 tmyk/tmyk the more overfilled your brain gets. 22:01:09 [wiki] [[LOL CODE]] N https://esolangs.org/w/index.php?oldid=46642 * CodeMaster111 * (+21) Redirected page to [[LOLCODE]] 22:01:27 not so bad. 24 seconds. 22:08:49 -!- Sgeo__ has joined. 22:09:35 teenage mutant yaoi koalas 22:11:46 AAAAAAAAURGH! 22:12:01 hellochaf. you are despicable hth 22:12:27 not a fan of koalas, i take it? 22:14:29 don't you mangle those innocent koalas! 22:18:55 nitia introduced the initial article 22:19:51 of course. 22:25:31 -!- nooga has joined. 22:29:04 -!- jaboja has quit (Ping timeout: 260 seconds). 22:32:44 hellooga. 22:32:54 -!- hppavilion[2] has joined. 22:34:10 hppavellon[2]. 22:36:48 ahoily 23:19:40 -!- nooga has quit (Ping timeout: 252 seconds). 23:37:15 -!- oerjan has joined. 23:38:28 @messages- 23:38:28 boily said 12h 43m 1s ago: I AM THE PRETTIEST FROG IN THIS ENTIRE POND!! 23:38:43 boily: i hope that wasn't a reference to anything because if so i've forgotten it. 23:40:48 bah searching in my browser cannot find a combination of and a following message 23:42:05 `addquote I AM THE PRETTIEST FROG IN THIS ENTIRE POND!! 23:42:16 So there *is* a quoting mechanism. 23:42:19 quoteing? 23:42:25 zgrep: No there isn't 23:42:26 1273) I AM THE PRETTIEST FROG IN THIS ENTIRE POND!! 23:42:40 zgrep: I just synced up with the guy in charge of HackEgo 23:42:54 zgrep: It's all an elaborate illusion to troll you 23:42:58 D: 23:43:13 Although, it is all an elaborate illusion to troll me... which must mean... 23:43:18 ...I'm important enough to troll! :D 23:44:51 hppavilion[2]: ok that was his 1 minute of trolling, now move on to victim 31035 hth 23:45:30 oerjan: Just let me check him off the list 23:45:37 oerjan: Which one is it... list #AQD? 23:45:50 Where the # is part of the numbering? (It's base-95) 23:46:24 i cannot remember, it's not a very important list 23:46:41 oerjan: Agreed 23:47:11 Let's just ignore it; doesn't matter if we accidentally troll him again, but it's unlikely 23:47:17 yeah 23:47:27 You know, given that we have 7 trillion more aliens to troll 23:47:39 The humans altogether are insignificant 23:47:51 and here I'm quoted again. oh fungot... 23:47:51 boily: and the existing forums aren't extremely professional it might work out 23:47:58 fungot: I know! 23:47:58 boily: i guess that's what tokigun has meant... somehow make the popcorn itself... 23:48:31 fungot: Tokigun-san All Natural Spices Popcorn! 23:48:31 boily: i work like 3h a day. probably more feasible for that to be annoying 23:48:47 fungot: you don't work, you don't think, stop being sentient twh 23:49:24 BTF 23:49:26 !!! 23:49:39 (BURN THE FUNGOT) 23:49:43 (!!!) 23:50:44 All right, heck it. I want to design this fantasy video game console. 23:50:53 tswett: Which one? 23:50:55 hppavilion[2]: you seem to be slipping up with policy, please recheck the rules https://www.reddit.com/r/CertainlyNotAliens/ 23:51:00 The one I'm about to design. 23:51:27 tswett: What's it like? 23:51:33 16-bit words. Less than a megabyte of memory. Runs at something like a million IPS. 23:53:00 What could a reduced instruction set look like... 23:53:07 A smallish one, I mean. 23:53:43 I'm just going to... https://www.youtube.com/watch?v=l8kuiXwxKKU... yeah... um... yep. 23:53:48 -!- p34k has quit. 23:53:51 tswett: Deque-based 23:53:56 tswett: Instead of array-based 23:54:11 ADD, SUB, MUL, LOAD, STORE, MOV, SHR, SHL... 23:54:24 tswett: BNOR or BAND 23:54:36 tswett: right-shift AND left-shift? Fancy... 23:54:42 You know what, there are a lot of instructions that are simply arithmetic or bit manipulation. I'm going to call those "ALU instructions". 23:54:50 And I'm not going to bother listing them. 23:54:52 OK 23:54:58 So apart from those, we've got, like... 23:55:13 tswett: Is it an esoconsole? 23:55:34 why do you put "eso" in front of everything 23:55:50 esoshachaf! 23:55:51 shachaf: To distinguish it from things 23:55:55 shachaf: he's 1/4 spanish hth 23:56:03 LOAD, STORE, MOV, JUMP, JUMP-IF. 23:56:06 hppavilion[2]: yeah, you could call it that. 23:56:10 tswett: OK 23:56:15 It's not much more esoteric than, say, the GameBoy. 23:56:21 tswett: Why not SKIPIF, just to make people cry? 23:56:21 But it's definitely esoteric compared to the PS4. 23:56:36 tswett: And while we're at it, no JMP, only CJMP 23:56:47 Because I want to give people a decent instruction set. 23:56:49 Only RELATIVE CJMP 23:56:51 SKIPPY 23:57:00 oerjan: The peanut butter? 23:57:07 no, the kangaroo 23:57:13 tswett: Give them INTERCALy names 23:57:17 *+bush 23:57:20 CLR would be BURN 23:57:40 Bitwise Upward Rotation? 23:57:56 tswett: No, BURN clears a register. 23:58:00 Oh, right. 23:58:17 tswett: WASH clears a segment of registers 23:58:23 s/registers/memory/ 23:59:42 . o O ( I need to find kangaroo steak... this city has everything comestible on sale somewhere, and then some more. )