00:00:02 -!- danieljabailey has quit (Quit: ZNC 1.6.6+deb1ubuntu0.1 - http://znc.in). 00:00:40 `wlcmr int-e 00:00:41 int-e: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: . (For the other kind of esoterica, try #esoteric on EFnet or DALnet.) 00:01:02 `dobg wlcmr 00:01:03 5184:2014-12-09 ` sed -ir \'s/sed.*/tr -d aeoiu/\' bin/wlcm; cat bin/wlcm \ 5183:2014-12-09 ` sed -ir \'s/.$/g&/\' bin/wlcm; cat bin/wlcm 00:01:27 `wlcm FireFly 00:01:29 FrFly: Wlcm t th ntrntnl hb fr strc prgrmmng lngg dsgn nd dplymnt! Fr mr nfrmtn, chck t r wk: . (Fr th thr knd f strc, try #strc n EFnt r DALnt.) 00:01:37 apologint-e 00:02:21 I ended up checking whether it's colorful... it wasn't. 00:02:32 I thought you'd made it. 00:02:43 I don't remember creating that 00:03:06 But it's only because of the confusing thing in the fshg browser where it shows the last commit message at the top, instead of the message of the last commit that affected the file you clicked on. 00:03:30 wait, -ir ?! 00:03:41 `rm bin/wlcmr 00:03:42 No output. 00:03:54 why wouldn't it be -ir? 00:04:11 why would you make a backup rather than just use -i ? 00:04:30 Oh, I get it. 00:04:33 -r is how GNU sed spells -E 00:04:37 or "use ERE" 00:04:40 FireFly: then use -ri 00:04:42 sed -ir is not sed -i -r hth 00:04:44 ``` rm -v bin/preprocess-mtg # one less now 00:04:46 removed 'bin/preprocess-mtg' 00:04:46 o 00:05:01 whoosp 00:05:10 `` doag | grep 'sed -ir' 00:05:11 ``` rm -v bin/7z bin/7za # I added these, but they never worked 00:05:17 5184:2014-12-09 ` sed -ir \'s/sed.*/tr -d aeoiu/\' bin/wlcm; cat bin/wlcm \ 5183:2014-12-09 ` sed -ir \'s/.$/g&/\' bin/wlcm; cat bin/wlcm 00:05:18 removed 'bin/7z' \ removed 'bin/7za' 00:05:30 but well I didn't even remember creating that to begin with 00:05:39 FireFly: nowadays you'd just use sled hth 00:05:52 -!- oerjan has joined. 00:06:10 FireFly: It's a plausible mistake. It took me a moment to realize why the file was there at all :) 00:06:16 hehe 00:07:54 I created bin/8-ball but then other people modified it in ways I don't approve with, and I would have used the original but now I can't trust it 00:08:19 I apparently created wrlist, just in case the "we are robots" webcomic resurrects 00:08:32 as for the rest, what I can do is use them so there aren't so many unused ones 00:08:47 except for the lists that are for events that haven't happened of course, I won't use them 00:08:50 `? keenlist 00:08:51 keenlist is notification for when Tom Hall acquires the necessary intellectual property rights to create the videogame series Commander Keen: The Universe is Toast 00:09:05 ``` hg log -T "{desc}\0{file_adds}\n" bin/* | perl -ne '/^<[^>]*jonas.*\0(.+)/ and print "$1\n";' | sport 00:09:09 why is this a list 00:09:26 shachaf: because if it happens, I'd like to notice, so it pings me 00:09:29 1/2:bin/bobadventureslist \ bin/starwars \ bin/scheme \ bin/calesyta2016list \ bin/welkom \ bin/velkomin \ bin/velkommen \ bin/välkommen \ bin/hello \ bin/random-card \ bin/card-by-name \ bin/recipe \ bin/lastwisdoms \ bin/keenlist wisdom/keenlist \ bin/ioccclist \ bin/bardsworthlist \ bin/ehlist \ bin/revert \ bin/culprits-ng \ bin/aglist \ bin/listlist \ bin/wrlist \ bin/dateu \ bin/sqli \ bin/datei \ bin/culprits-c \ bin/Welcome \ bin/velcome \ bin/cto 00:09:31 same as with olist 00:09:31 `n 00:09:32 2/2:f \ bin/ftoc \ bin/toroman \ bin/fromroman \ bin/8-ball \ bin/8ball 00:09:33 `cat bin/keenlist 00:09:34 echo -n "$(basename "$0")${@:+ }$@: "; tail -n+2 "$0" | xargs; exit \ b_jonas 00:09:38 `starwars 10 00:09:39 Supreme Leader Snoke \ R2-D2 \ Moff Jerjerrod \ Galen Erso \ Qui-Gon Jinn \ Padmé Amidala \ Cassian Andor \ Ric Olié \ Doctor Cornelius Evazan \ C-3PO 00:09:41 But you're the only one on the list. 00:09:51 shachaf: so far yes, but anyone can echo >> it 00:10:03 I won't just add other people 00:10:18 when you create a list, do you add anyone but yourself? 00:10:45 hmm, the starwars should perhaps be updated to add characters from Solo 00:11:07 or are those already in there? 00:11:43 No, but the main way people learn about lists is from seeing them being listed. 00:11:58 they're not 00:12:05 `scheme 00:12:06 Plots That Span Centuries 00:12:08 `calesyta2016list never happened 00:12:09 calesyta2016list never happened: b_jonas 00:12:14 :P 00:12:47 `lastwisdoms 00:12:49 ​/2019-02-08/ macron // flabberghast // chicken // /2019-02-07/ ladder // quantum leap // /2019-02-04/ password // /2019-02-02/ asap // tio // /2019-01-30/ prefixes // /2019-01-29/ shannon // /2019-01-26/ fnord // /2019-01-01/ this ftp site // /2018-12-29/ standard // /2018-12-22/ ground water // /2018-12-11/ italian // grace period // tanebvention // /2018-12-09/ oren // /2018-12-07/ mꙮnqy // /2018-12-06/ oerjan // /2018-12-01/ `hello // tense formati 00:13:11 `culprits-c wisdom/password 00:13:13 ​ 29 oerjän 14 int-̈e 5 shachäf 1 mroman̈_ 1 mromän 1 gameman̈j 1 boil̈y 1 b_jonäs 00:13:35 huh... what's bin/revert ? 00:13:56 `sqli SELECT 2+4 00:13:57 6 00:13:58 `sqli SELECT 2/0 00:13:59 No output. 00:14:20 `` git log 00:14:21 fatal: Not a git repository (or any parent up to mount point /hackenv) \ Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set). 00:15:05 b_jonas: you made it though 00:15:14 int-e: yeah, that's the problem 00:15:23 I listed the entries in bin that I made and that still exist 00:15:26 above 00:15:45 hackego wasn't using git either, right? 00:16:24 let's create a fake bin/revert ! 00:16:35 strange 00:16:37 hackego was using hg and now hackeso is using hs 00:16:43 ``` rm bin/revert 00:16:44 No output. 00:16:47 There was discussion about how `revert is a builtin and not a real command. 00:16:53 sure 00:17:00 but I could have created a real one 00:17:03 `cat bin/run 00:17:04 echo run run run 00:17:04 or maybe not 00:17:07 I dunno 00:17:33 well, not an entirely real one 00:17:35 And whether it would be possible to make an actual non-builtin version of `revert, which sounds like it should be more or less possible. 00:17:57 `cat bin/undo 00:17:57 ​#!/bin/sh \ hg diff -c "$@" | patch -p1 -R 00:18:01 b_jonas: why are you using git commands, HackEgo is mercury / oerjan: it's a fake command, so it doesn't matter, right? / OKAY 00:18:08 and I don't know mercurial 00:18:17 yeah 00:18:17 `before 00:18:19 bin/revert//#!/bin/sh \ exec git checkout HEAD^ . 00:18:20 that might have been me 00:18:31 See? `before is useful! 00:22:15 `after 00:22:15 ​/srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: after: not found 00:22:19 `now 00:22:20 bin/revert//cat: bin/revert: No such file or directory 00:22:29 hm 00:22:31 Well, it doesn't do much for deletions. 00:22:56 `random-card 00:22:57 Approach of the Second Sun \ 6W \ Sorcery \ If Approach of the Second Sun was cast from your hand and you've cast another spell named Approach of the Second Sun this game, you win the game. Otherwise, put Approach of the Second Sun into its owner's library seventh from the top and you gain 7 life. \ AKH-R 00:22:57 `random-card flying 00:22:58 Ivory Gargoyle \ 4W \ Creature -- Gargoyle \ 2/2 \ Flying \ When Ivory Gargoyle dies, return it to the battlefield under its owner's control at the beginning of the next end step and you skip your next draw step. \ {4}{W}: Exile Ivory Gargoyle. \ AI-R, ME2-R 00:23:07 `random-card eldrazi 00:23:07 Emrakul, the Promised End \ 13 \ Legendary Creature -- Eldrazi \ 13/13 \ This spell costs {1} less to cast for each card type among cards in your graveyard. \ When you cast this spell, you gain control of target opponent during that player's next turn. After that turn, that player takes an extra turn. \ Flying, trample, protection from instants \ EMN-M 00:23:25 pft. no annihilator? 00:23:41 `random-card joker 00:23:42 No card found. 00:23:48 `random-card spade 00:23:49 No card found. 00:23:51 `random-card annihilator 00:23:53 Hand of Emrakul \ 9 \ Creature -- Eldrazi \ 7/7 \ You may sacrifice four Eldrazi Spawn rather than pay this spell's mana cost. \ Annihilator 1 (Whenever this creature attacks, defending player sacrifices a permanent.) \ ROE-C 00:23:56 `random-card club 00:23:57 Prakhata Club Security \ 3B \ Creature -- Aetherborn Warrior \ 3/4 \ KLD-C 00:24:06 `owrjan 00:24:08 Your omnidryad saddle principal ideal golfing toe-obsessed "Darth Ook" oerjan the shifty evil 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 ark-nemesis is Noah. He twice punned without noticing it. 00:24:30 `swrjan s/evil/eldrazi/ 00:24:30 `stat bin/slwrjan 00:24:32 stat: cannot stat 'bin/slwrjan': No such file or directory 00:24:33 huh? that's a command? 00:24:33 oerjan//Your omnidryad saddle principal ideal golfing toe-obsessed "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 ark-nemesis is Noah. He twice punned without noticing it. 00:24:45 ah 00:25:07 `culrpits-c wisdom/oerjan 00:25:08 ​/srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: culrpits-c: not found 00:25:14 `culprits-c wisdom/oerjan 00:25:16 ​ 122 shachäf 53 oerjän 11 boil̈y 5 noloveinwaikik̈i 2 Jafët 2 int-̈e 1 nitïa 1 hppavilion[1̈] 00:25:20 uh 00:25:22 ahem 00:25:37 nitia! 00:25:40 `? nitia 00:25:41 nitia is the inventor of all things. The BBC invented her. 00:25:52 `? zzo38 00:25:53 zzo38 is not actually the next version of fungot, much as it may seem. 00:25:57 `? shachaf 00:25:58 Queen Shachaf of the Dawn sprø som selleri and cosplays Nepeta Leijon on weekends. He hates bell peppers with a passion. He doesn't know when to stop asking questions. 00:26:12 all true 00:26:24 I still don't get the bell peppers thing. 00:26:36 I don't like bell peppers. 00:26:39 What's not to get? 00:26:48 I think the other bits are much harder to get, really. 00:27:02 int-e: noloveinwaikiki was one of hagb4rd's nicks, as i recall 00:27:26 int-e: I still don't get some of the wisdom entry about me 00:27:34 `? b_jonas 00:27:35 shachaf: I've never tried to decipher the first sentence, and I know all about the last one ;-) 00:27:35 b_jonas egy nagyon titokzatos személy. Hollétéről egyelőre nem ismertek. 00:28:16 What's going on with the last one? 00:29:24 I'm pretty sure I added that after being subjected to the shachafian inquisition one day. I have to admit that I did forget the topic of that discussion. 00:29:34 b_jonas: 's okay i only get the first three words and the second last. 00:29:47 Me too. 00:29:54 I thought oerjan added that, though. 00:29:55 int-e: i thought i added it... 00:29:57 `dowg shachaf 00:29:58 9872:2016-12-05 slwd shachaf//s/^/Queen / \ 9869:2016-12-05 learn_append shachaf He doesn\'t know when to stop asking questions. \ 9116:2016-09-29 slwd shachaf//s# T.*## \ 8814:2016-07-14 slwd shachaf//s#^shachaf#Shachaf of the Dawn# \ 8553:2016-06-21 ` hg cat -r 8343 wisdom/shachaf > wisdom/shachaf \ 8345:2016-06-05 learn shachaf is a wise little gentleman. \ 8344:2016-06-05 le 00:30:05 hmm 00:30:11 did I at least suggest it? 00:30:20 [[Vague]] https://esolangs.org/w/index.php?diff=59799&oldid=59780 * Cortex * (+142) 00:30:25 I think I asked oerjan too many questions. 00:30:47 Or did I just quote it on one occasion. 00:31:04 My memory is what it used to be. All unreliable and forgetful :) 00:31:07 [[Vague]] https://esolangs.org/w/index.php?diff=59800&oldid=59799 * Cortex * (-27) 00:31:26 My memory is like a functor. 00:31:30 ... 00:31:32 TMI 00:32:06 int-e: maybe it's one of those berenstoin things 00:32:56 faithful, forgetful, adjoint... 00:33:51 `thanks hackeso 00:33:52 Thanks, hackeso. Thackeso. 00:33:53 memory can be especially forgetful after adjoint 00:34:06 * oerjan swats shachaf -----### 00:34:52 @google berenstoin 00:34:53 https://me.me/i/no-normies-allowed-stan-jan-berenstoin-%3Cp%3Ememe-insiders-make-stance-22266978 00:35:34 ... I have regrets. 00:38:04 wtf even is that. 00:38:48 I am not clicking that link. 00:39:00 "Many people incorrectly remember the name of the series as the "Berenstein Bears". This confusion has generated multiple theories to explain the memories, including an unannounced name change, time travel, or parallel universes and has been described as an instance of the Mandela effect." 00:39:19 oerjan: is that what you're alluding to? 00:40:53 Is there a way to do static linking on Linux and also use OpenGL? 00:41:55 I doubt it. 00:42:17 `? this 00:42:18 This is something people on the channel like to talk about. We're often unsure what this is, though. 00:43:25 int-e may or may not be fan 00:44:03 `quote indifference 00:44:04 1320) int-e does not like this [...] shachaf: I experience heightened levels of indifference :P Higher than your usual? who cares? 00:44:13 you can statically link to whatever libraries you want but I don't think you can statically link to a single OpenGL library.. 00:45:16 shachaf: probably not a reasonable way, because part of the graphics driver is a shared library 00:45:41 although you might be able to statically link the software only Mesa renderer 00:46:21 It's a shared library that links against libc which means I have to use libc and everything too, presumably. 00:47:42 -!- tromp has joined. 00:49:36 ``` cat -r 8821 wisdom/tg 00:49:36 cat: invalid option -- 'r' \ Try 'cat --help' for more information. 00:49:40 ``` hg cat -r 8821 wisdom/tg 00:49:41 TG is short for Turing-Gödel, the highest possible level of difficulty for a multiplayer game. At this level, it's undecidable whether you can manage to halt before losing or not. This gizmo talks gibberish too garbled to grasp. 00:51:34 `? @ 00:51:35 ​@ is an OS made out of only the finest vapour. 00:52:37 -!- tromp has quit (Ping timeout: 244 seconds). 00:52:54 That's a blast from the past. 00:56:03 i,i oblast from the past 00:59:04 int-e: yes 01:04:38 -!- b_jonas has quit (Quit: leaving). 01:06:02 . o O ( And your final question for the $1,000,000 prize is: What's the Russian word for "province"? Oh, blast! ) 01:12:32 Is it confusing if I use the number of bytes instead of the number of bits for my numeric types? 01:12:44 So U1/U2/U4/U8 instead of U8/U16/U32/U64 01:13:31 yes, because how many bits to a byte? 01:13:55 8 is conventional, but there are other byte sizes. 01:14:11 But do I care about architectures where bytes aren't octets? 01:15:47 -!- xkapastel has quit (Quit: Connection closed for inactivity). 01:20:53 I mean, that's your call. 01:21:06 you also have no way to specify a 4-bit type or a 2-bit type. 01:21:12 or a 7-bit type or something. 01:22:00 Yes. But on the other hand "8" is the same length as "1". 01:22:21 I don't know. Maybe I should stick to bits because everyone else does. 01:22:34 ^ 01:23:04 Also I tried writing code with this style and I kept getting confused and using U8 instead of U1. 01:25:40 `hi j4cbo 01:25:40 Hi j4cbo. Ho. 01:25:52 Hmm. I think maybe that should be adjusted. 01:26:35 If you use 8/16/32/64, you can use 1 for a boolean type. That's what LLVM does. 01:26:56 That's also true. 01:28:39 I don’t know of any non-8-bit-byte architectures that are relevant these days, but bits still seem more fundamental 01:28:57 That's also true. 01:29:24 kmc: is there any meaning to fractional qubits twh 01:30:27 `cat bin/hi 01:30:28 ​#!/usr/bin/perl \ $_ = (join " ", @ARGV) || `words`; s/^\s+|\s+$//g; print "Hi $_. "; if (/[aeiouyAEIOUY]/) { s/^[^aeiouyAEIOUY]*/H/; } else { s/^./H/; } print "$_."; 01:30:51 TI's still making TMS320C55x chips for low-power applications, and their C compiler for those has a CHAR_BIT == 16 setup. 01:31:08 `sled bin/hi//s/OUY/OUY0134/g 01:31:10 bin/hi//#!/usr/bin/perl \ $_ = (join " ", @ARGV) || `words`; s/^\s+|\s+$//g; print "Hi $_. "; if (/[aeiouyAEIOUY0134]/) { s/^[^aeiouyAEIOUY0134]*/H/; } else { s/^./H/; } print "$_."; 01:31:11 `hi j4cbo 01:31:12 Hi j4cbo. H4cbo. 01:31:15 better 01:31:56 TAVERN uses 16-bit memory cells (although if TAVERN32 or TAVERN64 is made, it might use 8-bit cells instead). 01:32:15 what kind of memory cell does TAVERN8 use 01:32:16 `` sled bin/thanks//s/OUY/OUY0134/g # for consistency 01:32:18 bin/thanks//#!/usr/bin/perl -CSDA \ $_ = (join " ", @ARGV) || `words`; s/^\s+|\s+$//g; print "Thanks, $_. "; if (/[aeiouyAEIOUY0134]/) { s/^[^aeiouyAEIOUY0134]*/Th/; } else { s/^./T/; } print "$_."; 01:32:26 `thanks j4cbo 01:32:27 Thanks, j4cbo. Th4cbo. 01:32:28 shachaf: There is no TAVERN8 01:32:39 Maybe I should bug someone else. 01:33:02 `thanks f1zz13 01:33:02 But no one else uses digits that way. 01:33:02 Thanks, f1zz13. Th1zz13. 01:33:17 Oh, wait, you can run this on a name that isn't a nick present in the channel. I forgot. 01:34:16 `` rgrep -l aeiou bin 01:34:17 bin/h! \ bin/?h \ bin/thanks \ bin/hyphenate.fi \ bin/hi \ bin/blessyou \ bin/unh \ bin/?hh \ bin/shmify \ bin/h 01:34:18 By the way, I was thinking of exporting $NICK in the HackEso environment as the person who requested the thing to be done. 01:34:23 `cat bin/blessyou 01:34:24 ​#!/usr/bin/perl \ $_ = (join " ", @ARGV) || `words`; s/^\s+|\s+$//g; print "Bless you, $_. "; if (/[aeiouyAEIOUY]/) { s/^[^aeiouyAEIOUY]*/Bl/; } else { s/^./B/; } print "$_."; 01:34:36 sled bin/blessyou//s/OUY/OUY0134/g 01:34:39 `sled bin/blessyou//s/OUY/OUY0134/g 01:34:41 bin/blessyou//#!/usr/bin/perl \ $_ = (join " ", @ARGV) || `words`; s/^\s+|\s+$//g; print "Bless you, $_. "; if (/[aeiouyAEIOUY0134]/) { s/^[^aeiouyAEIOUY0134]*/Bl/; } else { s/^./B/; } print "$_."; 01:34:46 `blessyou f1zz13 01:34:46 Bless you, f1zz13. Bl1zz13. 01:35:03 `h f1zz13 01:35:04 f1zz13 01:35:11 Eh. That might be going too far. 01:35:42 `wehlcohme fizzie 01:35:44 fihzzie: Wehlcohme to the ihntehrnahtiohnahl huhb fohr ehsohtehrihc prohgrahmmihng lahnguahge dehsihgn ahnd dehployhmehnt! Fohr mohre ihnfohrmahtiohn, chehck ouht ouhr wihki: . (Fohr the ohthehr kihnd ohf ehsohtehrihca, try #ehsohtehrihc ohn EhFneht ohr DAhLneht.) 01:41:06 shachaf: there probably is in quantum information theory, which I know nothing about 01:41:50 `` doag | grep 'sed -i[^ ]' 01:41:53 10398:2017-03-11 ` sed -ie "s,\\\\n,\\n," bin/lowercase2 \ 6500:2016-01-03 ` sed -ie \'s/inp[)]$/unicode(inp, locale.getpreferredencoding())).encode(locale.getpreferredencoding())/\' -e \'2s/$/, locale/\' bin/loudly; \ 6484:2016-01-03 ` sed -ie \'s/inp[)]$/unicode(inp, locale.nl_langinfo(locale.CODESET))).encode(locale.nl_langinfo(locale.CODESET))/\' bin/loudly \ 5184:2014-12-09 ` sed -ir \'s/sed.*/tr -d ae 01:41:55 `blessyou keegan 01:41:56 Bless you, keegan. Bleegan. 01:42:22 `cat bin/dog 01:42:23 cat: bin/dog: No such file or directory 01:42:29 I'm a bit surprised `dog doesn't exist. 01:42:38 i,i unless cat is lying to us 01:43:32 `ls bin/lowercase2e 01:43:33 bin/lowercase2e 01:43:38 ha 01:43:51 `doag bin/lowercase2e 01:43:53 10398:2017-03-11 ` sed -ie "s,\\\\n,\\n," bin/lowercase2 01:44:00 `rm bin/lowercase2e 01:44:04 No output. 01:44:28 `doag bin/loudlye 01:44:30 10294:2017-02-16 rm bin/loudlye \ 6500:2016-01-03 ` sed -ie \'s/inp[)]$/unicode(inp, locale.getpreferredencoding())).encode(locale.getpreferredencoding())/\' -e \'2s/$/, locale/\' bin/loudly; \ 6491:2016-01-03 revert 6483 \ 6489:2016-01-03 revert 6486 \ 6488:2016-01-03 revert 6483 \ 6486:2016-01-03 revert \ 6485:2016-01-03 revert \ 6484:2016-01-03 ` sed -ie \'s/inp[)]$/ 01:44:43 `2 doag | grep 'sed -i [^ ]' 01:44:47 2/169:e\'s font https://github.com/fis/rfk86/tree/master/web/font|" wisdom/font \ 11200:2017-09-26 ` sed -i \'$s=sha[c]haf=shach\x0faf=\' quotes > /dev/null \ 11198:2017-09-26 ` sed -i \'$s=shachaf=sha\x0fchaf=\' quotes \ 11150:2017-08-08 ` sed -i -e "s/head.*/grep \'^U+\'/" bin/singlecode \ 11149:2017-08-08 ` sed -i -e \'1i\\#!/bin/bash\' bin/singlecode \ 11148:2017-08-08 ` sed -i -e \'s/multicode/singl 01:44:54 oops 01:44:56 `2 doag | grep 'sed -i[^ ]' 01:45:00 2/6:d aeoiu/\' bin/wlcm; cat bin/wlcm \ 5183:2014-12-09 ` sed -ir \'s/.$/g&/\' bin/wlcm; cat bin/wlcm \ 2257:2013-02-26 sed -i... -e \'s/grep/timeout 25 grep/\' bin/pastelog \ 2196:2013-02-21 sed -ie "s/ shachaf//" bin/list \ 2157:2013-02-17 sed -ie "s/ shachaf//" bin/list \ 1891:2013-01-27 sed -ie \'s,UTF-32,UTF-16LE,\' bin/\\? \ 1890:2013-01-27 sed -ie \'s,UTF-16,UTF-32,\' bin/\\? \ 18 01:46:00 I didn't find any others with for f in bin/*e; do if [ -e "${f%e}" ]; then echo $f; fi; done if that was even right. 01:47:20 (I think it should've been.) 01:48:12 `doag bin/pasteloge 01:48:13 No output. 01:48:19 There's a lot of sed -ie in the lgs, I wonder why none of those files were created. 01:48:22 oh wait 01:48:26 `doag bin/pastelog... 01:48:28 2260:2013-02-26 rm bin/pastelog... \ 2257:2013-02-26 sed -i... -e \'s/grep/timeout 25 grep/\' bin/pastelog 01:49:27 `doag bin/?e 01:49:29 1906:2013-01-30 hg diff -r1891:1871 | patch -p1 \ 1890:2013-01-27 sed -ie \'s,UTF-16,UTF-32,\' bin/\\? \ 1889:2013-01-27 sed -ie \'s, | cat$,;,\' bin/\\? \ 1888:2013-01-27 sed -ie \'s,urandom,urandom | cat,\' bin/\\? \ 1887:2013-01-27 sed -ie \'2 s,$, | tr A-Z a-z | sed "s/ *$//"),\' bin/\\? \ 1886:2013-01-27 revert \ 1885:2013-01-27 revert \ 1884:2013-01-27 revert \ 1883:2013 01:49:49 `cat bin/?e 01:49:49 cat: 'bin/?e': No such file or directory 01:51:02 `3 doag | grep 'sed -i[^ ]' 01:51:10 1/18:10398:2017-03-11 ` sed -ie "s,\\\\n,\\n," bin/lowercase2 \ 6500:2016-01-03 ` sed -ie \'s/inp[)]$/unicode(inp, locale.getpreferredencoding())).encode(locale.getpreferredencoding())/\' -e \'2s/$/, locale/\' bin/loudly; \ 6484:2016-01-03 ` sed -ie \'s/inp[)]$/unicode(inp, locale.nl_langinfo(locale.CODESET))).encode(locale.nl_langinfo(locale.CODESET))/\' bin/loudly \ 5184:2014-12-09 ` sed -ir \'s/sed.*/tr 01:51:12 `cat bin/3 01:51:13 eval "$(shuf -n 1 <<'END' \ \` "$@" |& sport 3 \ cmd="${1-quote}"; \`^ 3 "$cmd" \ END \ )" 01:51:21 oerjan got lucky today 01:51:46 oops 01:52:04 `cwlprits ../bin/3 01:52:06 oerjän 01:52:15 `cat bin/n 01:52:15 line="${1-$(cat /hackenv/tmp/spline)}"; len="$(awk 'END{print NR}' /hackenv/tmp/spout)"; echo -n "$line/$len:"; sed -n "${line}{p;q}" /hackenv/tmp/spout; echo "$((line /hackenv/tmp/spline 01:53:37 `cat bin/2 01:53:38 ​\` "$@" |& sport 2 01:54:15 `cat bin/^ 01:54:16 cat: 'bin/^': No such file or directory 01:54:27 huh i thought that existed 01:54:38 `cat bin/`^ 01:54:39 ​[[ $# == 2 ]] || { echo "Usage: $0 n cmd" >&2; exit 2; }; for ((i=0; i < $1; i++)); do \` "$2"; done | sport 01:56:31 `` doag | grep 'sed -i[^ ]' |& sport 3 01:56:34 3/6:89:2013-01-27 sed -ie \'s, | cat$,;,\' bin/\\? \ 1888:2013-01-27 sed -ie \'s,urandom,urandom | cat,\' bin/\\? \ 1887:2013-01-27 sed -ie \'2 s,$, | tr A-Z a-z | sed "s/ *$//"),\' bin/\\? \ 1882:2013-01-27 sed -ie \'s, | tr.*,,\' bin/\\? \ 1881:2013-01-27 sed -ie \'s,tr -d .*,iconv -f UTF-16 -t UTF-8 -c /dev/urandom | tr -d "\\\\r",\' bin/\\? \ 1878:2013-01-27 sed -ie \'s,-c;,-c | head -c 1000;, 01:58:04 `` doag | grep 'sed -i[^ ]' |& sport 4 01:58:08 4/6:\' bin/\\? \ 1877:2013-01-27 sed -ie \'s,-f UTF-8,-f UTF-16,\' bin/\\? \ 1876:2013-01-27 sed -ie \'s,/dev/urandom,/dev/urandom | iconv -f UTF-8 -t UTF-8 -c,\' bin/\\? \ 1875:2013-01-27 sed -ie \'s,\\[:print:\\],[:print:]\\\\r,\' bin/\\? \ 1874:2013-01-27 sed -ie \'s,cat /dev/urandom,tr -d "[:print:]" sed -ie \'3 s,.*,if ! expr "$id" ">=" 0 "\\&" "$id" "<" $(wc 01:58:32 `` doag | grep 'sed -i[^ ]' |& sport 5 01:58:35 5/6:-l /dev/null; then id=$(expr $RANDOM % $(wc -l sed -ie \'s/ monqy//\' bin/list \ 1865:2013-01-27 sed -ie \'s/$/ monqy/\' bin/list \ 1850:2013-01-26 sed -ie \'s/$/ Sgeo drives the bus./\' wisdom/narutoverse \ 1592:2013-01-22 sed -is \'s/grep/grep -P -i/\' bin/seen \ 1250:2013-01-04 sed -ie \'s#-ne .print uc($_).#-pe \'\\\'\'$_ = uc\'\\\'\'#\' b 01:59:02 `dobg delquote 01:59:03 1906:2013-01-30 hg diff -r1891:1871 | patch -p1 \ 1873:2013-01-27 sed -ie \'3 s,.*,if ! expr "$id" ">=" 0 "\\&" "$id" "<" $(wc -l /dev/null; then id=$(expr $RANDOM % $(wc -l run sed -ie 's/echo "\*poof\*/printf "*poof*%s" "/' bin/delquote \ 0:2012-02-16 Initïal import. 01:59:38 `dowg narutoversee 01:59:40 4210:2013-12-19 rm wisdom/narutoversee \ 1850:2013-01-26 sed -ie \'s/$/ Sgeo drives the bus./\' wisdom/narutoverse 02:00:01 `dobg seens 02:00:06 wtf? 02:00:06 1592:2013-01-22 sed -is \'s/grep/grep -P -i/\' bin/seen 02:00:31 `` doag | grep ' rm.*e$' 02:00:34 11728:2019-02-11 rm bin/lowercase2e \ 10360:2017-03-07 rm lele lele \ 10295:2017-02-16 rm bin/disce \ 10294:2017-02-16 rm bin/loudlye \ 9083:2016-09-26 rm candide \ 8625:2016-06-27 rm quine \ 8540:2016-06-20 rm bin/e \ 8019:2016-05-11 rm wisdom/raspberrie \ 6001:2015-09-16 rm wisdom/toe \ 5813:2015-07-09 rm wisdom/he \ 5753:2015-06-25 rm 02:00:47 `rm bin/seens 02:00:49 No output. 02:01:44 `` doag | grep 'sed -i[^ ]' |& sport 6 02:01:47 6/6:in/WELCOME \ 1212:2012-12-28 sed -ie \'889 s/hard drive/hard drive /\' quotes \ 783:2012-10-06 run sed -ie 's/echo/echo -e/' bin/runc \ 752:2012-10-04 run sed -ie 's/echo "\*poof\*/printf "*poof*%s" "/' bin/delquote \ 744:2012-10-04 run cp bin/addquote bin/addquote_; sed -ie 's/echo/printf "%d) %s"/;s/") / "/' bin/addquote; cat bin/addquote 02:02:15 `dobg WELCOMEe 02:02:16 1282:2013-01-07 rm bin/WELCOMEe \ 1250:2013-01-04 sed -ie \'s#-ne .print uc($_).#-pe \'\\\'\'$_ = uc\'\\\'\'#\' bin/WELCOME 02:02:37 I did that quite a lot. 02:03:18 fortunately we invented sled 02:03:28 (Unfortunately sled still doesn't have a preview option. :-( ) 02:04:21 `` dobg runce; dobg delquotee; dobg addquotee 02:04:24 2111:2013-02-13 rm bin/runce \ 783:2012-10-06 run sed -ie 's/echo/echo -e/' bin/runc \ 1906:2013-01-30 hg diff -r1891:1871 | patch -p1 \ 1873:2013-01-27 sed -ie \'3 s,.*,if ! expr "$id" ">=" 0 "\\&" "$id" "<" $(wc -l /dev/null; then id=$(expr $RANDOM % $(wc -l rm bin/delquotee \ 752:2012-10-04 run sed -ie 's/echo "\*poof\*/printf "*poof 02:05:13 `dobg addquotee 02:05:15 993:2012-12-09 rm bin/addquotee \ 744:2012-10-04 run cp bin/addquote bin/addquote_; sed -ie 's/echo/printf "%d) %s"/;s/") / "/' bin/addquote; cat bin/addquote 02:05:37 `` doag | grep 'sed -i[^ ]' |& sport 7 02:05:40 7/6: 02:05:43 ah 02:06:12 i guess we got most of the *e ones before 02:35:25 -!- tromp has joined. 02:39:27 -!- tromp has quit (Ping timeout: 240 seconds). 02:40:51 -!- FreeFull has quit. 02:53:33 Is there any operetta house near Mornington Crescent? In the XYZABCDE.ZZT game there is, but I don't know if actually there is or if only it is the computer game. 03:30:09 -!- tromp has joined. 03:34:18 -!- tromp has quit (Ping timeout: 250 seconds). 04:00:00 -!- Taneb has quit (Quit: I seem to have stopped.). 04:00:49 -!- danieljabailey has joined. 04:01:28 -!- Taneb has joined. 04:23:51 -!- tromp has joined. 04:28:14 -!- tromp has quit (Ping timeout: 246 seconds). 04:46:40 One idea of Magic: the Gathering is an effect that will double all counters on all objects and players (once). 04:50:39 are there any interesting esolang applications of M:tG? I mean, I know it's TC 04:50:44 but what else can be said / done with it 04:52:22 I'd be interested in an esolang suitable for describing cards in a MtG-style game 04:52:39 It's not obvious at all how to do it well, since the game can be self-modifying in all sorts of subtle ways 04:52:49 is Pokémon card game TC? 04:53:19 iirc, it is much simpler, but i haven't played these things in almost 20 years 04:53:28 . o O ( how did I get so fucking old? ) 05:01:37 shachaf: Yes, I wanted such thing too. I did have some ideas about it though 05:02:06 I don't know if Pokemon card is TC, but, probably there is not enough memory; it has limited memory while Magic: the Gathering has unlimited memory. 05:04:56 because of unbounded counters? 05:05:34 an automaton with 1 unbounded counter (and appropriate operations) is TC, right? because you can Gödel-encode a whole tape 05:05:50 You need two counters, I think. 05:05:56 hmm 05:05:57 Well, I guess it depends on your operations. 05:06:12 If it's incremenet/decrement/etc. you need a scratch counter. 05:06:17 I guess with two counters you can do basically the two-stack-machine thing 05:06:21 mhm 05:07:14 You can encode a stack with two counters, and four counters with two counters 05:07:24 https://en.wikipedia.org/wiki/Counter_machine#Two-counter_machines_are_Turing_equivalent_(with_a_caveat) 05:09:33 ok 05:18:02 -!- tromp has joined. 05:22:07 -!- tromp has quit (Ping timeout: 240 seconds). 05:45:21 -!- oerjan has quit (Quit: Nite). 06:01:28 -!- MDude has quit (Ping timeout: 272 seconds). 06:25:03 what would you need to add to the mcculloch and pitts model of neurons to make it turing complete? an infinite supply of neurons? 06:37:26 I don't know what is mcculloch and pitts model, therefore I don't know 07:05:41 -!- tromp has joined. 07:10:03 -!- tromp has quit (Ping timeout: 245 seconds). 07:16:57 I thought of making the program for cards of Magic: the Gathering using either Lisp-based or RDF-based; an example in the RDF-based format (I mentioned before) is [:counter [:target :spell]] for "counter target spell". 07:21:16 I am not sure about some other kind of effects, but one possibility might be [:edit [:target [:or :spell, :permanent]]; :match [:choice :color]; :replace [:choice :color]] or something like that, for Sleight of Mind 08:01:23 -!- tromp has joined. 08:06:08 -!- tromp has quit (Ping timeout: 268 seconds). 08:21:33 -!- imode has quit (Ping timeout: 268 seconds). 08:35:51 -!- tromp has joined. 08:36:53 -!- tromp has quit (Read error: Connection reset by peer). 08:37:18 -!- tromp has joined. 08:39:03 -!- tromp has quit (Read error: Connection reset by peer). 08:39:38 -!- tromp has joined. 09:23:19 -!- b_jonas has joined. 09:23:49 shachaf: number of bytes instead of the number of bits for numeric types => I don't know, but I did that once in the names of library types in a small C++ library I wrote 09:26:14 I think either the number of bytes or the number of bits is better than some kind of word sequence like "char, short, long, uh... long long?" or "byte, short, int, long" or "byte, word, doubleword, quadword" or "byte, halfword, word, doubleword". even "byte, wyde, tetra, octa" gets stuck once you want to name larger sizes. 09:27:07 the x86 architecture has instructions with "quadruple quadword" in their name 09:27:10 it gets ugly 09:29:38 -!- tromp has quit (Remote host closed the connection). 09:29:53 especially because the letters can collide: "S" in the mnemonic is used for "signed", "single", "scalar" and "string" 09:30:26 "D" is always "double", but it can be the "double" of a doubleword (4 bytes), a double quadword (16 bytes), or a double-precision float (8 bytes) 09:31:00 Isn't it up to octuple quadword with AVX-512? 09:31:33 The Intel convention of calling 16 bit values "words" is very annoying. 09:33:18 shachaf: yes, but they gave up trying to give new names, and the only way such large data are manipulated is when you move a whole register worth of data, so the MOVDQA instruction can move not only 16 byte XMM registers, but also full 32 byte or 64 byte registers 09:33:25 DQ stands for double quadword 09:33:54 and the instruction name in the manual is "Move aligned packed integer values", which doesn't even mention "double quadwords" anymore 09:33:59 they realized it's getting ridiculous 09:36:22 well that, plus there's an unaligned version MOVDQUA and the strange SSE4_1 legacy instruction MOVNTDQA, and those can move 32 and 64 byte too now and in the future respectively 09:40:37 oh, and the MOVNTDQ instruction too 09:41:32 Moven't 09:43:28 "I'd be interested in an esolang suitable for describing cards in a MtG-style game" => zzo38 wants a non-eso lang for that, since using it to model M:tG would be a useful thing and thus make the language non-eso 09:44:10 -!- tromp has joined. 09:44:26 zzo38: as for doubling counters, you know there's a card in Ravnica Allg that doubles counters on one object, right? 09:45:23 zzo38: https://scryfall.com/card/rna/123/biogenic-upgrade 09:45:40 it's not really useful for programming though 09:52:03 -!- AnotherTest has joined. 09:57:34 `bobadventureslist http://bobadventures.comicgenesis.com/d/20190210.html 09:57:35 bobadventureslist http://bobadventures.comicgenesis.com/d/20190210.html: b_jonas 09:57:57 Is is possible to have a sequence of consecutive semiprimes of arbitrary length 09:58:15 (like the sequence 21=3*7, 22=2*11 is a sequence of consecutive semiprimes of length 2) 09:59:26 Taneb: no 09:59:49 Taneb: you can't have one longer than 5 10:01:12 b_jonas: can you explain why not? 10:01:50 Taneb: try to figure it out yourself first 10:02:00 OK 10:02:52 I think I have it 10:03:22 The only way a multiple of 6 can be semiprime is if it's 6 10:03:29 And there's a multiple of 6 every six numbers 10:06:03 I think the longest you can do is of length 3, because that argument works for 4 as well 10:06:22 And I found one of length 3, 33=3*11, 34=2*17, 35=5*7 10:19:49 Taneb: you can say something stronger than that 10:19:57 which multiples of 4 are semiprimes? 10:20:07 ah, you already said that 10:20:20 sorry, didn't read all the way down 10:22:29 -!- b_jonas has quit (Quit: leaving). 11:08:58 -!- arseniiv has joined. 11:46:27 -!- AnotherTest has quit (Ping timeout: 240 seconds). 11:55:12 i am so fascinated by the fact that we know there are infinitely many prime paires with a distance of k, but we don't know k yet 11:55:20 i cannot grasp how to prove that 11:55:53 -!- Lord_of_Life has quit (Ping timeout: 245 seconds). 11:55:58 myname: honestly a lot of what we know about prime distribution just seems magic to me 11:56:16 I should read "Introduction to the theory of numbers" in a little more depth 11:56:26 well yeah, that too 11:56:36 -!- Lord_of_Life has joined. 12:12:27 -!- wob_jonas has joined. 12:12:51 zzo38: for the question about Mornington Crescent, see under https://commons.wikimedia.org/wiki/Category:Opera_houses_in_the_United_Kingdom and https://en.wikipedia.org/wiki/Category:Opera_houses_in_England . 12:17:06 zzo38: or do a category-intersection to find all opera houses in London with https://petscan.wmflabs.org/?language=en&project=wikipedia&depth=6&categories=Opera%20houses%20in%20England%0D%0ATheatres%20in%20London&ns%5B0%5D=1&ns%5B14%5D=1&search_max_results=500&interface_language=en&active_tab=&doit= 12:18:04 then you'll probably need to check the location, whether it still exists, and whether it counts as an operetta house 12:18:55 -!- AnotherTest has joined. 13:51:54 -!- tromp has quit (Remote host closed the connection). 13:59:45 -!- monkeystance has joined. 14:00:56 -!- tromp has joined. 14:02:10 -!- izabera has changed nick to self. 14:02:16 -!- self has changed nick to izabera. 14:03:15 -!- monkeystance has left ("Leaving"). 14:35:29 -!- MDude has joined. 15:35:48 -!- xkapastel has joined. 15:44:59 `olist 1155 15:44:59 olist 1155: shachaf oerjan Sgeo FireFly boily nortti b_jonas 15:59:53 -!- kritixilithos has joined. 16:31:42 -!- AnotherTest has quit (Ping timeout: 250 seconds). 16:58:18 -!- AnotherTest has joined. 17:11:59 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client). 17:27:24 [[ElemScript]] https://esolangs.org/w/index.php?diff=59801&oldid=59718 * Areallycoolusername * (+1084) 17:28:31 -!- imode has joined. 17:28:49 [[ElemScript]] https://esolangs.org/w/index.php?diff=59802&oldid=59801 * Areallycoolusername * (+42) /* Hello World Program */ 17:36:43 -!- kritixilithos has quit (Quit: :q). 17:42:12 -!- Essadon has joined. 17:51:20 [[ElemScript]] https://esolangs.org/w/index.php?diff=59803&oldid=59802 * Areallycoolusername * (-42) /* Hello World Program */ 17:57:14 [[ElemScript]] https://esolangs.org/w/index.php?diff=59804&oldid=59803 * Areallycoolusername * (+555) /* Implementations */ 18:04:06 -!- AnotherTest has quit (Ping timeout: 252 seconds). 18:08:46 [[ElemScript]] https://esolangs.org/w/index.php?diff=59805&oldid=59804 * Areallycoolusername * (+26) 18:56:24 -!- b_jonas has joined. 19:21:08 -!- MDude has quit (Ping timeout: 250 seconds). 19:25:05 -!- MDude has joined. 19:45:31 -!- xkapastel has quit (Quit: Connection closed for inactivity). 19:49:47 wob_jonas: Well, anyways the operetta house in XYZABCDE.ZZT game is just called "Operetta House of ZZT", so it isn't an actual operetta house anyways. 19:53:45 -!- xkapastel has joined. 19:59:10 what's the fastest possible invertible float -> string function 19:59:55 (where "string" is a asciz char array) 20:00:47 probably something that offers some kind of lookup table. 20:01:11 hmm, maybe equivalent to "fastest function from an array of bytes that may be zero to a larger array of bytes that are NOT zero" 20:02:08 basically an escaping question 20:02:14 If zeros are rare, escaping them (and the escape character) isn't half bad, though variable-length. 20:03:10 also I don't care how slow reading this back is, just how fast I can dump this to stdout 20:03:59 the main thing is avoiding zero, so that I can use zero to separate things 20:04:37 or escaping zero I guess 20:05:11 yeah, find the least common byte, make it an escape character 20:05:12 Well, you don't need to have a zero in the escape sequence of zero. 20:06:09 can't we do some nice prefix coding instead of zero termination? 20:06:21 int-e: prefix like what 20:06:29 oh including the length? 20:06:37 well... length byte. data. or type tag. data. 20:06:42 riight htat makes more sense 20:07:03 I assumed from the question the context didn't allow for that. 20:07:36 fizzie: well I assumed it was probably slower to dump the length for some reason 20:07:40 fizzie: well yes, but then orin wrote about dumping to stdout and not caring how long it takes to decode... which suggests a larger degree of freedom 20:08:25 it's a debug output where it will be mixed with other output 20:09:34 i think adding the length should not take long at all 20:09:34 I realized it might be faster to do printf("here is the output Oren cares about %d\n",len); then write() ; 20:09:37 for floats 20:09:58 orin: doubtful, the itoa algorithm will take some time 20:10:10 (however, it may beat write() for the unrelated reason of stdio buffering) 20:10:34 I think tag/len/body is the way to go 20:10:43 you can also nest them to log tree-shaped datastructures 20:12:32 I once wrote a library (I'm sure not the first implementation of this idea) where you could do printf-like logging calls, but it would actually just write the arguments in raw form, along with the address of the format string 20:12:58 hmmm... ctully I think it has to be exactly one call to wrtie(), because otherwise ouput from other threads will mix in 20:13:25 and a log viewer which would read the log and the executable used to generate it, and perform the formatting 20:13:35 under the assumption that only string literals are used as format strings 20:13:57 kmc: hmm what about ASLR? 20:14:09 I was just wondering about that :) 20:14:17 (probably a solvable problem, but did you deal with it?) 20:14:22 this was a long time ago, we were on RHEL 4, I don't think there was any ASLR 20:14:27 There are relatively many zeros in popular floats (like 1.0), so if you did want an escape-based solution, it may be best to pick *two* least common bytes (say a, b), and use the mapping {0 -> a, a -> ba, b -> bb, any other x -> x}. 20:14:45 I mean if all else fails you can start your log file by putting in a copy /proc/self/maps 20:14:46 but what I would probably do is just dump the base address of the .data section 20:14:49 mhm 20:15:14 (Assuming Linux, kind of. But other OSs should provide similar facilities.) 20:15:34 extern unsigned char data_section[] __attribute__((section(".data"))); 20:15:36 hmmm does anyone know if write() is atomic 20:16:08 I believe that would create a load time relocation 20:16:27 then you could dump &data_section 20:16:31 or am I just fkd if I want to output anything into a stdout that is shared with other threads all spewing garbage 20:16:36 also I think there are automatically generated symbols for section begin/end 20:16:46 orin: I believe cstdio has locking by default 20:16:50 so fwrite() would be atomic 20:16:56 but I don't recall for sure so look it up 20:17:34 that may be implementation defined 20:17:42 seems likely, as the C spec doesn't even have threads (until C11) 20:17:57 On POSIX for write I think that depends on what you're writing to. For example for a pipe "Write requests of {PIPE_BUF} bytes or less shall not be interleaved with data from other processes doing writes on the same pipe". 20:18:06 "POSIX requires stdio to be thread-safe, which is quite unfortunate since it kills performance and since there's no practical way to operate on the same FILE from multiple threads (data will come out hopelessly interleaved; atomicity is only at the character level)." 20:18:11 hmm 20:18:20 of course you can also implement your own locking. 20:18:47 or send the messages to a single logger thread somehow 20:18:57 (one way would be datagram sockets) 20:20:08 ok I guess I'll just open a new file from MY thread 20:20:23 <3 __attribute__((section())) 20:20:26 I would expect fwrite() to be better overall, unless there are many threads; in the latter case I would think of splitting the log files into one per thread. 20:21:03 Did you see https://github.com/mortehu/xflags ? 20:21:05 well there's a lot of threads writing things, but only one of them writing something I care about 20:21:10 * kmc is not really sure that her particular section() trick works 20:21:54 for constant strings it should be .rodata I suppose 20:22:01 It's a fancy command line flag library that puts the metadata in a section rather than using a bunch of C++ constructors like gflags. 20:23:41 * orin . o O (a library to generate images of flags) 20:24:00 int-e: ah yeah 20:24:13 also you'd be boned if you're using -fdata-sections 20:24:15 idk 20:24:23 it's been a long time since i really thought about these things :/ 20:24:27 I saw "xflags" and assumed it was like part of X11 20:24:34 You can use a linker script to export a start-of-section symbol, and I think something like that might exist by default, but I don't think you can do it with just an extern declaration. 20:24:36 liek xtank and studd 20:24:52 * kmc needs to figure out something to do with her life 20:25:04 orin: I assumed for a long time that pdftk was a gui program using the Tk toolkit 20:25:59 But for the purpose at hand, *any* know .rodata symbol should suffice; it doesn't have to be at the start of the section. 20:26:00 whoa, it's not 20:26:16 *known 20:27:01 int-e: true 20:27:46 $ xflags --blazon "Azure, three fleurs-de-lis Or" 20:28:04 @metar lowi 20:28:06 LOWI 112020Z 06007KT 030V100 9999 -SHSN FEW015 SCT030 BKN050 01/M01 Q1024 R08/29//95 NOSIG 20:30:31 Is ASLR worth the trouble? 20:31:03 questions 20:31:32 in what sense? 20:31:44 isn't it not even that effective 20:31:47 @metar CYYZ 20:31:48 CYYZ 112000Z 09015KT 15SM SCT024 BKN260 M04/M09 A3033 RMK SC4CI2 SLP281 20:32:19 imagine you had to find a needle in a haystack. if the location of the needle was only in a small set of locations, you can find it very easily no matter the haystack you're searching in. 20:32:33 similarly, if the haystack is small, you can just sift through it in a very small amount of time. 20:32:39 Is this an analogy to finding an address in an address space? 20:32:42 yes. 20:32:55 i feel like maybe you can just say "address" and "address space" 20:33:05 people seem to do well with physical analogies. 20:33:28 but i already know what aslr is 20:33:32 shachaf: well, there are ways around it, but they impose other difficulties on attackers 20:33:37 american sign language recognition 20:33:43 lul. 20:33:44 way tougher than speech recognition imo 20:33:49 i don't have a good knowledge of the current landscape on ASLR and ASLR bypass 20:34:03 also, windows ASLR is not as good 20:34:09 or that may have been fixed, but it was true for a long time 20:34:12 if your address space is able to be entirely traversed in a very small amount of time, ASLR won't fix it. 20:34:21 b/c each DLL gets loaded, when possible, at the same address in every process 20:34:23 In my limited understanding, with ASLR, you can't do ROP blindly; you need some information leakage to figure out which addresses to jump to first. 20:34:34 int-e: yeah 20:34:36 or blind guessing 20:34:38 So exploits get quite a bit harder. 20:34:46 but 64 bits gives enough randomization to make blind guessing pretty hard 20:34:59 yup, and that's why it's reasonably effective. 20:35:32 another example is if you're in a tool shop, and you wanna build something, but you're blindfolded and don't know where all the tools are, the shop has to be really small for you to do it in a suitable amount of time, or reasonably well-organized. 20:35:43 (on 32 bit x86 you have less than 20 bits of randomness) 20:35:44 i feel like that analogy isn't physical enough 20:35:49 let's get physical 20:35:51 maybe give me something in terms of electrons and photons 20:36:12 the wavefunction of the addresses you want never collapses. 20:36:15 :P 20:36:22 ∿ 20:36:33 shachaf: https://www.technologyreview.com/s/612887/how-quantum-terrorists-could-bring-down-the-future-internet/ 20:36:42 ∿~- 20:36:50 quantum terrorists 20:36:52 20:36:53 :O 20:36:53 (This has been bugging me since yesterday.) 20:37:12 so there's a finite amount of terrorists, or the terrorists are in a finite amount of states? 20:37:15 int-e: I know you have colors turned off, so I feel obligated to inform you that the above is in rainbow color. 20:37:37 shachaf: much obliged. but please don't do it again. 20:37:42 or do the terrorists have a number of quantized energy levels. 20:38:02 "terrorizing", "kinda tired", "super tired", "sleeping" 20:38:10 int-e: Also that page blocks incognito mode so I'm not going to read it. 20:38:15 But I can appreciate the title. 20:38:44 The thing that has been bugging me most is actually that people are considering to build a quantum internet. Or at least applying for and receiving research grants on that topic. 20:39:12 shachaf: huh, but it works without javascript?! 20:39:24 Yes, apparently it has JavaScript that detects incognito mode and hides the content. 20:39:29 academia can get funding for anything that has buzzwords in it. 20:39:45 that is both a blessing and a curse depending on the intent of people using that funding. 20:39:48 shachaf: so switch off javascript as well :P 20:39:59 (what's the poing of incognito mode if you leave javascript enabled?) 20:40:12 cool black borders. 20:40:54 Hmm, which browser is this anyway. I have "private browsing". 20:41:09 google chrome 20:41:13 shachaf: you could also go to https://arxiv.org/abs/1901.08873 20:41:40 (but I didn't, so I don't know how accessible that paper is) 20:41:55 \rainbow{Quantum Terrorism}: Collective Vulnerability of Global Quantum Systems 20:41:57 int-e: the point is everything is logged out, random sites can't access your facebook account 20:41:57 of course it's on arxiv. 20:42:05 also you can see non-customized results for things 20:42:14 kmc: my what now? 20:42:22 The major imminent investments in quantum technologies will bring concepts like a \rainbow{global quantum Internet} and \rainbow{quantum Internet-of-Things}, closer to reality. 20:42:36 What do these words mean? 20:42:49 kmc: But I know what you're saying. 20:42:51 quantum internet of things. jesus christ. 20:43:06 what does that even mean. 20:43:12 soon your toaster will contain a helium dilution fridge with superconducting chips inside 20:43:17 so that you can quantumly monitor your toastt 20:43:24 function nnfi { nano ` find . -name "$1" ` } 20:43:25 I mean at least it doubles as a fridge. 20:43:43 shachaf: It means that there's smoke from burning VC money. 20:43:47 screw remembering where any of these source files are 20:44:01 shachaf: let's put a billboard on 101 that says "FINALLY, the quantum AI cloud for IoT blockchain" 20:44:02 tagged file system! 20:44:58 @google "finally tagless filesystem" 20:44:59 No Result Found. 20:45:02 :-( 20:45:06 -!- atrapado has joined. 20:45:11 @google "finally tagless file system" 20:45:12 No Result Found. 20:45:15 kmc: How much do 101 billboards cost? 20:45:41 i dunno 20:45:52 i got bored after about 30 seconds trying to figure that out just now 20:46:07 https://www.quora.com/How-much-does-a-billboard-cost-on-101-in-San-Francisco 20:46:10 "Creating a Mobile Application where Billboard Customer and Advertisers can work on booking billboard spaces Will be Approx 12000 - 15,000 USD." 20:46:16 -!- atrapado has quit (Client Quit). 20:46:26 can this person pay me Approx 12000 - 15,000 USD for wasting my time so hard with that answer 20:47:09 it is a shitty answer to the wrong question 20:47:44 "Demand for a billboard along Highway 101 between San Francisco and San Jose, which billboard sellers refer to as the “gold coast,” is so high that some companies are on a six-month waiting list." 20:47:46 the top answer there says you can get something for $500 20:47:54 but that seems low 20:48:04 this is just one of many reasons why 280 is better than 101 20:48:09 no startup billboards 20:48:16 shachaf: maybe it was stuck behind the pillar of a bridge :P 20:48:30 are turing machines mealy machines? I think turing machines are mealy machines. 20:48:31 int-e: I don't get why there's a waiting list instead of an auction. 20:49:08 https://www.sfgate.com/business/article/Billboard-ads-booming-in-Silicon-Valley-5921690.php is what I'm looking at and it quotes a range of $14,000 to $40,000 a month. 20:49:36 kmc: split it? 20:49:53 imo let's just get a billboard in iowa 20:50:55 imode: in the sense that the symbol written may depend on the current tape symbol... yes. 20:51:16 the quantum ai cloud for IoT corn 20:51:26 just hire a graffiti guy on silkroad to spray paint your startup name over teh bilboards 20:51:38 -!- FreeFull has joined. 20:51:44 int-e: right but your machine reacts immediately instead of reacting based on the state that's entered. 20:52:01 can i get my billboard allocation on the \rainbow{blockchain} twh 20:52:10 Why do we care about Mealy and Moore machines? I do recall having to learn this for a computer architecture course but I never saw a motivation (and I can no longer remember which one is which) 20:52:15 == 20:53:17 int-e: it's mainly "how can input affect output". moore machines are typically more stable because their response is based on the current state rather than the current transition, so small "glitches" in input don't accidentally trigger outputs. 20:53:45 but it seems like all automata are mealy machines, not moore ones. 20:55:03 `grWp harvard 20:55:04 No output. 20:55:16 `grWp neumann 20:55:17 No output. 20:55:39 What a great prank this channel is. 20:55:55 We've got people typing strings like "`grWp" non-ironically. 20:56:20 Well, it's UsEfUl. 20:56:46 it's like unix but even more ridiculous 20:57:16 -!- AnotherTest has joined. 20:57:20 (I'm using the word "useful" in a very limited sense here, obviously; the usefulness does not extend beyond #esoteric.) 20:57:33 `? #esoteric 20:57:34 ​#esoteric is the only channel that exists. After monqy left it became slightly off-centër. It's a 7-codimensional hyperenchilada about 30 m (100 ft) across. oerjan seems to be making a lawn in the northern part, but it keeps getting dug up by free ranging moons. Currently located in the Atlantis Exclusion Zone. 20:58:09 Hmm, is the AEZ below water? 20:58:51 kmc: do you understand windows SEH twh 20:58:57 no 20:59:00 imo why are windows things so complicated 20:59:08 why are posix things so complicated 20:59:15 also true 20:59:21 posix is a shit-show 20:59:30 correct 20:59:45 but win32 is quite a mess itself 21:01:09 I feel sorry for the MSFT engineers who had to reimplement all the wacky linux syscalls and flags etc 21:01:16 they seem to have done a really good job 21:01:52 the only thing i tried in WSL that broke was gnu screen 21:01:58 and i'm going to blame screen for that by default 21:02:09 heh does wine work in WSL? :P 21:02:19 because it is an enormous pile of cruft that is probably doing all kinds of terrible things 21:02:28 and POSIX terminal stuff is crazy 21:03:03 int-e: you'd need to add an X server as that's not part of WSL 21:03:20 The Linux system call ABI is much more reasonable than all of POSIX. 21:03:39 I agree 21:03:46 I wonder how many ioctls they implemented 21:03:53 you need some for terminal stuff at least 21:03:59 `? ioctl 21:04:00 ioctl? ¯\(°​_o)/¯ 21:04:18 ioctls are bad 21:04:18 Something with HP Lovecraft, maybe? 21:05:23 "I wish I had a system call for... but I'd have to design a proper API and convince 10 million people... let's put in an ioctl instead." 21:05:30 yeah 21:06:28 The Windows approach of having regular functions for syscall services seems p. reasonable. 21:06:37 Except they do all sorts of odd things. 21:06:45 what do you mean? 21:07:26 The way you make a window in Win32 is you pass it a window callback and it can call it whenever it feels like. 21:07:38 right 21:07:47 Even though you also need to get window events, it can call it outside your event loop. 21:07:55 good times imo 21:10:01 At least a syscall ABI would probably not do things like that. 21:10:07 Except for signals, I guess, so who knows. 21:12:15 yeah 21:12:31 posix signals are bad too 21:12:33 everything is bad 21:12:44 some things are good 21:12:46 everything should be a fd 21:12:47 like cats 21:13:09 signalfd is pg 21:13:21 windows is full of handles IIRC 21:13:25 yep 21:13:40 shachaf: should i learn winapi sometime 21:13:43 why 21:13:51 signals are a mixed bag. some things really need to be so async that they should be handled by signals, so then you use signals. for some things like SIGPIPE the signal is only there for historical compatibility, and you just use the sane interface instead. 21:14:37 for the rest, when you don't need async but there's no specific non-signal interface, like SIGCLD, you use signalfd on linux, or have the signal wake up your event loop otherwise, for which there are event libraries like schmorp's libev. 21:14:41 i'm not convinced signals are the way to go 21:14:48 but perhaps it should be an option, yeah 21:14:50 that's for unix. I don't know about win32 api. 21:14:57 i think signalfd is a nicer way to do signals in many cases 21:15:10 kmc: like I said, sometimes you need them, and sometimes you don't, in any case we can't get rid of signals now 21:15:42 yeah 21:16:14 Windows SEH is the analog of signals, I think? 21:16:29 And it does all sorts of complicated things like stack unwinding. 21:16:53 stack unwinding is complicated 21:16:59 Sometimes SIGPIPE is useful for terminating the process without having to program it yourself (you can tell it to ignore SIGPIPE if you do not want that; custom signal handlers are probably not so useful for SIGPIPE though), but unfortunately you cannot tell which file descriptors to use SIGPIPE and which don't (except for sockets), which can be a problem if writing a library rather than a standalone program. 21:17:06 is the elf stack unwinding bytecode turing complete 21:18:01 (I would think normally you would want SIGPIPE only for file descriptor 1 anyways, but nevertheless it is used for all file descriptors.) 21:19:10 -!- arseniiv has quit (Quit: gone completely :o). 21:19:43 shachaf: did you know that openbsd implements pselect() as a userspace wrapper for select() 21:19:48 thereby defeating the entire purpose 21:19:57 and breaking posix compatibility 21:20:09 at least it was so at one point 21:20:13 no 21:21:34 ^style 21:21:34 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 21:21:38 ^style irc 21:21:38 Selected style: irc (IRC logs of freenode/#esoteric, freenode/#scheme and ircnet/#douglasadams) 21:21:45 fungot: why can't we have nice software? 21:21:45 int-e: today's revenge of the nerds is called? iirc, you're not using emacs. 21:21:54 posix is pretty esoteric 21:21:58 zzo38: I don't think SIGPIPE is too useful even for fd 1, because the programs that want to terminate on SIGPIPE also want to terminate when they get any unexpected error from write, not just EPIPE. 21:22:03 that... worked better than expected 21:22:34 b_jonas: Yes, that is a valid point. 21:23:22 I think EPIPE comes from the times when memory was so tight that some programs didn't include the error handling code that they should have, just to gain a little space 21:25:32 kmc: imo invent a good system call api instead twh 21:26:10 shachaf: well, i've thought about it 21:26:22 there are a few things i think would be important 21:27:03 #1 is a uniform way to refer to kernel objects 21:27:07 like a capability 21:27:30 this would prevent many issues in posix such as the race condition on PIDs, which are just integers and not fds 21:27:48 kmc: don't we already mostly have that, with file descriptor-like objects, fds on unix, and whatever their fancy windows equivalent is called on win32? 21:27:54 some uppercase thing 21:28:05 which has some generic way to get sent to a spawned process too 21:28:08 b_jonas: that is the kind of thing i mean, but they aren't uniformly used in posix 21:28:14 Except lots of things aren't fds. 21:28:20 there are many other ways to refer to kernel objects which have various issues 21:28:35 possibly even designed better on win32 than on unix, though they have the advantage of less historical baggage 21:28:41 such as, you can fork() to create a child process, then the process dies and the PID is reused, now you will be sending signals to some random other process 21:28:45 what if everything was a 64 bit UUID 21:28:49 is fork() even a good api 21:28:52 is it worth the trouble 21:28:56 shachaf: probably not, but it's fun 21:29:02 kmc: yes, that one is a known problem that's still not solved 21:29:08 you can implement a limited form of call/cc with fork 21:29:16 i was p. happy with myself when i got that to work 21:29:23 orin: 64 bits is not v. universal hth 21:29:27 naming processes 21:29:43 shachaf: fork() and exec() should be combined into a single thing 21:29:43 I thought of something too, there is some similarity like Plan9 that you can use files for most stuff, so maybe if it is call Plan10. You can use file descriptors for many object including processes like you mention (although process IDs exist too, which are used to find a running process in the file system). If your program does not define Plan10Main() then the default implementation sets up POSIX compatibility and then calls main() 21:29:45 sadly the namespace is even just 15 bits large, so it gets reused very quickly 21:29:58 (The default implementation of Plan10Main() is added by the C compiler) 21:30:02 and yeah sending fds or equivalent between processes is important 21:30:18 that is one of the good things in posix, even if the API for it is really shitty 21:30:27 creds too 21:30:40 I think creds could be consumed by that sort of fd-as-capability, but i'm not sure 21:30:48 kmc: sure, the sending part is fine, and both unix and win32 has that. the hard part is not sending on unix, again because of really old historical reasons 21:30:49 did you know bitcoin does 2^65 hashes per second 21:30:59 argh 21:31:04 that's a lot 21:31:42 shachaf: that's too many, we need to shut down bitcoin 21:31:52 shachaf: I also think it's important to have a uniform way for userspace and kernelspace to exchange structured data 21:32:06 I also thought of fork(), I thought that sometimes fork() is helpful although another variant that can often be better, which can be called cfork(), which shares all memory and all registers even including the program counter and stack pointer, and suspends the parent process; once the child terminates or executes another program instead then the parent continues from there; exec() returns 0 if successful in this case. 21:32:27 More than pointers to C structs? 21:32:51 This way, you can program many things before calling the other program. 21:33:00 zzo38: Is that just vfork? 21:33:06 which would be a) documented in a machine readable way, with b) autogenerated bindings for popular languages, c) typed, d) fast 21:33:09 shachaf: no, it's slightly different from vfork 21:33:22 (You don't need vfork() anymore, because cfork() is better) 21:33:24 I for one don't see the point to introduce that now, since we do have a working vfork 21:33:27 still 21:33:27 shachaf: well, there are some problems with the ways structs are used in posix 21:33:33 i find them pretty cumbersome 21:33:39 for one, there are so many of them 21:33:47 shachaf: Not quite; it is a bit different. 21:33:52 I mean, at some point it might be good for OSes to be built on something other than raw binary data 21:33:53 I mean, if you designed it all over from the scratch it may have been better, 21:33:57 but I don't see much point 21:34:03 it's not like it would save much resources 21:34:07 I think a typed FS could be very interesting too 21:34:11 strongly typed shell pipelines 21:34:35 kmc: PowerShell does that IIRC 21:34:43 Doesn't PowerShell have typed pipelines? 21:34:51 shachaf: as it happens, Cap'n Proto satisfies all of those criteria, plus it has a capability system, plus compatibility between different protocol versions 21:35:44 another obvious thing to do with a capabilities based OS is to add some cryptography so that capabilities can be signed and serialized and shipped around the world 21:36:01 but windows is still built on top of raw CPU stuff rather than on top of the CLI 21:36:38 Cap'n Proto for system calls? I'm a bit skeptical. 21:36:43 whereas you could have a strongly typed language as the layer below most of the operating system 21:36:48 shachaf: well, it's just an aside 21:37:24 if you can send capabilites then you can also implement sockets that way 21:37:26 which would probably cost some speed but increase safety 21:37:34 opening a connection is done by sending a capability 21:37:51 this will also give you some transport layer security 21:38:04 Sending a capability to whom? 21:38:14 anyway. kernel capabilities and structured/typed data. 21:38:17 kmc: most of those probably needn't involve the kernel, they can be done as a wrapper on user side, with a demon that handles the cryptography stuff 21:38:27 true 21:38:35 I agree about structured data 21:38:38 shachaf: sending it to a process on that machine which handles new connections, i guess 21:38:43 but im not sure about typed data or caps 21:38:44 the main problem with that is the vast amount of software already rlying at some point on the unsafety of the computer it runs on 21:39:10 kmc: speaking of all these things, have you seen the mill yet 21:39:25 >___< 21:39:28 imo watch the first few videos at 2x speed 21:39:31 I think that vfork() does not share registers and does not guarantee sharing memory or suspending the parent process; my proposal changes those things. 21:40:17 shachaf: do you like or dislike the thing where you have c structs which start with a tag and length field 21:40:28 and then you can cast between different types 21:40:32 [[User:Cortex]] https://esolangs.org/w/index.php?diff=59806&oldid=59781 * Cortex * (+12) 21:40:33 zzo38: yes. and I still don't see why what you propose would be so useful it's worth kernel support 21:40:51 What is that thing? 21:41:09 zzo38: vfork suspends the parent process 21:41:30 shachaf: like, you can have different versions of a struct but they all start with the information necessary to determine its type and length 21:41:36 idk, seems like it could be good for api compatibility 21:41:45 I've heard of a version with the length. 21:41:47 you can add fields w/o breaking anything 21:41:51 yeah 21:41:58 Where the same function can accept multiple versions of a struct as long as you increase the length each time. 21:41:58 int-e: yes, but it doesn't _guarantee_ that, on account that Linus said like twenty-five years ago that if people abuse vfork for things that aren't just an optimization over fork, then he'll change it to act as fork 21:42:02 Someone said Windows does that? 21:42:06 I haven't used it. 21:42:14 shachaf: ksplice did some silly things to add fields to structs 21:42:23 sometimes storing it in padding or an unused field 21:42:34 or in a hash table keyed by the struct's address 21:43:32 vfork() isn't very pointful on modern virtual memory machines 21:44:08 kmc: did you know there are some architectures without virtual memory where linux has vfork but not fork 21:44:12 oh are we discussing Linux or POSIX? The manpage says that POSIX deprecated vfork. 21:44:15 kmc: it sure is, if you're like git and spawn a thousand child processes 21:44:28 shachaf: that makes sense 21:44:38 int-e: As b_jonas said, it is not guaranteed. Also, it does not share the program counter with the parent process, and might not share variables that are stored in registers, as far as as I know. 21:46:14 shachaf: do you think it's good to have a syscall like clone() that lets you individually decide which things to share or not share? 21:46:27 why not? 21:46:39 idk 21:46:45 a lot of windows system calls can take a process handle as an argument 21:46:54 so the mmap equivalent can allocate in another process's address space and so on 21:46:59 that's neat 21:47:06 seems much nicer than ptrace for debuggers for instance 21:47:09 I remember UML doing some nasty hacks for that 21:47:16 UML? 21:47:19 user mode linux 21:47:24 Ah. 21:47:24 ` uname -a 21:47:25 ​/srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: : not found 21:47:26 `` uname -a 21:47:27 Linux (none) 4.9.82 #6 Sat Apr 7 13:45:01 BST 2018 x86_64 GNU/Linux 21:47:34 aw 21:48:00 I thought that did mention UML at some point. 21:48:10 ``` cat /proc/cpuinfo | sed -n 2p 21:48:11 vendor_id: User Mode Linux 21:48:12 is that the same bot that was here forever ago 21:48:13 int-e: ^ 21:48:29 kmc: it's a reincarnation, the one that was here forever ago was called HackEgo 21:48:35 yeah 21:48:40 same codebase? 21:48:51 the userspace contents was inherited from a backup of HackEgo 21:48:58 I don't know about the codebase, fizzie knows 21:49:03 I know he made some substantial changes 21:49:05 I remember poking at UML for a while trying to find an exploit for the bot 21:49:06 but some of it are probably kept 21:49:14 kmc: I believe so, since Gregor made it public. 21:49:34 (that yes, yes, it's the same codebase) 21:49:37 fizzie is the keeper of the bot now 21:49:49 `? hackeso 21:49:50 HackEso is almost but not quite unlike HackEgo. 21:50:39 isn't that missing a "completely"... 21:51:05 or 'entirely' 21:51:13 But then it would be false. 21:51:20 kmc: maybe you should work on the mill team 21:51:27 get some sweet equity 21:51:35 FireFly: ah yes, it's "entirely". 21:51:43 j-bot is also sort of such a reincarnation. I gave away the code but I no longer support it. 21:51:52 I do use it though 21:52:01 [ |.'lufesu' 21:52:02 b_jonas: useful 21:52:13 is it written in J? 21:52:15 did tangentstorm succeed after you, or was there someone in-between? 21:52:18 kmc: It's essentially the same codebase, I've made a few tweaks but I made those when it was still HackEgo. 21:52:19 no, in ruby 21:52:21 kmc: no, worse. ruby 1.8. 21:52:36 (I don't speak ruby, so I just host it in a mostly-working state) 21:52:56 never got ported to ruby 1.9, and you have to correct syntax errors and then fix some references to String methods to port it over to any ruby that's still supported, which is like 2.1 now 21:53:02 fungot: where's boily? 21:53:02 int-e: i see what you mean? if so, we can use more bits in local loops. it definitely uses _lots_ of tail calls is guaranteed to make venom bleed out of your nose 21:53:05 or 2.3 or something 21:53:09 Well, maybe a few tweaks since then too. But still. 21:53:10 oh I might've done that maybe 21:53:19 hi fizzie 21:53:20 I recall having to do some minor edits to get it running 21:53:40 ruby --version is apparently 2.5.0 21:53:41 it might still have 21:53:49 j-bot source: 21:53:49 b_jonas, jevalbot source is http://www.math.bme.hu/~ambrus/pu/jevalbot.tgz 21:53:50 that command 21:53:52 yeah 21:54:00 that points to where I gave away the code 21:54:46 hm I should put the changes I made locally on https://github.com/FireyFly/jevalbot 21:54:55 and then maybe update that command to point there instead.. 21:54:59 yeah 21:55:03 What would you think of opinion of some interactive fiction VMs such as Z-machine, Glulx, TAVERN, OASYS, etc? (Maybe in future might also be TAVERN32, to make a 32-bit VM to combine good ideas from Glulx with TAVERN.) 21:56:36 kmc: should 64-bit computers use a single address space 21:56:44 idk 21:56:47 what's the advantage? 21:57:21 MMIX has positive (virtual) addresses, and negative (physical) addresses. 21:57:29 one of the mill videos talks about it 21:57:36 no tlb, for one 21:57:52 or at least it's not on a hot path for every l1 access 21:59:44 Tricky... how do you do process isolation, and shared memory? 22:00:28 channels~ 22:00:33 The way the Mill people do it they have protection separate from translation. 22:00:40 (these work against each other but I imagine one would end up with something TLB-like that keeps track of ownership/permissions anyway, and you will have that in the path to L1, or incur the wrath of the spectre.) 22:05:55 b_jonas: oh, and it looks like I didn't declare you admin in the config file--I guess I could change that if you'd like 22:06:05 FireFly: I don't think it matters 22:06:20 FireFly: the admin thingy is not very useful, especially since it goes only by nick 22:06:20 alright, I'll keep it as it is then 22:06:28 oh *nod* 22:06:35 so don't allow anything to admins that you don't want to allow to everyone 22:06:37 I hope it doesn't let an admin do too much 22:06:42 unless you change that code entirely 22:06:51 As mentioned, I don't really speak ruby :p 22:07:02 so my modifications have been minimal 22:07:14 if you want to allow more administration stuff, you probably have to add a local control interface that doesn't go through IRC. it's possible through irc, but not very useful 22:07:50 FireFly: from memory, it allows to quit the entire bot, to join or leave channels, to enable or disable the short invocation on channels, 22:07:55 and to ignore or unignore people 22:07:58 nicks 22:08:16 can you query whether a nick is registered on nickserv? 22:08:20 or i mean 22:08:29 kmc: you can. it's a bit complicated 22:08:35 there's three IRC extensions that you have to use for it 22:08:38 I mean nowadays you can request a capability for it 22:08:38 have it check that the nick being used is registered to the right account 22:08:41 lol 22:09:04 kmc: for this, it's not really worth IMO 22:09:09 it can be worth for other IRC stuff 22:09:15 I can tell the details if you really care 22:09:22 if you want to implement it that is 22:09:55 I figured it out at some point, with the help of #freenode, for potentially the other IRC bot 22:10:01 never really considered it for jevalbot 22:10:13 Maybe you can check for the client's address. 22:10:34 Use the entire address for authentication instead of only the nickname. 22:10:42 zzo38: yes you can, if you want anyone on the wifi behind the NAT to control the bot 22:10:56 I know that's a well-spread security model in some companies, but I don't really like it 22:11:28 Yes, it can be problem if you have Wi-Fi. But even then you could use cloaking; Freenode has that 22:11:53 heck, even the model where you need the login password of one of 20 random people working at the company to access every private data of the company isn't a model I like 22:12:14 zzo38: even without wifi it's a bad idea, most local networks are just not controlled enough 22:13:06 zzo38: and yes, you could use cloaking, that's a bit better, but then you could also use an invite-only channel, or just control the bot locally without going over IRC 22:13:37 O, well, it can work if it is controlled enough. But, yes, invite might also do, if you need to do with IRC. Local administration is probably best though in most cases 22:14:07 you could also send a password with each command in PM 22:14:28 kmc: yes, but if it's a cleartext password, then you need a way to tell that the bot is really what it claims it to be 22:14:33 for which you need a channel 22:14:35 hmm 22:14:37 yeah 22:14:42 it gets uglier than the bot telling who you are 22:14:45 Yes, I thought of that too, but you will need to identify them like b_jonas mention 22:14:53 (a channel or memoserv actually) 22:15:12 you can avoid that by using cryptography 22:16:15 it'd be a little cumbersome to sign every message, but you could have an IRC client do it I suppose 22:16:50 b_jonas: https://github.com/FireyFly/jevalbot/commit/e715b6d0bc1d4a8578d5c7e8d803b0cb069c71f6 the diff is a bit messy, I guess I also removed some trailing whitespace at some point 22:17:18 but apparently with the version check commented out and mostly like.. changing some regexps to use RegExp.new, it seems to work 22:18:25 oh and I guess I didn't care much for the nickserv bits.. 22:18:47 oh, no, I switched to identifying to nickserv account via PASS instead 22:25:27 The Mill also does implement fork using a special kind of translation 22:25:46 I swapped a CDful of randomness with a friend once with the intention of using it for one-time padding our /query. 22:25:51 Never unfortunately happened. 22:27:28 Also fungot's admin privilege is enabled by matching the message prefix to a preset nick!user@host (because it was easier than any wildcarding), which I guess should be as difficult to circumvent as getting an arbitrary cloak on Freenode is. 22:27:28 fizzie: the germanic subset is fnord, even to non-customers: a few people :) and no confirmed time travelers 22:30:41 kmc: Remember that one-time authentication scheme we talked about once? 22:30:57 I don't remember how it worked but it was TG that it was possible 22:32:34 which one 22:33:15 The counterpart of one-time pads for authentication 22:35:05 by the way, it's kind of scow that OTP is so malleable 22:35:11 can you do better twh 22:36:04 sure... add authentication 22:36:14 other than that 22:36:23 it's a feature 22:36:47 some cipher modes are less malleable than others 22:37:13 people don't use stream ciphers for disk encryption for various reasons probably including this one 22:46:14 yeah disk encryption is weird 22:47:35 I mean, not actually this reason but related reasons that also apply to OTP 22:47:39 Yeah... where do you put the MAC :) (I learned that "enterprise" drives support sector sizes a bit over a power of two for that purpose.) 22:49:02 By the way, do you know the trick for using arbitrary memory as a zero-initialized array without explicitly initializing it? 22:49:14 It's not a good trick but it was kind of surprising that it was possible. 22:49:23 s/good/practical/ 22:51:54 -!- arseniiv has joined. 22:52:09 oh? 22:53:00 You also need two extra arrays of the same length. 22:55:32 The trick is, you have three arrays, T data[N], int valid[N], int confirmation[N], and an index, c, where confirmation[0:c] is considered initialized. 22:55:54 valid has indices into confimration, and confirmation has indices into valid 22:56:07 data[i] is valid if valid[i] < c, and confirmation[valid[i]] == i 22:56:14 * int-e knew 22:56:39 And it's useful for sparse arrays if you have tons of memory? 22:57:19 So each time you see an invalid index you add it to confirmation and increment c. 22:57:22 I'll wager there's no practical use for it. 22:57:33 Maybe if T is huge itself. 22:58:51 If you wanted you could have one bit vector indicating which elements of your data array are valid. 22:58:57 I could see uses for that. 22:59:19 Yeah, that sounds more sensible. 22:59:48 I should stop saying "vector" to mean "array" 22:59:50 But from a theoretical perspective this is brilliant :) 23:00:17 i like this trick for the whoa, dude value 23:00:31 do you have any more whoa, dude algorithm tricks for me twh 23:00:35 shachaf: and start using "matrix" to mean "heap"? 23:00:48 Hm? 23:00:53 x += y; y = x - y; x -= y; 23:01:23 vector is a c++ism anyway 23:01:49 i,i https://twitter.com/johnregehr/status/1093948316948168704 23:01:54 (That's the ^ swap trick for rings that don't have characteristic 2.) 23:03:01 Right. 23:03:24 What algorithms should go in my list of clever and simple algorithms? 23:03:58 I have 23:04:00 hashlife 23:04:00 mergesort I guess? 23:04:06 pollard's rho hash collisions 23:04:29 questions. 23:04:31 exhaustive search of compact infinite spaces ("seemingly impossible functional programs") 23:04:52 I mean, mergesort is IMO the simplest efficient sort 23:05:15 I think mergesort is a bit too well known. 23:06:18 hmm, although I'm not actually sure what makes me percieve it as simpler than quicksort 23:06:31 quacksort 23:06:57 I guess because there's no question of arbitrarily picking a pivot 23:07:18 therefore no weird inputs that can screw it up 23:08:06 yeah htat's why mergesort is simpler to implement 23:08:48 shachaf: related to the collisions: rainbow tables 23:08:58 you need heap sort to combine the advantages 23:09:20 That uninitialized memory trick seems very close to the other uninitialized memory trick, https://research.swtch.com/sparse 23:09:34 int-e: Rainbow tables are kind of close to Pollard's Rho, right? 23:09:56 kmc: yeah but heapsort is hard to remember the details of, even more than quicksort 23:11:10 fizzie: Isn't that the same trick? 23:11:19 shachaf: they solve a different problem (preimages) and they have the distinguished subset trick for that. Which also comes in handy when parallelizing the search for hash collisions. 23:11:25 "is-member(i): return sparse[i] < n && dense[sparse[i]] == i" is the thing I said, anyway 23:11:54 shachaf: Your trick had an extra T data[N], this is just a set of integers. But I guess it's essentially the same trick. 23:12:14 They just use void as T, I think. 23:12:41 Assuming sizeof (void data[N]) == 0 23:12:51 Also assuming that's not a syntax error. 23:12:52 Yes. So it's an (allegedly) practical use for the trick, then. 23:13:27 I think that's a syntax error. `sizeof (void[N])` would have been a constraint violation but not a syntax error. 23:13:42 Although on GCC it would've been just N. 23:14:33 (I'm guessing. At least it allows pointer arithmetic on a `void *` assuming an element size of 1. For consistency's sake, you'd expect sizeof (void) == 1.) 23:14:44 ha, consistency 23:14:57 shachaf: so, basically, I think the distinguished subset trick, while related, is worth having its own entry on the list of clever ideas 23:15:00 "In GNU C, addition and subtraction operations are supported on pointers to void and on pointers to functions. This is done by treating the size of a void or of a function as 1. 23:15:03 A consequence of this is that sizeof is also allowed on void and on function types, and returns 1." 23:15:06 See, consistency. 23:15:16 well, ok 23:15:19 fizzie: You could also put a generation ID for each element and increase it by 1 to reset. 23:16:04 (Come to think of it, it might still not allow arrays of void even if void has a size.) 23:16:10 what is the sizeof an uninhabited type 23:16:19 is it -∞ 23:16:20 whoa 23:16:30 Unicode has COMBINING INFINITY᪲ 23:16:34 and no one ever told me 23:16:42 i,i COMBINING SEAGULL BELOW 23:17:23 modular smileys? 23:17:42 combining left-eyed monocle 23:17:52 °͜° 23:18:28 "COMBINING LATIN SMALL LETTER O WITH LIGHT CENTRALIZATION STROKE" (and the same for U) is the longest-named combining character. 23:18:45 With COMBINING LATIN SMALL LETTER L WITH DOUBLE MIDDLE TILDE as the runner-up. 23:19:09 COMBINING HORN is the shortest. 23:19:17 COMBINING LATIN SMALL LETTER U WITH LIGHT CENTRALIZATION STROKE matches it 23:19:17 I think it's also a magical artifact? 23:19:27 shachaf: That's "the same for U". 23:19:33 Oh. 23:19:38 You can't expect me to read inside parentheses! 23:19:49 shachaf: disjoint set forests are probably my favorite data structure 23:19:56 int-e: Union-find? 23:19:58 yes 23:20:05 that data structure is tg 23:20:40 I should add to my question that I mean data structures and algorithms that aren't in a typical undergraduate CS curriculum or something. 23:21:54 Why is reading Unicode character names so much fun anyway? I can't stop imagining the warning signs about COMBINING SEAGULL BELOW. 23:22:03 what is the shortest code point name 23:22:14 Looks like U+1F402 OX 23:22:17 Yes. 23:22:29 And ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM is still the longest. 23:23:30 what does the syntax ```namespace {``` mean? 23:23:33 wasn't this channel going to adopt a code point together 23:23:39 orin: It's an unnamed namespace. 23:23:43 orin: unnamed namespace, or unnamespace for short hth 23:23:51 god damn it 23:24:21 the namespace that can be spoken of 23:24:21 orin: You can use it to make symbols externally invisible. 23:24:25 is not the eternal namespace 23:24:29 "Its members have potential scope from their point of declaration to the end of the translation unit, and have internal linkage." 23:24:41 I need them to be externally visible agian god damn it 23:24:45 You should be thankful they didn't use the keyword "static" for it. 23:24:57 static namespace { 23:24:58 "static namespace { ... }" has a nice ring. 23:25:07 Did you hear that one about the hyphenated keywords? 23:25:30 "While one might think such things are too ridiculous to consider, note that we received serious-seeming suggestions during JEP 325 to use `new switch` to describe a switch with different semantics. Presumably to be followed by `new new switch` in ten years." 23:25:34 http://mail.openjdk.java.net/pipermail/amber-spec-experts/2019-January/000945.html 23:25:38 (That was for Java.) 23:26:18 obviously you gotta change the vowel 23:26:27 The tl;dr is a suggestion to allow - and - constructions to be used as keywords. 23:26:28 switch swatch swetch swotch swutch 23:27:14 ok I'm temporarily nameing the previously unnamed namespace as "namespace goddamnit {" 23:27:16 'static namespace' would be p. reasonable 23:27:26 namespace[static 4] 23:27:34 orin: I've usually used "namespace internal {" if I've needed an unnamed namespace that's named. 23:27:58 and then 'using internal;'? 23:28:02 well it only needs to be named until I find the bug 23:28:04 can you use using at file scope? 23:28:16 shachaf: did you know that the Unicode red heart emoji is actually HEAVY BLACK HEART 23:28:19 I only just learned this 23:28:33 quite a change imo 23:28:40 shachaf: yes, I know that trick (of using uninitialized memory), but I think that's one of those things that are almost never practical in the real world 23:28:45 I think you can use "using namespace /name/;" at file scope. 23:29:04 anyway I tried to make a HEAVY BLACK HEART with COMBINING INFINITY but it looks terrible :/ 23:29:13 fizzie: ah, right 23:29:25 "i like this trick for the whoa, dude value" => yeah, that's a good summary 23:29:40 kmc: That one seems to be rendering as a black heart here? 23:30:00 https://emojipedia.org/heavy-black-heart/ 23:30:04 There are a bunch of actual colored hearts. 23:30:19 I guess this is it. 23:30:37 Also my Android keyboard has two different smiley faces that look similar. One of them has a smile that's a little bit wider. 23:30:41 I don't know which one to use. 23:31:00 huh 23:31:09 Is there a way to determine the codepoint numbers of them? 23:31:15 -!- Essadon has quit (Quit: Qutting). 23:31:19 If you can do that then you can figure out which one should be used. 23:31:19 Yes, but I don't feel like bothering. 23:31:29 shachaf: I think the other one is the SLIGHTLY SMILING FACE. 23:31:38 Why is it so complicated to transfer text from my computer to my phone? 23:31:47 fizzie: Ah, that sounds plausible. 23:32:02 I guess if I want a full smile I gotta give up on SLIGHTLY SMILING FACE. 23:32:08 WSL terminal doesn't support emoji and stuff :( 23:32:13 shachaf: (The new Hangouts Chat experience shows the names in the suggestobox when you type a : on the computer.) 23:32:17 shachaf: transfer to your phone for what goal? 23:32:31 fizzie: But Hangouts Chat isn't available for consumers, right? 23:32:35 shachaf: do you have internet access on your phone? can you pastebin the text? 23:32:44 shachaf: I think it's only available to G Suite customers, yes. 23:32:48 Yes, but that's the hassley way. 23:37:47 I usually use a temporary Google Keep note for that. 23:37:59 fizzie: That's also what I do! 23:38:15 And it involves many steps. 23:38:21 Heh. I've been thinking it's not the right way to use Keep, but two people can't be wrong. 23:38:32 -!- zemhill______ has joined. 23:38:35 I should probably have a special-purpose Keep note for it so I can select all. 23:38:35 It does involve that, yes. And the syncing isn't super seamless. 23:38:35 -!- ATMunn_ has joined. 23:38:40 Right now I have other junk in the same note. 23:38:45 zemhill______: You're getting a little ridiculous with the underscores. 23:39:48 (Should finish migrating the BF Joust hill to esolangs.org and the esowiki bot, then I could retire that thing.) 23:44:35 -!- fungot` has joined. 23:45:07 Uh, what's that now. 23:45:22 fungot` 23:45:22 shachaf: i did just now is instead of storing the data in. 23:45:33 ah, that explains it 23:45:42 I guess the other one dropped off. 23:45:48 fungot 23:45:49 shachaf: the only thing that guy knows how to quote " within fnord in forth? all other postscript operator names ( re stack, anyway, try the lot and see what it looks like 23:46:04 (It doesn't actually know what it's own nick is.) 23:46:33 -!- tromp has quit (*.net *.split). 23:46:33 -!- fungot has quit (*.net *.split). 23:46:33 -!- ATMunn has quit (*.net *.split). 23:46:34 -!- dingwat has quit (*.net *.split). 23:46:34 -!- neanias has quit (*.net *.split). 23:46:34 -!- paul2520 has quit (*.net *.split). 23:46:34 -!- zemhill_____ has quit (*.net *.split). 23:47:41 kmc: Now Unicode also has a BLACK HEART which is actually rendered black 23:48:15 ♪ I see a red heart and I want it painted black ♪ 23:48:21 :) 23:49:02 Remember the old Android hearts? They were nonsense. 23:49:08 no 23:49:22 This was YELLOW HEART https://emojipedia.org/google/android-4.4/yellow-heart/ 23:49:32 -!- Vorpal has quit (Ping timeout: 246 seconds). 23:49:33 And https://emojipedia.org/google/android-4.4/green-heart/ and so on 23:51:19 J? 23:51:47 ^^ intended for ctrl-f search, saw a glimpse of "J?" in the scrollup 23:52:21 oh hey! that might be the one rare example when my honorable and learned friend fungot put a space after an open quotation mark correctly 23:52:21 b_jonas: null date, null char, null int, null double, null etc). what good is functional programming" 23:53:17 shachaf: are you sure? isn't it just rendered solid, when normally heart suit and diamond suit would be rendered as an outline? 23:53:42 -!- AnotherTest has quit (Ping timeout: 272 seconds). 23:53:51 -!- Lord_of_Life_ has joined. 23:54:01 Unicode has both BLACK HEART SUIT ♥ and WHITE HEART SUIT ♡ 23:54:24 And HEAVY BLACK HEART ❤ and BLACK HEART 🖤 23:54:39 shachaf: um yes, so I say those are solid and outlined respectively, whereas the original heart suit is ambiguous 23:54:56 you know, like how the ascii minus and ascii hyphen are ambiguous too 23:55:54 -!- Vorpal has joined. 23:56:34 -!- oerjan has joined. 23:56:40 -!- Lord_of_Life has quit (Ping timeout: 246 seconds). 23:56:43 -!- Lord_of_Life_ has changed nick to Lord_of_Life. 23:56:53 b_jonas: but they later biguated them in unicode but kept the ambiguous one too 23:57:39 I don't think there's any "original heart suit", all three of HEAVY BLACK HEART, BLACK HEART SUIT and WHITE HEART SUIT are from Unicode 3.2. 23:58:19 SMILING HEART WITH HEART-SHAPED EYES 23:58:29 SCOWMAN WITHOUT SCOW 23:58:35 i like the cat w/ heart eyes 23:58:47 cats are tg 23:58:59 can #esoteric be the esolang + cat channel 23:59:01 I miss when emojis were tiny inline .gif files 23:59:11 on forums and stuff? 23:59:14 SA had some good ones 23:59:16 yeah 23:59:32 imo why doesn't unicode have combining characters to control animation 23:59:34 and on AIM 23:59:40 orin: "biguated"? what does that mean? 23:59:41 shachaf: In Chat, I keep a catbot window open because it doesn't have any "no chat visible" mode (that I can find) and it feels arbitrary to keep a specific chat window open. 23:59:56 fizzie: Chat being Hangouts Chat?