2021-09-01: 00:08:15 hm i forgot to log out yesterday 00:14:30 [[Grue]] https://esolangs.org/w/index.php?diff=87876&oldid=87871 * PixelatedStarfish * (+169) /* Meta-program Examples */ 00:18:11 [[Grue]] https://esolangs.org/w/index.php?diff=87877&oldid=87876 * PixelatedStarfish * (-2) /* Hello World */ 00:18:28 [[Grue]] https://esolangs.org/w/index.php?diff=87878&oldid=87877 * PixelatedStarfish * (-1) /* File Name Generator */ 00:20:05 [[Grue]] https://esolangs.org/w/index.php?diff=87879&oldid=87878 * PixelatedStarfish * (-20) /* Random Number (1-10) */ 00:29:21 is there a way to see all the Templates of the wiki? 00:30:48 for example I wanted to use this one but could not https://en.wikipedia.org/wiki/Template:Empty_section 00:31:57 ah I guess this https://esolangs.org/w/index.php?search=template&title=Special%3ASearch&profile=advanced&fulltext=1&ns10=1 00:32:27 https://esolangs.org/wiki/Special:PrefixIndex?prefix=&namespace=10 00:33:01 Ends up at the same place, I'm guessing. 00:33:12 More or less, anyway. 00:43:40 [[Quipu]] M https://esolangs.org/w/index.php?diff=87880&oldid=49825 * Dlosc * (+0) Fixed typo in lyrics 00:46:20 [[RASEL]] https://esolangs.org/w/index.php?diff=87881&oldid=87604 * Nakilon * (+314) added an example of how .rasela json file looks 00:47:36 still amazes me how I get the highlight sound from this bot even before the wiki page load after the save button press 00:48:20 even via the bnc web interface 00:48:21 [[Grue]] https://esolangs.org/w/index.php?diff=87882&oldid=87879 * PixelatedStarfish * (+23) /* Random Number (1-10) */ 00:49:30 [[Grue]] https://esolangs.org/w/index.php?diff=87883&oldid=87882 * PixelatedStarfish * (+45) /* Quine */ 00:55:43 -!- src has quit (Ping timeout: 252 seconds). 01:02:36 * oerjan 's mind boggles at someone wanting sound highlighting of esolangs announcements 01:04:18 I mean there is my nickname in that message 01:04:29 so I hear it 01:04:32 [[Ark]] https://esolangs.org/w/index.php?diff=87884&oldid=87349 * Spargle * (-188) /* Ark: The esolang that is actually kind of useful. */ 01:04:38 oh 01:04:54 that would do it. i doun 01:05:19 don't have sound for highlighting my own name either 01:09:18 wow, truffleruby works exactly how people describe it 01:11:03 the first second is slow but then it runs faster and after 6 seconds of running the examples/prime.rasel it reaches the usual ruby 01:27:36 [[Grue]] https://esolangs.org/w/index.php?diff=87885&oldid=87883 * PixelatedStarfish * (+9) 01:28:14 [[Grue]] https://esolangs.org/w/index.php?diff=87886&oldid=87885 * PixelatedStarfish * (+0) 01:28:55 [[Grue]] https://esolangs.org/w/index.php?diff=87887&oldid=87886 * PixelatedStarfish * (+4) 01:44:55 -!- earendel has quit (Quit: Connection closed for inactivity). 02:09:18 [[Grue]] https://esolangs.org/w/index.php?diff=87888&oldid=87887 * PixelatedStarfish * (+65) /* Syntax */ 02:09:45 [[Grue]] https://esolangs.org/w/index.php?diff=87889&oldid=87888 * PixelatedStarfish * (+19) /* Quine */ 02:10:07 [[Grue]] https://esolangs.org/w/index.php?diff=87890&oldid=87889 * PixelatedStarfish * (+9) /* Quine */ 02:18:27 [[Grue]] https://esolangs.org/w/index.php?diff=87891&oldid=87890 * PixelatedStarfish * (-51) /* Quine */ 02:53:17 -!- Corbin has joined. 03:08:25 heh 1998 http://www.cs.cmu.edu/~infobot/purl/ in that year in my town people saw computers only in western movies; maybe this IRC bot is still alive 03:11:55 last commit is 2 years ago on sourceforge 04:09:55 oh seriously? 04:11:05 https://i.imgur.com/1XCeZm4.png 04:11:42 and I'm still not there lol https://www.janestreet.com/puzzles/it-s-symmetric-2-solution/ 05:10:44 -!- Sgeo_ has joined. 05:12:57 -!- Sgeo has quit (Ping timeout: 245 seconds). 05:51:22 -!- imode has quit (Ping timeout: 244 seconds). 06:42:52 -!- Sgeo_ has quit (Read error: Connection reset by peer). 07:46:35 -!- Koen_ has joined. 08:05:21 -!- hendursaga has joined. 08:06:28 -!- tech_exorcist has joined. 08:06:59 -!- tech_exorcist has quit (Remote host closed the connection). 08:07:29 -!- tech_exorcist has joined. 08:09:24 -!- hendursa1 has quit (Ping timeout: 276 seconds). 08:23:56 -!- oerjan has quit (Quit: Nite). 11:30:06 -!- arseniiv has joined. 13:00:35 [[User talk:Fmbalbuena]] https://esolangs.org/w/index.php?diff=87892&oldid=87729 * Fmbalbuena * (+32) 13:12:32 -!- hendursaga has quit (Quit: hendursaga). 13:12:58 -!- hendursaga has joined. 13:15:24 -!- earendel has joined. 13:39:37 -!- tech_exorcist_ has joined. 13:41:01 -!- tech_exorcist has quit (Ping timeout: 244 seconds). 13:58:20 -!- Sgeo has joined. 13:58:29 -!- tech_exorcist_ has quit (Quit: Goodbye). 13:58:42 -!- vyv has joined. 13:58:52 -!- tech_exorcist has joined. 13:59:16 -!- tech_exorcist has quit (Remote host closed the connection). 14:14:35 -!- Everything has joined. 14:28:37 -!- Koen_ has quit (Remote host closed the connection). 14:39:05 -!- Koen_ has joined. 14:47:55 -!- wib_jonas has joined. 15:12:28 -!- imode has joined. 15:23:21 -!- wib_jonas has quit (Ping timeout: 256 seconds). 15:32:45 funny how they call the company "Equal Opportunity" 16:44:30 -!- earendel has quit (Quit: Connection closed for inactivity). 16:45:40 -!- SystemFFan has joined. 17:00:26 [[Talk:Unary]] https://esolangs.org/w/index.php?diff=87893&oldid=87874 * Ithkuil * (+0) /* Inefficient conversion to number */ 17:26:10 -!- arseniiv has quit (Ping timeout: 240 seconds). 17:26:33 `` echo x > a; ln a b; xz a 17:26:35 xz: a: Input file has more than one hard link, skipping 17:26:59 I wonder what the rationale behind that is 17:27:20 "compressing this won't save you any disk space... let's not do it", maybe 17:27:52 `` rm a b # it's not versioned, but it's still persistent 17:27:53 No output. 17:28:23 `` ls 17:28:24 ​:#,_@ \ 🌱 \ a.o \ a.out \ asmbf-1.2.7 \ banana.txt \ bef2 \ bfi \ bin \ compiled_brachylog.pl \ egel-master \ egel-scripts \ egel.zip \ eGtbSgN68aHU \ just \ karma \ le \ olist.new \ output.b \ paste \ pd \ pd.c \ pikhqbow_tst \ program \ -.s \ spline \ spout \ stall \ test \ test.sh \ this.py \ tmp \ wisdomls.txt \ xaa 17:29:46 -.s comes out of some GCC misuse, I think. Something like `... | gcc -x c - -S`, forgetting the `-o -` bit. I've seen it before. In my own ~/tmp, probably. 17:30:32 There's also an empty file literally called '*.spp' in my ~/tmp, not sure what's up with that. 17:30:49 maybe you should have a cron job that cleans up everything that is older than, say, a day 17:31:18 and file named as befunge code 17:31:18 ls bin 17:31:24 `` ls bin 17:31:25 rasel 17:32:13 I guess that is CAT program but with lost '>' 17:32:41 Yeah, it says "olleh" in it. 17:33:35 So it was probably from `echo "olleh">:#,_@ | ...` without considering that > will be interpreted as a shell redirection. 17:33:47 \rasel A"!dlrow ,olleH">:?@,Hj 17:33:59 output: Hello, world![LF], exit code: 0 17:34:00 ping 17:34:05 pong 17:34:30 `` wc -c bin/* 17:34:31 34 bin/rasel 17:34:46 `` cat bin/rasel 17:34:47 echo "$@" | ​/hackenv/tmp/rasel 17:34:58 `` wc -c ​/hackenv/tmp/rasel 17:34:59 wc: ​/hackenv/tmp/rasel: No such file or directory 17:35:18 meh 17:35:43 there was some another bin I guess 17:35:44 -!- arseniiv has joined. 17:36:04 `` rm bin/rasel 17:36:06 No output. 17:36:37 `` which rasel 17:36:39 ​/hackenv/bin/rasel 17:36:52 `` wc -c ​/hackenv/bin/rasel 17:36:53 wc: ​/hackenv/bin/rasel: No such file or directory 17:37:02 woah 17:37:14 `` ls ​/hackenv/lib 17:37:16 ls: cannot access '​/hackenv/lib': No such file or directory 17:37:54 how is that possible that which points to unexisting file? 17:38:54 You *might* get that from a broken symlink, but it's not that. 17:39:07 https://hack.esolangs.org/repo/file/tip/bin/rasel does exist. 17:40:21 `` file ​/hackenv/bin/rasel 17:40:22 ​​/hackenv/bin/rasel: cannot open `​/hackenv/bin/rasel' (No such file or directory) 17:41:14 `` wc -c /hackenv/bin/rasel 17:41:15 45 /hackenv/bin/rasel 17:41:35 `` wc -c ​/hackenv/bin/rasel 17:41:36 nakilon: you had some unicode garbage before the initial / 17:41:36 wc: ​/hackenv/bin/rasel: No such file or directory 17:41:45 _Oo 17:41:57 `unidecode c ​/h 17:41:59 ​[U+0063 LATIN SMALL LETTER C] [U+0020 SPACE] [U+200B ZERO WIDTH SPACE] [U+002F SOLIDUS] [U+0068 LATIN SMALL LETTER H] 17:42:04 Oh, a zero-width space. 17:42:19 Probably copy-pasted from HackEso output. 17:42:34 It adds one when the output line starts with a non-letter, as a botloop avoidance mechanism. 17:43:02 I guess I copypasted it from 20:36:39 ​/hackenv/bin/rasel 17:43:06 the good old ^O might work better? Ah I don't know. 17:43:07 yeah 17:43:27 It's Hack-Eso, not Production-Eso 17:43:40 hackesaw 17:44:21 `` ls /hackenv/lib 17:44:22 c++decl \ cdecl \ frink \ frink.jar \ interp \ karma \ kps \ morse-decode \ p7zip-16.02 \ rasel_gem 17:44:36 `` rm -rf /hackenv/lib/rasel_gem 17:44:40 No output. 17:44:55 `` rm /hackenv/bin/rasel 17:44:58 No output. 17:49:09 funny how it's hard to find where the code starts in befunge 17:49:31 I suppose this is some sort of switch-case but... https://github.com/fis/fungot/blob/47a5050c2541d8b23af4970e786449164708b328/fungot.b98#L181-L195 17:49:31 nakilon: mathematical, huh? 17:49:40 fungot esoterical 17:49:41 nakilon: also it has a white plastic ping-pong ball." works.)) be done in scheme that's dynamically adjustable 17:51:15 how do you reach the start of line 182? 17:51:45 From line 120 or thereabouts. 17:52:52 The `v_v#` at the start of line 120 (entered from the right) is I think the bit that branches based on whether the incoming line starts with the command prefix ^ or not. 17:53:31 Or if you meant the word "reload" literally, that's just a comment. 17:53:36 "reload" is just a comment, I think. Line 182 is entered from line 183, with the | 17:53:50 Yeah, "daoler"Q is the *actual* executed code. 17:53:55 which I vaguely recall to be a conditional 17:54:33 oh 17:54:37 I really haven't touched Befunge at all, beyond skimming the list of opcodes once or twice. 17:54:41 Yep, ..."daoler"Q!| uses the Q instruction from STRN to do a string comparison, and then branches up if it matches, down if not. 17:55:48 would be less misleading if those comments were not in "" but in something else, anyway 17:56:15 (just thinking about some compact switch-case for [],.-=<>) 17:56:59 -!- tech_exorcist has joined. 17:57:19 Except for [], the rest are close enough in ASCII terms that they might even be worth a jvvvv... jump table. 17:57:50 Well, maybe not. 17:58:33 line 202 is funny... "ignor" because the "e" didn't fit :P 17:59:42 Yeah... I think the reason why they're quoted is, other comments are just... regular comments *about* the code, but these are specifically mentioning strings the input is compared to. 17:59:48 there is no copypaste functionality in my IDE so to make this https://i.imgur.com/XPhcPaA.png I converted it to rasel, edited in sublime and converted back to rasela, lol 18:02:19 -!- vyv has quit (Quit: Konversation terminated!). 18:04:06 -!- src has joined. 18:15:55 -!- Koen_ has quit (Quit: Leaving...). 19:03:48 probably since I preload all the bf code into the stack I might better store the bf tape right after the code rather than doing even/odd addressing thing; just need one more cell to store the length of code permanently as a shift 19:50:34 [[Grue]] https://esolangs.org/w/index.php?diff=87894&oldid=87891 * PixelatedStarfish * (+750) /* Quine */ 19:53:47 just found that Moscow subway has already implemented a "FacePay" on 4 stations -- system that when you enter the subway it recognizes your face to take the payment 19:55:01 now I wonder when will they cancel the usual way to pay for using metro 20:36:59 [[Grue]] https://esolangs.org/w/index.php?diff=87895&oldid=87894 * PixelatedStarfish * (+69) /* Interpreter */ 20:37:44 [[Grue]] https://esolangs.org/w/index.php?diff=87896&oldid=87895 * PixelatedStarfish * (-5) /* Interpreter */ 20:40:08 [[Grue]] https://esolangs.org/w/index.php?diff=87897&oldid=87896 * PixelatedStarfish * (-1) /* Hello World */ 20:40:25 [[Grue]] https://esolangs.org/w/index.php?diff=87898&oldid=87897 * PixelatedStarfish * (-18) /* Quine */ 20:40:52 [[Grue]] https://esolangs.org/w/index.php?diff=87899&oldid=87898 * PixelatedStarfish * (+4) /* Hello World (Quine) */ 20:49:55 -!- Lord_of_Life_ has joined. 20:51:17 -!- Lord_of_Life has quit (Ping timeout: 245 seconds). 20:51:17 -!- Lord_of_Life_ has changed nick to Lord_of_Life. 20:57:21 -!- SystemFFan has quit (Remote host closed the connection). 20:58:10 -!- SystemFFan has joined. 21:00:48 -!- tech_exorcist has quit (Remote host closed the connection). 21:03:22 -!- Oshawott has quit (Ping timeout: 245 seconds). 21:03:28 -!- tech_exorcist has joined. 21:55:42 -!- Everything has quit (Quit: leaving). 22:23:22 https://i.imgur.com/MHx5rSB.png -- 6 of 8 are done 22:34:51 is there any standard on documenting addresses/registers in very low level languages? 22:36:14 for example when I look at this https://i.imgur.com/Sw0ZqPK.png I get a picture of what are the meanings of each stack position, but I get the correct picture only if the program is correct 22:36:41 and only when I run it 22:37:55 would be nice to have the "stack structure in the given moment in the program" documented in the source code 22:38:57 so then when I run it and I could compare pictures to find where the things went wrong 22:42:12 -!- tech_exorcist has quit (Quit: Goodbye). 22:42:29 There's the Forth convention on documenting the stack effect of individual words, but that's more about transitions, not about snapshots. 22:46:09 : swap ( a b -- b a ) ... ; for example, where the ( a b -- b a ) is a stack effect comment, with the initial stack (shown up to the depth affected) on the left side of the --, and the stack after the word on the right. 22:47:07 reminds haskell function type signatures 22:48:20 don't you have some stack description in fungot? I feel like I saw somthing 22:48:21 nakilon: oh my fnord on top of the simple levels, but advanced student will probably run out of mem or something even more mindless. :p i guess it's gotten more orthodox now. they certainly are easy to implement 22:49:25 I think not, I just have comments on all the important Fungespace locations. During development of individual "basic blocks" I definitely tend to write notes with stack annotations though. 22:49:31 oh I see starting here https://github.com/fis/fungot/blob/master/fungot.b98#L389 22:49:31 nakilon: how nasty is this as a " highly interested" in your fnord library and much of my last two hours chasing a *feature* with what implementation? 22:49:52 ah, those are locations in instructions space 22:50:34 Yeah. Well, the section on brainfuck exec does document the that top of stack is mostly the instruction pointer, and second on stack the data pointer. Most of the time, anyway. 22:52:36 Would've been nice to have an editor that could have retained those actual stack notes, for future editability. I usually write them by just lining out the instruction sequence vertically (one command per line in the first column, as if execution was proceeding downwards) and then rest of the line indicating the stack on that line (I don't remember whether I usually make that before or after the 22:52:38 instruction). 23:22:15 [[Grue]] https://esolangs.org/w/index.php?diff=87900&oldid=87899 * PixelatedStarfish * (+51) /* Hello World (Quine) */ 23:23:56 [[Grue]] https://esolangs.org/w/index.php?diff=87901&oldid=87900 * PixelatedStarfish * (-66) /* Interpreter */ 23:24:06 [[Grue]] https://esolangs.org/w/index.php?diff=87902&oldid=87901 * PixelatedStarfish * (-54) /* Hello World (Cheating Quine) */ 23:26:11 [[Grue]] https://esolangs.org/w/index.php?diff=87903&oldid=87902 * PixelatedStarfish * (+114) /* Interpreter */ 23:26:30 [[Grue]] https://esolangs.org/w/index.php?diff=87904&oldid=87903 * PixelatedStarfish * (+0) /* Interpreter */ 23:26:43 [[Grue]] https://esolangs.org/w/index.php?diff=87905&oldid=87904 * PixelatedStarfish * (-1) /* Interpreter */ 23:44:07 -!- arseniiv has quit (Ping timeout: 252 seconds). 23:55:31 -!- oerjan has joined. 2021-09-02: 00:01:10 -!- SystemFFan has quit (Ping timeout: 240 seconds). 01:30:16 -!- src has quit (Ping timeout: 252 seconds). 01:51:32 hm 01:51:34 [Jump past the matching ] if the cell at the pointer is 0 01:51:34 ]Jump back to the matching [ if the cell at the pointer is nonzero 01:51:34 nakilon: |value error: is 01:51:34 nakilon: | Jump past the matching]if the cell at the pointer is 0 01:52:10 I wonder if ] has to do any check actually or just go back to the [ and [ will do the check 01:52:49 probably only [ has to have a condition 02:00:41 nakilon: yeah you can choose to put the check on only one 02:01:37 if you do check, you should jump to after [ for the second case too 02:02:23 well, can. 02:03:27 reversible brainfuck is similar, except you _must_ check on both and jump past, since the tests are reversed from each other 02:21:42 -!- simcop2387 has quit (Ping timeout: 245 seconds). 02:21:42 -!- perlbot has quit (Ping timeout: 245 seconds). 02:36:48 -!- perlbot has joined. 02:38:47 -!- simcop2387 has joined. 04:26:10 hopefully this is it https://i.imgur.com/tEdX7dL.png at least it passes these tests https://dpaste.org/73HP/slim 05:07:40 -!- imode has quit (Ping timeout: 240 seconds). 05:12:45 $ printf "++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++." | ./bin/rasel examples/bf_interpreter.rasel | hexdump -C 05:12:45 00000000 48 65 6c 6c 6f 20 57 6f 72 6c 64 21 0a |Hello World!.| 05:12:46 hooray 06:03:28 I have a book called "Concrete Mathematics". They mention the operation "mod", and also "mumble" which is the other one (x mumble y = y ceiling(x/y) - x). Should they be called "punk" (according to another suggestion in this book), or do you like mumble? Or is there another name for this? 06:10:39 [[RASEL]] https://esolangs.org/w/index.php?diff=87906&oldid=87881 * Nakilon * (+202) /* Computational class */ added link to bf interpreter 06:14:08 @check \x y -> y==0%1 || y * ceiling(x/y) - x == x `rem` y 06:14:10 error: 06:14:10 • No instance for (Integral (Ratio Integer)) arising from a use of ‘ceiling’... 06:14:15 oops 06:14:33 @check \x y -> y==0 || y * ceiling(x%y) - x == x `rem` y 06:14:35 *** Failed! Falsifiable (after 9 tests and 3 shrinks): 06:14:35 7 3 06:15:12 i guess it's not that. 06:16:16 oh right 06:17:20 what is this @check thing? 06:18:01 It checks whether a proposition is true or false. 06:18:04 v. convenient 06:18:25 -!- Sgeo has quit (Read error: Connection reset by peer). 06:18:30 is it a built in haskell tool? 06:19:50 must be something similar in mathematica; but it's cool how it says "after 9 tests..." 06:42:30 [[EsoInterpreters]] https://esolangs.org/w/index.php?diff=87907&oldid=87648 * Nakilon * (+466) /* Main table */ added RASEL/Brainfuck 07:08:29 nakilon: https://hackage.haskell.org/package/QuickCheck 07:10:18 [[GG]] N https://esolangs.org/w/index.php?oldid=87908 * Hyperdawg * (+74) Created page with "'''GG''' is an esoteric programming language created by [[User:Hyperdawg]]" 07:11:01 nakilon: it's not a theorem prover, but a generator of random test cases 07:11:19 like fuzz testing? 07:11:34 perhaps? i don't know that. 07:12:18 although it also some mechanism for reducing the size of test cases, that's what the "3 shrinks" is about. 07:12:22 *also has 07:13:39 @check \x y z -> x + (y + z) == (x + y) + z 07:13:41 +++ OK, passed 100 tests. 07:13:54 @check \x y z -> x + (y + z) == (x + y) + (z :: Double) 07:13:56 *** Failed! Falsifiable (after 2 tests and 7 shrinks): 07:13:56 0.6571961060614686 -0.45461759492755616 -0.11907641039759291 07:14:16 that's IEEE floating point for you :) 07:14:42 (without the :: Double it uses Integer) 07:28:22 > let x = 1; y = 2^^(-53); z = y in (x+y)+z == x+(y+z) 07:28:24 False 07:29:06 > let x = 2; y = 1; z = 1/3 in (x+y)+z == x+(y+z) 07:29:07 False 07:29:39 > let x = 1; y = 1; z = 1/3 in (x+y)+z == x+(y+z) 07:29:40 False 07:30:06 > let x = 1; y = 1; z = 1/3 in (x+y)+z == x+(y+z :: Float) 07:30:08 False 07:32:24 So, we learned that associativity is a lie. ;-) 07:32:41 I think we learned that floating-point values are lies. 07:32:42 A crude approximation of the real world (tm) 07:33:26 Fuzz testing is a useful tool when you need to check the correctness of a kitten. 07:35:22 fungot: what does a smiley have to look like in order to be taken seriuosly? apparently ;-) isn't enough 07:35:23 int-e: a module or anything like that) was discussed in this records thread on cll about it 07:36:10 I mean, I don't think there's any doubt that you know what associativity is, and how Float works. 07:44:26 -!- Koen_ has joined. 07:47:16 Hmm, do I know that though... addition and multiplication, yes. Division, not so much. I mean I've seen long division and that cute Newton iteration x |-> x(2-ax) for 1/a, and that's about it. Inverse square root... again not so much. Transcendental functions... there's cordic but I'm not convinced it's actually used. No clue what other things there are. 07:50:53 > iterate (\x -> x*(2-5*x)) 0.3 07:50:55 [0.3,0.15,0.1875,0.19921875,0.1999969482421875,0.19999999995343387,0.2,0.2,0... 07:54:12 -!- riv has quit (Quit: Leaving). 07:54:46 Well, I hope you can know how a type works without knowing all the algorithms on that type. 07:55:26 The real test is what you call the bits of the float that aren't the sign bit or the exponent. 07:55:27 Sure, I can enjoy a sausage without knowing how it's made. 07:56:44 As with many things, there's many levels of understanding here. 07:59:41 I should know how these things are computed. 07:59:54 Man, I don't even know how integer multiplication works, really. 08:00:05 I realized I couldn't expand "ulp". 08:00:30 I think I have an OK understanding of carry-lookahead adders now. I could at least think about it and come up with a reasonable one. 08:01:54 -!- V has quit (Ping timeout: 250 seconds). 08:04:26 I read a short post that instantly answered all my questions about carry-lookahead adders and so on. It was great. 08:04:56 -!- hendursa1 has joined. 08:07:51 -!- hendursaga has quit (Ping timeout: 276 seconds). 08:08:13 I'm happy with my fancy monoid 08:09:35 Which one is that, the propagate-generate monoid? 08:14:30 it starts with the silly number-appending monoid, (d1,l1) <> (d2,l2) = (d1*b^l2,l1+l2), then integrates addition and carries into it and that'll give you something that computes 2 results (which boil down to either clearing the carry, propagating the carry, or setting a carry, if you focus on the carries alone) 08:15:29 (two results: one with incoming carry, and one without) 08:16:07 it's really overcomplicated, but it makes sense to me, and as far as me understanding something goes... that's all that matters :P 08:17:47 I suppose "generate" corresponds to two possible cases. 08:21:01 "clearing the carry" never happens, I guess. 08:21:56 0+0+c never generates a carry 08:22:09 Oh, uh, right. 08:22:58 The thing that never happens is complement. 08:23:07 right, it's monotonic 08:24:28 But nowadays I'm all about consensus things. 08:41:25 . o O ( int-e's consensus algorithm: agree to disagree. ) 08:44:03 -!- wib_jonas has joined. 08:45:03 fizzie: just use a 3-D befunge, lay out your code in 2 dimensions (since that already allows arbitrary control flow), and have comments go next to the instructions in the third dimension's direction 08:47:01 trefunge it's called 08:48:07 Hmm, I often use this style of comment: "code; // short comment" 08:48:11 of course you might want a 3D code editor for that that can view your code in any of the 48 rotated orientations, including rotating the directional instructions appropriately 08:48:21 But then if the comment is longer, I move it to its own line before the code, which feels oddly discontinuous. 08:48:24 What can I do about that? 08:49:53 shachaf: use a 21:9 monitor? ;-) 08:50:13 (does anyone else miss the 4:3 ones...) 08:50:48 int-e: not particularly, but I'd prefer to have 16:10 ones more available 08:52:26 they let me put four 30 row terminals in a 2x2 arrangement, or two 35 and two 25 row terminals etc 08:53:43 (actually only a 30 and a 29 row one, because I reserve one row for a thin taskbar at the bottom plus the border between the two terminals, and even so I have one pixel of overlap 08:53:45 ) 08:55:45 ooph, there's at least one 32:9 monitor on the market. 08:56:01 int-e: with or without touchscreen? 08:57:31 without, I think. https://www.amazon.com/dp/B07L9HCJ2V/ 08:58:12 [[GG]] https://esolangs.org/w/index.php?diff=87909&oldid=87908 * Hyperdawg * (+87) 08:58:56 [[GG]] https://esolangs.org/w/index.php?diff=87910&oldid=87909 * Hyperdawg * (+11) 08:59:28 I don't get the whole touch screen monitor thing either, not for PCs nor home entertainment. 09:01:37 Sure, I can enjoy a sausage without knowing how it's made. <-- i think it's generally acknowledged that it's even easier that way hth 09:02:17 oerjan: I thought it was better without spelling that part out 09:03:28 int-e: sure, without touchscreen it's better, it's just that the extreme ratio made me question that. 09:05:35 [[GG]] https://esolangs.org/w/index.php?diff=87911&oldid=87910 * Hyperdawg * (+4) 09:09:00 my joke detection ability is going, i can feel it 09:10:37 oerjan: Different topic, does the Geisterdamen language have a name? 09:11:38 hm not that i remember 09:12:20 ghost damn 09:12:27 okay 09:13:01 Hooloovoo: ghost dames is a more direct translation 09:13:34 oh wait 09:13:36 ladies 09:13:58 Hooloovoo: It's "ladies". (Oh and "dame" actually exists in english, as a counterpart to "knight" in the UK) 09:14:01 yeah, that sounds closer 09:14:26 * Hooloovoo was looking up "damen" 09:14:28 Ah, took too long cross-checking things. 09:15:21 although "ghost dames" is a _cognate_ translation, i presume. 09:15:22 (I knew that "dame" is one of those honorary titles in the UK, but I didn't know what exactly it corresponds to) 09:16:13 ghost damsels <- let's make it worse, shall we 09:16:24 ghost dammit 09:16:26 itym distressful 09:17:02 hmmm. They *are* distressed a lot of times, aren't they. 09:17:22 it's the tight corsets, i think 09:18:37 ...which ones... 09:20:06 the ones they have to wear to be properly dressed 09:20:25 could you do something with geist as spirit? 09:21:20 oerjan: aren't they usually naked in the lower torso area, which is what corsets tend to be made to shape? 09:21:29 Hooloovoo: perhaps, although these ladies happen to be grey in color 09:21:50 int-e: oh. i had somehow forgotten which damsels we were speaking about. 09:21:56 Hooloovoo: there's also "geist" as "intellect" 09:21:59 in a compartmented way 09:22:19 oerjan: I see 09:22:49 Yeah, corsets have been blamed for all the fainting in romance novels. 09:23:05 By all accounts they're truly breath-taking. 09:48:04 There was someone with a 32:9 monitor on the XMonad channel asking for advice on how to make it behave like two 16:9 monitors, which makes sense. 10:01:40 -!- tech_exorcist has joined. 10:19:09 . o O ( did anyone recommend a saw ) 10:21:01 hey they should support this on the monitor side. give the thing two inputs 10:22:15 int-e: the description that you linked to https://www.amazon.com/dp/B07L9HCJ2V/ explicitly says that they support two inputs 10:22:26 "Super ultra-wide 49 inch monitor provides the enhanced productivity thru split screen functions like Picture-by-Picture (PBP), letting you connect to two devices while maintaining their original quality " 10:23:17 wib_jonas: oh, do they? sounds interesting (I didn't read) 10:32:21 Yeah, I've heard ultrawides do that. Hmm, I wonder if any support acting as two inputs over a single cable with DisplayPort MST. Because if the motivation is "two devices", that's not exactly needed. 10:33:36 Incidentally, XRandR 1.5 introduced a "monitor" concept that decouples "rectangular regions shown to the user" from "outputs of a GPU", so the client can now define those arbitrarily even if it's "physically" just one output. 10:34:29 would be cool if those monitors could take inputs from two machines 10:35:01 so I could see macos and windows at the same time 10:35:05 They can, that's what wob_jonas was describing. 10:36:36 fizzie: did XRandR have to do that to support DRM that sends TV series as encrypted video to the monitor? 10:37:06 -!- arseniiv has joined. 10:38:05 also I used my home monitor with inputs from two separate computer, but not displayed at the same time, but switching with a button on the front of the monitor 10:40:25 I don't know what the XRandR monitor motivation was. I think there's been a few monitors where it's "necessary" to merge two physical outputs to a single monitor, for link bandwidth reasons, before things like HDMI 2.1 and DP 1.4 added higher-bandwidth modes, it could have been that. 10:40:40 I do the input-swapping regularly now that WFH is a thing. 10:41:12 fizzie: hmm. I thought DVI already solved the bandwidth problem by having a more expensive variant with more pins in the cable 10:41:49 people have come up with higher resolutions 10:41:54 If you're referring to single-link vs. dual-link, yes, but then people just kept on increasing both the resolution and the refresh rate. 10:42:04 People want 144 Hz now. 10:42:07 fizzie: that's what made me do it, yes. 10:42:19 Because it's apparently necessary for gaming. 10:42:46 fizzie: I believe that actually 10:43:12 Well, I believe it depends on the game. ;) 10:43:37 shooter stuff... you have up to about two frames of latency (start drawing frame, wait for vsync, wait for it to actually be displayed) 10:44:02 assuming the GPU can keep up 10:44:09 https://www.reddit.com/r/Sino/comments/pg9x4b/fake_3d_billboards/ 10:44:10 AIUI, 60, 120, 144 and 240 are the "standard" framerates now. Also, there's those "dynamic framerate" standards. 10:45:44 Regarding swapping inputs, quite handily both of my monitors have four buttons, two of which can be programmed to do a specific action. So I've got them set up so that button 1 on both selects the personal desktop input, and button 2 on both selects the work laptop input. 10:45:45 there's also the less significant effect that 120Hz is a nice fit for 24fps movies 10:45:54 much better than 60Hz 10:46:11 high fps in shooters isn't this much about latency than about the smoothness 10:46:45 there is no profit from seeing something 5 msec faster if your ping is 50 and human reaction limit around 150 10:46:47 fizzie: true, 10:47:28 but high fps helps your brain to understand what's going on and where things are moving and with which speed 10:47:42 instead of being a high framerate slideshow 10:48:21 fizzie: that's nice. on my monitor (which I'm going to replace soon), it's press the second button from the right to go from home to work computer, three times to go from work computer to home computer. (it cycles through the four inputs, in the order composite, VGA, DVI, HDMI) 10:49:45 wib_jonas and it takes monitor 2 seconds of black screen to finally switch, I hate it 10:50:02 Actually, there's a slightly curious effect from the work laptop using USB-C DP Alt Mode MST to drive both monitors over a single cable: when the directly connected monitor is switched to some other input, the indirectly connected monitor is not visible to it. So if I want to have both the work and home computers visible simultaneously (not common), I can only do that one way around. 10:51:37 the hard part is switching the keyboard actually, not the monitor 10:55:07 Oh, and when I switch from work mode to home mode, if I want to optimize it for speed, I must always switch the "second" monitor first. If I do the "first" monitor first, the second one loses signal and immediately goes to a special no-signal mode, and then those quick-access buttons don't work, but instead all buttons bring up the input selector menu, meaning the switch takes three button 10:55:09 presses (bring up menu, press up/down, press select). 11:11:41 rasel translator translates the helloworld in 80msec and then runs it in 100msec 11:11:57 rasel interpreter interprets in 400msec 11:26:17 btw, noticed it again, on https://esolangs.org/wiki/Brainfuck it says "Short program printing Hello, World! by primo" and states that its start is shifted by 4 positions 11:26:50 then it says "Currently, the shortest known program printing Hello, World! is written by KSab" but does not say that it needs shifted start too 11:27:04 both translator and interpreter throw the error 11:29:02 ^bf --<-<<+[+[<+>--->->->-<<<]>]<<--.<++++++.<<-..<<.<+.>>.>>.<<<.+++.>>.>>-.<<<+. 11:29:03 Hello, World! 11:29:05 ^bf +[-->-[>>+>-----<<]<--<---]>-.>>>+.>>..+++[.>]<<<<.+++.------.<<-.>>>>+. 11:29:05 Hello, World! 11:29:12 his codegolf stackexchnage post also doesn't mention it 11:29:53 (FTR, fungot's tape is a loop.) 11:29:53 fizzie: i mean, 11:30:13 fungot: ...you mean what? 11:30:13 fizzie: and i don't care about the result. 11:30:21 Such a grumpy bot. 11:34:46 typical. measuring speed without caring about whether the code they're timing actualy does the correct result. 11:42:40 -!- hanif has joined. 12:40:57 -!- src has joined. 12:55:48 -!- hanif has quit (Ping timeout: 276 seconds). 13:11:26 oerjan re `@check \x y z -> x + (y + z) == (x + y) + (z :: Double)`, I suggest 0.6+0.3!=0.9 as the staple example because that's true for both 32-bit and 64-bit floats, but we should probably search for an example that's false in even more common floating point types 13:12:05 one that doesn't just use loss of precision by adding two numbers of opposite sign or similar tricks 13:15:42 -!- hendursa1 has quit (Quit: hendursa1). 13:16:18 -!- hendursaga has joined. 13:19:35 wib_jonas: ok, although the main purpose of my command was to demonstrate @check, and only secondarily to demonstrate floats. 13:21:17 sure, but this is a question that I'll have to look for a good answer for anyway 13:21:18 -!- hanif has joined. 14:02:19 -!- Sgeo has joined. 14:05:31 -!- oerjan has quit (Quit: Nite). 14:06:28 apparently 1 + 2/3 != 5/3 is another example that works with float32 or float64 14:15:44 -!- delta23 has joined. 14:32:21 -!- src_ has joined. 14:34:34 -!- src has quit (Ping timeout: 252 seconds). 14:36:46 -!- src_ has quit (Ping timeout: 252 seconds). 14:40:59 -!- integral has quit. 14:41:17 -!- integral has joined. 14:41:36 -!- delta23 has quit (Quit: Leaving). 14:50:12 [[Grue]] https://esolangs.org/w/index.php?diff=87912&oldid=87905 * PixelatedStarfish * (+42) /* Syntax */ 14:58:02 -!- riv has joined. 15:15:28 -!- wib_jonas has quit (Quit: Client closed). 15:34:24 -!- chiselfuse has quit (Ping timeout: 276 seconds). 15:34:54 -!- chiselfuse has joined. 15:58:27 -!- hanif has quit (Ping timeout: 276 seconds). 16:21:57 -!- dnm has quit. 16:22:12 -!- dnm has joined. 16:22:21 -!- archenoth has joined. 16:31:39 -!- chiselfuse has quit (Remote host closed the connection). 16:31:51 -!- chiselfuse has joined. 16:43:13 -!- monoxane has quit (Ping timeout: 252 seconds). 16:51:27 -!- imode has joined. 17:51:33 -!- hanif has joined. 18:05:22 -!- Koen_ has quit (Remote host closed the connection). 18:11:09 Hmm, spam email with "Subject: esolangs". That's not too common. 18:11:46 Apparently it's meant for "the CEO", however. 18:11:55 fizzie: did you receive it at an email address at the domain esolangs.org ? 18:12:06 Yep. But there's not too much of those. 18:12:13 It was sent to webmaster@ on that domain. 18:12:52 yeah, I've sent emails that start with "Dear $websitename," 18:15:04 Allegedly an "Hongwei Ltd" is attempting to register "esolangs" as their .cn domain name and "internet keyword", but the diligent research of the guy who sent the email (a Service & Operations Manager at "China Registry (Head Office)") has revealed our "company name or trademark" is in conflict, and they want to confirm whether that's our business partner in China. 18:15:16 I think I got an identical one few months back as well. 18:16:25 The most prominent "Hongwei Ltd" would appear to be Hongwei Technologies Limited, which "manufactures and sells polyester differential fibers primarily to the yarn and textile manufacturers located in the southern People's Republic of China". But perhaps they're branching to the lucrative esoteric programming language business. 18:18:47 fizzie: oh, and among the most common types of spam I receive to my main email address are the ones that try to claim that the mail server has stopped receiving (or will stop receiving) email to my mailbox and I have to confirm my personal data and/or password to make sure I receive further emails, and those emails often mention the domain name of the email address in the subject. plus of course I get 18:18:53 spam about "Google lottery" to my gmail.com address, but that latter probably only counts for half credit. 18:20:07 I sometimes report the "Google lottery" ones through some internal channels, just for the sake of form. I get them on my non-Gmail address though. 18:20:24 Not very recently, I think. 18:22:19 I think the most common broad category of spam I get are (at least superficially) suppliers of various kinds of things for manufacturing. Like, just looking at the last few subject lines, there's "Re: Mould supplier", "Re: Both Liquid Crystal and Vacuum glass Technology", "Re: Leather products Supplies good quotation", "Re: Cooper wire mesh" and "Re: Stainless steel sintered explosion-proof net". 18:22:42 ("Cooper" was my own typo, it was in fact "Copper" in the email.) 18:24:33 fizzie: I think the only ones I've reported are (1) spam in the name of Paypal, (2) bots in twitch chat that try to sell twitch subs, and (3) the paper spam that threatens to cut some utility (electricity maybe) if you don't pay some money with the deadline being the day it was taped to the entrance 18:24:37 And "hair bundles", whatever that is. 18:25:26 fizzie: "esolang" isn't such a bad brand name for a new synthetic textile material though 18:25:41 it sort of sounds chemical and synthetic, so I think it might work 18:27:52 wait, "mould supplier"? but isn't "mould" an alternate spelling for the other meaning of "mold", the that you don't want to supply as a product because it's a generally harmful fungus, as opposed to a shaped template for materials that you shape by melting? 18:28:39 (well, not necessarily melting, it can also harden chemically a bit of time after you mix it from its components, that's how you shape silicones because they don't melt) 18:31:43 you're supposed to use the hair bundlesare for hair lengthening in your Real Fast Hair Salon I think 18:33:38 Apparently "mould" *can* be used for the other meaning of mold as well, as in the thing used for casting. 18:35:08 can it? let me check my Oxford 18:36:15 yes it can 18:36:27 that's even the first meaning of "mould" in the order the Oxford gives them 18:36:47 the second is the fungi, the third (and last) is "soft loose earth" 18:38:35 did someone say fungi 18:38:57 yes 18:39:07 befungi 18:39:39 Have I ranted about my electricity supplier yet? I feel like ranting about my electricity supplier. 18:39:54 They have a "smart" meter they can read remotely, and it came supplied with an IHD (in-home display) with CAD (consumer access device) facilities, meaning it can do wifi and talk MQTT to a broker for pseudo-real-time electricity usage data. Which is all well and good. 18:40:15 But, the endpoint it deigns to talk MQTT to is hardcoded in the device, and requires a (valid, signed-by-a-trusted-CA) TLS server certificate, so the only way to actually make *use* of that feature is to register for the Samsung SmartThings cloud service, which it will then upload usage data to, from which you're then supposed to consume it with an app. 18:41:49 blah 18:42:50 I think I read from somewhere that the regulations say the supplier must help the customer in pairing any device into the HAN (the Zigbee thing the actual meter uses to talk to the IHD) as long as it's a certified device, but from some forum conversations (a) they don't actually do that, and anyway (b) nobody seems to be making reasonably "open" yet certified devices. And anyway, I *have* a 18:42:52 device, which even knows how to export the data. It just doesn't want to export it to its nominal owner. 18:43:28 (Another thing I read is that I technically own the IHD, it's not one of those cases where I'm just renting it.) 18:49:10 -!- APic has quit (Ping timeout: 240 seconds). 19:01:09 fizzie: a lot of us have the power meters outside the home, so much more people can gain physical access to it than me or the owners. anyone in the house, and anyone who can get in the house door, which is much less well guarded than the apartment doors. as of now, people can read the total consumption from an LCD on it only when they are physically present (or if they leave a hidden camera somewhere in 19:01:15 the cupboard I guess). that's much less of a security risk. if this was a smart device and anyone who physically walks up to it could download data to it, that would be much worse. 19:01:57 -!- hanif has quit (Quit: quit). 19:02:21 fizzie: and yes, that means people can turn off electricity in my apartment by flipping a switch if they walk up there, but that's a feature for safety in case of fire or gas leaks. otherwise they'd have to cut a wire or something. 19:03:16 the actual downside is that people who walk there can vandalize the tamper seal, but then people can vandalize a lot of things everywhere and in general it's hard to protect from that 19:04:08 so I wonder how you'd imagine that only the owner can pair their device to the power meter and download the data 19:12:43 You need (cryptographic) keys from the supplier to pair a device with the meter, or something along those lines. 19:13:59 The meter is in fact not inside the flat here, it's out there in a cupboard in the corridor. Anyone living in the building can go and borrow the key, if for example they need to read it. 19:14:15 I mean, the physical key to the cupboard. 19:14:54 Which has the meters for everyone on this floor, and I think it's the same key for at least a group of floors, based on how it's marked. 19:15:04 fizzie: also isn't it like, the meter already must communicate with the provider, that's why they're installing it; and the provider must already communicate with you because they're sending you bills; so why set up a third connection when these two must already work and they can just forward you the data at not much extra cost 19:15:40 They download the data at a much lower resolution than what the meter can provide to the IHD. 19:16:17 fizzie: I've seen such physical keys. the locks often go wrong, or just nobody bothers to lock the cupboard, plus they're the numbered kind of key that anyone can buy if they just know a small integer, or buy the whole set and try each of them, or open the cupboard without the key. for this apartment, I haven't ever seen this cupboard locked. 19:16:23 fungot: do you like augmenting paths? 19:16:24 int-e: don't you mean the spec bloats the grammar, whereas the normal windows mzscheme uses normal windows libraries. what it seems like 19:17:05 I do in fact collect daily usage data from the supplier, by crawling it from their entirely undocumented GraphQL endpoint that their fancy client-side web app uses to render a chart. 19:17:14 hehe 19:17:51 do you also have a cheap camera and led light in front of the display, light it up once an hour, take a photo, and read the number automatically? 19:18:11 I have thought about doing that, yes. 19:18:47 hehe 19:19:20 and you also thought of just installing your own meter, one per every inner circuit breaker, inside the house, but found that they're horribly expensive because they're priced for industrial applications 19:20:10 It's not that I'd really *need* the high-resolution data, I'm mostly just curious about the bottom-line power usage of some devices and I feel like it'd be a fun way to measure that, to just collect samples of the "instant" energy use (which has a resolution in the order of some seconds) with and without the device plugged in / turned on, and then do some statistics. 19:21:03 yeah 19:21:26 except of course that's hard because some of your other devices, especially the fridge, can just start consuming more or less power at any time 19:22:05 Yes, that's the "statistics" part, I think if I did collect enough samples it should be possible to cluster the numbers and see how the "baseline" power usage changes. 19:22:23 yeah 19:22:31 the computers can also vary their power usage a lot 19:26:18 Incidentally, I have the IHD unit plugged to a computer, because it's powered via USB, and there was already a computer next to it anyway, so plugging the USB cable to one of the computer's otherwise unused USB ports avoids having one less AC/DC adapter. 19:27:19 Someone had opened one up and said the data lines of the USB port are not connected to anything, but that there's some places on the PCB that *could* be populated, so potentially it could act as a USB device during development or something. 19:28:27 Hmm, "avoids having one less" is probably not right. 19:29:01 I think I meant either "avoids needing one more" or "allows having one less", but mixed them up wrong. 19:32:22 "avoids having one less AC/DC adapter." => yeah, but some computers are willing to supply only much less power on their USB ports than designated fast mobile phone chargers. 19:33:11 re "meant either", or "avoids having one less AC/DC adapter remaining" 19:33:28 :-) 20:36:50 -!- delta23 has joined. 20:46:48 speaking about chinese and esoteric, just found this page https://github.com/yunwan1x/awesome-cn/blob/ee7b919f7c7ff1559a70de35f0582a199dd526b5/docs/awesome/awesome-esolangs.md#L56 20:48:35 though it feels like this guy translates all kinds of the "awesome lists" to chinese to then serve on a website 20:48:41 -!- Everything has joined. 20:50:10 nakilon: that would be a useful service 20:50:13 yeah, direct replica of https://github.com/angrykoala/awesome-esolangs 20:50:51 especially if they attribute the original somewhere 20:51:00 I don't see the original 20:51:08 I mean the attribution 20:51:42 -!- Lord_of_Life_ has joined. 20:52:10 -!- Lord_of_Life has quit (Ping timeout: 240 seconds). 20:52:47 especially funny to see "Logo used with permission of David Morgan-Mar" 20:52:56 translated 20:54:07 nakilon: it does say '
' which points to the original source 20:54:24 -!- Lord_of_Life_ has changed nick to Lord_of_Life. 20:54:35 that sounds like some github feature\ 20:54:42 I mean it has github in its name 20:55:12 where do you this div? 20:55:16 &do you see 20:55:32 in the raw content of the file https://raw.githubusercontent.com/yunwan1x/awesome-cn/ee7b919f7c7ff1559a70de35f0582a199dd526b5/docs/awesome/awesome-esolangs.md 20:55:46 that's the raw of https://github.com/yunwan1x/awesome-cn/blob/ee7b919f7c7ff1559a70de35f0582a199dd526b5/docs/awesome/awesome-esolangs.md#L56 20:56:58 but with all the client-time scripting that goes on here, I'm not sure if that results in some link or something in the rendered interface 20:58:24 -!- immibis has joined. 20:58:40 I guess it's left in the source code by a mistake or a note for the future content update, but it does not render 20:59:41 oh, no, it actually renders here https://asmcn.icopy.site/awesome/awesome-esolangs/ 21:00:17 where in that? 21:01:19 https://i.imgur.com/F5nlROo.png 21:02:08 nakilon: I see, thanks 21:02:17 great 21:02:25 then I approve of this translation thing 21:02:45 gotta check what other embedding formats github provides -- might be useful 21:09:01 got no response from shinh about rasel ( 21:21:34 -!- arseniiv has quit (Ping timeout: 252 seconds). 21:35:17 -!- tech_exorcist has quit (Quit: Goodbye). 21:35:42 wow, the libretto of Zauberflöte has a lot of different translations to hungarian, and they all render Sarastro's aria "O Isis und Osiris" quite differently 21:36:49 (for search purposes: the libretto was written by Emanuel Shikaneder) 21:40:04 the one I've hear dthe most is https://www.youtube.com/watch?v=cbJPqMwMIbc “Ó, Isis és Osiris, járjon bölcs szellemed e pár előtt! Hogy a veszéllyel szembeszálljon, adjatok nékik rá erőt! Sikerrel járjon majd a próba – ám ha az út halálos volna, bátrak jutalma nékik jár, fogadd be őket, égi pár!” 21:42:09 https://hu.wikipedia.org/wiki/Osiris,_Isis,_itt_e_p%C3%A1rnak says “Osiris, Isis, itt e párnak ó égi lelket adjatok! Ti álltok őrt a vándor útján, melletük is ti álljatok! Amerre vándorútjuk elmegy, nyíljanak égi rózsakelyhek, s ha életük útja véget ér, fonjatok nékik szent babért!” 21:43:42 https://mek.oszk.hu/14500/14584/14584.htm says the same 21:44:16 but there's even a translation that doesn't even mention Isis and Osiris 21:45:24 and no, it's not a socialist system censure either that doesn't mention any religion 21:45:35 it just says something like "o gods in heaven" or something 21:46:49 https://www.youtube.com/watch?v=tUZ0tfG7tNo has Székely Mihály singing that second translation by the way 21:49:21 or maybe that third one is just confusion, translating a different part of the lyrics? I'm trying to find out 21:50:35 maybe these are the only two translations? 21:51:13 the second one seems to have been translated by Harsányi Zsolt a long time ago 21:52:26 -!- orichalcumcosmon has joined. 21:54:46 https://www.youtube.com/watch?v=7qE88dtLHPQ is Kovács Kolos singing the first translation (“Ó, Isis és Osiris, járjon bölcs szellemed”), which is thus probably actually historically a later translation then the second one 21:55:01 s/Kovács Kolos/Kováts Kolos/ 22:01:02 that seems more reasonable than what it seemed at first. just two translations, an old one and a modern one 22:01:29 it's a typical pattern for works this famous. what do you think, fungot? 22:01:29 b_jonas: what a strange way :p). can i just use texinfo. does anyone here have a link please? :) 22:02:28 fungot: yes, the link is https://sourceware.org/bugzilla/show_bug.cgi?id=21383 22:02:28 b_jonas: if it doesn't, since i am dealing with squares anyways, it would be a 22:10:47 -!- Lord_of_Life has quit (Excess Flood). 22:11:39 -!- Lord_of_Life has joined. 22:12:07 -!- Koen_ has joined. 22:20:08 [[Mandelbrot set]] https://esolangs.org/w/index.php?diff=87913&oldid=68888 * Nakilon * (+97) /* External links */ In Brainfuck written by Erik Bosman. 22:35:02 remember I converted fungot code to png via direct translating to netpbm? I think it might be used as a weird version of QR codes 22:35:02 nakilon: strictly business. open source too. 22:36:25 but while QR codes are recovering via error correction to read the photo of text rendered in such way you have to adjust color curves 22:37:18 you can adjust curves automatically until text starts having enough many statistically valid n-grams of the known context 22:40:00 ^style 22:40:00 Available: agora alice c64 ct darwin discworld enron europarl ff7 fisher fungot homestuck ic irc* iwcs jargon lovecraft nethack oots pa qwantz sms speeches ss wp ukparl youtube 22:46:49 the idea is that while barcode readers are used to black and white images in the era of smartphones with full color cameras it's a waste of data 22:48:10 yes, it may be post-compressed with some universal compression algorithms but why? if you could just use the full color range 22:49:47 each such pixel is depicted with thousands of pixels on the photo that might be convertable to a 2 bytes deep color channel 22:50:00 or even deeper 22:50:34 so instead of 0, 1 and error correction sums you can adjust some "floats" 22:52:00 omg, thinking about https://en.wikipedia.org/wiki/QR_code#JAB_code 22:52:31 actual light sensors don't have to be used exactly on human visible spectre 22:53:09 the whole world can be marked in some not visible color range 22:54:08 damn https://www.cognex.com/blogs/industrial-barcode-reader/invisible-barcodes-help-prevent-counterfeit-products 22:58:20 a form of steganography 23:06:21 imagine fungot sending important messages here every day we just don't know how to decypher 23:06:22 nakilon: i'm also applying to be haskell apprentice from xerox parc, and vanished. kranz went to curl, rak philbin went on to become a famous phrase. 23:18:16 -!- Koen_ has quit (Quit: Leaving...). 23:25:25 also while or worse cameras you had to adjust each channel curve separately today's camera are enough good to only adjust the lightness 23:45:18 ok these guys implemented something like what I said about full color range encoding https://en.wikipedia.org/wiki/Boxing_barcode - https://github.com/piql/boxing 23:46:02 why don't I invent things before others do it... 23:47:03 https://en.wikipedia.org/wiki/Barcode 23:48:58 Because of the Bob Profit principle, is someone who think of something probably someone else has already done, too 2021-09-03: 00:28:34 -!- chiselfuse has quit (Quit: leaving). 00:29:04 -!- chiselfuse has joined. 00:52:20 -!- chiselfuse has quit (Quit: leaving). 00:52:53 -!- chiselfuse has joined. 00:55:14 -!- chiselfuse has quit (Remote host closed the connection). 00:55:47 -!- chiselfuse has joined. 00:56:05 -!- chiselfuse has quit (Client Quit). 01:09:02 -!- chiselfuse has joined. 01:17:25 -!- chiselfuse has quit (Quit: leaving). 01:18:29 -!- chiselfuse has joined. 01:21:57 -!- oerjan has joined. 01:22:52 -!- chiselfuse has quit (Client Quit). 01:45:54 -!- chiselfuse has joined. 01:46:03 -!- chiselfuse has quit (Client Quit). 01:55:15 [[Quipu]] https://esolangs.org/w/index.php?diff=87914&oldid=87880 * Jo King * (-35) updated factorial example to simpler program 02:03:10 -!- Everything has quit (Ping timeout: 240 seconds). 02:14:59 [[User:Jo King]] N https://esolangs.org/w/index.php?oldid=87915 * Jo King * (+840) created my user page, hooray 02:18:18 [[User:Jo King]] https://esolangs.org/w/index.php?diff=87916&oldid=87915 * Jo King * (+0) fixed link 02:22:05 [[User:Jo King]] M https://esolangs.org/w/index.php?diff=87917&oldid=87916 * Jo King * (-1) 02:31:45 -!- chiselfuse has joined. 02:31:45 -!- chiselfuse has quit (Client Quit). 02:38:55 -!- archenoth has quit (Ping timeout: 252 seconds). 02:47:37 -!- archenoth has joined. 02:49:21 -!- Oshawott has joined. 02:52:40 -!- archenoth has quit (Ping timeout: 240 seconds). 03:36:36 [[Special:Log/newusers]] create * MishaKlopukh * New user account 03:41:41 [[Esolang:Introduce yourself]] M https://esolangs.org/w/index.php?diff=87918&oldid=87872 * MishaKlopukh * (+191) /* Introductions */ 04:46:25 -!- delta23 has changed nick to [a]delta23. 05:10:29 [[RarVM]] M https://esolangs.org/w/index.php?diff=87919&oldid=78815 * Void * (+49) /* Hierarchical resource models: intent vs transfer */ 05:49:50 -!- orichalcumcosmon has quit (Quit: Leaving). 05:54:26 -!- monoxane has joined. 06:02:44 -!- [a]delta23 has quit (Quit: Leaving). 06:34:20 esolamg 07:51:47 -!- imode has quit (Ping timeout: 245 seconds). 08:04:07 -!- joast has quit (Ping timeout: 240 seconds). 08:04:12 -!- hendursa1 has joined. 08:06:57 -!- hendursaga has quit (Ping timeout: 276 seconds). 08:07:39 -!- Sgeo has quit (Read error: Connection reset by peer). 08:17:58 -!- joast has joined. 08:19:42 -!- xylochoron[m] has quit (Ping timeout: 245 seconds). 08:21:50 -!- xylochoron[m] has joined. 08:22:44 -!- phdu[m] has quit (Ping timeout: 252 seconds). 08:22:44 -!- Deewiant has quit (Ping timeout: 256 seconds). 08:24:26 -!- wib_jonas has joined. 08:29:21 -!- Koen_ has joined. 08:31:33 -!- Deewiant has joined. 08:33:41 -!- phdu[m] has joined. 08:35:49 [[Transfinite program]] https://esolangs.org/w/index.php?diff=87920&oldid=79792 * Glubs9 * (+228) /* Collections of real numbers as programs */ 09:13:44 -!- oerjan has quit (Quit: Later). 09:30:12 -!- Taneb has quit (Ping timeout: 272 seconds). 09:30:30 -!- Taneb has joined. 09:35:27 -!- craigoverend[m] has quit (Ping timeout: 245 seconds). 09:35:51 wow. the weather forecast says no rain for a week. I don't think I've ever seen such a flat precipitation graph yet. 09:38:32 -!- craigoverend[m] has joined. 09:45:46 -!- ProofTechnique has quit. 09:46:01 -!- ProofTechnique has joined. 09:57:42 -!- hanif has joined. 10:14:52 -!- Lord_of_Life has quit (Ping timeout: 252 seconds). 10:23:38 -!- yuu_ has quit. 10:23:53 -!- yuu_ has joined. 10:26:14 -!- tech_exorcist has joined. 10:27:42 -!- Lord_of_Life has joined. 10:53:16 -!- APic has joined. 11:11:58 -!- arseniiv has joined. 11:14:41 -!- hanif has quit (Remote host closed the connection). 11:15:01 -!- hanif has joined. 12:00:18 -!- hanif has quit (Ping timeout: 276 seconds). 13:05:52 -!- hendursa1 has quit (Quit: hendursa1). 13:06:21 -!- hendursaga has joined. 13:16:41 -!- delta23 has joined. 13:19:47 -!- fungot has quit (Ping timeout: 240 seconds). 13:35:22 -!- wib_jonas has quit (Quit: Client closed). 13:52:14 -!- hanif has joined. 14:06:10 -!- delta23 has quit (Ping timeout: 240 seconds). 14:08:37 -!- Sgeo has joined. 15:19:51 -!- hanif has quit (Ping timeout: 276 seconds). 16:32:54 -!- imode has joined. 17:04:50 -!- earendel has joined. 17:15:54 -!- hanif has joined. 17:20:45 -!- hanif has quit (Ping timeout: 276 seconds). 17:34:20 -!- Koen_ has quit (Quit: Leaving...). 17:43:10 -!- hanif has joined. 18:18:05 -!- tech_exorcist has quit (Remote host closed the connection). 18:19:42 -!- tech_exorcist has joined. 18:22:30 -!- hanif has quit (Ping timeout: 276 seconds). 18:22:30 -!- hendursaga has quit (Ping timeout: 276 seconds). 18:29:02 -!- hendursaga has joined. 18:30:02 -!- hanif has joined. 18:30:08 -!- Koen_ has joined. 18:32:31 -!- tech_exorcist has quit (Remote host closed the connection). 18:32:56 -!- tech_exorcist has joined. 18:39:24 -!- Everything has joined. 18:49:42 -!- hanif has quit (Quit: quit). 20:50:46 I think some of the block cipher modes can be used with hashes as well as block ciphers, since they do not use the decryption function of the block cipher. There are other variations that can be done too, including another way to verify the data 20:52:15 -!- Lord_of_Life_ has joined. 20:52:16 -!- Everything has quit (Quit: leaving). 20:53:25 -!- Lord_of_Life has quit (Ping timeout: 252 seconds). 20:54:55 -!- Lord_of_Life_ has changed nick to Lord_of_Life. 22:19:02 b_jonas do you mean where you live you get rain at least once a week?! 23:07:31 -!- Koen_ has quit (Quit: Leaving...). 23:33:49 -!- tech_exorcist has quit (Quit: Goodbye). 23:45:56 -!- riv has quit (Remote host closed the connection). 23:46:15 -!- riv has joined. 2021-09-04: 00:00:03 -!- joast has quit (*.net *.split). 00:00:04 -!- Corbin has quit (*.net *.split). 00:00:04 -!- Noisytoot has quit (*.net *.split). 00:02:12 -!- Corbin has joined. 00:03:01 -!- joast has joined. 00:03:40 -!- Noisytoot has joined. 00:18:09 -!- Pyautogui has joined. 00:20:40 -!- Corbin has quit (Ping timeout: 240 seconds). 00:22:25 -!- arseniiv has quit (Ping timeout: 252 seconds). 00:53:27 -!- Pyautogui has quit (Ping timeout: 245 seconds). 00:56:20 -!- Pyautogui has joined. 00:58:53 -!- Pyautogui has left. 01:14:20 -!- Everything has joined. 01:14:21 -!- earendel has quit (Quit: Connection closed for inactivity). 01:33:06 -!- oerjan has joined. 02:12:27 -!- chiselfuse has joined. 02:12:41 -!- chiselfuse has quit (Client Quit). 02:19:06 -!- chiselfuse has joined. 02:49:05 -!- sebbu has quit (Ping timeout: 250 seconds). 02:54:15 -!- sebbu has joined. 03:01:53 -!- earendel has joined. 03:20:54 -!- orichalcumcosmon has joined. 03:22:02 -!- chiselfuse has quit (Quit: leaving). 03:24:17 -!- orichalcumcosmon has quit (Client Quit). 03:26:08 -!- orichalcumcosmon has joined. 03:35:12 -!- chiselfuse has joined. 04:42:13 -!- chiselfuse has quit (Remote host closed the connection). 05:25:28 -!- Corbin has joined. 05:39:10 -!- orichalcumcosmon has quit (Quit: Leaving). 05:41:06 -!- hendursaga has quit (Ping timeout: 276 seconds). 05:43:54 -!- hendursaga has joined. 06:19:54 Specifically, the CFB, OFB, and CTR modes do not require the block cipher to be able to decrypt anything. I think ChaCha20 is like CTR mode, anyways. Maybe any mode could also be combined with XEX mode, too. 06:21:00 ChaCha20 is a stream cipher, not a block cipher 06:21:10 and CTR mode is a construction for turning a block cipher into a stream cipher 06:23:02 I think you are right that you could use something like hash(key ++ counter) in place of encrypt(key, counter) in a CTR construction 06:23:38 but i'd have to think about the formal guarantees of such a construction 06:25:11 whether it's actually secure given the usual assumptions of a cryptographic hash function 06:26:24 it's easy to come up with (contrived) examples of hashes which are resistant to collision and pre-image attacks and yet do not produce a secure stream cipher this way 06:26:46 for example pad the output of a standard cryptographic hash with zeroes 06:27:34 however a lot of the time cryptographic systems are proven secure within the "random oracle model", where hashes are replaced with an idealized randomly-chosen mapping from the input space to the output space 06:27:46 and that should suffice for a stream cipher, i think 06:35:37 Although they call ChaCha20 a stream cipher, it looks to me like a block cipher with CTR mode. 06:36:16 TIL: computers have mastered Gomoku in 2017 https://en.wikipedia.org/wiki/Gomoku#Computers_and_Gomoku 06:39:21 I once looked into Salsa20/ChaCha as an example of a modern secure cipher that might be feasible (if annoying) to work by hand 06:39:30 it's fairly simple as these things go 06:40:03 https://en.wikipedia.org/wiki/Computer_Olympiad 06:49:11 Yes, it will still be slow to work by hand for long messages, but it is still possible, I think 07:26:25 Why don't you like Free Hero Mesh? (It is similar to some (not all) of the kind of puzzle games sometimes mentioned by other people on here, and can also be considered as a alternative of Xsok and PuzzleScript (some of the features of Free Hero Mesh were designed to be similar to some of the features of those other programs, too).) Currently nobody else is on the Free Hero Mesh. If there is other IRC to suggest to try, you can suggest t 07:32:41 I suppose that the reversible ChaCha20 could be used (with key whitening) with other block cipher modes too, although I don't know if it is secure. 08:06:48 -!- hendursa1 has joined. 08:10:36 -!- hendursaga has quit (Ping timeout: 276 seconds). 08:22:51 -!- Koen_ has joined. 08:27:17 -!- Sgeo has quit (Read error: Connection reset by peer). 08:45:18 -!- imode has quit (Ping timeout: 256 seconds). 09:19:30 -!- earendel has quit (Quit: Connection closed for inactivity). 09:35:10 nakilon: in the autumn at least, sure 09:35:17 I'm not in Australia 09:37:36 and even if there's no rain for a week, the week long forecast isn't so confident in it 09:43:36 -!- tech_exorcist has joined. 09:50:43 -!- Melvar has quit (Ping timeout: 250 seconds). 09:55:22 -!- Melvar has joined. 09:57:36 -!- Melvar` has joined. 09:59:42 -!- Melvar has quit (Ping timeout: 245 seconds). 10:02:44 -!- Melvar` has quit (Ping timeout: 252 seconds). 10:13:32 -!- tech_exorcist has quit (Remote host closed the connection). 10:14:09 -!- tech_exorcist has joined. 10:15:48 -!- Melvar` has joined. 10:33:57 -!- Everything has quit (Quit: leaving). 11:56:26 -!- earendel has joined. 12:15:15 -!- chiselfuse has joined. 12:48:35 -!- Koen_ has quit (Remote host closed the connection). 12:51:08 -!- V has joined. 13:02:37 `learn The password of the month is Waiwhakaiho 13:02:40 Relearned 'password': The password of the month is Waiwhakaiho 13:04:04 oops 13:04:28 i distinctly recall having thought of a password well in advance, then forgotten about it, 13:04:31 . 13:05:00 (and of course i distinctly don't recall what it was.) 13:05:11 There'll be another month. 13:05:18 I think. 13:05:21 MAYBE 13:07:09 oerjan: That anecdote is proving a point made previously: The password of the month is most forgettable. 13:07:38 (This is a problem. I really like these kind of descriptions, but it's hard to come up with new ones.) 13:08:24 at least this month's is mysterious. 13:15:23 -!- Koen_ has joined. 13:17:25 -!- arseniiv has joined. 13:28:05 -!- hendursa1 has quit (Quit: hendursa1). 13:28:47 -!- hendursaga has joined. 13:47:01 -!- oerjan has quit (Quit: Nite). 14:13:15 -!- Koen_ has quit (Remote host closed the connection). 14:13:37 I had a pending password of the month too, maybe around May, and I remembered it for a while, but by now I've forgotten it. 14:15:55 -!- Trieste has quit (Ping timeout: 250 seconds). 14:59:33 -!- chiselfuse has quit (Remote host closed the connection). 15:00:17 -!- zegalch has quit (Remote host closed the connection). 15:00:42 -!- zegalch has joined. 15:02:59 -!- riv has quit (Quit: Leaving). 15:03:39 -!- chiselfuse has joined. 15:04:06 -!- chiselfuse has quit (Remote host closed the connection). 15:53:54 -!- earendel has quit (Quit: Connection closed for inactivity). 16:04:49 `? password 16:04:51 The password of the month is Waiwhakaiho 16:05:02 whm 16:19:30 -!- spruit11_ has joined. 16:22:27 -!- spruit11 has quit (Ping timeout: 250 seconds). 16:51:13 -!- Melvar` has changed nick to Melvar. 16:51:28 I have a number type here where (0.1 + 0.1) - 0.2 is 0.00390625 . I wonder how quickly someone will guess what number format this is. 16:53:19 > log(0.00390625)/log(2) 16:53:21 -8.0 16:54:18 -!- chiselfuse has joined. 17:00:53 -!- imode has joined. 17:06:52 Melvar: overly specific link: https://gitlab.freedesktop.org/cairo/cairo/-/blob/master/src/cairo-fixed-type-private.h#L62 17:08:47 (And no, I didn't take 15 minutes to think of a format, I just decided to act on the impulse to check whether cairo is still doing that 17:08:50 ) 17:10:12 (I thought it uses double instead these days, but that code is still there. So I don't know.) 17:14:54 While you are correct that it is a 24.8 fixed point number, the reason I have it is that the Wayland protocol includes these. 17:17:43 does wayland use pixman in any shape or fashion? 17:19:14 Supposedly wayland is a protocol, even though everyone’s *supposed* to just use the one implementation. But I don’t know if that one implementation uses pixman. 17:21:22 it's probably irrelevant anyway... it should be using 16.16 fixed point (48.16 on 64 bit platforms) 17:21:24 (One implementation *for the protocol-speaking itself*, that is. Of course, I wrote my own anyway because I felt like it, that’s why the number discussion of the past couple of days had me bring this up.) 17:22:04 As did cairo, initially... but people ran into problems with large geometries and they decided to compromise on 24.8 instead. 17:22:06 All the things in the wayland protocol are 32-bit words in host byte order, except byte arrays. 17:24:36 But the reason I was asking was that IIRC, pixman is somewhat present in the X11 protocol's Render extension, so it might have crept into wayland that way. https://github.com/D-Programming-Deimos/libX11/blob/master/c/X11/extensions/Xrender.h#L129-L130 (And yes, there's some confusion about cause and effect here :-) ) 17:24:53 ...D-Programming-Deimos... search engines are so random 17:25:11 This is especially fun because one part of the message metadata is a 32-bit word with the message length in the high half and the opcode in the low half, but you can’t (at least not fully portably in principle) read this as two 16-bit words because the order of the 16-bit words switches between little-endian and big-endian systems. 17:26:46 these days... leave it up to the compiler to figure that out 17:27:16 -!- Sgeo has joined. 17:27:42 Wayland’s thing is not actually having anything about client rendering in it, except for “how do you make the right kind of buffer” because in-GPU-memory buffers obviously need to be set up by different mechanisms than in-main-memory buffers. 17:28:04 fizzie: ENOFUNGOT 17:28:55 Melvar: then why do they have subpixel coordinates at all? 17:30:06 Oh, I'm making an assumption there. 17:30:38 Because you may render your content at a higher resolution if wayland tells you it’s being shown on a hidpi display, it seems, mainly. 17:33:28 -!- riv has joined. 17:33:32 In the core protocol, it seems that mouse, touch, and scroll events use these fixnums for their coordinates, plus for the shape properties of touch points if those are supported by your input device. 17:34:43 -!- spruit11_ has quit (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.). 17:34:59 -!- spruit11 has joined. 17:35:14 -!- fractal42 has joined. 17:36:46 So the mouse/pointer can probably only be at locations corresponding to real pixels, but with the scaling you can have multiple real pixels per unit of surface coordinates. 17:39:31 Hmm. I guess that makes sense. 17:39:48 The scaling stuff is such that the default is just that the compositor scales up your pixel data itself if you don’t say you’re rendering at the increased resolution it told you about. 17:40:49 * int-e is living a compositer-free life :P 17:40:58 Like, it tells you about the scale of any output you’re being shown on, and you tell it about the scale you’re rendering at (default 1), and the compositor has to make up the difference. 17:41:13 which I guess is borderline insane these days 17:42:04 I’m not actually using wayland either because there’s still not a functional WayMonad yet. 17:44:26 Oh, right. 17:44:37 Our interweb at home went down yesterday. 17:44:56 I even said out loud "hmm, fungot has probably dropped off", but then did nothing about it. 17:44:59 And an actual XMonad developer noted that having garbage collection in the rendering path is a problem, so a new protocol to replicate the X setup of window manager as a separate process may need to be invented before a WayMonad becomes really usable. 17:45:34 -!- fungot has joined. 17:46:36 Good thing the wayland protocol is pretty extensible. 17:49:14 I imagine pen input can have subpixel accuracy even in terms of physical pixels. At least I remember pen displays quoting ridiculous numbers for that. 17:50:19 Possibly. 17:53:21 -!- fractal42 has left. 17:53:31 Wacom's almost-entry-level Cintiq 16 (I've been thinking about getting one, purely because I have an inexplicable attraction for things with pens) has a ~142dpi 1920x1080 display, but a "5080 lpi" "pen resolution". 17:53:33 Though I feel like that's the same sort of number as printer resolutions. 17:54:44 I have certainly thought of passwords, including "DVD demagnetizer", but I don't find it important enough to set them, and it would feel dirty to automatically set them, and it's not clear where the ethics boundary is between running a script that automatically grabs the password at midnight (which timezone?) and just setting up a calendar reminder to grab the password, so I just don't do anything. 17:58:29 If I want a tablety thing I can draw on, which also has a screen so I can look at it while I'm drawing, what's the best option? 17:58:51 I mean for things like interactive online things where other people can see it. 18:00:11 Should it be a self-contained computing device, or just a peripheral to an existing computer? 18:01:25 I've been informed that the iPad Pro + Apple Pencil combination is up there, I've just personally ruled that out for software-related reasons. 18:03:01 My vague impression was that the iPad Pro Pencil thing was very good. 18:03:26 But I'm similarly not that into using an Apple thing. 18:05:03 There's also the Surface Pro and the Surface Pen, which I think wasn't bad either, but I've *also* ruled that out for software reasons. 18:05:13 HP's just introduced a "Chromebook x2 11" that supports the USI stylus standard, I've been hoping someone would review it for that sort of a use case. 18:07:48 Hmm, peripherals. Apparently there's non-Wacom stuff in this area which is not completely unaffordable. https://www.amazon.com/dp/B07SR4615F/ 18:07:54 And PINE64 recently announced they're going to produce an e-ink thing called a PineNote that's something along the lines of the Remarkable, but that's quite a different thing, what with having a monochrome and inherently-slow-refresh-rate e-ink screen. 18:08:11 I don't think the Wacom stuff qualifies as "completely unaffordable" any more. 18:08:23 It used to be a thing that Cintiq displays cost a whole lot of money, but now those really expensive ones have been rebranded "Cintiq Pro" and they've added two reasonably priced "basic" models, plus the Wacom One. 18:10:12 Hmm so they have. 18:10:16 (The 16" Cintiq 16 costs $649.95, and the 13" Wacom One costs $399.95, in terms of the Wacom store list prices.) 18:10:54 cintiq pro seems to start at $2k on Amazon 18:11:32 shachaf: hmm, my coworker recommended something that they were taking notes on, but becuse I don't want one, I don't remember what it was 18:11:37 plus it was partly software recommendation 18:18:36 wth is Windows S-mode... oh... full vendor lockin mode. 18:24:38 I think I heard something about that. 18:26:23 (my browsing drifted to cheap laptops) 18:27:16 Of course "S" officially stands for "secure" but it's really the walled garden kind of "security". 18:28:11 Not that I care all that much... as long as I can wipe it and install Linux. Which... well I guess I have to figure out for each model separately since we can no longer trust CPUs nor BIOSes to be open? 18:29:27 (CPU: https://www.servethehome.com/amd-psb-vendor-locks-epyc-cpus-for-enhanced-security-at-a-cost/ ...not sure whether this crap has made its way to non-server x86 hardware by now.) 18:55:16 -!- kronk has joined. 19:58:03 -!- Everything has joined. 20:27:38 -!- tech_exorcist has quit (Remote host closed the connection). 20:52:45 -!- Lord_of_Life_ has joined. 20:53:52 -!- Lord_of_Life has quit (Ping timeout: 245 seconds). 20:54:01 -!- Lord_of_Life_ has changed nick to Lord_of_Life. 21:05:22 There are many things that I don't like about Wayland, so I won't use it. I think instead a improved version of X could be made (mostly the core X11 stuff but with some differences), and then using proxying for security. 21:10:28 -!- tech_exorcist has joined. 21:40:42 Hmm, 2160x1440, that's an interesting resolution. (My browsing drifted to looking at first-impression comments on the HP x2 11, but nobody's been talking about the pen at all.) 21:41:28 > 2160/1440 :: Rational 21:41:29 3 % 2 21:41:57 3:2 is a nice aspect ratio though. My camera takes 3:2 pictures. 21:42:25 lol 21:42:26 $ rg "-V" ~/.rbenv/versions/2.3.8/ 21:42:26 ripgrep 12.1.1 21:42:31 I'm not judging (I think 16:9 is too wide, personally); I was just too lazy to do the math 21:42:41 can't grep for "-V" because it's a flag of a grep utility 21:42:42 Also, I'm a little worried about it being a ChromeOS device. I tried out a ChromeOS tablet with a pen once, and just couldn't figure out a way to make it do palm rejection at all, so it was really frustrating. That's why I've been thinking about the Wacom display: it doesn't do capacitive touch at all, so there's no need to worry about unintentional inputs. 21:43:07 Usually you pass arguments starting with a dash by doing -- before the arguments. 21:43:14 As in, `rg -- -V ...`. 21:43:46 worked, thanks 21:49:51 -!- ais523 has joined. 21:50:23 I sort-of want to rant about system programming languages and general-purpose pointers/references 21:50:54 -!- hendursaga has quit (Ping timeout: 276 seconds). 21:50:58 there are two things you can do with a pointer: a) pointer arithmetic operations like offset, compare, etc.; and b) dereferencing it to get at the value you're pointing to 21:51:17 -!- hendursaga has joined. 21:51:19 operations in group a) are occasionally useful, but operations in group b) are much, much more common 21:51:33 however, system programming languages seem to optimise for a) in practice 21:51:59 for example, Rust has a way to cast an &T into a *const T, and you can do this with any &T, with no restrictions 21:52:56 this means that any code that produces an &T needs to have an actual concrete memory location, with an address, for the thing that it points to, even though 99.9% of the time that's useless and the code you pass the &T to will only care about the thing it points to, not the location of the thing it points to 21:54:05 and this seems like it could make optimisation much more difficult, e.g. you can *almost* optimize an &u32 into a u32 (i.e. replacing pass-by-reference with pass-by-value in a situation where the rules of the language prevent the reference target changing), but you can't, due to the off-chance that the program you pass the reference to cares about the address 21:54:50 so I'm wondering how difficult it would be to make an optimiser that applies this optimisation anyway, and I'm wondering that it's likely to be too difficult in practice, and also suspect it may have a substantial performance impact 21:55:18 (even if not at runtime, the compiler is going to need to do a lot of inlining, etc., to spot that the address isn't being used) 21:57:22 something similar happens to constants; often you care about their value but not their address, but the compiler can't safely merge two constants with the same value if their address might be relevant 21:57:36 (incidentally, NetHack contains at least one constant with an irrelevant value, which is used only for its address) 21:57:38 I know there is X on Wayland, but is there Wayland on X? 21:58:23 Go has b-type pointers only. Which seems very reasonable to me, I don't know why more high-level languages don't have b-type pointers. 21:58:35 C has a "register" command to indicate that taking the address is not possible. 21:58:39 Zig has distinct pointer types for a and b, I believe. 21:59:10 Not that this really addresses the thing you were saying. 22:00:13 -!- tech_exorcist has quit (Quit: see you tomorrow). 22:00:23 I think languages that have some sort of escape anaysis might be able to do this sort of thing? I vaguely remember that maybe Go does something like that to know whether it can stack-allocate pointers? 22:00:23 I think that having them separate is one of the better solutions 22:00:38 Uh, stack-allocate values that it passes pointers to to things. 22:00:41 it strikes me that Rust lifetimes might be abusable to track a-ness versus b-ness of a reference 22:01:05 but, it wouldn't nest in the same way as other lifetimes 22:01:13 would be nice for making code generic over pointer types though 22:01:33 zzo38: I think it would make sense to reuse the "register" keyword as "you can't take the address of this" 22:01:41 but it would be quite a big change to the language 22:02:48 Isn't it already how the language works? 22:02:54 I thought that was the entire meaning of "register". 22:03:13 yes but it's only usable in one context 22:03:20 which is defining local variables (including function parameters) 22:03:27 Oh, I see. 22:03:41 you can't write int register* x 22:04:00 Right. 22:04:01 err, int *register x 22:04:09 (whereas int *const x says that x is const) 22:04:17 err, that *x is const 22:04:30 x is const would be int const * x or const int* x 22:04:58 C type syntax is a good example of how something can have a very simple specification but be utterly unintuitive in practice, and I'm out of practice with it 22:05:14 oh hi ais523 22:05:21 I knew you'd be summoned eventually 22:05:22 I think that the confusing syntax for types is the worst feature of C. 22:05:36 yes 22:05:40 Should I switch to writing const after the type, for consistency? 22:05:52 int const x; instead of const int x; and so on. 22:05:58 I think maybe I should. 22:06:14 shachaf: I've been wondering about that 22:06:33 int const x; is more consistent, and makes the rules easier to remember; but const int x; is much harder to misinterpret 22:06:49 I have gotten into the habit of writing *const rather than * const 22:06:52 The thing that made me remember how to make constant pointers and so on was when someone told me to think of it as a subscript. 22:06:58 As in "int *_{const} x;" 22:07:02 (I got taught that by a syntax reformatter, I forget which one) 22:07:37 -!- arseniiv has quit (Ping timeout: 245 seconds). 22:07:41 hmm, I wonder whether C's type syntax would be more readable if you just swapped the value and type 22:07:58 x: *const int versus x: const *int 22:08:23 that looks fairly intuitive? 22:08:31 I'm not so sure const is even a good idea in C. 22:08:45 Which is a separate matter from the syntax, of course. 22:08:48 x: (*int)(int, int) maybe less so 22:09:14 actually, that one's badly misleading, probably even ambiguous 22:09:26 This argument was sort of convincing: https://gist.github.com/pervognsen/a99c9b2e2712deeb5f174553b4dc0c88 22:09:51 you'd want to write the function pointer as *(int)(int, int) but that's not a simple swap of type and value 22:10:26 ais523: "you can *almost* optimize an &u32 into a u32" => in rust, the solution to that is to always just pass the value in your code, like the u32 in this case, if it works, because if it's too large, the ABI will pass it as a pointer if it's large anyway. this doesn't work if you want the called function to mutate the value, or if the value isn't movable, but both of those invalidate that 22:10:26 I think my opinion of const in C is that it's badly designed, but still helps to catch enough errors that it's worth putting up with the design flaws and false positives 22:10:32 optimization; and also if the value is not compile time fixed length, but then passing it as a function argument is a hard problem in general. 22:11:08 b_jonas: it doesn't work well with generic code, or with non-Copy things 22:11:13 a good example is Rc 22:11:31 ais523: in C++, the solution to that is this newfangled | qualifier, which I'm not sure if it actually got into C++ yet or is in proposal stage, which you use in a function argument, and means that the compiler can either write const & or nothing there, as in, pass the value either by const reference or by value 22:11:31 an Rc is 8 bytes long, and not Copy, but cloning it doesn't mutate the Rc itself (just the RcBox it points to) 22:12:01 Hmm, I still haven't figured out what Cell and RefCell in Rust are. 22:12:05 so you'd want to optimise &Rc into &RcBox to avoid the double indirection, but it's hard to see that that optimisation is valid (because someone might take the address of the Rc itself) 22:12:12 The documentation doesn't seem to answer that question. 22:12:25 shachaf: I figured it out when I wrote code that needed a custom RefCell-like thing 22:12:50 the basic idea is, a Cell is something that can be mutated through a shared (&) pointer (whereas most things need an &mut pointer to be mutated) 22:12:56 there is a reason why the actual thing you write differs in C++ vs rust, but it's irrelevant now, the main point is that both are trying to solve this and rust has solved it already 22:13:02 The memory layout of Cell is the same as T, right? 22:13:05 so, you can have a Cell, for example, and write a new u32 to it 22:13:27 and yes, memory layout is identical to T, you're just marking it as being mutatable even if there are references to it 22:13:40 Is Cell something you need unsafe-or-similar to implement? 22:13:55 it's implemented in terms of UnsafeCell, which is a compiler primitive 22:14:04 Why doesn't being able to mutate it through & cause problems? 22:14:17 there are limits on the sort of mutations you can do 22:14:40 I see, you can only write an entire new value in, or something? 22:14:46 the main rule is that you can `Copy` the value out of the cell, or overwrite a value into the cell, or swap the value in the cell with another, as long as it's only accessible from one thread 22:14:51 Rather than getting a pointer to the thing? 22:14:52 but, you can never get a reference to the value inside 22:14:57 Right. 22:15:15 `RefCell` is like `Cell` but does runtime checks rather than compile-time checks 22:15:16 RefCell`? No such file or directory 22:15:33 I think people exaggerate how bad the C pointer/array/function thing is. it's something you have to learn once, but it's not something that will cause lots of hard to debug bugs in your program or anything. as problems with function languages go, it's mild. it's something only people who want to hate C will say. 22:15:48 So you can have fn f(a: &Cell, b: &Cell); let x: Cell; { f(&x, &x); }, and f doesn't care that the values alias. 22:15:55 you can get a reference to the value inside, but only if there are no conflicting references, you get an error if you try to create a unique reference to it at the same time as any other sort of reference 22:16:01 another bad thing about C is the build system stuff 22:16:06 shachaf: right 22:16:13 And it behaves sort of like "void f(u32 *a, u32 *b);" in C, where the compiler can't assume anything. 22:16:13 C should be designed so that it can be compiled easier 22:16:23 shachaf: exactly 22:16:28 OK, got it, that makes sense. 22:16:46 Why does RefCell need runtime checks? What does it let you do? 22:16:51 ais523: also you didn't react to what I wrote about Infinite Vector, so now I have to ask you 22:17:00 ais523: does what I wrote about Infinite Vector sound right? 22:17:06 it lets you take a reference to the inside of the cell, but the runtime checks make sure that there aren't too many 22:17:13 b_jonas: it looked plausible but I didn't want to think about it too deeply 22:17:17 I'm not surprised it's TC 22:17:18 ok 22:17:34 Aha. RefCell lets you borrow the inside of the cell. 22:17:37 right 22:17:48 In particular it lets you take any number of const references or at most one mut reference? 22:17:53 yes 22:18:00 Makes sense! 22:18:05 but the type system doesn't prevent you doing both at once, which is why the runtime checks are needed 22:18:10 Right. 22:18:12 I don't know why they don't say that in the documentation. 22:18:33 I asked someone about it, and they gave an explanation that would have required Cell to have a different memory layout from T. 22:18:48 that's technically correct but misses the point 22:18:59 stuff about Infinite Vector at https://logs.esolangs.org/libera-esolangs/2021-08-31.html#lrc for future reference 22:19:36 RefCell needs a reference count to count the borrows, which does give a different memory layout, but the point is more that you need runtime checks to count the borrows 22:19:44 Yes, but Cell doesn't. 22:19:52 yep, because it can't be borrowed at all 22:19:55 So then we were both confused. 22:20:11 Anyway this makes sense, thanks for clarifying. 22:20:42 Maybe one day I'll understand Pin. 22:20:44 in practice Cell works best on things that are `Copy` and fairly small, so that you'd have little reason to borrow it (and don't need to swap a placeholder value in when you take the old value out) 22:20:46 -!- Koen_ has joined. 22:21:15 If "swap the value and type" means "pull out the identifier from the declarator, and then write the type name after it", I don't know how much that would help, since simple things are already simple, and complex declarators are probably even worse to read when the identifier isn't in there to show where to start from. 22:21:18 Go does the "strictly separate the identifier and type name" thing, but it *also* moves the [] syntax to be prefix to match *, and uses a keyword to introduce function types, which does a lot of the heavy lifting of making type names more "linear". 22:21:31 ais523: I think that's deliberately hard. you have three options: move the Rc if you no longer need it, in which case you just pass by value; or if you do need it but the called function doesn't need to keep a reference but only look at the pointed value now, then pass a reference to the pointed value, it will be valid because you're the caller and you're keeping the copy of the Rc; or if both of you 22:21:37 need it, then clone the Rc explicitly, but that's something Rust doesn't want to do implicitly without you actually writing .clone() 22:21:46 The Go syntax for types seems mostly better than the C syntax. 22:21:51 Some of it is a little odd but it's fine. 22:22:07 but that third thing is rare 22:22:09 b_jonas: this mostly comes up with generic code 22:22:09 Presumably you should have a really good reason not to make your programming language syntax LL(1). 22:22:14 Is the Go syntax LL(1)? 22:22:27 almost all generic code assumes that the receiver for methods that don't need to mutate self is &self 22:22:46 mostly people just code without thinking or caring about theory 22:22:49 Oh, not quite apparently. 22:22:51 so things end up not being LL(1) 22:23:07 I remember there's an annoying syntax quirk in Go where you sometimes need to add ()s around the controlling expression of an `if` statement, when there's {}s involved in the expression as well. 22:23:16 my opinion on this is that you normally have a separate parser and lexer anyway, so few languages are LL(1) at the byte level 22:23:20 ais523: really? aren't you confusing that with C++ or with run-time dynamic type dispatch code? 22:23:29 yes LL(1) in terms of tokens 22:23:35 and the token language should be regular 22:23:52 shachaf: no, I think that's only true for LR(1), not for LL(1) 22:23:56 riv: my opinion on this is that it'd be great if the parser and lexer could be combined 22:24:08 i suppose they can be combined 22:24:22 sure, simpler languages will be LL(1) 22:24:25 but it's good if they can be separated in terms of specification 22:24:30 b_jonas: something that always amazes me is that the syntax of yacc (after tokenisation) is LR(2) but not LR(1) 22:24:45 ais523: heh 22:24:46 some yacc implementations work around this by getting the lexer to do an extra token of lookahead 22:24:51 Hmm, I should learn how LR parsers work. 22:24:53 but it's crazy that it technically can't parse itself 22:25:06 ais523: is that because there's no separator (semicolon) between the rules? 22:25:09 and even more crazy that it's LR with a finite number that isn't 1 22:25:28 that is so funny 22:25:31 b_jonas: right, semicolons are optional, and to parse the case where they're missing you need two tokens of lookahead 22:25:48 odd 22:25:59 I wonder why they defined yacc syntax like that 22:26:14 is there some history behind it? 22:26:14 it was probably some sort of historical accident? 22:26:25 yacc probably wasn't originally programmed in itself, as it'd have been a pain to bootstrap 22:26:28 like trying to unify the syntax of two incompatible parser generator syntaxes? 22:26:34 so probably there was a hand-rolled parser, which wasn't necessarily going to be LR 22:26:48 given that the name starts "ya", though, there must have been a number of parser generators before it 22:26:49 they could have still designed it to be LR(1) :P 22:26:52 i really love this fact 22:27:09 sure, but whoever thought, let's write an LR(1) parser generator, they probably understood what makes a language LR(1), and automatically used such a syntax 22:27:30 Do you have a shift/reduce parser in your brain? I'm pretty sure I don't. 22:27:33 it's not like back when nobody knew how parsing is supposed to work, so they just wrote up syntax and figured out afterwards how to parse it, which is supposedly how fortran was born 22:27:49 Also pretty sure that while the brain has limited lookahead, the limit isn't 1. 22:28:04 I have been wondering about extensions to shift/reduce automata 22:28:24 shift/reduce/rewind seems to have a lot of power, whilst still being efficient if you put appropriate limitations on it (it's probably TC if you don't put limitations on it) 22:28:34 err, maybe LBA rather than TC 22:29:11 what is "LBA"? 22:29:25 linearly bounded automaton 22:29:39 memory bound to O(n) where n is input size? 22:29:44 logical block addressing 22:29:47 little big adventure 22:29:59 fungot, what does LBA stand for 22:29:59 b_jonas: you should avoid using it for is to eliminate the usage of funky python. 22:30:00 b_jonas: right 22:30:14 you get O(n) memory where n is the number of bits in the input 22:30:19 `? lba 22:30:21 This channel is having a Little Big Adventure(tm) with Linear Bounded Automata in devices using Logical Block Addressing. 22:30:45 I may be responsible for that one 22:30:49 `cwlprits lba 22:30:52 int-̈e 22:31:03 Man, LBA was such a big upgrade over Illogical Block Addressing. 22:31:13 Why did they even start with that scheme? 22:31:47 physical addressing by head, cylinder, sector? 22:32:02 I imagine it matched the hardware better at the time 22:32:21 shachaf: because they designed the PC before DOS brought in the unix heritage of linearly addressed block devices 22:32:53 also before HDDs made tracks have different numbers of sectors depending on how long they are 22:33:22 and automatically remap bad sectors and all that 22:33:48 you don't want to put too much complicated logic in the disk contorller, and especially not in the disk, because electronics was expensive, and there's already a CPU that can compute everything for you, so the CPU computes the cylinder, head, sector addresses and tells that to the disk controller 22:34:00 -!- delta23 has joined. 22:34:15 nowadays, disk controllers run pretty powerful processors 22:34:31 SSD controllers are presumably just ridiculous. 22:34:33 I've seen blog posts where people reprogrammed them to do interesting tihngs 22:34:46 And they should stop presenting a block device interface. 22:34:54 and communicated with their software by writing files with particular text in 22:35:04 yes, and funnily the C64's disk drive also runs a CPU about as powerful as the computer, but note that the disk drive is optional and also can be shared between multiple computers 22:35:14 What would a good interface for SSD controllers be like? 22:35:46 one complication is working out who's responsible for the filesystem, the SSD controller or the operating system 22:35:51 hrm which computer had a full CPU as floppy disk controller? 22:35:53 Another thing I was wondering about was whether desktop computers should have some amount of NVRAM that's exposed directly to applications. 22:36:12 ais523: what we want more these days is reprogramming them to *not* do interesting things, in particular, not handle shingled storage, so that the OS can handle it itself and as such better optimize it together with the file system 22:36:25 shachaf: they do, but you have to jump through lots of hoops to get at it 22:36:38 You mean in an SSD? 22:36:38 Oh b_jonas answered that 22:36:43 and also it normally belongs to the BIOS/UEFI so you can damage your bootloader if you mess with it 22:37:21 rather than, as the current state is, the hard disk manufacturer is in a war with the OS, it tries to pretend very hard that it's not a shingled drive, until one day you write too many things to it too fast, at which point it freezes for half an hour to rewrite all the data on it, the OS decides that your drive is dead and removes it from the RAID array, and you can no longer make cheap RAID setups from 22:37:24 b_jonas: apparently a major problem in practice is that they often lie about what they're doing to get beterr performance metrics 22:37:26 I just mean a region of RAM that's guaranteed to be dumped to disk on power loss. 22:37:27 cheap drives 22:37:54 yes, this is for hard disks specifically, not for SSDs 22:37:56 shachaf: ah, I see 22:38:26 int-2: the Commodore 64 had a full CPU in the floppy disk controller. just not too much RAM. 22:38:30 int-e: ^ 22:38:36 apparently even getting journalled filesystems to work correctly on power loss is difficult, because there are all sorts of error conditions like "the CPU browned out and gave bad data to the disk controller" 22:39:11 but still enough RAM to load enough code to it to completely upgrade how it reads and writes disks, rather than using its original ROM code, and still have enough buffers for that read/write thing 22:39:11 you'd need the motherboard to carefully orchestrate the order in which various components lost power when the power was cut, probably with a number of capacitors to provide emergency powre for a clean shutdown 22:40:50 ais523: I think the journaled thing came up more with old SSDs, because they were small and mostly intended as removable storage (pendrives), while I think (hope) it's mostly solved now with modern SSDs that are originally intended to be used as the main storage in computers 22:40:51 One thing that briefly surprised me is that my SSD has done a lot more writes than reads. 22:40:59 18.1 TB read, 31.6 TB written. 22:41:08 There's a nice demo for the 1541 disk drive. 22:41:18 But it makes sense because in steady state everything I use fits in the page cache, so there's no reason to ever read. 22:41:20 https://cdm.link/2021/07/freespin-is-a-demo-made-for-the-commodore-1541-no-not-the-computer-just-the-floppy-drive/ 22:41:38 But you always need to write for durability. My browser writes its state every time I open a new tab or even scroll, I think. 22:41:40 It bit-bangs a composite video signal out of the serial port. 22:41:44 how do I see my read/write stats? 22:41:56 IIRC, you need to use a computer to load it, but can disconnect the computer once it's up and running. 22:41:57 So having a region of memory you can write things to that's durable but will almost certainly be overwritten right away seems like it could be very useful. 22:43:03 I tweaked my browser.sessionstore.interval to be 3 minutes. 22:43:06 http://www.quiss.org/freespin/ would've been a better link I think. 22:43:30 Default is 15 seconds. 22:43:36 (Firefox) 22:43:54 shachaf: Mine's even more unbalanced: 535 GB read, 6.86 TB written. 22:44:13 shachaf: so basically a write-behind cache which you have little intention of ever flushing early but will get flushed on power failure, that does seem useful 22:44:22 but it's the opposite safety characteristics to a typical write-behind cache 22:44:25 When I first saw these numbers, I did a read of the entire SSD, which added 1TB, to see how long it'd take. 22:44:57 ais523: Right. 22:45:22 Maybe the OS interface can just be a regular file with a hint that you want it in this region, or something. 22:45:45 For all I know SSD controllers already do a good job at this. 22:45:52 Though I kind of doubt it, they just don't have enough information. 22:46:26 Oh my SSD doesn't report blocks read... odd? 22:47:07 got this https://dpaste.org/3ZTZ/slim 22:47:25 Hmm. The spinning disk is the exact opposite, at 37B units written and 476B units read. I don't know what the units are for "Total_LBAs_Written" and "Total_LBAs_Read". For the (NVMe) SSD, smartctl reported them in a human-readable form. 22:47:35 I'm using this machine for 2 years now 22:47:51 compared to your stats I guess it's a lot ( maybe damn google chrome? 22:49:23 SSD NAND flash is getting worse and worse to increase density, which makes these things more important. 22:50:34 as I understand the disk is dead when Available Spare goes down to Available Spare Threshold 22:51:15 int-e: I've got a (someone else's spare) SATA SSD that I use as a dual-boot (more like a never-boot) Windows drive, and I can't find any read/write stats for it either from smartctl -a output. 22:51:37 fizzie: The Internet is saying you should multiply by the "Sector Size" field, if you have one. 22:52:14 "Sector Sizes: 512 bytes logical, 4096 bytes physical" 22:53:12 fizzie: this one reports lbas written, but not lbas read. 22:53:13 OK, so you've written 19 logical TB and 152 physical TB. 22:53:16 Simple enough. 22:53:23 What an amplification factor! 22:53:29 which I guess makes some sense for NAND storage 22:54:07 This one doesn't report either. It reports a number of "Unknown_JMF_Attribute"s, but they're all 0s. 22:54:28 I've moved this SSD across several laptops by now. 22:54:42 I wonder how old it is. 22:55:11 I wonder if there would be any sort of benefit to trying to figure out some way of telling Linux that it should keep that particular SATA device just permanently powered down, since it's never going to be intentionally used. 22:55:23 the spinning rust reports a higher Head_Flying_Hours value than Power_On_Hours ...I guess it's sleepflying 22:55:34 "Date first available" for this model is apparently 2016. 22:55:48 (it's not a huge difference, about 2%) 22:55:54 oh, it's Terminal I suppose https://i.imgur.com/ggTnoDB.png I noticed before, probably because I set the buffer limit to infinity and if something prints a lot it goes to the disk; I wonder if swap usage is added as a specific app stat 22:56:31 fizzie: wait, I think there's interface for that in /proc or /sys or something 22:56:50 fizzie: I mean it's something you have to rerun after every boot, and the BIOS might power it on first 22:56:56 but after that it keeps it powered down 22:57:12 Well, I don't boot that often. I just wonder if it would be a noticeable benefit in terms of... something. 22:58:54 no idea 22:59:47 I don't really trust SSDs too much yet 23:00:04 I mean they're great for caching, but save everything to a hard disk too 23:00:21 There's also this other SATA SSD (the one I used to have in my desktop before), and that one reports via SMART counters called Read_Sectors_Tot_Ct and Write_Sectors_Tot_Ct; that one's saying 1.74 TiB read and 5.52 TiB written. 23:01:05 b_jonas lol you've hightlighted someone 23:01:38 quite possible, some people have nicks that are common words 23:04:34 Maybe I should get a new SSD. 23:06:04 I have a new SSD. I bought it with the new computer in 2020-10. I'm not using it yet, but I have it. 23:06:30 I wonder, maybe typical modern SSDs are actually slower than what I have, because they use TLC (or even QLC?). 23:07:05 I had the intent to mostly use it as read cache (no writeback cache) for the hard disk file systems, for which there are like two different mechanisms in Linux already, 23:07:38 but then I got distracted by the shingled hard disk RAID thing, and I definitely don't want to set up the read cache before I set up the RAID, because the cache has to go *over* the RAID layer 23:07:52 or at least I should understand how the whole thing works before I set it up 23:08:51 the funny thing is that only those people who bother with RAID get their data lost 23:08:57 I never bothered and never lost anything 23:09:10 also I deliberately bought a better computer than I need right now, so I don't have to get back to the hard process of selecting and buying computer parts, and wanted a configuration that can fit together 23:10:00 I wonder. RAID doesn't make sense for large distributed systems, and consumers don't use it, so the range of applications seems very limited. 23:10:12 it's like RAID -- is a technology to lose data, not preserve 23:10:17 of course that never works out, because (1) I need a new monitor now, and (2) I deliberately didn't buy a video card, only a motherboard with a free slot for video card, thinking that when I need a video card, I just buy one, but BANG advanced electronics shortage, prices shooting up, nope, you can't just buy a video card when you need it 23:11:02 What multiplier does the shortage increase price by? 23:11:09 Is it ~2x or ~10x or what? 23:11:25 shachaf: no clue 23:11:29 there are two relevant shortages I think 23:11:43 ais523: sure, the other is building supplies, especially steel 23:11:51 one of them hit high-end GPUs in particular, the prices of those went up by a lot, but lower-end GPUs were mostly unaffected 23:11:54 but that one doesn't affect me so directly 23:11:57 the other one is more general-purpose 23:12:22 I'm in the UK, which currently has shortages of pretty much everything due to a lack of transport 23:12:43 I didn't say that I won't build a house now because I can just have it built later when I need it, unlike the video card thing 23:12:48 (after brexit the amount of paperwork involved in international trade has gone way up, and scared a lot of people out of the field, so there's a shortage of employees) 23:13:19 How much does it cost to build a house normally? 23:13:31 ais523: yes, and even in the EU, trade from outside the EU (as in, importing the cheap electronics from East Asia) got somewhat harder 23:13:47 I looked at bcache a little. It feels like it would be nice to have some sort of automation as to what to put on the SSD and what to keep on the spinning disks, rather than having to manually make that decision by choosing a location in the filesystem. 23:13:55 shachaf: no idea, I don't want to have one built ever in my life 23:14:05 if I have to build one, then free market economy failed me 23:14:16 I want to rent apartments forever, and if I can't, the market sucks 23:14:26 but even then I'll probably just buy a (used) house, I won't have one built 23:15:06 so I never researched it 23:15:27 but I won't have to, because building houses is mostly for people who want to live in the suburbs or agglomeration 23:15:46 I want to live in a city, which is already densely packed with houses, and every free space immediately has a house built 23:16:10 I knew a few people who do the suburb or agglomeration thing 23:16:22 but that's definitely not the kind of life that I want 23:17:00 I wonder why people don't normally talk about used / second-hand houses 23:17:07 probably because that's the norm in many countries 23:17:18 I've heard people use that term. 23:17:27 -!- Hooloovoo has quit (Read error: Connection reset by peer). 23:18:05 ais523: probably because nobody buys a whole new house. people either buy an apartment in a house that may be new, or have a custom house built 23:18:16 if you want a whole house, and new, you want to customize it 23:19:12 the second apartment that I lived in (moved there when I was about 10 years old) was in a new house, as in, my parents reserved it and partly payed it when the house wasn't even yet built 23:19:12 not necessarily 23:19:39 near here there are lots of new houses being built to standard designs, and then people buy them new, but with no input into the design 23:19:39 I'm weirded out by the "house" thing, and the UK notion of a "housing ladder", which you're supposed to use to climb up to a house, since I've exclusively lived in apartments that are units of much larger buildings, and don't find that odd. (That's at least partially orthogonal to the question about the ownership model though.) 23:19:42 -!- Hooloovoo has joined. 23:19:50 (I have relatives who were considering buying one, but didn't like the design so chose not to) 23:20:38 fizzie: the housing ladder exists, but choosing to participate in it is optional, and seems to be mostly due to people who have an idealistic idea of what people's lives should be like 23:20:59 Well, it is talked about a whole lot, it feels like. 23:21:01 ais523: there are a few places where that happens, yes. my brother lives in a house that was probably originally built that way, because it's in a neighborhood with like a hundred family-sized houses built to the same template 23:21:12 b_jonas: right 23:21:26 that seems very common here (Birmingham specifically, I don't know whether it applies to the UK in general but it may do) 23:22:29 I don't think it's too common here in Hungary 23:22:32 it exists, but rare 23:22:42 Another thing that seems very UK-specific is this whole leasehold thing. 23:22:45 I guess people who can spend their money less practically have to be fooled, they have to be tricked to participate in the game of who will be the first buyer of a house and who'll be a "loser" to be the second buyer of it -- it just helps the builders to sell the stuff faster for their business 23:24:43 I don't think being the first occupant of a house is considered a huge advantage here 23:25:03 people care more about the location and size of the house than the number of previous owners 23:31:15 I knew a guy who was renting a 1 room flat in a very cool place in the city, it costed him 6 times more than my place, there was almost no profit in living there other than a bit smaller commute time, but mostly it was just about to be proud of where he lives 23:31:18 I guess I'll have to edit the Infinity Vector page to give at least a summary of the Turing-completeness proof 23:32:50 places like Cambridge and London seem to cause a vortex of price equalisation which caps the price of accommodation from below at the price in the centre minus the price to commute there 23:33:04 and this can extend out hundreds of miles in some cases 23:33:46 like, you can get the train from Norwich to London, so prices to live near a train station in Norwich are pretty high, taking only the cost of the train journey (which is not cheap!) into account 23:36:45 I feel like that's not quite true. Or at least that there's a pretty big variation in prices *within* London, bigger than could be explained by any transportation differences. 23:36:48 A little hard to say though. All I've seen are those "average property price" maps, and they're presumably quite a lot affected by what kind of properties there *are* in a region. 23:38:18 well, transportation within London is actually fairly difficult, to the extent that it can be a significant portion of the travel time when taking journeys where London is one endpoint 23:38:38 it has a good public transport network (although pretty bad roads), but not enough transport capacity 23:39:49 I guess the problem is basically just that the population density is too high and the workplace density is also too high 23:40:06 if businesses spread out more over the country rather than all grouping in one place, there'd be less of an issue 23:40:34 I hate that they group 23:42:39 even in the industrial age the factories were all spread, why the hell not IT companies all get crowded in centers? 23:42:47 *now 23:43:14 they don't have metal to be moved, they can work remotely, etc. 23:44:36 -!- Koen__ has joined. 23:45:33 I fucked up my health on one job with boss with a mania of having everyone being at their desks, not even spend 5 extra minutes on a dinner break; he could even come in and verbally shame someone in openspace in front of coworkers for "eating too slow" and such 23:47:07 -!- Koen_ has quit (Ping timeout: 252 seconds). 23:47:20 this was making people so stressed to be in place no matter what, for some even if their flat gets water flooded by a neighbor, for me it was ignoring the hurt it my back that I never had to ignore... 23:47:58 *in 23:48:51 fungot are you a remote worker? 23:48:52 nakilon: do you know that in knuth's volume 1 a different formula is used, ( k val...) returns as if it were, would be possible 23:50:17 A "remote worker" in fungot context would probably be some sort of a Befunge-as-a-service cloud thing. 23:50:17 fizzie: i would probably make more sense. or use lambdas. they might handle them with pieces tables ( make sense if hash maps wouldn't be better to have a coral reef. 23:51:32 he knows about AWS lambdas 23:55:13 -!- src has joined. 2021-09-05: 00:04:59 there should be a fungeoid with subroutines defined as rectangles anywhere so to call them you reach them from any of 4 sides and any row and column within their size; they take the arg and start their work internally from the local (0,0); not sure about the exit 00:05:15 oh maybe you should exit from the directly the other side of where you came from 00:07:33 the difference from the befunge is that there is a toroidal wrapping inside the subroutine so you can't exit its bounds unless using a special "return" instruction 00:08:06 so you are free to wrap around without worrying about where exactly you place the subroutine within the whole program 00:08:18 just connect them with "wires" of <>v^ 00:09:06 Heh, that's novel. I think there's some "Befunge with functions" variants, but they have "non-physical" function calls, instead of having to route the execution into the function (and handle returns as well). 00:09:50 At least with the "exit from the opposite side" approach you wouldn't need the usual "push a 'return address' and switch on exit" kind of thing to make a subroutine you can use from more than one place. 00:10:25 As long as you route each call in from a different direction, anyway. 00:13:23 you can call some small rect subroutine from thousand of places probably if you attach a "bus" to it 00:13:42 -!- Koen__ has quit (Quit: Leaving...). 00:14:10 some another block with a plenty of inputs and outputs but calling the "small subroutine" in one place 00:16:09 and then such embedding subroutines into rects allows you to create a address-agnostic drag-n-drop IDE with autotracing 00:18:40 Yes, but then you need a return switch. 00:19:31 If you have a "bus", you lose information where it was called from, meaning you'll have to push something on the stack and then branch on that something on the way back. 00:19:48 maybe I used wrong word 00:20:49 or not 00:20:55 ah I understand 00:21:32 yeah one single output pin address 00:23:37 you can create/resize such buses automatically, while the subroutine knows nothing about it 00:26:37 There's a few "subroutine"-like sections in fungot, like the brainfuck-to-bytecode translation, which is used by both `^def foo bf ...` and `^bf ...`, and those are done using that mechanism. The vertical sequences on the rightmost edge of lines 229-231, 235-240 and 262-267 are the three different destinations a program preparation subroutine can return to (the ^bf, ^ul and ^def handlers). 00:26:48 fizzie: or was it netscape?) was beaten up in otaniemi by fellow students. 00:28:24 Huh, I wonder what the context for that second part is. 00:28:55 is that DEFine and UnLearn or something? 00:29:29 That's ^def for define, and ^bf + ^ul for straight-up immediate execution of brainfuck and Underload, respectively. 00:29:44 ah 00:30:49 Have to say, for large Befunge programs some sort of auto-routing tool would probably be useful. 00:31:33 ais523: Do you think a modern instruction set would actually have Checkout-style instructions? 00:32:07 It's not clear to me whether "the things a CPU actually does" make for the best encoding to give a program to a CPU. 00:32:12 shachaf: I think Checkout is too extreme, and probably a bad idea because letting the processor infer things saves bandwidth 00:32:18 Compared to out-of-order execution and register renaming and so on. 00:32:35 modern instruction sets do have a few Checkout-style instructions; some of them aren't widely used because actually decoding the instruction costs more than the hint saves 00:32:52 Register renaming is a good example, I guess. A CPU has hundreds of registers, but you want instructions to be compact, so you may not actually want instructions to be able to address all of them. 00:33:16 there are a few instructions for manual cache control that do genuinely seem to help in practice, though, and that nonetheless aren't widely used 00:33:17 I mean, a good example of the general thing I'm getting at, not something Checkout-specific. 00:33:46 in particular, nontemporal read-write is easily worth the cost of decoding if you have an algorithm where it's useful 00:33:52 * non-temporal read/write 00:34:48 I have test programs which read and write memory in lots of different ways, and nontemporal memory access is the only thing that makes a real difference, due to where the bottlenecks are 00:36:04 (non-temporal memory operations say "I want to read/write this memory now, but don't subsequently plan to read/write the memory again until after it's fallen out of cache"; in theory they work at cache line granularity, but the API for them reads in smaller chunks and you write several instructions in a row to cover the whole cache line or the part you care about) 00:36:26 "some sort of auto-routing" this all will break if there are are g and p 00:36:48 and this is a pretty common performance pattern to have, whereas if you just use the default caching rules, you have all this data that's crowding things out of the cache and is completely useless 00:37:23 also, even without the extra cache pressure, non-temporal is a little faster at writing to / reading from main memory (but slower for writes/reads that would go to/come from cache, for obvious reasons) 00:37:53 it's a hint rather than a promise, too, so there's no undefined behaviour if you actually do need the value earlier than you said you would, just the processor has to slow down a little to find it 00:38:48 Man, modern CPUs are so complicated. 00:39:26 One thing I learned that was sort of surprising is that the common case (?) for instructions that have a register input isn't to read from the register file. 00:39:44 right, the permanent register file hardly ever gets used in practice 00:39:49 At least for out-of-order processors, where the input for the instruction was likely just made available. 00:39:57 So instead most things go through the bypass network, or something. 00:39:59 Hmm, well. In fungot's case, almost all g/p are to the first few rows (because the addresses are shorter), plus the "negative space", so as long as that's kept clear, it'd be fine. 00:40:05 only when you haven't touched a register for so long that the reorder buffer has forgotten the value, but you surprisingly actually still care about the value 00:40:07 fizzie: or actually, don't. but if you don't use empty in production code 00:40:24 Also in Funge-98 g/p are local to the storage offset, so subroutines that need "local" fungespace storage *could* be position-independent. 00:40:34 (the permanent register file normally isn't actually any slower to read than the reorder buffer, though, although a few processors can't read it twice in the same cycle) 00:40:37 (You'd just need to reset and restore the storage offset properly.) 00:42:38 out-of-order execution bothers me a little because it's mostly just working around bad compilers; the only times it gives an advantage over putting the instructions in the correct order to start with are a) when you want to perform some instructions from inside a loop after it's ended / before it's started (so you'd need to peel a few iterations to reorder manually), or b) when instructions take varying times to execute due to caching effects 00:42:49 b) is a pretty big reason, though 00:43:19 b seems like most of the point, doesn't it? 00:43:32 yes 00:43:43 Good compilers can't do much about that. 00:43:48 although, I'm not sure it actually speeds things up that much in practice 00:44:13 The Mill people claim it doesn't, and you can get away with static scheduling if you're clever. 00:44:16 I'm not sure. 00:44:31 if your data is in main memory the reorder buffer won't help because it'll fill up before you get the data you need 00:44:46 The sequence 0{2u02-u2} sets an arbitrary storage offset (, ), and leaves the previous storage offset on the stack. 00:44:58 if it's something like L1 versus L2 cache then it might help, though, the difference between those is only a few cycles 00:46:19 The Apple M1 has a 600-entry reorder buffer or something like that, people say. 00:46:29 but, only when the dependency chains were short enough that you're bound on L2 latency 00:46:30 But helping with L2/L3 is surely still a big deal. 00:47:20 Someone gave this example: "x = *p; y = *q; [process x]; [process y]; result = x + y;" 00:47:27 I'm finding it hard to think of an application where a) data is frequently in L2 or L3, but b) you can't just move the read of it earlier, and c) all this somehow forms a dependency chain so that you end up with a loop-carried dependency 00:47:43 shachaf: what are you doing with result? 00:48:01 in order to get a meaningful slowdown this needs to be in a loop and result needs to influence p or q somehow 00:48:28 and, *p and/or *q need to be in unpredictable cache hierarchy levels 00:48:41 it certainly seems possible, but this doesn't seem like a common case 00:49:02 some sort of linked list traversal, perhaps? but why would the list be in varying cache levels? 00:49:53 didn't work with local offsets 00:50:00 I just made RASEL to not bother ..D 00:50:30 I don't think I've ever actually used the storage offset, I think it's mostly a bother in at least small-to-medium sized programs like fungot. 00:50:38 fizzie: his syntax is a non-standard extension to receive, though, the empty 00:50:41 I guess I even have implemented them in my half-done funge-98 interpreter but didn't test it 00:51:31 wait, non-temporal read? I haven't considered that for cpu caching, probably because neither x86 nor MMIX seems to have it. is it actually worth? for reading files non-temporary it exists (posix_fadvise and madvise), but that's different 00:52:03 whereas SSE2 (or SSE1, I don't know which) has a non-temporal write instruction or two 00:52:48 I feel like I more often want to refer to "absolute" addresses from all around the program (as the equivalent of "global variables"), or just very temporary scratch space (which can be anywhere) as opposed to needing "scoped" local storage. Though it might be useful for position-independent self-modifying code too. 00:53:16 I don't think non-temporal read is even reasonably possible, as in, just supporting it would require too much cost for programs that never use it 00:53:21 MOVNTDQA is the non-temporal read 00:53:25 SSE4.1, apparently 00:53:42 although AVX/AVX2 also implement it 00:53:52 Hmm, I was just imagining for (i = 0; i < n; i++) { x = a[i]; y = b[i]; ... } 00:54:34 shachaf: you can prefetch x and y in that example 00:54:52 "the permanent register file" => there is a permanent register file? I thought registers always lived on the one temporary register file, and that one is huge because it has to save enough register values to roll back to several different points before instructions that are not yet finalized 00:54:53 modern processors have prefetch hints for this, but don't actually need them; they'll notice you're accessing incrementing addresses and pull the next few elements into cache just in case 00:55:07 so it's faster to not give the prefetch hints because they're effectively no-ops and tkae some time to decode 00:55:11 why would there be a separate permanent register file? 00:55:27 I mean maybe for special registers that never go to the normal register file 00:55:39 b_jonas: in case you haven't used a register for so long that it isn't in the register renamer 00:55:55 but those wouldn't be in a file I think, unless they're so useless they're basically never used for anything on a fast path 00:56:01 I think the renamer works by changing instructions from "eax" to "internal register 54" or whatever 00:56:21 but, if you don't use eax at all for a while, there'll be no instructions to rename, so it needs a permanent file to say "this register is rax" 00:56:42 you could just have a permanent place to store "rax is register 54" but you may as well store the value of rax there, rather than a reference to it, and save one register 00:57:10 out of order execution => hmm, that's an interesting point. I never thought of it like that, because pentiums were already out when I started to try to understand what x86 even does, so I took out of order execution for granted 00:57:54 in rasel there is a "problem" about the stack addressing such that the address often has to be adjust by 1, 2, 3 depending on in which place and which "routine" you use it 00:58:03 because the stack size is always different 00:58:41 once you add something somewhere in the middle of the routine all the following usings of that stack address should know it's not 1 off 00:58:45 *now 00:58:48 although I'm still quite sure I don't understand cpus enough to be able to figure out what would make their design better or worse, I'm still at the stage where I mostly try to understand how to use the existing (future high-end x86) cpus well, and a very little of understanding why some of the apparently very odd designs in the cpu may potentially be worth even though it doesn't seem like they can ever 00:58:54 be 01:00:45 ais523: doesn't out of order execution also help because it allows for more compact code, as in more instructions that can only be coded in-place, or fewer registers that you can name? 01:00:51 so it would be a "common operation" to 1. take the stack address at N and then 2. add N to it before using it in swapn 01:02:20 b_jonas: oh right, yes, I knew that once but I'd forgotten about it 01:02:31 one big benefit of out-of-order execution is saving on register names in the machine code 01:02:55 because it lets you place instructions in the order that uses the fewest register names, rather than needing to look for the most efficient order (which generally involves spreading dependency chains out through the code) 01:03:07 thanks for reminding me of this, that's a very big reason to have out of order execution 01:04:11 MOVNTDQA => you're right. I'm just stupid then. that is a genuine useful non-temporal read that I absolutely should have known about. 01:04:53 ais523: oh, and more importantly denser code because you can have instructions that reference memory directly; without instruction reordering you'd need a separate load (or prefetch) and arithmetic instruction 01:04:57 it's confusing because the difference between -A and regular instructions is normally alignment 01:05:12 but, MOVNTDQ and MOVNTDQA are both aligned-only, the difference is write versus read 01:05:15 that's probably even more important than the register count and stuff 01:05:21 I had to read the documentation about three times to figure out what the difference was 01:06:04 (and then I guess you'd also need more register names for those reads) 01:06:21 basically any time you load from outside L2 cache, you couldn't combine it with the instruction that uses that load 01:06:32 because the CPU couldn't reorder anything between 01:06:45 but a real pentium (or other reordering cpu) will reorder instructions between those 01:07:21 is there any online dictionary that would immediately give a meaning of MOVNTDQA? because I thought it's some chat abbreviation and when pasting to google I hoped for Ubran Dictionary article but nope ) 01:07:44 it's an x86_64 instruction, most of the newer ones have really weird names 01:08:12 nakilon: the "Intel 64 and IA-32 Architectures Software Developer's Manual" which you can download from somewhere on intel.com, 01:08:13 to the extent that you can often figure out how new an instruction is by counting how many letters are in its name and how unpronounceable it is 01:08:18 nakilon: as well as the equivalent AMD manual 01:08:28 I normally use the AMD manual but I have both 01:08:29 I would make a universal definition lookup IRC bot command that would try to ask other channel bots and then if failed go to online dictionaries but this one is an example that I won't know where to lookup at 01:08:42 I used to use the AMD manual, but now prefer the Intel 01:08:54 nakilon: we could add the instructions to our whatisdb I guess 01:09:33 how large is whatisdb? where is it? 01:09:35 the problem here is that it's a proper noun – the name of an instruction – which makes it hard to look up unless you know where it comes from 01:09:37 "figure out how new an instruction is" => lol 01:09:51 `whatis grep 01:09:53 grep(1) - print lines that match patterns \ grep(1p) - search a file for a pattern 01:10:03 `whatis wisdom 01:10:07 wisdom(1hackeso) - print random wisdom matching a string \ wisdom(5hackeso) - no description 01:10:18 ``` wc /hackenv/share/whatis # nakilon: 01:10:19 ​ 14662 97242 753236 /hackenv/share/whatis 01:11:56 holy shit, 14k definitions? 01:12:05 nakilon: a lot of that is stub entries 01:12:08 it's like some little country language 01:12:14 ah ok 01:12:22 the last time I downloaded the instruction list, the newest instructions were along the lines of VFNMSUB231PS 01:12:39 there are of course counterexamples like ADCX and ANDN and CMPXCHG8B 01:13:06 we're onto the AVX-512 era now, rather than the FMA wars era, but I still don't use AVX-512 because few people have a processor that handles it 01:13:10 ais523: I think those are just the highly advertised ones, the ones you need for matrix product benchmarks and occasionally for actual matrix products 01:13:39 b_jonas: well it does solve an actual problem that's hard to solve without processor help 01:14:06 oh, and CVTTPS2DQ which is from SSE2 but looks newer 01:14:08 although, it introduces yet more floating point inconsistency between processors, because you have an instruction for an accurate floating-point a * b + c 01:14:12 lol https://i.imgur.com/rc9wr9F.png 01:14:30 but, you need a pretty new FPU to use it 01:14:41 CMPXCHG8B is from pentium 01:14:46 so, do you use the instruction, in the knowledge that older processors won't be able to do the same thing and thus will produce a different result? 01:15:13 CMPXCHG8B is still only four words, though 01:15:41 ais523: yes, because it only comes up in code that will give different results depending on how the optimizer chooses to optimize it, and to some extent even to how the low-level numeric library chooses to optimize it 01:15:48 whereas, say, VPCLMULQDQ is an abbreviation of an eight-word prhase 01:15:48 well, s/only/mostly/ 01:16:27 (great instruction, though, I actually spent some time trying to find it recently because I needed it and it would have been a pain to implement without processor support) 01:17:46 wait... VPCLMULQDQ? is that a real instruction? how new is it? 01:18:23 ah, here it is, PCLMULQDQ 01:18:26 AVX (the original PCLMULQDQ was in a little feature set all of its own) 01:18:26 so it can't be that new 01:18:29 yeah 01:18:43 ok, this one I'm fine with not remembering the mnemonic 01:18:57 the https://stackexchange.com/search?q=what+is+MOVNTDQA is a little bit helpful but still no direct link to the definition 01:19:02 or anything specific about the instruction besides knowing there were a few carry-less multiply instructions 01:19:16 but yes, that can be useful 01:19:50 (and 0 results for "what is VPCLMULQDQ") 01:19:57 unlike the non-temporal loads, which I should have remembered (even if I don't know the mnemonic by heart) 01:20:35 b_jonas: I think there's only one carry-less multiply instruction (two if you count the V- version differently, but the only difference is top-half-unchanged versus zero-extension) 01:20:44 nakilon: carry-less multiply, like you need for polynomials over GF(2) 01:21:15 ais523: that is possible, though isn't there one for a specific GF(2^n) representation too? 01:21:23 looks like stackexchange failed to index own entry: https://i.imgur.com/ulTX078.png 01:21:36 yep: CRC2 01:21:40 no 01:21:42 CRC32 01:22:32 oh, and apparently the AES instructions 01:23:00 but you're probably right that PCLMULQDQ is the most general 01:23:22 oh, there's also GF2P8AFFINEINVQB 01:23:36 did you ask for eight words? 01:23:56 ah, stackexcahnge search can't automatically ignore the "what is" 01:23:58 and GF2P8MULB 01:23:59 wow 01:24:08 so many instructions 01:25:41 I've never heard of GF2P8AFFINEINVQB 01:25:44 where does that one come from? 01:25:56 same intel manual 01:26:05 I mean, which instruciton set? 01:26:10 let me check 01:26:13 I guess the universal searcher should have a huge list of dictionaries and automatically understand that "VPCLMULQDQ" should be searched in some "dictionary about CPUs" 01:26:47 "CPUID feature falg: GFNI"... I don't know then 01:26:51 it must be very new, my Intel manual from 2016 doesn't list any instructions starting with G 01:27:04 which is a bit surprising, really 01:27:23 there's also a third one that starts with GF2P8 01:27:55 nakilon: Wikipedia's search box seems to do a pretty good job of recognising CPU instructions 01:28:00 ais523: it's not surprising, most new instructions like VGATHERDPD go under V 01:28:02 while it can be understood from the 3-gram "MUL" that it's about CPU the GF2P8AFFINEINVQB is really a mess 01:28:11 there are several instructions under VG 01:28:14 although it can't find GF2P8AFFINEINVQB 01:28:31 b_jonas: Intel have moved on from V, they're onto E now I think 01:28:50 or, maybe not 01:28:53 ais523 indeed 01:28:54 maybe they still start with V? 01:29:32 including I haven't heard of this starting with E thing, but I admit I'm not following all the new instructions with a short lag 01:29:47 ah, GF2P8 means "GF(2⁸)" 01:30:05 like, I'm not familiar with all the AVX512 instructions 01:30:10 b_jonas: I think starting with E is actually the encoding summaries rather than the instruction names, thinking about it 01:30:25 ais523: yes, a particular representation of GF(2**8) 01:32:15 appears to be the representation that chooses α such that α⁸+α⁴+α³+α+1=0 01:32:30 and stores field elements as the coefficient of a polynomial in α 01:32:33 is that the usual one? I have a list somewhere 01:32:37 no idea 01:32:45 I don't even know if it's the IOCCC one 01:33:02 the problem is I can't remember where 01:33:07 well, it's in an intel instruction so it can't be a terribly unusual representation 01:33:21 presumably they wouldn't add something that nobody would use 01:33:39 CRC32 and AES certainly use existing ones 01:34:07 found it 01:34:10 I mean those instructions implement crypto primitives that were used already before they got x86 instructions 01:34:24 [2,8,[1,0,1,1,1,0,0,0,1]], 01:34:42 unfortunately I also can't remember what format this file is in, but that doesn't look like α⁸+α⁴+α³+α+1=0 01:36:09 if there is such a list, it might be somewhere in https://www.jjj.de/fxt/ 01:36:15 looks like that's ordered with the α⁰ coefficient at the start, and α⁸ a the end, so it's α⁸+α⁴+α³+α²+1=0, not quite the same 01:36:31 http://www.math.rwth-aachen.de/~Frank.Luebeck/data/ConwayPol/index.html 01:36:44 (luckily I'd recorded the place I got the file from next to the file itself) 01:39:22 wow the definition of "smallest polynomial" here is weird, it looks for the highest coefficient that differs, then decides which is larger or smaller based on the value of that coefficient xor whether the difference between its exponent and the polynomial's degree is odd or even 01:39:40 I assume there's a reason for that, because I can't imagine this would be a standard definition for no reason 01:40:59 https://www.jjj.de/mathdata/all-primpoly.txt lists all polynomials used to compute GF(2**n) for n<=11 01:41:53 the one you mention α⁸+α⁴+α³+α²+1 is apparently the first in the order used in that list 01:42:23 and α⁸+α⁴+α³+α+1=0, mentioned on the website you linked, doesn't give a finite field 01:42:23 that page is linked from https://www.jjj.de/mathdata/ 01:42:34 so probably there's a typo on either the website, or in the intel documentation it draws its information form 01:42:43 huh... 01:43:00 ais523: no, it's 8,4,3,2,0 01:43:31 α⁸+α⁴+α³+α+1=0 is only in the intel manual 01:44:13 b_jonas: sorry, by "the website you linked" I meant the older link 01:44:30 what odler link? 01:44:31 to the Intel instruction, not to the finite field polynomials 01:44:41 you didn't 01:44:42 I linked to a website with the intel instruction? 01:44:44 ah ok 01:44:49 I found it by a web search and assumed you'd linked it to me 01:45:13 https://www.felixcloutier.com/x86/gf2p8mulb 01:45:19 oh... 01:45:29 I assumed you'd just download a later intel or amd manual for it 01:45:32 it could possibly be a PDF extraction error? 01:45:43 I don't want to have to keep downloading manuals for this 01:45:46 I have two of them already 01:45:55 no, it's the intel manual that says x**8+x**4+x**3+x+1 01:45:55 admittedly the bandwidth doesn't cost much nowadays 01:46:02 um... 01:46:08 "I have two of them already" ... but 01:46:13 if they're obsolete 01:47:26 I'm assuming the old instructions don't change very much 01:47:43 so an old manual will still be good for anything other than newly invented instructions 01:48:02 https://xkcd.com/345/ "Hush, I'm coding. You ate yesterday." 01:48:14 I don't need to buy food, I already bought food twice 01:48:25 ais523: yes, the old instructions rarely change, 01:48:46 but if the newly invented one for the GF(2**8) interests you 01:49:12 I guess 01:49:13 anyway, the intel manual says the polynomial is "x**8 + x**4 + x**3 + x + 1" (the powers set with superscripts) 01:49:29 it's wrong, surely, that wasn't on the list of valid polynomials you linked 01:50:19 yeah, that's odd 01:50:59 speaking about figuring out which dictionaries to look up, I guess [tags] here do the job https://i.imgur.com/FfAxjZC.png 01:51:14 I don't have a recent AMD manual 01:51:44 but hm, only 12 results and tags don't intersect much so it would need to prebuild some tag topic clouds 01:51:47 ooh, Intel now has a combined PDF that does all the instructions in one PDF, that's a good enough reason to download a new one 01:52:26 three results for G... https://stackexchange.com/search?q=GF2P8AFFINEINVQB 01:52:50 ais523: yes, it has all in one PDF. it still has the separate volumes for printing, but who prints a full Intel manual? 01:53:03 that's weird that not all search results display tqgs 01:53:13 b_jonas: it was split last time I looked 01:53:16 I guess it's been five years 01:53:46 ais523: it exists as split pdfs too. and you still need to download the optimization manual in two separate pdfs (one general and one specific for your microarchitecture) besides the combined volume, and sometimes there's a supplement for planned future instructions 01:53:55 oddly, it still has separate chapters for A-L, M-U, V-Z 01:54:11 ais523: yes, it's literally "combined volumes" as in all "printed" volumes in one PDF 01:54:20 with the covers changed, but not much else 01:54:29 for optimization, I normally look at Agner Fog's manuals rather than the official ones, they're generally more accurate and also make it easier to work out what would run well on multiple architectures 01:54:43 ais523: sure, but I want to have both 01:55:06 I mean ideally I should have up to date AMD manuals too, but I don't 01:55:18 (I have rather old ones) 01:56:20 I tend to treat AMD's as the "official" ones as they invented x86_64 01:56:40 although, in practice, whatever Intel does tends to become standard because they have such market dominance 01:57:32 so two of 3 search results have the tag "assembly" and the top google result is the page with a nice list of them https://www.felixcloutier.com/x86/ 01:58:03 ais523: I think they're both official only for the CPUs that they each sell, but in practice those are very close and have almost no incompatibilities so you can use the other manual 01:58:30 there are two things you can do with a pointer: a) pointer arithmetic operations like offset, compare, etc.; and b) dereferencing it to get at the value you're pointing to – Of course, the latter is very much not specific to pointers. 01:59:25 Melvar: definitely; the problem is that many systems programming languages don't have anything efficient that does just b), if you want b) from a primitive then you get a) too 01:59:33 which rather hinders optimisation opportunities 02:00:58 Also the support for “peek but no poke” is limited apparently? 02:02:25 truly read-only pointers are rare, although most languages have something comparable but with weird edge cases 02:02:35 at the language level, that is 02:02:46 it's quite easy to get modern CPUs to not let a program write to particular areas of memory at all 02:05:02 wow rubygems have webhooks https://guides.rubygems.org/rubygems-org-api/#webhook-methods so I can make a \rasel remote executor to redeploy the function if I update the gem; that's not something to do often (or even ever) but it also makes me thinj of using github webhooks in a similar way to automatically update the IRC bot handlers 02:05:59 of course it can also pull the master HEAD every time but it would make the command work one second longer and the handler will break if something happens to the repo 02:06:04 . o O (Haskell has three different representations that correspond to pointers) 02:06:40 though the "something happends to the repo" isn't much more possible thing to happen than to "happen with the GCP Functions" since the github repo isn't billed 02:07:16 (Well, GHC.) 02:21:37 -!- oerjan has joined. 02:37:59 [[Talk:OISC]] M https://esolangs.org/w/index.php?diff=87921&oldid=86793 * VitalMixofNutrients * (+2804) I want to dispute the claim that FlipJump is the simplest OISC, by proving that Bit-Bit-Jump is actually the simplest and can evaluate conditional statements unlike FlipJump. 02:46:45 a few days ago I dreamed that I was joined on an IRC channel, and since waking, I'm wondering if that was trying to reference a specific real channel that I once joined, presumably on freenode, or if it was completely invented 02:47:56 what was the Nitter analogue for Instagram? 02:50:34 "simplest OISC" seems like an interesting argument to get into 02:52:01 although, the argument on that page doesn't seem to help much 02:54:05 [[ID machine]] N https://esolangs.org/w/index.php?oldid=87922 * B jonas * (+25) redirect because that's where I looked and the search results didn't help 02:54:06 Yeah. Turing-completeness is like an overly-full grilled sandwich; it doesn't matter whether it's panini or cubano, it is going to leak. 02:54:46 OISC systems have to have some essential complexity somewhere. If it's squeezed out of the instruction count, then it'll show up again in the instruction definition. 02:57:30 the discussion didn't mention TCness, so I guess an OISC with a nop instruction is the simplest 02:57:35 does 1.1 count as a OISC? 02:58:06 pretty much anything can be interpreted as an OISC if you try hard enough 02:58:22 I'm not sure it's something that can be objectively defined 02:58:32 heck, does slashes or Thue count as an OISC? 02:59:03 The Waterfall Model is arguably a ZISC (I actually found the ZISC formulation first, and it wasn't until I discovered the language a second time that I realised how easy it was to implement) 02:59:07 I think that OISC and ZISC are perspectives. 02:59:19 yes, that's a good way to put it 02:59:39 now I want sandwich ( 02:59:40 although, I do have the (possibly incorrect) view that an OISC/ZISC has to be imperative 03:00:24 the nondeterministic-as-in-declarative version of Thue, therefore, probably isn't (I still think this is the intended definition, as opposed to "replace a random substring") 03:00:30 It's fine for a ZISC machine to have computable (say, poly-time) small-step behavior, but be Turing-complete under iteration. That's how I think of The Waterfall Model, at least. 03:00:47 yes 03:00:47 there are languages where I don't even know how to count how many instructions they have 03:00:59 actually it's very common for TC languages to have simple small-step behaviour 03:01:45 are there languages without instructions? 03:01:51 oh, any 2-instruction no-argument language (e.g. Brainpocalypse or the I/D machine) can be made into an OISC by run-length encoding it 03:02:02 nakilon: that depends on your point of view 03:02:09 ais523: would you count a one-combinator basis of combinatorial calculus an OISC? and is it imperative? 03:02:45 b_jonas: only if it somehow worked without a precedence override, which is probably impossible (if you want to stay TC) 03:02:54 ais523: isn't that only if at most one of the two instructions have operand fields? 03:03:13 b_jonas: I guess, if you want to let the combined instruction take multiple arguments 03:03:31 ais523 people build everything with blocks, write music with notes, even that esolang where you put things on the table has things as instructions 03:03:47 I wonder if there is anything that can't be broken into discrete parts 03:04:05 nakilon: I have been looking for a language like that but failed to find one 03:04:18 I'm not sure what counts as instructions in Consumer society, even though it is imperative and programs have a source code 03:04:26 But Is It Art? is a good counterexample to a lot of statements about languages, it arguably doesn't have instructions 03:04:55 or the Post correspondence problem, that's like a 1D version of BIIA? 03:05:06 [wiki But Is It Art?] [wiki Consumer society] 03:05:07 but, they both still have composability in a sense 03:05:12 thread error 03:05:17 https://esolangs.org/wiki/But_Is_It_Art? 03:05:25 I'm not sure if Consumer Society has one 03:05:26 does Conway's Game of Life have instructions? 03:05:31 https://esolangs.org/wiki/But_Is_It_ArtF 03:05:34 https://esolangs.org/wiki/But_Is_It_Art%F 03:05:49 gah, what is up with the escaping here 03:05:51 https://esolangs.org/wiki/But_Is_It_Art%%F 03:05:54 Consumer Society doesn't have a wiki page because I haven't published its definition yet and I didn't want to create a completely useless stub 03:05:56 https://esolangs.org/wiki/But_Is_It_Art%3F 03:06:00 [wiki But Is It Art?] 03:06:01 https://esolangs.org/wiki/But%20Is%20It%20Art%3F 03:06:08 there we go 03:06:21 idk why it timed out on the first try 03:06:21 I needed to type two percent signs and two 3s for some reason 03:06:30 either google or wiki were cold I guess 03:06:30 `addquote Yeah. Turing-completeness is like an overly-full grilled sandwich; it doesn't matter whether it's panini or cubano, it is going to leak. 03:06:34 1334) Yeah. Turing-completeness is like an overly-full grilled sandwich; it doesn't matter whether it's panini or cubano, it is going to leak. 03:07:49 does C have instructions? 03:08:11 it has statements, those are a decent analogue for instructions 03:08:17 or Algol might be a better question 03:08:40 ais523: ok, if statements matter then how about just lambda calculus? 03:08:40 something like Diophantine equations are a good example of something that doesn't clearly have separate statements 03:09:10 b_jonas: I think the best way to think about lambda calculus imperatively is that apply is the statement 03:09:16 or the instruction 03:09:28 might be 03:09:36 heh https://esolangs.org/wiki/Matrioshka_language -- the "matrIOshka" is a word with Ё 03:09:46 this is very clear in unlambda, the only thing that actually does anything is the backquote 03:10:21 nakilon: I think "matrioshka" is an English word which was borrowed from Russian, but often those words change in the borrowing 03:10:56 I had matrioshka 03:11:06 when I was like 5 03:11:33 e.g. "babushka" is an English word by now but the vowels are all different compared to the Russian original 03:11:44 I have a small matrioshka 03:11:56 I certainly didn't have one when I was 5 03:12:13 (the English version of the pronunciation is inherently funny to say which is why it caught on, but would be annoying to use on a regular basis) 03:13:42 Wiktionary says it's pronounced bəˈbuːʃ.kə in English, the Russian version is ˈbabʊʂkə which is quite different 03:14:18 English is really weird sometimes 03:14:21 yeah, I heard that the accent is in different place 03:15:13 My favorite example of English inability to pronounce things right is French "marche" vs. English "mush". 03:15:25 By the way, the Russian system of indicating the stressed syllable with a mark *over* the vowel rather than next to it is so much better. 03:15:25 Words often change in borrowing between different language 03:16:53 Sometimes even in borrowing within the same language. 03:17:55 Yes, even same language too sometimes 03:20:21 IIRC there are some cases where English borrowed the same word twice, with two different meanings, but can't think of any offhand 03:21:36 in modern Russian the lack of a culture of education (in Soviet time it was cool to know things, read a lot, etc.) and internet with all its memes and hypes makes young people often learn anglicisms instead of using the Russian word that always existed but teachers didn't bother to teach kid it 03:22:05 ais523: I'm not sure if "proof" vs "probe" counts 03:22:14 for what you're looking for 03:22:51 huh, that's interesting, "prove" once used to mean "test" (i.e. an effective synonym of "probe") but the meaning changed over time 03:23:10 shachaf: that's also the Greek and Spanish system, but unlike the russians those actually use it 03:23:10 so maybe we borrowed it twice, with the same meaning, but the meaning diverged in between? 03:23:34 ais523: I think it's actually borrowed as "proof" and "probe", and "prove" was derived from "proof" in English, but I'm not sure 03:24:12 as for meaning change, that's why "proof of the pudding" makes no sense 03:24:36 looks like "prove" in French was the borrowed word 03:25:03 for "prove"/"proof" 03:25:08 for example, people installing and using software with a messaging functionality and lacking the Russian localisation learn the word "message" and don't use the word "сообщение" 03:25:13 whereas "probe" was the same word but borrowed from Latin 03:25:22 they say месседж or мэсседж 03:26:43 in 5 or 6 years time, probably the loanword will be a real word with the meaning of "a message sent over the Internet in particular", the way these things normally go 03:27:17 ais523: "governor" and "cybernetics" are two borrowings of https://en.wiktionary.org/wiki/%CE%BA%CF%85%CE%B2%CE%B5%CF%81%CE%BD%CE%AE%CF%84%CE%B7%CF%82#Ancient_Greek 03:27:18 ais523: isn't that "email"? 03:27:26 You may recognize a third recent borrowing, "kubernetes" 03:27:34 Email is not the only message send over internet 03:27:39 b_jonas: "email" is more specific 03:29:07 nakilon: i suspect internet slang is a mess of borrowings in all languages other than english, not just russian. 03:29:08 Corbin: that's amazing, that there's such a difference in meaning 03:29:25 (and english is a mess too) 03:29:26 oerjan: in English, too 03:29:44 e.g. "kek" is a borrowing from an invented language made for World of Warcraft… 03:29:53 what? are you sure? 03:30:25 b_jonas: is that directed at me? yes, this one's pretty well documented 03:30:26 I thought "kek" was an alternate spelling for an onomatopoeia that may or may not have been borrowed form jaapenese 03:30:33 ais523: yes, about "kek" 03:30:52 it's "lol" passed through a character filter designed to prevent the players of the two opposing factions understanding each other 03:31:01 no, apparently from korean 03:31:11 this makes just as much sense as most Internet slang… 03:31:29 although, this is disputed, the Korean borrowing is also mentioned 03:32:07 I mean it's an obvious onomatopoeia, it can appear in multiple languages and be impossible to figure out where it's copied from 03:32:13 oerjan I won't mind it if internet messaging was something very new thing but those were "сообщения" for many years, until the internet got to the youngest people who lack the vocabulary 03:32:45 Wiktionary (which is not a reliable source for this sort of dispute) says that the World of Warcraft thing was *intentionally* added by Blizzard to perpetuate a Korean Starcraft meme, which i think is more or less impossible 03:32:55 heck, in general I don't understand how linguists can so often give such certain statements about etimology when there's more than one possibility. 03:33:41 Sometimes the statements aren't so certain 03:33:42 fwiw, this may be a weird case in which the supposed etymology is the reason the word is used, even if it isn't correct… 03:34:27 ahah, it says in French it's Французский Кек — Queque 03:34:32 "quiz" is a good one; there's a widespread belief that the word was invented for a bet, but apparently there's no evidence about this 03:35:06 b_jonas: Until relatively recently, words had to arise in geographic locations. We know e.g. where "marche" became "mush" because we know where French and English occupied territory during the start of dog-sledding in North America. (And TBH I think that "like, Alaska" is the best answer we currently have?) 03:35:23 heh, Russian for France is almost identical to the English (and of course to the French), but the spelling is so different it's hard to recognise 03:38:04 looking up "the proof of the pudding", apparently it's mutated into "the proof is in the pudding" in some areas 03:38:12 which makes even less sense 03:38:18 russian article http://wikireality.ru/wiki/%D0%9A%D0%B5%D0%BA says kekeke originated in starcraft as an automated transliteration from horean hehehe but I agree it's not clear that kek is the same as kekeke 03:38:56 *korean 03:38:58 _<> 03:39:32 so the debate is primarily about which Blizzard-created automatic character filter is responsible? 03:39:51 lol 03:41:31 hmm, "pwn" is another good one, especially as it likely had no defined pronunciation for a while 03:44:28 oerjan: Does Russian not use it? 03:44:36 yeah, that's one that appeared in written chat like "glod" and "teh urn" 03:44:48 but those have obvious pronunciations 03:44:49 Or do you mean that Greek or Spanish use it all the time, and not just when indicating how to pronounce a word? I haven't seen that. 03:44:52 shachaf: only in dictionaries and language textbooks for learners afaiu 03:44:59 yes 03:45:05 use what? 03:45:20 nakilon: ´ above a vowel to indicate stress 03:45:25 ah 03:45:26 Is there any language where the spelling indicates where the stress goes all the time, and not just in special cases? 03:45:29 Finnish, I suppose. 03:45:36 Sort of. 03:46:07 actually in books the thing is printed right above the letter 03:46:14 huh, neither Wiktionary nor Urban Dictionary has "teh urn", but it was definitely widespread in the speedrunning community for a while 03:46:16 greek uses it in all multisyllable words, while spanish has a default stress rule that allows leaving it out in many words, but it's mandatory for all others 03:46:16 Most languages already use very redundant spelling compared to e.g. Hebrew. 03:46:23 I think it might be more of a meme than an actual word, though 03:46:24 I guess it's just an internet thing that people have to put the ' somewhere 03:46:37 ais523: do they have "urn" and "teh" separately? 03:46:41 we don't have a functionality to put the thing directly above an arbitrary letter at least in russian layout 03:46:54 oh wait 03:47:05 b_jonas: well, "urn" is a real but unrelated word, and I'd expect "teh" to be there because it's older 03:47:12 I know unicode doesn't have precomposed characters for russian vowels with an acute accent, 03:47:13 if you mean the rules of transcription in nelgih dictionaries -- yet, it's older than internet 03:47:18 -!- earendel has joined. 03:47:27 *english 03:47:28 _OO 03:47:44 the September is cold, my fingers to typos 03:47:49 *do 03:47:57 while it does have precomposed characters for vowels with acute or grave (both acute and grave are used to mark stress, but in different European languages, by the way), because all of them clearly exist in at least some language like Welsh 03:48:48 huh, urban dictionary has "urn" in an entirely different sense 03:48:58 a sense I never heard of 03:49:07 knowyourmeme doesn't have "teh urn" either (although it appears in one of the references) 03:49:16 b_jonas: that doesn't surprise me, lots of slang is regional 03:49:16 fun 03:49:36 ais523: sure, not the part where I don't know the slang 03:49:46 I don't know most of the entires in urbandictionary 03:50:05 just that there is a third sense that happens to collide with that existing word 03:50:15 with apparently three different etimologies 03:50:35 "Язы́к программи́рования" -- here is copypasta from wikipedia; in the article the tick is right above the letter but while I'm typing this message I see it's after the letter 03:50:36 I think "teh urn" is probably best considered to be a Twitch meme, which was fairly long-running for Twitch memes but short-lived in terms of the language generally 03:50:50 heh, when I've pressed Enter it's now rendering above the letter again 03:50:56 nakilon: the russian and greek ´ are unicode modifier characters (not sure if they're the same character), so you _can_ put it anywhere in unicode as long as you have a way of typing it 03:51:30 text entry boxes often treat combining characters in dubious ways 03:51:35 -!- Sgeo_ has joined. 03:51:45 I'm not sure if there is a non-dubious way to treat them for editing purposes (as opposed to display purposes) 03:51:54 when I'm editing this copypasta in the text input I can't select it and move elsewhere, it's like bound to the vowel already 03:52:10 As far as I know, mostly it is the Romantic languages that have acute and grave accents, and other languages work differently. Is that right? 03:54:04 -!- Sgeo has quit (Ping timeout: 252 seconds). 03:54:48 zzo38: I think that mostly depends on where the language got its alphabet from 03:54:52 b_jonas: btw italian uses _both_ acute and grave to mark stress on the last syllable (and in some dictionaries, elsewhere) with a close/open distinction of pronunciation when the vowel is e (or o, except then it's always ò at the end), but only there unless it's in a dictionary. 03:55:37 in theory, a language could have multiple different writing systems, but that doesn't seem to happen that often in practice 03:56:47 Man, consensus is just the best. How come hardly anyone's into it? 03:57:08 ais523: it does happen, just usually not simultaneously. serbian might be the only one that can keep two for decades. 03:57:17 ah no 03:57:24 obviously Norwegian will keep them longer 03:57:26 Well, other languages even with Latin alphabets work differently as far as I know, at least Germanic languages that use Latin alphabets, as far as I have seen they are differently, but I don't really know all of these thing if it is. I know that English writing does not normally use the accent marks, at least. 03:57:59 there are much more that had different writing systems with different scripts at different times 03:58:00 technology seems to drive elimination of letters from English 03:58:09 þ started dying out when printing came about 03:58:30 and it was typewriters and then computers that have mostly driven out the diaresis 03:58:52 oh, as for the diarrhea, I wanted to ask 03:59:04 what 03:59:07 how do you spell Bo-otes the constellation in English ais523 03:59:12 (I'm just about old enough to remember the time when diareses were seen frequently enough to not look odd) 03:59:28 b_jonas: I don't know the constellation in question 03:59:39 ``` \? diarrhea # nakilon 03:59:40 Diarrhea is the most sickening accent, although some others are more grave. 03:59:50 I know that one; it's spelled "bootes" and you're just supposed to know that it's boötes. 04:00:21 Wikipedia suggests https://en.wikipedia.org/wiki/Bo%C3%B6tes 04:00:35 so it's using the diaresis for its intended purpose 04:01:04 ais523: yes, so I was wondering if you use the diar... trema there 04:01:31 I use the diaresis everywhere I can get away with it, which is very few places 04:01:40 nowadays, few people know it exists 04:01:54 a lot can change in a few decades 04:02:07 the context is https://logs.esolangs.org/freenode-esoteric/2021-05.html#lqp 04:02:37 ais523: yes, but isn't it one of those things that you can still use if most people don't know it because they can pick it up by example? 04:02:52 Yes, I have heard that a thorn is not used in English due to printing, but I think some languages still use 04:03:00 there's a difference between what's understandable and what's socially acceptable 04:03:24 people will laugh at you for writing "coöperative", even though it's normal-ish in old books 04:03:56 b_jonas: nynorsk vs. bokmål aren't just about spelling, there are also different word choices at least traditionally. and even phrasing: nynorsk frowns more upon using convoluted syntax with verbs being nouned (but _both_ frown upon it compared to german or even english) 04:04:00 Wiktionary calls it a "rare spelling" 04:04:50 lol HTML https://web.archive.org/web/20120204065251/http://people.ku.edu/~nkinners/LangList/Extras/famous.htm 04:04:58 oerjan: ok. and it's not clear if serbian is a good example, or if in the future we'll just see it as a short period when two systems coexisted 04:05:28 (I do hope it's the serbian latin that dies out by the way) 04:05:48 (but one of them will die out for sure) 04:06:45 b_jonas: apparently they've survived in parallel since 1830 04:06:54 what? really that old? 04:06:58 I thought it was much newer 04:06:58 which is longer than I expected 04:07:32 this may end up in a situation like Japanese, where hiragana and katakana are used for different purposes (katakana's almost like italics) 04:07:51 but have a 1-to-1 correspondence 04:09:03 I don't really see how it could end up that way 04:09:30 well maybe 04:10:00 I can more easily imagine them being used in different kinds of text, but not generally mixed in one book 04:10:29 but the problem is 04:11:01 both latin and cyrillic already has lower case, upper case, and italic forms, so you don't need an extra doubling to use different letters for different occasions 04:13:59 you can have three cases, but six is entirely too many 04:15:42 s/cases/genders/ * runs hastily away from both woke and bantu people 04:17:04 https://en.wikipedia.org/wiki/Plankalk%C3%BCl 04:17:11 so didn't serbian cyrillic only get popular in the 1980s or 1990s, even if it was invented earlier? 04:17:14 > While working on his doctoral dissertation, Zuse developed the first known formal system of algorithm notation[7] capable of handling branches and loops.[8][9] In 1942 he began writing a chess program in Plankalkül 04:17:21 sorry sorry 04:17:23 I mean 04:17:26 so didn't serbian latin only get popular in the 1980s or 1990s, even if it was invented earlier? 04:17:47 serbian cyrillic was popular before that obviously 04:18:08 dude didn't even yet have a programming language but started coding chess -- how monay today's "programmers" would try to code chess at least once in their life? 04:18:19 *how many 04:18:57 b_jonas: for a time until about 1990 a lot of people tried hard to claim serbian and croatian were the same language hth 04:20:49 (based on politics and the silly argument that there was hardly any difference to speak of) 04:21:19 (then the politics changed and they quickly started making sure there _was_ a difference) 04:21:54 (but i think they're still closer than say bokmål and nynorsk?) 04:22:12 oerjan: yep 04:22:38 so maybe serbian latin was popular before the 50s, that's just too old for me to have noticed? 04:22:52 I don't see books that old often 04:23:09 or, you know, posts on the internet that old 04:23:18 zzo38: Icelandic still has thorn 04:23:27 shocking 04:24:09 I think Icelandic's use of þ is the reason it has a default keybinding on this layout 04:24:17 and eth (ð) which is like the voiced version i think 04:25:38 voiced th bothers me so much, because my brain tries hard to refuse to hear it as distinct from the unvoiced version 04:25:42 nakilon: istr ada lovelace similarly coded tic-tac-toe 04:26:06 which is a bit easier 04:26:11 it took me a while to figure out whether the "th" in "thorn" is voiced or unvoiced, I had to say it over and over again and compare with reference words 04:26:16 and the sounds aren't even that close 04:26:54 ah, so IOCCC had a chess engine before 2005/toledo: 1992/vern. I thought it only had toledo's chess engine, his X11 chess program, and suicide chess. 04:27:02 I've been wondering if there's a way to spell either of the sounds to make their pronuncuation unambiguous to a typical English speaker 04:27:12 oerjan funny but it's just exactly 1-2 days ago that I during having fun on lichess started thinking about making chess and then switched to idea to start with tic-tac-toe to avoid spending time on coding the rules -- this is why yesterday I threw some links about Gomoku 04:27:31 I guess "vh" for voiced "th" isn't massively far off 04:27:41 (because the tic-tac-toe would be too fast to calculate fully) 04:27:41 and "fh" for unvoiced? 04:28:09 it helps that "v" is the voiced version of "f" 04:28:35 (oerjan-style thought bubble: does that mean that the opposite of "voiced" should be "foiced"?) 04:28:51 ais523: oh, so that's how you're supposed to pronounce fhtagn? 04:29:04 or even "foist", I guess 04:29:16 voiced th bothers me so much, because my brain tries hard to refuse to hear it as distinct from the unvoiced version <-- huh are there no minimal pairs in english? i don't know a rule to know which one is correct where 04:29:22 and also I wanted to ask you guys if there is something between Tic-tac-toe and Nim that would be easy to implement the rules machine and yet hard to calculate, but then I discovered the https://en.wikipedia.org/wiki/M,n,k-game that allows me to just take different n,m,k 04:29:40 oerjan: "the"/"this" is not a pair but make for good reference words 04:29:52 now you just have to explain all the other consonant combinations that appear at the start of a word only in incantations to summon Cthulhu 04:30:07 I guess "this" (voiced) / "thistle" (unvoiced) have a paired syllable 04:30:31 ais523: on the other hand as a norwegian i have similar problems with voiced and unvoiced s (the latter doesn't exist in norwegian, which has no voiced sibilants) 04:30:32 (the second "t" in "thistle" is silent, fortunately, or it wouldn't work) 04:31:34 I don't know a rule for which th to use either, but I assume one exists, because I've never had trouble pronouncing an unknown English word with a th in it 04:32:00 ais523: it seems to me that dh would be a reasonable spelling of the voiced version 04:32:15 actually I've implemented the Gomoku in around 2007 in C++Builder -- it was thinking for few seconds and wasn't easy to beat, at least for me; the whole 3 (or 4?) deep loop was hardcoded with no recursion 04:32:23 ais523: what? there's no way the "t" is always silent. isn't it's just one of those "t"s that are sometimes silent, like the one in "often"? 04:32:24 the problem is that dh is a real digraph which has its own pronunciation 04:32:51 Wiktionary says always silent 04:33:00 or maybe earlier than 2007 because it feels like I didn't have internet yet to know for sure how ti should be done 04:33:07 and pronouncing it would be really weird, it'd end up rhyming with "pistol" 04:33:38 so does my Longman. funny. 04:33:45 in "often" the 't' is sometimes pronounced but it's rare 04:33:56 . o O ( it's not oerjan-style without the prefix hth ) 04:34:38 https://en.wikipedia.org/wiki/Pronunciation_of_English_%E2%9F%A8th%E2%9F%A9 seems useful 04:35:10 lol I remember how in school every teacher of English was reteaching us the pronounciation 04:35:16 ais523: um "the"/"this" are both voiced unless i am far more gravely mistaken about them than i thought 04:35:16 they all said "your previous teacher is dumb" 04:35:50 oerjan: I was about to say that 04:35:57 I /just/ realised that "the" is voiced 04:36:05 even though I was sure it was unvoiced earlier 04:36:14 I came here to say that, and then noticed your ping 04:36:26 this is how hard it is for an English speaker to tell them apart 04:36:37 "this"/"thistle" helped, though 04:36:51 we were officially taught british english and when there was a teacher of english literature that "lived in USA for several years" we could not understand her at all 04:37:48 (One thing that I do think can be good to continue using thorn letter in English is when you want to abbreviate "Thursday" as one letter, so that is difference from "Tuesday". And then, write "L" for "Lyeday" (as another name for Saturday); I have seen suggestion Lyeday for Saturday too (and it look like it is another name for that day in Proto-Germanic), and I like this because it is not "S" like "Sunday") 04:37:50 huh 04:37:57 American English and British English are mutually intelligible but the differences are actually quite large 04:38:27 I had also heard someone who speak English could understand well enough in most countries (even those who are not English) except in England 04:38:35 and I could see how it would be difficult as a second language 04:39:34 I mean like those youtube videos of "speaking with scottish accent" or something -- the same much inunderstandable 04:39:48 zzo38: shouldn't we just abbreviate them as the alchemical symbols for the Moon, Mars, Mercury, Jupiter, Venus, Saturn, Sun? 04:39:53 the days of the week that is 04:39:55 ah, here we go, the rules for telling the "th"s apart: https://en.wikipedia.org/wiki/Pronunciation_of_English_%E2%9F%A8th%E2%9F%A9#Phonology_and_distribution 04:40:08 she was dictating things and we were just pretending we understand, but mostly asked each other "what did she just say?" ..D 04:40:17 or W-1, W-2, W-3, W-4, W-5, W-6, W-7 if you prefer 04:40:30 nakilon: a sufficiently strong accent can be hard to understand even for native speakers 04:41:21 Yes, abbreviating them as the the symbols for the planets is another way, maybe is better 04:41:40 heh, I love the way that Wikipedia points out that "lighthouse" is an exception, the t and h are in different syllables 04:42:14 I remember how I asked: "road or wrote?" and in Russian it actually sounds like "в рот" meaning "into a mouth" -- the class went laughing and she asked me to leave and after that or another lesson she just refused to do lessons with me, lol 04:42:36 I don't remember how I was rated in the end of the year 04:43:33 probably now I could understand from the context if it's road or wrote but not when you are 16 or so 04:45:41 nakilon: write/right/rite/wright is one of the worse homophones in English 04:45:51 "cloth"/"clothe" aren't a pair because the vowel is different, but I can pronounce "clothe" with either th easily 04:46:13 ais523: can you pronounce it with either th as either a noun or verb? 04:46:15 (I think in alchemy they are just used as the sign for different metals and chemical elements; in astrology/astronomy they are used to represent the planets, Sun, and Moon.) 04:46:48 b_jonas: the verb can only use the voiced version, if I pronounce it unvoiced it sounds like a nonexistent noun (an irregular singular of "clothes") 04:46:54 zzo38: yeah, astrological symbols might make more sense 04:47:02 which is weird because the th in "clothes" is voiced too 04:47:30 how do you pronounce "clothing"? 04:47:53 `? hth 04:47:55 hth ([ʰtʰh̩]) is help received from a hairy toe. It is not at all hambiguitous. 04:48:19 b_jonas: voiced 04:48:34 I'm getting better at telling them apart but it takes so much concentration 04:48:47 in the first class we were taught to spell "can't" with "a", and in the second class we've got another teacher and she said "omg, don't say like that", you should use "e" sound otherwise it sounds bad -- only after school I've learned what word she meant 04:48:49 huh... now I'll have to look that up in the Longman too 04:48:57 I guess that's another pair – the second syllable of "clothing", against "thing" 04:49:16 but then in movies I hear "can't" exactly like we were taught in the first class so we were not fully wrong, it was just an accent 04:49:43 longman says "clothing" is voiced too 04:50:10 apparently "th" in the middle of a word is nearly always voiced, and "th" at the start of a word is nearly always unvoiced – Wikipedia claims that there are exactly 14 base words whose derivatives start with voiced "th", and all other words are unvoiced 04:50:25 that would explain why I rarely have much trouble getting it correct 04:50:48 "th" at the end of the word varies by both the word and by the accent of the speaker, according to Wikipedia, and when I think about it I think that's right 04:50:58 heh, TIL this longman thing https://www.ldoceonline.com/dictionary/can-t what does red and blue mean? they are exactly what you meant 04:51:01 *what I 04:51:15 basically, the less voiced your final ths are, the further north you live 04:51:19 if you're in the UK 04:51:35 -!- Everything has quit (Quit: leaving). 04:52:07 nakilon: no 04:52:37 my longman is a printed dictionary from the same publisher (Langenscheidt-Longman) 04:52:49 called "Dictionary of Contemporary English" 04:53:08 though the definition in that page is confusing 04:53:23 " something is impossible or unlikely" is exactly the "Sorry, I can’t help you." 04:53:38 huh, I missed definition 2 there 04:53:47 a very good dictionary in the sense that its definitions are easier to understand than the ones in Oxfords, and much easier than the ones in Websters 04:53:51 if you write it as "cannot" it sounds more like an order, rather than a state of fact 04:54:42 I hadn't noticed that rule before, and was vaguely surprised that a dictionary picked up on it 04:55:01 however, this seems to be a meaning that's missing from "cannot" rather than an extra meaning of "can't" 04:55:04 b_jonas can’t | meaning of can’t in Longman Dictionary of Contemporary English | LDOCE 04:55:04 I highly recommend using Longmans as the first one-language English dictionary for foreign language learners 04:55:39 nakilon: ok, but this one doesn't have red and blue stuff, except the blue L on the cover, and definitely doesn't have sound recordings 04:56:01 ..D 04:56:23 so I don't know what red and blue means 04:56:28 yout typography had only black ink 04:57:17 oh when you hover the mouse it says red british blue american 04:57:50 haha, so the teacher from 2 to 9 classes was wrong 04:59:05 now I'm trying to imagine what American English "can't" sounds like (without cheating by playing a recording) 04:59:44 oh, Wiktionary says /kænt/, and æ is easy, that'd basically be British English "cant" 05:00:17 I guess the transcription on that page means the same: /kɑːnt $ kænt/ 05:00:23 it's just not colored 05:00:36 …it crosses my mind that I've partially learnt quite a few alphabets 05:01:15 I know more than half of Cyrillic but not all of it, I struggle with many of the vowels, and also the consonants that are written as digraphs in English (I have trouble remembering which is which) 05:02:07 and I know some of IPA but not all of it (that's especially hard for sounds that aren't in English, although I can normally get there by reading the Wikipedia article and following its instructions about where to put the various parts of my mouth to pronounce them) 05:04:25 hmm, I wonder whether the "th" in words like "lighthouse" should be technically written as "tḧ"? although the diaresis is only supposed to be used on vowels, I guess now that it isn't used anywhere any more I can put it where I like 05:04:52 brilliant 05:04:54 b_jonas does your book longman have one or two transcriptions? 05:07:58 oerjan: anyway, now that I've read the rules, I can understand why þ/ð pairs are so hard to find in English – the rules pretty much eliminate them 05:08:09 ahaha, another example https://www.ldoceonline.com/dictionary/homework 05:08:23 you would probably need to find a loanword with a th in the middle, that happened to otherwise be the same as a native word 05:08:40 in 1st class we were taught to say hAm, and the next teacher said it's stupid, say hOm 05:08:47 oʊ? wow 05:08:50 "because otherwise it sounds like harm work" 05:09:16 American English sounds ridiculous to Brits sometimes 05:09:45 this is so weird to finally know why other teachers said we've got not the best teacher during 2-9 05:10:13 I don't think I could teach American English 05:10:18 she was kind of right to say cEn't and hAm but not while saying that "we are learning british one" at the same time 05:10:26 the vowels are so different 05:11:49 I think this was all wrong to decide that "we teach this one" because in the end today I have no idea which one is which 05:12:05 is it ...tize os ...tise, color or colour beughbor or neighbour, etc. 05:12:45 it would be nice if instead of "we learn british, that's it" we were "learning both, here remember the difference..." 05:12:51 …ise vs. …ize, nobody has any idea any more 05:13:01 so we would pay attention 05:13:04 both are used interchangeably in both Britain and the US any more, probably because they're pronounced the same way 05:13:12 s/any more/nowadays/ 05:13:22 "beughbor" oh god today's typos 05:13:24 some people try to insist on a rule to distinguish them but nobody can remember which is which 05:13:44 and I have spellcheckers on my computer with strong opinions about -ise versus -ize but they disagree with each other 05:13:58 ahah, I always ignore those red lines 05:14:03 *underlines 05:14:04 however, in most of the cases where the words are a different length, the British spelling has more letters than the American 05:14:27 so "neighbor", "color" are US, "neighbour", "colour" are UK 05:14:49 also I guess it was less practical to learn british one 05:14:52 despite being British, I will often use the American spellings in technical contexts, sometimes intentionally, sometimes not 05:15:02 they could not predict that though, we are the Europe 05:15:03 American is more widely used, I think, because they outnumber us 05:23:07 do we? 05:24:36 by a factor of about 5, it seems 05:25:28 damn, sorry. 05:25:30 we'll try harder. 05:28:40 I guess I look down on anyone teaching English as a second language who doesn't realise that British and American English both exist, though (and it's confusing to change from one to the other mid-course) 05:33:06 oerjan: OK, I finally found a þ|ð pair: "loath" / "loathe" 05:33:33 although it's not great because "loath" is pretty obscure as words go 05:34:23 oddly, Google Ngrams has "loath" as more common than "loathe", but derived forms of "loathe" (such as "loathing") beat both 05:34:39 * ais523 quickly looks up how to pronouce "Lothian" 05:34:53 ð it seems 05:36:11 the pair only works because the "e" is supposed to lengthen the preceding vowel but it's long anyway, so it has no effect other than moving the "th" away from the end of the word 05:36:28 the funny thing is, to an English speaker's ear, "loathe" sounds like it has a longer vowel than "loath"! 05:37:36 (it doesn't, it's just perceived like it does) 05:38:46 -!- delta23 has quit (Ping timeout: 256 seconds). 05:41:24 …it strikes me that English is arguably an esolang 05:41:52 maybe that's why we discuss it so much here 05:42:16 ais523 we were taught that there are two englishes but we didn't bother to learn both 05:42:32 I guess the books were specializing on one of them 05:42:54 and teachers could believe or speculate which pronounciation is correct 05:43:27 there's more than two, but, e.g., Indian and Australian English aren't heard much outside their native countries 05:44:11 we had only one tape recorder in school to bring fro class to class to play some english recordings on rare occasions, usually a special kind of exams -- "an audition" 05:44:15 There are more than two kind of English; there is also Canadian English too. One thing on the CBC they said, should you use American or British spelling in Canada? I say, you use Canadian spellings in Canada (except computer commands, which will be American). 05:44:32 yeah I know australian english from youtube 05:45:11 zzo38: I think Canadian English is a good compromise between British and American 05:45:21 most of people at least in my age didn't even have the full school course of english, usually only 6 years, not 10, or even german instead 05:45:53 so people just didn't give a damn, and again there was no internet, only tape recordings 05:47:59 I guess the Internet would be one of the main reasons to learn English 05:48:40 it's the main use I've made of my foreign language knowledge – I rarely have a reason to use languages other than English when communicating with other UK residents, and rarely go abroad, but the Internet makes it easy to communicate with people all over the world 05:48:49 Yes, I also think the Canadian English is good compromise between British and American, too. 05:48:55 "reasons to learn English" -- meh, most of people won't believe in that even today 05:50:01 there is a huge imaginary world in which Russians are living where "we don't need anything from outside, it's enough in here" while english memes are leaking but learning things from the source is considered a wrong and shameful 05:50:30 a lot of americans have that view too. 05:51:19 lots of Brits as well 05:51:20 I worked in many companies and in none of them had even one coworker who would speak with anyone abroad at all; people have learned English only to understand posts on stackoverflow 05:52:38 I'm considerably better at understanding foreign languages than typing/speaking them; I wonder if the easiest way to speak with people when there's no fluent common language is for everyone to speak their own language 05:52:47 I think that there are reasonable reasons today to learn English writing even if not English speech 05:53:00 that said, I hardly know any Russian, apart from the occasional loanword 05:53:59 French and German come up much more often, probably just based on geographical proximity 05:54:19 and Dutch for some reason, but if you know both English and German, you can often guess at what a Dutch sentence means 05:54:55 the funny thing is, at school, I chose Latin as my foreign language primarily because it was taught a lot better than French and German were 05:55:29 maybe that's a good reason 05:56:13 we had a lecturer of programming who was showing slides with just pseudolanguage that maybe even was his own one 05:56:54 but at least he taught us programming and then we could learn the lagnauges specifically 05:57:11 pseudocode doesn't normally follow actual rules 05:57:18 it's just "whatever I expect the audience to understand" 05:58:13 I guess it's the natural-language version of programming, you can be a lot more flexible because you don't need to let a computer understand what you're saying, just a human, and humans can fill in missing parts more easily 06:27:58 I don't want to change rasel specification, I don't want to bloat it, and I don't want to make too many derivatives of the same thing; but I still keep thinking about threading and other 2d-related additions, can't decide where to put them; maybe later 06:29:52 maybe I need a language with support of adding powerful extensions 06:30:27 not that I saw anything like that 06:31:04 to be able to have such extensions that would change the runtime so much like adding the subroutines I imagines few hours ago 06:31:50 *imagined 06:37:29 Funge-98 has some pretty powerful extensions 06:37:53 I think that's the only example of something like that I've seen in an esolang (not counting esolangs where the entire language can be redefined at runtime, as that isn't really the same thing) 06:40:10 -!- src has quit (Ping timeout: 240 seconds). 07:36:05 -!- earendel has quit. 07:36:20 -!- earendel has joined. 07:56:40 -!- ais523 has quit (Quit: quit). 08:06:36 -!- hendursa1 has joined. 08:10:21 -!- hendursaga has quit (Ping timeout: 276 seconds). 08:22:17 -!- earendel has quit. 08:22:38 -!- earendel has joined. 08:49:12 -!- Sgeo_ has quit (Read error: Connection reset by peer). 09:22:58 -!- Koen_ has joined. 09:25:07 -!- Lord_of_Life has quit (Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine). 09:51:34 -!- oerjan has quit (Quit: Later). 10:17:31 -!- Robdgreat_ has joined. 10:18:26 -!- Robdgreat has quit (Remote host closed the connection). 10:19:32 -!- Robdgreat_ has changed hostmask to ~rob@user/robdgreat. 10:19:38 -!- Robdgreat_ has changed nick to Robdgreat. 10:53:52 -!- arseniiv has joined. 11:03:02 -!- imode has quit (Ping timeout: 245 seconds). 11:12:06 ais523: yes, American "can't" is pronounced as /kænt/ which means that before a verb that starts with a "t" or "d" it sounds exactly the same as "can". some say the American solution to this is that "can" is always pronounce weak with a schwa, but I find that sort of hard to believe. 11:13:49 ais523: re `whether […] "lighthouse" should be technically written as "tḧ"?' => no, just use a hyphen, as in "light-house" if you think without it it's hard to read 11:13:59 though I think in the case of lighthouse there's not much need for it 11:14:14 maybe for hot-headed or pot-hole 11:15:58 "…ise vs. …ize, nobody has any idea any more" I always try to use ize. 11:16:37 "I have spellcheckers on my computer with strong opinions" => many spellcheckers have strong opinions about words where there are two variant spellings/pronunciations used. 11:18:51 like try to look at any Hungarian spellchecker, if you take any word where different people use different form of the conjugation or declination for the same thing, it's very likely that the spellchecker only accepts one of them, except when the alternative coincides with what it thinks is either a different form of the word (can happen for a few verb forms) or used with a different meaning of the same 11:18:57 root word in the same form (usually for nouns) 11:20:19 as for color, neighbor, and all the other -ours that don't come up in mathematics that much (honor, flavor, odor, favor, valor, candor etc), I now try to consistently use the -or spelling, but sometimes I still typo into the -our version that I used to be using 11:21:30 `ais523: oerjan: OK, I finally found a þ|ð pair: "loath" / "loathe"' => wait, what was the problem with cloth/clothe and bath/bathe? 11:21:32 ais523:? No such file or directory 11:22:02 (the latter possibly only in some dialects) 11:22:28 -!- Koen_ has quit (Remote host closed the connection). 11:23:04 ` b_jonas does your book longman have one or two transcriptions?' => usually one; two if the most common American pronunciation can't be derived from the british pronunciation that they list 11:23:05 ? No such file or directory 11:24:44 really 11:24:54 no such file or directory 11:25:18 I had to name my language nakilon 11:25:30 ` I wonder if the easiest way to speak with people when there's no fluent common language is for everyone to speak their own language' => it can occasionally happen, but rare, mostly because switching languages quickly can be mentally taxing too 11:25:31 ? No such file or directory 12:25:04 -!- Koen_ has joined. 12:26:11 -!- earendel has quit (Quit: Connection closed for inactivity). 12:42:46 -!- Lord_of_Life has joined. 12:57:02 -!- hanif has joined. 12:58:18 -!- hendursa1 has quit (Quit: hendursa1). 12:58:46 -!- hendursaga has joined. 13:01:30 -!- src has joined. 13:45:58 -!- mla has joined. 13:49:09 please upvote https://news.ycombinator.com/item?id=28423029 if you like chess and Haskell :-) 13:59:20 -!- riv has quit (Quit: Leaving). 14:03:24 -!- ais523 has joined. 14:04:23 b_jonas: "cloth/clothe" and "bath/bathe" have different vowels, so they aren't exact matches 14:04:37 the reason "loath/loathe" works is that the vowel is long already, so the e doesn't lengthen it 14:05:27 meanwhile, multiple sources I've checked suggest that α⁸+α⁴+α³+α+1=0 produces the finite field that's used in AES encryption, which confuses me because multiple *other* sources say it doesn't produce a finite field at all 14:13:34 do bath/bathe have different vowels in all dialects? 14:14:11 cloth/clothe ... I never understand how "o" vowels work in English. let me look these up in a dictionary 14:14:16 I think so, at least in British English; the "a" of "bath" varies but it never matches the "a…e" of "bathe", which doen't 14:15:06 yeah, you're right, "bathe" has a long vowel 14:15:16 ...dearest creature in creation... 14:16:28 and yes, dictionary agrees you for "cloth/clothe" 14:16:51 . o O ( Any clothing thoughts? ) 14:16:57 something I've been trying to do in my head is to work out, for each phoneme used by English, a way to unambiguously represent it so that it can't be misread as being some other phoneme (potentially context-dependent) 14:17:45 I'm not sure it's possible; I haven't found any letter sequence that unambiguously encodes the vowel in bye, pie, sigh, etc., when it appears at the end of a word 14:18:08 ("i…e" encodes it unambiguously when separated by a consonant other than "g") 14:18:16 phoneme != phone me 14:19:23 hmm... if there's not enough good pairs, then we should invent a sci-fi word "theron", with fake greek etymology, that is pronounced like "thereon" but with an unvoiced "th" 14:19:38 English orthography reforms are usually doomed. I think both Jan Misali and Conlang Critic have videos about this. 14:20:11 Corbin: this isn't intended as an orthography reform, so much as a way to unambiguously communciate pronunciation of a word to someone who speaks the same dialect of English as you 14:20:45 ais523: as for unambiguously representing each phoneme, usually you just give an example word that is common enough and has that vowel unambiguously enough. there are even lists of such example words for each phonemes, usually to explan what phonemes they're talking about or a specific phonetic notation. 14:21:08 b_jonas: yes, but they struggle sometimes 14:21:08 and I think there was something more like you want, but not that unambiguous 14:21:55 both my Longman and my Oxfor has such example words 14:22:38 https://en.wikipedia.org/wiki/SAMPA_chart_for_English has a list too but possibly not as good 14:22:46 /ɨ/ is a good example of a phoneme it's hard to find good example words for 14:23:08 ais523: Many English words have multiple legal pronounciations depending on position and emphasis. First one that comes to mind is "the", which can start either voiced or unvoiced and use either a stressed vowel or schwa. 14:23:21 ais523: is that a phoneme that appears in an English dialect? 14:23:31 as opposed to non-English languages 14:23:43 because some people pronounce it identically to ɪ and others don't use it at all 14:24:00 If we ignore that topological obstacle, then maybe examine Lojban's inventory of vowels; it has nearly everything an English-speaker could want. (Many other folks are grumpy about the lack of -eu-; nothing's perfect.) 14:24:01 b_jonas: I think the standard example is the second vowel in "minute" (= 60 seconds), when it isn't a schwa 14:24:49 but I pronounce that in a way that I perceive as identical to ɪ 14:25:10 Alan's pronunciation dictionary defines more phonetic symbols than there are phonemes in any dialect, because each symbol can represent a combinations of possibly phonemes depending on the speaker 14:25:53 https://en.wikipedia.org/wiki/SAMPA_chart_for_English has a list of that kind of set of combo-phonemes, sourced from the Wells books 14:26:18 apparently some dictionaries have taken to using ᵻ as something that's somewhere along the ə-ɪ scale 14:28:41 fwiw, I can get a phoneme that I don't normally use by putting my mouth into the position for /i/ ("ee") and then trying to say /ʊ/ (short "oo") without moving it; based on the definitions of Wikipedia that *should* be /ɨ/ but I'm not sure i believe it, as it seems inconsistent with definitions elsewhere 14:31:48 Alan's pron has such a specific combo symbol ê for the second wowel of "minute" the noun in the American pronunciation, and explains that this is sometimes pronounced as the "ship" vowel and sometimes as a schwa 14:32:00 (and possibly sometimes as some other vowel) 14:32:20 though apparently that other vowel is supposed to be /ɨ/ 14:33:51 this finite field thing is bothering me, though 14:34:23 I can understand. I decided to stop trying to figure it out yesterday, but should continue at some point 14:34:24 I think most consistent with the sources is that α⁸+α⁴+α³+α+1=0 *does* produce a valid finite field, but it isn't the one that most people use for GF(2⁸) 14:35:30 it should be possible to figure that out by making a multiplication table and checking if you can find no zero divsors and an order 128 element 14:38:35 that or ask Sage 14:38:56 I'm trying to ask Sage but I can't figure out how to formulate the question, I'm not even sure which field to ask in 14:39:48 the polynomial ring GF(2)[x] factored by that specific polynomial x**8+...+1 (not typing here because I'd typo it) 14:40:44 did you try to check a recent AMD manual? 14:41:25 if all else fails, we can ask on Cryptography SE, but I should make an effort trying to figure this out first 14:41:32 OK, both the standard version (with α²) and the AES version (with α) are irreducible according to Sage 14:42:13 I guess the next interesting question is what value each ring's α has in the other ring 14:42:18 err, each field's 14:42:28 ais523: but does irreducible mean the factor gives the finite field? 14:42:59 because that's what wasn't clear to me, that's why I didn't know which of the fxt tables to look at 14:43:15 yes, if you have any irreducible polynomial, its root gives a valid α to generate a finite field 14:43:29 (whose elements are 0 and the powers of α) 14:43:56 ok 14:44:00 err, assuming that the original polynomial was over a finite field 14:45:30 but in that case, https://www.jjj.de/mathdata/all-irredpoly.txt shoudl be the table to look at, and that table doesn't list 8,4,3,1,0 14:46:11 b_jonas: it does 14:46:19 beneath the "non-primitive" comment 14:46:24 so now all the sources are in agreement 14:46:27 oh 14:46:30 indeed 14:46:42 OK, mystery solved 14:47:29 aha, I see 14:47:46 it seems that a primitive polynomial gives you a root α that generates the entire field 14:48:04 and that's the representation that the x86 GF2P8MULB and other GF2P8* instructions use 14:48:10 and for a non-primtiive polynomial, its root is not a valid α because it only generates a subset of the field, but you can take a polynomial in its root to get the whole field 14:49:17 ok 14:49:29 for the AES field, you have to add 1 to the root of its polynomial to get the typical α (thus α is 3 in the usual encoding, rather than 2 like it is for most binary finite fields) 14:50:32 so is either x or x+1 an order 128 element in all the representations that you get from irreducible polynomials? 14:50:42 sage: y. = GF(256) 14:50:44 sage: a = x+1 14:50:45 sage: a**8 + a**4 + a**3 + a**1 + 1 14:50:47 0 14:50:57 err, I named a and x the wrong way round, but you get the idea 14:51:14 b_jonas: I'm not sure, my guess is no but it's just a guess, not even an educated guess 14:53:57 ok 14:54:14 but what does this have to do with AES? 14:55:11 so the reason Intel picked that particular finite field representation is that AES 14:55:20 's S-box is based on it 14:55:20 hmm, apparently AES includes calculations in GF(2) in that representation 14:55:52 ais523: but the AESNI extension with the AES* instructions is older than the GF2P8* instructions 14:56:12 b_jonas: the common theory is that because the AES instructions existed already, the processor had circuitry for handling one specific finite field already 14:56:20 so it was easy to expose it in a way that wasn't tied to AES 14:56:40 or perhaps it's used in other crypto primitives too, and the AESNI instructions can't help with those 14:57:15 and one of the GF2P8 instructions can apparently be used to convert between finite field representations, so you can have any GF(256) representation you like (as long as it's polynomial-based rather than logarithm-based) 15:00:04 -!- APic has quit (Read error: Connection reset by peer). 15:00:39 -!- APic has joined. 15:01:16 while PCLMULQDQ multiplies two GF(2) polynomials, from two 64 bit long polynomials to a 128 bit long result, and doesn't try to do the reduction 15:02:03 right 15:02:15 let me check the CRC32 instruction too 15:04:06 I think that one does a GF(2)[x] multiplication by x**32 then a reduction using a specific 32-bit polynomial 15:04:16 for computing CRC32 checksum 15:04:49 it's just so weird seeing a finite field representation where the generating element and the root of the polynomial are different, it becomes non-obvious which one gets to be called α 15:04:50 but I'm not sure 15:05:06 no wonder the AES field isn't the one that all the finite field software standardised on for GF(256) 15:05:39 or maybe not, I'm not sure 15:06:21 ais523: is the representation that they standardized the same as the representation in the IOCCC entry? 15:06:32 which IOCCC entry? 15:06:53 the answer may well be "I can't tell" unless the hint file is good, though, given that the question may require me to understand obfuscated C 15:07:42 http://www.madore.org/~david/weblog/d.2012-10-14.2083.html#d.2012-10-14.2083 15:08:01 the description of how it works is in a comment of David's non-obfuscated program 15:08:16 that program is at ftp://ftp.madore.org/pub/madore/misc/shsecret.c 15:12:21 this multiplication table has 2×2=3 (where the numbers refer to the internal representations of the finite field elements, not the regular 2 or 3) 15:12:31 I also don't remember what representation my https://www.perlmonks.com/?node_id=863110 or the inspiration https://www.perlmonks.com/?node_id=862789 uses, I'll have to re-read those 15:12:41 so I think it's using a very unusual representation of GF(256) 15:12:55 (there's only one GF(256), the interesting part is how you order the elements) 15:12:56 Hm. I wonder if this is an NSA/CIA situation, where the AES field's primitive operations can be used for something other than typical encryption or decryption of AES. 15:13:41 Somebody must have had a use for these instructions. It's curious that Intel doesn't explain how to use them for arbitrary work. 15:13:50 oh, those both represent GF(2**7), not GF(2**8) 15:14:35 even so, every binary field larger than GF(4) (which doesn't have an element numbered "4") has 2×2=4 in the most common representation, also the second-most common representation 15:14:36 Corbin: it's not the Intel manual's goal to explain math or cryptography 15:15:19 Fair. 15:15:23 Corbin: they also don't teach you all about how to multiply matrices or complex numbers or quaternions with their mul-add and add-subtract instructions 15:15:43 and especially not teach how to use matrix multiplication or complex numbers for anything useful 15:15:59 Corbin: all representations of GF(256) are equivalent and fairly easy to interconvert (you just need to know which element in one field is the α of the other), so circuitry implementing AES isn't going to be inherently AES-specific, you could use it for anything based on GF(256) 15:16:15 and that's the functionality that Intel's exposing now 15:17:19 ais523: That makes sense, I guess. What are you stuck on? 15:17:28 we aren't any more 15:17:42 we were stuck on some apparent inconsistencies between sources but they've all been resolved now 15:17:45 ok, now I'm trying to imagine the Intel manuals with three extra volumes for numerical methods of partial differencial equations in the middle 15:18:15 the representation AES uses for GF(256) is mildly weird, but not ridiculously so 15:18:20 ais523: I don't think that's necessarily right, doesn't AES mix those field operations with other things, or at least map the input to it somehow? 15:19:19 b_jonas: yes, but the circuits for the field operations apparently existed already, there was just no way to use them in isolation 15:19:38 I remember that https://www.perlmonks.com/?node_id=862789 switches between two representations of GF(128): a sane linear one, and a logarithmic one where you add the representatives mod 127 to do a multiplications 15:20:04 and I think it computes the logarithm table for that by repeatedly multiplying with a specific field element, because that's easier to code than a general multiplication 15:20:09 those are both sane, and fairly natural 15:20:16 the polynomial representation is more commonly used though 15:20:32 just like multiplying fixed integers by a constant integer is easier than multiplying two arbitrary integers 15:21:11 ais523: possible, the logarithmic one certainly wasn't natural, I remember the idea was new and very odd to me when I decoded how that obfuscation works 15:21:31 I do admit that it's a good representation in the sense that it did allow martin to golf their code 15:21:42 b_jonas: it's something I thought up independently after learning about finite fields (although I thought of the polynomial representation first) 15:21:46 so it was natural to me 15:21:49 ok 15:21:57 my program, which I wrote later, only uses a linear representation 15:22:29 but I don't know how it works 15:22:51 now I have to try to understand my own obfuscated code\ 15:23:21 -!- riv has joined. 15:25:01 -!- APic has quit (Read error: Connection reset by peer). 15:25:40 but... that code makes no sense! why does it shift one bit left then extract the high bit? 15:25:50 -!- APic has joined. 15:25:54 why doesn't it just extract the sixth bit instead of shifting and extracting the seventh? 15:27:22 is it an in-place shift, that leaves its input shifted? 15:27:49 oh yes, it shifts the input in place, and also outputs its high bit 15:27:51 that makes more sense 15:30:10 $v must be the value substituted in the polynomial 15:32:25 my interest in finite fields is mostly related to error-correction algorithms 15:33:10 so h($r) shifts $r in place, returns the carry, and so $r ^= h($r) & "\x217" multiplies the polynomial by x then propagates the carry back so that, I think, x**8 = x**7+x**3+x**2+x+1 15:34:32 «& "\x217"» looks wrong, you'd want the \x217 to be a single character but I think it parses as \x21 followed by 7, and even if it doesn't, the value is too large 15:34:51 yes, sorry, it's "\217" 15:35:01 I just typed it to IRC wrong 15:40:01 -!- APic has quit (Read error: Connection reset by peer). 15:45:26 -!- APic has joined. 15:50:04 -!- tech_exorcist has joined. 15:51:51 -!- hanif has quit (Ping timeout: 276 seconds). 15:54:28 hi 15:54:49 does someone has some good argument to defend the choice of calling python's functools.reduce reduce and not fold? 15:54:57 does someone have* 15:55:45 as far as I understand, functools.reduce really behaves like haskell's foldl or ocaml's fold_left, and really doesn't behave like pyspark.reduce 16:00:53 I don't have a good argument. I wonder why MLs used "fold" and not "kata", though? Since foldl really behaves like a katamorphism. 16:01:33 I figure that Python and PySpark both use "reduce" for the same reason as MapReduce. 16:02:02 yes, but that's my point 16:02:08 pyspark's reduce is exactly mapreduce's reduce 16:02:17 but python's reduce is not 16:03:01 if python was statically typed, it'd be obvious from the type signature - python's functools.reduce would have the same signature as a fold_left 16:03:49 whereas pyspark.reduce is much more constraining - the function must be (a, a) -> a, where a is the type of the elements in the list 16:04:30 pyspark.reduce is basically "pop two elements at random; apply the function to those two elements; push the two elements back into the list; repeat until the list has only one element" 16:04:32 Python also has sum(), which can be made to behave like a fold on lists. 16:05:21 Hm. So, on one hand, yes, it looks like one of those is a commutative operation and the other is not. 16:05:28 Koen: I think the name "reduce" comes from smalltalk 16:05:38 no wait 16:05:43 in smalltalk it's called inject? 16:05:45 I don't know 16:06:08 fold, reduce, inject, any of those is fine. insert is a bit too much. 16:06:15 But OTOH we could find the data structure at fault; if we take a fold on a list, but change the list to a set, then the fold automatically has to commute, or else definitionally it's not folding a set. 16:06:59 Corbin: don't you mean associate instead of commute? 16:08:15 i think reduce is perhaps a more intuitive name to someone who isn't steeped in fp 16:09:17 fwiw, I use the term "associative fold" for (a, a) → a style folds where the order of folding doesn't matter 16:09:46 b_jonas: I think that a fold on lists has to already be associative? I mean that the order of values within the container has been forgotten. 16:09:47 does Perl have a fold as a builtin? I know it has a map and a filter 16:10:16 ais523: no, not as a builtin. I think there's one in a module packed with it. 16:10:16 Corbin: it doesn't, left-fold and right-fold exist as defined evaluation orders for folding and many practical folds care about the difference 16:10:27 Corbin: if it was associative, we wouldn't distinguish between fold_left and fold_right except for performance issues 16:10:33 but it has a for loop and mutable lexical variables as builtins 16:10:44 List::Util::reduce is the one from a module 16:11:00 Perl 6 has a strange fold builtin. 16:11:18 It takes an operator and uses the associativity of the operator (left or right) to decide the associativity of the fold. 16:11:26 I guess it's not called Perl 6 anymore. 16:11:29 ais523: Yes, but I'm talking about the underlying recursion scheme. Like, a list is a free monoid, which means that list concatenation is associative. Similarly, there's free rules for list folds when we are folding over a concatenation. 16:11:38 I'm an imperative person, I just use for loops 16:12:08 Koen_: We *do* only care for performance reasons! Any "right" fold can be turned into a "left" fold by composing with a list reversal. 16:12:22 fair enough 16:12:43 Hmm, in Haskell list is not a free monoid. 16:13:01 -!- imode has joined. 16:13:02 Corbin: I don't think folds on a list have to use an associative operator. we do fold lists with subtraction to get an alternating sum. 16:13:25 Corbin: even if the list itself is associative, the operation you're folding over it might not be 16:13:26 why not ? :( 16:13:26 but sure, most of the operators you fold with will be associative 16:14:01 b_jonas: in my experience, the operators I fold with are often *not* associative 16:14:07 oh, and we fold with floating point addition too 16:14:10 in particular, the type of the left argument and right argument often differs 16:14:11 I think the thing Corbin is getting at is that a set isn't supposed to expose the order it stores elements in. 16:14:20 ais523: aren't those reduces instead of folds? 16:14:22 An unordered pair is similar. 16:14:25 so, if you fold with the wrong associativity you get type errors 16:14:27 you could call them folds of course 16:14:36 b_jonas: it's basically an iteration that gets to modify a mutable variable as it goes 16:14:44 ais523: yep, a for loop 16:14:48 except functional 16:14:52 If you have a canonical order on a type, you can just expose the elements in that order, but if you don't, you still want fold {a,b} = fold {b,a} 16:15:10 ais523, b_jonas: This is a good point. I'm curious whether those are genuine katamorphisms. This is a good example of when engineering and theory are using the same jargon for different purposes. 16:16:03 Sure. 16:16:09 I guess evaluating a polynomial, with its coeffs in a list, is also a non-associative fold 16:16:16 Well, presumably you want "katamorphism" to mean an initial F-algebra's unique thingy. 16:16:32 Yeah. To distinguish from paramorphisms, at a minimum. 16:16:36 `? catamorphism 16:16:38 A catamorphism is when you recurse too greedily and too deep. 16:16:45 Those names are all silly in my opinion. 16:16:53 no, a catamorphism is when a cat becomes amorphous to flow throuhg a small gap 16:16:58 shachaf: hmm… suppose you have a set of strings representing integers, and you want to calculate their sum 16:17:11 you can map a parseInt function over the set, then associative-fold over it with addition 16:17:23 or, you can left-fold a "parseInt then add" function over the set, starting at 0 16:18:00 this produces the same result regardless of the order the set is read in, *but* the fold operation isn't associative, which is why you have to left-fold (you would get a type error instead with any other ordering) 16:18:18 nah, the sum is already printed at the bottom of the recipt, you don't have to add themup 16:18:53 Hmm, there are multiple things people mean by "fold", even in a concrete setting like Haskell. 16:19:23 b_jonas: not even if you're implementing the receipt printer? 16:19:24 In Haskell it either means the structural thing for a type, like foldr for a list, or the thing from Data.Foldable, which is always about "sequence"-style folding. 16:19:48 shachaf: yes, there's the non-associative folds for lists, and there's a typeclass for trees that you can fold over in a way that had better been associative 16:19:56 yes, those 16:20:02 ais523: then you don't have strings 16:20:12 no, a catamorphism is when a cat becomes amorphous to flow throuhg a small gap ← https://nhqdb.alt.org/?1404 16:20:37 I like kittens. 16:20:38 ais523: besides, the sum is more authoritive then the details above, because the total is required to be printed there for tax purposes, the itemized bill is an optional bonus 16:20:55 b_jonas: I don't think you can necessarily assume that the receipt printer isn't storing the prices as strings 16:21:02 lol 16:21:14 this sort of software is famous for being badly programmed 16:21:27 Most software is famous for being badly programmed these days. 16:21:29 ais523: strings? those recipt printers existed way before strings 16:21:52 that said, in one supermarket near me, the software automatically regroups the items you've purchased in order to take the least possible advantage from special offers 16:22:00 (which is the reverse of what the customer would want, but useful for the store) 16:22:27 -!- oerjan has joined. 16:22:27 damn 16:22:40 the first ones I saw could only print numerals and a few symbols from their type loop, and then for the header you'd insert a separate stamp template that it stamps on 16:22:55 ais523: hehe, that's odd 16:23:01 -!- Trieste has joined. 16:23:20 the ones I see here usually preserve the order that the items were entered 16:23:23 this means that sometimes I would put a purchase through as two separate transactions 16:23:35 even the all-digital ones that print a whole page together at the end of the transaction 16:23:36 in order to get a lower price 16:24:09 ais523: This reminds me of banks reordering transactions from largest to smallest to maximize overdraft fees. 16:24:12 (I explained to the cashier that the tills were adding up the bills incorrectly unless I did that) 16:24:15 Which I think US banks sometimes do, at least. 16:24:30 shachaf: wow 16:24:53 shachaf: I've been told (but don't know from personal experience) that some credit cards charge interest based on the maximum amount of debt you've been in since the last time you weren't in debt 16:25:00 -!- APic has quit (Read error: Connection reset by peer). 16:25:04 so that partially paying off a debt does nothing and you have to clear it to avoid paying interest 16:25:09 Big USA banks are terrible; use credit unions when possible. 16:25:11 I'm not sure whether to believe this or not 16:25:31 -!- APic has joined. 16:25:59 ais523: yes, I think mine does that, but not quite phrased that way: it collects all the payments for a month, and you can only clear the debt off after the month ends, even if you actually transfer the money in advance 16:26:25 (the offset of when each month ends depends on the type of the card) 16:26:31 at least in the UK, I think credit card companies aren't allowed to charge you interest if you clear the debt immediately 16:26:52 ais523: yes, they don't charge me interest if I pay within a given period after the month ends 16:27:15 Hmm, I think the methods US credit cards can use to calculate interest are very regulated now. 16:27:21 they do still charge a fixed yearly fee for having a card 16:28:02 oh, here they mostly don't charge fees for having a card, basically because their competitors don't 16:28:25 and they can't do it stealthily because one of them got sued really hard for not making the existence of a charge clear 16:28:30 ais523: I think there exist credit cards here that don't charge a fixed fee 16:29:07 One thing that I think is true is, if you have no credit card balance, you get about a month of no interest to pay a balance before it starts accruing interest. But once you're in the interest state, new purchases start accruing interest immediately, until you back down to $0 for a while. 16:29:12 I don't know the details. 16:30:12 In the US credit card companies compete for customers by paying them all sorts of money in various forms. I think that's much less true elsewhere. 16:30:37 It must be a very profitable business, presumably partly at the cost of merchant fees and partly at the cost of people paying a lot of interest. 16:31:36 shachaf: they advertise that they pay you money, but in many of the cases there's small print that means they pay very little money or only in very specific conditions 16:32:22 or they're credit cards rebranded by a particular airline or supermarket chain, in which case they pay you money if you buy in their brand of supermarket 16:32:39 or something like this, I haven't delved much in the details 16:33:05 they also spend a lot on marketing, they send agents everywhere who try to sign you up for free credit cards 16:33:55 the ones that ask "excuse me Sir, do you work in Hungary?" in supermarket are generally trying to sell one of those, but there are also other opening lines 16:35:35 I admit it's a good opening question, it distinguishes students with no income from people who probably qualify for a credit card 16:37:03 b_jonas: is the "in Hungary" to make the question less rude by making it ostensibly about something else? 16:38:39 ais523: I'm not sure. I thought it's because it's more complicated for people to apply for those credit cards if they have an income abroad. Yes, I know there are supposed to be EU laws about this sort of thing, but EU principles and practice often doesn't seem to match 16:39:04 but yes, it might also be because it sounds less rude 16:39:35 or more easy to understand that they're not trying to hire you for a seasonal job or something 16:40:20 I assume that there are few people shopping in Hungary who actually work outside Hungary, so it probably wouldn't be worth asking about unless you want to reassure people about the intentions behind your question 16:40:43 probably not many who live in Budapest, yes 16:41:08 (there would be more close to the Austrian border) 16:43:20 -!- tech_exorcist_ has joined. 16:43:24 When people ask me questions about being local, it's usually related to voting for things. 16:43:44 -!- tech_exorcist has quit (Quit: Goodbye). 16:43:49 -!- tech_exorcist_ has quit (Remote host closed the connection). 16:43:55 hmm, I don't remember what opening questions those people have, they usually have party color decorations 16:43:57 I'm not sure I've ever been asked a question about being local, in contexts where people knew my physical location 16:44:05 -!- tech_exorcist has joined. 16:44:14 oh, I have been asked if I'm local 16:44:19 people ask that when they try to ask for directions 16:44:33 such questions are sometimes perceived as racist, because they tend to be disproportionately asked to ethnic minorities (for an ethnic majority people just assume they're local, generally) 16:45:09 -!- chiselfuse has quit (Ping timeout: 276 seconds). 16:45:43 no, backwards because they don't even ask people who they don't think are local, because there's usually a choice of other people to try to ask directions from 16:46:01 mind you, you can still count that as racist if you want 16:46:22 but they don't need to ask that question for that 16:46:29 -!- chiselfuse has joined. 16:46:54 They often ask "are you a California voter?". I think the goal is to get signatures from voters in order to get things like ballot proposals, which require some number of signatures. 16:47:06 I mean propositions. 16:47:15 possible 16:47:50 -!- immibis has quit (Remote host closed the connection). 16:48:02 the questions I remember having been asked are "have you voted yet?" (on the day of the election), and "have you heard of yet?" 16:49:21 -!- immibis has joined. 16:49:48 the UK has really strict rules about campaigning 16:50:38 in the run-up to the election you have to give a platform to every party if you give a platform to one (with various rules about weighting major versus minor parties), and as voting opens you can't publicly do anything related to campaigning at all 16:51:01 (you can still talk to friends privately about the election, but can't, e.g., talk to random people on the street about your party preferences) 16:51:30 news reports on the day of an election, while voting is open, can be pretty funny because it's obviously a major story that they need to cover, and yet they aren't allowed to say anything substantive at all 16:51:37 lol 16:51:50 so the stories are along the lines of "here's the most interesting dog we saw outside a polling station" 16:52:02 even from normally serious news organisations 16:52:26 we're having a recall election for governor 16:52:35 it's structured in a strange way 16:53:10 ais523: I think when voting starts (and shortly before) they are no longer allowed to solicit strangers to vote on a specific party, but they can still solicit people to go voting if they don't specify who for 16:53:11 ais523: At least the HMRC self assessment system optimizes the foreign tax credit relief deduction order in the way that maximizes the benefit from it. (Then it allows you to reorder if you wish.) 16:53:34 question 1 is whether to get rid of the current governor (yes/no); question 2 is who the replacement should be (from a list of 46 candidates, not including the current governor) 16:53:41 They also round to integer £s always in the direction that's more advantageous to the taxpayer. 16:53:57 so it's quite possible that the current governor will be replaced by someone who got far fewer votes than he did 16:54:34 and the governor says we should leave question 2 blank 16:54:41 as for news stories, they usually say things like "in , an old got sick in the voting room so voting was suspended for 5 minutes. in the seal of the voting box got damaged, so voting got suspended for 20 minutes until they bought a new certified sealed box." 16:54:53 even though you are allowed to vote "no" and still vote question 2 16:54:59 keegan: that is a bad idea if you like the current governor, it'll just guarantee that you'll get someone who his supporters dislike 16:55:30 also news about how big queues are in certain polling stations, usually the stations where people who vote from a town far from their home (but still within Hungary) are sent to vote 16:56:23 the last time we had one of these, the lieutenant governor ran as a replacement and got second place, and i guess they think that having him on the ballot boosted support for "yes" 16:56:47 so this time there are no credible replacements from the governor's own party and they are not endorsing anyone for question 2 16:56:55 keegan: it may be a good idea for the governor himself, but not for the voters 16:57:22 also there's an interpretation of the state constitution where we shouldn't even have question 2 and the lt gov should automatically become governor if the governor is recalled 16:57:47 (since that's what happens if the governor dies or resigns, and the constitution says that a recall should include an election for a replacement only "if appropriate") 16:57:59 so maybe if he loses they'll challenge the vote 16:58:03 it's all very strange and californian 16:58:09 this state really suffers from an excess of democracy 17:00:05 people ask that when they try to ask for directions <-- hm, in norwegian there's a different idiom for pre-asking that, "er du kjent her", which means more or less "to you know this place" with no necessary implication of whether you live there 17:00:26 ais523: re "sometimes I would put a purchase through as two separate transactions" => are the rules such that you have to solve hard computational problems to optimize it? 17:00:53 b_jonas: fortunately no, I think this is O(n log n) with the sort of special offers that were available 17:01:33 also if replaced the replacement will serve for only one year because we are due for a normal gubernatorial election next year 17:02:35 and the likely replacement is a far right talk radio guy who has no chance in a normal election 17:04:35 since it is a very left leaning state 17:06:31 hmm, I could try to make a third dairy-themed programming task from that. you want to follow your grandmother's recipe to the letter, and it calls for $n grams of kefir. the supermarket sells cups of kefir in several different sizes, with weights @a gram each. how much of each type do you buy? 17:07:04 -!- hanif has joined. 17:14:59 keegan: i saw scott alexander write about that mess, supposedly all the democratic candidates were quite terrible because of that strategy of no one important running. this sounds to me like it would really have benefitted from transferrable votes 17:15:31 at least they could then maybe get one of the less horrible republicans 17:16:46 like biden? oh wait, he's horrible 17:16:57 int-e: he's not republican hth 17:17:02 ... 17:19:44 also according to scott aaronson, he's better than a rutabaga, so still beats trump 17:20:34 but that was a different election and you'll just have to watch the mess 17:20:54 He's still somebody who would fit right into the Republican party. 17:21:02 Which was the point. 17:21:40 int-e: i didn't know that. but i haven't really paid attention to him. 17:23:03 (also technically i still don't know that) 17:23:08 He may have some radical ideas regarding gun control that would feel out of place. That's the only thing I can currently think of... eh I'm no expert either. 17:23:18 trump passed more gun control than obama 17:23:25 I should probably figure out the least evil for Germany. 17:23:37 "I like to take the guns early. Take the guns first, go through due process second." -- Donald Trump 17:23:54 of course don't mention that quote to any of the trump worshipping gun nuts 17:24:10 int-e: i have this thought lately - whenever you choose the lesser evil, someone has just played good cop/bad cop on you 17:25:02 indeed 17:25:25 the ruling class are all friends behind the scenes, regardless of party 17:25:28 Oh sure, elections are a carefully managed illusion of having /some/ impact on the political process. 17:25:30 and big corporations donate to both 17:25:42 It's hard not to be cynical about it. 17:25:59 meanwhile the most destructive and evil parts of american society (the military-industrial complex, mass incarceration, the drug war) have essentially bipartisan agreement 17:26:13 although the last one is falling apart a bit. but our prez still thinks legalizing weed is too dangerous 17:27:37 both parties kept us in afghanistan for 20 years just like both parties kept us in vietnam for about as long (if you count various covert and "assistance" operations going right back to the fall of the french colonial government) 17:28:04 i think people pay way too much attention to elections 17:28:33 like, you might as well vote because it's easy and gives you a little influence for free. but if you consider yourself "politically engaged" and yet most of that energy goes into arguing about who to vote for, then you're doing it wrong 17:28:49 especially arguing about who to vote for at the national level 17:29:09 local politics has so much more direct impact on people's lives, and is also a lot easier for an individual to influence 17:33:05 i'm so exhausted from electoral politics and being told that every election is an existential battle for the future and yet no matter who wins nothing really changes 17:34:24 even right now with democrats in "control" of the white house, the senate and the house, they can't really get anything done 17:34:48 and so if climate change or the rise of fascism really is an exstiential risk then the solution to that problem must lie outside electoral politics 17:35:22 but people shy away from this because their existential risk rhetoric is only intended to scare you into voting blue no matter who 17:35:51 "i'm so exhausted" -- this means it's working as designed :P 17:39:48 yeah 17:40:00 -!- APic has quit (Read error: Connection reset by peer). 17:40:24 -!- hanif has quit (Ping timeout: 276 seconds). 17:49:30 -!- hanif has joined. 17:56:39 oerjan: '"er du kjent her"' > curious what does this mean literally? 'are you known here' doesn't make sense 17:57:07 -!- APic has joined. 18:12:07 -!- Sgeo has joined. 18:12:42 hanif: that is the literal word-for-word translation, but "kjent" works weirdly, as if it's ambiguous whether it's active or passive 18:13:56 "kjent mann" - a man who is known, "kjentmann" - a man who knows (the area) 18:15:21 hm 18:16:11 Hmm, english doesn't have a "know"-derived word for someone knowledgable, does it... 18:16:44 . o O ( A knowledger. <-- well we can always try to make something up ) 18:16:54 https://en.wiktionary.org/wiki/kjent#Norwegian_Bokmål has both meanings 18:17:05 "knowledge" is already a crutch though. 18:17:19 int-e: knower. 18:17:24 I guess. 18:17:44 German has "bekannt" for "known", "Kenner" for someone who knows. 18:18:00 it doesn't speak to the quantity of knowledge but knower is pretty close. 18:18:13 imode: Yes, that makes more sense grammatically. It's still not a word, unfortunately. 18:18:22 "kjenner" is also norwegian, but it's a noun while "kjent" is an adjective (or participle) 18:18:25 (At least not one I'm aware of.) 18:18:34 huh? 18:18:36 knower is a word. 18:18:57 "bekjent" exists and means "acquaintance" :P 18:18:59 Never heard it. 18:19:19 oerjan: Oh we have that too, "Bekannter". 18:19:21 considering you were asking for it, I'm not surprised. :P 18:19:32 oerjan: Just with a bit more grammar, I guess. 18:19:35 if you didn't know it, you wouldn't ask the question! 18:20:40 also in other cases en:know = no:vite (~de:wissen) 18:20:49 it's apparently an agent noun of `know`. interesting, I wonder what other kinds of agent nouns exist for common verbs that don't "point" trivially to them. 18:20:59 imode: I've found this, https://www.urbandictionary.com/define.php?term=knower ...no dictionary entries. 18:21:04 huh? 18:21:15 https://www.thefreedictionary.com/knower 18:21:25 collins english dictionary. 18:21:40 it's also apparently a music duo. 18:22:20 and in wiktionary https://en.wiktionary.org/wiki/knower 18:22:44 does an agent noun exist for every verb, then? 18:22:57 seems grammatically correct to just add "er" to every verb. 18:23:07 or "or". 18:23:15 Never heard it. <-- it's weird how in english words that make perfect sense can sometimes not exist for no good reason. 18:23:19 mayve just transitive verbs? 18:23:29 having trouble coming up with a counterexample. 18:24:15 huh. 18:24:26 yeah you could form an agent noun out of any verb. 18:24:30 that's neat. 18:26:41 snow? 18:26:56 'snow business of yours 18:27:05 rain too 18:27:08 snower. rainer. 18:27:12 although wiktionary has an entry for snower, apparently it's for another verb sense i wasn't familiar with 18:27:29 apparently snower is a DBZ character so I defer to toriyama. 18:27:49 https://en.wiktionary.org/wiki/snower 18:28:10 https://en.wiktionary.org/wiki/rainer <-- oh this one actually makes sense but I've never used it.. I think I might. 18:28:19 a showerhead is technically a rainer! 18:28:43 a cloud is technically a rainer 18:28:55 they do a damn good job. 18:29:43 anyway, know-it-all or expert are more common terms :P 18:30:42 those kind of denote the quantity of knowledge/status of the user more than "this dude knows, he is a knower". 18:30:42 curiously, i learned that in ancient greek, the verb for snow (χιονίζω) could be used actively - referring to a god 18:32:51 snow is rather powerful 18:34:02 Have I ever mentioned http://www.snowbynight.com/pages/ch1/pg1.php I wonder... (it's a story comic, more romantic than funny) 18:34:43 int-e: the snow wasn't the god, the god was throwing the snow 18:35:49 avalanches are pretty impressive too 18:35:56 i too have thrown snow :P 18:36:34 don't get me wrong, it's cool 18:36:56 it's just pretty common to associate forces of nature with gods :) 18:40:22 `learn hanif may be a god, or maybe they're just snowing us. 18:40:26 Learned 'hanif': hanif may be a god, or maybe they're just snowing us. 18:41:01 i got a pun for the wisdom, it's all good. 18:42:43 ironic also because 'ḥanif' (in arabic) means one inclined to monotheism 18:43:12 tricky. 18:45:25 -!- ais523 has quit (Quit: quit). 18:50:05 -!- APic has quit (Read error: Connection reset by peer). 18:52:17 `? oerjan 18:52:18 Your omnidryad saddle principal ideal "Darth Ook" oerjan the shifty eldrazi grinch is a punctual expert in minor compaction. Also a Groadep who minces Roald Dahl. He could never remember the word "amortized" so he put it here for convenience. His arkup-nemesis is mediawiki's default diff. He twice punned without noticing it. 18:52:25 That is way too many modifiers. 18:53:04 istr you added most of them hth 18:53:44 then again, i'm perpetually confused. 18:55:56 -!- APic has joined. 18:55:57 . o O ( `slwd oerjan//s/ / highly adjectivated/ ) 18:56:56 -!- Koen_ has quit (Remote host closed the connection). 18:58:55 is there a know-worthy non-default diff in wikipedia? 18:59:42 -!- Koen_ has joined. 19:07:00 int-e: i use wikEdDiff 19:09:27 which is the only one i know that is listed in preferences 19:10:08 and is usually far clearer than the default, but sometimes locks up on big changes 19:11:46 (i mean, the default cannot even handle insertion of a blank line before a paragraph with a few changes sensibly...) 19:15:00 -!- APic has quit (Read error: Connection reset by peer). 19:15:18 -!- hanif has quit (Ping timeout: 276 seconds). 19:15:19 hm, i vaguely recall wikEdDiff or something similar _is_ the default if you use the visual editor rather than editing markup 19:21:40 -!- hanif has joined. 19:26:15 -!- hanif has quit (Client Quit). 19:32:13 -!- APic has joined. 19:49:36 so visual editor has some worth after all 19:53:55 int-e: oerjan: I’m still confused why there isn’t a blame feature (like in “git blame”) for at least MediaWiki (but I think many other popular wiki engines lack that too?) 19:54:48 arseniiv: it may actually have to do with the sheer amount of processing that would require; it is a website after all 19:55:14 but it's probably also very messy... because edits are often very small 19:55:33 searching for who made something foolish in an article is usually a no go for me. I tried it several times and I think every time I confused the author of the change with someone right behind or after 19:55:47 ('blame' needs diffs through thew entire history at once) 19:56:12 arseniiv: bisection works well enough, it's just tedious 19:56:24 very tedious! 19:56:42 like, it still could be automated to some degree 19:57:04 I wouldn't be surprised if there were browser add-ons for that 19:57:32 but I'm a very casual wiki history investigator 19:57:42 I do it maybe once every two months 19:58:32 though couldn’t a source be tagged with which segment is by whom (predicated on that the diff used is a wise one) 19:59:20 I almost never do that at all, but each time curiosity wins… ugh 20:02:30 there could be an option to erase all tags when an article gets a stable version checked by someone omnireadent 20:02:59 so there wouldn’t be too much garbage because of blame-tagging 20:07:47 -!- Everything has joined. 20:09:01 -!- arseniiv has quit (Quit: gone too far). 20:16:42 so visual editor has some worth after all <-- you can enable wikEdDiff separately in the preferences 20:17:09 -!- riv has quit (Quit: Leaving). 20:20:05 -!- oerjan has quit (Quit: Nite). 20:38:10 -!- arseniiv has joined. 20:39:37 -!- Koen_ has quit (Quit: Leaving...). 20:41:48 fungot: what's a good chunbk size for file transfers these days? 20:41:49 int-e: but you get what i was worrying whether or not that qualifies as " invent" 20:52:44 -!- Lord_of_Life_ has joined. 20:54:40 -!- Lord_of_Life has quit (Ping timeout: 240 seconds). 20:55:20 -!- Lord_of_Life_ has changed nick to Lord_of_Life. 20:58:23 fungot: Can't you just once answer a question? 20:58:24 fizzie: ( a b)) work and i'm not particularly keen on. 21:01:28 fungot: Please respond with gibberish. TIA. 21:01:28 int-e: no amount of my expenditure... being a pita. i need to beat fnord 3. i just am pulling an fnord 21:01:53 <3 lowering standards 21:04:07 I wonder if fnord 3 is a game. 21:05:13 It would seem to have been Onimusha 3. 21:05:25 . o O ( It's the first in a series. The title was chosen in anticipation of the eventual prequels. ) 21:05:48 From #scheme, which is usually the most on-topic of the three channels the `irc` style is composed of. 21:05:59 Let's pretend I wrote that before you matched it with the logs. 22:46:40 -!- arseniiv has quit (Ping timeout: 240 seconds). 23:10:36 -!- tech_exorcist has quit (Quit: Goodbye). 23:17:49 int-e: can you be more specific? what chunk? chunk in an IP packet? chunk in a TCP stream or HTTP query? file on a removable storage device? 23:18:04 Man, the Glushkov construction for NFAs is so good. 23:18:50 -!- src has quit (Quit: Leaving). 23:19:03 -!- src has joined. 23:22:43 b_jonas: it's not really interesting 23:26:59 tbf I'm asking fungot just as stupid questions sometimes 23:26:59 b_jonas: so i have to make the sexpr encoder might have been voodoo code for protecting the software you've written? i don't know; i've never thought about how to make an image set... doing it manually but that doesn't necessarily minimize operations though 23:28:29 If a bot does something "manually", isn't it still automated in a sense? 23:31:41 fizzie: https://xkcd.com/2173/ 2021-09-06: 00:03:41 [[User:Xorol]] https://esolangs.org/w/index.php?diff=87923&oldid=86296 * Xorol * (+210) Added some info 01:26:43 maybe then he'e not automated but manned 02:46:57 [[Grue]] https://esolangs.org/w/index.php?diff=87924&oldid=87912 * PixelatedStarfish * (+28) /* Interpreter */ 02:47:07 -!- Guest65 has joined. 02:47:13 -!- Guest65 has left. 02:48:48 [[Trivial brainfuck substitution]] https://esolangs.org/w/index.php?diff=87925&oldid=83915 * PixelatedStarfish * (-53) /* Syntax */ 03:01:24 hah, few months ago I said "I should made a universal translator between all those brainfuck substitutions" 03:01:36 and someone already made it in that wiki page 03:02:26 oh wait, nope, it's just plain bf interpreter 03:02:55 I imagine a translator could go fetch the wiki pate, 03:03:13 *... page, find the instructions table and replace them automatically 04:10:05 -!- chiselfuse has quit (Remote host closed the connection). 04:10:23 -!- chiselfuse has joined. 04:11:01 -!- src has quit (Ping timeout: 252 seconds). 04:14:57 -!- APic has quit (Read error: Connection reset by peer). 04:15:23 -!- APic has joined. 04:16:07 -!- velik has quit (Ping timeout: 240 seconds). 04:54:57 -!- APic has quit (Read error: Connection reset by peer). 05:00:16 -!- APic has joined. 05:59:57 -!- APic has quit (Read error: Connection reset by peer). 06:00:14 -!- APic has joined. 06:04:45 -!- velik has joined. 06:09:57 -!- APic has quit (Read error: Connection reset by peer). 06:10:15 -!- APic has joined. 06:49:29 nakilon: but nobody uses the substitutions other than brainfuck, Ook!, and the two or three that encode brainfuck with repetitions of one byte 06:52:39 I thought Chromium OS is something good, because there is no way to install anything in it, you only use docker, so it's so safe... 06:53:47 until I launched a container from another container mounting the docker socket in both, and server just stopped responding, disks were spinning like mad and even serial console didn't work 06:54:32 this stupid container overrated container thing 06:55:42 yeah I know that thing that I'm trying to build are not what people are supposed to try to build but I was told it's all so reliable... 06:55:52 *things 07:31:44 -!- ais523 has joined. 08:05:49 ok docker sockets were not a reason of hanging; it hanged again _-- maybe it's what happens to Chromium OS when it's out of RAM or idk, it just dies 08:06:37 -!- hendursa1 has joined. 08:09:27 -!- hendursaga has quit (Ping timeout: 276 seconds). 08:10:48 -!- ais523 has quit (Remote host closed the connection). 08:18:35 -!- velik has quit (Ping timeout: 252 seconds). 08:38:41 looks like the linux thing called "oom killer" kills a process but the system goes insane anyway and does not recover 08:39:13 -!- Sgeo has quit (Read error: Connection reset by peer). 08:43:27 -!- wib_jonas has joined. 08:44:10 -!- imode has quit (Ping timeout: 240 seconds). 08:44:12 does anyone happen to know where I can find human-readable info on how to interpret a robots.txt file? 08:49:00 IIRC it's barely standardized 08:50:07 yeah, https://www.w3.org/TR/html4/appendix/notes.html#h-B.4.1.1 has some info but not muc 08:56:39 -!- velik has joined. 09:01:01 lol I did "echo 2 > /proc/sys/vm/overcommit_memory" like this guy proposed https://serverfault.com/a/142003/67097 and now I can't spawn any process even while it's 500 mb of free ram 09:03:28 and now I can't even revert it because sudo sh -c "echo 1 >..." emits -bash: fork: Cannot allocate memory 09:04:10 nakilon: so use the kill builtin 09:04:17 that is why kill is a builtin command in bash 09:04:24 kill what? 09:05:15 yeah, that's the hard part 09:05:28 $ ps 09:05:28 -bash: fork: Cannot allocate memory 09:05:33 yeah 09:05:40 might be easier to reboot in practice 09:05:43 and this was just before that 09:05:44 $ free -h 09:05:44 total used free shared buff/cache available 09:05:44 Mem: 982Mi 290Mi 382Mi 1.0Mi 308Mi 544Mi 09:07:02 Chromium OS is just broken crap; I guess Google does not care about the scenarios when somethings runs out of memory -- they just stop the machine and spin up a bigger one, and probably expect me to do the same 09:07:11 on every single task 09:08:02 gotta switch to ubuntu 09:17:19 Does bash have a `readlink`-capable builtin? I imagine you could make a poor man's ps out of looking at /proc/pid/exe that way. Hmm, apparently not. 09:18:10 -!- velik has quit (Ping timeout: 240 seconds). 09:21:43 `` for p in /proc/[0-9]*/stat; do read -d'\t' pid prog rest <$p; echo $pid $prog; done 09:21:44 10 (writeback) \ 11 (kcompactd0) \ 12 (crypto) \ 13 (kintegrityd) \ 14 (bioset) \ 15 (kblockd) \ 16 (kworker/0:1) \ 18 (kswapd0) \ 1 (init) \ 2 (kthreadd) \ 3 (ksoftirqd/0) \ 44 (bioset) \ 45 (kworker/0:1H) \ 48 (cat) \ 49 (`) \ 4 (kworker/0:0) \ 50 (`) \ 51 (`) \ 5 (kworker/0:0H) \ 6 (kworker/u2:0) \ 7 (lru-add-drain) \ 8 (kdevtmpfs) \ 9 (oom_reaper) 09:21:55 I feel like that probably maybe needs no processes. 09:23:22 -!- velik has joined. 09:24:52 -!- velik has quit (Remote host closed the connection). 09:26:31 fizzie: I think that will still fork, even if not exec 09:26:33 but I'm not sure 09:42:39 Hmm, well, from https://0x0.st/-wu8.txt I think not. 09:44:53 Interestingly, repeating `readlink /proc/self` on my work laptop increments the resulting number by pretty much exactly 13 for each iteration, which makes me think there's some sort of an extra per-command or per-prompt hook set up somewhere. 09:47:34 -!- ais523 has joined. 09:47:36 fizzie: cat /proc/*/forks gives the number of processes/threads created total on the system since boot, I think 09:47:44 or at least the user-space ones\ 09:48:20 you can use taht to detect if anything has forked, which is useful to iterate through all processes eg. in /proc and be sure that you haven't missed any, eg. to kill all processes by a user 09:48:25 hmm, does that count both fork and clone? there are two ways to create processes nowadays 09:48:31 (I think Linux doesn't have a spawn in kernel-space) 09:48:32 ais523: yes, it counts clone 09:48:39 I checked that once in the kernel source code 09:48:45 of course things may have changed since\ 09:48:51 let me look up the exact name of the file 09:51:20 There's a "processes N" field in /proc/stat at least. 09:54:06 yes, the filename is /proc/stat 09:54:09 So I guess https://0x0.st/-wuT.txt is more direct evidence of not creating new processes. 09:54:13 you were faster than it took me to look it up 09:54:36 (it was among my emails, but was spoilered so a plain text search didn't find it easily) 09:54:48 it's not "forks" 09:55:02 yep 09:55:13 and it's a 64-bit counter, so it can't overflow either 09:56:28 mostly though I think if my computer hangs swapping and can't start a new process, I just reboot it 09:56:28 For some reason PIDs that are >= 2^16 just feel weird. 09:57:01 (possibly reboot with more and more rescue options if it happens right after boot with no chance to interrupt) 09:58:26 fizzie: it feels good, it means we finally managed to shed another piece of historical accident that held us back. there's still a control somewhere in /sys or /proc to limit pids if you don't like it though. 10:14:36 -!- wib_jonas has quit (Quit: Client closed). 10:20:56 -!- wib_jonas has joined. 10:41:24 -!- riv has joined. 10:45:01 -!- APic has quit (Read error: Connection reset by peer). 10:45:20 -!- APic has joined. 10:58:50 -!- tech_exorcist has joined. 11:15:37 -!- wib_jonas has quit (Quit: Client closed). 11:26:51 -!- dyeplexer has joined. 11:29:42 -!- tech_exorcist has quit (Remote host closed the connection). 11:32:01 -!- tech_exorcist has joined. 12:04:23 interesting, 2FA not via SMS but via phone call that you don't need to accept 12:04:33 you just type the last 4 digits of the number 12:04:53 so they own 10000 phone numbers just for that 12:09:37 -!- arseniiv has joined. 12:40:36 maybe they're just spoofing the number? 12:42:35 -!- dyeplexer has quit (Ping timeout: 252 seconds). 12:44:57 -!- dyeplexer has joined. 13:41:59 -!- arseniiv has quit (Ping timeout: 252 seconds). 13:53:19 -!- arseniiv has joined. 14:00:04 -!- Everything has quit (Ping timeout: 252 seconds). 14:02:02 -!- Everything has joined. 14:40:30 "DPI SET to 67 x 34 (wanted 96 x 96)" is what I get when attaching to an xpra session, wonder what's up with that. 14:41:51 Tried to do `--dpi=96` on both `xpra start` on the remote side and `xpra attach` on the local side, but still. 14:55:09 -!- riv has quit (Quit: Leaving). 15:01:14 -!- wib_jonas has joined. 15:01:39 nakilon: well duh, it's easy to own a lot of phone numbers if you release a popular app that people will install on their smartphones 15:02:02 especially since many of those people will have their phones always on and will install just about anything 15:02:27 -!- riv has joined. 15:03:29 of course any other app on the same smartphone that has access to your call logs could spoof that part of the authentication as well 15:03:42 -!- src has joined. 15:04:05 -!- riv has quit (Client Quit). 15:05:15 it doesn't even have to be that same app, it could be another app that's a game with shiny colored balls and fewer ads than usual that they control that gives them the phone numbers 15:05:20 -!- riv has joined. 15:05:36 -!- riv has quit (Remote host closed the connection). 15:05:53 -!- riv has joined. 15:13:53 -!- imode has joined. 15:17:34 -!- hendursa1 has quit (Quit: hendursa1). 15:18:16 -!- hendursaga has joined. 15:26:34 -!- chiselfuse has quit (Remote host closed the connection). 15:27:40 -!- callforjudgement has joined. 15:27:40 -!- ais523 has quit (Ping timeout: 250 seconds). 15:27:57 -!- callforjudgement has quit (Client Quit). 15:28:24 -!- chiselfuse has joined. 15:56:44 -!- wib_jonas has quit (Quit: Client closed). 16:17:40 -!- chiselfuse has quit (Remote host closed the connection). 16:17:51 -!- chiselfu1e has joined. 16:31:39 [[School]] https://esolangs.org/w/index.php?diff=87926&oldid=85635 * AceKiron * (+82) 16:42:47 [[User talk:Heavpoot]] https://esolangs.org/w/index.php?diff=87927&oldid=85250 * Martsadas * (+111) 17:04:29 fungot being a pita is no news 17:04:30 arseniiv: and china could not copy usa technology and flaunt it just keeps on growing. am a bit puzzled about why you asked 17:05:04 fungot: why, I didn’t ask anything (yet?) 17:05:04 arseniiv: what is remarkable, i think. mostly common lisp and scheme implementations ( tm)) 17:05:38 I need to write some lispy language sometime, yeah 17:05:55 that sounded like pure propaganda 17:06:11 (fungot, I mean) 17:06:11 int-e: you're suggesting cluttering the namespace with names like fnord and fnord 17:06:31 fungot: okay, no need to get insulting 17:06:31 int-e: just seems silly to construct a list; it does whatever the code surrounding the ( x y) x y 17:07:09 something far from CL and Scheme, just using S-expressions for its syntax and maybe using symbols, though good symbols might ask their full CL treatment which isn’t easy for a language developer 17:07:32 you're suggesting cluttering the namespace with names like fnord and fnord => lol 17:09:31 I agree it’s silly to construct a list; either it’s already there in platonic sense, or it’s nowhere at all, in which case trying to construct it would be in vain 17:11:31 if it’s already there, one needs to just fetch it with (get-list-from-outer-planes ) 17:12:15 if it doesn’t have any names, then I guess we’re broke 17:13:03 either it’s already there in platonic sense, or it’s nowhere at all => though I’m unnecessarily classical here. Maybe there is a third option 17:19:04 arseniiv: "what is a list" has the potential to unfold into all philosophy ever conceived and some new one 17:19:49 int-e: it better do! 17:20:14 or did 17:20:22 at some point you'll have to make a list of possible interpretations 17:20:28 just to keep track of it all 17:21:08 (not circular; you can make a list without fully understanding what it is) 17:21:39 Lists usually require infinity; they don't trivially always exist. https://ncatlab.org/nlab/show/free%20monoid explains the details. 17:22:52 Saying "lists require infinity" sounds like saying "natural numbers require infinity". 17:23:09 Where I think it's maybe more like, the style you use to talk about natural numbers requires infinity, or something. 17:24:01 In Haskell lists are certainly not free monoids (either in the standard sense or in the Haskell sense, where those are also distinct). 17:24:07 Maybe there's a more grammatical way to put it. FinSet is a topos, so it's not possible to constructively tell whether or not infinite objects really exist; we have to assume them. 17:24:17 shachaf: fortunately we can justify this claim on a ridiculously informal level: Have you ever looked at the number 8 from the side? ;-) 17:26:05 It's well-established that the Peano naturals stop at 88. 17:26:17 I think something like shachaf too. For example, though I don’t know ultrafinitist constructions, we could imagine lists of length more than N fail to exist, so cons or ++ are partial but for some reason we can’t stumble on that fact 17:26:24 oh, 88 17:27:13 Man, "what if sufficiently big numbers don't exist? we'd never know it" is a funny take on ultrafinitism. 17:27:36 -!- Koen_ has joined. 17:28:28 you'll need imaginary numbers then 17:28:38 that you imagine to exist 17:29:05 The thing that makes it funny is that it still takes some platonic notion of existence, and imagines that it applies to some numbers, and not others. I hadn't really thought of that perspective. 17:30:10 I'm not even being finitist here. It's a variation on Skolem's paradox. In order to talk about existence of objects, we need a formal mathematical logic for those objects. For questions of size/cardinality/measurement, set theory is traditional. But constructive set theory is confined within the rules of topoi, so if a topos lacks some classical property, then the property didn't exist universally in the first place. 17:30:40 Just like with Skolem's paradox, we might have taken some property of Set (say, that there's natural numbers or free monoids) and imagined that it must be universal, even though some topoi like FinSet refute it. 17:30:50 -!- src has quit (Quit: Leaving). 17:30:58 that you imagine to exist => hm then we may end up with an existence hierarchy 17:31:04 I was talking about arseniiv's thing. 17:31:16 But, hmm, I can talk about the existence of objects without a formal mathematical logic for those objects. 17:31:56 I guess. Maths just makes it easy: Every describable object exists, except for those which would contradict themselves if they existed. 17:32:21 Would you say that existence is a property that some things have and some things don't, or that everything exists? 17:32:55 I'd say that "existence" is a linguistic meme, a language-game which has a faulty assumption about the nature of reality. 17:33:51 there were some logics with two sets of quantifiers, the usual ∀ and ∃ and then “outer” ones which have strange semantics 17:34:20 Hmm, Internal Set Theory? 17:34:55 a quantified variable in those runs over inexisting things. Don’t remember if it’s connected to IST 17:35:07 ow, not inexisting things, but all things 17:35:34 I think that was for modal logics or free logics, hm 17:36:38 -!- riv has quit (Quit: Leaving). 17:37:25 "real thought" is a nice oxymoron 17:37:25 I guess I saw that here: https://plato.stanford.edu/entries/logic-free/#Meinong 17:37:37 -!- riv has joined. 17:39:44 once I thought some kind of free logic would be what I wanted an ideal classical logic to be, yet it failed when I read this article: all kinds seem to have their flaws 17:40:52 hopefully a type-theoretical framework is good. At least I haven’t seen someone discussing flaws like those for it to have 17:41:54 it's one of those "there are 15 types of logic, but they all have their flaws. i'm going to develop a new logic that unifies them all" -> "there are 16 types of logic, but they all have their flaws" 17:42:44 But it makes for a great story. https://en.wikipedia.org/wiki/Homo_narrans 17:43:20 arseniiv: The "field with one element" doesn't exist, because of the definition of fields. Nonetheless it has pages on WP and nLab, because there is a field-with-one-element-shaped-hole in projective geometry. 17:43:38 "It's well-established that the Peano naturals stop at 88." => I don't think that can satisfy the axioms 17:44:09 When combined with the fact that the category of fields is disconnected (fields of different characteristic aren't related to each other), it suggests that fields are an incomplete notion; we have the wrong definition! 17:44:17 b_jonas: that just means that the theory is flawed model of reality 17:44:23 Corbin: yeah I agree it should exist in some fashion 17:44:33 the field F₁, I mean 17:45:37 "a quantified variable in those runs over inexisting things" => is that second order logic? 17:46:08 arseniiv: oh, third possibility: does Schrödinger's cat exist? 17:46:47 Hypothetically speaking, of course ;) 17:46:51 b_jonas: no, that one is one-sorted 17:47:53 int-e: unlikely. Schrödinger died in 1961, his cat would have died and decomposed by now unless he got it mummified or put it on a relativistic speed rocket or something 17:48:18 b_jonas: seems fair 17:48:48 int-e: it, I mean the paradox itself, does in global culture, but as of the cat itself, I’d think decoherence theory gives us a very tight estimate on the time the cat’s still in superposition, like attoseconds I think 17:49:11 oh my poor grammar 17:51:54 what I wodner is, if the poison gas is released in the box to kill Schrödinger's cat, wouldn't it also kill whoever opens the box when they open it? 17:51:57 -!- delta23 has joined. 17:52:39 I guess they could be careful and use a chemistry lab smoke hood or something 17:52:46 -!- Sgeo has joined. 17:53:30 hm what if we call a Schrödinger’s cat any cat which lives in Schrödinger’s children’s homes as an unbreaking line, or a tree. Then this kind of a collective cat is probably still alive 17:54:29 or if his children all disliked cats, then not 18:17:19 -!- dyeplexer has quit (Remote host closed the connection). 18:18:58 -!- Everything has quit (Quit: leaving). 18:42:28 I'm not sure if any cat would be willing to own the family that deliberately killed with 50% probability a previous cat just for a tought experiment 18:42:50 they would certainly just pick a better choice of servent 18:49:42 -!- tech_exorcist_ has joined. 18:51:05 -!- tech_exorcist has quit (Ping timeout: 252 seconds). 19:33:18 -!- Koen_ has quit (Quit: Leaving...). 20:16:16 are there good aperiodic 1d tilesets? 20:17:27 if so, either the matching rules should be quirky, or tiles should at least be nonconnected 20:18:14 I feel it might end up not that hard to enforce for example 0 → 01, 1 → 10 blow-up rules 20:30:26 arseniiv: I don't think aperiodic 1d tilesets are possible 20:30:55 1d tiles just behave like regular languages 20:31:27 yes 20:31:31 unless perhaps it's some weird non-measurable ones, but even so I doubt they can force aperiodic 20:31:52 you can do an aperiodic 1d tiling, but there's no tile set that forces aperiodicity 20:32:07 :( 20:32:44 +finite 20:32:46 how to make a connection with regular languages clearer? 20:33:01 each tile is a transition from one state to another 20:33:03 finite, yeah, I wouldn’t want an infinite tileset 20:33:03 arseniiv: it's quite literally an NFA 20:33:15 hmmmhmhmhm 20:34:42 I see, even if a tile has many holes and connects with many previous and following tiles, it still would be a finite number of neighborhoods allowed for all of them 20:34:54 that’s sad 20:36:08 it's interesting 20:36:25 so for wang tiles to work, the pattern needs height 20:36:32 that increases without bound 20:36:44 any finite height strip would just be equivalent to a 1d tileset 20:37:05 um wait 20:37:26 ah at least this 1d thing gives an insight (if it does) 20:38:32 what if you have two tiles, one is the set of rationals between 0 and sqrt(3), the other the set of all irrationals between 0 and 1? 20:38:42 one is the set of rationals between 0 and sqrt(3), the other the set of all rationals between 0 and 1? 20:38:46 no 20:38:49 argh 20:38:55 one is the set of rationals between 0 and sqrt(3), the other the set of all irrationals between 0 and 1? 20:39:26 then you'll have to overlay the two tiles such that the first kind repeats with period sqrt(3), the second with period 1 20:39:30 of course it's cheating 20:39:45 but you should try to explain why that problem can't happen without cheating 20:39:56 wait that doesn't work 20:40:02 you have to be more evil than that 20:41:08 it has to be the set of rational linear combinations of 1 and sqrt(3) between 0 and sqrt(3) half-inclusive, and the set of numbers between 0 and 1 that are linear independent from {1,sqrt(3)} 20:41:34 -!- Corbin has quit (Ping timeout: 252 seconds). 20:41:41 well there is the projection trick 20:42:20 http://sig3.ecanews.org/isac2010/lectures/06a_fujita_tilings_a.pdf slide 13 14 20:42:50 you start with a slope of irrational gradiant and project it down 20:43:58 riv: sure, but in 1D that'll just lead to an aperiodic tiling 20:44:06 not a tileset that forces it 20:55:44 -!- Lord_of_Life_ has joined. 20:55:52 -!- Lord_of_Life has quit (Ping timeout: 252 seconds). 20:58:21 -!- Lord_of_Life_ has changed nick to Lord_of_Life. 21:00:09 can a PDA output an aperiodic string? 21:01:22 PDA doesn't output a string, it only accepts or rejects a string 21:01:38 i seee... 21:01:41 but I suppose you could easily define an output version (pushdown transducer?) 21:02:06 maybe it has to be context sensitive 21:02:49 b_jonas: You can stick to natural numbers or integers; for example, if you let X = { n | n >= 0 such that n can be written in base 4 using only digits 0 and 1}, then {X u X+2} = 4X+{0,1,2,3}, so you can tile N, and {X u X-2} = 4X+{-2,-1,0,1} so you can tile Z. Obviously those are aperiodic 21:03:00 anyway i think it could output a nonperiodic string 21:03:19 you can use the stack to count so you could do like ABBAAABBBBAAAAABBBBBB 21:03:40 and there is no bound to the stack depth 21:04:34 (so infinite tiles are a problem) 21:05:29 keegan, oh good point! i was overlooking that completely 21:05:55 i'd have to formalize it to be sure though 21:06:04 maybe it's not so easy to count because you lose the count as you consume it 21:07:38 the pumping lemma for PDAs means you can always have long stretches of periodic substrings... 21:07:42 remember also there is a difference in power between deterministic and nondeterministic PDA (unlike for finite automata or for turing machines) 21:07:55 (assuming it accepts strings of arbitrary length) 21:08:23 int-e: infinite tiles are a problem for sure, I think using disconnected tiles we could force using them like keegan’s ABBAAABBBB: 1 2 3 4 etc., something like making them each 0, 1, 2, 3, … holes and carefully assigning distances 21:08:55 (fwiw i wasn't paying attention to the earlier tiling discussion) 21:09:17 it was about if I can make a finite 1d nonperiodic tileset 21:09:24 arseniiv: what I have is similar in spirit, really; I just find it cute to make it work with a single tile (though that means you have to keep track of the positioning of the tile for "aperiodicity") 21:10:17 (but to my mind that makes sense: there's no placement of tiles that is repeated periodically) 21:10:17 int-e: I think I saw that tile somewhere, even, if I infer its construction right (I skimmed what you wrote) 21:10:35 arseniiv: it's reminiscent of the cantor set 21:13:03 int-e: something like p-adically? Oh I guess I should just read in 21:15:39 > fix (\x -> 'X':tail (x >>= \c -> [c,c,'.','.'])) 21:15:41 "XX..XX..........XX..XX..........................................XX..XX........ 21:16:17 hm wait why use 4 but not 3? 21:18:01 with digits 0 and 1? that would leave a gap of size 1 near the beginning: XX.XX.... etc. 21:18:06 and nothing to fill it 21:18:30 ah, I see, we can’t use just 1 21:18:46 and using digits 0 and 2 confuses me, but I imagine it still doesn't work 21:20:19 I mean we can take X.X...X.X.........X.X...X.X[...] and shift it by one, and that will result in XXXX..XXXX........XXXX..XXXX[...] and now we have chunks of length 4 and some gaps of length 2 21:20:31 in contrast, base 4 just works 21:21:05 -X- -X- --- --- -X- --- --- --- --- --- --- --- --- -X- --- --- --- --- --- --- --- --- --- --- --- --- --- <- with 1 in ternary 21:21:34 yeah 4 with 0 and 1 looks more comfortable 21:21:39 basically by virtue of {0,1,2,3} = {0,1}+{0,2}, where {0,1} are used as digits for the tiles and {0,2} as offsets for shifting the tiles 21:22:31 Or, for covering the integers, {-2,-1,0,1} = {0,1}+{-2,0} 21:23:33 how I like simple solutions 21:27:36 Hah, how about this abstraction as an exercise: "Find a subset X of N={0,1,...} such that the map (x,y) |-> x+2y is a bijection between XxX and N." 21:29:45 (The X from above is the only solution.) 21:32:07 would that just be the odd numbers? 21:32:29 -!- olsner has joined. 21:32:58 int-e: sure, with infinite tiles it's easy. you can make one huge infinite tile with tiny holes far from each other, where the holes are randomly 2 or 3 long, plus small 2 and 3 long tiles to fill one of those holes, and that's aperiodic too. 21:33:16 riv: no, then you don't get any even numbers as results... but also plenty of duplicates 21:33:49 you can make that work with just two tiles in fact, no need for different sizes of holes, just place the holes randomly 21:33:53 b_jonas: your tiles are effectively infinite too, by virtue of incommunserability 21:34:42 b_jonas: right. but as I said, I found the task of making a single tile work interesting 21:34:59 -!- APic has quit (Read error: Connection reset by peer). 21:35:00 difficult problem :O 21:35:41 -!- APic has joined. 21:36:45 riv: well, 0 needs to be in X (otherwise you don't get 0 as a sum)... 1 needs to be in X (otherwise you don't get 1). 2 can't be in the set (because otherwise we'd get 2+2*0 = 0+2*1... and it basically continues like that. 21:37:26 riv: at some point you'll switch to binary representation.... and look at every second digit... and that's how you get to base 4. 21:37:49 that is so cool, it's like a sudoku or something 21:38:17 I think it's doable, but it does require some technique and persistence. 21:45:56 -!- Corbin has joined. 22:02:48 -!- tech_exorcist_ has quit (Quit: see you tomorrow). 22:24:53 -!- APic has quit (Read error: Connection reset by peer). 22:25:32 -!- arseniiv has quit (Ping timeout: 245 seconds). 22:42:13 -!- APic has joined. 23:08:55 -!- sprock has quit (Read error: Connection reset by peer). 23:09:28 -!- sprock has joined. 2021-09-07: 00:07:12 -!- delta23 has quit (Quit: Leaving). 01:27:14 -!- zgrep has left (I'm in too many channels.). 02:49:05 Hi there 02:49:17 Evening. 02:50:07 How's it going 02:50:09 So I recently wrote some code that compiles a Turing machine to cyclic tag https://github.com/esopsis/Turing-Machine-to-Cyclic-Tag 02:50:19 I put a link to it on the cyclic tag esolang page also 02:50:29 Just thought this might be a place to share that :-) 02:52:54 By the way I also found a powerpoint presentation online about a person compiling lambda calculus to a Turing machine. I contacted the researcher and he says he's working on a paper to publish about that www.macs.hw.ac.uk/~greg/limits%20to%20computability/SKI%20combinators%20(really)%20are%20%20Turing%20complete.pptx 02:53:16 s/lambda/combinators/, s/calculus// 03:22:19 Good times. 03:29:29 are you also already building some machine here with these series of substitutions lol 05:53:16 s/lambda/combinators/, s/calculus// 03:31:38 can't see pptx, he might want to convert it to pdf for sharing 03:32:20 I mean I probably can open pptx with Keynote but it would be handier to read in browser 03:39:39 -!- oerjan has joined. 03:43:18 Ben Lynn's notes might be interesting: https://crypto.stanford.edu/~blynn/compiler/lambda.html 04:00:20 I miss Google Codesearch -- github can't regexes ( 04:17:20 oh my poor grammar <-- that grammar looked fine to me hth 04:36:48 -!- shachaf has quit (*.net *.split). 04:36:56 -!- shachaf has joined. 04:41:15 -!- keegan has quit (*.net *.split). 04:41:15 -!- mcfrdy has quit (*.net *.split). 04:41:28 -!- keegan has joined. 04:41:55 -!- mcfrdy has joined. 04:52:51 -!- velik has joined. 04:57:14 -!- Bowserinator has quit (*.net *.split). 04:57:14 -!- citrons has quit (*.net *.split). 04:57:14 -!- rodgort has quit (*.net *.split). 04:57:14 -!- faxlore has quit (*.net *.split). 04:57:14 -!- lambdabot has quit (*.net *.split). 04:57:14 -!- slavfox has quit (*.net *.split). 04:57:22 -!- citrons has joined. 04:57:28 -!- faxlore has joined. 04:58:23 -!- lambdabot has joined. 04:58:40 -!- Bowserinator has joined. 05:00:30 -!- rodgort has joined. 05:01:08 -!- slavfox has joined. 05:04:51 -!- APic has quit (Read error: Connection reset by peer). 05:27:15 -!- APic has joined. 05:27:42 -!- APic has quit (Read error: Connection reset by peer). 05:28:49 -!- Sgeo has quit (Read error: Connection reset by peer). 05:37:17 -!- APic has joined. 05:37:20 -!- APic has quit (Read error: Connection reset by peer). 05:44:10 -!- chiselfu1e has quit (Remote host closed the connection). 05:54:46 -!- phdu[m] has changed nick to phdu. 06:02:17 -!- APic has joined. 06:03:16 -!- APic has quit (Read error: Connection reset by peer). 06:07:17 -!- APic has joined. 06:07:52 -!- APic has quit (Read error: Connection reset by peer). 06:22:56 -!- hanif has joined. 06:23:41 int-e: nice problem 06:39:21 -!- APic has joined. 06:39:26 -!- APic has quit (Read error: Connection reset by peer). 06:44:21 -!- APic has joined. 06:44:22 -!- APic has quit (Read error: Connection reset by peer). 06:49:21 -!- APic has joined. 06:49:28 -!- APic has quit (Read error: Connection reset by peer). 07:08:56 "Google Cloud does not believe in swap" confirmed: https://stackoverflow.com/q/58210222/322020 07:10:57 . o O ( vm.swappiness = 0 ) 07:11:09 Good, swap is mostly a bad idea for a server. 07:11:36 much better when he just hangs until reboot 07:12:34 VMs doing their own swapping is a bit insane, when there's more swapping happening at the hypervisor level 07:13:29 I'm not sure we know how Google Cloud hypervisor works 07:14:31 Even on my PC I'd like to fully disable swap. But I've learned that Linux effectively swaps anyway, because it will release unmodified mmap-ed regions to satisfy requests for fresh memory. So... without swap... rather than being able to swap out more or less everything, you end up swapping out code pages. This is *worse* than actually having a bit of swap space. 07:14:57 I suppose your PC has more RAM than a Free Tier server 07:15:13 So I compromised on 8G swap for 32G swap. 07:15:22 for 32G main memory. 07:15:24 Yes, yes it does. 07:16:21 ping 07:16:21 pong 07:17:08 I understand the desire for enabling swap on small VMs. I was arguing from a perspective of performance. 07:20:24 -!- APic has joined. 07:20:27 -!- APic has quit (Read error: Connection reset by peer). 07:21:01 I actually have a hack somewhere that hooks into mmap and replaces anonymous mappings by file-based mappings. 07:21:07 So yes, I can definitely relate. 07:25:24 -!- APic has joined. 07:30:51 -!- hanif has quit (Ping timeout: 276 seconds). 07:34:15 You can mlock memory that you care about, I suppose. 07:34:32 It's a good point about Linux releasing code pages, though, hmm. 07:35:22 It just treats it as ordinary page cache memory, even when you fully disable overcommit and swap? That seems bad. 07:35:37 I guess it's hard for it to do anything else. 07:37:57 I've never done the experiment of disabling overcommit as well. For a long time I couldn't because of Haskell's RTS, but it may work these days? It still allocates a huge address space... 07:45:29 It's possible to reserve address space without committing it in Linux, but hardly anyone does it. 07:45:48 And it's pretty unusual so I don't think you can e.g. ask how much memory a process has committed. 07:46:30 rts/posix/OSMem.c:# define RESERVE_FLAGS MAP_NORESERVE | MAP_ANON | MAP_PRIVATE; 07:46:41 google indexes esolang wiki by ip for some reason https://www.google.com/search?q=site%3A46.43.2.108 07:49:54 -!- tech_exorcist has joined. 07:51:16 -!- tech_exorcist has quit (Remote host closed the connection). 07:51:34 So ghc has been doing that since ghc-8.0... patch is from 2015. Still fairly recent. 07:51:56 -!- tech_exorcist has joined. 07:52:54 nakilon: yes, and also site:techne.zem.fi 07:53:43 Techne (Greek: τέχνη, tékhnē, 'craft, art'; Ancient Greek: [tékʰnɛː], Modern Greek: [ˈtexni] (About this soundlisten)) is a term in philosophy that refers to making or doing. 07:54:53 one way google might discover such links is via the channel logs... we had trouble updating the esolangs.org domain at some point so more direct methods to access the wiki were mentioned. 07:56:19 I suppose you can disable this index either via robots.txt or via google web search panel when you own the domain 07:56:24 I don't know whether google actively scans the IPv4 space for webservers... they definitely have the resources to do it; the question is whether they see any value in doing so. 07:56:37 I don't remember the exact name of those services 08:01:18 is there any wiki bot here? 08:01:22 I mean wikipedia 08:01:58 (though there may be an option to query any wiki) 08:05:58 -!- hendursa1 has joined. 08:09:12 -!- hendursaga has quit (Ping timeout: 276 seconds). 08:16:13 -!- spruit11 has quit (Ping timeout: 252 seconds). 08:23:23 Usually you need a host header anyway to access a website, even if you have an IP address. 08:27:45 are there any bots here who remember the context? so you could issue a command to process some previous message 08:27:54 -!- spruit11 has joined. 08:30:18 -!- tech_exorcist has quit (Read error: Connection reset by peer). 08:32:25 -!- spruit11 has quit (Ping timeout: 260 seconds). 08:41:27 -!- APic has quit (Quit: [TLS] Client upgrade). 08:41:44 -!- APic has joined. 08:50:33 -!- APic has quit (Quit: Boot tut gut™). 09:01:37 -!- spruit11 has joined. 09:06:55 -!- spruit11 has quit (Ping timeout: 252 seconds). 09:09:01 -!- imode has quit (Ping timeout: 252 seconds). 09:09:23 -!- arseniiv has joined. 09:19:08 -!- spruit11 has joined. 09:50:09 -!- hanif has joined. 09:55:09 -!- hanif has quit (Ping timeout: 276 seconds). 10:12:54 HackEso (well, HackEgo) used to have access to channel logs, so you could do that sort of thing through there, but it got lost during some reshuffling (they're not logically same systems any more). Sort of a shame; some of the things you could do were clever enough. Though it also encouraged "brute-force" solutions that just run a grep over the last two decades of history, which was always pretty 10:12:56 slow. 10:15:29 `seen logs 10:15:31 ls: cannot access '/var/irclogs/_esoteric/????-??-??.txt': No such file or directory \ not lately; try `seen logs ever 10:16:36 Right, that one does (did?) a "most recent 30 files" by default to be a little faster about it. 10:19:08 I was planning to "fix" the logs access thing by just having some sort of an API at logs.esolangs.org and poking a hole for that for HackEso, but haven't gotten around to. Maybe I should as a first step do something smaller. The logs server's already got an in-memory queue of the last 1000 events for stalker mode purposes, it could just expose that as a "recent context" endpoint. 10:19:54 . o O ( touch /var/irclogs/_esoteric/0000-00-00.txt ) 10:20:17 probably a bad idea; the error message is a reminder that it's not working :) 10:20:17 `touch /var/irclogs/_esoteric/0000-00-00.txt 10:20:19 touch: cannot touch '/var/irclogs/_esoteric/0000-00-00.txt': No such file or directory 10:22:30 not necessary all the logs, but bot could remember just last 100/1000 messages rotated 10:23:09 in ram 10:23:33 Granted, doing it through logs.esolangs.org would still have a bit of a race-condition-y feel since they'd be channel logs as seen by different IRC clients. But I think multibot won't make it particularly easy to do that "locally". 10:27:27 they were different clients last time too, i think 10:27:57 at least, different nicks 10:28:05 Probably, yeah. 10:35:30 I think I don't even have the umlbox-mudem thing wired up for the weird custom multiplexing of TCP and Unix domain sockets over a "serial port" it does. 10:37:38 -!- wib_jonas has joined. 10:59:27 -!- oerjan has quit (Quit: Later). 11:28:00 [[ight]] M https://esolangs.org/w/index.php?diff=87928&oldid=86667 * PythonshellDebugwindow * (+185) Light interpreters 11:29:17 [[User:PythonshellDebugwindow/Vandevelo]] M https://esolangs.org/w/index.php?diff=87929&oldid=73972 * PythonshellDebugwindow * (+123) ! 11:41:52 -!- hanif has joined. 12:09:42 -!- hanif has quit (Ping timeout: 276 seconds). 12:54:16 btw here https://help.ubuntu.com/community/SwapFaq it chapter "What is swappiness and how do I change it?" it says that servers have this option set higher meaning to push memory to swap more 13:15:48 On the topic of esolangs.org appearing under other names, yeah, I've configured the server to "default" to the site with the wiki on it for any host header it doesn't recognize, and never looked into search consequences. Wonder if I could convince MediaWiki to do rel=canonical or a sitemap. Wikipedia does that as a tag on the page, so. 13:16:19 Turning on $wgEnableCanonicalServerLink should do it. 13:16:49 that's probably a good idea 13:18:23 -!- hanif has joined. 13:20:38 $ curl -s http://techne.zem.fi/wiki/Befunge | grep 'rel="canonical"' 13:20:40 13:20:42 Maybe that'll help. 13:22:42 yeah. although for pages with long names, I'll still keep using the article number like https://esolangs.org/wiki/Main_Page?curid=13784 , who cares what the canonical says\ 13:22:44 ``` curl -s http://techne.zem.fi/wiki/Befunge | grep 'rel="canonical"' 13:22:48 Sorry, HackEgo's sandbox currently has no web access. However, see `? `fetch 13:27:04 -!- Sgeo has joined. 13:28:54 `olist 1243 13:28:55 olist https://www.giantitp.com/comics/oots1243.html: shachaf oerjan Sgeo FireFly boily nortti b_jonas 13:36:08 perlbot get https://esolangs.org/wiki/Main_Page?curid=13784 //link[@rel="canonical"]/@href 13:36:08 wib_jonas: https://esolangs.org/wiki/A_programming_language_is_a_formal_language,_which_comprises_a_set_of_instructions_that_produce_various_kinds_of_output. 13:36:14 nakilon: ^ 13:37:14 perlbot get http://techne.zem.fi/wiki/Befunge //link[@rel="canonical"]/@href 13:37:15 wib_jonas: https://esolangs.org/wiki/Befunge 13:47:27 -!- hendursa1 has quit (Quit: hendursa1). 13:47:53 -!- hendursaga has joined. 14:22:34 Is it just me or does this website have property 3 wrong? https://www.web-formulas.com/Math_Formulas/Linear_Algebra_Properties_of_Inverse_Matrices.aspx 14:25:46 Sgeo: um, what are the assumptions here? are the matrix elements from a field? property 3 says "If A has an inverse matrix, then there is only one inverse matrix." which sounds right to me, at least over a field 14:26:12 wib_jonas: That's the seventh longest page title we have. The longest is: Unary_Except_Every_Zero_Is_Replaced_with_the_Title_of_This_Programming_Language_or,_Alternately,_Is_Replaced_with_the_Smallest_Counter-Example_to_the_Goldbach_Conjecture._Compilers_and_Interpreters_Only_Have_to_Implement_the_Former_Option 14:26:13 (probably still true without, but I can't swear on it) 14:26:36 fizzie: yeah, but that one also keeps changing. I know there are redirects, but still. 14:28:08 and it's longer than Real Fast Nora at least 14:28:20 Oh I miscounted 14:28:32 I meant this line, which is step 3 (not property 3): "3. If A1 and A2 have inverses, then A1 A2 has an inverse and (A1 A2)-1 = A1-1 A2-1 14:28:33 " 14:28:41 *statement 3 14:29:56 Yes, pretty sure that should be (A1 A2)^-1 = A2^-1 A1^-1. 14:30:03 Sgeo: yes, that sounds wrong. it even says the right statement earlier: "If A and B are nonsingular matrices, then AB is nonsingular and (AB)^(-1) = B^(-1) A^(-1)" 14:33:40 Trying to leave feedback 14:33:41 Value cannot be null. Parameter name: Challenge 14:33:44 I don't see a captcha 14:35:00 They're using Recaptcha, but the URL for it is 404ing 14:35:57 I... could hack the correct Recaptcha URL in place 14:36:20 Sgeo: nah, they're probably using a library for Recaptcha that Google has obsoleted twice since 14:41:21 -!- delta23 has joined. 15:12:04 -!- wib_jonas has quit (Quit: Client closed). 15:13:44 -!- arseniiv has quit (Ping timeout: 252 seconds). 15:29:29 -!- arseniiv has joined. 15:44:35 -!- riv has quit (Remote host closed the connection). 15:45:01 -!- riv has joined. 16:30:17 If I have a translation-rotation matrix that needs to be multiplied on the right, is there a way to turn it into a matrix that can be multiplied on the left? 16:56:42 b_jonas can you ddos with perlbot? 16:57:22 or is that a special command? I see it also apploes xpath 17:12:54 nakilon: it's not special, you can call it multiple times together, but only in series 17:13:18 and there's a time limit for how long each of your commands will execute 17:13:36 so it's probably not a very efficient way to DDOS anything 17:14:24 I guess you could try to loop it by calling a command on its own web interface, in a quine way 17:15:27 but that probably requires POST, which this doesn't do 17:15:43 so it would be more efficient if you just make a webpage that people load and some javascript or frames on it send requests 17:15:49 or even images, fewer people block those 17:17:50 -!- APic has joined. 17:24:27 -!- imode has joined. 17:51:31 -!- sprock has quit (Ping timeout: 252 seconds). 18:37:41 -!- sprock has joined. 18:52:45 -!- hanif has quit (Quit: quit). 18:53:29 -!- riv has quit (Quit: Leaving). 18:54:31 -!- chiselfuse has joined. 18:54:32 -!- chiselfuse has quit (Remote host closed the connection). 18:54:47 -!- chiselfuse has joined. 18:54:52 -!- chiselfuse has quit (Remote host closed the connection). 18:55:36 -!- chiselfuse has joined. 18:56:14 -!- chiselfuse has quit (Remote host closed the connection). 18:57:33 -!- chiselfuse has joined. 19:00:31 -!- chiselfuse has quit (Remote host closed the connection). 19:15:44 Bit of a random question, but does anyone have a gut feeling as to what sort of indoors range you should expect from a BLE device? Like that nRF52840 SoC or something? I've been speculating about a wireless doohickey, and wondering if it should be that, or wifi, or some other kind of radio. 19:26:35 -!- sprock has quit (Ping timeout: 265 seconds). 19:33:07 I don't know, but indoor range for microwave stuff might depend on what your walls are made of 19:34:05 my bluetooth headphones could communicate from the living room to the work room, but I'v no idea if that involves BLE or just other Bluetooth 19:34:48 Yeah. The interior walls are just drywall-style materials, but there's also a bunch of kitchen appliances between where I'd most logically put two endpoints of a connection. 19:35:03 -!- chiselfuse has joined. 19:35:43 I think I read somewhere that BLE doesn't include audio... although a quick search suggests there's now an announced "Bluetooth LE Audio" standard as well. 19:35:45 here in this apartment the walls are real reinforced concrete, but the waves might have chosen to go through the walls 19:36:07 s/through the walls/through the doors/ 19:36:30 probably not BLE in that case 19:37:29 There's apparently some sort of a long-range mode in Bluetooth 5 that does forward error correction and trades some power use (in the sense of lower data rate -> longer transmissions) to better range. 19:38:32 what does forward error connection mean? don't all these wireless protocols use some error connection? but I don't know what "forward" means here 19:40:38 If I got it right, all flavours of Bluetooth except this new-in-5 "LE Coded" encoding only do error *detection* (and retransmissions), not error *correction*. 19:40:50 https://www.bluetooth.com/blog/exploring-bluetooth-5-going-the-distance/ "Bluetooth low energy at version 4 does not perform error correction, only error detection. Bluetooth 5 introduces an error correction capability." 19:48:08 -!- sprock has joined. 19:51:38 apparently "forward" error correction refers to the fact that it only uses the forward channel and not a reverse channel (requesting resends) 20:00:17 -!- sprock has quit (Ping timeout: 252 seconds). 20:05:07 -!- b_jonas has quit (Ping timeout: 252 seconds). 20:06:47 -!- sprock has joined. 20:11:43 -!- riv has joined. 20:11:50 -!- sprock has quit (Ping timeout: 252 seconds). 20:21:44 -!- b_jonas has joined. 20:25:02 -!- sprock has joined. 20:54:09 -!- Lord_of_Life_ has joined. 20:56:10 -!- Lord_of_Life has quit (Ping timeout: 240 seconds). 20:56:10 -!- Lord_of_Life_ has changed nick to Lord_of_Life. 21:16:47 -!- sprock has quit (Ping timeout: 265 seconds). 21:31:38 -!- sprock has joined. 21:38:01 -!- riv has quit (Quit: Leaving). 21:57:13 -!- hendursaga has quit (Ping timeout: 276 seconds). 21:57:13 -!- chiselfuse has quit (Ping timeout: 276 seconds). 21:57:13 -!- hendursaga has joined. 21:57:20 -!- chiselfuse has joined. 22:13:10 -!- sprock has quit (Ping timeout: 260 seconds). 22:37:59 -!- arseniiv has quit (Ping timeout: 265 seconds). 23:05:57 -!- ais523 has joined. 23:13:00 -!- ais523 has quit (Remote host closed the connection). 23:19:51 -!- chiselfuse has quit (Ping timeout: 276 seconds). 23:20:53 -!- chiselfuse has joined. 23:26:03 -!- ais523 has joined. 23:40:37 -!- ais523 has quit (Quit: sorry about my connection). 23:40:52 -!- ais523 has joined. 23:42:17 -!- ais523 has quit (Client Quit). 23:42:32 -!- ais523 has joined. 2021-09-08: 00:03:06 -!- delta23 has quit (Quit: Leaving). 00:05:04 [[Mogus]] M https://esolangs.org/w/index.php?diff=87930&oldid=87578 * Oshaboy * (+27) Added Unimplemented Tag 00:39:28 -!- sprock has joined. 01:02:09 this 2015 article https://esolangs.org/wiki/Fungeoid says that it's kind of fungeoid's goal to have side-effects 01:05:04 isn't funge-98 stack of stacks going the opposite direction? 01:05:42 also threading with a separate stack 01:06:25 and my idea of having nested isolated funge spaces 01:07:17 also I don't agree with the "Goal" section 01:07:25 unless I'm missing something 01:14:08 one (maybe the only/) motivating idea of the original Befunge was to be as difficult as possible to compile 01:14:44 with having a runtime allowing to split code into isolated toroids and giving them own stack (for example, it pops the N number of items to take from the top of the stack into a new zeroed one and then returns M from the new one to the parent) 01:14:52 things like the stack stack (which was added later) seem like they would make the code easier to analyse, and thus maybe to compile, but you can use it for obfuscation in addition to using it for purity 01:15:31 it would be possible to build a repository of common functions that won't have stack collisions with each other and would be used as building blocks easily 01:15:58 I guess there's two points of view, the point of view of a programmer who is trying to make their code easy to understand and is using the language features for that purpose 01:16:25 and the point of view of a compiler, or a programmer who is intentionally making their code hard to compile, where the features might be used in unusual ways to make the code hard to understand 01:16:45 to necessary easy to understand but easy to build 01:17:06 I'm ok with write-only code as long as it does what it have to 01:17:45 I think write-only code only really works in environments where you know you'll never have to read it again 01:18:22 one-off scripts, for example (and even then I try to do things like use meaningful variable names, just in case they somehow end up not being one-off after all) 01:26:56 "I disagreed, saying that there are some languages out there where and interpreter is easier to write than a compiler." 01:27:04 https://github.com/catseye/Befunge-93/blob/master/historic/bef-1.0rc1/bef.doc 01:28:37 I guess it was a random fact about befunge -- that it had features hard to compile, but it wasn't the goal; the goal was: "It may go forward, or backward, or even LEFT OR RIGHT. : for fun 01:29:25 hmm, so it looks like the motivating feature was to be harder to compile than interpret, not necessarily to be impossible to compile 01:29:32 also this https://github.com/catseye/Befunge-93/blob/8fe4065c0415b6f6fa6f699798fa9b64737aadc1/historic/bef-1.0rc1/bef.doc#L27 tells that the self-modification was much earlier than the debate about compilers with his friend 01:29:44 there are some programming languages which fulfil this requirement by being trivially easy to interpret 01:30:06 but there were other motivations too 01:31:55 I would call the complexity to compile befunge a goal if there was that debate and then he comes up with things made on purpose to prove his debate point; but it was the opposite -- he already had an idea of self-modification and then the debate just motivated him to release something 01:34:24 Interestingly, Futamura conclusively showed that compilers arise from specialized interpreters, and their work implies that an interpreter is always easier than a compiler. 01:34:58 I do think that interpreters are generally easier, except in the case where a naive transpilation works 01:35:21 (e.g. compiling BF by string replacement of "+" into "(*ptr)++", ">" into "++ptr", etc.) 01:35:45 err, I'm using my post- and pre-increments inconsistently, I guess it doesn't matter in this situation but it still looks bad 01:35:46 btw I don't see a problem compiling befunge if you create a 80x25 of pointers to void functions that would occasionally overwrite other pointers to point at the "library of function" that is a list of possible instructions 01:36:44 this depends on what you consider a compiler to be 01:36:55 you can compile any code by hardcoding the program into an interpreter 01:37:04 ais523: But note that, in that case, we can kind of reverse-engineer ourselves a corresponding interpreter which is even "easier" in the sense that it can delegate even more work to the C compiler. 01:37:06 but some people consider that cheating and not really a compiler 01:37:48 Corbin: well, running gcc is probably harder than writing the code you want it to compile into a file 01:37:52 but, both are pretty easy 01:38:26 ais523: I'm thinking specifically of what's delegated to the toolchain, because Futamura's point was that a good specializer can turn any interpreter into a good compiler. 01:38:46 Hm, not the best way to put it. The specializer and interpreter both contribute to the quality of the compiler? 01:38:57 the specializer would have to be /incredibly/ good 01:39:21 given that there are optimizations that interpreters can't really do without getting halfway to being a compiler anyway, so given a naive interpreter, those optimizations would have to be done in the specializer 01:39:33 and, I know that's the point of specializers, but it's hard to imagine one that's *that* good 01:39:51 Yeah. I use RPython, for example, and there's a lot of work put into making those interpreters "easy" to write. 01:41:33 I guess you can apply the same argument to a specializer-virtual machine combination 01:41:39 which should in theory give you an optimizing VM 01:41:44 (RPython automatically generates a JIT compiler for a given interpreter. Backend configuration, instruction selection, memory management, etc. are all done with automatic codegen. It takes like 20min to generate a JIT but it's worth the wait.) 01:42:35 Yeah. I think that this is an interesting antipattern in language design: We often pair a low-level intermediate language with a high-level user-friendly language, and require interpreters to compile from the latter to the former. 01:42:37 that's interesting 01:42:44 how are the interpreters specified? 01:43:29 also, I'm not sure that's an antipattern, unless you're suggesting that the interpreters should work with high-level code more directly 01:43:40 RPython interpreters are given in plain Python 2.7, using their support library for libc calls and FFI. The translator interprets the Python and then disassembles it in-memory, so codegen can be done in Python. 01:44:07 I was wondering about that (although being locked to Python 2 is something of a problem nowadays) 01:44:40 I just think that it's signing folks up for extra work. Extra context, usually. Desugaring is simpler than an intermediate language. 01:44:48 I think the measure of cheating can be calculated; my compiler idea above results in that the compiled programs would be different only in a place where the starting befunge code was injected as a 80x25 table, and the rest would be the same "interpreter"; while the "true compiler" that you might want to imagine is something that produces absolutely 01:44:48 different program for every different input source code; so the amount of "variation" can be benchmarked on compiling different inputs and measuring the diff 01:46:09 Corbin: I agree with making the low-level intermediate language a subset of the high-level language, rather than necessarily a separate language 01:46:32 but there are some cases where you want to relax restrictions in the downcompile 01:47:03 but then, there are compilers that produce 1mb binary even for hello world -- all the hello worlds will have the same 99% of "interpreter" that is some static library 01:47:07 a common example is when the IR has goto statements, but the high-level language you're compiling from doesn't 01:47:34 ais523: Sure. I guess I'm saying that, in those situations, the IR should be explicit and narrow-waisted, rather than a required glue language. Like, Smalltalks put a tiny but real burden on implementations when they require bytecode compilers, e.g. in Python. 01:47:39 nakilon: right 01:47:55 in fact, ld-linux.so is even described as an "interpreter" in its documentation, and that of the Linux executable format 01:48:11 LLVM IR, GCC's GIMPLE, QBE, and libfirm's IR; they should all really commit to text formats and narrow-waist tools. This is one area where WebAssembly has done well. 01:48:33 so pretty much all binaries on Linux are being run through an interpreter (although what it actually does is just interpret the code for loading, load the code, then jump to it and run it directly) 01:50:47 what is a "narrow-waist tool" 01:52:04 (I spent so many years being confused about what "waist" means before I realized the garment waist and the anatomical waist can be totally different!) 01:52:12 I want to ask the same question, too 01:52:19 -!- ais523 has quit (Quit: sorry about my connection). 01:52:27 keegan: A narrow-waisted design is a pattern which is meant to counter the Expression Problem by requiring either the input or output of every tool in a toolchain to be a single unified format. 01:52:34 -!- ais523 has joined. 01:52:52 one thing that I do think is an antipattern is where important metadata, that the compiler knows, gets removed when going down to lower levels of abstraction 01:53:20 Corbin: oh, like netpnm? 01:53:27 one example is that it would be very useful to have a way to say "the value in this register isn't needed any more" right down to at least the asm level 01:53:27 e.g. pandoc can handle many different documentation formats. Normally this would evoke the Expression Problem and require a quadratic amount of code, but instead it's a linear amount of code because pandoc's IR acts as a narrow waist. 01:53:35 * keegan nods 01:53:46 where you convert anything-to-pnm or pnm-to-anything or manipulate pnm's 01:53:51 it even sometimes helps performance at the *machine code* level, despite taking up bytes, because this is information that the processor cares about too 01:53:59 keegan: Yeah. Uncompressed containers are good candidates for narrow waists. 01:54:12 or how many programming languages adopt UTF-8 as the one true internal string representation 01:54:18 with other encodings handled at the edges 01:54:24 ais523: Yes. I'm sure you've heard me rant about The Mill before; their "belt" concept would be great for that. 01:54:35 (Unicode was designed with this use case in mind, and would be substantially simpler without it) 01:54:50 which is why we have assembly language commands like VZEROUPPER, and certain special cases of XOR 01:55:17 Corbin: I do like The Mill's approach, although it got me thinking about how I would do things and I came to different conclusions on some things 01:55:30 (The Mill's belt is just the most recent eight results from the ALU. By default, values are usable for a few operations and then disappear forever.) 01:55:34 e.g. I think it would be more useful to flip the belt the other way round: commands say when their output is going to be used, not when it was generated 01:55:52 also I didn't realise it was as short as 8, I was assuming it would be much longer 01:56:27 I think farbfeld is better than pnm, although it is the same kind of idea it is a good one. Fortunately, ImageMagick now supports both formats (and my own Farbfeld Utilities also has encoders/decoders for netpnm formats, too). 01:57:31 Corbin: widely-applicable intermediate representations are something we could do with having in a range of fields (and if they're easily interconvertible it probably also doesn't matter if we have too many) 01:57:40 Oh, I think it's eight minimum? ISTR Ivan saying that belt space is very expensive because it's interconnected to so many functional units, so maybe sixteen-ish on high-end chips. 01:58:36 Corbin: so the great thing about a "when it's going to be used"-style belt is that the interconnect isn't too bad, because you can safely use a slow path if the value you see there is some high number of instructions 01:58:38 ais523: Yes, although there's still a linear cost to maintaining each representation. I know that I will have to compile a few simple languages into Cammy for demonstration purposes, but I won't maintain optimizing compilers because there's usually no interesting source programs to optimize. 01:58:50 and only need to fast-path the low-numbered choices 01:59:00 it's information you get to know whether you need a fast algorithm or can do with a slow one 01:59:16 what is Cammy? 01:59:22 I dislike UTF-8 (or any Unicode format, or any other encoding) as the one true internal string representation. I think having byte strings is better, and you can still have functions that treat them as UTF-8 if wanted, as well as ones dealing with byte strings. (Converting between text encodings perfectly isn't possible, even though they try to say otherwise.) I dislike many modern programming languages that use Unicode. 01:59:38 Aha, that's clever. Makes sense. Strange how time reversal sometimes dramatically changes what needs to be tracked. 02:00:17 ais523: Oh, [[Cammy]] on the wiki, just my current pet project. It's not yet Turing-complete, because I'm lazy and also Turing categories are hard. 02:00:27 zzo38: I believe that it's normally correct to have "bytestring" and "character string" as the two main string types internally 02:00:49 and that with a character string, it's generally preferable for the internal encoding to not be user-visible, although UTF-8 makes for a good choice 02:01:07 zzo38 I'll take you to my team of creators of a "cleaner unicode" 02:01:53 one thing I dislike about UTF-8 is that it spends a lot of encoding space to get some fairly minor advantages 02:01:54 ais523: Having separate types is better, yes, although there are often the deficiencies that many things will not work properly with byte strings, I find 02:02:07 IIRC there are six byte values that can't legally appear in UTF-8 at all 02:03:02 actually, I think even better would be to have typed byte streams that were parameterised by encoding, and probably the ability to parameterise character strings by encoding too 02:03:33 (where "encoding" here would handle things like the form of escaping that had been used, what metadata beyond normal characters it could contain, etc.) 02:03:57 Actually, yes, I suppose that can be helpful. 02:05:15 (Although, it will not always be relevant, sometimes it is helpful to be able to use such a feature (as an option, perhaps).) 02:05:23 one thing I would like to see more languages provide is a standardised type for formatted text 02:05:26 $ irb 02:05:26 irb(main):001:0> "лол".encoding 02:05:26 => # 02:05:26 irb(main):002:0> "лол".b.encoding 02:05:26 => # 02:05:46 that seems wrong? 02:06:35 I would say that the /first/ one is a character string, and the /second/ one is the UTF-8 encoding of a character string 02:06:47 String instances in Ruby are a struct of byte sequence on an encoding info to help other functions preprocess the sequence when needed 02:07:10 *and an 02:07:31 or if it genuinely is an 8-bit extended ASCII, perhaps ISO 8859-5, but that seems unlikely 02:07:49 Even when it is UTF-8, there are considerations what will be wanted. Sometimes you will want to store unpaired surrogates (which is WTF-8), sometimes you might want characters beyond Unicode range (UTF-8-E, etc), sometimes you might want null characters, and sometimes you might not want these things, depending on the application. 02:07:53 nakilon: in that case I think it's wrong 02:08:10 if you hand a function a string, it shouldn't have to decode it itself whenever it wants to do anything with it 02:08:50 > "лол".b 02:08:50 => "\xD0\xBB\xD0\xBE\xD0\xBB" 02:08:52 error: 02:08:52 • Couldn't match expected type ‘b0 -> c’ with actual type ‘[Char]’ 02:08:52 • In the first argument of ‘(.)’, namely ‘"лол"’ 02:08:53 zzo38: it'd be nice to have a standardised name for "UTF-8 except NUL is encoded as C0 A0" 02:09:22 String#b here is a method that just changes the encoding attribute, it does not change the data 02:09:33 ais523: Yes, I agree 02:09:52 so this string for example becomes printed in wrong way because ascii can't do that 02:10:24 I guess what Ruby's doing is a leaky abstraction 02:10:46 what's wrong with it? 02:11:15 those japanese folks defeated unicode problems 15 years before python 02:11:50 Another encoding is TRON, although it is uncommon and has a different set of problems 02:12:25 What I think is that no character encoding will be good for all purposes, although they can be good for some things (although still, improvements can be possible, sometimes) 02:12:27 I guess the problem is that it's using the same type for bytestring and character string, *and* has a way to look at the internal representation of a character string when that shouldn't matter 02:12:48 and it wouldn't surprise me if it doesn't enforce that the bytes stored in a string actually match the given encoding 02:13:11 all data are 0 and 1 02:13:12 Perl also solved this problem substantially before Python did, and I don't think its solution is perfect, but I prefer it to Ruby's 02:13:21 it does not matter how many types you declare 02:13:26 yes, but that doesn't mean you have to present it to the user as 0 and 1 02:13:59 and sometimes, semantically there will be a requirement not to have 0s and 1s in particular places, and it's an advantage if the language can enforce that rather than making the user do it 02:14:21 Ruby has only a String and you are free to change the encoding at any moment, just know what you are doing or you'll get an exception unless you pass the flags of ignore/replace explicitely 02:14:49 fwiw, Perl's solution is that a string is conceptually an array of numbers, which could represent either codepoints or raw bytes, and for string-related functions you can specify what interpretation to use 02:15:06 when you get the data from network for example it's ASCII by default and the internet really has no idea what encoding is -- it's your application job to say "here we expect this encoding" so you apply it 02:15:22 internally, strings that contain values above 255 are stored in a slightly extended UTF-8, and strings that don't are sometimes stored just as raw bytes, but you're not supposed to know or care about that detail 02:15:45 nakilon: and if the string isn't valid for its claimed encoding? 02:16:50 in Rust, there's &[u8] (byte slice) and &str (string slice – internally UTF-8 encoded); there's a fast-path function to reinterpret a &[u8] as a &str, but it still checks to make sure that the string is valid UTF-8 and refuses to produce output if it isn't (producing an error you have to handle, instead) 02:17:21 and of course, if the byte slice isn't supposed to be UTF-8 you can still translate it to a string but there isn't a fast-path for that, as it'd need to be re-encoded into the internal UTF-8 representaiton 02:18:03 &str does leak its UTF-8-ness in a few other ways, though, such as measuring length in bytes of UTF-8 for the purpose of taking substrings (I think this is a concession to performance) 02:18:14 ais523 the invalidity is a thing that exists only when you are doing some final rendering, like printing or converting between the passed enc_a and enc_b; in those cases you use flags to ignore the encodnig and there are also some methods to clean up the mess prematurely like https://ruby-doc.org/core-2.4.0/String.html#method-i-scrub 02:19:38 there are separate methods .size and .bytesize 02:19:47 Does Rust have all of the string dealing functions can work with byte strings too, in case you do not want to use Unicode strings (either sometimes or all the time, depending on the program)? Not all text is Unicode text (and not all can be converted to/from Unicode properly either; sometimes it is useful to try anyways, but sometimes it is better not to) 02:20:07 and the fixing flags are here: https://ruby-doc.org/core-2.4.0/String.html#method-i-encode 02:20:08 zzo38: sort-of; they aren't polymorphic but they're duplicated between the string and bytestring cases 02:20:15 except in cases which don't make sense 02:20:25 One thing I like about C and PostScript is that it doesn't use Unicode. 02:21:12 e.g. strings have both to_uppercase and to_ascii_uppercase, wheres bytestrings only have the ASCII version 02:21:22 Yes, sometimes some functions won't make sense for both, is reasonable. That is one example, yes 02:22:35 it's surprising how useful the ASCII-specific functions are, actually, they're good for things like handling programming languages with case-insensitive keywords (because the keywords are generally recognised only if written with ASCII characters) 02:22:48 (Although if they are stored internally as UTF-8 and known to be valid UTF-8, then it seems that some of them could be polymorphic, including to_ascii_uppercase since it is doing the same thing whether it is UTF-8 or ASCII presumably) 02:23:04 hmm… now I'm wondering if there's a programming language with case-insensitive keywords and one of them contains the substring "ss" 02:23:21 it'd be interesting to throw a ß at them to see if it would be recognised, I bet it wouldn't be 02:25:07 zzo38: it'd be hard to make to_ascii_uppercase polymorphic in Rust without a special safety override – the compiler would see bytes internally within a string being mutated directly by to_ascii_uppercase, which isn't allowed by default in case you change the internal representation in a way that makes it invalid UTF-8 02:25:16 so it's easier to just duplicate the code rather than using unsafe code 02:25:47 you definitely *could* write a function to handle both but I don't think the compiler developers would want to 02:25:59 Maybe some might do that with "ss" depending on the implementation, in which case some implementations might be incorrect. 02:26:36 > "лол".b.reverse.force_encoding("utf-8") 02:26:36 => "\xBBол\xD0" 02:26:37 error: 02:26:37 Variable not in scope: force_encoding :: [Char] -> a -> [a0] 02:26:47 reversing the bytes broke it ) 02:27:17 hmm, at least that function has a sufficiently scary name 02:27:36 Haskell would probably call it UnsafeForceEncoding or something like that 02:27:38 (Also, maybe the language might need to be specified for Unicode case functions, since e.g. some languages will have dot and dotless "I"/"i" being separately, etc) 02:28:24 Rust's super-scary functions generally have very normal/unassuming-looking names, but you need to use a special keyword for calling them to say that you're recognising the danger 02:29:01 zzo38: I actually think Turkic case-folding might be the *only* case in which you can't infer the case-folding rules from the codepoints being used, but I'm not sure 02:29:14 only for a particular definition of super-scary (might cause undefined behavior) 02:29:27 I suppose there is a segfault thing in rust 02:29:32 using 'unsafe' to encode other properties of reasonable API usage is frowned upon 02:29:37 it would have simplified things if "Turkic dotless ı" and "Turkic dotted i" were different codepoints from "non-Turkic lowercase i" 02:30:18 keegan: I guess, although undefined behaviour is by definition worse than anything else that might go wrong with a program 02:30:22 but constructing a &str that points to invalid UTF8 can cause undefined behavior 02:30:36 because other 'safe' &str APIs are free to assume that it is valid UTF-8 02:31:11 so any function which converts &[u8] to &str (or Vec to String, etc.) needs to either check that it's valid UTF-8, or be 'unsafe' to leave that up to the programmer 02:31:13 yes, e.g. seeing an FD byte means it's safe to read three more bytes 02:31:58 which it might not be, if the internal format isn't being statically analysed to be correct 02:32:38 something that many UB models do, but Rust doesn't, is distinguish between values that are UB to use and values that are UB to even construct 02:33:07 Rust currently has a misencoded &str as something that's UB to even construct, like it does with its other UB values, although It seems unlikely that it would be a problem in practice (still, there's no reason to actually do that) 02:33:54 I guess the advantage for the "UB to even construct" model is that it makes it easier to reason about things like signal handlers causing unwinds at unexpected points in the code 02:34:26 (although, I believe Rust's model for panics is that it's safe to create regions of code in which a panic would be undefined behaviour as long as you can prove that there can't actually be a panic there) 02:34:35 One thing that Unicode is especially bad for, I think, is arranging text on a grid-based text display. (This doesn't mean it is bad for everything. For some things, Unicode is OK, but could be better for those things.) 02:35:22 zzo38: I was writing a program to do that, but didn't get very far 02:35:39 the furthest I got was working out how wide each character should be, and even then it isn't really specified in detail in Unicode 02:35:58 in Ruby raw socket data encoding is ASCII while the built-in http retrievers are utf-8 by default; let me check... open("https://www.google.com/", &:read).encoding => # -- oh I'm not sure what it is 02:36:18 Yes, that is the greatest (but not only) problem with using Unicode for arranging text on a grid-based text display. Other encodings will be better. 02:36:33 in HTTP, also in HTML, the convention is that the producer of the data (typically the server) states what encoding it is in 02:36:50 although the recommendation is always to send UTF-8 with a label stating that it's UTF-8 02:37:17 hm, Chrome says www.google.com responds with content-type: text/html; charset=UTF-8 actually 02:37:25 both HTTP and HTML provide separate mechanisms for stating what the encoding is; I think HTML's wins if there's a contradiction 02:37:30 If I was designing to include the encoding with the string, I might use the 16-bit code page numbers, such as: 0 means no encoding, 367 means ASCII only, 1209 means UTF-8, etc. I also made a list of some of things that as far as I know don't have existing code page numbers, so I made up my own for them, e.g. TRON, CLC-INTERCAL EBCDIC, Powerline UTF-8, etc. 02:37:59 nakilon: they may both be right, nothing forces Google to respond in the same encoding every time 02:38:25 yeah, ruby sens ruby's user-agent 02:38:28 so idk 02:38:31 *sends 02:38:46 (I might also, in a terminal emulator, use one escape code to select the code page. If Unicode is implemented at all, the standard sequence to select UTF-8 might select the "Powerline UTF-8" code page, although I would think it better to use an encoding that doesn't confuse character widths and that stuff like Unicode does, instead.) 02:39:30 huh, I just accessed google.com manually via telnet, asking for its homepage 02:39:49 301 Moved

301 Moved

The document has moved here. 02:40:13 I was shocked to see a "Google has moved" message, but I guess this what their webserver does for the human-readable part of a 301 02:40:21 it added www. to your request 02:40:31 no, it told me to retry with a www. 02:40:32 (I sent without) 02:40:53 yeah I mean that, just said it wrong 02:41:14 this is some weird HTML, though 02:41:41 upper-case tags, apart from one very old-fashioned character set tag (which duplicates an HTTP header) 02:41:48 no doctype, so it's quirks mode 02:41:58 this reminds me the crazy guy back in 2006 who wanted to make his own instant messaging application that would send screenshots of text instead of the text 02:42:08 he would defeat the encoding problem 02:42:53 either this is a page that hardly ever gets looked at (which wouldn't surprise me – it does its job and is rarely seen by a human), or there's some advantage to writing it in that style (which wouldn't surprise me) 02:43:32 It would, although that approach has different problems (such as taking up more space, and being unable to change the fonts). DVD subtitles work similarly; they store the text as pictures. 02:43:33 It looks automatically generated, especially given that this is going to only be seen by the most primitive of Web user agents, and people who access websites without a browser for some reason 02:44:11 nakilon: maybe an interesting middle-ground would be to have a library of images of characters, and then encode the image by referencing them 02:44:25 this would also solve the encoding problem for human-readability purposes 02:44:36 but would be very bad for software accessibility, you're basically sending a CAPTCHA 02:45:01 people often want to copy-and-paste out of messages into text fields, for example (and blind people may rely on a screen reader) 02:45:53 hmm, I don't think the user agent has the ability to tell the server what character encoding it wants the server to send 02:46:21 "a library of images of characters, and then encode the image by referencing them" -- isn't it a font file? ..D 02:46:23 so you'd therefore expect Google to send the same character encoding to both Ruby and Chrome 02:46:50 nakilon: almost – font files are supposed to specify which codepoint is used for which of the images they contain 02:46:55 Character names is another thing that may be useful for some purposes and worse for others, such as how PostScript does when rendering fonts. 02:47:04 whereas this would just be specifying the image to use by index into the file, which might have nothing to do with codepoints 02:47:24 "people often want to copy-and-paste out of messages" -- now this is about my idea of the universally accepted "chat copypasta" format 02:47:40 incidentally, some LaTeX renderers appear to render via using fonts that specify codepoints unrelated to the actual characters being used, which can create weird results if you copy-and-paste from the resulting PDF 02:48:16 nakilon: or visit a link in a message, which might not always (or usually) be done by copy-and-pasting but it's essentially the same problem 02:48:38 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding 02:49:21 ais523: The user agent doesn't *directly* indicate which character encoding the client expects, but empirical tests show that copying my Chrome UA into curl -A (but changing nothing else) does make a difference in the encoding of the result. 02:49:21 nakilon: that's the first one I tried 02:49:26 but it's about gzip and the like 02:49:41 [[Cammy]] M https://esolangs.org/w/index.php?diff=87931&oldid=87614 * Corbin * (+53) The reference implementation now has its own typechecker, rather than calling OCaml and parsing the type. 02:49:50 fizzie: that's interesting, I wonder what its criterion is 02:49:51 Even if it is just a index into the file, supporting code page conversion with it can still be helpful. (Also, some glyphs might correspond to a sequence of code points instead of a single one, depending on the font and on the encoding; this is even true of Unicode, and in the case of Unicode at least it can even be ambiguous. So, even then the index into the file is insufficient even if you do have conversion.) 02:50:05 wait I'm wrong that's wrong header 02:50:09 I think I saw one 02:50:57 Apparently there *was* an Accept-Charset, but it is no more. 02:51:22 zzo38: what criteria do you think that programs should use to decide what encodings their inputs are in, and what encodings to produce outputs in? 02:52:06 I think the main options are "look at the locale environment variables (or OS equivalent)", "always use/assume UTF-8", and intermediate combinations of those 02:52:08 ais523: Depends on the program. It may be one or more of: the file itself, the file format it deals with, command-line arguments, environment variables (such as LANG), etc. 02:52:15 "specifying the image to use by index" -- reminds me inserting icons via CSS by addressing a shift and crop on a single png asset 02:52:45 so the character addresses don't have to be a natural number but can be even an overlapping region 02:53:17 The Encoding standard requires use of the UTF-8 character encoding and requires use of the "utf-8" encoding label to identify it. Those requirements necessitate that the document's character encoding declaration, if it exists, specifies an encoding label using an ASCII case-insensitive match for "utf-8". Regardless of whether a character encoding declaration is present or not, the actual character encoding used to encode the document must 02:53:18 be UTF-8. 02:54:12 knowing HTML, it wouldn't surprise me if it discusses what to do if it isn't, regardless 02:55:05 For example, a program that deals with JSON can assume UTF-8 for input, and using a switch to switch the output between UTF-8 and ASCII. Programs that just write descriptive text (such as status messages, error messages) should either assume ASCII or use the environment variables (and should never just assume UTF-8). For other things, other encodings are useful, or sometimes just ignoring encodings entirely and copying text as-is. 02:55:06 "link in a message" -- maybe this is a thing to be changed in future; we are used to copypaste texts, then lazyness made us want to just click, maybe there are new ways to make a buddy visit your page, like forcing his software doing it without showing you the URL; also deeplinks 02:55:20 interestingly, it also states that the encoding needs to be specified via one of a number of ways, but accepts BOM as one of those ways 02:55:41 so it's standards-compliant to send an HTML page with just a UTF-8 BOM as the only thing saying it's UTF-8, but it wouldn't surprise me if browsers missed that case 02:56:24 nakilon: I guess if you're sending images, you could send a QR code (although that just gets back into encoding issues again) 02:56:58 ais523: FWIW, supplying a Chrome-like user agent changes a lot of other things too. For example, using plain HTTP will serve a redirect to HTTPS to Chrome, but not to an arbitrary user agent. And of course the content of the page will be entirely different too. (All that from external observations. I don't think I can comment on the actual criteria.) 02:57:04 zzo38: I was mostly thinking about text intended for humans; if the file format specifies an encoding, then obviously you need to use that one 02:58:21 ais523: For status messages, either assuming ASCII or using the environment variables is the way to do it, I think. 02:58:30 yes 02:58:40 I don't think I can assume ASCII because that makes my programs impossible to internationalize 02:58:58 qr code is like an analogue radio 02:59:16 even in Canada, many users will want non-ASCII characters like œ and á in their output because many Canadians primarily speak French 02:59:19 you send the data all over the place via light rays depicting a black-white thingy 03:00:01 that said, I think that if the environment variables ask for ISO-8859-1, the program should output that, at least for stderr output 03:00:51 hm, I now wonder if you can measure a "power of signal" of the qr code as the distance from which the image is readable 03:00:52 I know I implemented locale-specific encoding code in ayacc, because I was trying to match the POSIX specification for yacc; although, I think most of the characters that yacc cares about are primarily stable between most commonly used encodings 03:00:58 If you want international status messages, the file with the international text can be for a specific encoding, and if the environment variable specifies that language but with a different encoding than any of the files, it can convert it, I suppose. However, I don't internationalize command-line status messages in my programs (although I will accept documentation and GUI in other languages) 03:01:03 so you could measure qr code in watts _<> 03:01:19 When just copying the input to output though, you could just pass the text "as-is" without worrying about the encoding. 03:01:33 right 03:01:55 my experience with programs like xterm (which originally used that method) is that it's probably better to have the program do encoding conversion on output, though 03:02:19 you shouldn't need separate translation databases for FR_ca.UTF-8 and FR_ca.ISO-8859-1 03:03:20 ugh, have my French locale files got uninstalled somehow? :-( 03:03:35 apparently not 03:03:43 That helps when you don't have the data in the proper encoding, but when you do, you should just use them, to avoid problems with conversion. 03:04:13 I always generate the fi_FI locale on my systems, even though I never use it. 03:04:30 I like to have a non-English locale around for testing locale issues, and partly just for fun 03:05:00 zzo38: ah right, so the point is that you don't want to decode into codepoints and back into bytes if the data's in the correct encoding already 03:05:05 wikipedia: "ISO-8859-1 was (according to the standard, at least) the default encoding of documents delivered via HTTP with a MIME type beginning with "text/"" 03:06:08 aren't web browsers supposed to interpret "ISO-8859-1" as actually meaning Windows-1252, though? 03:06:41 it says websites then switched to 1252 slowly 03:06:46 as I understood 03:06:49 ah, here we go: https://html.spec.whatwg.org/#determining-the-character-encoding 03:07:48 the HTML spec actually says that the default encoding for unmarked webpages should be assumed based on the locale within which their web browser is running 03:09:01 MediaWiki has a special language code "qqx" that shows the message name as the translated message content, learned of that recently. 03:09:14 btw 03:09:37 fizzie: oh wow, that would be so useful to have known about earlier (assuming it worked back then) 03:09:49 attaching encoding as an attribute to byte sequence is like a header in image formats -- it has orientation, alpha correction, etc. 03:09:55 From 1.18 onwards apparently. 03:10:06 and there are plenty of bugs when software fucks up those headers 03:10:17 *metadata 03:10:21 for ages I resorted to (web-browser-equivalent-of) grepping Special:AllMessages, which became a lot more frustrating when it stopped fitting on a page, and would have false positives due to text duplicated between messages 03:10:55 although, is "qqx" in the right namespace for private-use language codes? 03:12:26 RFC 5646 implies the name should start "x-", but maybe MediaWiki doesn't like the hyphen 03:12:45 (amazingly, I actually guessed that the private use prefix was "x-", but wanted to look it up to be sure) 03:35:25 -!- dbohdan has quit (Read error: Connection reset by peer). 03:36:12 -!- dbohdan has joined. 03:36:38 -!- ais523 has quit (Quit: quit). 03:43:33 -!- chiselfuse has quit (Remote host closed the connection). 03:58:13 Do you know which (if any) games other than Escape (by Tom7) can have bizarro world (like Escape does), and what its features are? I wanted to implement bizarro world in Free Hero Mesh, and should have the idea about its design. 04:38:10 -!- Everything has joined. 05:06:05 -!- oerjan has joined. 05:20:55 What is a bizarro world? 05:22:44 When using any cipher in CTR mode (including ChaCha20), does the nonce and counter have to be separate? If it is long enough, then you can do both? 05:24:30 I think you can combine them 05:24:46 that is, start the counter at a random value and include that with the message 05:25:10 assuming that your block size is big enough that you are unlikely to ever use the same keystream block twice in two different messages 05:25:50 Yes, it is how I mean 05:42:23 Does any cipher use CFB or OFB with a counter added? 05:45:53 how would you add it 05:47:07 Probably XOR or addition with the input of input of each step 05:59:24 I suppose there is three kind of functions that would be used: fixed->fixed (e.g. ChaCha20), (fixed,key)->fixed (e.g. most block ciphers), variable->fixed (e.g. most hash functions). There is also key whitening (XEX mode), and there is adding input to output like ChaCha20 does to make it difficult to reverse. 06:00:06 It is easy to see with ChaCha20 that if the input is zero, then the output will also be zero. But, even if only one bit is set of the input (I tried this), then the output will be all mixed up. 06:00:35 turns out it was GRPC compilation what was eating all the RAM 06:00:53 it takes like 5 minutes and almost 500mb 06:46:45 or rather 40 minutes already and does not finish, lol 06:49:27 oh specifically it's a Google's OpenSSL: https://github.com/google/boringssl 07:01:30 -!- Sgeo has quit (Read error: Connection reset by peer). 07:01:45 " one (maybe the only/) motivating idea of the original Befunge was to be as difficult as possible to compile" => I'd like to preemptively state that that wasn't my goal when designing Consumer Society, it's just a necessary side effect 07:16:50 the interesting part is that it also seems hard to translate Consumer Society to the existing high-level non-eso programming languages, even though many of them seem to have all the features necessary. this part is more an accidental side effect than necessary. 07:17:05 ah, spam in finnish. (Although there seems to be an english version at the end.) it's been a while since the last one. 07:22:59 -!- riv has joined. 07:29:51 ok I think the compilation will just never end 07:30:19 because they assign this issue https://github.com/grpc/grpc/issues/26655 to pythonist who commit 3 days a week and already have 60 issues assigned 07:38:52 -!- Corbin has quit (Ping timeout: 245 seconds). 07:39:17 oh looks like he supports all the languages at the same time, and they've already increased CI build timeouts from 60 minutes to 90 https://github.com/grpc/grpc/pull/27230/files 07:58:57 [[Ppencode]] https://esolangs.org/w/index.php?diff=87932&oldid=86861 * YamTokTpaFa * (-2) /* Definition of Perl keywords */ '''I AM SORRY I FORGOT x''' 08:06:09 -!- hendursa1 has joined. 08:06:41 [[Ppencode]] https://esolangs.org/w/index.php?diff=87933&oldid=87932 * YamTokTpaFa * (+96) 08:09:36 -!- hendursaga has quit (Ping timeout: 276 seconds). 08:14:54 [[Ppencode]] https://esolangs.org/w/index.php?diff=87934&oldid=87933 * YamTokTpaFa * (+84) /* Definition of Perl keywords */ 08:22:07 -!- Koen_ has joined. 08:24:04 [[Ppencode]] https://esolangs.org/w/index.php?diff=87935&oldid=87934 * YamTokTpaFa * (+222) /* Definition of Perl keywords */ WTF new news 08:38:10 -!- joast has quit (Ping timeout: 240 seconds). 08:44:05 -!- wib_jonas has joined. 08:45:27 -!- joast has joined. 08:51:24 [[Ppencode]] https://esolangs.org/w/index.php?diff=87936&oldid=87935 * YamTokTpaFa * (+118) /* Definition of Perl keywords */ 08:55:14 [[Ppencode]] https://esolangs.org/w/index.php?diff=87937&oldid=87936 * YamTokTpaFa * (+132) /* Definition of Perl keywords */ 08:56:20 -!- imode has quit (Ping timeout: 252 seconds). 08:56:36 [[Ppencode]] https://esolangs.org/w/index.php?diff=87938&oldid=87937 * YamTokTpaFa * (+20) /* Definition of Perl keywords */ 09:00:08 -!- daggy1234[m] has quit (Quit: You have been kicked for being idle). 09:05:15 I mostly agree with ais523 here. Python 3 does the string stuff right for a high-level language: there are separate types for byte string and unicode string, and you generally don't need to know how the unicode strings are represented. It's not perfect, ideally you'd want unicode strings to have an internal form where they store utf-8 and decode 09:05:15 that only when necessary, since we do a lot of utf-8 IO, but it's still very good. Rust kind of has the approach right for a low-level language where you want to control the representation explicitly in the type system, but the standard library is somewhat lacking in string operations, so you might sometimes want to use extra libraries. But since 09:05:16 it's a low-level language, it does expose enough API that you can do this and can still convert to the standard library APIs and call the standard library functions when they make sense. 09:09:07 ` hmm… now I'm wondering if there's a programming language with case-insensitive keywords and one of them contains the substring "ss"' => is "keyword" relevant here? those languages usually also have c-i user-defined identifiers. 09:09:09 ? No such file or directory 09:10:54 there is no need in another class if all strings are just strings 09:12:51 you think about them like about a sequence of codepoints and you don't care about the internal presentation 09:13:07 zzo38: I actually think Turkic case-folding might be the *only* case in which you can't infer the case-folding rules from the codepoints being used, but I'm not sure’ => that is the only case I know of too, but we'll have to check the sources of libICU to be sure. 09:14:39 it would have simplified things if "Turkic dotless ı" and "Turkic dotted i" were different codepoints from "non-Turkic lowercase i"’ => I don't think so. The turkish i is one of those cases where there's no good solution, it's all tradeoffs. In particular if you did that, then you'd have problems when you copy a latin script proper 09:14:39 name into a turkish text and later try to uppercase it. 09:16:04 The only solution that might work is to go back in time and convince/bribe/force Kemal Atatürk to not start that convention, but this might be dangerous or impossible for time-travel-related reasons 09:20:36 ‘hmm, I don't think the user agent has the ability to tell the server what character encoding it wants the server to send’ => there's an Accept-Charset request header in HTTP/1.1, but I doubt it does much in practice 09:24:53 ‘I think the main options are "look at the locale environment variables (or OS equivalent)", "always use/assume UTF-8", and intermediate combinations of those’ => there's also automatically guessing from the (beginning of) input, and of course explicit command-line options or environment variables, with intermediate stuff between the four. 09:27:01 for example, I might write a script with a command-line option to set encoding of the input, a default that's either utf-8 or utf-16-le, and a warning if you keep the default utf-8 but the input is guessed to be utf-16 or vice versa, with the explicit input encoding command-line option silencing that warning. 09:32:06 I guess if you're sending images, you could send a QR code’ => I recently saw a large size ad poster where most of the poster was printed in high resolution, presmuably from a vector image, but it also contained a QR code that was blown up from a too small resolution bitmap that has antialiasing, and blowing it up to the huge size and 09:32:07 high resolution printing of the poster made those artifacts show up as various 0.005 m sized gray squares on most of the borders of a 0.03 m sized QR code grid 09:33:41 ais523: FWIW, supplying a Chrome-like user agent changes a lot of other things too.’ => does that depend on just the user-agent, rather than other HTTP stuff such as other request headers? 09:33:53 and eg. whether you send a HTTP/2 request 09:37:18 " the HTML spec actually says that the default encoding for unmarked webpages should be assumed based on the locale within which their web browser is running" => that was the state of art, yes, but with an encoding setting in the menu of the browser client 09:40:16 although, is "qqx" in the right namespace for private-use language codes?’ => yes, https://en.wikipedia.org/wiki/ISO_639-2#Reserved_for_local_use 09:43:52 oerjan: I regularly get a significant part of the spam in hungarian. Some of them in broken badly auto-translated hungarian, some in well-phrased hungarian. I don't find that too surprising. 09:44:18 wib_jonas: the surprise is that i'm not finnish or in finland hth 09:44:57 oerjan: yeah. I occasionally get spam in all sorts of random common languages. those are easier to discard because they're obviously spam. 09:45:53 also, that i used to receive finnish spam ridiculously often some years ago. 10:00:08 -!- oerjan has quit (Quit: Later). 11:01:03 -!- arseniiv has joined. 11:26:28 omg future is today 11:26:51 self-driving taxi in Moscow starts operating this autumn 11:27:38 (maybe correct idiom is "future is now") 11:33:07 . o O ( yay, killer drones ) 12:20:53 -!- Koen__ has joined. 12:23:40 -!- Koen_ has quit (Ping timeout: 260 seconds). 12:27:30 `prefix 12:27:31 prefix? No such file or directory 12:27:54 ?prefix 12:27:54 Unknown command, try @list 12:36:46 `help 12:36:46 Runs arbitrary code in GNU/Linux. Type "`", or "`run " for full shell commands. "`fetch [] " downloads files. Files saved to $HACKENV are persistent, and $HACKENV/bin is in $PATH. $HACKENV is a mercurial repository, "`revert " can be used to revert, https://hack.esolangs.org/repo/ to browse. $PWD ($HACKENV/tmp) is persistent but unversioned, /tmp is ephemeral. 12:37:24 is `run the same as ```? 12:37:37 ^help 12:37:37 ^ ; ^def ; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool 12:38:58 ?wiki wiki 12:38:59 https://wiki.haskell.org/wiki 12:39:03 nakilon: not quite. `run is a builtin that's hard or impossible to override by messing up commands in /hackenv/bin . it's probably redundant given that you can also do `/bin/bash -c but it can't hurt and will have to stay for compatibility. 12:39:03 ?gwiki wiki 12:39:04 No Result Found. 12:39:35 nakilon: also ``` pipes the output through a stupid meme filter that we should somehow get rid of but I don't dare to just remove it from the command 12:39:49 meme filter? 12:40:02 nakilon: yes. it's called rnooodl or something. 12:40:11 check the source codes if you want to know 12:40:36 it annoys me because it means any lines that aren't terminated by a newline byte are eaten if the command times out: 12:40:40 `cbt ``` 12:40:40 cat: '/hackenv/bin/```': No such file or directory 12:40:52 ``` echo foo; echo -n bar; sleep 9999 12:41:08 nakilon: try with one less backtick 12:41:15 `cbt `` 12:41:16 ​#!/bin/sh \ export LANG=C; exec bash -O extglob -c "$@" | rnooodl 12:41:21 the first one is just the invocation character for HackEso\ 12:41:24 oh, sure 12:41:27 one is prepended 12:41:27 No output. 12:41:38 um 12:41:48 why doesn't that show foo? 12:41:56 maybe it's even more buffered than I thought? 12:41:58 `cbt rnooodl 12:42:00 perl -pe 's/([Nn])ooodl/"$1@{[o x(3+rand 7)]}dl"/ge' 12:42:09 `/bin/sh -cecho foo; echo -n bar; sleep 9999 12:42:10 ​/bin/sh: 0: Illegal option -h 12:42:22 oh yeah, that's why you can't do that 12:42:26 `run echo foo; echo -n bar; sleep 9999 12:43:02 foo \ bar 12:43:02 `perl -eprint("one\ntwo");sleep 9999 12:43:19 can't set no buffer for perl cmd? 12:43:33 No output. 12:43:52 nakilon: that wouldn't be enough. you'd have to implement it properly to only buffer one character, and even that only if it's the "d" at the right context 12:44:59 that would be possible but so far I was lazy to do it 12:45:08 mostly because I hate rnooodl even besides the buffering 12:46:33 compoundng commands here is a cool feature https://esolangs.org/wiki/Bfbot 12:47:28 not sure why this bot is in [People] 12:47:42 oh fungot too 12:47:42 nakilon: also how can i know what you come up with to justify rolling my own... php witch i don't use it 12:48:19 fungot I thought you are b_jonas until I reached the php 12:48:19 nakilon: is he a total fnord versions. 12:48:40 oh good 12:49:07 although "PHP! Witch! I don't use that" does sound kind of like me 12:51:29 why there is no php bot 12:52:31 I remember on Rusnet the main bot on #programming and all related channels was one written in Delphi 13:11:13 -!- oerjan has joined. 13:14:23 (maybe correct idiom is "future is now") <-- needs a "the" in front 13:16:43 thanks 13:17:31 `prefixes (i think you may have been looking for this) 13:17:33 Bot prefixes: fungot ^, HackEso `, EgoBot !, lambdabot @ or ? or > , thutubot +, metasepia ~, idris-bot ( , jconn ) , j-bot [ , bfbot =, velik \. 13:17:50 exactly 13:17:55 There's also an implicit cat in all the commands, if memory serves as a way to ensure the standard output stream does not look like a terminal. (Some programs adapt their output format, and the argument was, output suitable for pipes is more likely to be output suitable for IRC.) 13:17:58 instead I went through wiki article 13:18:54 lambdabot is prefix squatter 13:19:47 technically it also squats :k and :t 13:20:27 as well as its own name in some cases 13:20:32 lambdabot, @run 2 13:20:33 2 13:21:05 but those are hard to do by accident and the list was getting too long 13:21:40 :k hm 13:21:41 error: Not in scope: type variable ‘hm’ 13:22:25 :k Monad 13:22:26 (* -> *) -> Constraint 13:22:37 Full disclosure: I've not removed EgoBot's ! from that list as a sneaky plan to squat ! for "official" commands handled by the `esolangs` bot, in case such commands ever start to exist. 13:23:51 the bfjoust bots also use ! but only with specific commands following. 13:24:38 and it worked because all the bots using ! were silent if there's not a command match 13:24:45 oh and fungot too 13:24:46 oerjan: i think that i aren t sarahbot are me? hm. 13:24:56 !bf ,[.,]!Hi 13:25:01 no wait 13:25:14 ^bf ,[.,]!Hi 13:25:15 Hi 13:25:24 !logs 13:25:34 that one used to respond in private 13:25:40 fungot: Yeah, sarahbot isn't even a bot on this channel. 13:25:40 fizzie: imagine this, means? completely just 1 13:25:42 by ... glogbot, i think 13:26:00 (I think sarahbot was from #scheme.) 13:26:42 well fungot is also silent on non-matching commands, that part was right 13:26:43 oerjan: the chan serv answers to all comers at apple stores. :o fnord hours left before the next statement and write a bytechanger interpreter in asm, c, pascal, perl, pntr, refc, roma, and the 13:26:50 ^nosuchcommand 13:28:19 fungot how much is fnord hours? 13:28:20 nakilon: anyone knows where i can find out what extras those contain. 13:29:39 Heh, I wasn't aware Apple stores have ChanServ in (on?) them. 13:36:25 -!- hendursa1 has quit (Quit: hendursa1). 13:38:29 -!- hendursaga has joined. 13:43:20 -!- wib_jonas has quit (Quit: Client closed). 13:52:12 -!- Koen__ has quit (Remote host closed the connection). 13:56:27 -!- Sgeo has joined. 13:58:57 -!- wib_jonas has joined. 13:59:24 perlbot prefixes 13:59:25 wib_jonas: Bot prefixes: fungot ^, HackEso `, EgoBot !, lambdabot @ or ? or > , thutubot +, metasepia ~, idris-bot ( , jconn ) , j-bot [ , bfbot =, velik \. 14:34:01 `` TZ=Pacific/Auckland python3 -c '"Getting the current wallclock time in the local timezone and UTC."; import datetime as g; n = g.datetime.now; [print(t.strftime("%Y-%m-%dT%H:%M:%S%z %Z")) for t in [n().astimezone(), n(tz = g.timezone.utc)]];' 14:34:04 2021-09-09T02:34:03+1200 NZST \ 2021-09-08T14:34:03+0000 UTC 14:34:19 ^ Python's datetime module is so nontrivial to use that I want to get these magic incantations to the channel log 14:35:04 the TZ override is there only to make this a better test, since otherwise HackEso default to UTC timezone 14:35:57 -!- sprock has quit (Ping timeout: 265 seconds). 14:41:59 by the way, 14:42:01 `` TZ=uWIw/Dtca/FlSM date +%Z # esoteric way to strip the part of a filename after the first slash 14:42:03 uWIw 14:43:00 Cool ☺ 14:43:11 it doesn't quite work for all filenames 14:45:28 -!- dyeplexer has joined. 15:12:23 $ ruby -e '[Time.now, Time.now.getutc].each{ |n| puts n.strftime "%FT%T%z %Z" }' 15:12:23 2021-09-08T18:11:32+0300 MSK / 2021-09-08T15:11:32+0000 UTC 15:13:06 `` ruby -e '[Time.now, Time.now.getutc].each{ |n| puts n.strftime "%FT%T%z %Z" }' # does that work in this version of ruby? 15:13:08 2021-09-08T15:13:08+0000 UTC \ 2021-09-08T15:13:08+0000 UTC 15:13:20 `` TZ=Pacific/Auckland ruby -e '[Time.now, Time.now.getutc].each{ |n| puts n.strftime "%FT%T%z %Z" }' # does that work in this version of ruby? 15:13:21 2021-09-09T03:13:21+1200 NZST \ 2021-09-08T15:13:21+0000 UTC 15:13:22 oh I forgot it's installed 15:14:31 `` TZ=Pacific/Auckland; for r in "" -u; do date $r +"%Y-%m-%dT%H:%M:%S%z %Z"; done 15:14:32 2021-09-08T15:14:32+0000 UTC \ 2021-09-08T15:14:32+0000 UTC 15:14:42 `` export TZ=Pacific/Auckland; for r in "" -u; do date $r +"%Y-%m-%dT%H:%M:%S%z %Z"; done 15:14:43 2021-09-09T03:14:42+1200 NZST \ 2021-09-08T15:14:43+0000 UTC 15:14:54 looks good 15:17:33 `` ruby -rtzinfo -e 't = TZInfo::Timezone.get("Pacific/Auckland").to_local Time.now; [t, t.getutc].each{ |n| puts n.strftime "%FT%T%z %Z" }' 15:17:34 ​/usr/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require': cannot load such file -- tzinfo (LoadError) \ from /usr/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require' 15:18:07 this is the same just extracting timezone via standard gem tzinfo (that isn't installed)) 15:18:47 so you could adjust timezone by a runtime var 15:30:01 `` TZ=Pacific/Auckland perl -e'use Date::Manip::Date; $b = Date::Manip::Date->new(); for $r ([],["setdate","now,UTC"]) { print $b->new("now",$r)->printf("%Y-%m-%dT%H:%M:%D%z %Z\n"); }' 15:30:08 2021-09-09T03:30:09/09/21+1200 NZST \ 2021-09-09T03:30:09/09/21+0000 UTC 15:30:26 `` TZ=Pacific/Auckland perl -e'use Date::Manip::Date; $d = Date::Manip::Date->new("now"); for $_r (0,1) { print $d->printf("%Y-%m-%dT%H:%M:%D%z %Z\n"); $d->convert("UTC"); }' 15:30:28 2021-09-09T03:30:09/09/21+1200 NZST \ 2021-09-08T15:30:09/08/21+0000 UTC 15:30:37 either of these work with the Date::Manip module 15:36:52 weird that perl is this longer here 15:37:39 `` TZ=Pacific/Auckland perl -e'use Date::Manip::Date; $d = Date::Manip::Date->new("now"); for $_r (0,1) { print $d->printf("%FT%T%z %Z\n"); $d->convert("UTC"); }' 15:37:41 Thursday, September 9, 2021T03:37:40+1200 NZST \ Wednesday, September 8, 2021T15:37:40+0000 UTC 15:37:48 oops 15:40:43 nakilon: more like it's not golfed. there were shorter ways to print these in perl if I wanted. 15:41:16 plus that's just one of the datetime modules available in perl 15:41:41 incidentally you can use the format "%O%z %Z" with Date::Manip. 15:42:12 but my goal here isn't to print the date in this one format, but to show how to get a date object (with which I could do arithmetic) and then print it in any format I choose 15:42:19 yeah I don't know how much space perl takes when it's not golfed 15:42:34 the python statement does that too, if I just wanted to print the current time in that format it could be shorter 15:43:48 `` TZ=Pacific/Auckland ruby -e 't = Time.now; p [t, t.class, t.zone]' 15:43:49 ​[2021-09-09 03:43:48 +1200, Time, "NZST"] 15:45:58 there are so many methods in classes Time, Date and DateTime -- impossible to remember them ..D 15:46:36 not even saying about all the trash that is added by Rails 15:47:43 -!- hendursaga has quit (Remote host closed the connection). 15:47:56 most of it is just the same under another name -- people invent some fancy methods, shortcuts, implement them in Rails, and then when it gets implemented in pure Ruby they don't throw it away from Rails, and it's just like a tumour 15:48:07 -!- hendursaga has joined. 15:48:19 if you want something short, then try one of 15:48:26 ``` date +%FT%T%z\ %Z; date --rfc-3=s 15:48:27 2021-09-08T15:48:26+0000 UTC \ 2021-09-08 15:48:26+00:00 15:49:07 throw in a -u switch for UTC 15:49:16 -!- oerjan has quit (Quit: leaving). 15:49:20 ``` export TZ=Pacific/Auckland; date +%FT%T%z\ %Z; date --rfc-3=s 15:49:21 2021-09-09T03:49:20+1200 NZST \ 2021-09-09 03:49:20+12:00 15:49:31 ``` export TZ=Pacific/Auckland; date -u +%FT%T%z\ %Z; date -u --rfc-3=s 15:49:32 2021-09-08T15:49:32+0000 UTC \ 2021-09-08 15:49:32+00:00 15:50:39 -!- wib_jonas has quit (Quit: Client closed). 15:50:42 ``` ruby -e '$><<`date +%FT%T%z\\ %Z`<<`date --rfc-3=s`' 15:50:44 2021-09-08T15:50:43+0000 UTC \ 2021-09-08 15:50:43+00:00 15:50:52 the latter does not work on macos 15:51:02 date: illegal option -- - 15:51:20 i.e. on BSD I assume 16:31:12 -!- Koen_ has joined. 16:55:56 -!- sprock has joined. 17:06:07 nakilon: ... ok. you might need to install GNU coreutils for that. I don't use an OS X so I can't really help in that. (I could tell for Windows.) 17:37:20 -!- scjosh has joined. 17:38:43 -!- VilgotanL has joined. 17:38:45 h 17:45:39 ais523: re https://logs.esolangs.org/libera-esolangs/2021-09-08.html#l2c ‘I actually think Turkic case-folding might be the *only* case in which you can't infer the case-folding rules from the codepoints being used’, I'm looking at the ICU sources right now. 17:45:46 there's a enum in ucase.h that defines the constants UCASE_LOC_UNKNOWN UCASE_LOC_ROOT UCASE_LOC_TURKISH UCASE_LOC_LITHUANIAN UCASE_LOC_GREEK UCASE_LOC_DUTCH UCASE_LOC_ARMENIAN which ICU uses internally to know what casefolding rules to apply. I believe this isn't an exposed API. the correct constant is computed from the locale by ucase.cpp:ucase_getCaseLocale 17:45:55 ucase.cpp also handles (at least some of the) actual locale-dependent case-conversion rules. there are comments like ‘// և ligature ech-yiwn uppercases to ԵՒ=ech+yiwn by default and in Western Armenian, but to ԵՎ=ech+vew in Eastern Armenian.’ 17:46:06 oh my 17:46:18 UCASE_LOC_LITHUANIAN has to do something with dots on i and j with accents but I don't quite understand what; UCASE_LOC_DUTCH something with "IJ", and UCASE_LOC_GREEK does some magic with ancient greek accented characters. 17:47:20 so, at least as libicu is concerned, turkish case folding isn't the only locale-dependent one, but some of this might be an artifact of ICU wanting to implement both practical casefolding and strict conformance to unicode casefolding 17:48:03 this is from ICU4C version 69.1 17:48:06 -!- VilgotanL has quit (Remote host closed the connection). 17:48:18 I don't think I want to delve into this deeper than that 17:48:26 to delve into the source code that is 18:10:46 -!- Koen_ has quit (Quit: Leaving...). 18:16:42 -!- imode has joined. 18:16:52 -!- dyeplexer has quit (Remote host closed the connection). 18:17:48 -!- delta23 has joined. 19:28:20 -!- sprock has quit (Ping timeout: 260 seconds). 20:04:14 -!- sprock has joined. 20:15:11 I don't know how (or if) TRON handles case folding. I also think someone else on the esoteric programming IRC mentioned idea to have split codes with the language and glyph, that way you could also handle case folding properly, too 20:17:52 Also, you can implement Turkish case folding with Turkish character encoding. 20:51:51 [[Talk:Mogus]] N https://esolangs.org/w/index.php?oldid=87939 * ArthroStar11 * (+1621) Created page with "== Attempt at an interpreter == Hi, I attempted to make an interpreter for this language [https://drive.google.com/file/d/1RotVm5i9xgDN94vK47tBUwHFiOGVAmLv/view?usp=sharing li..." 20:53:01 -!- sprock has quit (Ping timeout: 252 seconds). 20:56:20 -!- Lord_of_Life_ has joined. 20:57:23 -!- Lord_of_Life has quit (Ping timeout: 252 seconds). 20:59:00 -!- Lord_of_Life_ has changed nick to Lord_of_Life. 20:59:28 -!- Everything has quit (Quit: leaving). 21:30:02 Bleh. I use this one place's free secondary DNS service, and they've been pretty laggy in the past in terms of responding to notifys to refresh the zone, so I've had to bump up the ACME dns-01 verification delay all the way to 300 seconds. But now they've gone and started to take like half an hour. So the certbot update of esolangs.org fails. :/ 21:30:13 Maybe I need to do that thing where I delegate the `_acme-challenge` names as a subdomain that's only hosted by the primary nameserver. Since if it's down, it's not like the dynamic update would work anyway. 21:30:24 Or else I should've just used the HTTP-based challenge like normal people. 21:39:40 -!- sprock has joined. 21:45:01 -!- riv has quit (Quit: Leaving). 22:17:13 -!- chiselfuse has joined. 22:18:47 -!- arseniiv has quit (Ping timeout: 252 seconds). 22:19:43 -!- lambdabot has quit (Remote host closed the connection). 22:20:39 -!- lambdabot has joined. 2021-09-09: 01:26:36 Bah. I think there's no way to tell the certbot-dns-rfc2136 plugin that it should attempt to do an RFC 2136 update to some *other* domain name, under the assumption it's been CNAME'd to a different domain. :/ I could probably script it on top of a manual auth hook and nsupdate, but :effort: 01:43:46 -!- delta23 has quit (Quit: Leaving). 02:14:15 "I don't use an OS X so I can't really help in that" -- I just inform that that command isn't compatible 02:16:56 -!- Sgeo_ has joined. 02:17:21 -!- Sgeo has quit (Read error: Connection reset by peer). 04:04:30 -!- dyeplexer has joined. 04:20:10 -!- chiselfuse has quit (Remote host closed the connection). 04:35:15 -!- Corbin has joined. 05:21:51 -!- Sgeo_ has quit (Read error: Connection reset by peer). 05:22:36 -!- velik has quit (Remote host closed the connection). 05:49:29 -!- velik has joined. 05:50:32 \wiki Linux 05:50:33 (alt: 'Linux kernel') Family of Unix-like operating systems 05:50:39 \wiki Linux kernel 05:50:40 Free and open-source Unix-like operating system kernel 05:51:53 \wiki VPCLMULQDQ 05:51:54 AVX-512 are 512-bit extensions to the 256-bit Advanced Vector Extensions SIMD instructions for x86 instruction set architecture (ISA) proposed by Intel in July 2013, and implemented in Intel's Xeon Phi x200 (Knights Landing) and Skylake-X CPUs; this includes the Core-X series (excluding the Core i5-7640X and Core i7-7740X), as well as the new Xeon Scalable Processor Family and Xeon D-2100 Embedded Series.[LF] 05:52:11 \wiki lasjdkjhasdjasbd 05:52:11 nothing was found 05:52:31 oh I'll append the ' ' to output 05:52:33 *prepend 06:00:38 -!- velik has quit (Remote host closed the connection). 06:00:57 -!- velik has joined. 06:06:53 -!- velik has quit (Remote host closed the connection). 06:07:12 -!- velik has joined. 06:12:54 -!- velik has quit (Remote host closed the connection). 06:13:11 -!- velik has joined. 06:25:32 -!- velik has quit (Remote host closed the connection). 06:25:58 -!- velik has joined. 06:29:24 [[Velik]] https://esolangs.org/w/index.php?diff=87940&oldid=87683 * Nakilon * (+472) added examples of \wiki command 06:32:16 \wiki befunge 06:32:17 Chris Pressey[LF] 06:32:21 damn 06:32:29 badly formatted one I guess 06:43:39 \wiki befunge 06:43:40 Befunge is a two-dimensional stack-based, reflective, esoteric programming language. It differs from conventional languages in that programs are arranged on a two-dimensional grid. "Arrow" instructions direct the control flow to the left, right, up or down, and loops are constructed by sending the control flow in a cycle. It has been described as "a cross between Forth and Lemmings".[LF] 06:44:19 fixed the page, "programming language" Infobox was broken 06:49:37 -!- velik has quit (Remote host closed the connection). 06:50:04 -!- velik has joined. 07:14:17 -!- oerjan has joined. 07:15:39 -!- benji has quit (Quit: ZNC - https://znc.in). 07:16:10 -!- benji has joined. 07:17:33 -!- benji has quit (Client Quit). 07:18:03 -!- benji has joined. 07:20:55 -!- benji has quit (Client Quit). 07:21:27 -!- benji has joined. 07:21:46 -!- benji has quit (Client Quit). 07:22:16 -!- benji has joined. 08:06:53 -!- hendursa1 has joined. 08:09:21 -!- hendursaga has quit (Ping timeout: 276 seconds). 08:21:55 -!- arseniiv has joined. 09:02:05 -!- joast has quit (Ping timeout: 260 seconds). 09:16:22 -!- joast has joined. 09:32:40 -!- oerjan has quit (Quit: Later). 09:33:05 -!- imode has quit (Ping timeout: 252 seconds). 09:46:28 -!- velik has quit (Remote host closed the connection). 09:46:59 -!- velik has joined. 10:44:59 [[HeLiiLii]] N https://esolangs.org/w/index.php?oldid=87941 * Magnogen * (+2431) Created page with "==About HeLiiLii== [['''HeLiiLii''']] (pronounced heh-lee-lee) is an [[esoteric programming language]] designed by [[User:Magnogen]] in 2021, although the idea behind it was..." 11:20:58 [[HeLiiLii]] https://esolangs.org/w/index.php?diff=87942&oldid=87941 * Magnogen * (+1438) 11:27:48 [[HeLiiLii]] M https://esolangs.org/w/index.php?diff=87943&oldid=87942 * Magnogen * (+25) full name pog 11:30:12 [[HeLiiLii]] https://esolangs.org/w/index.php?diff=87944&oldid=87943 * Magnogen * (+14) heliilii 12:40:29 -!- velik has quit (Remote host closed the connection). 12:41:01 -!- velik has joined. 12:44:00 found that Wikidata has better summaries; code even became shorter 12:48:17 -!- oerjan has joined. 12:48:26 \wiki VPCLMULQDQ 12:48:27 AVX-512 -- Instruction set extension developed by Intel https://en.wikipedia.org/wiki/AVX-512 12:50:59 -!- delta23 has joined. 12:51:26 \wiki befunge 12:51:27 Befunge -- esoteric, 2-dimensional programming language https://en.wikipedia.org/wiki/Befunge 12:51:41 i seem to have read that wikipedia used the wikidata summaries at one point but then changed their policy not to 13:07:23 unfortunately such articles like befunge and avx don't have {short description} so those large outputs were the results of the whole first paragraph text parsing; switching to wikidata avoids these spontaneous big replies; I hope wikidata has summary for everything, we'll see 13:08:05 if not, I'll reattach the first paragraph parsing as a fallback 13:19:22 -!- hendursa1 has quit (Quit: hendursa1). 13:20:55 -!- hendursaga has joined. 13:26:00 though I can adapt that parsing to a... \esowiki 13:33:56 -!- velik has quit (Remote host closed the connection). 13:34:23 -!- velik has joined. 13:39:32 [[Velik]] https://esolangs.org/w/index.php?diff=87945&oldid=87940 * Nakilon * (+434) added \esowiki 13:40:31 b_jonas I just spotted you wrote "commands starting with a backspace..." https://esolangs.org/w/index.php?title=Velik&diff=prev&oldid=85671 13:40:37 lol 13:40:47 \esowiki befunge 13:40:48 Befunge is a two-dimensional esoteric programming language invented in 1993 by Chris Pressey with the goal of being as difficult to compile as possible. Code is laid out on a two-dimensional grid of instructions, and execution can proceed in any direction of that grid. https://esolangs.org/wiki/Befunge 13:43:20 I suppose weird "Note" at the top of [wiki brainfuck] isn't a usual wikimedia Template that the parsing gem is used to, so it thinks it's the actual first paragraph ( 13:43:23 https://esolangs.org/wiki/Brainfuck/w/index.php%3Ftitle=Talk:Brainfuck/index.php 13:43:48 woah, this url is weird 13:45:38 this is weird: 1. https://i.imgur.com/zLkVuWF.png 2. https://i.imgur.com/X0poLvz.png 13:51:16 -!- hanif has joined. 13:53:40 -!- velik has quit (Remote host closed the connection). 13:54:07 -!- velik has joined. 13:55:13 -!- Sgeo has joined. 13:55:54 [[User:Nakilon]] M https://esolangs.org/w/index.php?diff=87946&oldid=83634 * Nakilon * (-25) can't be found on freenode 13:59:53 [[JSInstruction]] N https://esolangs.org/w/index.php?oldid=87947 * Dominicentek * (+3102) Created page with "JSInstruction is an esoteric programming language written by [User:Dominicentek]. The language has only one built in instruction and you can add more by including JavaScript c..." 14:01:10 [[JSInstruction]] https://esolangs.org/w/index.php?diff=87948&oldid=87947 * Dominicentek * (-5) 14:02:24 [[JSInstruction]] https://esolangs.org/w/index.php?diff=87949&oldid=87948 * Dominicentek * (+42) 14:02:42 [[JSInstruction]] https://esolangs.org/w/index.php?diff=87950&oldid=87949 * Dominicentek * (+4) 14:03:12 [[Language list]] https://esolangs.org/w/index.php?diff=87951&oldid=87865 * Dominicentek * (+20) /* J */ 14:03:20 -!- spruit11 has quit (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.). 14:03:30 [[JSInstruction]] https://esolangs.org/w/index.php?diff=87952&oldid=87950 * Dominicentek * (+2) 14:03:45 TBH I think unqualified "wiki" on this channel should mean our own one, not WikiPedia. 14:04:19 [[JSInstruction]] https://esolangs.org/w/index.php?diff=87953&oldid=87952 * Dominicentek * (-1) 14:05:09 fair point 14:05:22 what would be the command for wikipedia then? \wikipedia? \wp? 14:07:27 why don't you use [[...]] for inline links instead of [wiki ...]? i guess you can then make your bot ignore the esolangs bot 14:07:55 nakilon: "wp"'s pretty unambigious imo, so both'd work 14:09:31 I use "wp" as my personal search keyword, but that's just me. 14:11:04 or even just 'w' which i think is how other wikimedia sites link to wikipedia (also ddg uses the !w bang for searching wikipedia) 14:11:26 what is ddg 14:11:36 And yeah, "Brainfuck/w/index.php?title=Talk:Brainfuck/index.php" is a different language than "Brainfuck", but it's unfortunate if that comes up as the best match there. 14:11:40 duckduckgo.com/ 14:12:11 [[User:Dominicentek]] https://esolangs.org/w/index.php?diff=87954&oldid=87179 * Dominicentek * (+39) 14:12:22 [[User:Dominicentek]] https://esolangs.org/w/index.php?diff=87955&oldid=87954 * Dominicentek * (+4) 14:12:42 oh I didn't even realise that's a language 14:16:07 I feel like it's in the same category of silly names as "Real Fast Nora's Hair Salon 3: Shear Disaster Download" and "Esolang talk:Klat gnalosE". 14:19:22 -!- chiselfuse has joined. 14:22:25 If I have a matrix multiplication A*B, I know I can interpret that as A transforming B. Is there any way to interpret it as B taking some action of rotation + translation on A? Maybe in a different order? (If it's a translate-rotate matrix) 14:24:15 Sgeo: transposition reverses multiplication 14:24:32 But then the resulting matrix is transposed 14:25:40 Then transpose again. Another way to put this is that the category of matrices is self-dual. 14:26:20 (That's the category whose objects are the natural numbers and arrows are matrices; composition is matrix multiplication, and the opposite category just transposes everything.) 14:28:31 you can think of applying (A*B)^t to a vector as applying the _transpose_ of that vector on the left of A*B 14:28:54 (a vector being seen as an n by 1 matrix) 14:29:49 that is, ((A*B)^t*v) = (v^t*A*B)^t 14:31:18 glh::matrix4f newCameraMatrix = slCameraMatrix * m_mat4HMDPose * eyeLocation; 14:31:51 Are there translations/rotations that could be done to slCameraMatrix that would be equivalent to that? (knowing m_mat4HMDPose and eyeLocation are translation/rotation matrices) 14:32:35 -!- spruit11 has joined. 14:32:39 [[Meow]] N https://esolangs.org/w/index.php?oldid=87956 * Martsadas * (+1603) Created page with "[[Meow]] is a joke esolang created by [[User:Martsadas]] that has 2 registers that can store integers

=== Instructions: === {| class="wikitable" ! Instruction !! What..." 14:33:00 [[User:Martsadas]] M https://esolangs.org/w/index.php?diff=87957&oldid=87787 * Martsadas * (+11) Meow 14:35:47 Sgeo: if all the matrices are invertible, A*B=C*A implies C=A*B*A^-1. that is going to depend on A. 14:36:14 if not all of the matrices are invertible, there might not be solution, or it might not be unique. 14:36:21 *a solution 14:38:16 s/all the matrices/A and B/, you get C for free. 14:38:44 The notes at https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluLookAt.xml might be helpful in this particular case, too. 14:38:54 Hmm. A*B*C = D*E*A 14:38:55 would let some of the operations occur in a different order 14:40:30 Sgeo: that's not really going to help because what i said about C before now applies to M=D*E 14:46:49 http://golf.shinh.org/p.rb?Evil+Numbers some familiar names 14:49:36 yeah we played around with that here back in ... 2015, according to the date beside my name 14:50:28 i see henkma is no longer the unbeaten haskell champion 14:51:27 well seems lynn is now. she used to be a regular here. 14:53:20 (or well, "here" that used to be on freenode) 14:53:39 -!- chiselfuse has quit (Remote host closed the connection). 14:53:50 -!- chiselfuse has joined. 14:55:40 -!- velik has quit (Remote host closed the connection). 14:55:53 -!- chiselfuse has quit (Client Quit). 14:56:10 -!- velik has joined. 14:58:19 -!- chiselfuse has joined. 14:58:22 [[velik]] 14:58:23 https://esolangs.org/wiki/Velik 14:58:27 \wiki velik 14:58:29 velik is an IRC bot maintained by User:Nakilon. It was created in 2021-05. It is resident on the libera/#esolangs channel. It can execute RASEL language code and also responds to some other commands (use \help to see all of them). https://esolangs.org/wiki/Velik 14:58:31 -!- arseniiv has quit (Ping timeout: 265 seconds). 15:00:03 -!- velik has quit (Remote host closed the connection). 15:00:23 -!- velik has joined. 15:03:49 how do I escape [ and ] in code block? 15:04:55 I mean [[ and ]] 15:04:56 https://esolangs.org/wiki/Foobar%20and%20Foobaz%20and%20Barbaz,%20oh%20my! 15:05:01 they become bold 15:05:04 lol 15:08:58 weird this issue does not happen on pages with bf code with double brackets 15:13:31 [[Velik]] https://esolangs.org/w/index.php?diff=87958&oldid=87945 * Nakilon * (+1) \wiki -> \wp, \esowiki -> \wiki, [wiki ...] -> [[...]]] 15:13:55 worked 15:15:42 \wiki Jelly 15:15:43 Jelly is a golfing language by Dennis Mitchell inspired by the J programming language. It has a free online compiler on Try It Online. It comes with its own character set (of 256 characters) and character encoding, apparently unrelated to any previous encodings. https://esolangs.org/wiki/Jelly 15:15:52 Cool. 15:17:36 I'm not really sure why it ignores esolangs, I didn't implemented it yet 15:17:53 velik you are too smart 15:22:15 -!- hanif has quit (Ping timeout: 276 seconds). 15:23:09 it had to be triggered twice here :esolangs!~esolangs@techne.zem.fi PRIVMSG #esolangs :\u000314[[\u000307Velik\u000314]]\u00034 \u000310 \u000302https://esolangs.org/w/index.php?diff=87958&oldid=87945\u0003 \u00035*\u0003 \u000303Nakilon\u0003 \u00035*\u0003 (+1) \u000310\\wiki -> \\wp, \\esowiki -> \\wiki, [wiki ...] -> [[...]]]\u0003 15:25:21 ok, I guess the gem that is used here just can't handle ... nor those characters 15:28:39 -!- arseniiv has joined. 15:34:58 or rather those queries just return nothing in wiki search 15:36:12 I... think I got confused because applying rotation B after A should be.... A*B? To get a model matrix? 15:36:28 I was thinking it would be B*A, but... ugh 15:46:28 [[Meow]] https://esolangs.org/w/index.php?diff=87959&oldid=87956 * Martsadas * (+867) fixed 99 bottles of beer and added fizzbuzz and factorial and cat program 15:58:37 -!- hanif has joined. 16:06:00 oerjan | well seems lynn is now. she used to be a regular here. => ah didn't know that 16:07:10 oerjan: i don't know if you already know, but henkma released their golfs recently https://github.com/henkma/HaskellGolfSpoiler 16:30:56 -!- imode has joined. 16:32:53 -!- riv has joined. 16:39:38 Is there a way to indicate that a language should have an article, besides redlinking? In particular, is there a page of desired articles? 16:40:31 hanif: aha! 16:42:51 I like redlinking 16:42:59 I miss the times when wikipedia was all red 16:48:24 there is the automatic https://esolangs.org/wiki/Special:WantedPages 16:48:33 (based on number of red links) 16:49:23 [wiki List of ideas] 16:49:34 hm 16:50:24 -!- Melvar has quit (Quit: WeeChat 3.2). 16:51:43 [[list of ideas]] 16:51:44 https://esolangs.org/wiki/List%20of%20ideas 16:52:11 [[JSInstruction]] https://esolangs.org/w/index.php?diff=87960&oldid=87953 * Dominicentek * (+4) 16:52:19 ah you changed that 16:52:26 no one used this command, two people said to change the syntax to [[]], so I changed and now you used the old one ..D 16:52:52 ...update in progress... 16:55:15 nakilon: what does '..D' mean? i've only ever seen it used by you 16:55:28 perhaps equivalent to ':D'? 16:55:48 What do we call classical computers on the wiki? I'm talking about machines whose complexity class is P. 16:56:25 hanif yes, those are my smiles 16:56:34 that statement doesn't quite make sense 16:56:44 P is the class of problems decidable by a deterministic Turing machine in polynomial time 16:56:58 it's not really a class of machines 16:57:06 ..P ..) ,.) you see, it's handy since I also can do with another eye .,) or both ,,) 16:57:21 it's a class of decision problems 16:57:22 ah cool 16:59:41 Corbin: for indicating that the language should have an article: sometimes I just make a stub article; sometimes I mention the language on my user talk page under "TODO" 17:03:11 keegan: Do you get what I mean, though? 17:03:20 not really 17:03:38 "deterministic Turing machine" is a class of machines 17:03:58 so is "nondeterministic Turing machine" 17:04:09 Okay, lemme try again. What do we call the computers that aren't quantum computers, aren't time-travelling computers, aren't magically able to index exponential amounts of memory with constant-time access, don't have a way to talk to Merlin, etc. 17:04:32 probably "classical computers" or "deterministic Turing machines" or just "Turing machines" 17:04:36 (Sorry, I would *love* to have an argument about complexity classes and jargon, but I feel like I'm being BS'd here.) 17:04:52 but i'm not a wiki editor 17:05:00 Turing machines have non-trivial differences in behavior depending on the number of tapes. That's why I'm looking for a better term. 17:05:03 i mean... I have edited the wiki 17:05:16 really? I thought you could simulate any number of tapes on one tape 17:05:43 any fixed number that is 17:06:13 But how long does it take to run the simulaton? 17:06:43 P is self-low, which means that a P machine can run a P machine as an oracle-like subroutine without leaving P. That's the sense in which a machine-oriented definition makes sense. 17:07:22 As a concrete demonstration, the redlinked language Pola is complete for P, which means that its abstract machine and type theory are also complete: https://www.researchgate.net/publication/266217730_Pola_a_language_for_PTIME_programming 17:08:14 Folklore is that simulating two tapes on one tape breaks this self-low property. 17:10:16 keegan: A more pressing concern is that Turing machines don't distinguish P and NP easily, which makes cryptography analytically invisible. Aaronson has a paper demolishing the viewpoint: https://arxiv.org/abs/quant-ph/0502072 17:10:48 (This paper's mostly meant to dispel the hope that NP-complete machines are trivially physical, but in the process, it establishes a sense of classical computing so that P, BQP, and NP are contrasted.) 17:13:59 -!- sprock has quit (Ping timeout: 252 seconds). 17:16:09 -!- chiselfuse has quit (Remote host closed the connection). 17:26:04 . o O ( NP /\ coNP is also self-low, i think ) 17:27:21 oerjan: Yeah. Indeed I think AP is self-low? Having trouble imagining an AP program which would refute that. 17:27:35 . o O ( why did i add "i think" inside a thought bubble ) 17:27:42 *AP problem, even~ I'll try to be more precise, sorry. 17:27:59 . o O ( at least you didn't . o O ( think ) ) 17:28:36 . o O ( -----### ) 17:29:09 . o O ( ouch ) O o . hmm. 17:29:17 [[JSInstruction]] https://esolangs.org/w/index.php?diff=87961&oldid=87960 * Dominicentek * (-26) 17:35:02 oh hm apparently AP = PSPACE which i am pretty sure is self-low. 17:36:13 although is self-lowness automatically preserved by such equations... 17:37:56 [[w:Low (complexity)]] 17:37:56 oh well 17:37:57 https://esolangs.org/wiki/1+ 17:38:20 mmmm 1+ 17:38:24 In the non-relativizing world, yes. Self-lowness doesn't relativize, which is kind of weird but also very nice because it gives us extreme confidence that e.g. P != PSPACE. (Also note that Time Hierarchy says that P != EXP, so this is expected.) 17:38:24 i smell a bug 17:39:34 -!- chiselfuse has joined. 17:40:16 -!- chiselfuse has quit (Client Quit). 17:40:35 -!- chiselfuse has joined. 17:43:44 -!- chiselfuse has quit (Remote host closed the connection). 17:44:41 -!- chiselfuse has joined. 17:56:01 -!- Oshawott has quit (Read error: Connection reset by peer). 17:58:34 way cool. have to show. dynamic dispatch in my language: https://github.com/egel-lang/egel/blob/master/examples/dispatch.eg 18:00:07 [[Swapfuck]] M https://esolangs.org/w/index.php?diff=87962&oldid=86645 * Rdococ * (-121) /* Computational class */ 18:00:59 [[Esolang talk:Categorization]] https://esolangs.org/w/index.php?diff=87963&oldid=87266 * Corbin * (+2775) /* Abstract algebraic languages */ new section 18:05:25 -!- riv has quit (Read error: Connection reset by peer). 18:09:09 -!- riv has joined. 18:13:24 -!- oerjan has quit (Quit: Nite). 18:16:11 [[JSInstruction]] https://esolangs.org/w/index.php?diff=87964&oldid=87961 * Dominicentek * (+8) 18:17:51 [[JSInstruction]] https://esolangs.org/w/index.php?diff=87965&oldid=87964 * Dominicentek * (+6) 18:26:00 `fromroman CI 18:26:01 101 18:26:02 `fromroman ci 18:26:04 No output. 18:26:49 my stupid script only accepts lower case roman numerals. maybe I should fix that 18:26:59 perlbot fromroman CI 18:27:00 b_jonas: No factoid found. Did you mean one of these: [frameworks] [french] [freenode] [frinkbot] [framesready] [freenode ops] [form] [fireme] [format] [forums] 18:28:21 -!- Melvar has joined. 18:39:25 -!- dyeplexer has quit (Remote host closed the connection). 18:40:38 -!- hanif has quit (Quit: quit). 18:56:08 `fromroman ⅭⅠ 18:56:09 No output. 18:56:16 `unidecode ⅭⅠ 18:56:17 ​[U+216D ROMAN NUMERAL ONE HUNDRED] [U+2160 ROMAN NUMERAL ONE] 18:58:03 Heh, there are dedicated combinations for each integer up to Ⅻ, presumably due to the clock thing. 18:58:22 `unidecode ↈ 18:58:23 ​[U+2188 ROMAN NUMERAL ONE HUNDRED THOUSAND] 18:58:23 IIII or IV? 18:58:44 It's Ⅳ here, but maybe there's a quadruple-Ⅰ somewhere too. 18:58:52 Not in the same block though. 18:59:34 fizzie: fromroman won't decode those because it originates form a golf I wrote for a golf competitions 19:00:15 `unidecode ↅↆ 19:00:16 ​[U+2185 ROMAN NUMERAL SIX LATE FORM] [U+2186 ROMAN NUMERAL FIFTY EARLY FORM] 19:04:54 [[JSInstruction]] https://esolangs.org/w/index.php?diff=87966&oldid=87965 * Dominicentek * (-26) 19:07:02 do you like an abbreviation TLWTNT (this is a legit word, totally not a typo)? 19:09:58 canonically (as decided by me while no others yet have adopted) this is used to mark a typo that you’ve just got an insight should be treated as is for greater good 19:09:58 [[JSInstruction]] https://esolangs.org/w/index.php?diff=87967&oldid=87966 * Dominicentek * (+47) 19:11:18 [[JSInstruction]] https://esolangs.org/w/index.php?diff=87968&oldid=87967 * Dominicentek * (+0) 19:13:29 -!- Koen_ has joined. 19:54:09 -!- sprock has joined. 20:48:17 -!- delta23 has quit (Quit: Leaving). 20:56:44 -!- sprock has quit (Ping timeout: 252 seconds). 20:56:54 -!- Lord_of_Life_ has joined. 20:57:15 -!- sprock has joined. 20:58:07 -!- Lord_of_Life has quit (Ping timeout: 265 seconds). 20:59:31 -!- Lord_of_Life_ has changed nick to Lord_of_Life. 21:13:42 -!- Koen_ has quit (Quit: Leaving...). 21:15:49 -!- sprock has quit (Ping timeout: 260 seconds). 21:17:05 -!- delta23 has joined. 22:27:09 fungot: what's the analogue of hill-climbing for minimization? 22:27:10 int-e: ( 0,0,0) (3)+ ( 0,0,1) fnord ( x 3) worked the same way? 22:27:37 fungot: "I don't know" was an acceptable answer. 22:27:37 int-e: it has a line length limit, became regular, right? not a good definition 22:29:42 int-e: Valley-tumbling hth. 22:30:29 Funny how for that one specific method, you can do gradient ascent and descent both, but in the general case you're always climbing up that hill. 22:31:24 downhill skiing 22:31:37 int-e: gradient descent 22:31:46 That's not the same though. 22:32:03 I used "hill-climbing", trusting the reader to take the dual view. 22:32:16 yeah, it's more special 22:32:16 b_jonas: Not applicable, I have a discrete problem. 22:32:18 more specific 22:32:40 how about just local minimization? 22:32:42 If you want the serious answer, I think "climbing" is used for optimization in general, yes. 22:32:47 yeah, I know it's not the same 22:32:53 "valley dumbling" is nice 22:33:06 yeah, valley tumbling is cute :) 22:34:29 When hill-climbing for minimization, I think you're just supposed to think of the height as measuring general solution gooditude, not specifically the value of it. 22:35:01 "gooditude" hehe 22:36:30 fizzie: I have no real qualms about using the term 22:37:07 But I was curious whether there was an established term for it that I had somehow missed. 22:37:10 so how about "valley climbing"? 22:37:38 that... sounds wrong, somehow 22:37:52 (down into the abysss?) 22:38:53 abyss climbing? ravine climbing? canyon climbing? 22:39:08 nah, I think just valley climbing 22:39:20 trench diving 22:47:14 There was an absurdist joke in a Finnish radio program once about Veikko Gustafsson, the lesser-known brother of https://en.wikipedia.org/wiki/Veikka_Gustafsson , a "flat land climber". But I don't remember the details well enough to do justice to it. Something about having a base camp in a ditch next to a field. 22:55:43 I'm reminded of this https://fr-fr.topographic-map.com/maps/zi6c/Volkspark-Prenzlauer-Berg/ ("Berg" = "mountain") 23:05:14 -!- arseniiv has quit (Ping timeout: 265 seconds). 23:07:08 int-e: Well, you know, "vuori" = "mountain" too, and we've got https://zem.fi/tmp/monk-mountain.png 23:07:59 fizzie: nice :) 23:12:13 There's also a "red mountain" in the city centre that I think might be even a little flatter, that's where I grew up. 23:13:30 -!- hendursaga has quit (Ping timeout: 276 seconds). 23:15:04 -!- hendursaga has joined. 2021-09-10: 00:00:40 -!- hendursaga has quit (Quit: hendursaga). 00:01:06 -!- hendursaga has joined. 00:37:10 -!- delta23 has quit (Remote host closed the connection). 00:37:35 -!- delta23 has joined. 00:56:40 -!- delta23 has quit (Remote host closed the connection). 00:57:05 -!- delta23 has joined. 01:06:36 -!- sprock has joined. 01:08:36 -!- earendel has joined. 01:13:25 man page: https://egel.tiiny.site/ 01:24:50 Can it be downloaded in the man page format instead of HTML? 01:25:00 -!- Melvar has quit (Ping timeout: 260 seconds). 01:28:55 I'm guessing it would be the file at https://raw.githubusercontent.com/egel-lang/egel/master/man/egel.1 01:39:07 yah, it's generated from markdown. took a while to get accustomed to this syntax again though. page has quirks but ah well 01:39:07 -!- Melvar has joined. 02:28:53 [[Special:Log/newusers]] create * Shift-eleven * New user account 02:31:56 [[Esolang:Introduce yourself]] M https://esolangs.org/w/index.php?diff=87969&oldid=87918 * Shift-eleven * (+188) 02:32:27 [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=87970&oldid=87969 * Shift-eleven * (+0) 03:08:40 -!- delta23 has quit (Remote host closed the connection). 03:09:05 -!- delta23 has joined. 03:09:07 -!- delta23 has quit (Remote host closed the connection). 03:56:40 -!- spruit11 has quit (Ping timeout: 260 seconds). 04:21:20 -!- spruit11 has joined. 04:24:01 20:37:56 [[w:Low (complexity)]] 04:24:03 https://esolangs.org/wiki/1+ 04:24:07 [[Low (complexity)]] 04:24:08 https://esolangs.org/wiki/List%20of%20complexity%20classes 04:24:25 * Corbin should do more work on that page 04:26:10 -!- spruit11 has quit (Ping timeout: 260 seconds). 04:26:35 those roman letters will have no place in my charset; the one he included them was probably not told that there are fonts 04:32:52 11:58 < HackEso> ​[U+2188 ROMAN NUMERAL ONE HUNDRED THOUSAND] 04:32:55 wow never saw this one before 04:32:56 it looks cool 04:33:42 almost as cool as Multiocular O 04:33:49 of which I am an official sponsor 04:35:57 it's just square 04:38:47 I had tried to write to promote my project (perhaps one thing is I don't know what to write). Sometimes I did but not much happened. Sometimes I could not find it. Sometimes other things fail. In one case, I got a message about being banned due to my IP address, but the IP address they mentioned is not the correct address that I connected from, and there was a broken link to ask the administrator. 04:39:18 I just had a dream about being physically hacked 04:40:55 I was playing in some shooter video game and you know video games in dreams are always mixing with "reality", so we were shooting each other, getting loot, trying different weapons, and when you change or upgrade or idk, doing something with it there is a wall with a hole 04:42:25 where you insert something and get ammo in return, and instead of ammo something long starting coming out, some copper ribbon that never ends, and the game provides nothing to cut it so I was effectively stuck taking out that bought infinite ribbon 04:43:45 Now I don't know what to do. 04:44:46 zzo38 where is that? 04:50:24 -!- spruit11 has joined. 05:05:43 -!- spruit11 has quit (Ping timeout: 252 seconds). 05:14:10 -!- feoh has joined. 05:35:18 I don't like this OEIS https://en.wikipedia.org/wiki/Sierpi%C5%84ski_number 05:36:03 for years looking at those sequences I never suspected there might be numbers added in between of already computated lists 05:37:21 numbers are whack 05:37:45 for example I could somehow find a yet unknown number in the list, so I put it in a search and it says no results 05:38:52 https://en.wikipedia.org/wiki/Seventeen_or_Bust is a nice way to look at that particular situation; there are six "Colbert numbers" left, and that should slowly decrease to zero. 05:38:53 I mean the sequence should not be there or should be somehow marked that it contains gaps 05:39:31 that progress might never end 05:40:47 Sure, OEIS should probably indicate this somewhere. But I think it's fine for folks who are implementing sequences from OEIS to realize for themselves when a function is recursive or otherwise definitely gap-free. 05:41:39 so for any time you put some search sequence and find no results (or even if you find some!) there might be an unknown number of other OEIS sequences added like this one that won't show up in results 05:42:11 so there is no point to hold it there if it does not show up by searching even such small numbers as 5 digits long or even shorter 05:44:07 I think it should have additional list of "proven to not be there" attached 05:44:31 so the search results could say "maybe it is this OEIS, but definitely not this one" 05:45:54 or listing the yet unproved candidates, does not matter 05:59:45 https://programming.guide/worlds-most-copied-so-snippet.html 06:18:27 -!- dyeplexer has joined. 06:35:18 -!- Sgeo has quit (Read error: Connection reset by peer). 06:53:40 how do you automatically decide what looks better? "1 mon 3 weeks" or "7 weeks 2 days" or "51 days" 07:15:39 -!- earendel has quit (Quit: Connection closed for inactivity). 07:38:14 -!- sprock has quit (Quit: brb). 07:39:13 -!- sprock has joined. 08:06:08 -!- hendursa1 has joined. 08:09:45 -!- hendursaga has quit (Ping timeout: 276 seconds). 08:15:33 -!- tromp has quit (Quit: Textual IRC Client: www.textualapp.com). 08:27:32 I's like to complain about the touchscreen UI of the self-service checkout machine in a supermarket. the problematic case is when I buy a few, say 5, normal items, plus 12 cheap candy bars. I want to be able to check on on the touchscreen interface if it counted the right number of candy bars. the touchscreen displays the last 9 items that you scanned, which in this case will be "candy bar 33g 89 / 08:27:38 candy bar 33g 89 / candy bar 33g 89 / candy bar 33g 89 / candy bar 33g 89 / candy bar 33g 89 / candy bar 33g 89 / candy bar 33g 89 / candy bar 33g 89". there's a touchable pair of arrows that scroll the list up. if you press the up arrow, it tries to scroll up one full screen (9 lines), but doesn't scroll further than the top of the list. so you see "bread 1kg 360 / milk 1.4 1l 260 / garbage bag 35l 850 08:27:44 / fruit-flavored juice 470 / sausage 1120 / candy bar 33g 89 / candy bar 33g 89 / candy bar 33g 89 / candy bar 33g 89". if you scroll down again, it just goes to the previous state. VERY USEFUL, darned interface. 08:28:16 a cashier did show me the workaround though: hold the feed button on the recipt printer, check how many candy bar lines are on the paper recipt so far 08:33:57 this is one of the best things about touchpad vs desktop with mouse 08:34:28 you can't count or even follow things that you scroll in chunks 08:39:26 -!- spruit11 has joined. 09:14:09 well, I mean, some things have smooth scrolling 09:15:22 at least where I live though, all the supermarket checkout things are touchscreens - I don't think I've ever really bought a lot of a single item like that though. seems like they could do it well with a scrollbar, but it might "clutter the interface" or something 09:18:46 -!- dyeplexer has quit (Ping timeout: 260 seconds). 09:21:22 -!- dyeplexer has joined. 09:24:26 they just have to print "x6" 09:45:18 The Sainsbury's machines do group identical items together. Or at least the handheld scanner you grab to scan items as you go, I don't remember if the traditional self-checkout machines do. 09:47:46 -!- wib_jonas has joined. 10:09:38 -!- imode has quit (Ping timeout: 260 seconds). 10:09:46 -!- spruit11_ has joined. 10:13:30 -!- spruit11 has quit (Ping timeout: 260 seconds). 10:38:25 * int-e growls 10:38:47 `python3 -cn="/hackenv/bin/fromroman";s=open(n).read();o=s.replace('{(sh','{uc((sh').replace('0]}','0])}');print(o);open(n,"w").write(o);print("write successful"); 10:38:50 ​#!/usr/bin/perl \ sub k{my$t;$t=~y/IVXLC/XLCDM/,$t.=("",I,II,III,IV,V,VI,VII,VIII,IX)[$_]for/./g;$r{$t}=$_;$t}k for s""\$"..4e3;print $r{uc((shift=~/(\w+)/)[0])},$/ \ \ write successful 10:39:01 `fromroman LVII 10:39:02 57 10:39:05 `fromroman lvii 10:39:06 57 10:40:01 https://numpy.org/doc/stable/reference/generated/numpy.matrix.html "It is no longer recommended to use this class, even for linear algebra. Instead use regular arrays." would be *far* more helpful with a transition guide that explains how to do matrix operations the new way 10:40:34 Since, apparently, A*B on arrays is pointwise, leading to *huge* confusion. 10:41:12 int-e: try either the .dot() method or, with new enough python, the @ infix operator 10:42:04 wib_jonas: Oh now that I knew what I'm looking for that information was easy to find. 10:42:47 Well, still missing one piece of the puzzle... but I guess that will fall into place momentarily 10:45:06 also, since this may not be easy to find, if you want matrix computations in C++, I recommend http://eigen.tuxfamily.org/ 10:45:37 I have used that one, maybe on your recommendation; I forgot. 10:46:53 regardless, my complaint is that "use arrays instead" doesn't give any hint as to changed operator semantics 10:47:38 -!- arseniiv has joined. 10:47:39 I guess you're supposed to infer that from "It has certain special operators, such as * (matrix multiplication) and ** (matrix power)." 10:47:42 But I didn't. 10:51:27 [[Talk:Mogus]] M https://esolangs.org/w/index.php?diff=87971&oldid=87939 * VilgotanL * (+222) 10:52:52 I may have come across this issue before and forgotten about it. 10:53:33 [[Talk:Mogus]] M https://esolangs.org/w/index.php?diff=87972&oldid=87971 * VilgotanL * (+12) 10:55:36 actually this whole experience would've been a lot better if numpy didn't allow me to write matrix * array expressions. 10:56:55 Because for the first half hour of debugging this I was quite unaware that I was juggling with two different types and getting into a huge mess because of that 10:57:47 [[Mogus]] M https://esolangs.org/w/index.php?diff=87973&oldid=87930 * VilgotanL * (+51) 11:02:20 "would be *far* more helpful" was never a consideration in pithon docs 11:09:11 int-e: I wasn't even aware that there was a "matrix" class in numpy 11:09:32 I don't think I ever constructed one; but then I haven't written my numpy code 11:09:42 I sort of have a love-hate relationship with numpy 11:10:06 it's well-written and well-known enough, but has too many odd quirks and irregularities\ 11:10:34 but at least it has a nice python interface, also a C API, and its indexes are 0-based. those alone make it better than most array libraries. 11:11:49 and designing a good easily usable numerical array library without odd quirks is a very hard problem, possibly impossible, possibly just not yet solved 11:29:28 [[Mogus]] M https://esolangs.org/w/index.php?diff=87974&oldid=87973 * VilgotanL * (+176) fix truth-machine 11:48:02 [[Mogus]] M https://esolangs.org/w/index.php?diff=87975&oldid=87974 * VilgotanL * (+123) add implementation 11:49:55 [[Talk:Mogus]] M https://esolangs.org/w/index.php?diff=87976&oldid=87972 * VilgotanL * (+203) update 11:52:50 [[Mogus]] M https://esolangs.org/w/index.php?diff=87977&oldid=87975 * VilgotanL * (+2507) add hello world 12:08:52 [[User:VilgotanL]] M https://esolangs.org/w/index.php?diff=87978&oldid=85328 * VilgotanL * (+12) add mogus to language list 12:33:12 [[🐢]] 12:33:13 https://esolangs.org/wiki/%F0%9F%90%A2 12:33:25 \wiki 🐢 12:33:26 🐢 is an esolang by VilgotanL created for an esojam in Truttle1's discord server, it uses an accumulator and a cell tape that can both hold unbounded integers. https://esolangs.org/wiki/%F0%9F%90%A2 12:41:47 [[Suscript]] N https://esolangs.org/w/index.php?oldid=87979 * VilgotanL * (+1383) Created page with "Suscript is a cell-based esolang by people in the amogus esolang crew, this page is a WIP. == Instructions == {| class="wikitable" |- | eject ''"string"'' || Pri..." 12:43:31 amogus esolang crew? 12:46:56 there is some alternative reality with Not applicable and other guys who make languages every week 12:56:52 [[Suscript]] M https://esolangs.org/w/index.php?diff=87980&oldid=87979 * VilgotanL * (+179) add computational class 13:03:20 -!- arseniiv has quit (Ping timeout: 265 seconds). 13:18:55 -!- velik has quit (Remote host closed the connection). 13:19:26 -!- velik has joined. 13:45:07 -!- hendursa1 has quit (Quit: hendursa1). 13:45:37 -!- hendursaga has joined. 13:50:31 -!- archenoth has joined. 13:51:58 -!- earendel has joined. 13:52:02 -!- sprock has quit (Ping timeout: 252 seconds). 13:54:00 wow this was long ago https://i.imgur.com/fTVRjAl.png 13:54:22 gonna reincarnate 14:12:54 -!- riv has quit (Quit: Leaving). 14:19:42 -!- riv has joined. 14:24:33 -!- Sgeo has joined. 14:41:19 -!- imode has joined. 15:01:35 -!- wib_jonas has quit (Quit: Client closed). 15:09:29 -!- riv has quit (Quit: Leaving). 15:43:43 [[List of complexity classes]] M https://esolangs.org/w/index.php?diff=87981&oldid=87267 * Corbin * (+1644) Add a section on L. 15:44:14 keegan: ^^^ Please LMK if this is headed in the right direction. I'm trying to be precise while not wasting words. 15:53:31 [[Special:Log/newusers]] create * G cat101 * New user account 15:56:48 [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=87982&oldid=87970 * G cat101 * (+154) 15:56:53 I also want to complain about touch screens; I don't like touch screen, and I think using a keyboard would be better 15:57:09 [[BuxRo]] M https://esolangs.org/w/index.php?diff=87983&oldid=58964 * G cat101 * (+0) fixed the typo 15:58:39 touchscreen keyboard? ..D 15:59:46 [[School]] https://esolangs.org/w/index.php?diff=87984&oldid=87926 * AceKiron * (-8818) Replaced content with "'''School''' is an [[esoteric programming language]] developed by [[User:AceKiron]], it originally started development on June 15th 2021, but has been deprecated. Later it..." 15:59:48 https://esolangs.org/wiki/An%20esoteric%20programming%20language%20(ess-oh-terr-ick),%20or%20esolang,%20is%20a%20computer%20programming%20language%20designed%20to%20experiment%20with%20weird%20ideas,%20to%20be%20hard%20to%20program%20in,%20or%20as%20a%20joke,%20rather%20than%20for%20practical%20use. https://esolangs.org/wiki/User:AceKiron 15:59:55 oops 16:00:04 time to implement the ignore 16:03:59 -!- arseniiv has joined. 16:06:11 -!- hanif has joined. 16:09:12 Corbin: looks like there's already a channel for esolangs https://www.youtube.com/playlist?list=PLO-PlVJRfGIVZuzu6e_0qOvqRnM_TdNye 16:10:32 hanif: Delightful! 16:24:01 int-e: I wasn't even aware that there was a "matrix" class in numpy => b_jonas: AFAIK today that class is just for backward compatibility, it’s suggested to use ndarrays all the way 16:24:55 there is some alternative reality with Not applicable and other guys who make languages every week => there is a discord server somewhere, there was a ton of people when I once checked what that was 16:25:06 @messages? 16:25:06 Sorry, no messages today. 16:25:09 -!- sprock has joined. 16:30:34 -!- Koen_ has joined. 16:46:45 -!- velik has quit (Remote host closed the connection). 16:47:16 -!- velik has joined. 16:48:54 [[Velik]] M https://esolangs.org/w/index.php?diff=87985&oldid=87958 * Nakilon * (-2) test [[the]] ignore 16:49:06 -!- hanif has quit (Ping timeout: 276 seconds). 16:52:09 the thumbnail for Whitespace video on that channel 16:53:28 -!- hanif has joined. 16:54:56 [[School]] https://esolangs.org/w/index.php?diff=87986&oldid=87984 * AceKiron * (+458) 17:12:23 -!- riv has joined. 17:29:07 -!- riv has quit (Quit: Leaving). 17:30:16 -!- riv has joined. 17:34:46 wtf *is* velik doing there... turn [[link]] into URL, fetch that URL, then turn that into an URL again? 17:38:35 [[]] isn't fetching 17:39:59 only searches to make full url 17:40:11 the \wiki is fetching 17:40:46 and makes url too because why not, the response already has text and you might want to read more 17:44:52 -!- benji has quit (Quit: ZNC - https://znc.in). 17:45:23 -!- benji has joined. 17:46:59 -!- benji has quit (Client Quit). 17:48:34 -!- benji has joined. 17:48:56 -!- pikhq has quit (Read error: Connection reset by peer). 17:48:56 -!- aarchi has quit (Read error: Connection reset by peer). 17:49:07 -!- faxlore has quit (Ping timeout: 252 seconds). 17:50:01 -!- benji has quit (Client Quit). 17:50:33 -!- faxlore has joined. 17:51:30 -!- pikhq has joined. 17:52:01 -!- benji has joined. 17:52:09 -!- hanif has quit (Ping timeout: 276 seconds). 17:52:29 -!- aarchi has joined. 17:55:33 nakilon: so how did that message trigger that particular result which evidently includes contents of [[esoteric programming language]]? 17:56:18 -!- sprock has quit (Ping timeout: 260 seconds). 17:58:42 that's not contents, that's URL of the article ..D 17:58:44 it's that long 17:59:35 because long name 18:00:49 probably needs category Unusable for programming btw 18:01:20 Huh. So that is a valid link... but why didn't it end up on the more obvious https://esolangs.org/wiki/Esoteric_programming_language? 18:02:28 hm, my IRC client does not include the trailing "." so if you click you don't hit the correct address 18:03:12 /shrug https://i.imgur.com/Wyye3Id.png 18:03:53 same with brainfuck -- wiki seems to dislike exact title match 18:09:50 -!- sprock has joined. 18:14:14 -!- hanif has joined. 18:19:32 i've had to resort to my search engine to search wikipedia several times 18:27:55 your search engine? 18:28:27 to find me the matching wikipedia article 18:28:45 -!- sprock has quit (Ping timeout: 260 seconds). 18:29:25 (mostly when i'm not bothered to spend effort in spelling correctly) 18:31:37 -!- sprock has joined. 18:31:52 "my search engine" is usually similar to "my car" 18:32:07 It's the one I use, it doesn't mean I built it. 18:32:18 -!- dyeplexer has quit (Remote host closed the connection). 18:33:25 -!- arseniiv has quit (Ping timeout: 260 seconds). 18:34:51 -!- arseniiv has joined. 18:43:57 Yeah, there was a similar thing where the first hit for https://esolangs.org/w/index.php?search=Brainfuck&title=Special%3ASearch&fulltext=1 is "Brainfuck/w/index.php?title=Talk:Brainfuck/index.php" (which again is a silly title rather than a piece of a URL). 18:44:22 [[JSInstruction]] https://esolangs.org/w/index.php?diff=87987&oldid=87968 * Dominicentek * (-55) 18:44:51 I think it might dislike exact matches in the results list because it has a separate dedicated message ("there is a page named X on this wiki") for those. 18:45:11 [[JSInstruction]] https://esolangs.org/w/index.php?diff=87988&oldid=87987 * Dominicentek * (-2) 18:45:31 I've no idea how it does ranking though. 18:54:32 I can make it select the one closest by levenshtein if this will happen a lot 18:55:43 the one of top 5 19:06:42 -!- hanif has quit (Remote host closed the connection). 19:10:30 -!- oerjan has joined. 19:29:53 -!- Koen_ has quit (Remote host closed the connection). 19:33:02 -!- Koen_ has joined. 19:40:37 -!- earendel has quit (Quit: Connection closed for inactivity). 19:46:04 -!- Koen_ has quit (Quit: Leaving...). 19:58:00 -!- sprock has quit (Ping timeout: 260 seconds). 20:05:18 Corbin: i suspect your definition of s,t-forest accessibility is wrong, because it looks like just s,t-connectivity, which is NL-complete. 20:05:48 (i don't know what the former _should_ be, unless it's just that the graph must be a forest.) 20:08:43 -!- sprock has joined. 20:11:09 hm, "The same problem for undirected graphs is called undirected s-t connectivity and was shown to be L-complete by Omer Reingold." 20:12:58 i may have known that already but almost forgotten 20:13:27 * oerjan never actually took a class on complexity theory, just picked up some here and there 20:17:46 Corbin: btw L and NL are also self-low. 20:20:36 also, one of my favorite facts about L is that showing arithmetic is in it has some surprisingly deep parts (division, base conversion, and multiplying lists of numbers) 20:21:09 (it's easy to show multiplying just two numbers is in L, or adding a list) 20:22:28 i think perhaps once you have those deep parts you can also do power series 20:22:50 so you should get trigonometry etc. as well 20:23:12 multiplying a list of numbers is in L? 20:23:13 wow 20:25:08 "my search engine" is usually similar to "my car" – Or, as some languages would have it, “my search engine”, not “my search engine”. 20:29:48 b_jonas: well, integers at least. i haven't thought carefully about floating point. 20:30:45 all of these deep things work via doing arithmetic modulo a heap of small primes... the hard part is converting that back to a number in normal format 20:31:34 easy in P (use chinese remainder theorem) 20:35:11 and the clue if i recall correct is to find out just how to _compare_ numbers in chinese remainder format. which i've forgotten the details of. 20:35:16 *correctly 20:36:33 also, much of this, perhaps all, works in the even lower complexity class TC^0. 20:36:58 (but i found it mindblowing enough to get L) 20:50:50 oerjan: sure, in P I can do it too, because you can multiply two numbers in linear time, so multiply a list of numbers in quadratic time 20:51:09 and you don't even need to know that youc an multiply two numbers in linear time for that 20:51:12 quadratic is enough 20:52:05 mhm 20:53:21 -!- src has joined. 20:53:28 hm a corollary of this is that you can do factorial in linear working space 20:53:47 (with write-only output not counted) 20:56:31 -!- sprock has quit (Ping timeout: 265 seconds). 20:58:21 -!- Lord_of_Life_ has joined. 20:58:50 -!- Lord_of_Life has quit (Ping timeout: 252 seconds). 20:59:37 -!- Lord_of_Life_ has changed nick to Lord_of_Life. 21:08:17 oerjan: I may have misread the 1986 paper I linked, but it showed s,t-connectivity for "forests", which includes both directed and undirected graphs. I am happy to learn that I've misunderstood. 21:36:10 `? zoo 21:36:12 zoo? ¯\(°​_o)/¯ 21:36:14 `? complexity zoo 21:36:16 complexity zoo? ¯\(°​_o)/¯ 21:36:21 fungot, what's the new link to it? 21:36:21 b_jonas: que se fnord!!" at http://paste.lisp.org/ display/ fnord 21:36:34 http://paste.lisp.org/display/fnord ? 21:38:36 Corbin: forests are by definition acyclic, unlike general graphs. also the directed version has an additional stipulation "outdegree zero or one". 21:39:36 (under "Given:") 21:43:42 also the cycle detection listed seems to be undirected 21:48:32 Corbin: however, it is a famous theorem (the one i quoted above) that general undirected graph connectivity is L-complete, which was not known yet at the time of that paper (UCONN in FL is listed as an open problem). 21:49:57 (by Omer Reingold) 21:57:19 oerjan: Hm, okay, thanks. 22:07:28 -!- oerjan has quit (Quit: Nite). 22:20:51 -!- sprock has joined. 22:28:22 -!- arseniiv has quit (Ping timeout: 252 seconds). 22:29:59 should I visit a fest tomorrow to take a selfie with 1 mln subs youtuber or should I stay at home keeping distancing 2021-09-11: 00:45:50 WDYT, if an IRC client send a periodic PING to avoid the dreaded "TCP connection was lost but the client has nothing to write" issue, should it bother to try to also verify the server responds with a corresponding PONG, or is that superfluous? It's definitely not necessary for the TCP thing, but hypothetically there might be a server that continues to speak TCP but not respond to commands. And 00:45:52 often it's used to estimate latency, but that's a different feature. 00:48:44 I check manually. I have the F2 key bound to PING and then I can see if PONG is received or not. (For automated IRC clients, it could check automatically) 00:50:21 Yes, this would be for an automaton. Just wondering if it's a failure mode that really needs worrying about, assuming I don't care about estimating the latency to try to jump servers if it's too high or w/e. 00:55:00 At least in my experience, if I try to PING and it isn't working, there will eventually be a connection error anyways. However, it might be worth checking after some (configurable) timeout anyways. 00:56:09 It has also happened to me that I was able to receive but not send. In this case, eventually the server will disconnect me due to a ping timeout. 00:56:16 What if it continues to speak TCP and respond to pings, but not to other commands? 00:57:09 Then I would think that the server is defective, probably. 00:57:47 I guess I could have it privmsg me to solve a CAPTCHA. But then what if the server sends that message to some other human who responds to it? 00:58:11 -!- chiselfuse has quit (Remote host closed the connection). 00:58:25 -!- chiselfuse has joined. 00:58:46 You can write a question that you do not expect anyone else to know the answer 01:31:14 -!- earendel has joined. 01:53:17 -!- dutch has joined. 05:27:01 fizzie I always thought client is exactly supposed to respond to PING with PONG, not just send periodic PING on their own 05:31:28 also if believe this line https://github.com/Nakilon/nakiircbot/blob/43bf3dfa932e78f19b656520d29629c9bf94c5bc/lib/nakiircbot.rb#L99 Quakenet used this command for measuring the latency too 05:33:34 I mean when I was making this comment I was reusing some old Quakenet bot that IIRC it had the timestamp parsing in it 05:33:57 but as it says in case of Libera there is just server name there 06:08:49 [[School]] https://esolangs.org/w/index.php?diff=87989&oldid=87986 * AceKiron * (+391) Added the PUSH and POP memory operants 07:54:15 [[Matrix (data structure)]] N https://esolangs.org/w/index.php?oldid=87990 * AceKiron * (+174) Created page with "A **matrix** is a data structure that can serve as an programming language's memory. The number of stacks may vary. Many languages have other methods of data storing as well." 07:54:27 [[Matrix (data structure)]] https://esolangs.org/w/index.php?diff=87991&oldid=87990 * AceKiron * (+3) 07:55:43 [[Matrix (data structure)]] https://esolangs.org/w/index.php?diff=87992&oldid=87991 * AceKiron * (+105) 07:56:17 fizzie: I check PONG replies anyway to know when the server has processed my previous commands, which I need to know to not send more commands to the server that fit in its buffer, or else it would quit me. 07:56:29 and at that point you probably want a timeout too 07:58:22 [[Category:Matrix-based]] N https://esolangs.org/w/index.php?oldid=87993 * AceKiron * (+181) Created page with "Languages primarily using one or more [[Matrix_(data_structure)|matrix]]s for storage. ==See also== * [[:Category:Queue-based]] * [[:Category:Stack-based]] Category:Langu..." 07:59:15 [[School]] https://esolangs.org/w/index.php?diff=87994&oldid=87989 * AceKiron * (+225) 07:59:58 [[Matrix (data structure)]] https://esolangs.org/w/index.php?diff=87995&oldid=87992 * AceKiron * (+10) 08:01:00 [[Matrix (data structure)]] https://esolangs.org/w/index.php?diff=87996&oldid=87995 * AceKiron * (+46) 08:06:20 -!- hendursa1 has joined. 08:08:51 -!- hendursaga has quit (Ping timeout: 276 seconds). 08:21:22 [[Matrix (data structure)]] https://esolangs.org/w/index.php?diff=87997&oldid=87996 * AceKiron * (+1) 08:47:39 [[Matrix (data structure)]] https://esolangs.org/w/index.php?diff=87998&oldid=87997 * AceKiron * (+64) 08:51:10 [[School]] https://esolangs.org/w/index.php?diff=87999&oldid=87994 * AceKiron * (-2) 09:05:37 -!- spruit11_ has quit (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.). 09:05:59 -!- spruit11 has joined. 09:31:40 -!- Koen_ has joined. 09:32:53 -!- Sgeo has quit (Read error: Connection reset by peer). 09:48:52 [[School]] https://esolangs.org/w/index.php?diff=88000&oldid=87999 * AceKiron * (+15) /* Memory operants */ 09:51:30 -!- Trieste_ has joined. 09:51:46 -!- Trieste has quit (Ping timeout: 240 seconds). 09:58:02 -!- Oshawott has joined. 10:01:31 -!- archenoth has quit (Ping timeout: 252 seconds). 11:04:25 [[Special:Log/newusers]] create * Bsoelch * New user account 11:20:40 -!- hanif has joined. 11:26:01 Yes, I mean, the client does need to respond to PING with a PONG, but that's a different thing. 11:30:30 does IRC need ping and pong? doesn't TCP already have this basically 11:34:04 TCP has an *optional* keepalive option. But I don't think it's very popular compared to application protocol heartbeats. 11:38:24 As for not sending too many things, I'm using a credit-based system (each byte costs so and so, some commands have an extra surcharge, the client gets credit at a fixed rate capped to some maximum value) to approximate that. That's what ircd (at least the real one, the one used at IRCnet) does on the server side. Of course it's not exactly exact due to network latency and so on, but it's been 11:38:26 working just fine. 11:40:23 On keepalive, IIRC the default timeouts tend to be huge (hours), and configurable only system-wide. 11:48:12 [[Meow]] https://esolangs.org/w/index.php?diff=88001&oldid=87959 * Martsadas * (+20) /* fixed mistakes*/ 11:49:14 [[Meow]] M https://esolangs.org/w/index.php?diff=88002&oldid=88001 * Martsadas * (+27) 12:15:51 -!- hanif has quit (Ping timeout: 276 seconds). 12:50:37 -!- earendel has quit (Quit: Connection closed for inactivity). 12:52:38 [[Matrix]] M https://esolangs.org/w/index.php?diff=88003&oldid=42721 * PythonshellDebugwindow * (+50) Confusion 12:52:48 [[Matrix (data structure)]] M https://esolangs.org/w/index.php?diff=88004&oldid=87998 * PythonshellDebugwindow * (+50) Confusion 12:52:57 [[Matrix (data structure)]] M https://esolangs.org/w/index.php?diff=88005&oldid=88004 * PythonshellDebugwindow * (-17) m 12:58:01 -!- hanif has joined. 13:12:27 -!- hendursa1 has quit (Quit: hendursa1). 13:12:53 -!- hendursaga has joined. 13:40:19 [[Special:Log/newusers]] create * 4gboframram * New user account 13:47:28 [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=88006&oldid=87982 * 4gboframram * (+184) /* Introductions */ 14:17:17 -!- delta23 has joined. 14:32:41 -!- Koen_ has quit (Remote host closed the connection). 14:33:22 -!- velik has quit (Remote host closed the connection). 14:34:00 -!- velik has joined. 14:40:11 -!- velik has quit (Remote host closed the connection). 14:40:29 -!- velik has joined. 14:41:55 -!- velik has quit (Remote host closed the connection). 14:42:13 -!- velik has joined. 14:45:28 -!- velik has quit (Remote host closed the connection). 14:47:31 -!- velik has joined. 15:03:05 -!- normsaa has joined. 15:03:22 https://pastebin.com/px6HUCLV how can this binary be decoded? 15:03:28 In any esoteric lang? 15:06:38 normsaa: Where did it come from? 15:07:14 Corbin A friend 15:07:30 He wrote it 15:09:46 Any ideas? 15:23:26 . o O ( it's too bad that the flag doesn't identify the CTF this is from ) 15:23:39 normsaa: tell your "friend" to solve the problem properly, by themselves. 15:39:04 Also tell your friend to fix the overlapping assignment, which probably breaks the script. 15:51:39 -!- hanif has quit (Ping timeout: 276 seconds). 15:56:32 -!- hanif has joined. 16:03:37 -!- Koen_ has joined. 16:11:38 riv: yes, IRC sort of requires PING and PONG for at least three reasons. some servers (not freenode, I haven't looked at libera yet) require that you send *one* pong after connecting, copying an unpredictable code from the PING that the server sends, as a sort of anti-spam measure. second, some servers, including freenode (again, haven't looked at libera yet) require that the client sends something 16:11:44 every five minutes, to ensure that it can drop clients that are disconnected. it ensures that clients do this by sending pings, you don't need to reply to those technically, but replying to pings is an easy way to satisfy this requirement. 16:14:38 thirdly, you can use pings for flow control. the way IRC works is that the server has a very small input buffer for each client, and if the client sends more than that input buffer over what the server has handled locally, it disconnects the client. the server handles commands for one client in series, so if you pay attention to local replies (replies from that server, not other servers), you can 16:14:44 sometimes tell how much the server handled, and so how full the queue is. but not all commands have local replies, or the local reply isn't always easy to identify, so sometimes you want to send a command just to force a local reply. the best command for that is a local PING (as opposed to a PING to a different server), since that does nothing but send you a reply. 16:20:54 -!- velik has quit (Remote host closed the connection). 16:21:23 -!- velik has joined. 16:22:00 -!- velik has quit (Remote host closed the connection). 16:22:17 -!- velik has joined. 16:23:59 int-e: wait, do you actually recognize what that is, or do you just know it's homework from what it looks like and how they simultaneously cross-post on multiple channels? 16:30:29 int-e: I was half-expecting doing a web search for the flag value would tell you where it's from (surely all of those have answers posted online?), but apparently it doesn't. 16:31:05 fizzie: yeah. which /could/ indicate that it's an ongoing one, or just that it's very obscure 16:31:27 "It looks like there aren't many great matches for your search. Tip: Try using words that might appear on the page that you’re looking for. For example, 'cake recipes' instead of 'how to make a cake'." 16:31:40 Mmm, cake. 16:32:57 . o ( glados instead of cake ) 16:38:06 google gave me this video https://www.youtube.com/watch?v=JMrd8PoxvPc, but the author doesn't do this challenge in the video 16:38:06 it's a piece of cake to bake a pretty cake 16:38:36 and the ctf site linked is dead and unarchived 16:44:25 normsaa 16:46:43 fizzie: there's technically a third, most unlikely case: that it's from a site like Advent of Code that gives every logged in user a different test input 16:59:58 -!- Koen_ has quit (Remote host closed the connection). 17:00:26 -!- j-bot has quit (Remote host closed the connection). 17:00:40 -!- j-bot has joined. 17:07:26 -!- oerjan has joined. 17:21:23 -!- arseniiv has joined. 17:30:35 -!- normsaa90 has joined. 17:33:15 -!- normsaa has quit (Ping timeout: 256 seconds). 17:36:23 -!- normsaa has joined. 17:39:29 -!- normsaa90 has quit (Ping timeout: 256 seconds). 17:40:12 -!- hanif has quit (Ping timeout: 276 seconds). 17:41:39 -!- normsaa91 has joined. 17:41:45 -!- normsaa has quit (Ping timeout: 256 seconds). 18:02:07 -!- immibis has quit (Remote host closed the connection). 18:05:43 -!- immibis has joined. 18:05:47 -!- Sgeo has joined. 18:12:21 -!- normsaa91 has quit (Ping timeout: 256 seconds). 18:14:59 -!- Guest81 has joined. 18:14:59 h 18:15:41 -!- Guest81 has quit (Client Quit). 18:16:02 -!- normsaa has joined. 18:31:02 "Site compatible with IE 10 or above, Mozila [sic], ..." is probably not a good sign. 18:33:30 ow 18:34:14 `? tlwtnt 18:34:17 tlwtnt? ¯\(°​_o)/¯ 18:34:30 ow! 18:37:04 \wp ow 18:37:06 OW -- Wikimedia disambiguation page https://en.wikipedia.org/wiki/OW 18:38:23 looks like sometimes there is a default page and sometimes not 18:38:53 fizzie: does it also have a link to where you can download Acrobat Reader to view their PDFs and the Java and Adobe Flash plugins, without mentioning Oracle for Java? 18:39:31 also do they recommend at an least 256 color and at least 1024x768 pixel resolution display for best view? 18:40:54 very long ago I made a script to say "best viewed with Mozilla" or "best viewed with Internet Explorer", always the other one than the viewer is using 18:41:19 lol 18:41:49 b_jonas do you know who chukchas are? 18:41:59 no 18:42:22 ethnic Siberians who live deep in tundra with deers 18:42:27 there is a joke 18:43:02 b_jonas: What will do if neither is use? 18:43:22 smth like: "to keep chukcha busy give him a paper with 'read on the other side' written on both sides" 18:43:31 b_jonas: lol, evil 18:44:40 \wp chukcha 18:44:42 Chukchi people -- ethnic group https://en.wikipedia.org/wiki/Chukchi_people 18:45:21 oh, even not Siberia 18:51:00 zzo38: one of them was the default. I don't remember which. 18:52:19 It didn't have those other things. Maybe it would have elsewhere on the site. 18:57:13 [[School]] https://esolangs.org/w/index.php?diff=88007&oldid=88000 * AceKiron * (-80) 19:00:25 -!- ais523 has joined. 19:01:08 I think the reason why some servers ping during connection, and don't connect until they receive a matching pong, is to prevent non-IRC-related programs being tricked into connecting to IRC 19:01:33 if your ircd ignores invalid commands (and many do), it isn't hard to put a segment of valid IRC commands in the middle of, say, an HTTP POST request 19:01:39 that is a good reason but only requires one PING right at the start 19:01:55 I remember a spam attack on Freenode that worked by exactly that mechanism 19:02:01 so you can create a web page with a script that causes the viewers to spam IRC, and this has been used to create IRC worms in the past 19:02:21 it would POST a set of IRC commands that cause the user to join a bunch of channels and spam them with the URL of the page 19:02:24 right 19:02:25 pretty funny really 19:02:43 HAMRADIO 19:02:50 Postel's Law sounds good but is absolutely terrible for security 19:03:05 Postel's Law is bad 19:03:14 also bad for long term maintainability 19:03:22 i remember that spam attack, that was funny 19:03:34 \wp Postel's Law 19:03:35 robustness principle -- design guideline for software that states: "be conservative in what you do, be liberal in what you accept from others" https://en.wikipedia.org/wiki/Robustness_principle 19:05:54 as users expect the "best guess" behavior of implementations will continue working forever 19:06:11 leading to the codification of insanely complex behavior as exemplified by the WHATWG HTML spec 19:06:48 I do actually like what that HTML spec has done, though 19:07:06 because it means that there are now set boundaries for exactly what you are and aren't allowed to do in HTML 19:07:13 right 19:07:29 it's a regrettable necessity based on the early days of the web being dominated by ad hoc systems and postel's law 19:07:34 it is Postellish in some respects, too, e.g. saying that web pages must be in UTF-8 but giving long complicated instructions for what to do if they aren't 19:08:46 -!- arseniiv has quit (Ping timeout: 260 seconds). 19:09:45 actually, one related problem I've been having recently, which may be unsolvably difficult, and Stack Overflow has not been helpful: 19:10:06 given a URL, which characters in it can be safely percent-decoded without changing the meaning of the URL 19:10:10 ? 19:11:42 I'm trying to write an HTML sanitizer and would prefer to avoid allowing people to put obfuscated URLs through it, but it's so hard to figure out the rules for what will and what won't work 19:12:28 generate string of all chars and escape it with some very common library used for that need 19:12:35 to see what chars it will process 19:14:10 nakilon: that basically means assuming that the library is correct, which it probably won't be 19:14:15 pretty sure all libraries will process different set of chars ) 19:14:28 there is probably no correct library 19:14:32 that said, I have been trying various test strings on various browsers and one httpd, to see what happens 19:14:46 maybe some Chrome is implemented "correctly" but it won't provide a library 19:14:50 (testing a wide range of httpds would be frustrating) 19:15:22 one thing I did learn throughout all this is that the URL path component %2e%2e is in fact equivalent to .. and will cancel out the previous component 19:15:38 which seems like an unwise decision from a security point of view, that's just asking for path traversal vulnerabilities 19:15:43 also the possible achievable "correctness" of your tool is limited by how correct the servers are 19:16:01 many of them work differently about URL escaping 19:16:13 right 19:16:30 I think the only real option here is to have a parameter for what sort of dubious-looking escapings the user wants to exclude 19:16:37 also additional rules and bugs in redirects 19:22:08 teaching velik wolfram alpha, somehow it took the whole day to make 10 tests, and it's only a piece of Math examples; there are three other topics, maybe I'll make most of them tomorrow 19:32:17 ais523: "prevent non-IRC-related programs being tricked into connecting to IRC" => yes, that might be part of the reason. 19:33:46 "avoid allowing people to put obfuscated URLs through it" => yeah, that's probably impossible 20:13:55 Normally I don't pay *that* much attention to update sizes, but now updating blender wants to install "libembree3-3" that will take half a gigabyte of disk. 20:15:45 that's a pretty big library! 20:16:18 b_jonas: it just seems so wrong to let people post arbitrary URLs on, say, forums or the like, when you're supposed to be sanitising the content 20:16:40 "Intel® Embree is a collection of high performance ray tracing kernels that helps graphics application engineers to improve the performance of their photorealistic rendering application." I feel like they've probably got versions specifically tuned for a bazillion different (Intel) CPU models. 20:18:21 Heh, it's a single 485223648-byte .so file. 20:18:47 ais523: I'm not sure I see why, except for the part where you might sanitize the protocol part (the part before the first colon) and add a max length 20:19:43 fizzie: I suspect that you only need around eight different versions of your code to get peak performance on all 64-bit Intel CPUs 20:19:49 ais523: though most of the time you'd probably throw in that HTML attribute that hints to search engines that this is a link by a third party submission and the search engine shouldn't think your site is deliberately linking to kiddy porn 20:20:02 and maybe another four or five more for AMD 20:20:22 b_jonas: I've already been looking through the list of rel= attributes 20:20:27 it won't take away all the responsibility about what links you host, but you can't generally fix that by just looking at the URL 20:20:42 I think probably at least nofollow and noreferrer should be in there for external links by default 20:21:17 you absolutely want to whitelist protocols though because of javascript: links though 20:21:21 although noreferrer is interesting because you can also set an HTTP header that tells the browser to noreferrer everything 20:21:40 I explicitly turned it off on my website (as in, I outright said in the headers that I know this header exists and I'm choosing not to use it), which makes some security checkers really annoyed 20:22:00 lol "only need around eight different versions of your code to get peak performance on all 64-bit Intel CPUs" 20:22:13 b_jonas: I mean that there isn't a combinatorial explosion 20:22:32 and then you want AMD and code running on GPU and a port for ARM64 etc 20:22:56 ais523: yes, that's because it's really hard to make CPUs so there are only two or three companies making x86 cpus at a time 20:23:07 . o O ( rel=dontclickfortheloveofgod ) 20:23:08 although, in practice nowadays, I think you can get decent performance for CPU-bound code by writing a post-AVX2 version for most people, and a pre-AVX2 version (aiming for maximum compatibility) for people who are running on really old computers 20:23:22 and they mostly develop at most three lines of them in parallel each 20:23:33 one expensive, one home, and one low-power laptop one 20:23:34 optimising for AMD does seem to be significantly different from optimising for Intel, though 20:24:01 in particular, if the program isn't memory-bound, the next most relevant bottleneck on Intel is normally instruction dispatch, whereas on AMD it's usually something else 20:24:07 ais523: and more importantly, you only need to make different versions of a few performance-critical functions, not everything in your code 20:25:01 there might still be a combinatorial explosion if you want versions of your code that differ in ways other than the CPU hardware 20:25:09 I came up against this in the fizzbuzz I've been writing over the last year or so 20:25:40 I want to read a vector from memory, then do two instructions with that vector as one argument and a vector in a register as a second argument 20:25:52 how is the fizzbuzz coming?? 20:25:54 on Intel, it's optimal to read the vector from memory twice 20:26:08 on AMD, you want to read it into a register and then use it from there 20:26:33 this is because Intel is bottlenecked on instruction decode so simply using fewer instructions is a gain, the L1 cache can handle the second read 20:26:53 Well, yes. It is a C++ project. It's possible there's a combinatorial explosion of templates instead. There isn't that much code in terms of source code lexically. 20:27:00 on AMD the instruction decode is faster but the L1 cache has less bandwidth, so you can spare an extra instruction to read into a register to spare the cache bandwidth 20:27:10 ais523: that might change for future AMD cpus... 20:27:16 riv: I think I have a plan, the issue is just finding the time to write this code 20:27:46 b_jonas: it's possible, but AMD seem to have been going down the path of using hyperthreading to make use of the extra instruction dispatch capability 20:28:05 (sorry, I meant dispatch not decode, AMD is bottlenecked on decode too but that only matters if you aren't in a loop because of the µop cache) 20:28:22 that said, I agree that bottlenecking on either memory access or instruction dispatch is typical these days, the execution times don't matter as much, unless you are specifically writing matrix multiplication inner loops or things like that 20:29:08 even matrix multiplication is bottlenecked on memory access, most of the fast techniques for it are based on trying to avoid cache spills 20:30:05 ais523: yes, so it's only the inner loops where you actually have to care about the execution times of these floating point multiplication-add instructions. 20:30:22 it's hard to think of something that wouldn't bottleneck on memory access – maybe things like prime factorization, or pathfinding 20:31:00 b_jonas: oh, fused multiply-adds are fast, but that doesn't really matter, they're more beneficial in terms of accuracy than they are in terms of speed 20:31:35 multiply then add is 2 cycles latency, fused multiply-add is 1 cycle latency, and they both have enormous throughput (values correct for recent Intel and also recent AMD) 20:33:55 ais523: yes, the current CPUs are so optimized for that that you basically can't run out of multiplication units. I remember there was a time when the CPU was better at fused multiply-add than additions 20:34:25 integer additions do actually beat all the floating-point stuff on most modern CPUs, though 20:35:02 on Intel, this is primarily because the execution unit that handles jumps and branches can be used to do integer additions/subtractions if it isn't needed for the jump 20:35:13 ais523: while floating point multiplications beat integer multiplications, yes 20:35:19 (because it can handle fused compare-jump, fused subtract-jump, and friends) 20:35:38 and yes, floating point multiplication performance is better than integer multiplication (although normally not that much better) 20:35:45 only 64-bit ones though, because the mantissa is bigger 20:35:54 Intel actually has two different floating point multipliers with different performance characterstics 20:36:04 one has higher throughput, the other lower latency 20:36:36 ais523: used for the same instructions? I didn't know that 20:36:38 actually, the main throughput bottleneck I tend to hit is vector shuffles 20:36:49 b_jonas: I think they're mostly used for different instructions 20:37:05 Intel normally has only one vector shuffler, it's fast but you can only use it once per cycle 20:37:14 and lots of useful instructions fall into the "vector shuffle" group 20:37:43 yeah 20:38:30 there's also the infamous lane-crossing penalty (especially on AMD, but I think it affects Intel too) 20:39:15 where it costs something like 3 cycles to do anything that combines the top half of a register and the bottom half of the register, when the register is "sufficiently large" (normally a recently introduced vector size) 20:39:58 this is why lots of vector instructions are incapable of mixing the top and bottom half of a YMM register, they're instead basically designed as two XMM instructions in SIMD (even if they aren't normally SIMD instrucitons) 20:40:24 ais523: yeah 20:41:35 -!- arseniiv has joined. 20:42:04 VPSHUFB for ymm registers specifically 20:42:50 that was the example I was going to use 20:43:17 I am following this because AVX2 is now available on lots of CPUs 20:43:38 and there's an annoying lack of backwards compatibility, too – even if Intel or AMD figure out how to make five bits of the index useful, they won't be able to make their VPSHUFB instructions actually handle them 20:43:41 (including my new home computer) 20:43:43 because it would break backwards compatibility 20:43:53 I've had an AVX2-capable computer for a few years now 20:44:56 ais523: they just add a new instruction for that. they're adding lots of new vector instructions all the time anyway. 20:45:30 but what do they even name it? 20:45:33 VPSHUFB5? 20:45:41 no, I think it's VPERMsomething 20:45:44 rather than SHUF 20:45:46 (with a VPSHUFB6 coming in a few years after AVX-512 is more mature?) 20:45:49 it already exists 20:45:53 or so I think 20:46:00 let me look it up, I think it's later than AVX2 20:46:00 oh, the PERM stuff normally has worse granularity than SHUF, this will be confusing 20:46:38 no, there is now a VPERMB that is a full byte level shuffle even on a zmm register 20:46:47 the lower granularity was a thing of the past 20:47:08 knowing how AVX-512 is going, this is likely to have been specified by Intel but not actually implemented by anything 20:47:08 well, thing of the past that's still in many CPUs that we're using now 20:47:10 but you know 20:47:15 very long ago I made a script to say "best viewed with Mozilla" or "best viewed with Internet Explorer", always the other one than the viewer is using => rofl oh my 20:47:24 there's a lot of AVX-512 which was specified but with no implementations 20:47:34 ais523: quite possible. 20:48:28 this may end up leading to another FMA3/FMA4 debacle some time in the future 20:48:52 ais523: there's even a VPERMI2B instruction to byte level permute *two* zmm registers 20:48:59 (FMA got specified prior to being implemented, with Intel and AMD proposing different plans; each then implemented the *other's* specification, leaving them incompatible) 20:49:00 which means 128 slots 20:49:08 wait what? 20:49:14 each implemented only the other's specification? 20:49:15 I think AMD implemented Intel's specification because they wanted to be compatible 20:49:18 I didn't follow that 20:49:26 I know they implemented incompatible stuff 20:49:30 but I didn't know they swapped 20:49:32 and Intel implemented AMD's specification because they couldn't get their own to work, it needed too much internal rearchitecturing 20:49:34 that is odd 20:49:44 wow 20:49:49 (presumably this is why AMD came up with their version in the first place, it would be easier to implement) 20:49:57 but 3DNow was AMD's specification that was never in Intel, right? 20:50:08 b_jonas: yes, although a couple of 3DNow commands survived 20:50:34 admittedly, SSE is much better-designed than 3DNow was, although both are dubious in terms of encoding 20:51:07 I never really looked into the details of what 3DNow does. it was obsolete by the time I could have cared. 20:51:31 we already had SSE4.1 by the time I started to care about SIMD instruction stuff 20:52:00 b_jonas: think SSE with 64-bit-wide vectors 20:52:17 no, that's MMX 20:52:24 well, not quite 20:52:27 I thought MMX wasn't vectorised at all 20:52:37 3DNow is, as long as you want a pair of single-precision floats 20:53:17 it was the first vector unit; it simply just wasn't a very good one 20:53:25 MMX has the drawback that it shares state with the FPU, and you have to do a slow switch of the FPU between MMX and traditional mode each time you want to use it, since the existing ABI expects the FPU to be in non-MMX mode 20:53:50 MMX is "vectorized" in that it can handle two 32-bit floats in a 64-bit register 20:54:11 hmm, maybe I got them muddled then 20:54:20 but two floats per register is still a big help 20:54:21 or maybe 3DNow uses the MMX registers for its vectors 20:54:39 it also handles packed integers 20:54:52 https://en.wikipedia.org/wiki/3DNow! 20:55:02 no, I'm wrong 20:55:03 right, 3DNow! seems to be an extension to use the MMX registers as vector registers 20:55:14 apparently MMX *only* handles integers 20:55:31 that's even more useful 20:56:23 oh, so MMX does int vectorisation and 3DNow! does float vectorisation? 20:56:25 I know these days MMX is only useful to get a few extra registers that you can sometimes access with shorter encodings than anything in the later instruction sets, and basically never worth to use 20:56:49 I have no idea what 3DNow does 20:56:55 I'm actually vaguely surprised that MMX didn't become the standard for non-vectorised floating point 20:57:15 ais523: what do you mean "the standard"? 20:57:23 it is saner than x87, and supported by all 64-bit CPUs 20:57:27 b_jonas: in the ABI 20:57:54 like, the ABI passes floats in MMX registers, assumes MMX mode at call boundaries, and the like 20:58:05 ais523: which ABI? we can't change the x86_32 ABI, it's too late for that, and x86_64 comes with always SSE2 so by that time the point is moot 20:58:17 b_jonas: x86_64 20:58:19 also if MMX only handles integers then that can't work 20:58:34 no, MMX definitely does floats 20:58:55 -!- Lord_of_Life has quit (Ping timeout: 260 seconds). 20:58:59 no, I'm wrong 20:59:01 it doesn't do floats, only ints 20:59:07 that's why people don't use it for float maths :-) 20:59:19 -!- Lord_of_Life has joined. 20:59:39 ais523: also SSE2 is the standard for passing floats in the x86_64 ABI, and that's a good thing 21:00:02 because with SSE2 there, MMX is almost never useful 21:00:21 and SSE2 adds advantages, both wider vectors and a better instruction set 21:00:23 so it looks like we have three sets of registers: integer; x87/MMX/3DNow!; and XMM/YMM/ZMM 21:00:35 oh, 3DNow also uses the x87 registers? 21:00:43 (also random special-purpose stuff like flags, but I'm not counting those) 21:00:45 b_jonas: right 21:00:56 also (sigh) we also have AVX512 mask registers. 21:01:21 on AVX512-capable CPUs that is 21:01:29 x87 interprets the registers as one of three float formats (long double, plus formats which are almost but not quite the same as float and double); MMX as 64-bit integer vectors; and 3DNow! always as two floats 21:01:43 b_jonas: to be fair those are really helpful for some applications 21:02:42 ais523: no, x87 specifically stores 80-bit floats, not long doubles. there's a difference because long double is 64-bit floats in the MSVC ABI 21:03:08 well, yes, but they're what has been known as "long double" for ages on Intellish processors 21:03:23 but they got deprecated with the change to 64-bit 21:03:40 because SSE2 handles 64-bit floats, yes 21:05:43 [[Cabra]] M https://esolangs.org/w/index.php?diff=88008&oldid=81202 * PythonshellDebugwindow * (+0) /* Language Definition */ Fix typo 21:05:46 Wikipedia says that 3DNow! invented SFENCE 21:05:47 wtf there's a KADDBB/KADDW/KADDD/KADDQ AVX512 instruction? I never noticed that 21:06:30 ais523: I admit I don't follow how the fence instructions work. I leave them to slightly higher level libraries. 21:06:31 but that seems unlikely to me, because my understanding of the x86 memory model is that an SFENCE is only useful with non-temporal writes or write-combining memory, and I didn't think those were implemented at that point 21:07:00 b_jonas: I can describe the general (non-x86-specific) implementation fairly easily 21:07:15 imagine loads and stores as not happening instantly, but being spread out over time 21:07:46 an lfence stops a load crossing it (it has to happen entirely before if it's before the lfence, or entirely after if it's after the lfence) 21:07:51 likewise, an sfence stops a store crossing it 21:08:13 I think PPC conventionally has a double-double as its `long double` type. 21:08:44 if one thread is storing two pieces of data, and another thread is loading them, then you need to sfence between the stores and lfence between the loads if you want to prevent the loading thread seeing the new value of the second store, but the old value of the first store 21:09:45 spread out over time how? you mean they happen at different times to different layers of the cache hierarchy, going down the hierarchy if either the smaller caches need to free up space or to make the value known to other CPUs? 21:10:14 b_jonas: imagine that you send a "request to write memory" but then continue executing before the request has been handled 21:10:20 and let the motherboard respond to the request at some later time 21:10:21 ais523: "stops a load crossing it" at what levels of the hierarchy? 21:11:01 it's a logical rather than physical barrier, it's not bound to a specific level of hierarchy 21:11:08 so you have to match an lfence on one thread with an sfence on another 21:11:11 ok 21:11:32 I still think I don't need to know the details of this, what I do need to know is the atomic and mutex abstractions over them that libraries provide me 21:11:50 on x86-64 specifically I think it's handled as part of the cache coherency mechanism 21:11:56 because I don't think I write inter-thread (or inter-process) communication code that is at a lower level than those 21:12:09 right 21:12:34 nor CPU-level code that handles memory mapped to the video card or other memory-mapped IO 21:12:43 one way to think about it is that sfence is one of the two main mechanisms for implementing the "release" atomic ordering, and lfence is one of the two main mechanisms for implementing the "acquire" atomic ordering 21:13:20 atomic release is sfence then write; atomic acquire is read then lfence 21:14:03 only, x86 has extra guarantees that most processors don't, so sfence is usually a no-op and I think many atomic libraries leave it out there on x86-64 (even though they would use it on other processors) 21:14:18 (lfence is not a no-op, though, and is important in atomic code) 21:15:19 and as far as I understand, the compilers need to know about both fences and atomics, because they have a meaning not only on the CPU level, but for what the optimizer isn't allowed to do, and current compilers indeed do this. (in contrast, I think the compiler needn't know about mutexes directly.) 21:16:22 the compiler does need to know about the acquire/release rules on mutexes, but either it can see the atomic read/write in the function, or else it can't see anything at all and thus has to assume the worst 21:16:51 oh, this reminded me of a weird case of wanting a compiler barrier specifically 21:17:13 yes, the fast (non-contented) cases mutex functions must be fast so the optimizer will see into the functions when necessary 21:17:19 s/cases/cases of/ 21:17:21 the idea would be in functions that undropped permissions, did a system call with checks, then dropped them again 21:17:43 to do the checks with permissions raised, and to compiler-barrier to ensure that the undropping is done before the checks 21:18:01 this sounds like it violates the least-permissions principle, but the point is to protect the checks from return-oriented programming 21:18:11 in order to get permission to do the system call, the code would need to run through the checks too 21:18:46 ais523: what kind of permission checks? aren't those undropping, permission checking, and dropping three system calls, and the compiler already mustn't reorder system calls? 21:19:01 it also reminds me of something similar by the way 21:19:29 b_jonas: say, you want an mprotect() wrapper that checks that you aren't making anything executable if it was previously nonexecutable 21:19:55 ais523: ah, so by permission checking you just mean accessing memory that may or may not have read/write/execute permissions? 21:20:07 hmm, that might be difficult 21:20:18 I didn't mean permission checking, just checking in general 21:20:42 but even so, can't a system call basically write anything to anywhere in your user memory, so you usually can't reorder memory accesses around them anyway? 21:21:11 oh, that's interesting – the point being that compilers wouldn't optimise system calls anyway due to not knowing what they do? 21:21:30 ais523: yes, except maybe a few specific system calls of which they know the meaning 21:21:51 there are system calls like pread that can write even to memory that you didn't pass a pointer to to the system call 21:21:58 I know there are some functions that can system call, and that the compiler treats specially 21:22:01 malloc, for example 21:22:30 -!- delta23 has quit (Quit: Leaving). 21:23:07 no, not pread, sorry. 21:23:15 preadv 21:24:35 preadv can write anywhere, and a compiler has to assume that an unknown system call can do things worse than that 21:24:53 preadv seems so specific 21:25:18 I can see why it could be useful – it saves the overhead of making multiple system calls when you want to do that operation specifically – but I'm unclear on how common that particular operation would be 21:25:25 it's specific in that it's a particularly badly behaving system call, that's why I'm giving it here as an example 21:25:37 most system calls are tamer than that, but the compiler can't easily rely on that 21:26:14 I meant, I was thinking on a different line of thought when you mentioned preadv 21:26:25 like, what was the motivation behind adding that to the kernel? who needed it, and what do they do with it? 21:26:52 I don't really know. 21:27:21 99% of programs would just read into a large buffer and then copy the data into the appropriate final locations, rather than spending time coming up with a big description for preadv 21:27:29 although, preadv is faster because it reduces cache pressure 21:28:21 I think it might be there because they wanted to get asynchronious regular file reading to work, which turned out quite hard and they're still struggling with it, but anyway the interface of the async reading allows similar scatter-gather read because it has to allow multiple reads at the same time, so they added a normal non-async interface at that point 21:29:03 but maybe someone just used a cyclical buffer and wanted to micro-optimize the number of system calls, since the context change for system calls used to be slower than now 21:29:19 preadv is very old, you have to remember that 21:29:25 so it can have some odd historical reason 21:29:33 …now I'm wondering if preadv is faster than mmap + memcpy 21:29:47 it could be, I guess? because the physical memory you mmap into has to be cached 21:31:24 ais523: yeah, look, the manpage says "these system calls first appeared in 4.2BSD" 21:31:34 so old it's hard to speculate about it 21:32:55 ais523: readv is older than pread if the system call numbering can be believed 21:33:25 b_jonas: while searching about uses of preadv, I found some mailing list archive mentions which implied that readv was newer 21:33:31 -!- oerjan has quit (Quit: Nite). 21:37:26 ais523: anyway, what this reminded me of is the SSE floating point control word. these control the rounding mode, the exception mask, and two bits to change denormal inputs and results to zero in floating point instructions because those denormals would cause a big slowdown on certain CPUs. anyway, the compiler *should* know about the semantics of the SSE floating point control word to the extent that 21:37:32 it's not allowed to reorder floating point arithmetic around changing the control word, but current compilers don't yet know this, so it's not quite clear how you can write to the floating point control in a useful way without potential undefined behavior. 21:37:46 the situation is similar to the atomic operations back when multithreading was new and compilers didn't yet know much about it 21:38:02 or when SMP was new. 21:39:49 what's the performance of changing the floating-point control word like? 21:39:57 I can easily imagine algorithms which want to change it a lot 21:40:20 and no, you can't just change the floating point control word in a non-inlinable function, partly because the ABI says that the rounding mode etc has to be in its default state between function calls, and more importantly because the compiler is normally allowed to reorder a floating point operation around an unknown function call. 21:40:34 IIRC AVX-512 dedicates a couple of bits of the instruction to override parts of the FPU control word 21:41:17 fwiw, on gcc you could probably get away with an asm voltatile that takes the results of previous FPU instructions and inputs of subsequent FPU instructions as read-write parameters and then doesn't change them 21:41:38 would be annoying to write, but gcc would be forced to put the control-word-changing operation in the right place 21:41:49 ais523: there are two cases when you want to change the floating point control word a lot. one is if you want to use a non-default floating point control word, but also do function calls or returns to code that you don't control since technically you have to restore the default control word because any library function is allowed to do floating instructions; the other is interval arithmetic which can 21:41:55 change the rounding mode a lot 21:42:09 ais523: but more likely you just want to change the control word once, then do a lot of float operations 21:43:35 well, admittedly there's a third case, if you want to read the exception flags and have to reset them for that reason 21:43:45 I was thinking of interval arithmetic 21:43:52 exception flags might also be relevant in some algorithms 21:44:13 and I don't know about what performance writing the control word has, I'm mostly concerned about cases when that doesn't matter 21:50:07 apparently you can get slowdowns for denormal results in both Intel and AMD, and the optimization manuals for the two brands detail when these can and can't happen and what you should do about them 21:50:35 the actual rules do differ between Intel and AMD, at least for some of their CPUs 21:52:15 I think for many float operations, denormals are emulated in firmware rather than having dedicated hardware 21:52:19 so the performance is terrible 21:52:58 ais523: that's the gist of it, but the details are complicated. not all instructions with a denormal input or output give a slowdown. 21:53:24 that's why there's an optimization manual 21:53:30 I don't claim to really understand the rules 21:53:55 -!- normsaa has quit (Ping timeout: 256 seconds). 21:53:57 I just have to know where to look if this becomes important 21:54:27 fungot, does a circle have no end? 21:54:28 b_jonas: yeah you said that geographic location has to do with the code than by using only the functional aspects of scheme systems support arbitrary-size vectors... 22:16:19 fungot: alright, but at least it should have a coend, does it? (I don’t know what a coend is, that’s something from category theory) 22:16:20 arseniiv: for example because it pollutes the default namespace 22:17:31 hm that’s a bit too philosophical 22:18:55 fungot: What is a coend but a colimit over a bifunctor? 22:18:56 Corbin: i suppose fnord is the original? 22:19:21 fungot: Bi-fnord-tor? 22:19:21 Corbin: no, he refuses to give me access to your harddrive.) 22:20:36 fungot always tries to fool you with words when you ask significant questions 22:20:36 arseniiv: even the ' web-sivu' in the xvid format... would it be for me making return values in your helper function seem to always be using fd3 itself, though 22:21:31 fungot: at least tell me this: xvid or divx? 22:21:31 arseniiv: what, thin and unnecessarily bendy? and!... but is that what you recorded was to later evaluate ( quux zot) 22:21:54 exactly as I said, no definite answer :′( 22:23:54 > fix fungot 22:23:54 arseniiv: what with my poor grammar and ' be's all over the state. so you can do 22:23:55 *Exception: Can't be done 22:36:08 -!- Cale has quit (Remote host closed the connection). 22:38:37 -!- Cale has joined. 22:39:16 -!- chiselfuse has quit (Write error: Connection reset by peer). 22:39:16 -!- hendursaga has quit (Write error: Connection reset by peer). 23:46:08 [[Esolang:Sandbox]] M https://esolangs.org/w/index.php?diff=88009&oldid=87590 * PythonshellDebugwindow * (+18) rd 23:46:38 [[Esolang:Sandbox]] M https://esolangs.org/w/index.php?diff=88010&oldid=88009 * PythonshellDebugwindow * (+1) Rd 23:46:51 [[Esolang:Sandbox]] M https://esolangs.org/w/index.php?diff=88011&oldid=88010 * PythonshellDebugwindow * (+1) : 2021-09-12: 00:10:15 -!- arseniiv has quit (Ping timeout: 260 seconds). 00:22:49 -!- normsaa has joined. 00:35:55 -!- src has quit (Ping timeout: 260 seconds). 01:00:18 Is Tom7 interested in Free Hero Mesh now that bizarro is implemented? Someone told me that it is, but I don't really know. (Maybe, should also be implemented changing execution order of objects (like, I think, Tom7 did), but that might be difficult to know how to do it properly) 01:03:03 what is bizarro 01:03:54 The bizarro world is another grid of objects which is normally invisible and intangible, but is still affected by most turn-based actions 01:07:35 dunno, you'll have to ask him. he has an email. 01:07:47 and a blog with comment forms. 01:07:59 OK. I looked and I found two different email addresses. 01:10:32 But, I will try. 02:04:35 in git, how do you list the refs of a remote repo? 02:06:07 b_jonas: does "git branch -v --remote" do what you want? 02:17:31 ais523: no, that only shows the local tags created that follow the remote tags. but (git ls-remote) does work. 02:18:58 ais523: the context is that I was trying to pull from a git repo that renamed its master branch to main, and didn't leave master even as a synonym, but I still have a local remotes/origin/main reference. so I wanted git to list remote refs to make sure that indeed, master doesn't exist on the remote. 02:19:11 *sigh* 02:23:12 the "master" nonsense started out sanely, with only the fancy web interface on github localizing "master" to "main", and using "main" as the branch name in repos if you create one with their fancy GUI tool. they don't need to touch actual branch names, because that would break compatibility, and the kind of people who don't understand that won't see the real branch names because they don't type (git 02:23:18 lsref) or anything in the command-line, they just look at the github frontpage or something. 02:23:36 but no, at least one repository actually has the existing branch name deleted now. how did we get to this? 02:24:54 immibis: ok, you were right 02:24:56 um 02:24:58 int-e: you were right 02:25:20 and it sounds like it's from one of those puzzle/contest sites, not from coursework homework 02:25:36 fwiw, I think it makes the most sense to name the primary branch after the project 02:26:37 I don't care what you name the branch, I only care when it's renamed in an existing public repo with no synonym left 02:30:01 (I also found another repo that did a non-fastforward change to their master 02:32:36 What I read is that git doesn't care about the branch name (except that it creates the "master" branch by default). But, you might want to use other branch names in any system, one reason being due to converting it, e.g. fossil<->git, since fossil uses name "trunk" by default, but again it doesn't care the branch name you can use other names. 02:34:00 (Fossil also has propagating tags too, so you can reference a range of commits using a name of any tag and you can have more than one. The branch name is also a tag, so that can also be used.) 02:35:33 what I don't know is how git knows which branch is the default? when I clone a repo, I don't explicitly tell it to check out the master branch, it decides that on its own. 02:35:41 is there something in the config that tells that? 02:37:41 Does anything but Subversion use that model where you just have one big tree, and it's just a convention that you create top-level directories "trunk", "tags" and "branches" under the root, and make copies of all your code in them? 02:38:07 hmm... I think git checks out the HEAD of the remote 02:39:00 fizzie: no idea, ask someone who uses mercurial, they have like three or four different branch mechanisms so perhaps one of them is that 02:39:11 :-/ 02:39:19 git clone "-- creates and checks out an initial branch that is forked from the cloned repository’s currently active branch." 02:40:10 I guess a bare repository has an active branch as well? 02:40:49 fizzie: apparently 02:40:55 And we use Mercurial at work, though weirdly. 02:42:02 fizzie: aren't you using git at work? 02:42:54 No. Well, except for a lot of open-source things of course. 02:43:22 Chromium and Android and such. 02:43:59 well yeah, everyone has a lot of version control systems installed on their machine these days just to be able to check out third party repositories 02:44:37 that's why I have cvs, mercurial, darcs, fossil, bazaar installed 02:44:58 (svn and git I have used for actual work or hobby) 02:48:00 I think we moved from Subversion to git for the "big" (not that big) shared ASR codebase at the university when I was there doing research. 02:49:36 Hey, that fox is back. 02:50:14 Well, okay, it might be an entirely different fox, I think there's many of them. 02:51:37 Hadn't seen any for a while, but before that I frequently saw one of two at night out there crossing the (pretty quiet) side street or just walking on the sidewalk. 02:52:37 -!- earendel has joined. 03:05:32 new connection would also mean new secure socket layer handshake roundtrips overhead..no? this sucks hard on gprs connections, when scripts demand preflight check for modifications before it serves from cache. a page like irccloud easily make 30-40 https requests. it is a pain. not sure what keepAlive even does. probably additional overhead ping pongs. it in some ways stays open. via stream end 03:12:11 a better protocol would put all requests in a single one. and fetch the whole package deflated, encypted.. vice versa.. and then evaluated "in time". and the user/webdeveloper would only notice when inspecting the network tab. good software never jumps in your way demanding your attention. 03:13:41 Sure, computers suck. 03:14:04 earendel: what is the context for this? and yes, we've been doing multiple HTTP requests per TCP connection long ago, regardless of SSL or not 03:14:18 yes, but not pleasently 03:14:47 well yes, HTTP 2 is trying to improve on that a bit I think 03:15:07 in that it allows you to abort a request without breaking the TCP stream 03:15:21 but the basics work well enough, and routinely used for downloading several small files 03:15:26 [ardon.. a few thoughts. context is my mobile connecion here :/ 03:16:07 HTTP/3 uses UDP and has a 0-RTT encrypted handshake to known servers. Or at least QUIC did. 03:16:34 I mean I have an old custom HTTP downloader program (I really should make a new one soon because it sucks), it has a delay mode where it downloads things slowly, and in that delay more I batch multiple requests together and longer delays between just so that I can take advantage of HTTP keepalive connections 03:16:59 and indeed I've done a debug output to verify that that works, it does not start a new TCP connection within the batches usually 03:17:09 (And TCP keepalive is pretty much just redundant 0-size frames + their acks.) 03:17:27 fizzie: this is a different keepalive 03:17:30 not TCP keepalive 03:18:16 Oh, I got confused, because that was talked about earlier. 03:18:27 i am afraid all of this is crappy om plicated and just doesn't work. or solve the problem it was invented for. obviously. so http is ok. one as well use bundlers. and just.. test a webapp in low bandwith. 03:18:43 right keepalive we were. 03:18:59 Yeah, the HTTP "keepalive" is almost a different meaning of the word. 03:19:14 it's just some stuff in the request and response headers where the server and client negotiate that you can reuse the TCP connection for another request, for which both parties have to make sure that if a request/response has a body, it uses either Content-Length or chunked encoding so the other party can tell where the body ends 03:19:45 but earendel might have asked about something else and I jumped to a conclusion 03:19:46 it has crossed my mind recently that many web pages have heavy JavaScript for doing things like replacing small portions of the page so that there's no need to redownload the whole thing 03:19:56 I don't know the context that earendel was trying to ask about 03:19:59 i was a bit off as i said. 1st sgt logbook entry. i understand we talked about tcp. 03:19:59 when in fact, you could just do it all as plain HTML and it'd be faster due to the smaller download sizes 03:20:41 there are complicated javascript-based web forums which have things like fake scrollbars because the real one wouldn't work properly, because the page isn't loaded all at once 03:20:51 yup. 03:20:55 but, if it weren't for images (which you may be able to use placeholders for), you probably *could* just load the page all at once 03:21:07 and it might well be lighter 03:21:28 ais523: and websites that put on a blur filter and an overlay popup that says you have to buy a payed subscription to view the article, on client side 03:21:52 or similarly a blur filter and an overlay popup saying that you have to claim to be at least 18 years old to view the content 03:22:00 usually also disabling the scrolling behind it 03:22:12 b_jonas: I've discovered that surprisingly many of those, the filter, overlay, etc. just don't load if you have JavaScript off 03:22:34 ais523: nah, on some sites nothing loads if you have Javascript off 03:22:37 my "default" for browsing the web is JS-off (I have ways to turn it on if I need to), and it's actually much more usable that way, surprisingly 03:22:47 yes. images can, and were put into sprite bitmaps to keep conn low. 03:23:00 but images are not used much as back then. 03:23:15 ais523: but sure that happens too 03:23:37 usully u can do a lot with that minimal symbols that are fashinable and minimal (which i like too) 03:24:10 it helps indeed sometimes. 03:24:30 ais523: there's at least one site where I enable javascript just to download the content, AND have a client-side CSS rule to remove the overlay and reenable scrolling 03:24:41 btw. gitter is lynx compatible. 03:25:39 ais523: oh, and you need to accept at least some cookies for it to load too 03:25:53 i think most websites are mining coins when i use their interface in the background. and keeps machine learning my type style. and metriics more terrifying. :> 03:30:05 earendel: probably not very fast, because I'd hear the fan spinning 03:31:11 or contribute to SETI 03:31:37 which i would cancel severly. 03:31:40 ais523: I agree; it does usually work better. 03:32:06 Sometimes, even though nothing is displayed if JS is disabled, you can disable CSS as well and then it will be displayed. However, sometimes this does not work. 03:33:15 (Sometimes by viewing the source you can still find a link to the data, though.) 03:33:36 I discovered recently that Firefox has a built-in way to disable CSS on the page you're viewing 03:33:53 alt-v, y, n 03:34:04 this also lets you change between stylesheets, if the site defined more than one 03:34:07 about:config? 03:34:17 no, in the menus for one page, rather than globally 03:34:27 it's probably got a global CSS disable too, but I doubt it's a good idea to use it 03:35:59 I use that command a lot actually 03:37:15 ais523: yes, that's very old. the alternate stylesheets too, though mostly your readers won't guess they exist unless you include a built-in interface, whether client-side script to change which stylesheets are active 03:37:45 that matrix addon was quite powerful. usually its a bit too much work, but it could pay on 56KBit ~ 03:37:50 b_jonas: still, it means that you could combine the JS stylesheet change, with the browser stylesheet change 03:37:55 and have a page that works for non-JS viewers 03:37:59 also I think different browsers implement the alternate stylesheets a bit differently so you have to be careful, to tell if they're disabled when loading the page, some look at one attribute, some look at another 03:38:31 one attribute tells if it's a normal or alternate stylesheet; the other gives the name of the alternat stylesheet that the menu or scripts can reference to enable/disable it 03:38:59 aaand. markdown would be totally sufficient for informational pages. articles. 03:39:44 I wouldn't like Markdown specifically for that because it has a few annoying corner cases 03:39:48 like in the escaping rules 03:39:57 Another alternative is the simpler gemini format 03:39:58 but, the sort of page that can be generated from a markdown-ish input, yes 03:40:04 or even POD 03:40:46 (Although gemini doesn't have inline formatting; there is no emphasis, strong, fixpitch (except for blocks), or inline links (links on lines by themself are possible).) 03:40:56 there can still be app vr world integrated within toaster and fridge. also rss has to somehow be spun together. then we can drop social media tech monopolies if we want. (we could keep the, if they behave nicely :) 03:41:06 I actually really like POD's feature set, except for the non-semantic I<> and B<> 03:41:31 ais523: yes. but the menu only allows the reader to enable one alt stylesheet and disable all others, or enable no alt stylesheet. if you want multiple orthogonal axis by stylesheet, such as colors and font sizes, you need more than the menu. 03:41:48 I also don't like markdown. it's harder to use than HTML. 03:41:53 well, browsers have a built-in for variable font sizes nowadays too, but yes 03:42:11 I was working on my own markdown-alike, but never finished, there were some things I couldn't decide how they should work 03:42:15 some p2p indexing distributed queryable node mastermind 03:42:21 you'd THINK it's hard to make a markup language that's worse than HTML with all its historical baggage, yet a lot of wiki or forum sites manage exactly that 03:42:25 I /did/ decide that
was worthy of having a tag-equivalent, though 03:42:38 and find an escaping syntax I was happy with 03:42:39 so. i hope u have noted this. :p 03:42:40 it'd be quite marvelous if I didn't want to post on some of those sites 03:42:46 I think plain HTML without CSS or scripts, and with some commands omitted and also some more things such as footnotes, can be good, perhaps. 03:43:04 I think there are three goals for a markdown-alike, in some amount of competition: a) be readable as plaintext, b) be easy to write, c) round-trip well with HTML-alikes 03:43:13 I was primarily focusing on a) and c), but other combinations also make sense 03:43:25 Markdown is moderately bad in all three areas 03:43:45 ais523: yeah, if I make a custom markup language, it will be HTML plus a lot of custom pseudo-tags that are rewritten on the server 03:43:50 hihi 03:43:52 MediaWiki markup is good at c) and moderately good at b), less good at a) 03:43:59 I also had idea of markdown-alike too, with goals a) and b), and without the ability to embed HTML. Also some other differences, such as <...@...> for message IDs, and using ^H and ^W to represent strike-out 03:45:23 But regardless, I should think that a) is important 03:47:13 When writing a web page, ensure working without scripts if possible. Include a proper