00:00:02 -!- danieljabailey has quit (Quit: ZNC 1.6.6+deb1ubuntu0.1 - http://znc.in).
00:00:41 <HackEso> int-e: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: <https://esolangs.org/>. (For the other kind of esoterica, try #esoteric on EFnet or DALnet.)
00:01:03 <HackEso> 5184:2014-12-09 <FireFl̈y> ` sed -ir \'s/sed.*/tr -d aeoiu/\' bin/wlcm; cat bin/wlcm \ 5183:2014-12-09 <FireFl̈y> ` sed -ir \'s/.$/g&/\' bin/wlcm; cat bin/wlcm
00:01:29 <HackEso> FrFly: Wlcm t th ntrntnl hb fr strc prgrmmng lngg dsgn nd dplymnt! Fr mr nfrmtn, chck t r wk: <https://slngs.rg/>. (Fr th thr knd f strc, try #strc n EFnt r DALnt.)
00:02:21 <int-e> I ended up checking whether it's colorful... it wasn't.
00:02:43 <FireFly> I don't remember creating that
00:03:06 <shachaf> 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:04:11 <int-e> why would you make a backup rather than just use -i ?
00:04:33 <FireFly> -r is how GNU sed spells -E
00:04:40 <int-e> FireFly: then use -ri
00:04:42 <shachaf> sed -ir is not sed -i -r hth
00:04:44 <b_jonas> ``` rm -v bin/preprocess-mtg # one less now
00:04:46 <HackEso> removed 'bin/preprocess-mtg'
00:05:11 <b_jonas> ``` rm -v bin/7z bin/7za # I added these, but they never worked
00:05:17 <HackEso> 5184:2014-12-09 <FireFl̈y> ` sed -ir \'s/sed.*/tr -d aeoiu/\' bin/wlcm; cat bin/wlcm \ 5183:2014-12-09 <FireFl̈y> ` sed -ir \'s/.$/g&/\' bin/wlcm; cat bin/wlcm
00:05:18 <HackEso> removed 'bin/7z' \ removed 'bin/7za'
00:05:30 <FireFly> but well I didn't even remember creating that to begin with
00:05:39 <shachaf> FireFly: nowadays you'd just use sled hth
00:05:52 -!- oerjan has joined.
00:06:10 <int-e> FireFly: It's a plausible mistake. It took me a moment to realize why the file was there at all :)
00:07:54 <b_jonas> 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 <b_jonas> I apparently created wrlist, just in case the "we are robots" webcomic resurrects
00:08:32 <b_jonas> as for the rest, what I can do is use them so there aren't so many unused ones
00:08:47 <b_jonas> except for the lists that are for events that haven't happened of course, I won't use them
00:08:51 <HackEso> 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 <b_jonas> ``` hg log -T "{desc}\0{file_adds}\n" bin/* | perl -ne '/^<[^>]*jonas.*\0(.+)/ and print "$1\n";' | sport
00:09:26 <b_jonas> shachaf: because if it happens, I'd like to notice, so it pings me
00:09:29 <HackEso> 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:32 <HackEso> 2/2:f \ bin/ftoc \ bin/toroman \ bin/fromroman \ bin/8-ball \ bin/8ball
00:09:34 <HackEso> echo -n "$(basename "$0")${@:+ }$@: "; tail -n+2 "$0" | xargs; exit \ b_jonas
00:09:39 <HackEso> 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 <shachaf> But you're the only one on the list.
00:09:51 <b_jonas> shachaf: so far yes, but anyone can echo >> it
00:10:03 <b_jonas> I won't just add other people
00:10:18 <b_jonas> when you create a list, do you add anyone but yourself?
00:10:45 <b_jonas> hmm, the starwars should perhaps be updated to add characters from Solo
00:11:07 <b_jonas> or are those already in there?
00:11:43 <shachaf> No, but the main way people learn about lists is from seeing them being listed.
00:12:08 <int-e> `calesyta2016list never happened
00:12:09 <HackEso> calesyta2016list never happened: b_jonas
00:12:49 <HackEso> /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 <int-e> `culprits-c wisdom/password
00:13:13 <HackEso> 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 <b_jonas> huh... what's bin/revert ?
00:14:21 <HackEso> 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 <int-e> b_jonas: you made it though
00:15:14 <b_jonas> int-e: yeah, that's the problem
00:15:23 <b_jonas> I listed the entries in bin that I made and that still exist
00:15:45 <b_jonas> hackego wasn't using git either, right?
00:16:24 <fizzie> <b_jonas> let's create a fake bin/revert !
00:16:37 <shachaf> hackego was using hg and now hackeso is using hs
00:16:47 <fizzie> There was discussion about how `revert is a builtin and not a real command.
00:17:00 <b_jonas> but I could have created a real one
00:17:33 <b_jonas> well, not an entirely real one
00:17:35 <fizzie> 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 <HackEso> #!/bin/sh \ hg diff -c "$@" | patch -p1 -R
00:18:01 <int-e> <oerjan> b_jonas: why are you using git commands, HackEgo is mercury / <b_jonas> oerjan: it's a fake command, so it doesn't matter, right? / <oerjan> OKAY
00:18:08 <int-e> <b_jonas> and I don't know mercurial
00:18:19 <HackEso> bin/revert//#!/bin/sh \ exec git checkout HEAD^ .
00:22:15 <HackEso> /srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: after: not found
00:22:20 <HackEso> bin/revert//cat: bin/revert: No such file or directory
00:22:31 <shachaf> Well, it doesn't do much for deletions.
00:22:57 <HackEso> 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:58 <HackEso> 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 <HackEso> 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:53 <HackEso> 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:57 <HackEso> Prakhata Club Security \ 3B \ Creature -- Aetherborn Warrior \ 3/4 \ KLD-C
00:24:08 <HackEso> 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:32 <HackEso> stat: cannot stat 'bin/slwrjan': No such file or directory
00:24:33 <HackEso> 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:25:07 <int-e> `culrpits-c wisdom/oerjan
00:25:08 <HackEso> /srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: culrpits-c: not found
00:25:14 <int-e> `culprits-c wisdom/oerjan
00:25:16 <HackEso> 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:41 <HackEso> nitia is the inventor of all things. The BBC invented her.
00:25:53 <HackEso> zzo38 is not actually the next version of fungot, much as it may seem.
00:25:58 <HackEso> 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:24 <int-e> I still don't get the bell peppers thing.
00:26:36 <shachaf> I don't like bell peppers.
00:26:48 <shachaf> I think the other bits are much harder to get, really.
00:27:02 <oerjan> int-e: noloveinwaikiki was one of hagb4rd's nicks, as i recall
00:27:26 <b_jonas> int-e: I still don't get some of the wisdom entry about me
00:27:35 <int-e> shachaf: I've never tried to decipher the first sentence, and I know all about the last one ;-)
00:27:35 <HackEso> b_jonas egy nagyon titokzatos személy. Hollétéről egyelőre nem ismertek.
00:28:16 <shachaf> What's going on with the last one?
00:29:24 <int-e> 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 <oerjan> b_jonas: 's okay i only get the first three words and the second last.
00:29:54 <shachaf> I thought oerjan added that, though.
00:29:55 <oerjan> int-e: i thought i added it...
00:29:58 <HackEso> 9872:2016-12-05 <boil̈y> slwd shachaf//s/^/Queen / \ 9869:2016-12-05 <oerjän> learn_append shachaf He doesn\'t know when to stop asking questions. \ 9116:2016-09-29 <shachäf> slwd shachaf//s# T.*## \ 8814:2016-07-14 <boil̈y> slwd shachaf//s#^shachaf#Shachaf of the Dawn# \ 8553:2016-06-21 <shachäf> ` hg cat -r 8343 wisdom/shachaf > wisdom/shachaf \ 8345:2016-06-05 <Elronn̈d> learn shachaf is a wise little gentleman. \ 8344:2016-06-05 <Elronn̈d> le
00:30:11 <int-e> did I at least suggest it?
00:30:20 <esowiki> [[Vague]] https://esolangs.org/w/index.php?diff=59799&oldid=59780 * Cortex * (+142)
00:30:25 <shachaf> I think I asked oerjan too many questions.
00:30:47 <int-e> Or did I just quote it on one occasion.
00:31:04 <int-e> My memory is what it used to be. All unreliable and forgetful :)
00:31:07 <esowiki> [[Vague]] https://esolangs.org/w/index.php?diff=59800&oldid=59799 * Cortex * (-27)
00:31:26 <shachaf> My memory is like a functor.
00:32:06 <oerjan> int-e: maybe it's one of those berenstoin things
00:32:56 <int-e> faithful, forgetful, adjoint...
00:33:52 <HackEso> Thanks, hackeso. Thackeso.
00:33:53 <shachaf> memory can be especially forgetful after adjoint
00:34:06 * oerjan swats shachaf -----###
00:34:52 <int-e> @google berenstoin
00:34:53 <lambdabot> https://me.me/i/no-normies-allowed-stan-jan-berenstoin-%3Cp%3Ememe-insiders-make-stance-22266978
00:35:34 <int-e> ... I have regrets.
00:38:48 <shachaf> I am not clicking that link.
00:39:00 <int-e> "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 <int-e> oerjan: is that what you're alluding to?
00:40:53 <shachaf> Is there a way to do static linking on Linux and also use OpenGL?
00:42:18 <HackEso> This is something people on the channel like to talk about. We're often unsure what this is, though.
00:43:25 <shachaf> int-e may or may not be fan
00:44:03 <int-e> `quote indifference
00:44:04 <HackEso> 1320) <shachaf> int-e does not like this [...] <int-e> shachaf: I experience heightened levels of indifference :P <shachaf> Higher than your usual? <int-e> who cares?
00:44:13 <imode> 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 <kmc> shachaf: probably not a reasonable way, because part of the graphics driver is a shared library
00:45:41 <kmc> although you might be able to statically link the software only Mesa renderer
00:46:21 <shachaf> 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 <HackEso> cat: invalid option -- 'r' \ Try 'cat --help' for more information.
00:49:40 <b_jonas> ``` hg cat -r 8821 wisdom/tg
00:49:41 <HackEso> 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:35 <HackEso> @ is an OS made out of only the finest vapour.
00:52:37 -!- tromp has quit (Ping timeout: 244 seconds).
00:52:54 <pikhq> That's a blast from the past.
01:04:38 -!- b_jonas has quit (Quit: leaving).
01:06:02 <oerjan> . o O ( <game show host> And your final question for the $1,000,000 prize is: What's the Russian word for "province"? <contestant> Oh, blast! )
01:12:32 <shachaf> Is it confusing if I use the number of bytes instead of the number of bits for my numeric types?
01:12:44 <shachaf> So U1/U2/U4/U8 instead of U8/U16/U32/U64
01:13:31 <imode> yes, because how many bits to a byte?
01:13:55 <imode> 8 is conventional, but there are other byte sizes.
01:14:11 <shachaf> 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 <imode> I mean, that's your call.
01:21:06 <imode> you also have no way to specify a 4-bit type or a 2-bit type.
01:21:12 <imode> or a 7-bit type or something.
01:22:00 <shachaf> Yes. But on the other hand "8" is the same length as "1".
01:22:21 <shachaf> I don't know. Maybe I should stick to bits because everyone else does.
01:23:04 <shachaf> Also I tried writing code with this style and I kept getting confused and using U8 instead of U1.
01:25:52 <shachaf> Hmm. I think maybe that should be adjusted.
01:26:35 <fizzie> If you use 8/16/32/64, you can use 1 for a boolean type. That's what LLVM does.
01:28:39 <j4cbo> I don’t know of any non-8-bit-byte architectures that are relevant these days, but bits still seem more fundamental
01:29:24 <shachaf> kmc: is there any meaning to fractional qubits twh
01:30:28 <HackEso> #!/usr/bin/perl \ $_ = (join " ", @ARGV) || `words`; s/^\s+|\s+$//g; print "Hi $_. "; if (/[aeiouyAEIOUY]/) { s/^[^aeiouyAEIOUY]*/H/; } else { s/^./H/; } print "$_.";
01:30:51 <fizzie> 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 <shachaf> `sled bin/hi//s/OUY/OUY0134/g
01:31:10 <HackEso> 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:56 <zzo38> TAVERN uses 16-bit memory cells (although if TAVERN32 or TAVERN64 is made, it might use 8-bit cells instead).
01:32:15 <shachaf> what kind of memory cell does TAVERN8 use
01:32:16 <fizzie> `` sled bin/thanks//s/OUY/OUY0134/g # for consistency
01:32:18 <HackEso> 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:28 <zzo38> shachaf: There is no TAVERN8
01:32:39 <shachaf> Maybe I should bug someone else.
01:33:02 <shachaf> But no one else uses digits that way.
01:33:17 <shachaf> Oh, wait, you can run this on a name that isn't a nick present in the channel. I forgot.
01:34:17 <HackEso> bin/h! \ bin/?h \ bin/thanks \ bin/hyphenate.fi \ bin/hi \ bin/blessyou \ bin/unh \ bin/?hh \ bin/shmify \ bin/h
01:34:18 <fizzie> 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:24 <HackEso> #!/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 <shachaf> sled bin/blessyou//s/OUY/OUY0134/g
01:34:39 <shachaf> `sled bin/blessyou//s/OUY/OUY0134/g
01:34:41 <HackEso> 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 <HackEso> Bless you, f1zz13. Bl1zz13.
01:35:11 <shachaf> Eh. That might be going too far.
01:35:44 <HackEso> fihzzie: Wehlcohme to the ihntehrnahtiohnahl huhb fohr ehsohtehrihc prohgrahmmihng lahnguahge dehsihgn ahnd dehployhmehnt! Fohr mohre ihnfohrmahtiohn, chehck ouht ouhr wihki: <https://ehsohlahngs.ohrg/>. (Fohr the ohthehr kihnd ohf ehsohtehrihca, try #ehsohtehrihc ohn EhFneht ohr DAhLneht.)
01:41:06 <kmc> shachaf: there probably is in quantum information theory, which I know nothing about
01:41:50 <oerjan> `` doag | grep 'sed -i[^ ]'
01:41:53 <HackEso> 10398:2017-03-11 <hppavilion̈1> ` sed -ie "s,\\\\n,\\n," bin/lowercase2 \ 6500:2016-01-03 <Melvär> ` sed -ie \'s/inp[)]$/unicode(inp, locale.getpreferredencoding())).encode(locale.getpreferredencoding())/\' -e \'2s/$/, locale/\' bin/loudly; \ 6484:2016-01-03 <oerjän> ` sed -ie \'s/inp[)]$/unicode(inp, locale.nl_langinfo(locale.CODESET))).encode(locale.nl_langinfo(locale.CODESET))/\' bin/loudly \ 5184:2014-12-09 <FireFl̈y> ` sed -ir \'s/sed.*/tr -d ae
01:41:56 <HackEso> Bless you, keegan. Bleegan.
01:42:23 <HackEso> cat: bin/dog: No such file or directory
01:42:29 <shachaf> I'm a bit surprised `dog doesn't exist.
01:42:38 <shachaf> i,i unless cat is lying to us
01:43:53 <HackEso> 10398:2017-03-11 <hppavilion̈1> ` sed -ie "s,\\\\n,\\n," bin/lowercase2
01:44:30 <HackEso> 10294:2017-02-16 <oerjän> rm bin/loudlye \ 6500:2016-01-03 <Melvär> ` sed -ie \'s/inp[)]$/unicode(inp, locale.getpreferredencoding())).encode(locale.getpreferredencoding())/\' -e \'2s/$/, locale/\' bin/loudly; \ 6491:2016-01-03 <oerjän> revert 6483 \ 6489:2016-01-03 <oerjän> revert 6486 \ 6488:2016-01-03 <oerjän> revert 6483 \ 6486:2016-01-03 <oerjän> revert \ 6485:2016-01-03 <oerjän> revert \ 6484:2016-01-03 <oerjän> ` sed -ie \'s/inp[)]$/
01:44:43 <shachaf> `2 doag | grep 'sed -i [^ ]'
01:44:47 <HackEso> 2/169:e\'s font https://github.com/fis/rfk86/tree/master/web/font|" wisdom/font \ 11200:2017-09-26 <int-̈e> ` sed -i \'$s=sha[c]haf=shach\x0faf=\' quotes > /dev/null \ 11198:2017-09-26 <int-̈e> ` sed -i \'$s=shachaf=sha\x0fchaf=\' quotes \ 11150:2017-08-08 <fizzïe> ` sed -i -e "s/head.*/grep \'^U+\'/" bin/singlecode \ 11149:2017-08-08 <fizzïe> ` sed -i -e \'1i\\#!/bin/bash\' bin/singlecode \ 11148:2017-08-08 <fizzïe> ` sed -i -e \'s/multicode/singl
01:44:56 <shachaf> `2 doag | grep 'sed -i[^ ]'
01:45:00 <HackEso> 2/6:d aeoiu/\' bin/wlcm; cat bin/wlcm \ 5183:2014-12-09 <FireFl̈y> ` sed -ir \'s/.$/g&/\' bin/wlcm; cat bin/wlcm \ 2257:2013-02-26 <Jafët> sed -i... -e \'s/grep/timeout 25 grep/\' bin/pastelog \ 2196:2013-02-21 <Sgëo> sed -ie "s/ shachaf//" bin/list \ 2157:2013-02-17 <Phantom_Hoovër> sed -ie "s/ shachaf//" bin/list \ 1891:2013-01-27 <Jafët> sed -ie \'s,UTF-32,UTF-16LE,\' bin/\\? \ 1890:2013-01-27 <Jafët> sed -ie \'s,UTF-16,UTF-32,\' bin/\\? \ 18
01:46:00 <fizzie> 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 <fizzie> (I think it should've been.)
01:48:19 <shachaf> There's a lot of sed -ie in the lgs, I wonder why none of those files were created.
01:48:28 <HackEso> 2260:2013-02-26 <Jafët> rm bin/pastelog... \ 2257:2013-02-26 <Jafët> sed -i... -e \'s/grep/timeout 25 grep/\' bin/pastelog
01:49:29 <HackEso> 1906:2013-01-30 <oerjän> hg diff -r1891:1871 | patch -p1 \ 1890:2013-01-27 <Jafët> sed -ie \'s,UTF-16,UTF-32,\' bin/\\? \ 1889:2013-01-27 <Jafët> sed -ie \'s, | cat$,;,\' bin/\\? \ 1888:2013-01-27 <Jafët> sed -ie \'s,urandom,urandom | cat,\' bin/\\? \ 1887:2013-01-27 <Jafët> sed -ie \'2 s,$, | tr A-Z a-z | sed "s/ *$//"),\' bin/\\? \ 1886:2013-01-27 <Jafët> revert \ 1885:2013-01-27 <Jafët> revert \ 1884:2013-01-27 <Jafët> revert \ 1883:2013
01:49:49 <HackEso> cat: 'bin/?e': No such file or directory
01:51:02 <oerjan> `3 doag | grep 'sed -i[^ ]'
01:51:10 <HackEso> 1/18:10398:2017-03-11 <hppavilion̈1> ` sed -ie "s,\\\\n,\\n," bin/lowercase2 \ 6500:2016-01-03 <Melvär> ` sed -ie \'s/inp[)]$/unicode(inp, locale.getpreferredencoding())).encode(locale.getpreferredencoding())/\' -e \'2s/$/, locale/\' bin/loudly; \ 6484:2016-01-03 <oerjän> ` sed -ie \'s/inp[)]$/unicode(inp, locale.nl_langinfo(locale.CODESET))).encode(locale.nl_langinfo(locale.CODESET))/\' bin/loudly \ 5184:2014-12-09 <FireFl̈y> ` sed -ir \'s/sed.*/tr
01:51:13 <HackEso> eval "$(shuf -n 1 <<'END' \ \` "$@" |& sport 3 \ cmd="${1-quote}"; \`^ 3 "$cmd" \ END \ )"
01:52:15 <HackEso> 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<len?line+1:1))" > /hackenv/tmp/spline
01:54:16 <HackEso> cat: 'bin/^': No such file or directory
01:54:27 <oerjan> huh i thought that existed
01:54:39 <HackEso> [[ $# == 2 ]] || { echo "Usage: $0 n cmd" >&2; exit 2; }; for ((i=0; i < $1; i++)); do \` "$2"; done | sport
01:56:31 <oerjan> `` doag | grep 'sed -i[^ ]' |& sport 3
01:56:34 <HackEso> 3/6:89:2013-01-27 <Jafët> sed -ie \'s, | cat$,;,\' bin/\\? \ 1888:2013-01-27 <Jafët> sed -ie \'s,urandom,urandom | cat,\' bin/\\? \ 1887:2013-01-27 <Jafët> sed -ie \'2 s,$, | tr A-Z a-z | sed "s/ *$//"),\' bin/\\? \ 1882:2013-01-27 <Jafët> sed -ie \'s, | tr.*,,\' bin/\\? \ 1881:2013-01-27 <Jafët> sed -ie \'s,tr -d .*,iconv -f UTF-16 -t UTF-8 -c /dev/urandom | tr -d "\\\\r",\' bin/\\? \ 1878:2013-01-27 <Jafët> sed -ie \'s,-c;,-c | head -c 1000;,
01:58:04 <oerjan> `` doag | grep 'sed -i[^ ]' |& sport 4
01:58:08 <HackEso> 4/6:\' bin/\\? \ 1877:2013-01-27 <Jafët> sed -ie \'s,-f UTF-8,-f UTF-16,\' bin/\\? \ 1876:2013-01-27 <Jafët> sed -ie \'s,/dev/urandom,/dev/urandom | iconv -f UTF-8 -t UTF-8 -c,\' bin/\\? \ 1875:2013-01-27 <Jafët> sed -ie \'s,\\[:print:\\],[:print:]\\\\r,\' bin/\\? \ 1874:2013-01-27 <Jafët> sed -ie \'s,cat /dev/urandom,tr -d "[:print:]" </dev/urandom,\' bin/\\? \ 1873:2013-01-27 <Jafët> sed -ie \'3 s,.*,if ! expr "$id" ">=" 0 "\\&" "$id" "<" $(wc
01:58:32 <oerjan> `` doag | grep 'sed -i[^ ]' |& sport 5
01:58:35 <HackEso> 5/6:-l <quotes) >/dev/null; then id=$(expr $RANDOM % $(wc -l <quotes); fi,\' bin/delquote \ 1866:2013-01-27 <monq̈y> sed -ie \'s/ monqy//\' bin/list \ 1865:2013-01-27 <Jafët> sed -ie \'s/$/ monqy/\' bin/list \ 1850:2013-01-26 <Jafët> sed -ie \'s/$/ Sgeo drives the bus./\' wisdom/narutoverse \ 1592:2013-01-22 <ellioẗt> sed -is \'s/grep/grep -P -i/\' bin/seen \ 1250:2013-01-04 <fizzïe> sed -ie \'s#-ne .print uc($_).#-pe \'\\\'\'$_ = uc\'\\\'\'#\' b
01:59:03 <HackEso> 1906:2013-01-30 <oerjän> hg diff -r1891:1871 | patch -p1 \ 1873:2013-01-27 <Jafët> sed -ie \'3 s,.*,if ! expr "$id" ">=" 0 "\\&" "$id" "<" $(wc -l <quotes) >/dev/null; then id=$(expr $RANDOM % $(wc -l <quotes); fi,\' bin/delquote \ 752:2012-10-04 <fizzïe> run sed -ie 's/echo "\*poof\*/printf "*poof*%s" "/' bin/delquote \ 0:2012-02-16 Initïal import.
01:59:40 <HackEso> 4210:2013-12-19 <oerjän> rm wisdom/narutoversee \ 1850:2013-01-26 <Jafët> sed -ie \'s/$/ Sgeo drives the bus./\' wisdom/narutoverse
02:00:06 <HackEso> 1592:2013-01-22 <ellioẗt> sed -is \'s/grep/grep -P -i/\' bin/seen
02:00:31 <shachaf> `` doag | grep '<oerjän> rm.*e$'
02:00:34 <HackEso> 11728:2019-02-11 <oerjän> rm bin/lowercase2e \ 10360:2017-03-07 <oerjän> rm lele lele \ 10295:2017-02-16 <oerjän> rm bin/disce \ 10294:2017-02-16 <oerjän> rm bin/loudlye \ 9083:2016-09-26 <oerjän> rm candide \ 8625:2016-06-27 <oerjän> rm quine \ 8540:2016-06-20 <oerjän> rm bin/e \ 8019:2016-05-11 <oerjän> rm wisdom/raspberrie \ 6001:2015-09-16 <oerjän> rm wisdom/toe \ 5813:2015-07-09 <oerjän> rm wisdom/he \ 5753:2015-06-25 <oerjän> rm
02:01:44 <oerjan> `` doag | grep 'sed -i[^ ]' |& sport 6
02:01:47 <HackEso> 6/6:in/WELCOME \ 1212:2012-12-28 <fizzïe> sed -ie \'889 s/hard drive/hard drive /\' quotes \ 783:2012-10-06 <fizzïe> run sed -ie 's/echo/echo -e/' bin/runc \ 752:2012-10-04 <fizzïe> run sed -ie 's/echo "\*poof\*/printf "*poof*%s" "/' bin/delquote \ 744:2012-10-04 <fizzïe> run cp bin/addquote bin/addquote_; sed -ie 's/echo/printf "%d) %s"/;s/") / "/' bin/addquote; cat bin/addquote
02:02:16 <HackEso> 1282:2013-01-07 <oerjän> rm bin/WELCOMEe \ 1250:2013-01-04 <fizzïe> sed -ie \'s#-ne .print uc($_).#-pe \'\\\'\'$_ = uc\'\\\'\'#\' bin/WELCOME
02:02:37 <fizzie> I did that quite a lot.
02:03:18 <shachaf> fortunately we invented sled
02:03:28 <shachaf> (Unfortunately sled still doesn't have a preview option. :-( )
02:04:21 <oerjan> `` dobg runce; dobg delquotee; dobg addquotee
02:04:24 <HackEso> 2111:2013-02-13 <oerjän> rm bin/runce \ 783:2012-10-06 <fizzïe> run sed -ie 's/echo/echo -e/' bin/runc \ 1906:2013-01-30 <oerjän> hg diff -r1891:1871 | patch -p1 \ 1873:2013-01-27 <Jafët> sed -ie \'3 s,.*,if ! expr "$id" ">=" 0 "\\&" "$id" "<" $(wc -l <quotes) >/dev/null; then id=$(expr $RANDOM % $(wc -l <quotes); fi,\' bin/delquote \ 992:2012-12-09 <ellioẗt> rm bin/delquotee \ 752:2012-10-04 <fizzïe> run sed -ie 's/echo "\*poof\*/printf "*poof
02:05:15 <HackEso> 993:2012-12-09 <ellioẗt> rm bin/addquotee \ 744:2012-10-04 <fizzïe> run cp bin/addquote bin/addquote_; sed -ie 's/echo/printf "%d) %s"/;s/") / "/' bin/addquote; cat bin/addquote
02:05:37 <oerjan> `` doag | grep 'sed -i[^ ]' |& sport 7
02:06:12 <oerjan> 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 <zzo38> 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 <zzo38> One idea of Magic: the Gathering is an effect that will double all counters on all objects and players (once).
04:50:39 <kmc> are there any interesting esolang applications of M:tG? I mean, I know it's TC
04:50:44 <kmc> but what else can be said / done with it
04:52:22 <shachaf> I'd be interested in an esolang suitable for describing cards in a MtG-style game
04:52:39 <shachaf> 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 <kmc> is Pokémon card game TC?
04:53:19 <kmc> iirc, it is much simpler, but i haven't played these things in almost 20 years
04:53:28 <kmc> . o O ( how did I get so fucking old? )
05:01:37 <zzo38> shachaf: Yes, I wanted such thing too. I did have some ideas about it though
05:02:06 <zzo38> 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 <kmc> because of unbounded counters?
05:05:34 <kmc> an automaton with 1 unbounded counter (and appropriate operations) is TC, right? because you can Gödel-encode a whole tape
05:05:50 <shachaf> You need two counters, I think.
05:05:57 <shachaf> Well, I guess it depends on your operations.
05:06:12 <shachaf> If it's incremenet/decrement/etc. you need a scratch counter.
05:06:17 <kmc> I guess with two counters you can do basically the two-stack-machine thing
05:07:14 <shachaf> You can encode a stack with two counters, and four counters with two counters
05:07:24 <shachaf> https://en.wikipedia.org/wiki/Counter_machine#Two-counter_machines_are_Turing_equivalent_(with_a_caveat)
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 <imode> 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 <zzo38> 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 <zzo38> 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 <zzo38> 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 <b_jonas> 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 <b_jonas> 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 <b_jonas> the x86 architecture has instructions with "quadruple quadword" in their name
09:29:38 -!- tromp has quit (Remote host closed the connection).
09:29:53 <b_jonas> especially because the letters can collide: "S" in the mnemonic is used for "signed", "single", "scalar" and "string"
09:30:26 <b_jonas> "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 <shachaf> Isn't it up to octuple quadword with AVX-512?
09:31:33 <shachaf> The Intel convention of calling 16 bit values "words" is very annoying.
09:33:18 <b_jonas> 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 <b_jonas> DQ stands for double quadword
09:33:54 <b_jonas> and the instruction name in the manual is "Move aligned packed integer values", which doesn't even mention "double quadwords" anymore
09:33:59 <b_jonas> they realized it's getting ridiculous
09:36:22 <b_jonas> 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 <b_jonas> oh, and the MOVNTDQ instruction too
09:43:28 <b_jonas> "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 <b_jonas> zzo38: as for doubling counters, you know there's a card in Ravnica Allg that doubles counters on one object, right?
09:45:23 <b_jonas> zzo38: https://scryfall.com/card/rna/123/biogenic-upgrade
09:45:40 <b_jonas> it's not really useful for programming though
09:52:03 -!- AnotherTest has joined.
09:57:34 <b_jonas> `bobadventureslist http://bobadventures.comicgenesis.com/d/20190210.html
09:57:35 <HackEso> bobadventureslist http://bobadventures.comicgenesis.com/d/20190210.html: b_jonas
09:57:57 <Taneb> Is is possible to have a sequence of consecutive semiprimes of arbitrary length
09:58:15 <Taneb> (like the sequence 21=3*7, 22=2*11 is a sequence of consecutive semiprimes of length 2)
09:59:49 <b_jonas> Taneb: you can't have one longer than 5
10:01:12 <Taneb> b_jonas: can you explain why not?
10:01:50 <b_jonas> Taneb: try to figure it out yourself first
10:03:22 <Taneb> The only way a multiple of 6 can be semiprime is if it's 6
10:03:29 <Taneb> And there's a multiple of 6 every six numbers
10:06:03 <Taneb> I think the longest you can do is of length 3, because that argument works for 4 as well
10:06:22 <Taneb> And I found one of length 3, 33=3*11, 34=2*17, 35=5*7
10:19:49 <b_jonas> Taneb: you can say something stronger than that
10:19:57 <b_jonas> which multiples of 4 are semiprimes?
10:20:20 <b_jonas> 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 <myname> 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 <myname> i cannot grasp how to prove that
11:55:53 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
11:55:58 <Taneb> myname: honestly a lot of what we know about prime distribution just seems magic to me
11:56:16 <Taneb> I should read "Introduction to the theory of numbers" in a little more depth
11:56:36 -!- Lord_of_Life has joined.
12:12:27 -!- wob_jonas has joined.
12:12:51 <wob_jonas> 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 <wob_jonas> 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 <wob_jonas> 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 <HackEso> 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 <esowiki> [[ElemScript]] https://esolangs.org/w/index.php?diff=59801&oldid=59718 * Areallycoolusername * (+1084)
17:28:31 -!- imode has joined.
17:28:49 <esowiki> [[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 <esowiki> [[ElemScript]] https://esolangs.org/w/index.php?diff=59803&oldid=59802 * Areallycoolusername * (-42) /* Hello World Program */
17:57:14 <esowiki> [[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 <esowiki> [[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 <zzo38> 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 <orin> what's the fastest possible invertible float -> string function
19:59:55 <orin> (where "string" is a asciz char array)
20:00:47 <imode> probably something that offers some kind of lookup table.
20:01:11 <orin> 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 <kmc> basically an escaping question
20:02:14 <fizzie> If zeros are rare, escaping them (and the escape character) isn't half bad, though variable-length.
20:03:10 <orin> also I don't care how slow reading this back is, just how fast I can dump this to stdout
20:03:59 <orin> the main thing is avoiding zero, so that I can use zero to separate things
20:04:37 <orin> or escaping zero I guess
20:05:11 <kmc> yeah, find the least common byte, make it an escape character
20:05:12 <fizzie> Well, you don't need to have a zero in the escape sequence of zero.
20:06:09 <int-e> can't we do some nice prefix coding instead of zero termination?
20:06:21 <orin> int-e: prefix like what
20:06:29 <orin> oh including the length?
20:06:37 <int-e> well... length byte. data. or type tag. data.
20:06:42 <orin> riight htat makes more sense
20:07:03 <fizzie> I assumed from the question the context didn't allow for that.
20:07:36 <orin> fizzie: well I assumed it was probably slower to dump the length for some reason
20:07:40 <int-e> 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 <orin> it's a debug output where it will be mixed with other output
20:09:34 <kmc> i think adding the length should not take long at all
20:09:34 <orin> I realized it might be faster to do printf("here is the output Oren cares about %d\n",len); then write() ;
20:09:37 <kmc> for floats
20:09:58 <kmc> orin: doubtful, the itoa algorithm will take some time
20:10:10 <kmc> (however, it may beat write() for the unrelated reason of stdio buffering)
20:10:34 <kmc> I think tag/len/body is the way to go
20:10:43 <kmc> you can also nest them to log tree-shaped datastructures
20:12:32 <kmc> 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 <orin> 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 <kmc> and a log viewer which would read the log and the executable used to generate it, and perform the formatting
20:13:35 <kmc> under the assumption that only string literals are used as format strings
20:13:57 <int-e> kmc: hmm what about ASLR?
20:14:09 <kmc> I was just wondering about that :)
20:14:17 <int-e> (probably a solvable problem, but did you deal with it?)
20:14:22 <kmc> this was a long time ago, we were on RHEL 4, I don't think there was any ASLR
20:14:27 <fizzie> 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 <int-e> I mean if all else fails you can start your log file by putting in a copy /proc/self/maps
20:14:46 <kmc> but what I would probably do is just dump the base address of the .data section
20:15:14 <int-e> (Assuming Linux, kind of. But other OSs should provide similar facilities.)
20:15:34 <kmc> extern unsigned char data_section[] __attribute__((section(".data")));
20:15:36 <orin> hmmm does anyone know if write() is atomic
20:16:08 <kmc> I believe that would create a load time relocation
20:16:27 <kmc> then you could dump &data_section
20:16:31 <orin> 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 <kmc> also I think there are automatically generated symbols for section begin/end
20:16:46 <kmc> orin: I believe cstdio has locking by default
20:16:50 <kmc> so fwrite() would be atomic
20:16:56 <kmc> but I don't recall for sure so look it up
20:17:34 <kmc> that may be implementation defined
20:17:42 <kmc> seems likely, as the C spec doesn't even have threads (until C11)
20:17:57 <fizzie> 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 <kmc> "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:20 <kmc> of course you can also implement your own locking.
20:18:47 <kmc> or send the messages to a single logger thread somehow
20:18:57 <kmc> (one way would be datagram sockets)
20:20:08 <orin> ok I guess I'll just open a new file from MY thread
20:20:23 <j4cbo> <3 __attribute__((section()))
20:20:26 <int-e> 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 <shachaf> Did you see https://github.com/mortehu/xflags ?
20:21:05 <orin> 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 <int-e> for constant strings it should be .rodata I suppose
20:22:01 <shachaf> 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 <kmc> int-e: ah yeah
20:24:13 <kmc> also you'd be boned if you're using -fdata-sections
20:24:23 <kmc> it's been a long time since i really thought about these things :/
20:24:27 <orin> I saw "xflags" and assumed it was like part of X11
20:24:34 <fizzie> 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 <orin> liek xtank and studd
20:24:52 * kmc needs to figure out something to do with her life
20:25:04 <kmc> orin: I assumed for a long time that pdftk was a gui program using the Tk toolkit
20:25:59 <int-e> 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:27:01 <kmc> int-e: true
20:27:46 <orin> $ xflags --blazon "Azure, three fleurs-de-lis Or"
20:28:06 <lambdabot> LOWI 112020Z 06007KT 030V100 9999 -SHSN FEW015 SCT030 BKN050 01/M01 Q1024 R08/29//95 NOSIG
20:30:31 <shachaf> Is ASLR worth the trouble?
20:31:32 <kmc> in what sense?
20:31:44 <shachaf> isn't it not even that effective
20:31:48 <lambdabot> CYYZ 112000Z 09015KT 15SM SCT024 BKN260 M04/M09 A3033 RMK SC4CI2 SLP281
20:32:19 <imode> 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 <imode> similarly, if the haystack is small, you can just sift through it in a very small amount of time.
20:32:39 <shachaf> Is this an analogy to finding an address in an address space?
20:32:55 <shachaf> i feel like maybe you can just say "address" and "address space"
20:33:05 <imode> people seem to do well with physical analogies.
20:33:28 <shachaf> but i already know what aslr is
20:33:32 <kmc> shachaf: well, there are ways around it, but they impose other difficulties on attackers
20:33:37 <shachaf> american sign language recognition
20:33:44 <shachaf> way tougher than speech recognition imo
20:33:49 <kmc> i don't have a good knowledge of the current landscape on ASLR and ASLR bypass
20:34:03 <kmc> also, windows ASLR is not as good
20:34:09 <kmc> or that may have been fixed, but it was true for a long time
20:34:12 <imode> 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 <kmc> b/c each DLL gets loaded, when possible, at the same address in every process
20:34:23 <int-e> 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 <kmc> int-e: yeah
20:34:36 <kmc> or blind guessing
20:34:38 <int-e> So exploits get quite a bit harder.
20:34:46 <kmc> but 64 bits gives enough randomization to make blind guessing pretty hard
20:34:59 <imode> yup, and that's why it's reasonably effective.
20:35:32 <imode> 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 <kmc> (on 32 bit x86 you have less than 20 bits of randomness)
20:35:44 <shachaf> i feel like that analogy isn't physical enough
20:35:49 <kmc> let's get physical
20:35:51 <shachaf> maybe give me something in terms of electrons and photons
20:36:12 <imode> the wavefunction of the addresses you want never collapses.
20:36:33 <int-e> shachaf: https://www.technologyreview.com/s/612887/how-quantum-terrorists-could-bring-down-the-future-internet/
20:36:53 <int-e> (This has been bugging me since yesterday.)
20:37:12 <imode> so there's a finite amount of terrorists, or the terrorists are in a finite amount of states?
20:37:15 <shachaf> 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 <int-e> shachaf: much obliged. but please don't do it again.
20:37:42 <imode> or do the terrorists have a number of quantized energy levels.
20:38:02 <imode> "terrorizing", "kinda tired", "super tired", "sleeping"
20:38:10 <shachaf> int-e: Also that page blocks incognito mode so I'm not going to read it.
20:38:15 <shachaf> But I can appreciate the title.
20:38:44 <int-e> 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 <int-e> shachaf: huh, but it works without javascript?!
20:39:24 <shachaf> Yes, apparently it has JavaScript that detects incognito mode and hides the content.
20:39:29 <imode> academia can get funding for anything that has buzzwords in it.
20:39:45 <imode> that is both a blessing and a curse depending on the intent of people using that funding.
20:39:48 <int-e> shachaf: so switch off javascript as well :P
20:39:59 <int-e> (what's the poing of incognito mode if you leave javascript enabled?)
20:40:12 <imode> cool black borders.
20:40:54 <int-e> Hmm, which browser is this anyway. I have "private browsing".
20:41:13 <int-e> shachaf: you could also go to https://arxiv.org/abs/1901.08873
20:41:40 <int-e> (but I didn't, so I don't know how accessible that paper is)
20:41:55 <shachaf> \rainbow{Quantum Terrorism}: Collective Vulnerability of Global Quantum Systems
20:41:57 <kmc> int-e: the point is everything is logged out, random sites can't access your facebook account
20:41:57 <imode> of course it's on arxiv.
20:42:05 <kmc> also you can see non-customized results for things
20:42:22 <shachaf> 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:49 <int-e> kmc: But I know what you're saying.
20:42:51 <imode> quantum internet of things. jesus christ.
20:43:06 <imode> what does that even mean.
20:43:12 <kmc> soon your toaster will contain a helium dilution fridge with superconducting chips inside
20:43:17 <kmc> so that you can quantumly monitor your toastt
20:43:24 <orin> function nnfi { nano ` find . -name "$1" ` }
20:43:25 <imode> I mean at least it doubles as a fridge.
20:43:43 <int-e> shachaf: It means that there's smoke from burning VC money.
20:43:47 <orin> screw remembering where any of these source files are
20:44:01 <kmc> shachaf: let's put a billboard on 101 that says "FINALLY, the quantum AI cloud for IoT blockchain"
20:44:02 <imode> tagged file system!
20:44:58 <int-e> @google "finally tagless filesystem"
20:45:06 -!- atrapado has joined.
20:45:11 <int-e> @google "finally tagless file system"
20:45:15 <shachaf> kmc: How much do 101 billboards cost?
20:45:52 <kmc> i got bored after about 30 seconds trying to figure that out just now
20:46:07 <shachaf> https://www.quora.com/How-much-does-a-billboard-cost-on-101-in-San-Francisco
20:46:10 <shachaf> "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 <shachaf> can this person pay me Approx 12000 - 15,000 USD for wasting my time so hard with that answer
20:47:09 <kmc> it is a shitty answer to the wrong question
20:47:44 <int-e> "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 <shachaf> the top answer there says you can get something for $500
20:48:04 <kmc> this is just one of many reasons why 280 is better than 101
20:48:09 <kmc> no startup billboards
20:48:16 <int-e> shachaf: maybe it was stuck behind the pillar of a bridge :P
20:48:30 <imode> are turing machines mealy machines? I think turing machines are mealy machines.
20:48:31 <shachaf> int-e: I don't get why there's a waiting list instead of an auction.
20:49:08 <int-e> 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:53 <shachaf> imo let's just get a billboard in iowa
20:50:55 <int-e> imode: in the sense that the symbol written may depend on the current tape symbol... yes.
20:51:16 <kmc> the quantum ai cloud for IoT corn
20:51:26 <orin> 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 <imode> int-e: right but your machine reacts immediately instead of reacting based on the state that's entered.
20:52:01 <shachaf> can i get my billboard allocation on the \rainbow{blockchain} twh
20:52:10 <int-e> 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:53:17 <imode> 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 <imode> but it seems like all automata are mealy machines, not moore ones.
20:55:39 <shachaf> What a great prank this channel is.
20:55:55 <shachaf> We've got people typing strings like "`grWp" non-ironically.
20:56:20 <int-e> Well, it's UsEfUl.
20:56:46 <shachaf> it's like unix but even more ridiculous
20:57:16 -!- AnotherTest has joined.
20:57:20 <int-e> (I'm using the word "useful" in a very limited sense here, obviously; the usefulness does not extend beyond #esoteric.)
20:57:34 <HackEso> #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 <int-e> Hmm, is the AEZ below water?
20:58:51 <shachaf> kmc: do you understand windows SEH twh
20:59:00 <shachaf> imo why are windows things so complicated
20:59:08 <kmc> why are posix things so complicated
20:59:21 <kmc> posix is a shit-show
20:59:45 <shachaf> but win32 is quite a mess itself
21:01:09 <kmc> I feel sorry for the MSFT engineers who had to reimplement all the wacky linux syscalls and flags etc
21:01:16 <kmc> they seem to have done a really good job
21:01:52 <kmc> the only thing i tried in WSL that broke was gnu screen
21:01:58 <kmc> and i'm going to blame screen for that by default
21:02:09 <int-e> heh does wine work in WSL? :P
21:02:19 <kmc> because it is an enormous pile of cruft that is probably doing all kinds of terrible things
21:02:28 <kmc> and POSIX terminal stuff is crazy
21:03:03 <kmc> int-e: you'd need to add an X server as that's not part of WSL
21:03:20 <shachaf> The Linux system call ABI is much more reasonable than all of POSIX.
21:03:46 <kmc> I wonder how many ioctls they implemented
21:03:53 <kmc> you need some for terminal stuff at least
21:04:18 <kmc> ioctls are bad
21:04:18 <int-e> Something with HP Lovecraft, maybe?
21:05:23 <int-e> "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:06:28 <shachaf> The Windows approach of having regular functions for syscall services seems p. reasonable.
21:06:37 <shachaf> Except they do all sorts of odd things.
21:06:45 <kmc> what do you mean?
21:07:26 <shachaf> 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:47 <shachaf> Even though you also need to get window events, it can call it outside your event loop.
21:10:01 <shachaf> At least a syscall ABI would probably not do things like that.
21:10:07 <shachaf> Except for signals, I guess, so who knows.
21:12:31 <kmc> posix signals are bad too
21:12:33 <kmc> everything is bad
21:12:46 <kmc> everything should be a fd
21:13:21 <int-e> windows is full of handles IIRC
21:13:40 <kmc> shachaf: should i learn winapi sometime
21:13:51 <b_jonas> 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 <b_jonas> 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 <kmc> i'm not convinced signals are the way to go
21:14:48 <kmc> but perhaps it should be an option, yeah
21:14:50 <b_jonas> that's for unix. I don't know about win32 api.
21:14:57 <kmc> i think signalfd is a nicer way to do signals in many cases
21:15:10 <b_jonas> 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:16:14 <shachaf> Windows SEH is the analog of signals, I think?
21:16:29 <shachaf> And it does all sorts of complicated things like stack unwinding.
21:16:53 <kmc> stack unwinding is complicated
21:16:59 <zzo38> 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 <kmc> is the elf stack unwinding bytecode turing complete
21:18:01 <zzo38> (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 <kmc> shachaf: did you know that openbsd implements pselect() as a userspace wrapper for select()
21:19:48 <kmc> thereby defeating the entire purpose
21:19:57 <kmc> and breaking posix compatibility
21:20:09 <kmc> at least it was so at one point
21:21:34 <fungot> 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 <fungot> Selected style: irc (IRC logs of freenode/#esoteric, freenode/#scheme and ircnet/#douglasadams)
21:21:45 <int-e> fungot: why can't we have nice software?
21:21:45 <fungot> int-e: today's revenge of the nerds is called? iirc, you're not using emacs.
21:21:54 <kmc> posix is pretty esoteric
21:21:58 <b_jonas> 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 <int-e> that... worked better than expected
21:22:34 <zzo38> b_jonas: Yes, that is a valid point.
21:23:22 <b_jonas> 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 <shachaf> kmc: imo invent a good system call api instead twh
21:26:10 <kmc> shachaf: well, i've thought about it
21:26:22 <kmc> there are a few things i think would be important
21:27:03 <kmc> #1 is a uniform way to refer to kernel objects
21:27:07 <kmc> like a capability
21:27:30 <kmc> this would prevent many issues in posix such as the race condition on PIDs, which are just integers and not fds
21:27:48 <b_jonas> 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:28:05 <b_jonas> which has some generic way to get sent to a spawned process too
21:28:08 <kmc> b_jonas: that is the kind of thing i mean, but they aren't uniformly used in posix
21:28:14 <shachaf> Except lots of things aren't fds.
21:28:20 <kmc> there are many other ways to refer to kernel objects which have various issues
21:28:35 <b_jonas> possibly even designed better on win32 than on unix, though they have the advantage of less historical baggage
21:28:41 <kmc> 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 <orin> what if everything was a 64 bit UUID
21:28:56 <kmc> shachaf: probably not, but it's fun
21:29:02 <b_jonas> kmc: yes, that one is a known problem that's still not solved
21:29:08 <kmc> you can implement a limited form of call/cc with fork
21:29:16 <kmc> i was p. happy with myself when i got that to work
21:29:23 <shachaf> orin: 64 bits is not v. universal hth
21:29:43 <orin> shachaf: fork() and exec() should be combined into a single thing
21:29:43 <zzo38> 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 <b_jonas> sadly the namespace is even just 15 bits large, so it gets reused very quickly
21:29:58 <zzo38> (The default implementation of Plan10Main() is added by the C compiler)
21:30:02 <kmc> and yeah sending fds or equivalent between processes is important
21:30:18 <kmc> that is one of the good things in posix, even if the API for it is really shitty
21:30:40 <kmc> I think creds could be consumed by that sort of fd-as-capability, but i'm not sure
21:30:48 <b_jonas> 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 <shachaf> did you know bitcoin does 2^65 hashes per second
21:31:04 <kmc> that's a lot
21:31:42 <orin> shachaf: that's too many, we need to shut down bitcoin
21:31:52 <kmc> shachaf: I also think it's important to have a uniform way for userspace and kernelspace to exchange structured data
21:32:06 <zzo38> 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 <shachaf> More than pointers to C structs?
21:32:51 <zzo38> This way, you can program many things before calling the other program.
21:33:00 <shachaf> zzo38: Is that just vfork?
21:33:06 <kmc> which would be a) documented in a machine readable way, with b) autogenerated bindings for popular languages, c) typed, d) fast
21:33:09 <b_jonas> shachaf: no, it's slightly different from vfork
21:33:22 <zzo38> (You don't need vfork() anymore, because cfork() is better)
21:33:24 <b_jonas> I for one don't see the point to introduce that now, since we do have a working vfork
21:33:27 <kmc> shachaf: well, there are some problems with the ways structs are used in posix
21:33:33 <kmc> i find them pretty cumbersome
21:33:39 <kmc> for one, there are so many of them
21:33:47 <zzo38> shachaf: Not quite; it is a bit different.
21:33:52 <orin> I mean, at some point it might be good for OSes to be built on something other than raw binary data
21:33:53 <b_jonas> I mean, if you designed it all over from the scratch it may have been better,
21:33:57 <b_jonas> but I don't see much point
21:34:03 <b_jonas> it's not like it would save much resources
21:34:07 <kmc> I think a typed FS could be very interesting too
21:34:11 <kmc> strongly typed shell pipelines
21:34:35 <orin> kmc: PowerShell does that IIRC
21:34:43 <zzo38> Doesn't PowerShell have typed pipelines?
21:34:51 <kmc> 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 <kmc> 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 <orin> but windows is still built on top of raw CPU stuff rather than on top of the CLI
21:36:38 <shachaf> Cap'n Proto for system calls? I'm a bit skeptical.
21:36:43 <orin> whereas you could have a strongly typed language as the layer below most of the operating system
21:36:48 <kmc> shachaf: well, it's just an aside
21:37:24 <kmc> if you can send capabilites then you can also implement sockets that way
21:37:26 <orin> which would probably cost some speed but increase safety
21:37:34 <kmc> opening a connection is done by sending a capability
21:37:51 <kmc> this will also give you some transport layer security
21:38:04 <shachaf> Sending a capability to whom?
21:38:14 <kmc> anyway. kernel capabilities and structured/typed data.
21:38:17 <b_jonas> 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:35 <rain1> I agree about structured data
21:38:38 <kmc> shachaf: sending it to a process on that machine which handles new connections, i guess
21:38:43 <rain1> but im not sure about typed data or caps
21:38:44 <orin> 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 <shachaf> kmc: speaking of all these things, have you seen the mill yet
21:39:28 <shachaf> imo watch the first few videos at 2x speed
21:39:31 <zzo38> 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 <kmc> shachaf: do you like or dislike the thing where you have c structs which start with a tag and length field
21:40:28 <kmc> and then you can cast between different types
21:40:32 <esowiki> [[User:Cortex]] https://esolangs.org/w/index.php?diff=59806&oldid=59781 * Cortex * (+12)
21:40:33 <b_jonas> zzo38: yes. and I still don't see why what you propose would be so useful it's worth kernel support
21:41:09 <int-e> zzo38: vfork suspends the parent process
21:41:30 <kmc> 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 <kmc> idk, seems like it could be good for api compatibility
21:41:45 <shachaf> I've heard of a version with the length.
21:41:47 <kmc> you can add fields w/o breaking anything
21:41:58 <shachaf> Where the same function can accept multiple versions of a struct as long as you increase the length each time.
21:41:58 <b_jonas> 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 <shachaf> Someone said Windows does that?
21:42:14 <kmc> shachaf: ksplice did some silly things to add fields to structs
21:42:23 <kmc> sometimes storing it in padding or an unused field
21:42:34 <kmc> or in a hash table keyed by the struct's address
21:43:32 <kmc> vfork() isn't very pointful on modern virtual memory machines
21:44:08 <shachaf> kmc: did you know there are some architectures without virtual memory where linux has vfork but not fork
21:44:12 <int-e> oh are we discussing Linux or POSIX? The manpage says that POSIX deprecated vfork.
21:44:15 <b_jonas> kmc: it sure is, if you're like git and spawn a thousand child processes
21:44:28 <kmc> shachaf: that makes sense
21:44:38 <zzo38> 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 <kmc> 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:45 <shachaf> a lot of windows system calls can take a process handle as an argument
21:46:54 <shachaf> so the mmap equivalent can allocate in another process's address space and so on
21:46:59 <kmc> that's neat
21:47:06 <shachaf> seems much nicer than ptrace for debuggers for instance
21:47:09 <kmc> I remember UML doing some nasty hacks for that
21:47:19 <kmc> user mode linux
21:47:25 <HackEso> /srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: : not found
21:47:27 <HackEso> Linux (none) 4.9.82 #6 Sat Apr 7 13:45:01 BST 2018 x86_64 GNU/Linux
21:48:00 <int-e> I thought that did mention UML at some point.
21:48:10 <b_jonas> ``` cat /proc/cpuinfo | sed -n 2p
21:48:11 <HackEso> vendor_id: User Mode Linux
21:48:12 <kmc> is that the same bot that was here forever ago
21:48:29 <b_jonas> kmc: it's a reincarnation, the one that was here forever ago was called HackEgo
21:48:40 <kmc> same codebase?
21:48:51 <b_jonas> the userspace contents was inherited from a backup of HackEgo
21:48:58 <b_jonas> I don't know about the codebase, fizzie knows
21:49:03 <b_jonas> I know he made some substantial changes
21:49:05 <kmc> I remember poking at UML for a while trying to find an exploit for the bot
21:49:06 <b_jonas> but some of it are probably kept
21:49:14 <int-e> kmc: I believe so, since Gregor made it public.
21:49:34 <int-e> (that yes, yes, it's the same codebase)
21:49:37 <b_jonas> fizzie is the keeper of the bot now
21:49:50 <HackEso> HackEso is almost but not quite unlike HackEgo.
21:50:39 <int-e> isn't that missing a "completely"...
21:51:13 <shachaf> But then it would be false.
21:51:20 <shachaf> kmc: maybe you should work on the mill team
21:51:35 <int-e> FireFly: ah yes, it's "entirely".
21:51:43 <b_jonas> j-bot is also sort of such a reincarnation. I gave away the code but I no longer support it.
21:52:13 <kmc> is it written in J?
21:52:15 <FireFly> did tangentstorm succeed after you, or was there someone in-between?
21:52:18 <fizzie> kmc: It's essentially the same codebase, I've made a few tweaks but I made those when it was still HackEgo.
21:52:36 <FireFly> (I don't speak ruby, so I just host it in a mostly-working state)
21:52:56 <b_jonas> 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 <int-e> fungot: where's boily?
21:53:02 <fungot> 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:09 <fizzie> Well, maybe a few tweaks since then too. But still.
21:53:10 <FireFly> oh I might've done that maybe
21:53:20 <FireFly> I recall having to do some minor edits to get it running
21:53:40 <FireFly> ruby --version is apparently 2.5.0
21:53:49 <j-bot> b_jonas, jevalbot source is http://www.math.bme.hu/~ambrus/pu/jevalbot.tgz
21:54:00 <b_jonas> that points to where I gave away the code
21:54:46 <FireFly> hm I should put the changes I made locally on https://github.com/FireyFly/jevalbot
21:54:55 <FireFly> and then maybe update that command to point there instead..
21:55:03 <zzo38> 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 <shachaf> kmc: should 64-bit computers use a single address space
21:56:47 <kmc> what's the advantage?
21:57:21 <zzo38> MMIX has positive (virtual) addresses, and negative (physical) addresses.
21:57:29 <shachaf> one of the mill videos talks about it
21:57:52 <shachaf> or at least it's not on a hot path for every l1 access
21:59:44 <int-e> Tricky... how do you do process isolation, and shared memory?
22:00:33 <shachaf> The way the Mill people do it they have protection separate from translation.
22:00:40 <int-e> (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 <FireFly> 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 <b_jonas> FireFly: I don't think it matters
22:06:20 <b_jonas> FireFly: the admin thingy is not very useful, especially since it goes only by nick
22:06:20 <FireFly> alright, I'll keep it as it is then
22:06:35 <b_jonas> so don't allow anything to admins that you don't want to allow to everyone
22:06:37 <FireFly> I hope it doesn't let an admin do too much
22:06:42 <b_jonas> unless you change that code entirely
22:06:51 <FireFly> As mentioned, I don't really speak ruby :p
22:07:02 <FireFly> so my modifications have been minimal
22:07:14 <b_jonas> 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 <b_jonas> 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 <b_jonas> and to ignore or unignore people
22:08:16 <kmc> can you query whether a nick is registered on nickserv?
22:08:29 <b_jonas> kmc: you can. it's a bit complicated
22:08:35 <b_jonas> there's three IRC extensions that you have to use for it
22:08:38 <FireFly> I mean nowadays you can request a capability for it
22:08:38 <kmc> have it check that the nick being used is registered to the right account
22:09:04 <b_jonas> kmc: for this, it's not really worth IMO
22:09:09 <b_jonas> it can be worth for other IRC stuff
22:09:15 <b_jonas> I can tell the details if you really care
22:09:22 <b_jonas> if you want to implement it that is
22:09:55 <b_jonas> I figured it out at some point, with the help of #freenode, for potentially the other IRC bot
22:10:01 <b_jonas> never really considered it for jevalbot
22:10:13 <zzo38> Maybe you can check for the client's address.
22:10:34 <zzo38> Use the entire address for authentication instead of only the nickname.
22:10:42 <b_jonas> zzo38: yes you can, if you want anyone on the wifi behind the NAT to control the bot
22:10:56 <b_jonas> I know that's a well-spread security model in some companies, but I don't really like it
22:11:28 <zzo38> Yes, it can be problem if you have Wi-Fi. But even then you could use cloaking; Freenode has that
22:11:53 <b_jonas> 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 <b_jonas> zzo38: even without wifi it's a bad idea, most local networks are just not controlled enough
22:13:06 <b_jonas> 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 <zzo38> 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 <kmc> you could also send a password with each command in PM
22:14:28 <b_jonas> 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 <b_jonas> for which you need a channel
22:14:42 <b_jonas> it gets uglier than the bot telling who you are
22:14:45 <zzo38> Yes, I thought of that too, but you will need to identify them like b_jonas mention
22:14:53 <b_jonas> (a channel or memoserv actually)
22:15:12 <b_jonas> you can avoid that by using cryptography
22:16:15 <kmc> it'd be a little cumbersome to sign every message, but you could have an IRC client do it I suppose
22:16:50 <FireFly> 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 <FireFly> 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 <FireFly> oh and I guess I didn't care much for the nickserv bits..
22:18:47 <FireFly> oh, no, I switched to identifying to nickserv account via PASS instead
22:25:27 <shachaf> The Mill also does implement fork using a special kind of translation
22:25:46 <fizzie> 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 <fizzie> Never unfortunately happened.
22:27:28 <fizzie> 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 <fungot> fizzie: the germanic subset is fnord, even to non-customers: a few people :) and no confirmed time travelers
22:30:41 <shachaf> kmc: Remember that one-time authentication scheme we talked about once?
22:30:57 <shachaf> I don't remember how it worked but it was TG that it was possible
22:33:15 <shachaf> The counterpart of one-time pads for authentication
22:35:05 <shachaf> by the way, it's kind of scow that OTP is so malleable
22:36:04 <int-e> sure... add authentication
22:36:47 <shachaf> some cipher modes are less malleable than others
22:37:13 <shachaf> people don't use stream ciphers for disk encryption for various reasons probably including this one
22:46:14 <kmc> yeah disk encryption is weird
22:47:35 <shachaf> I mean, not actually this reason but related reasons that also apply to OTP
22:47:39 <int-e> 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 <shachaf> By the way, do you know the trick for using arbitrary memory as a zero-initialized array without explicitly initializing it?
22:49:14 <shachaf> It's not a good trick but it was kind of surprising that it was possible.
22:51:54 -!- arseniiv has joined.
22:53:00 <shachaf> You also need two extra arrays of the same length.
22:55:32 <shachaf> 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 <shachaf> valid has indices into confimration, and confirmation has indices into valid
22:56:07 <shachaf> data[i] is valid if valid[i] < c, and confirmation[valid[i]] == i
22:56:39 <int-e> And it's useful for sparse arrays if you have tons of memory?
22:57:19 <shachaf> So each time you see an invalid index you add it to confirmation and increment c.
22:57:22 <shachaf> I'll wager there's no practical use for it.
22:57:33 <int-e> Maybe if T is huge itself.
22:58:51 <shachaf> If you wanted you could have one bit vector indicating which elements of your data array are valid.
22:58:57 <shachaf> I could see uses for that.
22:59:19 <int-e> Yeah, that sounds more sensible.
22:59:48 <shachaf> I should stop saying "vector" to mean "array"
22:59:50 <int-e> But from a theoretical perspective this is brilliant :)
23:00:17 <shachaf> i like this trick for the whoa, dude value
23:00:31 <shachaf> do you have any more whoa, dude algorithm tricks for me twh
23:00:35 <orin> shachaf: and start using "matrix" to mean "heap"?
23:00:53 <int-e> x += y; y = x - y; x -= y;
23:01:23 <orin> vector is a c++ism anyway
23:01:49 <shachaf> i,i https://twitter.com/johnregehr/status/1093948316948168704
23:01:54 <int-e> (That's the ^ swap trick for rings that don't have characteristic 2.)
23:03:24 <shachaf> What algorithms should go in my list of clever and simple algorithms?
23:04:00 <orin> mergesort I guess?
23:04:06 <shachaf> pollard's rho hash collisions
23:04:31 <shachaf> exhaustive search of compact infinite spaces ("seemingly impossible functional programs")
23:04:52 <orin> I mean, mergesort is IMO the simplest efficient sort
23:05:15 <shachaf> I think mergesort is a bit too well known.
23:06:18 <orin> hmm, although I'm not actually sure what makes me percieve it as simpler than quicksort
23:06:57 <orin> I guess because there's no question of arbitrarily picking a pivot
23:07:18 <orin> therefore no weird inputs that can screw it up
23:08:06 <orin> yeah htat's why mergesort is simpler to implement
23:08:48 <int-e> shachaf: related to the collisions: rainbow tables
23:08:58 <kmc> you need heap sort to combine the advantages
23:09:20 <fizzie> That uninitialized memory trick seems very close to the other uninitialized memory trick, https://research.swtch.com/sparse
23:09:34 <shachaf> int-e: Rainbow tables are kind of close to Pollard's Rho, right?
23:09:56 <orin> kmc: yeah but heapsort is hard to remember the details of, even more than quicksort
23:11:10 <shachaf> fizzie: Isn't that the same trick?
23:11:19 <int-e> 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 <shachaf> "is-member(i): return sparse[i] < n && dense[sparse[i]] == i" is the thing I said, anyway
23:11:54 <fizzie> 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 <shachaf> They just use void as T, I think.
23:12:41 <shachaf> Assuming sizeof (void data[N]) == 0
23:12:51 <shachaf> Also assuming that's not a syntax error.
23:12:52 <fizzie> Yes. So it's an (allegedly) practical use for the trick, then.
23:13:27 <fizzie> I think that's a syntax error. `sizeof (void[N])` would have been a constraint violation but not a syntax error.
23:13:42 <fizzie> Although on GCC it would've been just N.
23:14:33 <fizzie> (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 <kmc> ha, consistency
23:14:57 <int-e> 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 <fizzie> "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 <fizzie> A consequence of this is that sizeof is also allowed on void and on function types, and returns 1."
23:15:19 <shachaf> fizzie: You could also put a generation ID for each element and increase it by 1 to reset.
23:16:04 <fizzie> (Come to think of it, it might still not allow arrays of void even if void has a size.)
23:16:10 <shachaf> what is the sizeof an uninhabited type
23:16:30 <shachaf> Unicode has COMBINING INFINITY᪲
23:16:42 <shachaf> i,i COMBINING SEAGULL BELOW
23:17:42 <int-e> combining left-eyed monocle
23:18:28 <fizzie> "COMBINING LATIN SMALL LETTER O WITH LIGHT CENTRALIZATION STROKE" (and the same for U) is the longest-named combining character.
23:18:45 <fizzie> With COMBINING LATIN SMALL LETTER L WITH DOUBLE MIDDLE TILDE as the runner-up.
23:19:09 <fizzie> COMBINING HORN is the shortest.
23:19:17 <shachaf> COMBINING LATIN SMALL LETTER U WITH LIGHT CENTRALIZATION STROKE matches it
23:19:17 <fizzie> I think it's also a magical artifact?
23:19:27 <fizzie> shachaf: That's "the same for U".
23:19:38 <shachaf> You can't expect me to read inside parentheses!
23:19:49 <int-e> shachaf: disjoint set forests are probably my favorite data structure
23:20:40 <shachaf> 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 <fizzie> 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 <shachaf> what is the shortest code point name
23:22:29 <fizzie> And ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM is still the longest.
23:23:30 <orin> what does the syntax ```namespace {``` mean?
23:23:33 <shachaf> wasn't this channel going to adopt a code point together
23:23:39 <fizzie> orin: It's an unnamed namespace.
23:23:43 <shachaf> orin: unnamed namespace, or unnamespace for short hth
23:24:21 <shachaf> the namespace that can be spoken of
23:24:21 <fizzie> orin: You can use it to make symbols externally invisible.
23:24:25 <shachaf> is not the eternal namespace
23:24:29 <fizzie> "Its members have potential scope from their point of declaration to the end of the translation unit, and have internal linkage."
23:24:41 <orin> I need them to be externally visible agian god damn it
23:24:45 <shachaf> You should be thankful they didn't use the keyword "static" for it.
23:24:58 <fizzie> "static namespace { ... }" has a nice ring.
23:25:07 <fizzie> Did you hear that one about the hyphenated keywords?
23:25:30 <fizzie> "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 <fizzie> http://mail.openjdk.java.net/pipermail/amber-spec-experts/2019-January/000945.html
23:26:18 <shachaf> obviously you gotta change the vowel
23:26:27 <fizzie> The tl;dr is a suggestion to allow <identifier>-<keyword> and <keyword>-<identifier> constructions to be used as keywords.
23:26:28 <shachaf> switch swatch swetch swotch swutch
23:27:14 <orin> ok I'm temporarily nameing the previously unnamed namespace as "namespace goddamnit {"
23:27:16 <kmc> 'static namespace' would be p. reasonable
23:27:34 <fizzie> orin: I've usually used "namespace internal {" if I've needed an unnamed namespace that's named.
23:27:58 <kmc> and then 'using internal;'?
23:28:02 <orin> well it only needs to be named until I find the bug
23:28:04 <kmc> can you use using at file scope?
23:28:16 <kmc> shachaf: did you know that the Unicode red heart emoji is actually HEAVY BLACK HEART
23:28:19 <kmc> I only just learned this
23:28:33 <kmc> quite a change imo
23:28:40 <b_jonas> 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 <fizzie> I think you can use "using namespace /name/;" at file scope.
23:29:04 <kmc> anyway I tried to make a HEAVY BLACK HEART with COMBINING INFINITY but it looks terrible :/
23:29:13 <kmc> fizzie: ah, right
23:29:25 <b_jonas> "i like this trick for the whoa, dude value" => yeah, that's a good summary
23:29:40 <shachaf> kmc: That one seems to be rendering as a black heart here?
23:30:00 <kmc> https://emojipedia.org/heavy-black-heart/
23:30:04 <shachaf> There are a bunch of actual colored hearts.
23:30:37 <shachaf> 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 <shachaf> I don't know which one to use.
23:31:09 <zzo38> Is there a way to determine the codepoint numbers of them?
23:31:15 -!- Essadon has quit (Quit: Qutting).
23:31:19 <zzo38> If you can do that then you can figure out which one should be used.
23:31:19 <shachaf> Yes, but I don't feel like bothering.
23:31:29 <fizzie> shachaf: I think the other one is the SLIGHTLY SMILING FACE.
23:31:38 <shachaf> Why is it so complicated to transfer text from my computer to my phone?
23:31:47 <shachaf> fizzie: Ah, that sounds plausible.
23:32:02 <shachaf> I guess if I want a full smile I gotta give up on SLIGHTLY SMILING FACE.
23:32:08 <kmc> WSL terminal doesn't support emoji and stuff :(
23:32:13 <fizzie> shachaf: (The new Hangouts Chat experience shows the names in the suggestobox when you type a : on the computer.)
23:32:17 <b_jonas> shachaf: transfer to your phone for what goal?
23:32:31 <shachaf> fizzie: But Hangouts Chat isn't available for consumers, right?
23:32:35 <b_jonas> shachaf: do you have internet access on your phone? can you pastebin the text?
23:32:44 <fizzie> shachaf: I think it's only available to G Suite customers, yes.
23:32:48 <shachaf> Yes, but that's the hassley way.
23:37:47 <fizzie> I usually use a temporary Google Keep note for that.
23:37:59 <shachaf> fizzie: That's also what I do!
23:38:15 <shachaf> And it involves many steps.
23:38:21 <fizzie> 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 <shachaf> I should probably have a special-purpose Keep note for it so I can select all.
23:38:35 <fizzie> It does involve that, yes. And the syncing isn't super seamless.
23:38:35 -!- ATMunn_ has joined.
23:38:40 <shachaf> Right now I have other junk in the same note.
23:38:45 <fizzie> zemhill______: You're getting a little ridiculous with the underscores.
23:39:48 <fizzie> (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:22 <fungot`> shachaf: i did just now is instead of storing the data in.
23:45:42 <fizzie> I guess the other one dropped off.
23:45:49 <fungot`> 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 <fizzie> (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 <shachaf> kmc: Now Unicode also has a BLACK HEART which is actually rendered black
23:48:15 <shachaf> ♪ I see a red heart and I want it painted black ♪
23:49:02 <shachaf> Remember the old Android hearts? They were nonsense.
23:49:22 <shachaf> 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 <shachaf> And https://emojipedia.org/google/android-4.4/green-heart/ and so on
23:51:47 <Sgeo__> ^^ intended for ctrl-f search, saw a glimpse of "J?" in the scrollup
23:52:21 <b_jonas> 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 <fungot`> b_jonas: null date, null char, null int, null double, null etc). what good is functional programming"
23:53:17 <b_jonas> 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 <shachaf> Unicode has both BLACK HEART SUIT ♥ and WHITE HEART SUIT ♡
23:54:24 <shachaf> And HEAVY BLACK HEART ❤ and BLACK HEART 🖤
23:54:39 <b_jonas> shachaf: um yes, so I say those are solid and outlined respectively, whereas the original heart suit is ambiguous
23:54:56 <b_jonas> 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 <orin> b_jonas: but they later biguated them in unicode but kept the ambiguous one too
23:57:39 <fizzie> 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 <shachaf> SMILING HEART WITH HEART-SHAPED EYES
23:58:35 <kmc> i like the cat w/ heart eyes
23:58:59 <shachaf> can #esoteric be the esolang + cat channel
23:59:01 <orin> I miss when emojis were tiny inline .gif files
23:59:11 <kmc> on forums and stuff?
23:59:14 <kmc> SA had some good ones
23:59:32 <shachaf> imo why doesn't unicode have combining characters to control animation
23:59:40 <b_jonas> orin: "biguated"? what does that mean?
23:59:41 <fizzie> 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 <shachaf> fizzie: Chat being Hangouts Chat?