< 1575331523 165671 :imode-ruby!~linear@unaffiliated/imode PRIVMSG #esoteric :sorry, should've clarified what I meant by "commands". bot commands are fine. controlling the bot via PRIVMSG is.. not fine. < 1575331734 967735 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :AIUI, it wasn't really a matter of controlling the bot through any sort of intended control commands, more tricking it into messaging things to NickServ. < 1575331763 789606 :imode-ruby!~linear@unaffiliated/imode PRIVMSG #esoteric :mhm. if you can PRIVMSG anything, you can hijack it. < 1575332279 991967 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :FireFly: sorry, you said you wanted to experiment with the bot later, but now you can't < 1575332711 239314 :FreeFull!~freefull@defocus/sausage-lover QUIT : < 1575333394 366812 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :BT has this thing called "InLinkUK", it's like a digital advertising sign they've installed on sidewalks + free wifi access point + some sort of tablet you can use in kiosk mode for "information". Except it had crashed, and the advertising screen was saying "Ubuntu 15.04 adl-uk-002661 tty1" and "adl-uk-002661 login: _" < 1575333543 324886 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :I like it when screens like this are showing things they shouldn't be showing. < 1575334131 246042 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :me too < 1575334168 471656 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :https://www.reddit.com/r/bayarea/comments/e4so9b/for_all_you_programmers_bart_at_least_the_station/ < 1575334180 586641 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :the farecard readers on the new MUNI trains run embedded Windows < 1575334194 639119 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :I saw one of them crashed to the desktop screen once, start menu and all < 1575335630 614630 :LKoen!~LKoen@lstlambert-657-1-123-43.w92-154.abo.wanadoo.fr QUIT :Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.” > 1575338696 670458 PRIVMSG #esoteric :14[[07User:DMC14]]4 M10 02https://esolangs.org/w/index.php?diff=67605&oldid=62538 5* 03DMC 5* (+98) 10 > 1575338713 330844 PRIVMSG #esoteric :14[[07User:DMC14]]4 M10 02https://esolangs.org/w/index.php?diff=67606&oldid=67605 5* 03DMC 5* (-7) 10 < 1575338780 610062 :oerjan!oerjan@sprocket.nvg.ntnu.no JOIN :#esoteric < 1575339054 462036 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric : oerjan: I found a loop <-- wait, it sees its own messages? i thought that didn't happen no matter who it sends to < 1575339116 690605 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :You do if you send to yourself. < 1575339136 209192 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :aha < 1575339142 801393 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`u 5 w < 1575339143 800537 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :u? No such file or directory < 1575339149 843480 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Hmm. < 1575339151 461420 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`h 5 w < 1575339152 244325 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :5 w < 1575339158 152966 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :What was it? < 1575339159 774148 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :shachaf: `t hth < 1575339172 143305 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`? t < 1575339173 521562 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :t? ¯\(°​_o)/¯ < 1575339176 878021 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :(i renamed it for keyboard pressing shortness) < 1575339177 73172 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :What does that stand for? < 1575339177 101371 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :`? u < 1575339178 272222 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :u? ¯\(°​_o)/¯ < 1575339181 734634 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :"top"? < 1575339182 48006 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :"top" < 1575339193 578225 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Why is t shorter than u? < 1575339195 686997 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`t 5 w < 1575339198 288505 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :1/2:necessity//If necessity did not exist, it would be necessary for Taneb to invent it. \ prooftechnique//prooftechnique né NihilistDandy: He was there some time ago. Maybe he'll come back. Maybe he's a nihilist, too. (Note from the Editor: He came back, and is a nihilist.) He is inevitably on a mathematical descent. \ double dactyl//Curious spurious juvenile poetry that is supposedly tricky to write, but its obsession with sesquipedal < 1575339200 945828 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`n < 1575339201 900360 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :2/2:ity makes double dactyls quite gaudy and trite. \ cut elimination//The cut-elimination theorem states that any Prolog program written using the cut operator ! can be rewritten without using that operator. \ nvd//nvd is what Taneb calls himself when he wants to feel professional. < 1575339243 864655 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :(of course my muscle memory for how to use ` pretty much means i don't make use of the simpler typing, but there you go) < 1575339256 334145 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Do you actually need `t for 5 w? < 1575339305 733075 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :shachaf: it's shorter if ` is a dead key, because then `u = ù but `t isn't a special combination (at least on my keyboard) < 1575339347 522202 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ProofTechnique: hey you're here! < 1575339366 297426 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :oh the note mentions < 1575339368 349948 :ProofTechnique!sid79547@gateway/web/irccloud.com/x-rmvtyfjhbboovfqk PRIVMSG #esoteric :Helloerjan! < 1575339398 24575 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ACTION ups the ante for duplicate responding by not even reading until the end of the line < 1575339399 678281 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :oerjan: Aha. But deadkeys are scow. < 1575339408 224661 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :IMO, with a compose key, compose-`-? should compose ` onto absolutely anything, using a COMBINING GRAVE ACCENT. But it doesn't, here. < 1575339429 569033 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :fizzie: Can Compose enter multiple code points? < 1575339450 900203 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :fizzie: i don't think so < 1575339491 416260 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :I don't really know. Though I can type a t̀ by starting with a t, then holding down ctrl-shift and typing 0300. But that's the urxvt code point entry feature. < 1575339518 269376 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :`5 echo hi < 1575339519 829037 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :1/1:hi \ hi \ hi \ hi \ hi < 1575339538 55921 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :hum i guess that proves nothing < 1575339539 949350 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :`` 5 'echo ho' # it's christmas < 1575339541 580344 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :1/1:ho \ ho \ ho \ ho \ ho < 1575339543 937369 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`t t 5 t w < 1575339546 972317 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :1/1:bleen//Bleen is the color of the ocean and the trees. \ i//I SIGNIFICAT NVMERVM VNVM \ burma//Burma: Ask Bike \ nth//nth is not that helpful \ nooooodle//Noooooodles are the invention of the Chinese. They were brought to Europe by Marco Polo, a distant ancestor of Taneb. < 1575339593 403416 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :Bike is not here though. at least by that nick. < 1575339652 783245 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Where did I see a Burma-Shave thing recently? Maybe a random xkcd. < 1575339681 142407 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :There's one in https://xkcd.com/491 but I think it was something else instead maybe. < 1575339958 120904 :ProofTechnique!sid79547@gateway/web/irccloud.com/x-rmvtyfjhbboovfqk PRIVMSG #esoteric :I wonder if anyone's ever done a whale-themed cover of Jolene. < 1575340337 651397 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :Jooooowoooowwooooowwooo... < 1575340788 377722 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ProofTechnique: feel free to implement the obvious /hackenv/bin/whale command hth < 1575340819 417592 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ACTION won't due to a sudden attack of good taste < 1575340835 612258 :ProofTechnique!sid79547@gateway/web/irccloud.com/x-rmvtyfjhbboovfqk PRIVMSG #esoteric :That's a first < 1575340841 875974 :int-e!~noone@int-e.eu PRIVMSG #esoteric :The question "Are you whales from Scotland?" pops into your mind for no discernably reason. < 1575340959 825094 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ACTION googles and learns new horrible joke, balancing out his good taste < 1575340982 906764 :int-e!~noone@int-e.eu PRIVMSG #esoteric :happy to share < 1575341183 866296 :int-e!~noone@int-e.eu PRIVMSG #esoteric :The good thing about terrible jokes is that they're easy to remember ;) < 1575342025 892353 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :=list < 1575342033 93582 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :oh it's gone < 1575342068 508372 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :ACTION saw b_jonas misspell one of his awkwardly named commands and wanted to check if the misspelled version existed < 1575342132 534474 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :because if not, i think there was another "fascinating effect" involved in bfbot's response to that < 1575342216 593799 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :oh there was a logic to the naming < 1575342697 926455 :tromp!~tromp@2a02:a210:1585:3200:714a:40a7:730e:149 JOIN :#esoteric < 1575342959 917583 :tromp!~tromp@2a02:a210:1585:3200:714a:40a7:730e:149 QUIT :Ping timeout: 246 seconds > 1575343780 413521 PRIVMSG #esoteric :14[[07IBC14]]4 10 02https://esolangs.org/w/index.php?diff=67607&oldid=67112 5* 03Quadril-Is 5* (+99) 10 < 1575344706 257222 :imode!~linear@unaffiliated/imode JOIN :#esoteric < 1575345739 508246 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric : Is this too evil? <-- really really bad judgement at the very least. < 1575345927 694384 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :and a horrible precedent for this channel. < 1575345978 512353 :tromp!~tromp@2a02:a210:1585:3200:714a:40a7:730e:149 JOIN :#esoteric < 1575346008 782139 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :and don't ask me if it's even legal. < 1575346253 509904 :tromp!~tromp@2a02:a210:1585:3200:714a:40a7:730e:149 QUIT :Ping timeout: 276 seconds < 1575346258 635222 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :admittedly the bot probably needs to be kept off until fixed. < 1575346346 861974 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :b_jonas: you could have phrased that a lot less confrontational, though. < 1575346352 123017 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :If you do not try to register it, I do not have a problem with it since if they want to register it themself then they can do so and use NS GHOST to force a disconnect < 1575346370 667334 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :zzo38: except that's exactly what he did < 1575346410 144961 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :Yes, but I think that isn't what should be done. Instead just use a persistent connection, I think, is better < 1575346460 432412 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :zzo38: i am confused what problem you are thinking that solves < 1575346487 883297 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :the problem is that bfbot was online, completely abusable, and its owner wasn't. < 1575346535 406919 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :and b_jonas used its abusability to get it disconnected. < 1575346557 461606 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :by a method which required him registering it. i'm not sure whether another would have worked. < 1575346571 645872 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :Would it work to only temporarily register it? < 1575346578 484751 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :If so, then that is what should be done. < 1575346607 149663 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :oh he also set nick protection to prevent it from reconnecting, i think. < 1575346647 274429 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :which is the thing that cannot be done temporarily, i guess. < 1575346698 668429 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :If it automatically reconnects, that isn't your fault. If it tries to rejoin the channel, then you can add a ban and then remove it later. If it does a wrong thing by a private message, filter them out on your client. Other than that, I think just leave it. < 1575346742 108625 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :zzo38: the thing is that it was so abusable that a person could use it against a third party < 1575346763 398725 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :That isn't up to you, though. Just let it; the third party can filter it out themself if they do not want it. < 1575346797 727325 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :But if you are really concerned, I suppose notify the server operator they can decide whether or not to do anything about it. < 1575346798 817740 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :also, it was on #esoteric-blah which has no ops < 1575346815 793462 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :If it is a channel with no ops then just it be on there. < 1575346822 598515 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :(well, it has staff so we could ask FireFly i guess) < 1575346900 605088 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :oh wait it's freenode-staff which isn't the same thing. < 1575346954 924337 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :(just a dummy account to hold channels i think) < 1575347074 742915 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :I think you should not interfere other people's channel if it can be use on a channel that has no ops then it should just let be on there, and if you do not want to receive their messages then you can filter in the client side. If it causes problems with the server, then the server operator should learn about it in order to remove it. < 1575347095 197100 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :@tell kspalaiologos I see b_jonas may have gone a bit too far to quit your bot. it was _really_ unsecure though (which is how he could). < 1575347095 547244 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :Consider it noted. < 1575347159 241660 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :trying some de-escalation < 1575347449 816868 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :If they do not want any channel operators then should not have any; unfortunately Freenode doesn't have the channel with + prefix to indicate this explicitly. They should, in order that it can easily be indicated if you want + or # < 1575349150 926805 :tromp!~tromp@2a02:a210:1585:3200:5c90:b8e9:8718:97e7 JOIN :#esoteric < 1575349225 926649 :tromp_!~tromp@2a02:a210:1585:3200:d70:62c6:90cc:74ff JOIN :#esoteric < 1575349406 922439 :tromp!~tromp@2a02:a210:1585:3200:5c90:b8e9:8718:97e7 QUIT :Ping timeout: 246 seconds < 1575349490 917636 :tromp_!~tromp@2a02:a210:1585:3200:d70:62c6:90cc:74ff QUIT :Ping timeout: 246 seconds < 1575349798 400723 :Lord_of_Life_!~Lord@unaffiliated/lord-of-life/x-0885362 JOIN :#esoteric < 1575349919 577151 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 QUIT :Ping timeout: 276 seconds < 1575349919 876829 :Lord_of_Life_!~Lord@unaffiliated/lord-of-life/x-0885362 NICK :Lord_of_Life < 1575350727 454911 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :I think is strange that the /proc/*/fd/* pretend to be symlinks but don't really work like symlinks. It seem like it would be like a "special link" instead? < 1575350875 970548 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :in what way don't they act like symlinks? < 1575350907 496917 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :I think they can refer to deleted files and to anonymous stuff, and symlinks can't < 1575350912 337151 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :is it because they may refer to anonymous things? < 1575350913 175710 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :right < 1575350950 294935 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :keegan@localhost:~$ ls -l /proc/self/fd | grep pipe < 1575350950 399609 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :l-wx------ 1 keegan keegan 64 Dec 2 21:29 1 -> pipe:[6737388] < 1575350955 853976 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :wonder what that number means < 1575350957 616358 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Can you distinguish between a deleted file and a link to a file ending in ' (deleted)'? < 1575350964 760777 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :lolol < 1575350972 735892 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :you mean without a race condition? < 1575350980 594007 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I mean at all, I think? < 1575351003 549841 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :well you could try to readlink then open < 1575351004 406296 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :If you have a program that opens /foo, and you delete foo, /proc/pid/fd/n will be a link to '/foo (deleted)' < 1575351010 340092 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :but I guess you may have both files < 1575351017 721608 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :both '/foo' and '/foo (deleted)' < 1575351023 381016 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :But how can you tell whether a program just opened a file with that name? < 1575351035 911065 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Ugh, I hate how much of UNIX is stringly typed. < 1575351042 126286 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :The whole /proc thing is a mess. < 1575351057 101967 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :does stat /proc/$PID/fd/$N tell you anything useful? < 1575351057 944047 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :yes < 1575351065 749767 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :/proc isn't even UNIX < 1575351079 430981 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :it's a linux thing intended for quick hacks in kernel development that just grew and grew < 1575351080 425188 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Well, that's fair. < 1575351085 912132 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :How did ps work back in the day? < 1575351092 937584 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :BSD also has /proc but there's not like a standard for what's in these things < 1575351100 371659 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :i think it even has a linux-emulating procfs as well < 1575351108 877588 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :There isn't a POSIX-style standard, but that's not what I care about. < 1575351110 839352 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :i think by parsing /dev/mem < 1575351112 548813 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :really. < 1575351123 453502 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :and so ps was setuid < 1575351146 350989 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :The annoying thing is that even if I port my program specifically to Linux, I have this terrible ABI. < 1575351161 830189 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :The system call ABI is pretty good. Things like ioctls are OK? And /proc is a mess. < 1575351166 680366 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :There are problems with /proc, although I think it is because they treat the files in it as files and symlinks and so on even though it isn't like that. Add a new type for "special entries" and then you can avoid such problem. < 1575351179 557987 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :And that's not to mention the userspace ABI, which involves parsing things like /etc/passwd and /etc/resolv.conf which are sort of specified. < 1575351196 925513 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :ioctls are not okay < 1575351214 254369 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :ioctls are like syscalls only with minimal oversight on whether they are at all well-designed < 1575351245 740257 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Sure, but at least they have an ABI at all, generally. < 1575351260 881800 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Instead of parsing text which was mostly meant for debugging. < 1575351284 912995 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :kmc: Do you like io_uring? < 1575351374 980452 :tromp!~tromp@ip-213-127-58-137.ip.prioritytelecom.net JOIN :#esoteric < 1575351398 221974 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :what's that < 1575351406 74694 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I don't see anything different from stat. < 1575351425 206977 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Maybe you can open the file and fstat it and compare the inodes or something. < 1575351440 302467 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :It's the new Linux asynchronous I/O API. < 1575351448 453781 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :and maybe asynchronous everything API?? < 1575351452 192670 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :ok < 1575351453 241432 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :fun < 1575351458 671761 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :https://lwn.net/Articles/776703/ < 1575351479 157889 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :You have a request and response ring buffer, and you send the kernel requests and get responses. < 1575351501 513253 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :If you can send it requests fast enough, you might never have transitions to ring 0 at all. < 1575351515 320216 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :You write to your buffer in your thread and it reads in its thread on another core. < 1575351636 975016 :tromp!~tromp@ip-213-127-58-137.ip.prioritytelecom.net QUIT :Ping timeout: 240 seconds < 1575351893 961357 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :yeah < 1575351902 741476 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :but you can also call into the kernel to block on it? < 1575351919 294804 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :this is how high performance network drivers have worked forever < 1575351933 267165 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :if you're doing low latency infiniband or something on linux then you don't go through the kernel at all < 1575351942 83492 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :you write into a ring buffer in the card's address space < 1575351989 677838 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :You can also call into the kernel, yep. < 1575352012 172497 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :This is the reasonable way for things to work, obviously. < 1575352514 508168 :Frater_EST!adrianbibl@172.242.0.73 JOIN :#esoteric < 1575353309 286853 :imode!~linear@unaffiliated/imode QUIT :Ping timeout: 265 seconds < 1575355697 489905 :Frater_EST!adrianbibl@172.242.0.73 QUIT :Read error: Connection reset by peer < 1575355835 880128 :Frater_EST!~adrianbib@172.242.0.73 JOIN :#esoteric < 1575356180 47082 :Frater_EST!~adrianbib@172.242.0.73 QUIT :Read error: Connection reset by peer < 1575356219 93484 :Frater_EST!~adrianbib@172.242.0.73 JOIN :#esoteric > 1575356720 116116 PRIVMSG #esoteric :14[[07Talk:Initialization14]]4 10 02https://esolangs.org/w/index.php?diff=67608&oldid=67603 5* 03Zzo38 5* (+372) 10 > 1575356890 683634 PRIVMSG #esoteric :14[[07Deadfish14]]4 10 02https://esolangs.org/w/index.php?diff=67609&oldid=67382 5* 03Zzo38 5* (+220) 10It is the old version of TeXnicard; make clear that it is different from the new version. < 1575357518 621438 :tromp!~tromp@2a02:a210:1585:3200:8c8b:6958:453e:4054 JOIN :#esoteric < 1575358482 246889 :Frater_EST!~adrianbib@172.242.0.73 QUIT :Remote host closed the connection < 1575358768 776195 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :why does c++ have copy constructors given that copy constructors are scow < 1575358825 778368 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :is there any use of the std::vector copy constructor that isn't a mistake, anyway < 1575358838 680584 :tromp!~tromp@2a02:a210:1585:3200:8c8b:6958:453e:4054 QUIT :Remote host closed the connection < 1575359397 38192 :Vorpal!~Vorpal@unaffiliated/vorpal QUIT :Ping timeout: 240 seconds < 1575359446 8869 :Vorpal!~Vorpal@c193-150-231-149.bredband.comhem.se JOIN :#esoteric < 1575359446 56166 :Vorpal!~Vorpal@c193-150-231-149.bredband.comhem.se QUIT :Changing host < 1575359446 56216 :Vorpal!~Vorpal@unaffiliated/vorpal JOIN :#esoteric < 1575359534 547484 :tromp!~tromp@2a02:a210:1585:3200:6d04:c778:f1d5:95d6 JOIN :#esoteric < 1575359622 718942 :tromp_!~tromp@ip-213-127-58-137.ip.prioritytelecom.net JOIN :#esoteric < 1575359674 235794 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :shachaf: historical reasons < 1575359695 914304 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :the language was designed around value types / unboxed objects / whatever you want to call them < 1575359710 542356 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :but they hadn't worked out that move semantics are the way to make that work nicely < 1575359742 321043 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :moves + an explicit clone() method seems much nicer to me < 1575359750 462205 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :though this depends on a certain return-value optimization < 1575359757 805026 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :but everything in C++ depends on optimization for good performance < 1575359807 635865 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :there are probably some cases where the copy constructor performs better < 1575359812 649181 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :at least, i think there are some cases for operator= < 1575359820 331025 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :which is a closely related concept < 1575359825 510299 :tromp!~tromp@2a02:a210:1585:3200:6d04:c778:f1d5:95d6 QUIT :Ping timeout: 276 seconds < 1575359835 61871 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :but operator= has an old object to (partially) dispose of, and Foo(const Foo&) doesn't < 1575359859 825519 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :all this is setting aside the question of whether overloadable *move* constructors are also a mistake < 1575359868 471467 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :which I think is much more debatable < 1575359885 66382 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Man, everything about the STL is scow. < 1575359892 690301 :tromp_!~tromp@ip-213-127-58-137.ip.prioritytelecom.net QUIT :Ping timeout: 268 seconds < 1575359896 583640 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Every time I try to understand what's going on there I'm miserable. < 1575359926 544122 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :Rust has no operator= overloading, if you assign into a variable whose type has a destructor, then the whole thing is destroyed before the new value is moved in < 1575359927 541857 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :And the specification requires things to be low-performance. And the implemetations aren't predictable or fast. < 1575359932 640317 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :which is plausibly less efficient in some cases, I guess < 1575359945 794693 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :but I'm not sure how often anyone writes an operator= which does such things < 1575359973 562469 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :That sounds pretty plausible. Maybe an even more plausible thing would be to do away with destructors entirely. < 1575360000 437023 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :then how will I have RAII? < 1575360005 129992 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :RAII is tg < 1575360018 86823 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :is it actually < 1575360036 765758 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :yes < 1575360050 974275 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :`? raii < 1575360052 964607 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :RAII means you deallocate in the destructor. There is no 'initializer' involved. < 1575360068 441623 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :that is a profoundly useless definition < 1575360085 381170 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :RAII means you have destructors, I think? < 1575360085 441362 :oerjan!oerjan@sprocket.nvg.ntnu.no PRIVMSG #esoteric :`dowg raii < 1575360087 332517 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :10903:2017-05-18 slwd raii//s,allocate in the constructor and ,, \ 5854:2015-07-21 learn RAII means you allocate in the constructor and deallocate in the destructor. There is no \'initializer\' involved. \ 5853:2015-07-21 le/rn RAII/RAII is Resource Allocation in the constructor... wait wait uh... Is uh, Initialization < 1575360210 894112 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :I think the important *concept* is that resources of all sorts can be modeled by objects in the language, in such a way that having a value of that object type guarantees that the resource is available with a certain set of operations on it < 1575360267 602458 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :basically the idea that constructors and destructors make sense to manage not just memory but stuff like open files, mutex acquisitions, etc < 1575360279 293042 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :and this is a good fit for affine types because of course a lot of non-memory resources cannot be copied arbitrarily < 1575360290 984830 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :as well as a lot of memory-related resources such as uniquely-owned objects < 1575360320 604911 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :But constructors aren't the important part, it's destructors. A constructor is just a function that returns a value, but destructors have special language support. < 1575360325 351089 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :right < 1575360341 52405 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :in C++ there are some other reasons to have constructors as a language feature < 1575360345 535099 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :but Rust doesn't need them < 1575360365 797227 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :But also is this actually a good idea? < 1575360372 606447 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :A mutex is pretty different from memory. < 1575360387 548015 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :And RAII isn't even particularly good at managing memory, I think? < 1575360387 995197 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :*shrug*, it makes for a very convenient and safe API < 1575360409 903114 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :In particular RAII helps you write a program with zillions of balanced mallocs and frees. < 1575360423 871886 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :But I'm not sure that's a particularly good way to write a program? < 1575360469 641834 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :If you do something like arena allocation, then destructors don't even make that much sense. You don't want to loop over the arena and run all the destructors of all the objects. < 1575360527 800480 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :usually not, no < 1575360533 892642 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :so don't use arenas with types that have destructors? < 1575360538 245673 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :but if you do, the right thing will still happen < 1575360561 26781 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Only if you loop over the arena, which presumably isn't even part of the arena API. < 1575360584 421113 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Since arenas are all about freeing a bunch of things all at once. < 1575360657 275974 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :How much does RAII give you over something like Python's "with locking_lock_thingy(mutex): ..."? < 1575360664 515794 :tromp!~tromp@2a02:a210:1585:3200:f03d:9c15:faa0:1faf JOIN :#esoteric < 1575360694 440724 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :It gives you the ability to move a lock_holder_object_type_t to a function, which is a way of telling it that you're holding the lock and it's responsible for freeing it. < 1575360715 563729 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Maybe that's good? But it seems pretty niche at best, and possibly makes for harder to follow control flow. < 1575360756 132633 :oerjan!oerjan@sprocket.nvg.ntnu.no QUIT :Quit: Nite < 1575360843 55050 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :i think passing off responsibility for a resource through moves seems pretty useful < 1575360866 275455 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :but i'm kind of tired and not putting a lot of thought into coming up with compelling examples < 1575360880 477909 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :i have a lot of different things on my mind today :/ < 1575360998 747588 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I think you give up on something meaningful by having invisible control flow happen in what seems like an assignment or value passing. < 1575361134 864653 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :A "lock_holder_type_t holder{lock};" isn't really much of a value, it's control flow, and it's not clear that treating it as a value makes programs clearer. Maybe? < 1575361186 744790 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Anyway that makes sense too. < 1575361274 114588 :olsner!~salparot@c80-217-180-83.bredband.comhem.se PRIVMSG #esoteric :RAII as a concept has always annoyed me, it's weird to reuse something that is otherwise "setting things to their initial value" to mean "acquiring resources" < 1575361328 87280 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :RAII isn't really about constructors, and is a bad name. < 1575361345 800026 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :"RAII" is also a bad name. < 1575361454 847238 :olsner!~salparot@c80-217-180-83.bredband.comhem.se PRIVMSG #esoteric :yes, it's more about destructors anyway - a hack where you can use destructors for timing release of "other" resources (except e.g. memory that is more naturally part of an object or its value) < 1575361455 246564 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :oerjan re sees its own messages: it doesn't see its own messages on a channel, but does see them if it explicitly sends to itself by nick < 1575361506 540980 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :shachaf: the fungus fair is on sunday < 1575361595 515914 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :fungot: the fungot fair is on sunday < 1575361595 615231 :fungot!~fungot@unaffiliated/fizzie/bot/fungot PRIVMSG #esoteric :kmc: do you have the parens the important part for me. < 1575361640 399084 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :ooh nice, they extended the cold weather for three more days < 1575361670 827353 :Sgeo_!~Sgeo@ool-18b982ad.dyn.optonline.net QUIT :Read error: Connection reset by peer < 1575361691 563675 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :oerjan: ok, thanks for the feedback < 1575361713 969198 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :oerjan re "even legal" => more like, may get me banned from freenode < 1575361746 616447 :Sgeo!~Sgeo@ool-18b982ad.dyn.optonline.net JOIN :#esoteric < 1575361797 841880 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :zzo38 re add a ban => doesn't help at all, you can still abuse the bot without it joining anywhere < 1575361813 401014 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :I abused it in private message and made it send to a -n channel < 1575361846 729781 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Wasn't RAII invented for exception handling anyway? < 1575361936 562602 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :kmc /proc/*/fd/* not symlinks => if you open them, you get an actual dup of the same file description, with a shared seek pointer < 1575361963 206067 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :What a ridiculous API. < 1575361996 500164 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I like how everything on Linux relies on /proc and /dev and /sys being mounted in particular places but that's only a convention. < 1575362000 56596 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :that it refers to a deleted file is just slightly weird compared to that < 1575362009 564243 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :b_jonas: ah < 1575362017 279563 :kmc!~beehive@li521-214.members.linode.com PRIVMSG #esoteric :i was wondering whether it might do something like that, as well < 1575362051 507533 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :It's not even particularly useful in the Plan 9 way where you can run a program with a fake /proc that you proxy calls to, which no one does. < 1575362172 452869 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :zzo38 special entries => even if the type in lstat/fstat doesn't distinguish them, you can call statfs/fstatfs to tell whether a file is on /proc . There's even a command line interface in coreutils now, < 1575362194 885368 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :``` stat -fc "%T %n" /hackenv /proc < 1575362195 704780 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :hostfs /hackenv \ proc /proc < 1575362212 620729 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :At least Linux is getting pidfd soon, I think. < 1575362220 214193 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :That'll be something. < 1575362255 207468 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :shachaf re parsing text which was mostly meant for debugging => everything ps prints was meant for debugging. normal programs shouldn't invoke ps and find something out automatically to do normal operations. < 1575362282 788466 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :b_jonas: I'm talking about parsing text in /proc. < 1575362372 902812 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :shachaf: yes, sometimes I want to make a copy of a whole vector. it typically happens with trivial copy constructors, but can happen even with nontrivial ones. < 1575362410 546593 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :and it's not like copying short vectors is slow. < 1575362424 319649 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :b_jonas: Sometimes you want to make a copy of a whole vector, but you could instead do that by calling a function to copy it. < 1575362433 877993 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Having it as an implicit thing when you call a function or whatever is ridiculous. < 1575362458 322379 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :It requires a malloc call so it's not like it's fast. < 1575362594 267678 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :shachaf re zillions of balanced mallocs not a particularly good way to write a program => yes, and C++ lets you have objects with trivial constructors, and it can optimize those constructor calls away to a memcpy or nothing everywhere. < 1575362690 65706 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :The point is that the argument for RAII is that it helps you balance your mallocs and frees etc., and if that was what you wanted to do anyway, it might be pretty good, but if it's not such a good strategy in the first place, then RAII is less helpful. < 1575362789 284504 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :"At least Linux is getting pidfd soon, I think." => it already has pidfd I believe, but maybe I'm desynced with reality a bit < 1575363067 676296 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :shachaf: what do you want to do implicitly each time you call a function with your vector? do you want a compile time error? that's fine, that's what unique_ptr is for. do you want a pointer plus length without refcounting or any other mechanism to make sure it points to a valid vector? that's bad, it's a thing that's perfectly possible in the core language, but the C++ standard library messed up and < 1575363073 672213 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :only has std::string_view and the horribly overengineered std::span for now. < 1575363130 675422 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :An error is OK, sure. < 1575363145 85205 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :A copy of the struct seems OK? I guess C++ people wouldn't like that so they can ban it. < 1575363157 448853 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :A copy of the data is ridiculous. < 1575363164 981505 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :shachaf: on the other hand, sometimes you don't need top performance, but just want to write a program easily without making stupid mistakes or thinking too much about allocation, in which case the refcounting and automatic frees are useful, and you may still want to write your program in C rather than in a language that can't detect type errors in compile time or in a lazy language like Haskell < 1575363176 481655 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Reference counting is obviously ridiculous. < 1575363191 733711 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :shachaf: there can be different types for each of those < 1575363217 431471 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :no, reference counting is not obviously ridiculous. it's an overkill for MOST things that you do, needed for very few things, that I admit, but it also doesn't hurt too much in many applications < 1575363246 546226 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Instead of reference counting you can just manage the lifetime in some reasonable way. < 1575363254 63736 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :I write a lot of throwaway short programs these days, and given that they take five seconds or even more to run, finding type errors early can help < 1575363275 292142 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :For example, allocate at the beginning of the program and never free. < 1575363308 662056 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :allocate at the beginning and never free => that's the easiest thing, you can do that in C++ or basically any language < 1575363335 402735 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Yep. < 1575363342 690334 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :you don't have to use a std::vector for everything < 1575363357 714610 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :In fact I don't want to use it for anything. < 1575363370 299132 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :you don't have to use it for anything in your code either < 1575363372 941002 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Every time I look in /usr/include/c++/ I decide that the STL is scow. < 1575363396 279838 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :It's all incomprehensible. < 1575363444 199023 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Anyway, you can make types for all these things, but the language and library shouldn't be working against you by implicitly doing the wrong thing. < 1575363481 990393 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :If your program runs for five seconds, exit_group is certainly one of the best memory management strategies. < 1575363589 106737 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :I have read about pidfd in Linux. I had a similar idea, although mine was a bit different; you can add the constant PIDFD to a file descriptor of the process's directory in /proc and use the resulting number wherever a process ID is expected. < 1575363698 673167 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :zzo38: the point of pidfd is that there's a flag on fork to give you an open file descriptor to the pidfd handler, so there's no file system muckery at all < 1575363717 328550 :ais523!~ais523@unaffiliated/ais523 JOIN :#esoteric < 1575363719 293438 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :no messing around in /proc for something that doesn't need it < 1575363723 37648 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :oh hello ais523 < 1575363763 606038 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :shachaf: file seconds or longer. at file seconds already I want the type errors early. < 1575363782 458788 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :but yes, there's a point in that < 1575363796 944552 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :I don't need to release memory during those programs < 1575363825 654090 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :At least if you fork you don't need to worry about race conditions since you're the parent. < 1575363827 532128 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :though I do want to destroy a few resource-holding objects that hold something other than memory, such as file handles < 1575363831 904105 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :b_jonas: Yes, that is good too (although I think it is for clone() and not fork(); fork() has no flags), but I think what I read is that it is the same as the directory in /proc though, so you can use that to get a file descriptor for another process. < 1575363879 979682 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :shachaf: while you're the parent, yes. but how do you tell to some other processes which process that is? < 1575363904 652903 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :those other processes may want to send signals or whatever, even after your process (the parent) exits < 1575363936 122061 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Sure, but you can open /proc/pid and send them the fd. < 1575363945 314953 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :Other than the process ID, if you have a file descriptor then could you use a SCM_RIGHTS message to transmit it to other processes? < 1575364027 400753 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :zzo38: yes, or have other children inherit it < 1575364052 475882 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :b_jonas: Yes, if you are spawning them yourself < 1575364112 364983 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :Anyways, what the difference is in what I read they were doing in Linux and what my own idea was, is that my own way doesn't have a separate system call for sending a signal to or otherwise deal with other processes by the file descriptor instead of process ID; you just add together PIDFD and the file descriptor, to make a number usable where a process ID is expected. < 1575364150 781079 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :definitely SCM_RIGHTS, unless you're golfing for IOCCC, in which case passing file descriptors with sprintf(name, "/proc/%d/self/%d", parentpid, parent_pidfd); pidfd = open(name, 2, 0); is easier. < 1575364206 103935 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :zzo38: oh yeah, you mentioned that. but I find that a somewhat dangerous idea, putting the flag in the process id argument itself rather than into separate flags < 1575364239 239969 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :I don't have a definite example for why that's a bad idea, I just have the feeling that it could cause weird bugs, including possibly security bugs, in some programs < 1575364297 568167 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :I thought of that, and that is why the largest valid process ID has to be less than PIDFD-1. < 1575364337 932960 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :(Although there might be other things I have not thought of, but as far as I know, I cannot think of them) < 1575364360 818203 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Ugh. Can all y'all just scrap half of Unix and make a good system call API? < 1575364464 582713 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :shachaf: I had idea of Plan10 which is sort of like that, although you have to scrap less than half of Unix because some things required for compatibility with Unix; the rest can be implemented in user libraries so need not being system calls (some of them would use new Plan10 system calls which are not Unix system calls, in order to emulate them). < 1575364481 415116 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :zzo38: What if I don't want compatibility with Unix? < 1575364493 133403 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Or at best I want it only for an emulation layer like WSL. < 1575364526 292628 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :shachaf: have you seen WASI? you probably need more system calls than that for a full OS, but it seems to have the general right attitude < 1575364555 930481 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :ais523: Well, I want it to be the actual OS interface, for actual native code, and without a web browser or some ridiculous thing running in between. < 1575364565 69945 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :Some things would only be compatible if things are set up to do such thing anyways; if your program exports a function called "plan10main" then those things are not automatically set up. < 1575364571 354658 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :The goal is simplifying things, not adding layer and layers of wrappers. < 1575364576 799750 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :But maybe the API itself is good? < 1575364611 316045 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :(If your program doesn't include "plan10main", then the one in the library is used, which sets up Unix compatibility and then calls main.) < 1575364644 673967 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :Use a library without Unix compatibility if you do not want it though, I suppose, is also possible. < 1575364648 230608 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :It seems likely that all syscalls should go through something like io_uring, since how often do you want to do a ring transition for each one separately? < 1575364791 790873 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :The actual WASI API might be reasonable? What's better about it than Linux? < 1575364849 56567 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :I don't know what is io_uring < 1575364872 441854 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :zzo38: https://kernel.dk/io_uring.pdf < 1575364888 29024 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :and I want compatibility with a lot of existing programs that I use and I don't want to rewrite, so I use Linux. (and Windows at work.) < 1575364893 825507 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :That article maybe isn't the best introduction. < 1575364963 101785 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :but sure, experiment with research OSes if you want, someone has to do it so that 30 years from now, we have an infrastructure that's only 30 years obsolete, not 50 years obsolete < 1575364993 631002 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :b_jonas: It is why my idea of Plan10 has the compatibility mode (much of it is implemented in user libraries, but some stuff would be part of the kernel). < 1575365080 339095 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :zzo38: will you want a new main OS interface every 15 years, and will you have three different compatibility layers 30 years from now when you add the fourth one? < 1575365098 122371 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :with existing large programs using all of them mixed and matched through libraries obviously < 1575365113 18996 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu PRIVMSG #esoteric :back in an hour < 1575365114 248797 :b_jonas!~x@catv-176-63-14-182.catv.broadband.hu QUIT :Quit: leaving < 1575365117 73186 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :b_jonas: Permit programs to use only one of the interfaces. < 1575365133 712936 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Just like Windows supported either Win32 or POSIX, but not both at once. < 1575365275 881966 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :b_jonas: If the author of a program wishes to use multiple libraries that is up to the author of those programs. I should think the kernel itself would not have three different compatibility layers and new main OS interfaces, if it is designed properly. < 1575365472 373636 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :shachaf: I don't think WASI has a mandatory dependency on WebAssembly, although obviously it was designed for that use < 1575365495 796085 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :also, WebAssembly doesn't require a browser, it's just a bytecode language that can have small non-browser-dependent interpreters written for it (and a few of those exist already) < 1575365586 720316 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :(Of course, Unix programs which export a symbol called "plan10main" will not work when compiled for Plan10, but that is unavoidable. If you install an emulator then you might even be able to run the programs directly though (rather than recompiling them for Plan10), which would work; however, the emulators are not part of the core system, but just a feature of the core system to allow the possibility to install emulators.) < 1575365618 851572 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :zzo38: why not use a character in the symbol name that isn't valid in a UNIX program? < 1575365620 219471 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :ais523: I know of that, and I wanted to see if there is a library to execute WebAssembly programs from a native C program. < 1575365645 72615 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :zzo38: I'm not sure whether any of the existing interpreters work as a library, even if none do it should be easy to adapt them though < 1575365682 878413 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :ais523: Because the C compiler will not accept it. Anyways, it is the C library which causes the program to call main() when it starts anyways, I think? < 1575365701 454623 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :(So the kernel doesn't need to care what it is called.) < 1575365732 886789 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :won't the C compiler need to be modified anyway to produce programs for a new OS? < 1575365766 331038 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :but yes, in most implementations, main is called by an object file in the standard library, normally called something like crt0.o < 1575365774 979110 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :IIRC it isn't in libc itself, but a separate standard library < 1575365812 192080 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :Probably, but you will not need to modify the files which change how the program is parsed, I should think. < 1575365953 781365 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :out of interest, why do you want a different main method? so you can give it different parameters? < 1575365966 603017 :kingoffrance!~x__@c-67-161-241-22.hsd1.ut.comcast.net QUIT :Quit: x < 1575365977 574258 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :…now I'm wondering whether C++ object files mangle the name of "main" or not < 1575366015 388003 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :That is one of it, yes (there are a few additional parameters), but also for compatibility with UNIX. < 1575366068 835746 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :well, most C implementations let you give a function too many parameters without issue < 1575366086 942073 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :that's one of the reasons why caller-cleans is a more common calling convention than callee-cleans < 1575366093 10121 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(IMO callee-cleans is much better for a number of reasons) < 1575366117 282697 :Hooloovo0!Hooloovoo@sorunome.de QUIT :Ping timeout: 240 seconds < 1575366146 989457 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so why not use the same entry point for plan10 programs and posix programs? < 1575366174 526044 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :Because the default settings for Plan10 are not compatible with POSIX. < 1575366234 370156 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :(The default implementation of plan10main sets up some stuff required for POSIX compatibility and then calls main.) < 1575366239 783048 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :what sort of settings are these? things like locale? < 1575366318 501953 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :No; stuff such as that in POSIX, you will receive a SIGPIPE signal which will terminate the process for writing to any broken pipe, and so on < 1575366346 827639 :Hooloovo0!Hooloovoo@sorunome.de JOIN :#esoteric < 1575366411 968731 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :(Sometimes that behaviour with SIGPIPE is wanted, but often only for file descriptor 1. So if you are not using the POSIX compatibility then your program can enable SIGPIPE for file descriptor 1 only, in that case.) < 1575366455 937885 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oh, I see, for file descriptors inherited from the parent process there's no easy chance to configure that < 1575366469 792619 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(for file descriptors opened by the program itself, it would make sense for the API that opens it to specify how you wanted signals to be configured) < 1575366477 688228 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Are file descriptors a good system? < 1575366480 782037 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I can see an argument for file descriptors 1 and 2 < 1575366510 961874 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :It's kind of nice how you can have something like a perf_event_open fd, and either read() or mmap() it, just like anything else. < 1575366516 473765 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :shachaf: you need /something/ to be able to refer to an open file, and having an "open/closed" status in files rather than being stateless seems to be the right option because it makes it much easier to reason about potential race conditions < 1575366518 108397 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Rather than a bunch of special-case system calls. < 1575366520 511046 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :ais523: Yes, that makes sense. The POSIX compatibility API (which is a user library function) would call the system call and tell it to enable SIGPIPE. < 1575366530 542398 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :But sometimes people try too hard to fit things into that API. < 1575366531 154027 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :WASI came up with an improvement, though, where file descriptors are random numbers rather than being sequential < 1575366859 573795 :atriq!~Taneb@2001:41c8:51:10d:aaaa:0:aaaa:0 NICK :Taneb < 1575366918 745887 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :(possibly some setting in the C library which the default plan10main would set up, or that somehow checks whether or not plan10main has been overridden if that is possible) < 1575367150 41233 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Sequential file descriptors are clearly scow. < 1575367177 122707 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Windows has HANDLEs, which I guess are pretty similar. < 1575367183 892638 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :(To random descriptors.) < 1575367237 219213 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I guess they're not the same for various reasons. < 1575367411 463161 :olsner!~salparot@c80-217-180-83.bredband.comhem.se PRIVMSG #esoteric :I consider HANDLEs and file descriptors both just handles for kernel objects < 1575367430 551757 :olsner!~salparot@c80-217-180-83.bredband.comhem.se PRIVMSG #esoteric :(windows has some unrelated things that are typed HANDLE but aren't actually kernel objects though) < 1575367548 341410 :olsner!~salparot@c80-217-180-83.bredband.comhem.se PRIVMSG #esoteric :e.g. GDI handles are in a different namespace, and some are just pointers for things that pretend to be or once were kernel features but are implemented in user space < 1575367619 730206 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :It probably makes sense to be able to have "system calls" implemented in userspace, as Windows does. < 1575367634 281611 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :(Though maybe that's not really compatible with the ring buffer thing I was talking about before?) < 1575367649 625908 :olsner!~salparot@c80-217-180-83.bredband.comhem.se PRIVMSG #esoteric :it's a good way to give you freedom on the kernel side to change your system calls < 1575367662 532230 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :If the ABI and ISA fields in the ELF header are incorrect, then the kernel should see if an emulator for the specified ABI/ISA is loaded (the emulator is just a kernel module, and the core system does not include any emulators), and if there isn't one then trying to execute that file is an error. < 1575367715 228121 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I'm a little skeptical that things like POSIX are particularly good. < 1575367753 732931 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I'd rather have minimal and stable OS ABIs and then maybe a library on top that things can link to if they want to be portable. < 1575367809 532151 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :I do think there are some problems with POSIX, and also some problems with Windows, and also other systems. < 1575367905 243763 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :Wikipedia says that the ABI field in the ELF header "is often set to 0 regardless of the target platform". Unless the program is for System V, such files will have to be corrected in order to run on Plan10. < 1575367935 81936 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :zzo38: Is Plan10 some sort of banana pun? < 1575367952 860446 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :(This correction can be made without recompiling the program; you only have to change one byte in the executable file.) < 1575367970 187931 :zzo38!~zzo38@24-207-50-7.eastlink.ca PRIVMSG #esoteric :shachaf: That is not the intention; the name is similar to Plan9 but is different. < 1575368689 16852 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 JOIN :#esoteric < 1575368778 941871 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :shachaf: programs only use one interfaces => then all large programs will stick to the older interface because that's what the libraries use. just like everyone still uses gtk+ version 2 rather than the incompatible version 3, but in a larger scale. < 1575368796 539867 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :I'd prefer to keep most of the unix api, because most of it is sane, and just improve the few parts that are bad. < 1575368807 249124 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :but I admit I was a bit too sarcastic about compatibility < 1575368847 891009 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :and you can mix windows API with POSIX all the time on windows, although it's ugly because the POSIX API really doesn't match how windows works, and you need some conversion functions, but I still do it sometimes < 1575368899 977377 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :wib_jonas: You can port programs to new interfaces just like you can port them to new OSes. < 1575368953 508231 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :If programs are just using the OS ABI via libraries, it's even easier to port, because you can just port the libraries (like libc and SDL). < 1575368966 394981 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :ais523: main isn't mangled, but the C++ compiler treats in somewhat special way at compile time, and then the linker treats it specially at link time < 1575369080 21225 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :in particular, on most platforms the compiler emits main as an extern "C" function, even if you didn't explicitly define it as such, and it has an implicit return 0, and IIRC there was one or two more things special about it, plus the linker inserts constructors and destructors to it somehow < 1575369112 601460 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :or so I believe, but I'm not quite sure about this < 1575369246 647477 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :shachaf: no, windows HANDLEs are mostly sequential numbers too. they're not guaranteed to be sequential, unlike on unix, but they mostly are. < 1575369275 571459 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :or so I believe, but again, I'm not sure in this < 1575369304 655350 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Aren't HANDLEs generally opaque? < 1575369364 886555 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :shachaf: opaque, yes. opaque numbers that are typically sequential, but the OS gets to decide that, and may give you any numbers it if it feels like. < 1575369373 340941 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I thought they were sometimes pointers or other things. < 1575369690 54263 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :wib_jonas: IIRC in C++ main isn't allowed to be recursive (although in C it is) < 1575369712 903931 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :this is a weird limitation because it should be easy just to imply a wrapper around it in the compiler if the compiler couldn't handle a recursive main < 1575370037 21045 :ski!~ski@remote11.chalmers.se QUIT :Ping timeout: 240 seconds < 1575370569 251972 :wib_jonas96!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 JOIN :#esoteric < 1575370601 354116 :ski!~ski@remote11.chalmers.se JOIN :#esoteric < 1575370717 27369 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 QUIT :Ping timeout: 240 seconds < 1575370856 839440 :wib_jonas96!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 NICK :wib_jonas < 1575371900 917935 :arseniiv!~arseniiv@95.105.12.206.dynamic.ufanet.ru JOIN :#esoteric < 1575372753 969362 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`? dc < 1575372755 148397 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :dc is short for "dump core". (try it out yourself: dc -e '[') < 1575372760 377374 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`` dc -e '[' < 1575372761 220479 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :No output. < 1575372787 405853 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I want a program to SEGV, any options? < 1575372938 765386 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :`perl -ekill 11,$$ < 1575372939 476720 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :No output. < 1575372953 193358 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :``` perl '-ekill 11,$$'; echo $? < 1575372953 956906 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :bash: line 1: 54 Segmentation fault perl '-ekill 11,$$' \ 139 < 1575372967 354035 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :``` perl '-eunpack"p",0'; echo $? < 1575372970 656818 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :0 < 1575373051 202077 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :That's a fake SEGV. < 1575373196 677358 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`! c return *(int *)0; < 1575373199 488622 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :​/hackenv/interps/gcccomp/gcccomp: line 53: 68 Segmentation fault /tmp/compiled.$$ < 1575373212 548445 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :can't get much more real SEGV than that < 1575373248 997147 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :also, that "$$" is interesting, looks like there was an attempt to swap in the PID, but it still works anyway due to the nature of /tmp < 1575373291 160624 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I wanted to test the program "catchsegv" that I just found out about. < 1575373309 812681 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :But now I know how it works so I'm less curious. < 1575373393 599348 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :(It uses LD_PRELOAD to set up a signal handler.) < 1575373435 570030 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :oh, that reminds me < 1575373444 732727 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :``` rm -v /hackenv/bin/culprits-ng < 1575373452 301206 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :removed '/hackenv/bin/culprits-ng' < 1575373459 937921 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :I created that long ago, but I don't use it < 1575373467 133365 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`before < 1575373469 824430 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :​/hackenv/bin/culprits-ng//#!/bin/sh \ exec hg log -l 512 --template "{desc}\0" -- "$@" | perl -0ne '/^<([^>]*)>/ and print"$1 "' < 1575373599 11296 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :I almost never want to look up just the users who modified a file, without other parts of the revision log < 1575373850 589389 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :`culprits ../bin/culprits-ng < 1575373852 788165 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :wib_jonäs oerjän oerjän b_jonäs b_jonäs b_jonäs b_jonäs b_jonäs < 1575373996 278264 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Not 100% sure how culprits-ng differed from the regular one, other than the limit, no scowrevs, and no no-ping. < 1575374146 386150 :FireFly!znc@freenode/staff/firefly PRIVMSG #esoteric :...scowrevs? < 1575374161 53363 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`` hg log -l 512 --template "{desc}\0" -- ../bin/culprits-ng | perl -0ne '/^<([^>]*)>/ and print"$1 "' < 1575374167 244387 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :fizzie b_jonas b_jonas b_jonas b_jonas < 1575374183 245604 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`` hg log --removed -l 512 --template "{desc}\0" -- ../bin/culprits-ng | perl -0ne '/^<([^>]*)>/ and print"$1 "' < 1575374184 921466 :FireFly!znc@freenode/staff/firefly PRIVMSG #esoteric :`` cat $(which culprits) < 1575374185 36248 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :wib_jonas oerjan oerjan fizzie jeffl35 fizzie evilipse b_jonas b_jonas b_jonas b_jonas b_jonas < 1575374185 728615 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :hoag "$@" | awk '{print substr($1,2,length($1)-2)}' | xargs -d'\n' < 1575374210 623311 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :fizzie: no noping, no scowrevs, and different implementation. < 1575374232 418537 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :saner implementation, I hope < 1575374281 877734 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :What does it have to do with sanity? < 1575374291 968799 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :It looks like a golfed Perl implementation. < 1575374316 530683 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :FireFly: scowrevs is a list of revisions in our repository that most of the fancy commands hide by default, though you still see them with an explicit hg < 1575374328 763718 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :and I mean they hide their diffs, so you don't see the same change in the next revision either < 1575374367 397351 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :``` cat /hackenv/bin/hlnp < 1575374368 240251 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :scowrevs="$(/usr/bin/paste -sd'|' /hackenv/share/scowrevs)"; hg log -r "tip:0 & ! ($scowrevs)" "$@" | sed 's/\(\(^\| \)[ 1575386814 697414 PRIVMSG #esoteric :14[[07Code is eso14]]4 N10 02https://esolangs.org/w/index.php?oldid=67610 5* 03DmilkaSTD 5* (+148) 10Created page with "This language is inspired on the game "Baba is you". It is not finished, im making it. I made this page to be the first in make a language like this" < 1575387189 826938 :myname!~myname@ks300980.kimsufi.com PRIVMSG #esoteric :also, how is the g in fungot pronounced? depending on whether you interpret it as part of "got" or es "funge", it would be different < 1575387190 4811 :fungot!~fungot@unaffiliated/fizzie/bot/fungot PRIVMSG #esoteric :myname: i've just written a version of all of the ten thousand pastes up there. what else can i set the escape proc to a global variable < 1575387471 115141 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :myname: I pronounce the g in "fungot" like the g in "fungi" < 1575387471 377844 :fungot!~fungot@unaffiliated/fizzie/bot/fungot PRIVMSG #esoteric :ais523: all right. my wife got her masters at tyler school of art, too? :d hehe no :) i was wondering whether sxpath could be used, how type errors would be annoying with forced fnord. < 1575387484 514224 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I'm guessing this is ^style irc? < 1575387486 114323 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :^style < 1575387486 121511 :fungot!~fungot@unaffiliated/fizzie/bot/fungot PRIVMSG #esoteric :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 < 1575387488 149110 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :yes < 1575387533 831471 :myname!~myname@ks300980.kimsufi.com PRIVMSG #esoteric :ais523: i do that too, but you could make a point of it coming from befunge < 1575387555 40714 :myname!~myname@ks300980.kimsufi.com PRIVMSG #esoteric :I suppose, if you pronounce gif as jif, you should pronounce fungot as funjot < 1575387555 150031 :fungot!~fungot@unaffiliated/fizzie/bot/fungot PRIVMSG #esoteric :myname: http://youtube.com/ fnord richard dawkins " what if you're reading this < 1575387578 510051 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :I do it as in "got". < 1575387586 142050 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :myname: don't most Befunge impls have names which are a pun on "fungi"? < 1575387609 196151 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(even though the back-derived etymology is based on "fungible", and the actual etymology was based purely on spelling) < 1575387638 839314 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :"(UK, US) enPR: fŭnʹjī, fŭngʹgī, IPA(key): /ˈfʌn.dʒaɪ/, /ˈfʌŋ.ɡaɪ/, /ˈfʌŋ.ɡiː/, /ˈfʌn.dʒiː/" that's a lotta pronunciations. < 1575387714 532562 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I didn't even realise that "fungi" allowed "g"=/dʒ/ < 1575387729 35347 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I don't think I've ever heard that pronunciation < 1575387872 334040 :myname!~myname@ks300980.kimsufi.com PRIVMSG #esoteric :pronounciation in english is a mess < 1575388169 976620 :ais523!~ais523@unaffiliated/ais523 QUIT :Quit: sorry for my connection < 1575388183 290241 :ais523!~ais523@unaffiliated/ais523 JOIN :#esoteric < 1575388506 437460 :kspalaiologos!~kspalaiol@176.221.122.71 JOIN :#esoteric < 1575388568 205610 :Soni!~quassel@unaffiliated/soniex2 PRIVMSG #esoteric :is this esoteric? https://bpaste.net/show/6E66I < 1575388664 371216 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it's a DSL, and I don't think we have a consensus on whether DSLs are esoteric < 1575388671 187947 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :they're probably esoteric if used for an unintended purpose < 1575388677 729874 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :is that thing TC when operating on fixed input, for example? < 1575389417 494792 :Soni!~quassel@unaffiliated/soniex2 PRIVMSG #esoteric :no < 1575389445 819139 :Soni!~quassel@unaffiliated/soniex2 PRIVMSG #esoteric :I did think about making it so, but, no < 1575389673 170388 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Hmm, "bone"? < 1575390536 439257 :Soni!~quassel@unaffiliated/soniex2 PRIVMSG #esoteric :int-e: "bone"s are structural components of humans < 1575390571 153787 :Soni!~quassel@unaffiliated/soniex2 PRIVMSG #esoteric :originally this was meant to have no validation features, i.e. it wasn't supposed to support use-cases best served by a schema < 1575390583 149051 :Soni!~quassel@unaffiliated/soniex2 PRIVMSG #esoteric :but I guess I ended up adding those in anyway < 1575390605 458042 :Soni!~quassel@unaffiliated/soniex2 PRIVMSG #esoteric :and schemas are basically structural definitions < 1575390615 953400 :Soni!~quassel@unaffiliated/soniex2 PRIVMSG #esoteric :so, boneless > 1575391296 765654 PRIVMSG #esoteric :14[[07Esomachine14]]4 10 02https://esolangs.org/w/index.php?diff=67611&oldid=66926 5* 03Dart 5* (-236) 10Formatting and terminology < 1575391324 591132 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :wait, fungi and fungot are pronounced differently? < 1575391324 763193 :fungot!~fungot@unaffiliated/fizzie/bot/fungot PRIVMSG #esoteric :wib_jonas: but any reasonably complex caching system that doesn't act dumbly prolly is too stupid to load them when fnord tcpdump, and only insane people are allowed to participate. < 1575391335 770541 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :I mean, fungi and befunge are pronounced differently? < 1575391391 151604 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :oh heck this is a mess indeedd < 1575391419 391305 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :"fungi" and "fungible" are (potentially) pronounced differently, and I think "Befunge" follows the latter usually. < 1575391428 360392 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 PRIVMSG #esoteric :apparently "fungi" is pronounced both ways < 1575391492 9218 :int-e!~noone@int-e.eu PRIVMSG #esoteric :"The Betty compiler, for example, treats every possible straight line of instructions as a subprogram, and if a 'p' instruction alters that subprogram, that subprogram is recompiled." -- hence the name "straight-line code" < 1575391554 858762 :fizzie!fis@unaffiliated/fizzie PRIVMSG #esoteric :Four ways (according to wiktionary), though only two relate to the kind of 'g'. /ɡ/ vs. /dʒ/ and /aɪ/ vs. /iː/. < 1575391770 505740 :int-e!~noone@int-e.eu PRIVMSG #esoteric :(I looked at the Befunge page in hopes of a pronunciation guide but there doesn't seem to be one.) < 1575391908 614851 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Oh great, "fungi" has two pronunciations? < 1575391943 646507 :int-e!~noone@int-e.eu PRIVMSG #esoteric :That's confusing. > 1575391994 811733 PRIVMSG #esoteric :14[[07Talk:Esomachine14]]4 N10 02https://esolangs.org/w/index.php?oldid=67612 5* 03Dart 5* (+619) 10Created page with "==Inconsistencies== Here's the example of truth machine: INDEX_STATE[1, false] HANDS_EXPECT[] INDEX_SET[1, HANDS] OUTPUT[1] HANDS_JUMP[48, 7] HANDS_JUMP[49, 2] INDEX_ST..." < 1575392004 218409 :myname!~myname@ks300980.kimsufi.com PRIVMSG #esoteric :no, 4, only 2 regarding the g > 1575392021 188954 PRIVMSG #esoteric :14[[07Talk:Esomachine14]]4 10 02https://esolangs.org/w/index.php?diff=67613&oldid=67612 5* 03Dart 5* (+17) 10/* Inconsistencies */ > 1575392051 569381 PRIVMSG #esoteric :14[[07Talk:Esomachine14]]4 10 02https://esolangs.org/w/index.php?diff=67614&oldid=67613 5* 03Dart 5* (+77) 10/* Inconsistencies */ < 1575392236 80202 :ais523!~ais523@unaffiliated/ais523 QUIT :Read error: Connection reset by peer < 1575393064 424598 :Lord_of_Life_!~Lord@unaffiliated/lord-of-life/x-0885362 JOIN :#esoteric < 1575393126 380834 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 QUIT :Ping timeout: 265 seconds < 1575393146 190317 :Lord_of_Life_!~Lord@unaffiliated/lord-of-life/x-0885362 NICK :Lord_of_Life < 1575393822 612648 :wib_jonas!25bf3cd1@gateway/web/cgi-irc/kiwiirc.com/ip.37.191.60.209 QUIT :Remote host closed the connection < 1575394284 559925 :xkapastel!uid17782@gateway/web/irccloud.com/x-cobhaicbrfzfjkdr QUIT :Quit: Connection closed for inactivity < 1575397257 96336 :heroux!sandroco@gateway/shell/insomnia247/x-xlgyhklsybgdlvsa QUIT :Ping timeout: 240 seconds < 1575397264 33398 :ais523!~ais523@unaffiliated/ais523 JOIN :#esoteric < 1575397871 575759 :LKoen!~LKoen@lstlambert-657-1-122-23.w92-154.abo.wanadoo.fr JOIN :#esoteric < 1575397902 983425 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu JOIN :#esoteric < 1575398012 986349 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :kspalaiologos: sorry, it may have been a bit rude to take over your bot < 1575398023 927592 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :what? < 1575398031 974995 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :bfbot. it's your bot, isn't it? < 1575398042 234496 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :yes < 1575398045 440912 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :I wrote it in bash tho lol < 1575398053 682107 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :I HAVE to check the logs < 1575398062 595908 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :because I'm really curious how have you done that < 1575398063 430419 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :=help < 1575398066 820528 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :yeah < 1575398074 898396 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :not mad at all tbh < 1575398087 151063 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :but if it had a few "holes" it wouldn't be bad if it was left anyway < 1575398090 855306 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :because it's another users account < 1575398095 912355 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :and no harm is done to my vps < 1575398105 754429 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :because I knew there is going to be a severe security hole in this bot < 1575398108 829131 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :kspalaiologos: the bot parses irc lines wrong. it looks like if you say "PRIVMSG" inside a message, even if it's not the second word of the irc line, it thinks that that's the command word and the next word is the target nick/channel < 1575398128 134947 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :unn < 1575398129 976611 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :fine < 1575398131 325958 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :and if you say ":=" inside a message, it thinks that's the start of the message, even if it's not at the start of the fourth word of the irc line < 1575398138 705889 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :both of those are serious security bugs < 1575398148 397859 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :so how did you take it down < 1575398148 813425 :heroux!sandroco@gateway/shell/insomnia247/x-lyugeyrlftlhocsb JOIN :#esoteric < 1575398153 367211 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :I thought there was a RCE < 1575398166 265961 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :it would be way more interesting with an RCE in < 1575398169 272950 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :I asked it to send a message to register his nickname bfbot for my account < 1575398184 732632 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :and? < 1575398187 417172 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :then I told nickserv that bfbot is my nick and the bot isn't allowed to use it < 1575398189 589891 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :and ghosted it < 1575398194 464331 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :ah, smart < 1575398204 5622 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :haha < 1575398214 408039 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :there's a third bug in the bot which I didn't use for this, and which is less important, but it's still nasty enough that you should fix: < 1575398232 712355 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :/ thanks a lot for formalizing this though < 1575398236 24820 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :if the message ends in a backslash, it seems like the bot thinks that the next irc line is a continuation of that message < 1575398243 448335 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :I'm curious why := is implemented as a newline < 1575398244 751885 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :no clue really < 1575398251 749269 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :b_jonas, NO WAY XD < 1575398258 139193 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :I'm done with bash < 1575398282 964157 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :why is this behaviour with := occuring though < 1575398300 191747 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :I may send you the source code for further review as I fix the bugs < 1575398310 524976 :kritixilithos!~kritixili@gateway/tor-sasl/kritixilithos JOIN :#esoteric < 1575398317 895710 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :to make it clear, an irc message that the bot reads from the server looks like this: "b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :=echo hello\r\n" < 1575398324 890377 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :no wait < 1575398330 275311 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric : looks like this: ":b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :=echo hello\r\n" < 1575398340 526691 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :Ah, yes < 1575398343 63676 :kritixilithos!~kritixili@gateway/tor-sasl/kritixilithos PRIVMSG #esoteric :kspalaiologos: I thought the bot was written in seed :/ < 1575398344 792591 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :I need to match \r\n aswell < 1575398349 603989 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :it has words separated by colons. the first word is always the source, the second is the command < 1575398355 917091 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :kritixilithos, because in practice, it is < 1575398364 196124 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :a very long system() befunge command < 1575398365 915780 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :after that, there can be any number of arguments, and the last argument will start with a colon and can contain spaces inside < 1575398380 585598 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :that's amazing < 1575398383 505814 :kritixilithos!~kritixili@gateway/tor-sasl/kritixilithos PRIVMSG #esoteric :then how does bash play into this? < 1575398391 99376 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :note that the channel name may contain colons, it's only colons at the start of a word that mark the final argument < 1575398391 548188 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :^ well, because the bot is programmed in bash < 1575398400 453809 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :then I put it inside a befunge's "system" < 1575398406 241798 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :and ran it over with my generator < 1575398413 495725 :kritixilithos!~kritixili@gateway/tor-sasl/kritixilithos PRIVMSG #esoteric :the befunge system call calls the bash program? < 1575398417 461853 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :so you have to find the first that starts with a colon, not counting the very first word, which always starts with a colon in a message from a server < 1575398418 131709 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :nope < 1575398433 909784 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :b_jonas, I'll fix this < 1575398435 897260 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :really < 1575398444 271166 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :for PRIVMSG in a message the server sends you, that will always be the fourth word < 1575398447 344269 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :but I'm a tiny bit occupied though < 1575398451 868101 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :nope its not the case < 1575398457 369508 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :There is simpler workaround < 1575398478 504782 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :the "thing" matching the regex is actually not matching a newline at the end < 1575398493 312674 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :I just need to add [\r\n]+ at the end of regex and I'm done with this bug < 1575398517 273966 :FreeFull!~freefull@defocus/sausage-lover JOIN :#esoteric < 1575398519 580520 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :but this is exploitable too < 1575398520 452191 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :though < 1575398525 253794 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :let me check something < 1575398540 842080 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :does both 0xA and 0xC start a newline in IRC? < 1575398558 2050 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :kspalaiologos: the server always sends you \r\n , which are the bytes 0xD then 0xA < 1575398558 486373 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :it's only CRLF or LF, or it can be CR only too < 1575398566 865795 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :if you send a message to the server, then \n is enough < 1575398572 485834 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :yes yes < 1575398573 177484 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :fine < 1575398576 194809 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :thanks < 1575398585 34894 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :what if user sends a single CR though? < 1575398590 369831 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :does this issue a break or not < 1575398592 499050 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :I don't know < 1575398605 633905 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :I'll just go safe with it < 1575398612 285640 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :how do I bring the bot back lol though < 1575398613 577746 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :the server is nice, there are a lot of things that it allows clients to send but that it will never send to clients < 1575398616 32661 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :as I finish working on it < 1575398638 315890 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :such as PRIVMSG or NOTICE with multiple channel/nick targets, or KICK with multiple nick targets, or MODE with more than four modes < 1575398661 733652 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :or a line feed without a carriage return, or an empty line, or an invalid command, or a command or nick or channel in a case that isn't the canonical one < 1575398670 366140 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :and more < 1575398680 342151 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :this makes it easy to write a client, but harder to write a good irc server < 1575398696 133588 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :well, that's only part of the reason, the other reason is that the server has to manage multiple connections, including with other irc servers < 1575398699 114764 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :but still < 1575398714 734525 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :how do you bring the bot back => no idea, kill then restart your program or something < 1575398870 193703 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :it seems that freenode irc interprets a cr as a line break too if you send one, but I wouldn't rely on this, and I haven't tested any other networks > 1575398927 348581 PRIVMSG #esoteric :14[[07Fpulse14]]4 10 02https://esolangs.org/w/index.php?diff=67615&oldid=49958 5* 03Dart 5* (+0) 10Changed redirect target from [[Fpulse/]] to [[F-PULSE]] < 1575398970 30564 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :kspalaiologos: anyway, before I took the bot down, I made it loop by sending a message that it misparsed < 1575398999 356124 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :haha < 1575399000 113072 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :it was after that that I decided it was buggy enough that I can just have the irc server eject it < 1575399032 24362 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :I'll write it all over again < 1575399041 880362 :kspalaiologos!~kspalaiol@176.221.122.71 PRIVMSG #esoteric :and burn the code printouts to get rid of it for real < 1575399161 5779 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :I'd like to defend bash though. some people use bash and write less buggy programs in it. I'm not advertising that, there are better programming languages than bash, just saying. < 1575399188 462676 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :and some people write worse programs in perl or php, ones that open huge holes of sql injections for no reasons < 1575399245 229161 :LKoen!~LKoen@lstlambert-657-1-122-23.w92-154.abo.wanadoo.fr QUIT :Remote host closed the connection < 1575399257 172974 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :also, publishing the source code of the bot may help, because it may let the regulars find or debug bugs more quickly. without them, it took days until someone (perhaps kritixilithos) to find the bug with the backslash at the end of the line < 1575399314 513671 :LKoen!~LKoen@lstlambert-657-1-123-43.w92-154.abo.wanadoo.fr JOIN :#esoteric < 1575399438 167471 :kritixilithos!~kritixili@gateway/tor-sasl/kritixilithos QUIT :Quit: quit < 1575399775 69409 :laerlingSAP!~laerlings@193.16.224.8 JOIN :#esoteric < 1575400499 909846 :tromp!~tromp@2a02:a210:1585:3200:f03d:9c15:faa0:1faf QUIT :Remote host closed the connection < 1575400602 665916 :tromp!~tromp@ip-213-127-58-137.ip.prioritytelecom.net JOIN :#esoteric < 1575400888 697142 :tromp!~tromp@ip-213-127-58-137.ip.prioritytelecom.net QUIT :Ping timeout: 268 seconds < 1575400892 516753 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric : is there any use of the std::vector copy constructor that isn't a mistake, anyway ← I don't know what it actually does, but I'm guessing from the discussion that it actually moves the vector contents and leaves the original vector empty? < 1575400911 289788 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :ais523: no < 1575400946 702671 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :the copy contructor of std::vector (in C++) copies the contents of the vector, which implies copying each element of the vector < 1575400959 516731 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :OK, that's what I'd expect it to do < 1575400968 374635 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :the move constructor moves the vector contents by updating pointers in the headers, and leaves the original one empty < 1575400993 278886 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oh right, because in C++ a moved-out-of object can still be referenced < 1575401004 845252 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(C++ "move" corresponds to Rust "take" rather than Rust "move") < 1575401037 461672 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :re the RAII discussion, I think the name comes from the fact that there's no user-observable time during which the object is allocated but uninitialised < 1575401052 522348 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :ais523: yes, but in case of most types like an std::vector it's easy, because the moved out one will just have a 0 size and a null pointer in the header. the hard case is std::list, which has to heap allocate to move out of itself with the move constructor. < 1575401053 838160 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :in C you often deal with a four-state transition, allocate/initialise/deinitialise/deallocate < 1575401060 129755 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and RAII says you merge the first two and last two < 1575401096 886866 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :OK, now I have to ask what the difference between a list and a vector is < 1575401101 915944 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :is the list linked? because that's ridiculous < 1575401106 67252 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :C++ std::list is a doubly linked list < 1575401158 487895 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :my current belief about linked lists is "it doesn't make sense to have an abstraction for linked lists, in all the cases where they're actually useful you need to be doing something horrifically low-level with their internals" < 1575401163 223303 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :it's something you very rarely need, and it's a pity that it's in the C++ standard library with such a simple name, because it gets lots of clueless people use it when they shouldn't < 1575401176 845499 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :ais523: yes, that's close to true < 1575401210 584546 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :however, even if you don't have the general std::list, you can meet one of those low-level things where you define a more specialized object whose copy constructor has to heap-allocate < 1575401241 736432 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :which is why they want to solve the general problem, not really for what std::list should do, but how to handle objects like that < 1575401245 247162 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :and yes, it's a rare case < 1575401403 893668 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :the more important tricky case is that of std::string (and cv::Vector from the Opencv library), which have pointers to themselves, and so have to do something nontrivial when they're swapped or move-assigned or move-constructed, though the move construction can't raise an exception unlike with std::list < 1575401525 247317 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :Rust's solution to that apparently has corner cases where it's unsound, I hope they come up with a good fix soon < 1575401825 466363 :ais523!~ais523@unaffiliated/ais523 QUIT :Quit: quit < 1575402551 402360 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :oh, right. if I want set -e in an interactive shell, as opposed to a HackEso command, I should do it in a parenthisized subshell. < 1575402591 410642 :b_jonas!~x@catv-176-63-14-58.catv.broadband.hu PRIVMSG #esoteric :or in a shell script running in a subshell obviously < 1575403177 732253 :laerlingSAP!~laerlings@193.16.224.8 QUIT :Quit: Leaving < 1575404154 612704 :kingoffrance!~x__@c-67-161-241-22.hsd1.ut.comcast.net JOIN :#esoteric < 1575404706 332695 :tromp!~tromp@ip-213-127-58-137.ip.prioritytelecom.net JOIN :#esoteric < 1575404987 277371 :tromp!~tromp@ip-213-127-58-137.ip.prioritytelecom.net QUIT :Ping timeout: 265 seconds < 1575406904 791262 :kspalaiologos!~kspalaiol@176.221.122.71 QUIT :Quit: Leaving < 1575407141 640850 :olsner!~salparot@c80-217-180-83.bredband.comhem.se QUIT :Ping timeout: 268 seconds < 1575407147 719934 :sftp!~sftp@unaffiliated/sftp QUIT :Excess Flood < 1575407167 433526 :sftp!~sftp@unaffiliated/sftp JOIN :#esoteric < 1575407406 595710 :olsner!~salparot@c80-217-180-83.bredband.comhem.se JOIN :#esoteric < 1575407983 517909 :tromp!~tromp@2a02:a210:1585:3200:ac62:4b3c:5400:1598 JOIN :#esoteric < 1575408263 504264 :tromp!~tromp@2a02:a210:1585:3200:ac62:4b3c:5400:1598 QUIT :Ping timeout: 276 seconds < 1575411450 14671 :tromp!~tromp@2a02:a210:1585:3200:ac62:4b3c:5400:1598 JOIN :#esoteric < 1575412215 837597 :tromp!~tromp@2a02:a210:1585:3200:ac62:4b3c:5400:1598 QUIT :Remote host closed the connection < 1575412951 252578 :hppavilion[1]!~omegasome@172.98.86.92 JOIN :#esoteric < 1575414555 507758 :tromp!~tromp@2a02:a210:1585:3200:ac62:4b3c:5400:1598 JOIN :#esoteric < 1575414854 512583 :tromp!~tromp@2a02:a210:1585:3200:ac62:4b3c:5400:1598 QUIT :Ping timeout: 276 seconds < 1575415136 917985 :arseniiv!~arseniiv@95.105.12.206.dynamic.ufanet.ru QUIT :Ping timeout: 246 seconds < 1575415591 612167 :xkapastel!uid17782@gateway/web/irccloud.com/x-tgmmxszmniubknop JOIN :#esoteric < 1575416674 254395 :hppavilion[1]!~omegasome@172.98.86.92 QUIT :Ping timeout: 265 seconds < 1575417456 506944 :FreeFull!~freefull@defocus/sausage-lover QUIT :