00:00:02 <mad> the exception is 68000 which afaik doesn't match all that badly with C
00:00:25 <oerjan> <boily> @metar FPGA <-- apparently FP only has 3 airports.
00:01:00 <b_jonas> mad: C was ran on PDP-10 and stuff like that
00:01:05 -!- J_Arcane_ has joined.
00:01:06 <ais523> its definition maps onto zeropage quite well, apart from the fact you can't take pointers to it
00:01:38 <mad> yeah I guess register would sorts match
00:02:09 <ais523> that said zeropage pointers are different from main memory pointers
00:02:25 <ais523> 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 <mad> 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 <b_jonas> ais523: I don't think register matches, because register values are local to a function, whereas zeropage are global
00:03:26 <mad> does 'register' have any effect on compiler output nowadays?
00:03:43 <hppavilion[1]> MIPS := {x : x in Instructions, useful(x), feasible(x)}
00:03:54 <boily> hellørjan. they have enough space for three airports?
00:04:04 <b_jonas> 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 <hppavilion[1]> SomeEsolang := {x : x in Instructions, useful(x), feasible(x)}^C
00:04:22 <ais523> b_jonas: what would they reuse it for?
00:04:30 <ais523> "auto" is a happy coincidence IMO
00:04:36 <boily> three airports, no weather. that is completely mad.
00:04:46 <ais523> (sort-of like Java's variances, except that's less of a coincidence)
00:04:49 <lambdabot> EGBB 222350Z 35003KT 9999 OVC027 08/04 Q1016
00:05:01 <b_jonas> ais523: not much yet, I don't remember, possibly a non-keyword identifier
00:05:09 <mad> hppavilion[1] : what's that?
00:05:15 <b_jonas> ais523: it's very far future, it's not even deprecated yet in C++14 I think
00:05:48 <hppavilion[1]> mad: Something utterly useless, now that I've sent that message
00:06:15 <b_jonas> ais523: and it's not really a co-incidence, given how C++ language extensions very often reuse keywords for new purposes
00:06:32 <hppavilion[1]> 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 <ais523> b_jonas: I mean that it happened to be very descriptive of "infer this", already a keyword, and basically unused
00:06:51 <hppavilion[1]> mad: It's useless, but interesting. You use it to implement OMEGA-MOV
00:07:56 <ais523> hppavilion[1]: isn't it really inefficient because it has to scan all of memory?
00:08:01 <oerjan> <b_jonas> 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:23 <ais523> wait, isn't this the operation that finds a pointer that points to itself?
00:09:09 -!- ais523|telnet has joined.
00:09:30 <boily> wait. you can connect to IRC through telnet???
00:09:35 <ais523|telnet> 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
00:09:39 <vanila> yeah just gotta repoly to pings
00:09:49 <mad> afaik IRC is very close to telnet
00:09:51 <boily> vanelloa. the more you know.
00:09:52 <ais523|telnet> 01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
00:09:57 <b_jonas> 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 <vanila> this is really good numbers
00:10:02 <ais523|telnet> 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
00:10:08 <boily> mad: I still haven't found a proper porthello for you...
00:10:10 <ais523|telnet> 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
00:10:16 <ais523|telnet> 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456
00:10:36 <boily> ais523|telnet: GO ON! WOO!
00:10:39 <vanila> this is the power of telnet
00:10:50 <boily> hppavilion[1]: hppavellon[1]. and it is?
00:11:27 <ais523|telnet> 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456
00:11:52 <b_jonas> ais523: yes, you can do up to I think 2300
00:11:57 <mad> doesn't show as overlong here
00:11:59 <b_jonas> ais523: the length of the send queu
00:12:11 <ais523|telnet> 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456
00:12:28 <hppavilion[1]> ais523|telnet: Why would you do this on #esoteric?
00:12:37 <vanila> this iss importan tfor #esoteric
00:12:46 <vanila> we will get to see a lot of numbers
00:12:51 <vanila> its almost like a rainbow
00:13:02 <ais523|telnet> 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456
00:13:05 <int-e> I never thought I'd put an incarnation of ais523|telnet on ignore... oh well.
00:13:11 <b_jonas> ais523: no wait, sorry, not 2300 but a bit more than 3040
00:13:13 <int-e> (minus the |telnet)
00:13:37 <boily> hppavilion[1]: IT'S FOR SCIEEEEENCE!!!!!!1!!!one!!!!eleven!!!
00:13:39 <ais523|telnet> 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456
00:13:46 <b_jonas> ais523: 3040 is safe if your send queue is empty
00:14:04 <ais523|telnet> 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456
00:14:09 <mad> I see 307 characters
00:14:37 <b_jonas> 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 <b_jonas> ais523: 421 means unknown command, you typoed a command
00:15:18 <b_jonas> ais523: or entered an empty line
00:15:52 <ais523|telnet> looks like Freenode is splitting my command halfway then
00:16:11 <mad> if intel just did a copycat MIPS-like cpu like everyone else instead of itanium it would have been faster
00:16:23 <b_jonas> ais523: that would be strange
00:17:05 <ais523|telnet> 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456
00:17:43 <b_jonas> 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 <ais523|telnet> 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456
00:18:12 <mad> b_jonas : "instead of itanium"
00:18:45 -!- XorSwap has joined.
00:18:50 <ais523|telnet> the second one seemed to be from somewhere near the middle of the message
00:19:33 <mad> b_jonas : for embedded the story is mostly that ARM is displacing MIPS
00:19:57 <mad> and also 8 and 16bit cpus like PICs due to being a lot faster
00:20:47 <ais523|telnet> a000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999b000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999c000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999d000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999e00000000011111111112222222222333333333344444444445555555
00:21:02 * boily cheers ais523|telnet with pom poms
00:21:18 <b_jonas> ais523: try 3585 so you're finally quitted!
00:21:37 <vanila> 01234560123456012345601234560123456012345601234560123456012345601234560123456012345601234560123456012345601234560123456012345601234560123456
00:22:06 <b_jonas> 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 <ais523|telnet> A000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999B000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999C000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999D000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999E00000000011111111112222222222333333333344444444445555555
00:22:21 -!- lynn_ has quit (Ping timeout: 248 seconds).
00:22:34 <vanila> 0123456012345601234560123456012345601234560123456012345601234560123456012345601234560123456012345601234560123456012345601234560123456012345601234560123456012345601234560123456012345601234560123456012345601234560123456012345601234560123456012345601234560123456012345601234560123456
00:22:36 <hppavilion[1]> ais523: I'm seeing messages of fairly consistent length
00:22:39 <ais523> the 421 started with "9g"
00:22:46 <ais523> hppavilion[1]: of course, they're all being cut off
00:22:59 <ais523> it ended with 9 6's after "j"
00:23:02 <vanila> ais523, why not try setting the topic very long
00:23:09 <ais523> hppavilion[1]: to see how the IRC server reacts
00:23:17 <ais523> which isn't visible outside telnet, other than whether I get DC'ed
00:24:07 <ais523|telnet> a000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999b000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999c000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999f000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999e00000000011111111112222222222333333333344444444445555555
00:24:26 <ais523> hmm, seems to be cut off at a different place each time
00:24:38 <ais523> :cameron.freenode.net 421 ais523|telnet 888889999999999o000000000
00:25:29 <ais523|telnet> 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 <ais523> :cameron.freenode.net 421 ais523|telnet soteric :Unknown command
00:25:44 <ais523> :cameron.freenode.net 421 ais523|telnet #esoteric :Unknown command
00:25:49 <ais523> heap-spraying attack :-P
00:26:04 <ais523|telnet> 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:37 <ais523|telnet> 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:54 <ais523> hppavilion[1]: cut off "PRIVMSG #esoteric"
00:27:11 <boily> hppavilion[1]: ic time is close to fnord am hth
00:27:30 <HackEgo> 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 <ais523|telnet> 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 <ais523> lifthrasiir: trying to send two commands in one line of input
00:27:57 <boily> hellifthrasiir. he's being MAD! HE'S EXPERIMENTING! WITH SCIENCE!
00:28:07 <boily> oerjan: I think that GG binge is gaining on my sanity...
00:28:20 <lifthrasiir> ais523: probably dependent to the recv queue size
00:28:44 <ais523> that's why I'm heap-spraying
00:29:15 <ais523|telnet> 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 <boily> hppavilion[1]: dc.
00:29:23 <hppavilion[1]> lifthrasiir: Operators and perhaps values, not software
00:29:44 <lifthrasiir> hppavilion[1]: start with -> Knuth arrow and nothing else
00:29:46 <ais523|telnet> 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 <hppavilion[1]> lifthrasiir: Knuth Arrow or ->? There's a differenc
00:30:17 <ais523|telnet> 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 <lifthrasiir> I meant the Knuth Arrow which has a common appearance of ->
00:30:26 -!- ais523|telnet has quit (Quit: bleh).
00:30:53 <hppavilion[1]> lifthrasiir: Do you mean uparrow, only including hypops >= 4?
00:31:50 <hppavilion[1]> lifthrasiir: Instead of Knuth Arrow, I think I'll go with /\**/
00:32:15 <hppavilion[1]> lifthrasiir: In python, * is multiplication, ** is exponentiation
00:32:28 <hppavilion[1]> And I've extended it so *** is tetration, **** is pentation...
00:32:36 <lifthrasiir> hppavilion[1]: if multiplication can be implemented out of additions (not repeated ones), having *only* hyperoperations seem to be fine
00:33:02 <hppavilion[1]> lifthrasiir: So I shouldn't include addition, multiplication, or exponentation? Or did I interpret that wrong?
00:33:10 <lifthrasiir> hppavilion[1]: I have an idea that ^ == ** and ^^ == **** and ^^^ == ******** and so on.
00:34:28 <oerjan> <boily> 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 <hppavilion[1]> lifthrasiir: How about I have ^ be ternary instead?
00:34:44 <b_jonas> lifthrasiir: what? isn't the normal notation ^^ = *** and ^^^ = **** ?
00:34:49 <b_jonas> lifthrasiir: as in, ^^ is tetration
00:35:32 <lifthrasiir> a sequence of * and ^ is interpreted as a hyperoperator of given binary number encoded by * and ^
00:35:46 <hppavilion[1]> lifthrasiir: Maybe we should make it so ALL esocalc operators are ternary
00:36:10 <boily> oerjan: elixir? is it Norwegian? and traditional? me want some :D
00:36:13 <hppavilion[1]> What does bijection have to do with binary encoding?
00:36:25 <lifthrasiir> hppavilion[1]: 0 1 00 01 10 11 000 001 010 011 100 101 110 111 0000 ...
00:36:37 <lifthrasiir> bijectivity is required for using all possible sequences
00:37:06 <hppavilion[1]> lifthrasiir: What's the algorithm for processing bijective binary?
00:37:43 <hppavilion[1]> lifthrasiir: Though I still like the only-let-use-use-ternary-operators idea
00:38:00 <lifthrasiir> hppavilion[1]: bijective abc...xyz is binary abc...xyz plus 2^(# of digits)
00:38:41 <hppavilion[1]> Because + is hard to inverse given a single argument :P
00:38:59 <lifthrasiir> ah, I meant that the conversion from injective to bijective is not too hard either
00:39:09 <oerjan> boily: it is SCIENCE hth
00:39:31 <oerjan> lifthrasiir: maybe you want conway chained arrows
00:39:33 <lifthrasiir> I haven't heard of surjective numeration :p
00:39:48 -!- lleu has joined.
00:40:12 <oerjan> ais523: are you sure it wasn't telnet that did the cutting off? maybe it negotiated some max length >:)
00:40:15 <hppavilion[1]> lifthrasiir: It's bit rotate, but it takes another argumetn
00:40:27 <ais523> oerjan: IRC servers don't respond to telnet negotiation
00:40:28 * boily drinks Dr. Aid Metaphorical Kool Kola
00:40:33 <ais523> but if you insist I'll use netcat next time :-P
00:41:29 <lifthrasiir> hppavilion[1]: so 0b10111001<<2:5 is 0b1010011001, right?
00:42:03 -!- XorSwap has quit (Read error: Connection reset by peer).
00:42:24 <lifthrasiir> a<<b:c == (a>>c<<b+c)|(a&((1<<c)-1)), got it
00:42:33 <hppavilion[1]> lifthrasiir: Esocalc also, obviously, would have registers
00:42:54 <lifthrasiir> I had an idea about ridiculously high level language
00:43:09 <int-e> :t System.IO.openBinaryTempFile
00:43:12 <lambdabot> FilePath -> String -> IO (FilePath, GHC.IO.Handle.Types.Handle)
00:43:19 <int-e> :t System.IO.openBinaryTempFileWithDefaultPermissions
00:43:20 <lambdabot> FilePath -> String -> IO (FilePath, GHC.IO.Handle.Types.Handle)
00:43:39 -!- lambdabot has quit (Quit: brb).
00:43:50 <lifthrasiir> 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:58 <hppavilion[1]> lifthrasiir: I had an idea to make a magazine catalog advertising abstract computer science as things you could buy
00:45:38 <hppavilion[1]> Like a $300 binary Turing Machine (vertices, edges, and wiring kit not included)
00:45:58 <oerjan> <int-e> DAMN. <-- what
00:46:19 <hppavilion[1]> Which are things that you plug into an abstract machine to make it more useful
00:46:49 <boily> AbstractKeyboardFactoryFactory.
00:47:19 * hppavilion[1] stabs boily with a walrus tusk for bringing up that kind of atrocity in his presence
00:47:26 <oerjan> <ais523> but if you insist I'll use netcat next time :-P <-- *MWAHAHAHA*
00:47:52 <ais523> oerjan: the only real difference is that you exit netcat differently
00:48:01 <ais523> "|telnet" is a bit of a meme though
00:48:09 -!- lambdabot has joined.
00:49:03 <boily> hppavilion[1]: hey! I resent that!
00:49:22 <b_jonas> ais523: I usually use nc_jonas as my nick when I irc with netact (but this isn't a requirement of course)
00:49:36 <b_jonas> (sometimes I do use other nicks)
00:50:52 <hppavilion[1]> 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 <int-e> 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 <hppavilion[1]> Your Abstract Browser uses Abstract Sockets to query an Abstract Server for an Abstract Webpage
00:51:53 <int-e> oerjan: turns out that openBinaryTempFile does it that way and I wanted openBinaryTempFileWithDefaultPermissions instead.
00:52:02 <hppavilion[1]> Just be careful not to download any Abstract Malware
00:52:05 * boily lops hppavilion[1] with strengthened carballoy moose antlers
00:52:34 <hppavilion[1]> Why not abstract other stuff to make something stupid?
00:52:52 <int-e> oerjan: which is quite a mouthful
00:53:16 <int-e> oerjan: but mostly I'm annoyed that it took me so long
00:53:35 <boily> 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:12 <boily> 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 <ais523> what's the Engine Pattern?
00:54:34 <boily> hppavilion[1]: the first is a Factory. the latter is a Factory. clear!
00:54:50 <ais523> also, I think factories are only necessary due to the builder pattern
00:54:53 <boily> ais523: absolutely nothing. some people just like gluing that word to class names.
00:54:56 <APic> Probably something evil like the Factory Pattern
00:55:08 <ais523> the /concept/ is useful, but if you aren't using builders, a factory can just be a function rather than a class
00:55:19 -!- vanila has changed nick to vanilaFactory.
00:55:23 <boily> 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 <boily> 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:15 <ais523> builder makes me uneasy but it's hard to explain why
00:56:20 <ais523> also static methods are not inherently a bad thing
00:56:48 <int-e> oerjan: anyway, now http://silicon.int-e.eu/lambdabot/State/ works.
00:56:50 <boily> the Java I write dangerously leans on the functional side. immutable variables, static methods, fluent style.
00:56:53 <hppavilion[1]> ais523: What are the benefits of Minsky Machines over Turing Machines?
00:57:30 <ais523> 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 <ais523> minsky machines are a much more natural fit for very low-level work
00:58:31 <hppavilion[1]> 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 <ais523> hppavilion[1]: oh, assuming that they aren't optimizing
00:58:56 <ais523> the turing machine would be better
00:58:58 <ais523> it's a more powerful language
00:59:10 <int-e> turing tends to be faster
00:59:14 <ais523> this is the reason minsky machines are useful, though, they're less powerful and thus easier to implement
00:59:23 <hppavilion[1]> 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:44 <boily> APic: AAAAAAAAAAAAAAAAAAAAAAH!
01:01:49 <boily> first time I see you speak.
01:08:15 <oerjan> as you see, APic can only say one word per line.
01:08:30 <APic> So what if not?
01:15:30 <APic> So does „B“ count as Word?
01:16:04 <lambdabot> <hint>:1:1: lexical error at character '\8222'
01:16:51 <APic> From English-Arabic FreeDict Dictionary ver. 0.6.2 [fd-eng-ara]:
01:16:51 <APic> بي - الحرف الثاني في اللغة الإنجليزية
01:17:42 * boily shakes his terminal the other way round
01:17:51 <boily> nope. all jumbled.
01:19:52 <ais523> mad: I'm looking at the instruction set proposal you linked, and I'm a little confuse about the compare operations
01:20:22 <ais523> 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 <HackEgo> [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 <ais523> 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 <HackEgo> [wiki] [[The Abstract Computer]] https://esolangs.org/w/index.php?diff=46635&oldid=46634 * Hppavilion1 * (-2) Fixed formatting
01:21:42 <HackEgo> [wiki] [[The Abstract Computer]] https://esolangs.org/w/index.php?diff=46636&oldid=46635 * Hppavilion1 * (+47) Finished a dangling sentence.
01:22:54 <HackEgo> [wiki] [[The Abstract Computer]] M https://esolangs.org/w/index.php?diff=46637&oldid=46636 * Hppavilion1 * (+0) s/edge/node/
01:23:42 <APic> Good Night Mat{,ress}es.
01:25:35 <hppavilion[1]> lifthrasiir: I plan to make up all these stupid things and add them
01:26:40 <hppavilion[1]> lifthrasiir: Though Abstract Operating Systems will be a thing
01:27:50 <hppavilion[1]> lifthrasiir: You can feel free to add stuff to the page :P
01:29:10 -!- vanilaFactory[bu has quit (Quit: Leaving).
01:29:14 <lifthrasiir> yeah, I want to have enough resources to procrastinate forever
01:29:33 <lifthrasiir> we have a close-to-explicit word for this in Korean
01:29:50 <lifthrasiir> unemployed billionare, something like that
01:30:34 <lifthrasiir> https://medium.com/@azerbike/i-ve-just-liberated-my-modules-9045c06be67c hello, and fuck your micro-dependencies!
01:31:00 <lifthrasiir> (not really about micro-dependencies, but kind of silly nevertheless)
01:31:20 <pikhq> FWIW, the dependency there that broke a bunch of things was 10 lines of code.
01:31:34 <lifthrasiir> left-pad is, well, left padding function for String
01:31:46 <oerjan> hppavilion[1]: Abstract Pizza hth
01:31:53 <pikhq> i.e. the sort of thing that any sane programmer should realize is more expensive as a dependency than as explicit code.
01:32:32 <pikhq> (I know, I know, don't repeat yourself, but dependencies have a fucking cost.)
01:32:34 <lifthrasiir> pikhq: I see some value in very small bits of codes *as long as* it doesn't break.
01:34:26 <hppavilion[1]> lifthrasiir: Libraries are decent in compiled languages, because they have no runtime cost AFAICT
01:34:54 <hppavilion[1]> 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 <lifthrasiir> hppavilion[1]: yeah. it would make much sense when the function itself is fully isolated from the outside
01:35:24 <lifthrasiir> the modern JS has some protection but not sufficient
01:35:45 <lifthrasiir> (go die elsewhere if you think "use strict"; is a shit)
01:36:56 <hppavilion[1]> lifthrasiir: Do you do anything with compiler dev?
01:36:57 <ais523> 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:25 <pikhq> hppavilion[1]: In real-world C++, libraries often have quite interesting runtime cost, FWIW.
01:37:26 <hppavilion[1]> "is the shit" means good, "is shit" means bad, for reference
01:37:34 <lifthrasiir> ais523: ah? I've used it as a bad sense, but I didn't know that connotation
01:37:40 <pikhq> Though I should add that that's generally *startup* cost.
01:38:02 <hppavilion[1]> pikhq: Ah, yes. Then again, straight code also has a startup cost
01:38:08 <ais523> lifthrasiir: it's not actually an English phrase, and I wasn't sure how to translate it into one that was
01:38:16 <pikhq> 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 <hppavilion[1]> lifthrasiir: I've been writing a compiled language called DK using a python-based compiler
01:38:24 <ais523> "is the shit" would normally be interpreted as highly positive, but also very crude/colloquial
01:38:25 <pikhq> And dynamic linking is *cheap*, not free.
01:38:34 -!- mihow has quit (Quit: mihow).
01:38:37 <lifthrasiir> ais523: I'm generating a close-to-English sentence out of nothing :p
01:38:46 <ais523> also, "use strict"; is basically a directive you can put on an insane language to make it very slightly less insane
01:38:59 <pikhq> 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 <lifthrasiir> yeah, it doesn't automagically prevent the prototype mess for example
01:39:03 <ais523> (arguably the true is also the case of Perl, although there you have a range of different strictness pragmas)
01:39:34 <pikhq> 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 <lifthrasiir> hppavilion[1]: I'm building a language at work right now
01:40:12 <lifthrasiir> hppavilion[1]: more about a type checker for the existing language
01:40:43 <pikhq> 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:41:05 <lifthrasiir> the traditional distinction doesn't work well today
01:41:19 <ais523> pikhq: I don't think being compiled or being interpreted should be a fundamentally defining feature of a language
01:41:30 <ais523> many languages can reasonably be done either way
01:41:44 <ais523> e.g. Java is normally interpreted, but compilers exist and nothing in its semantics rules them out
01:42:06 <pikhq> 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 <mad> java is typically just-in-time compiled no? :D
01:42:35 <hppavilion[1]> ais523: It's a fundamentally defining feature of an implementation
01:42:36 <boily> java is... it's weird.
01:42:44 <pikhq> mad: Yes, but the first few releases were a bytecode interpreter not a JIT.
01:42:44 <lifthrasiir> well, with the presence of JIT compilation the "infeasible" language semantics do not seem to exist anyway
01:42:45 <ais523> mad: that's a method of implementing interpreters, though
01:42:52 -!- boily has quit (Quit: PYRAMIDAL CHICKEN).
01:42:52 <ais523> hppavilion[1]: yes, but not of the language it implements
01:42:58 <mad> ais523 : depends on your angle
01:43:07 <hppavilion[1]> ais523: Though most languages are designed with one or the other in mind
01:43:09 <pikhq> *And* there's absolutely nothing preventing you from just using a bytecode interpreter on Java today.
01:43:21 <mad> 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 <pikhq> But, for example, C could still be considered compiled, but you could certainly interpret it just fine.
01:43:34 <ais523> pikhq: well you have to compile into bytecode first :-P
01:43:35 <hppavilion[1]> ais523: You generally wouldn't use a Rust interpreter except for debugging.
01:43:43 <lifthrasiir> I actually think that WebAssembly can act as a portable retargetable binary format
01:43:57 <pikhq> Though TCC, the commonly given example, is not a good example of it. :)
01:44:18 <mad> is there anything that is designed to be a retargettable format for C++
01:44:21 <lifthrasiir> https://github.com/tjmehta/is-positive-integer/blob/master/index.js oh.
01:44:45 <mad> I'm sure a retargettable, platform independent... platform for C++ would totally be feasible
01:44:51 <pikhq> 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 <mad> some sort of generic-ish CPU
01:45:17 <mad> when loading the exe it translates it to the target arch
01:45:26 <pikhq> mad: Sure, and WebAssembly or something similar seems like just that.
01:45:27 <mad> it already has to relocate everything in memory
01:45:33 <lifthrasiir> hppavilion[1]: it is not even `module.exports = function(i) { return i > 0 && Math.floor(i) == i; }`!
01:45:34 <mad> might as well translate it too
01:46:43 <mad> pikhq : does it have to have "safe" array lookups? (ie it checks bounds on everything)
01:47:10 <ais523> why does that is-positive-integer thing exist? is it actually a hard task in JavaScript?
01:47:37 <ais523> also I'm not sure if lifthrasiir's example actually works
01:47:37 <mad> doesn't js have ===
01:47:45 <lifthrasiir> hppavilion[1]: oh, isInteger was not *that* simple. it is actually: return typeof v === 'number' && isFinite(v) && Math.floor(v) === v;
01:47:48 <ais523> I don't have Java's type coercion things memorized but think it might fail on a string like "1test"
01:47:54 <mad> yes exactly
01:47:58 <mad> === is like
01:48:09 <mad> "we messed up == ok we have to use === then"
01:48:16 <lifthrasiir> I had some good bug with === in PHP, however
01:48:16 <pikhq> mad: It appears they're designing it to permit but not require such an implementation.
01:49:02 -!- jaboja has quit (Remote host closed the connection).
01:49:03 <ais523> actually, IMO there should be a Perl variant in which there is no distinction between integers and strings
01:49:09 <hppavilion[1]> 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 <ais523> the language is 99% designed like that but it leaks occasionally
01:52:09 -!- XorSwap has joined.
01:52:20 <ais523> ugh, is this what modern development is like?: https://redd.it/4bjss2
01:52:44 <ais523> (tl;dr: someone took an 11 line npm package off GitHub, a ton of stuff broke as a result)
01:53:04 <ais523> 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 <ais523> and yet it seems to be the least of the offences here
01:53:42 <pikhq> I'd fault it less if you, y'know, also referenced a revision ID as well.
01:53:42 <ais523> lifthrasiir: ah right, I missed it
01:53:51 <ais523> it wasn't clear from the URL and I didn't click the link
01:53:53 <lifthrasiir> it is also related to the unclear npm policy about trademark violation and DMCA requests
01:54:03 <ais523> because I tend not to follow links if I don't know what they are or what site they're to
01:54:34 <lifthrasiir> ais523: sounds reasonable. I guess I need to add more contexts
01:54:40 <pikhq> ais523: medium.com is a somewhat large and popular blog host.
01:54:55 <ais523> pikhq: that implies that you can't deduce much about the destination of a link hosted there
01:56:13 -!- nooga has quit (Ping timeout: 248 seconds).
01:58:03 <shachaf> pikhq: Isn't it great when everything is in one repository?
01:58:13 <shachaf> Distributed development is scow.
01:58:21 <pikhq> shachaf: Rather better than I expected, TBH.
01:58:54 <pikhq> 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 <shachaf> What sorts of tools are you thinking of?
02:00:00 -!- Lilly_Goodman has joined.
02:00:17 <pikhq> Eh, y'know, mostly just the large amounts of automatic testing that make it hard to break things by mistake.
02:00:48 <shachaf> You want that sort of thing anyway.
02:01:06 <pikhq> Yeah, I came to Google from a place with rather less... good repo hygiene.
02:01:36 <pikhq> I think the single largest build break I've seen here was... caused by me </shame_box>
02:02:08 <ais523> be the only dev, then /every/ break will be caused by yourself :-P
02:02:17 <ais523> actually I have a larger problem with people making changes without running the tests, than anything else
02:02:36 <ais523> the problem being that as I'm working on a to-FPGA compiler, the tests require an FPGA simulator to run
02:03:02 <pikhq> Yeah, thankfully commits *block* on tests passing normally.
02:04:13 <pikhq> Doesn't help when it's an expensive test you can't run per commit though.
02:04:16 <mad> at my last place, commits would go into a dev branch
02:04:32 <mad> that would trigger a round of tests
02:04:52 <mad> if the tests pass the changes were comitted to the release brance
02:05:20 <pikhq> 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:44 <ais523> "0 bytes uncompressed, 25 bytes gzipped."
02:07:51 <ais523> wow, gzip headers are enormous
02:08:36 <pikhq> I think you can do *slightly* better than that. But, yeah, they kinda are.
02:09:04 <ais523> bzip2's headers have an ASCII representation of pi in them, IIRC
02:09:10 <ais523> in order to make them easy to locate in a corrupted file
02:09:10 <int-e> `` < /dev/null gzip | wc -c
02:09:25 <ais523> or was it binary-coded-decimal?
02:09:36 <pikhq> You spend 18 bytes on just the gzip file headers.
02:09:46 <ais523> int-e: < prefix notation looks so weird
02:09:52 <ais523> `` < /dev/null bzip2 | wc -c
02:09:54 <pikhq> gzip the program by default includes the file name, though.
02:10:01 <ais523> `` < /dev/null bzip2 | od -t x1z
02:10:02 <HackEgo> 0000000 42 5a 68 39 17 72 45 38 50 90 00 00 00 00 >BZh9.rE8P.....< \ 0000016
02:10:06 <int-e> ais523: I like it, it's logical.
02:10:18 <ais523> I assume it's the block header rather than the file header
02:10:26 <pikhq> `` </dev/null gzip | od -t x1z
02:10:28 <ais523> `` uname -a | bzip2 | od -t x1z
02:10:28 <HackEgo> 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 <HackEgo> 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:49 -!- XorSwap has quit (Ping timeout: 252 seconds).
02:10:49 <ais523> you can see the "31 41 59 26 53 59" in the header
02:11:06 <ais523> hmm, let's see if we can get that all on one line to be more readable
02:11:33 <hppavilion[1]> ais523: Like, slice 11001001000011111101101010100010001000010110100011000010001101001100010011000110011000101000101110000000110111000001110011010001 at every 8 bits and spit out their chr()ing?
02:11:35 <ais523> `` uname -a | bzip2 | od -w 128 -t x1z
02:11:36 <HackEgo> od: 128: No such file or directory
02:11:39 <ais523> `` uname -a | bzip2 | od -w128 -t x1z
02:11:40 <HackEgo> 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 <ais523> `` uname -a | bzip2 | od -w128 -tx1z
02:11:52 <HackEgo> 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 <ais523> oh, it must be long enough that it gets cut off
02:12:15 <ais523> `` uname -a | bzip2 | wc -c
02:12:27 <HackEgo> Linux umlbox 3.13.0-umlbox #1 Wed Jan 29 12:56:45 UTC 2014 x86_64 GNU/Linux
02:12:52 <hppavilion[1]> `` run (uname -a | wc -c)-(uname -a | bzip2 | wc -c)
02:12:53 <HackEgo> /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:58 <HackEgo> /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:12 <int-e> http://www.forensicswiki.org/wiki/Bzip2 helps...
02:13:55 <int-e> `` echo | bzip2 | od -tx1
02:13:56 <HackEgo> 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:14:05 <ais523> huh, strange, it uses "Linu" as a dictionary word but not "Linux"
02:14:11 <lifthrasiir> `` echo $(($(uname -a | wc -c)-$(uname -a | bzip2 | wc -c)))
02:14:20 <int-e> basically you'll have the pi except for an empty input
02:14:31 <ais523> `` echo | bzip2 | od -w100 -tx1z
02:14:32 <HackEgo> 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:54 <hppavilion[1]> Binary-Coded Decimal is stupid, IMHO, unless you're running on a VERY small processor
02:15:16 <hppavilion[1]> One that would make it hard to even convert binary to decimal
02:15:20 <int-e> hppavilion[1]: well, those are magic numbers...
02:15:43 <myname> 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:52 <int-e> myname: how can you stand typing {} and [] though...
02:17:18 <mad> "bank carreer defense"
02:17:32 <pikhq> hppavilion[1]: Above, not next to.
02:17:48 <int-e> myname: (semi-serious question; those characters are the main reason why I switched to US layout)
02:17:51 <pikhq> The character where ö is on a German keyboard, is ; on an American keyboard.
02:17:51 <hppavilion[1]> pikhq: "above" is a type of "next to" when dealing with keyboards
02:17:52 <myname> int-e: i don't see the problem
02:18:17 <int-e> myname: alt-gr is so inconvenient.
02:18:43 <mad> I got used to alt-gr
02:18:46 <myname> nah, i don't have to think about it, therefore i don't have a problem with it
02:18:55 <mad> now US keyboard confuses me
02:19:10 <mad> simply because I have the alt-gr shortcuts burned into my fingers
02:19:11 <int-e> it's not a thinking issue so much as an issue of not breaking my thumb while typing
02:19:12 <myname> it's not like i'd think "ouch, my fingers hurt, i should type [ less"
02:19:16 <int-e> anyway... never mind.
02:19:31 <int-e> I shouldn't have asked :O
02:19:49 <myname> i know many germans using us
02:19:55 <mad> the one that's kinda inconvenient is < > on the same key
02:20:01 <myname> the more sane i know switched to neo
02:20:17 <mad> and ` ^ that have to be typed with deadkey + space
02:20:58 <mad> and \ with altgr + key to the left of 1
02:21:06 <ais523> huh, deadkey+space works even on a UK keyboard
02:21:13 <ais523> there's just no point because of the physical ` key
02:21:32 <ais523> (in fact, one of those was typed as Compose ` space, which is more than a little pointless)
02:21:47 <ais523> Compose a space doesn't work, so someone must have added that compose recipe explicitly
02:21:49 <int-e> fortunately the deadkey behavior can be disabled
02:21:52 <myname> \ is pretty far to the right
02:21:53 <mad> 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 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: ¬|: not found
02:22:14 <ais523> only it's a different | from the one that's shift-\
02:22:24 <ais523> (they're treated as the same by Linux, but not by DOS or Windows)
02:22:29 -!- Lilly_Goodman has joined.
02:22:57 <pikhq> Yup, ¬ is nowhere on a US keyboard.
02:22:58 <mad> ¦ is stupid afaik
02:23:12 <myname> mad: \ is right of 0, not left of 1 ...
02:23:15 <pikhq> ¦ vs | is a distinction I don't even understand.
02:23:22 <ais523> pikhq: I assume we have a ¬ key because it's in EBCDIC
02:23:25 <ais523> it isn't in ASCII though
02:23:48 <mad> yeah it's like
02:23:58 <ais523> bleh, I knew the reason for the vertical bar stuff at one point, but I've forgotten what it is
02:24:00 <mad> | vs ¦ made into ebcdic for some reason
02:24:01 <ais523> IIRC it was really stupid though
02:24:27 <mad> well, one of the versions of ebcdic anyways
02:24:32 <ais523> 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 <myname> the broken bar with a center dot works as a rotated version of -.-
02:25:01 <int-e> 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 <shachaf> ¬ has nautical applications
02:25:40 <ais523> huh, it is actually ISO-8859-1 which is at fault
02:25:56 <ais523> which we could have figured out with a simple unidecode
02:26:28 <int-e> shachaf: awful pun
02:26:55 <ais523> well, apparently the backslash was invented so that you could type /\ and \/ as and and or
02:27:09 <pikhq> ais523: I don't think ¬ is in the base EBCDIC, just a few EBCDIC code pages.
02:27:24 <mad> ¬ is in latin one
02:27:29 <ais523> EBCDIC is crazily internally inconsistent
02:27:33 <pikhq> Yes, there's freaking EBCDIC code pages.
02:27:53 <lifthrasiir> shachaf: indeed. ¬ that ¬ical mile is ¬ same to typical mile, though.
02:28:44 <mad> latin-1 has a bunch of really stupid characters
02:28:54 <pikhq> I hate EBCDIC. I used to hate it more when I had to deal with it at work.
02:29:11 <mad> pikhq : wow
02:29:14 <shachaf> pikhq: I'm going to assume that you're talking about your current job.
02:29:17 <ais523> is there anything that people hate less as they use it more, rather than hating more?
02:29:21 <shachaf> please don't disillusion me twh
02:29:24 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
02:29:36 <pikhq> shachaf: I have not had to deal with EBCDIC at my current job.
02:29:40 <hppavilion[1]> Should I make a calculator and put it in HackEgo via `fetch?
02:29:47 <shachaf> ais523: Lots of things, surely.
02:29:58 <mad> now if we could get trigraphs out of C++
02:30:00 <shachaf> For example pikhq and putting all your code in one repository.
02:30:13 <shachaf> Anything which people call an "acquired taste".
02:30:27 <pikhq> mad: Yeaaaah, I'm 25 years old and have professional experience in COBOL in some sense.
02:30:27 <shachaf> pikhq: Are you going to the ghcjs talk this week?
02:30:41 <shachaf> whoa whoa whoa, that's a quarter of a century
02:30:48 <ais523> pikhq: your COBOL skills may at one point be necessary to save the word
02:30:53 <mad> latin-1 has 32 extra control characters
02:31:16 <pikhq> I am best described as a COBOL n00b. But that's... far above average.
02:31:20 <mad> as if the 32 control characters in normal latin-1 weren't already useless enough
02:31:32 <ais523> pikhq: I know a limited amount of COBOL syntax
02:31:57 <ais523> hppavilion[1]: you could just have asked it
02:32:00 <mad> all I know about cobol is to run away in the opposite direction :D
02:32:17 <shachaf> I like the use of COBOL in this article: http://blog.cr.yp.to/20160315-jefferson.html
02:32:36 <shachaf> I guess I mean in the 1997 lawsuit.
02:32:55 <ais523> I think of COBOL as being a predecessor to SQL
02:33:01 <ais523> whose major sin was not realising it wanted to be domain-specific
02:33:23 <HackEgo> usage: mk[x] file//contents
02:33:37 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: testplylib: not found
02:33:50 <ais523> hppavilion[1]: you didn't make it executable and you didn't give a full path
02:33:54 <pikhq> Yeah, honestly COBOL isn't terrible considering the context of when it came to be and what it was for.
02:33:57 <ais523> `` chmod a+x testplylib
02:33:57 <HackEgo> chmod: cannot access `testplylib': No such file or directory
02:34:02 <ais523> `` chmod a+x testpylib
02:34:08 <HackEgo> /hackenv/bin/`: ./testpylib: /usr/bin/python\nimport: bad interpreter: No such file or directory
02:34:17 <pikhq> COBOL's sins are that it wasn't domain specific but wanted to be, and it survived *well* past its welcome.
02:34:30 <ais523> hppavilion[1]: it appears that your file contains a literal backslash followed by a literal n
02:34:56 <ais523> `` sed -i -e 's/\\n/\n/g' testpylib
02:35:05 <HackEgo> Traceback (most recent call last): \ File "./testpylib", line 2, in <module> \ import ply \ ImportError: No module named ply
02:35:16 <HackEgo> /hackenv/bin/`: line 4: pip: command not found
02:36:11 <ais523> hppavilion[1]: pip is not python
02:36:18 <ais523> also it wouldn't work on a VM that has no internet connection
02:36:26 <ais523> (not a direct one, anyway; you can do `fetch)
02:36:37 <ais523> hppavilion[1]: pip is not python in the same way that dpk is not Linux
02:36:46 <ais523> and homebrew is not OS X
02:36:57 <mad> which video game console do you like the sound of the most
02:37:59 <hppavilion[1]> ais523: Perhaps I should `fetch www.dabeaz.com/ply/ply-3.8.tar.gz ?
02:38:21 <ais523> hppavilion[1]: this is more likely to succeed than the other things you tried
02:38:25 <mad> the snes has always kinda stood out to me
02:38:30 <mad> sound wise
02:38:36 <HackEgo> 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:39:02 <ais523> 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 <ais523> hppavilion[1]: tar isn't as hard as people make it out
02:39:32 <ais523> the most confusing thing is that, by default, it accesses your primary connected tape driver
02:39:47 <ais523> 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 <ais523> you have to override the file you're accessing via the -f option
02:40:05 <ais523> `tar -xf ply-3.8.tar.gz
02:40:06 <HackEgo> tar: ply-3.8.tar.gz: Cannot open: No such file or directory \ tar: Error is not recoverable: exiting now
02:40:10 <ais523> `` tar -xf ply-3.8.tar.gz
02:40:32 <HackEgo> ANNOUNCE \ CHANGES \ doc \ example \ MANIFEST.in \ PKG-INFO \ ply \ ply.egg-info \ README.md \ setup.cfg \ setup.py \ test \ TODO
02:40:37 <ais523> one option for the operation (x for extract), and one option for the file
02:40:50 <ais523> it really isn't actually complicated, it just looks like it
02:40:59 <HackEgo> 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:11 <hppavilion[1]> Yes, I meant to do that because I couldn't remember the syntax
02:41:22 <ais523> admittedly I'm cheating a little because modern tar autodetects compression formats
02:41:36 <HackEgo> 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 <ais523> 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 <ais523> what does ply do anyway?
02:41:51 <HackEgo> error: package directory 'ply' does not exist \ running build \ running build_py
02:42:38 <ais523> HackEgo: try running it from its own directory
02:43:20 <ais523> `` (cd ply-3.8; python setup.py build)
02:43:24 <HackEgo> 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 <ais523> bleh, you're conning me into doing everything myself, aren't you
02:43:49 <HackEgo> Traceback (most recent call last): \ File "./testpylib", line 2, in <module> \ import ply \ ImportError: No module named ply
02:45:03 <HackEgo> Traceback (most recent call last): \ File "./testpylib", line 2, in <module> \ import ply \ ImportError: No module named ply
02:47:06 <hppavilion[1]> error: could not create '/usr/local/lib/python2.7/dist-packages/ply': Read-only file system
02:47:55 <hppavilion[1]> 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 <oerjan> <ais523> hppavilion[1]: you didn't make it executable [...] <-- incorrect, `mkx does that.
02:55:34 <ais523> oerjan: oh, is that what the x does?
02:58:06 -!- nooga has quit (Ping timeout: 276 seconds).
03:00:49 <ais523> hppavilion[1]: dc is an esoteric calculator already
03:01:17 <ais523> I want no part of this :-P
03:01:31 <ais523> also, have you seen the olympiad of misguided geeks?
03:01:49 <ais523> but the only really successful run was basically literally "create an esoteric calculator"
03:02:04 <ais523> it was run by thedailywtf
03:03:11 <ais523> hmm, when they changed their name from worsethanfailure back to thedailywtf, it seems they broke the links to it
03:03:20 <ais523> I'm trying to find the results now
03:03:48 <ais523> here we go: http://thedailywtf.com/articles/Announcing-the-OMGTWTF-Winner
03:03:50 <ais523> hppavilion[1]: read that
03:04:47 <ais523> wait, that's a pretty celebrity-stuffed judging panel
03:04:57 <ais523> it has both raymond chen and joel spolsky on it
03:06:35 <hppavilion[1]> ais523: What I'm going for is a real calculator with subtle, horrifying features
03:06:46 <ais523> hppavilion[1]: yes, some of them are like that
03:07:13 <ais523> hppavilion[1]: try this one: http://thedailywtf.com/articles/OMGWTF-Finalist-08-Universal-Calculator
03:10:27 <ais523> hppavilion[1]: what about a divide-by-minus-one error?
03:10:51 <ais523> 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 <hppavilion[1]> ais523: Of course, I could alternatively include Notta Numbers (I already am implementing @)
03:11:04 <ais523> the thing is, INT_MIN is a little further from zero than INT_MAX
03:11:08 <ais523> so INT_MIN/-1 is an integer overflow
03:12:51 <myname> INT_MIN * (-1) = INT_MIN
03:15:01 <pikhq> INT_MIN * (-1) = fish is also a valid implementation.
03:15:29 <hppavilion[1]> ais523: How about I change it to "Divide by zero on a day other than easter" error?
03:16:46 <ais523> in most implementations, INT_MIN / -1 is either INT_MIN or crashes the program
03:16:51 <ais523> but these are only the most common outcomes
03:17:01 <ais523> as pikhq said, theoretically it could do anything
03:17:21 <ais523> (I guess fairly common would be to produce a negative number that is treated as positive when compared with 0)
03:18:38 <ais523> myname: int_min is negative, right? thus dividing it by a negative number produces a nonnegative number
03:18:45 <pikhq> 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 <pikhq> Which is legal, because signed overflow is not.
03:19:04 <myname> ais523: well, yeah, but where do you save the information about it being poitive?
03:19:05 <ais523> because of the UB on overflow, this is true no matter what the arguments
03:19:11 <ais523> however, if you actually do the calculation, you get a negative number
03:19:20 <ais523> the information's saved in the asm
03:19:27 <ais523> via static analysis and optimizations based on it
03:19:46 <pikhq> 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:18 <pikhq> i.e. it will replace compares with that result with "true".
03:21:33 <hppavilion[1]> 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 <myname> -0 wpuld be optimized to 0
03:22:05 <hppavilion[1]> (Why do I try to refute things that are so obvious that they're irrefutable?)
03:22:46 <ais523> 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 <ais523> huh, copysign is pretty weird as primitives go
03:23:19 <hppavilion[1]> myname: Should the Esocalc have a number Ω : 0Ω = 1?
03:23:42 -!- Lilly_Goodman has joined.
03:26:53 <hppavilion[1]> And, of course, 0nΩ = n, as omegoids are non-associative and non-commutative
03:27:28 <hppavilion[1]> In fact, the total set of numbers in the #esoteric calculator will have absolutely no consistent properties
03:28:03 <myname> you could jusr output a random string, then
03:28:14 <hppavilion[1]> myname: No, subsets will have consistent properties
03:28:26 <myname> i would at least make some xonsistent modell that it will obey
03:29:48 <hppavilion[1]> myname: Should I just limit the weird constants to ijk@?
03:30:30 <myname> you can add whatever constant you like, just make sure to define the basic group operations on them
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 <lifthrasiir> 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 <hppavilion[1]> http://thedailywtf.com/articles/The_Call_of_Codethulhu
04:28:45 <mad> still waiting for the language where you can go vector[$n] += table[$m][n] and it gets compiled as for(int m=0; m<table.size; m++) for(int n=0; n<vector.size() && n<table[m].size(); n++) vector[n] += table[m][n];
04:29:56 <\oren\> that's like einstein notation isn't it
04:30:24 <mad> I just want C++ except without having to type so much everytime I want to loop over something
04:30:26 <ais523> Perl 6 has a feature that's reminiscent of that but isn't the same
04:31:24 <mad> some languages have foreach but it's more limited and often kindof a performance hog
04:31:54 <mad> like it's defined in really abstract ways like inheritance and generics and generators
04:32:25 <mad> 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:35:00 <mad> and, debatably, std::map
04:35:22 <\oren\> oh, yes, at least when the key is any builtin type
04:35:58 <mad> a lot of the std::maps I've used have a struct{} as a key
04:36:20 <mad> 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 <mad> don't think so :3
04:37:35 <\oren\> i could have sworn you can == structs in C?
04:37:35 <mad> and I would've had to override it possibly too
04:37:55 <ais523> you also can't memcmp them safely, in case they have padding bits
04:38:00 <ais523> so you need to compare field by field
04:38:16 <mad> "in case they have padding bits"
04:38:22 <mad> that's almost always no? :D
04:38:22 <ais523> that said, == is normally a dubious operation on structs anyway unless they're very simple
04:38:37 <ais523> mad: struct {char x; int y;} will have padding bits on the majority of compilers
04:38:37 <pikhq> mad: It's fairly common for structs to have padding *bytes*.
04:38:51 <mad> 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 <mad> it's a recipe for disaster
04:39:00 <ais523> 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:20 <\oren\> Well, what if you memset the struct every time you make one?
04:39:34 <mad> \oren\ : some people do that
04:39:46 <mad> like the first step of the constructor is memset 0 on itself
04:39:49 <pikhq> I don't think the compiler's guaranteed to not mutate the padding bytes.
04:40:16 <mad> if it does a copy logically it would probably not copy the padding
04:40:31 <mad> though it could do that
04:41:14 <mad> tbh I think they should change the standard so that the compiler can reorder the fields of your struct
04:41:50 <mad> except if it's #pragma pack(push, 1)
04:42:06 <mad> 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 <mad> like you'd have struct/class{}
04:42:56 <mad> 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 <mad> basically right now, "who cares" layout classes/structs are conflated with basically structs used for loading exact byte layouts from files
04:44:56 <mad> 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 <mad> 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 <mad> 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 <mad> 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 <newsham> its time for a standardized safe and common sense C standard for practical targets.
04:49:26 <pikhq> Of course, float's semantics don't even match what most C programmers think it is on common practical targets.
04:49:35 <mad> 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 <newsham> focusing on ILP32 and LP64
04:49:59 <pikhq> (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:51:16 <\oren\> which is then rounded to whatever type you assign it to
04:51:17 <pikhq> On x86_64, float_t is float.
04:51:53 <mad> newsham : you forgot LLP64
04:51:58 <pikhq> It's more-or-less the type that the underlying hardware performs the addition as.
04:52:38 <\oren\> pikhq: well tbf, if C is readable assembler that makes perfect sense
04:52:46 <newsham> mad: nah, we can just euthenize those ;-)
04:53:02 <pikhq> It's actually necessary to get reasonable floating point semantics.
04:53:03 <mad> pikhq : I as of now there's just no alternative to accepting that consistent float is impossible
04:53:25 <mad> newsham : good luck convincing the msvc guys to give up on 32bit long :(
04:53:40 <newsham> since when has msft cared about std compliance?
04:53:57 <pikhq> 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 <mad> newsham : I care about msvc vs gcc/llvm complience
04:54:12 <mad> standard I couldn't care less about
04:54:26 <pikhq> 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 <mad> what adds to my work day is every time msvc and gcc can't agree on something
04:54:45 <mad> 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 <pikhq> 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:39 <pikhq> Using them gets you a long damned way towards consistent float.
04:55:56 <mad> \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 <mad> well, normally I care way more about fast float than consistent float
04:56:49 <mad> so I actually want the compiler to play cowboy with rounding
04:57:12 <mad> but I know that if I ever one consistent float it's not happening
04:57:52 <mad> 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 <mad> \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 <mad> \oren\ : that's how they're usually handled yes
05:00:43 <mad> one that kinda pisses me off
05:00:49 <pikhq> Using floating point (and understanding its semantics) is very useful if what you actually need is calculations with an error bar.
05:00:58 <mad> -3 / 2 = -1
05:01:02 <mad> -3 >> 1 = -2
05:01:26 <\oren\> fortran formats has a cool feature that C scanf/printf doesnt
05:01:27 <mad> pikhq : yeah that's basically my day job :D
05:01:43 <pikhq> 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 <mad> also, (int)(-0.5) = 0 is EVIL
05:02:05 <pikhq> Your analysis is gonna be all wrong if you assume double rounding happens all over the place...
05:03:21 <lifthrasiir> you should realize that floating point number is not your typical real number
05:03:43 <mad> pikhq : well, I knew that the compiler uses long double for the actual computations on the x87 fpu
05:04:05 <mad> I didn't knew there was a data type for it
05:04:32 <pikhq> Yeah, very handy if you need to specifically store the result of a calculation without the possibility of added rounding.
05:04:44 <mad> 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 <mad> 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 <mad> 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 <mad> \oren\ : ah no
05:06:09 <pikhq> Ah, *sound*. Okay, yeah, even really absurdly high errors with float are minimal and irrelevant.
05:06:11 <mad> the promotion is really just because the x87 fpu forces promotion if you want any kind of perf
05:06:27 <pikhq> The x87 fpu forces promotion period.
05:06:53 <mad> if you want non promotion you have to store/load the value after calculation
05:07:11 <pikhq> And that's actually going to give you incorrect results.
05:07:20 <pikhq> Because it double rounds.
05:07:48 <mad> which means you just can't do the exact spec operation on x87? :D
05:08:04 <mad> you also have precision control flag that's *almost* as good but it actually doesn't limit the exponent range, afaik
05:09:14 <mad> afaik llvm on iphone uses the SIMD unit floating point for float code
05:09:18 <pikhq> 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 <mad> which has flushing denormals to zero (!)
05:10:29 <mad> ie if you compile float code on IOS it doesn't even follow the IEEE spec
05:11:48 <ais523> mad: I thought that was an option, rather than something that always happened
05:11:49 <pikhq> That's surely if you don't have the -std=c99 or similar flag.
05:12:17 <pikhq> FWIW GCC or LLVM do not conform to IEEE without a strict conformance flag. Period.
05:12:19 <mad> ais523 : it depends on which floating point operations you use I think
05:12:31 <pikhq> They aren't -ffast-math broken, but they don't conform.
05:12:44 <mad> -ffast-math is broken? :D
05:12:54 <ais523> pikhq: mad: -ffast-math is /intentionally/ broken
05:13:01 <pikhq> -ffast-math is -fbreak-my-math.
05:13:04 <pikhq> ais523: I'm aware.
05:13:05 <ais523> in that it doesn't attempt to be remotely IEEE conforming
05:13:13 <mad> 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 <pikhq> mad: It permits essentially any algebraically justified expression changes with no care for preserving precision whatsoever.
05:13:51 <mad> define "wildly wrong"
05:14:14 <mad> 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 <pikhq> And this is exactly why it's an option.
05:14:42 <\oren\> chunkily being the superlative of roughly
05:15:00 <pikhq> Because some users of floating point give approx. zero shits about floating point semantics.
05:15:03 <mad> if I start seeing wrong results I just upgrade all the variables involved from float to double
05:15:18 <HackEgo> [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 <mad> \oren\ : heh really?
05:15:45 <mad> wanna see proof of that
05:16:08 <mad> I've definitely seen lots of cases where it's "not slower", I admit
05:16:25 <pikhq> 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 <pikhq> Meaning your rounding behavior is at the whims of the compiler on x86.
05:16:48 <mad> pikhq : yes that's a given
05:17:01 <pikhq> ... Which is why people think floating point has horribly inconsistent magical behavior.
05:17:11 <mad> when does rounding behavior matter?
05:17:35 <mad> aside from trying to do something stupid like if(3 == 3.f * (1.f / 3.f))
05:18:09 <lifthrasiir> 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 <pikhq> When you're trying to write code which computes results with a provable error range.
05:18:28 <mad> lifthrasiir : not if it's a series of addition
05:18:46 <mad> lifthrasiir : then you get essentially the precision of the worst part of the addition
05:19:07 <pikhq> (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:24 <mad> ah yeah, if you want provability.....
05:19:42 <pikhq> 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 <pikhq> 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 <lifthrasiir> mad: even when you sum numbers of similar magnitudes, the error eventually ensues
05:20:42 <lifthrasiir> we have a good pile of algorithm for just summing FP numbers (Kahan summation, pairwise summation etc)
05:21:08 <mad> 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 <mad> basically as long as the exponent never grows, it's equivalent to 24bit fixed point
05:22:33 <lifthrasiir> by precision you meant abs(real_sum - computed_sum) <= abs(real_sum)/2^24 ?
05:24:12 <mad> abs(real_sum - computed_sum) <= abs(real_sum)/2^24 + SUM_OF_ALL( abs(sum_term[x] - closest_valid_float) )
05:25:19 <mad> 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 <mad> 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 <mad> or actually the guarantee is lower than that
05:26:39 <mad> it's not against the closest float but rather the closest float at current precision of the sum variable
05:27:03 <mad> how to put this
05:27:15 <mad> basically float never does worse than 25bit fixed point
05:27:47 <mad> does that make sense? :D
05:28:56 <mad> 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 <lifthrasiir> 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 <mad> yeah for sound and video games, you don't typically do infinite sums in the way that will mess up things
05:31:06 <mad> or rather you rarely do infinite sums at all
05:32:47 <mad> looking up https://en.wikipedia.org/wiki/Kahan_summation_algorithm
05:33:28 <mad> 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:34:01 <mad> though I guess it's kindof like turning a 32bit float into a 64bit float
05:34:31 <mad> 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 <mad> I've used a similar algo once in a filter
05:37:12 <mad> 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 <mad> 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 <lifthrasiir> mad: the same idea is also present in the Bresenham line drawing algorithm, the idea seems to be fairly universal
05:52:39 <mad> well, yeah
05:53:07 <mad> it's basically the equivalent of doing 64bit addition on a 32bit cpu
05:53:15 <mad> by doing ADD and ADC
05:55:38 -!- nooga has joined.
06:00:05 -!- nooga has quit (Ping timeout: 244 seconds).
06:10:21 <Sgeo__> https://github.com/twbs/bootstrap/issues/3057
06:14:44 <\oren\> omg, look at the fucking scroll bar on that thread?!
06:14:56 <lifthrasiir> http://wiki.ecmascript.org/doku.php?id=strawman:concurrency and it is a legitimate proposal
06:15:30 <lifthrasiir> so every new expression syntax risks breaking the existing JS code and thus the Web(tm)
06:20:44 <ais523> Sgeo__: that thread is beautiful, /both/ sides have an argument that's clearly stupid
06:20:48 <ais523> so I'm not sure which one I'm supporting
06:21:35 <Sgeo__> Don't minifiers habitually break valid code anyway?
06:21:43 <ais523> that said, I suspect the jsmin side of the argument is stupid because JS is stupid
06:21:48 <Sgeo__> e.g. code that relies on a function's name
06:21:53 <ais523> rather than stupid in its own right
06:22:51 <Sgeo__> 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 <Sgeo__> https://github.com/mishoo/UglifyJS2/issues/121#issuecomment-92522991
06:25:18 <Sgeo__> Hmm, maybe minifier != uglifier
06:25:48 <ais523> clearly we need maxifiers; we have beautifiers
06:27:13 <Sgeo__> "fwiw, this was patched in bootstrap way before i even encountered this issue - otherwise i wouldn't have closed it outright."
06:27:34 <mad> looking at that js concurrency proposal
06:27:35 <Sgeo__> This after 23 million forks of both projects are made
06:27:52 <mad> is that thing even technically possible?
06:28:41 <lifthrasiir> ais523: I feel the entire discussion is reasonable *and yet* stupid
06:28:42 <mad> I'm not familiar with js but I was under the impression that it was more or less designed against concurrency
06:28:59 <lifthrasiir> I know that the automatic semicolon insertion is required for compatibility. but we need it *only* for compatibility!
06:29:41 <lifthrasiir> TC39 should have limited the scope of automatic semicolon insertion
06:29:52 <Sgeo__> "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:30:07 <lifthrasiir> so that ! won't never start a sentence when preceded by a newline
06:30:22 <lifthrasiir> (thank you Sgeo__ for the source of confusion)
06:30:52 <Sgeo__> Saw it on https://www.reddit.com/r/ProgrammerHumor/comments/4bf5kv/thanks_jslint_ill_tick_that_one/
06:30:55 <ais523> come to think of it, JSFuck makes a pretty good maxifier
06:34:14 <ais523> you know, I really like the suggestion of using x || y rather than !x && y
06:34:29 <ais523> it seems to have all the advantages of the original, and one less downside
06:34:40 <ais523> it is still a bad choice, but isn't bad in any way the original wasn't
06:35:19 <lifthrasiir> and then we would someday have an expression containing if
06:37:51 <ais523> clearly we need Perl's if statement modifier
06:37:56 <ais523> it looks like this: "a if b;"
06:38:03 <ais523> where a is a statement and b is an expression
06:39:23 <mad> I was never a fan of the semicolon
06:39:56 <mad> it's acceptable in two level lists (1a, 1b, 1c; 2a, 2b; 3a, 3b)
06:40:19 <mad> but to me it practically doesn't make sense in "grammar"
06:40:32 <ais523> OCaml has semicolon as list separator, comma as tuple separator
06:40:43 <ais523> and [a,b; c,d; e,f] is a list of tuples
06:41:00 <ais523> ([a,b,c; d,e; f,g] is a type error)
06:42:50 <mad> kinda wonder
06:42:54 <ais523> lifthrasiir: I originally misinterpreted that as () being unit, (;;) being a particularly bulky way to write unit
06:42:57 <mad> why you have to use shift to get :
06:43:02 <mad> and you naturally get ; instead
06:43:07 <mad> isn't : more common?
06:43:10 <ais523> there's some debate about what the purpose of ;; is in actual (non-interactive) OCaml code
06:43:11 <lifthrasiir> ais523: in fact I was not sure about the naming
06:43:22 <lifthrasiir> that is, the name of what is separated by ;;
06:43:29 <ais523> as in, its purpose in the OCaml repl is clear
06:43:33 <ais523> but not in actual code
06:43:54 <ais523> most OCaml programs don't have a ;; anywhere
06:43:56 <lifthrasiir> ais523: isn't that the type inference boundary? it might not have a value though.
06:44:05 <ais523> (mostly I use it to make parse errors give more precise line numbers)
06:44:19 <ais523> lifthrasiir: why would you want to place limits on type inference?
06:44:35 <shachaf> I think most Haskell programs don't have ; and {} anywhere.
06:44:49 <lifthrasiir> ais523: not much, but may simulate multiple files of code into a single code without altering anything
06:46:02 <oerjan> someone in girl genius needs to improve their haggling.
06:48:14 <mad> rob ford is dead :o
06:50:05 <izabera> "i'm not glad he's dead but i'm glad he's gone"
06:54:15 -!- AnotherTest has joined.
06:55:52 <shachaf> oerjan: I guess so, but that's just a pun.
06:56:10 -!- nooga has joined.
06:57:51 <oerjan> (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 <shachaf> it's a list of good games hth
06:58:55 <shachaf> oerjan: I mean that it's the same character being used in a different context syntactically.
06:59:52 <oerjan> 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 <b_jonas> “<ais523> 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 <b_jonas> “<ais523> 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 <b_jonas> “<ais523> 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 <b_jonas> “<ais523> 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 <ais523> ugh, can you seriously not do rank 2 polymorphism in ocaml?
07:51:24 <ais523> b_jonas: how do you access your tape drive then?
07:52:27 <shachaf> ais523: You have PolymorphicComponents, at least, right?
07:52:41 <b_jonas> 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 <ais523> shachaf: what does that mean? I'm not sure what that name refers to
07:52:57 <shachaf> Polymorphic fields in records.
07:53:32 <ais523> it's quite likely, given that OCaml has OO
07:55:26 <shachaf> It's better than nothing, though not allowing rank-2 types is pretty scow if you ask me.
07:56:45 <ais523> 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 <shachaf> So can you write type t = { f : 'a . 'a -> unit }, and then let g x = (x.f 1; x.f "a")?
07:58:45 <shachaf> I don't know OCaml syntax.
08:01:08 <ais523> shachaf: according to #ocaml, yes; I'm not very good with records yet though
08:01:14 <ais523> so I'm waiting for them to tell me the syntax :-)
08:01:23 <b_jonas> ais523: try template<typename H> 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 <shachaf> ais523: Doesn't the syntax I used work?
08:02:26 <b_jonas> 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 <b_jonas> in C++ that is, I don't really know ocaml
08:03:21 <b_jonas> right, that's the same as what shachaf says I think
08:04:11 <shachaf> b_jonas: That's more duck typing than rank-n polymorphism, I think.
08:05:14 <b_jonas> 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 <b_jonas> 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 <b_jonas> it's called template<template<
08:06:29 <shachaf> template templates are great
08:06:44 <b_jonas> they even get you to syntax troubles
08:07:58 <shachaf> What more can you want from a language feature?
08:09:13 <ais523> I was unaware of the 'a. syntax in OCaml, and it's weird that it only works inside records
08:09:49 <ais523> especially as the compiler seems to be able to handle the type of the record field after destructuring
08:10:24 <shachaf> Well, that's not really that surprising, I guess.
08:10:51 <shachaf> Do you have a function that constructs a record in OCaml, like you do in Haskell?
08:10:58 <shachaf> If so that function would be rank-2.
08:12:34 <ais523> the record constructor looks like {f=f}
08:12:53 <ais523> but if you try to write it as a function, "let make_f f = {f=f}", type inference fails
08:13:18 <ais523> because it can't infer the polymorphic type for the function argument
08:13:43 <oerjan> that's pretty much as in ghc haskell, unless you provide an explicit type signature
08:13:55 <shachaf> 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 <ais523> right, the only difference with OCaml is that it doesn't let you provide the type signature
08:14:12 <shachaf> In practice PolymorphicComponents and Rank2Types and RankNTypes are all synonyms these days.
08:14:24 <ais523> right, we discussed that a while back
08:14:47 <ais523> the difference being that Rank2Types are inferrable (mathematically, ghc can't do it), RankNTypes aren't
08:15:03 <oerjan> and in ghc, _existential_ types still require destructuring something.
08:15:12 <ais523> this is the only advantage to rank 2 types, I think
08:15:17 <ais523> that they're decidable
08:15:18 <shachaf> 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 <ais523> it's a while since I read the papers
08:15:57 <shachaf> Whole-program type-checking seems to me like it almost defeats the purpose of type-checking.
08:16:03 <oerjan> istvr rank-2 isn't inferrable, just checkable: you don't have principal types
08:16:42 <shachaf> Isn't that true of Rank-N?
08:17:02 <shachaf> The advantage of rank-2 types over rank-n, people usually claim, is that you can do inference.
08:17:30 <shachaf> 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 <ais523> yes, there's an algo for whole-program inference somewhere
08:18:12 <ais523> let me see if I can find the paper
08:18:54 <ais523> http://dl.acm.org/citation.cfm?id=182456
08:18:58 <oerjan> shachaf: i don't think rank-N is checkable without explicit types, or else system F would be
08:19:04 <ais523> not sure if it's publicly available via the ACM
08:19:15 <shachaf> oerjan: Oh, I thought you meant checkable with explicit types.
08:19:29 <ais523> althoug even if it isn't, there might be copies floating around elsewhere (e.g. authors' website), there often are
08:19:48 <oerjan> nah with enough explicit types it's obviously checkable, that's just what core is.
08:19:54 <shachaf> Available for a token fee of $15.
08:20:02 <ais523> shachaf: that's a ridiculous price
08:20:17 <shachaf> You can also pay $3 for 24 hours of access apparently.
08:20:17 <ais523> although, it's actually much cheaper than the "typical" price that these organizations charge…
08:20:35 <shachaf> "View-only access for 24 hours"
08:20:39 <int-e> the usual trick of googling the title seems to work anyway
08:20:47 <shachaf> I wonder how much you pay to be able to modify the paper.
08:21:21 <oerjan> only your very soul, shachaf
08:22:25 <ais523> 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 <ais523> 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 <oerjan> it almost made sense at first
08:24:23 <shachaf> shachaf read that as "one referer". shachaf read good.
08:24:27 <ais523> (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 <ais523> hmm, it's interesting that "referer" has now become a word, and has a more precise meaning than "referrer"
08:25:07 <oerjan> now we need to work on referree
08:25:34 <shachaf> Hmm, that pun doesn't work at all for the same ambiguity that makes it possible.
08:25:35 <ais523> 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 <ais523> they're at least trying to be reasonable
08:28:39 <oerjan> of course arxiv is evil they won't publish my REVOLUTIONARY QUANTUM CHEESE THEORY
08:29:22 <lambdabot> Yow! Are you the self-frying president?
08:29:51 <lambdabot> So, if we convert SUPPLY-SIDE SOYABEAN FUTURES into HIGH-YIELD T-BILL
08:29:52 <lambdabot> INDICATORS, the PRE-INFLATIONARY risks will DWINDLE to a rate of 2
08:29:52 <oerjan> spontaneous combustion in the white house
08:30:42 <oerjan> 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 <oerjan> (actually, any panel with such dialogue)
08:33:45 <shachaf> the second-order &lgr;-calculus
08:34:24 <shachaf> Probably the greek letter lambda?
08:34:51 <shachaf> It could be the Lagrangian calculus, I guess.
08:35:32 <oerjan> 'fraid it's actually λ
08:35:48 <shachaf> Well, that's on the page ais523 linked to.
08:36:15 <ais523> there might be more than one entity for the same letter?
08:37:05 <oerjan> that might explain why it doesn't show up right
08:37:07 <shachaf> Or maybe λ is for LATIN SMALL LETTER LAMBDA WITH STROKE
08:37:41 <shachaf> Whereas &lgr; is for one of the LAMDA characters, which are much more prevalent in Unicode.
08:38:59 <oerjan> ok https://www.w3.org/TR/xml-entity-names/bycodes.html has both
08:41:26 <oerjan> i suppose the &lgr; escaped due to insufficient escaping.
08:57:50 -!- nooga has joined.
09:02:19 -!- nooga has quit (Ping timeout: 260 seconds).
09:03:03 <b_jonas> oerjan: no, it's more like whoever invented that requirement is interested.
09:04:02 <lambdabot> 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:12 <lambdabot> 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 <lambdabot> On the other hand, life can be an endless parade of TRANSSEXUAL
09:12:08 <lambdabot> QUILTING BEES aboard a cruise ship to DISNEYWORLD if only we let it!!
09:12:26 <oerjan> doesn't seem useful for searching
09:12:56 <lambdabot> It is here that my cheap workforce of trained iguanas will work
09:12:56 <lambdabot> night and day to make our shoes to my exacting specifications!
09:14:25 <ais523> what's with the newlines?
09:14:36 <ais523> adding random newlines on IRC is like adding random commas in regular English
09:14:59 <ais523> 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 <ais523> the first quote it's terrible though
09:15:10 -!- lynn has joined.
09:15:42 <shachaf> I think these come from fortune.
09:15:53 <shachaf> 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:50:23 -!- ais523 has quit.
09:58:48 -!- bender| has joined.
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 <nvd> Good morning
10:39:54 <nvd> I've had a v ery nice sleep
10:40:11 <nvd> 13 hours, plus a two hour nap I had yesterday evening before dinner
10:41:38 <boily> Tanelle. good morning! that's a nice sleep.
10:45:10 -!- heroux has joined.
10:55:27 <boily> @tell oerjan I AM THE PRETTIEST FROG IN THIS ENTIRE POND!!
11:02:33 -!- bender| has quit (Read error: Connection reset by peer).
11:09:56 <int-e> 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 <int-e> ... don't -> don't expect
11:13:01 <boily> int-ello. I wouldn't dare to expect less.
11:13:26 <int-e> Maybe it's time to bring up http://jokes.cc.com/funny-work/k7op88/the-engineer-and-the-frog
11:15:44 <lambdabot> 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 <b_jonas> 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 <int-e> so... a PDP INTERCAL
12:17:17 <int-e> (I'm confused by the reference to *tri*INTERCAL)
12:17:40 <int-e> and no, I don't know of any such thing
12:17:46 <b_jonas> int-e: triINTERCAL has variants with different digit sizes and different number of digits per word
12:18:15 <b_jonas> so I presumed one with 18 bits could be a special case
12:19:14 <int-e> oh, I only knew the obvious variant with 10 and 20 trit words
12:20:14 <int-e> because "tri" refers to ternary... and because those neatly fit into 16 and 32 bits, respectively
12:21:07 <b_jonas> 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:34:17 -!- jaboja has quit (Ping timeout: 260 seconds).
12:45:41 <int-e> "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 <b_jonas> int-e: I mean canon for C-INTERCAL, see http://c.intercal.org.uk/manual/qk5q4hrh.htm
13:06:10 <int-e> 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 <b_jonas> int-e: ok, but I think the C-INTERCAL docs supercedes it, given that it's actually maintained
13:07:26 <int-e> it's funny because ick *is* C-INTERCAL, just before ais took over...
13:08:06 <int-e> but my main objection is that Tri means three and therefore shouldn't refer to other bases, documentation be damned.
13:14:18 <b_jonas> int-e: what do you call the decimal point inside a hexadecimal number representation like 0x1.6db7p+0 ?
13:22:12 <b_jonas> (some call it "radix point")
13:22:37 <int-e> 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:03:13 <myname> 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 <ais523> anyone here with a 170-column wide Linux fbcon terminal on ctrl-alt-f1?
14:07:58 <ais523> 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:12 <ais523> then keep repeating it until the screen scrolls
14:08:20 <ais523> I am not sure if this is a bug or a feature
14:08:32 <ais523> (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 <ais523> (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:16:03 -!- treaki_ has joined.
14:16:06 <ais523> b_jonas: right, we change the palette every character
14:16:12 <b_jonas> I don't have a linux text console here to try, but I might try at home
14:16:20 <ais523> and this somehow gives us more colours than the linux console can normally display
14:16:44 <ais523> 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 <ais523> 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 <ais523> but, OTOH, you can get arbitrarily many colours by changing the palette, as long as the screen doesn't scroll
14:17:33 <ais523> this feels more like an accidental feature than an intentoinal one
14:20:44 -!- me2 has joined.
14:21:01 <b_jonas> 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 <ais523> b_jonas: well the annoying thing for me is
14:21:31 <b_jonas> 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 <ais523> linux console fallback breaks any attempt to do unparsable-code fallback
14:22:10 <ais523> linux console can't parse the colon-based codes
14:22:25 <ais523> the semicolon-based codes are dangerous so I don't want to use them without user authorization
14:22:37 <ais523> 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 <b_jonas> 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:40:17 -!- lambda-11235 has joined.
14:41:39 -!- bender| has quit (Quit: Leaving).
14:56:43 <b_jonas> 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 <b_jonas> 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 <ais523> that card is crazily weak :-(
14:59:55 <ais523> there are a ton of cards that can give away +1/+1 counters
15:00:03 <int-e> I guess the xolor code stuff is not supposed to work in a plain xterm
15:00:18 <ais523> 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 <ais523> int-e: the thing I posted won't work in xterm as it uses a different syntax
15:00:33 <ais523> I haven't actually tried this in xterm syntax yet
15:00:37 <b_jonas> 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 <int-e> ais523: sorry, I skipped the "fbcon" part.
15:01:04 <b_jonas> ais523: I can still believe it's weak, but I wonder what creatures you're thinking of.
15:01:13 <ais523> b_jonas: that narrows it down somewhat but there are still probably some
15:01:41 <b_jonas> ais523: Modular creatures in Darksteel give away counters when they die.
15:02:10 <b_jonas> ais523: would it still be weak if it costed 1W ?
15:02:54 <b_jonas> The graft ability gives away counters when the destination creature etb.
15:03:44 <ais523> Mikaeus, the Lunarch can do it with a cost of T
15:07:06 <ais523> salt road quartermasters has a cost of 2G to move the counter (!)
15:07:20 <ais523> that's kind-of ridiculous
15:08:56 <ais523> 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 <ais523> "Remove two +1/+1 counters from Spinal Parasite: Remove a counter from target permanent."
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:03:18 <HackEgo> nitia is the inventor of all things. The BBC invented her.
17:03:38 <Taneb> 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 <shachaf> pikhq: whoa whoa whoa, pikhq++
17:53:52 -!- rdococ has joined.
18:09:33 -!- jaboja has joined.
18:16:53 <zgrep> Who was the person here with the weird/interesting font that they were making?
18:17:23 <int-e> \oren\ has a font... I believe there's more than one person now though
18:19:06 <zgrep> Thanks. And, of course, it's not that surprising that an esoteric languages community would have esoteric fonts... :P
18:20:15 <zgrep> \oren\: Out of curiosity, what was / where is your font?
18:20:32 <zgrep> \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 <b_jonas> zgrep: \oren\, lifthrasiir, and me
18:58:36 <b_jonas> but \oren\'s is probably the weirdest
19:00:15 -!- feliks has quit (Ping timeout: 268 seconds).
19:00:31 <zgrep> b_jonas: Huh. Good to know.
19:02:05 -!- feliks has joined.
19:15:52 <zgrep> 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 <hppavilion[2]> ≟ is "Probably equal to. I hope." now. I demand it.
21:05:41 <shachaf> 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 <HackEgo> [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 <code>lambda</..."
21:54:57 -!- jaboja has joined.
21:58:45 <HackEgo> [wiki] [[PythoLambda]] https://esolangs.org/w/index.php?diff=46640&oldid=46639 * CodeMaster111 * (-12) /* Example syntax */
21:59:29 <HackEgo> [wiki] [[PythoLambda]] https://esolangs.org/w/index.php?diff=46641&oldid=46640 * CodeMaster111 * (+5)
21:59:30 <HackEgo> tmyk/tmyk the more overfilled your brain gets.
22:01:09 <HackEgo> [wiki] [[LOL CODE]] N https://esolangs.org/w/index.php?oldid=46642 * CodeMaster111 * (+21) Redirected page to [[LOLCODE]]
22:01:27 <boily> not so bad. 24 seconds.
22:08:49 -!- Sgeo__ has joined.
22:09:35 <shachaf> teenage mutant yaoi koalas
22:12:01 <boily> hellochaf. you are despicable hth
22:12:27 <shachaf> not a fan of koalas, i take it?
22:14:29 <boily> don't you mangle those innocent koalas!
22:18:55 <shachaf> nitia introduced the initial article
22:25:31 -!- nooga has joined.
22:29:04 -!- jaboja has quit (Ping timeout: 260 seconds).
22:32:54 -!- hppavilion[2] has joined.
23:19:40 -!- nooga has quit (Ping timeout: 252 seconds).
23:37:15 -!- oerjan has joined.
23:38:28 <lambdabot> boily said 12h 43m 1s ago: I AM THE PRETTIEST FROG IN THIS ENTIRE POND!!
23:38:43 <oerjan> boily: i hope that wasn't a reference to anything because if so i've forgotten it.
23:40:48 <oerjan> bah searching in my browser cannot find a combination of <nick> and a following message
23:42:05 <hppavilion[2]> `addquote <boily> I AM THE PRETTIEST FROG IN THIS ENTIRE POND!!
23:42:16 <zgrep> So there *is* a quoting mechanism.
23:42:26 <HackEgo> 1273) <boily> I AM THE PRETTIEST FROG IN THIS ENTIRE POND!!
23:42:40 <hppavilion[2]> zgrep: I just synced up with the guy in charge of HackEgo
23:42:54 <hppavilion[2]> zgrep: It's all an elaborate illusion to troll you
23:43:13 <zgrep> Although, it is all an elaborate illusion to troll me... which must mean...
23:43:18 <zgrep> ...I'm important enough to troll! :D
23:44:51 <oerjan> hppavilion[2]: ok that was his 1 minute of trolling, now move on to victim 31035 hth
23:45:50 <hppavilion[2]> Where the # is part of the numbering? (It's base-95)
23:46:24 <oerjan> i cannot remember, it's not a very important list
23:47:11 <hppavilion[2]> Let's just ignore it; doesn't matter if we accidentally troll him again, but it's unlikely
23:47:27 <hppavilion[2]> You know, given that we have 7 trillion more aliens to troll
23:47:51 <boily> and here I'm quoted again. oh fungot...
23:47:51 <fungot> boily: and the existing forums aren't extremely professional it might work out
23:47:58 <fungot> boily: i guess that's what tokigun has meant... somehow make the popcorn itself...
23:48:31 <boily> fungot: Tokigun-san All Natural Spices Popcorn!
23:48:31 <fungot> boily: i work like 3h a day. probably more feasible for that to be annoying
23:48:47 <boily> fungot: you don't work, you don't think, stop being sentient twh
23:50:44 <tswett> All right, heck it. I want to design this fantasy video game console.
23:50:55 <oerjan> hppavilion[2]: you seem to be slipping up with policy, please recheck the rules https://www.reddit.com/r/CertainlyNotAliens/
23:51:00 <tswett> The one I'm about to design.
23:51:33 <tswett> 16-bit words. Less than a megabyte of memory. Runs at something like a million IPS.
23:53:00 <tswett> What could a reduced instruction set look like...
23:53:07 <tswett> A smallish one, I mean.
23:53:43 <hppavilion[2]> I'm just going to... https://www.youtube.com/watch?v=l8kuiXwxKKU... yeah... um... yep.
23:53:48 -!- p34k has quit.
23:54:11 <tswett> ADD, SUB, MUL, LOAD, STORE, MOV, SHR, SHL...
23:54:42 <tswett> 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 <tswett> And I'm not going to bother listing them.
23:54:58 <tswett> So apart from those, we've got, like...
23:55:34 <shachaf> why do you put "eso" in front of everything
23:55:55 <oerjan> shachaf: he's 1/4 spanish hth
23:56:03 <tswett> LOAD, STORE, MOV, JUMP, JUMP-IF.
23:56:06 <tswett> hppavilion[2]: yeah, you could call it that.
23:56:15 <tswett> It's not much more esoteric than, say, the GameBoy.
23:56:21 <tswett> But it's definitely esoteric compared to the PS4.
23:56:47 <tswett> Because I want to give people a decent instruction set.
23:57:40 <tswett> Bitwise Upward Rotation?
23:59:42 <boily> . o O ( I need to find kangaroo steak... this city has everything comestible on sale somewhere, and then some more. )