< 1728691233 325224 :X-Scale!~X-Scale@89.214.121.122 QUIT :Ping timeout: 256 seconds < 1728691382 915905 :amby!~ambylastn@ward-15-b2-v4wan-167229-cust809.vm18.cable.virginm.net QUIT :Quit: so long suckers! i rev up my motorcylce and create a huge cloud of smoke. when the cloud dissipates im lying completely dead on the pavement > 1728692394 487878 PRIVMSG #esolangs :14[[07BF Joust strategies14]]4 10 02https://esolangs.org/w/index.php?diff=143161&oldid=143160 5* 03Ais523 5* (+14) 10/* 2024 */ fix a mistake in the description < 1728692885 779133 :impomatic!~impomatic@2a00:23c7:5fbd:8001:3970:1528:dd02:904d QUIT :Quit: Client closed > 1728693258 302454 PRIVMSG #esolangs :14[[07BF Joust strategies14]]4 10 02https://esolangs.org/w/index.php?diff=143162&oldid=143161 5* 03Ais523 5* (+1964) 10/* Reconnaissance */ mention tape length estimation > 1728693295 129260 PRIVMSG #esolangs :14[[07BF Joust strategies14]]4 M10 02https://esolangs.org/w/index.php?diff=143163&oldid=143162 5* 03Ais523 5* (+1) 10/* Tape length estimation */ grammar > 1728693348 420309 PRIVMSG #esolangs :14[[07BF Joust strategies14]]4 10 02https://esolangs.org/w/index.php?diff=143164&oldid=143163 5* 03Ais523 5* (+66) 10/* Tape length estimation */ fix broken parenthetical > 1728693547 713080 PRIVMSG #esolangs :14[[07BF Joust strategies14]]4 10 02https://esolangs.org/w/index.php?diff=143165&oldid=143164 5* 03Ais523 5* (+37) 10/* Anti-shudder clear */ clarify > 1728693673 12266 PRIVMSG #esolangs :14[[071 byte :514]]4 10 02https://esolangs.org/w/index.php?diff=143166&oldid=127866 5* 03Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 5* (+25) 10/* Interpeter */ < 1728693729 394325 :X-Scale!~X-Scale@89.214.121.122 JOIN #esolangs X-Scale :[https://web.libera.chat] X-Scale > 1728694234 846916 PRIVMSG #esolangs :14[[07BF Joust strategies14]]4 10 02https://esolangs.org/w/index.php?diff=143167&oldid=143165 5* 03Ais523 5* (+1202) 10/* Defense */ discuss flag repair > 1728694428 533977 PRIVMSG #esolangs :14[[07BF Joust strategies14]]4 10 02https://esolangs.org/w/index.php?diff=143168&oldid=143167 5* 03Ais523 5* (+220) 10/* Flag repair */ mention interaction with careless clears > 1728694846 35430 PRIVMSG #esolangs :14[[071 byte :514]]4 10 02https://esolangs.org/w/index.php?diff=143169&oldid=143166 5* 03Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 5* (+23) 10/* Interpeter */ > 1728695692 11339 PRIVMSG #esolangs :14[[07Cut14]]4 10 02https://esolangs.org/w/index.php?diff=143170&oldid=79586 5* 03Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 5* (+65) 10/* Example programs */ > 1728695722 821937 PRIVMSG #esolangs :14[[07Cut14]]4 10 02https://esolangs.org/w/index.php?diff=143171&oldid=143170 5* 03Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 5* (-4) 10/* Example programs */ < 1728696158 362430 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :Why does ASN.1 BER need the specification of which of the three kind of ISO 6093 formats is used? > 1728696682 133028 PRIVMSG #esolangs :14[[07Snakel (Ractangle)14]]4 M10 02https://esolangs.org/w/index.php?diff=143172&oldid=143154 5* 03PythonshellDebugwindow 5* (+42) 10Categories < 1728698678 995828 :X-Scale!~X-Scale@89.214.121.122 QUIT :Quit: Client closed < 1728701253 435439 :X-Scale!~X-Scale@89.214.121.122 JOIN #esolangs X-Scale :[https://web.libera.chat] X-Scale < 1728704878 434849 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 QUIT :Ping timeout: 252 seconds < 1728704974 905615 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 JOIN #esolangs Lord_of_Life :Lord < 1728705281 460377 :nitrix!~nitrix@user/meow/nitrix QUIT :Quit: ZNC 1.8.2 - https://znc.in < 1728705391 920490 :nitrix!~nitrix@user/meow/nitrix JOIN #esolangs nitrix :ZNC - https://znc.in > 1728706434 166162 PRIVMSG #esolangs :14[[07Special:Log/newusers14]]4 create10 02 5* 03Sei2423 5* 10New user account > 1728706760 268787 PRIVMSG #esolangs :14[[07Langton's ant14]]4 10 02https://esolangs.org/w/index.php?diff=143173&oldid=143133 5* 03Iddi01 5* (+235) 10Fix details < 1728707477 867941 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :In order to be closer to ASN.1 so that a similar program can be used, I had made up ASN.1X (instead of ASN.2). https://raw.githubusercontent.com/zzo38/scorpion/refs/heads/trunk/asn1/asn1.doc Please tell me if you think something should be changed, or is wrong, or is no good, etc. < 1728707634 821048 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :(ASN.1X adds some things and removes some things compared with ASN.1, and also adds a few additional restrictions compared with ASN.1) < 1728708062 600910 :craigo!~craigo@user/craigo QUIT :Remote host closed the connection < 1728711074 565120 :X-Scale!~X-Scale@89.214.121.122 QUIT :Quit: Client closed > 1728716795 680113 PRIVMSG #esolangs :14[[07'Python' is not recognized as an internal or external command, operable program or batch file.14]]4 10 02https://esolangs.org/w/index.php?diff=143174&oldid=143149 5* 03Ractangle 5* (+97) 10 < 1728717448 318956 :iddi01!~iddi01@2604:9cc0:14:8d60:d5b0:dacd:a37a:e880 JOIN #esolangs * :[https://web.libera.chat] iddi01 < 1728717521 541146 :iddi01!~iddi01@2604:9cc0:14:8d60:d5b0:dacd:a37a:e880 PRIVMSG #esolangs :!zjoust polexchange (>)*9([-[([(+[{(-)*4(-[{(-)*123[+.]}])%6}])%5][-.]>[(-[{(+)*4(+[{(+)*123[-.]}])%6}])%5][+.]>)*-1]]>)*22 < 1728717521 874975 :zemhill!bfjoust@selene.zem.fi PRIVMSG #esolangs :iddi01.polexchange: points -3.74, score 16.68, rank 29/47 < 1728717575 59766 :iddi01!~iddi01@2604:9cc0:14:8d60:d5b0:dacd:a37a:e880 PRIVMSG #esolangs :In case you haven't figured it out, the previous web.polexchange were also by me < 1728718975 300857 :iddi01!~iddi01@2604:9cc0:14:8d60:d5b0:dacd:a37a:e880 PRIVMSG #esolangs :The name refers to it exchanging polarity of clears while doing the rush. < 1728721711 880126 :SGautam!uid286066@id-286066.ilkley.irccloud.com JOIN #esolangs SGautam :Siddharth Gautam < 1728724235 778541 :iddi01!~iddi01@2604:9cc0:14:8d60:d5b0:dacd:a37a:e880 QUIT :Quit: Client closed < 1728727372 567166 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 QUIT :Remote host closed the connection < 1728727406 460497 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 JOIN #esolangs Lord_of_Life :Lord < 1728727468 525021 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 QUIT :Excess Flood < 1728727502 458559 :Everything!~Everythin@178-133-161-246.mobile.vf-ua.net JOIN #esolangs Everything :Everything < 1728727795 457536 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 JOIN #esolangs Lord_of_Life :Lord > 1728728671 793087 PRIVMSG #esolangs :14[[07User talk:MihaiEso14]]4 10 02https://esolangs.org/w/index.php?diff=143175&oldid=142734 5* 03None1 5* (+491) 10/* Would you like to join Funcode? */ help contributing/translating? < 1728728690 752834 :Sgeo_!~Sgeo@user/sgeo QUIT :Read error: Connection reset by peer < 1728729177 589885 :Everything!~Everythin@178-133-161-246.mobile.vf-ua.net QUIT :Quit: leaving > 1728729294 522739 PRIVMSG #esolangs :14[[07Cut14]]4 10 02https://esolangs.org/w/index.php?diff=143176&oldid=143171 5* 03PkmnQ 5* (+92) 10/* Python implementation */ < 1728729698 434013 :__monty__!~toonn@user/toonn JOIN #esolangs toonn :Unknown < 1728729781 462537 :X-Scale!~X-Scale@89.214.121.122 JOIN #esolangs X-Scale :[https://web.libera.chat] X-Scale < 1728729954 429230 :X-Scale56!~X-Scale@89.214.121.122 JOIN #esolangs X-Scale :[https://web.libera.chat] X-Scale < 1728730095 328780 :X-Scale!~X-Scale@89.214.121.122 QUIT :Ping timeout: 256 seconds < 1728730265 329436 :X-Scale56!~X-Scale@89.214.121.122 QUIT :Ping timeout: 256 seconds > 1728731479 467749 PRIVMSG #esolangs :14[[07BF Joust strategies14]]4 M10 02https://esolangs.org/w/index.php?diff=143177&oldid=143168 5* 03Iddi01 5* (+638) 10/* Major Programs */ If you know the exact year, feel free to move them to the correct place > 1728732493 562431 PRIVMSG #esolangs :14[[07Translated ORK/PSTF Again1214]]4 N10 02https://esolangs.org/w/index.php?oldid=143178 5* 03PrySigneToFry 5* (+2391) 10Created page with "Translated ORK/Mihai Again8|It is recommended not to rewrite the memory of the com@@? ? uAM@?MA? ?? EE,? ?e M?EMEE?EEM$ #E?AmM?E?? 9uMuu7}? ?e M?EEM?..." > 1728732522 733972 PRIVMSG #esolangs :14[[07Translated ORK/Mihai Again814]]4 10 02https://esolangs.org/w/index.php?diff=143179&oldid=143123 5* 03PrySigneToFry 5* (+30) 10 > 1728732553 474460 PRIVMSG #esolangs :14[[07Joke language list14]]4 10 02https://esolangs.org/w/index.php?diff=143180&oldid=143122 5* 03PrySigneToFry 5* (+63) 10 > 1728732780 98896 PRIVMSG #esolangs :14[[07User talk:MihaiEso14]]4 10 02https://esolangs.org/w/index.php?diff=143181&oldid=143175 5* 03PrySigneToFry 5* (+774) 10/* My all Esolangs are designed by ONLY myself until now. */ new section > 1728733321 435383 PRIVMSG #esolangs :14[[07Esolang:Featured languages/Candidates14]]4 M10 02https://esolangs.org/w/index.php?diff=143182&oldid=128341 5* 03Iddi01 5* (+984) 101. Proposed [[Langton's ant]] 2. There is *no* obvious rule that says people cannot change their proposal, b_jonas did it and wasn't stopped 3. The syntax guide is outdated, updated it < 1728733408 189905 :amby!~ambylastn@ward-15-b2-v4wan-167229-cust809.vm18.cable.virginm.net JOIN #esolangs amby :realname < 1728735309 590415 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl JOIN #esolangs * :Textual User < 1728735519 52877 :ais523!~ais523@user/ais523 JOIN #esolangs ais523 :(this is obviously not my real name) < 1728735581 141216 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it strikes me that maybe a way to make BF Joust easier to get into is to have a number of "fixed" hills (i.e. new programs never join them, just get scored against them) of varying difficulty < 1728735590 733215 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so you could try to top the beginner hill first, then the intermediate hill, etc. < 1728735663 83563 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :this also might give practice in tuning to hills with different makeups < 1728735699 295888 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :impatience does as well as it does because it is hard to tune against turtles in modern BF Joust, there are so many other demands on a program's time > 1728735844 28961 PRIVMSG #esolangs :14[[07Translated ORK/PSTF Again1214]]4 10 02https://esolangs.org/w/index.php?diff=143183&oldid=143178 5* 03MihaiEso 5* (+30) 10 > 1728736365 960382 PRIVMSG #esolangs :14[[07User:Tommyaweosme14]]4 10 02https://esolangs.org/w/index.php?diff=143184&oldid=142476 5* 03Tommyaweosme 5* (+59) 10 > 1728736379 358272 PRIVMSG #esolangs :14[[07User:Tommyaweosme14]]4 10 02https://esolangs.org/w/index.php?diff=143185&oldid=143184 5* 03Tommyaweosme 5* (+0) 10 < 1728736461 166781 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl QUIT :Quit: My iMac has gone to sleep. ZZZzzz… > 1728736555 433041 PRIVMSG #esolangs :14[[07User:Tommyaweosme14]]4 10 02https://esolangs.org/w/index.php?diff=143186&oldid=143185 5* 03Tommyaweosme 5* (+157) 10 > 1728736572 190057 PRIVMSG #esolangs :14[[07User:Tommyaweosme14]]4 M10 02https://esolangs.org/w/index.php?diff=143187&oldid=143186 5* 03Tommyaweosme 5* (+11) 10 > 1728736589 578296 PRIVMSG #esolangs :14[[07User:Tommyaweosme14]]4 M10 02https://esolangs.org/w/index.php?diff=143188&oldid=143187 5* 03Tommyaweosme 5* (+0) 10 > 1728736664 649386 PRIVMSG #esolangs :14[[07User:Tommyaweosme14]]4 10 02https://esolangs.org/w/index.php?diff=143189&oldid=143188 5* 03Tommyaweosme 5* (+12) 10 < 1728736697 734622 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl JOIN #esolangs * :Textual User < 1728737055 402561 :X-Scale!~X-Scale@89.214.121.122 JOIN #esolangs X-Scale :[https://web.libera.chat] X-Scale < 1728737279 512304 :SGautam!uid286066@id-286066.ilkley.irccloud.com QUIT :Quit: Connection closed for inactivity < 1728737420 759342 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl QUIT :Quit: My iMac has gone to sleep. ZZZzzz… > 1728737895 382773 PRIVMSG #esolangs :14[[07Translated ORK/Mihai Again914]]4 N10 02https://esolangs.org/w/index.php?oldid=143190 5* 03MihaiEso 5* (+2109) 10Created page with "[[Translated ORK/PSTF Again12|It is recommended not to rewrite the memory of the I2712FiZP2;l.6TH=nbReogN?]] 1. Take this T=hTN} At this moment// Make a medium cake. Make a medium cake. < 1728737908 397747 :Guest5155!~sam@lullcec.org QUIT :Quit: leaving > 1728737942 983379 PRIVMSG #esolangs :14[[07Joke language list14]]4 10 02https://esolangs.org/w/index.php?diff=143191&oldid=143180 5* 03MihaiEso 5* (+64) 10/* Horribly translated variants */ < 1728737949 325820 :X-Scale!~X-Scale@89.214.121.122 QUIT :Ping timeout: 256 seconds < 1728738415 526688 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: could there instead be a number of fixed programs on the one hill? < 1728738440 917243 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :that is, when a new program joins, the lowest scoring non-fixed program gets dropped from the hill < 1728738830 296236 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 QUIT :Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine < 1728739042 501335 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 JOIN #esolangs Lord_of_Life :Lord > 1728739221 171471 PRIVMSG #esolangs :14[[07UserEdited14]]4 10 02https://esolangs.org/w/index.php?diff=143192&oldid=142581 5* 03PrySigneToFry 5* (+2) 10 > 1728739919 668530 PRIVMSG #esolangs :14[[07BF Joust strategies14]]4 10 02https://esolangs.org/w/index.php?diff=143193&oldid=143177 5* 03Ais523 5* (+4253) 10confirmed Sookie's date of topping the hill as May 19 2019, and documenting a reverse-engineering of how it works (because Westonian didn't describe it at the time) > 1728740009 896639 PRIVMSG #esolangs :14[[07User talk:PrySigneToFry14]]4 10 02https://esolangs.org/w/index.php?diff=143194&oldid=143047 5* 03PrySigneToFry 5* (+721) 10 > 1728740486 181620 PRIVMSG #esolangs :14[[07BF Joust strategies14]]4 10 02https://esolangs.org/w/index.php?diff=143195&oldid=143193 5* 03Ais523 5* (+363) 10/* Major Programs */ mist became #1 on March 11 2019 (before Sookie) move into correct date section and add a reverse-engineered description. (At the time, david_werecat said " I won't call it generally good, but it works for the current hill.") > 1728740553 64702 PRIVMSG #esolangs :14[[07Olus200014]]4 N10 02https://esolangs.org/w/index.php?oldid=143196 5* 03Dolphy 5* (+10463) 10Created page with "{{infobox proglang |name=Olus2000 |paradigms=Concatenative |author=[[User:Dolphy]] |year=[[:Category:2024|2024]] |memsys=[[:Category:Stack-based|Stack-based]] |class=[[:Category:Turing complete|Turing complete]] |majorimpl=Will be revealed later |influence=[[Forth]] |f < 1728740965 678633 :Thelie!~Thelie@2a03:9b40:2294:3d00:c51d:575:9ca2:3f6a JOIN #esolangs Thelie :Thelie > 1728740988 135461 PRIVMSG #esolangs :14[[07User:Dolphy14]]4 N10 02https://esolangs.org/w/index.php?oldid=143197 5* 03Dolphy 5* (+63) 10Created page with "Hello I'm Dolphy. I love math, computer science and philosophy." > 1728741300 589960 PRIVMSG #esolangs :14[[07Olus200014]]4 M10 02https://esolangs.org/w/index.php?diff=143198&oldid=143196 5* 03Dolphy 5* (+1) 10Fix a typo > 1728742101 425668 PRIVMSG #esolangs :14[[07Special:Log/move14]]4 move10 02 5* 03Ractangle 5* 10moved [[02BASE10]] to [[BAL]] > 1728742101 449929 PRIVMSG #esolangs :14[[07Special:Log/move14]]4 move10 02 5* 03Ractangle 5* 10moved [[02Talk:BASE10]] to [[Talk:BAL]] > 1728742101 474167 PRIVMSG #esolangs :14[[07Special:Log/move14]]4 move10 02 5* 03Ractangle 5* 10moved [[02Talk:BASE/Other esolang implementations10]] to [[Talk:BAL/Other esolang implementations]] > 1728742137 609186 PRIVMSG #esolangs :14[[07BAL14]]4 10 02https://esolangs.org/w/index.php?diff=143205&oldid=143199 5* 03Ractangle 5* (-15) 10 > 1728742162 164550 PRIVMSG #esolangs :14[[07BAL14]]4 10 02https://esolangs.org/w/index.php?diff=143206&oldid=143205 5* 03Ractangle 5* (-68) 10/* Commands */ > 1728742200 690295 PRIVMSG #esolangs :14[[07BAL14]]4 10 02https://esolangs.org/w/index.php?diff=143207&oldid=143206 5* 03Ractangle 5* (+49) 10/* Commands */ > 1728742244 82465 PRIVMSG #esolangs :14[[07BAL14]]4 10 02https://esolangs.org/w/index.php?diff=143208&oldid=143207 5* 03Ractangle 5* (-15) 10/* Commands */ > 1728742258 842861 PRIVMSG #esolangs :14[[07BAL14]]4 10 02https://esolangs.org/w/index.php?diff=143209&oldid=143208 5* 03Ractangle 5* (+5) 10/* Hello, world! */ < 1728742370 338265 :impomatic!~impomatic@82-132-233-191.dab.02.net JOIN #esolangs * :[https://web.libera.chat] impomatic > 1728742560 128546 PRIVMSG #esolangs :14[[07BF Joust strategies14]]4 10 02https://esolangs.org/w/index.php?diff=143210&oldid=143195 5* 03Ais523 5* (+1539) 10/* Major Programs */ nyuroki2 topped the hill on 19 August 2017; write a description based on the notes provided by Lymia > 1728742605 10384 PRIVMSG #esolangs :14[[07BF Joust strategies14]]4 10 02https://esolangs.org/w/index.php?diff=143211&oldid=143210 5* 03Ais523 5* (+39) 10/* 2024 */ add a bit of description I missed < 1728742636 550910 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl JOIN #esolangs * :Textual User < 1728742718 423975 :impomatic!~impomatic@82-132-233-191.dab.02.net QUIT :Quit: Client closed > 1728744185 819778 PRIVMSG #esolangs :14[[07BF Joust strategies14]]4 10 02https://esolangs.org/w/index.php?diff=143212&oldid=143211 5* 03Ais523 5* (-336) 10I restored the broken links to codu.org/eso/bfjoust/in_egobot.hg via rehosting them from a backup (unfortunately, my backup doesn't cover egojsout links) < 1728744219 341702 :Thelie!~Thelie@2a03:9b40:2294:3d00:c51d:575:9ca2:3f6a QUIT :Ping timeout: 260 seconds > 1728744528 394350 PRIVMSG #esolangs :14[[07Talk:BF Joust strategies14]]4 10 02https://esolangs.org/w/index.php?diff=143213&oldid=132422 5* 03Ais523 5* (+1178) 10/* Dead links */ I fixed some of them, but the egojsout links are more trouble > 1728744831 999867 PRIVMSG #esolangs :14[[07Talk:Around and around, sleeping sound14]]4 N10 02https://esolangs.org/w/index.php?oldid=143214 5* 03ChuckEsoteric08 5* (+176) 10/* Computational class */ new section > 1728744926 466949 PRIVMSG #esolangs :14[[07BAL14]]4 10 02https://esolangs.org/w/index.php?diff=143215&oldid=143209 5* 03Ractangle 5* (-1210) 10/* Examples */ will make other examples later > 1728744955 566615 PRIVMSG #esolangs :14[[07BAL14]]4 10 02https://esolangs.org/w/index.php?diff=143216&oldid=143215 5* 03Ractangle 5* (-1) 10 > 1728744967 7848 PRIVMSG #esolangs :14[[07BAL14]]4 10 02https://esolangs.org/w/index.php?diff=143217&oldid=143216 5* 03Ractangle 5* (-4) 10 > 1728745050 127599 PRIVMSG #esolangs :14[[07User:Ractangle14]]4 10 02https://esolangs.org/w/index.php?diff=143218&oldid=143073 5* 03Ractangle 5* (+35) 10/* Esolangs */ > 1728745107 144045 PRIVMSG #esolangs :14[[07BAL14]]4 10 02https://esolangs.org/w/index.php?diff=143219&oldid=143217 5* 03Ractangle 5* (+199) 10whoops > 1728745179 449736 PRIVMSG #esolangs :14[[07BAL14]]4 10 02https://esolangs.org/w/index.php?diff=143220&oldid=143219 5* 03Ractangle 5* (+18) 10/* Commands */ < 1728745558 829346 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :I just realized something. A few weeks ago I was thinking about local web apps. So you know how sometimes programs only have a web interface, as in they act as a HTTP server and you interact with them on a browser through a local tcp connection. This is a convenient simple way to make an interface that's portable among systems and somewhat future-proof. For simple things like showing formatted < 1728745564 909949 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :documentation this is ideal. But in most cases you need a bit of security, making sure that some other user on the same machine can't just connect to the same TCP stream and execute operations in the server that runs under your user's permissions? One solution would be that the web interface gives a per-connection password that you have to enter to the console launcher. But that's a bit inconvenient. < 1728745627 543955 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :Meanwhile, today I was thinking of how firefox doesn't show the actual URL in the URL bar, instead it tries to unescape percent-escaped UTF-8-encoded characters in the path and query string parts. < 1728745749 848273 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :That's a misfeature, but you could abuse it to solve the former problem: make the local web app ask the browser to show an URL where the URL has a query string that unescapes to homographs so it always looks like it launches http://localhost:8101/?lllllllllllllllllllllllllllllllll but in fact those aren't all letter l but like ten different percent escaped utf-8 characters that each look like an l in < 1728745755 854552 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :the url bar > 1728746522 602093 PRIVMSG #esolangs :14[[07Unique14]]4 10 02https://esolangs.org/w/index.php?diff=143221&oldid=143137 5* 03Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 5* (+12) 10/* Syntax */ > 1728746572 699644 PRIVMSG #esolangs :14[[07Unique14]]4 10 02https://esolangs.org/w/index.php?diff=143222&oldid=143221 5* 03Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 5* (+43) 10/* Syntax */ > 1728746581 634304 PRIVMSG #esolangs :14[[07Unique14]]4 10 02https://esolangs.org/w/index.php?diff=143223&oldid=143222 5* 03Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 5* (+0) 10/* Syntax */ > 1728746642 742711 PRIVMSG #esolangs :14[[07514]]4 10 02https://esolangs.org/w/index.php?diff=143224&oldid=142897 5* 03Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 5* (+8) 10 > 1728747008 700740 PRIVMSG #esolangs :14[[07/mbif/14]]4 10 02https://esolangs.org/w/index.php?diff=143225&oldid=94356 5* 03Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 5* (+34) 10/* See also */ < 1728748789 786517 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :you could just use lowercase l and capital I < 1728748843 963872 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :although I'm not sure why you want the URL to be hard to read? is this a mitigation against shoulder-surfing attacks? < 1728748981 990660 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: yes < 1728749027 667946 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :there are existing methods to open a URL of my choice in the user's favorite browsers, but no easy way to pass a hidden POST parameter to that < 1728749047 778213 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :of course it would be easier to just use a long URL that hopefully shows truncated in the URL bar < 1728749082 578427 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :l is probably not the best choice, some other homograph group might be better < 1728749150 852351 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think you can make it secure without the homographs: open a randomly generated unique URL and then have that immediately POST a random string back to the server < 1728749209 664453 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :if someone tries to copy the URL they won't get in ahead of the legitimate connection, and the POSTed string won't be visible onscreen anywhere < 1728749224 923018 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :from then on it can be used for the browser and server to authenticate each other < 1728749260 637904 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :yeah, but that sort of depends on a race condition < 1728749280 83490 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :probably good enough, especially if the URL is long so likely truncated < 1728749300 607601 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it's not really a race condition if one side of the race is known to be much faster than the other < 1728749316 345539 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the browser won't even display the URL on screen until it starts to load the page < 1728749337 383461 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :though I'd make the server generate a cookie instead of the client generate a random string, but that's not really important here < 1728749368 189885 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :no, that increases the window for the race condition < 1728749394 588564 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :"known to be much faster than the other" => I've had my firefox freeze for long enough times that it's not that clear cut, though it probably wouldn't freeze between displaying the URL and loading it < 1728749395 975954 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :or, hmm, no < 1728749410 145986 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :server is making the first meaningful connection here, isn't it? < 1728749417 699124 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1728749526 494839 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :another method could be to have browser-specific solutions for the most popular browsers, and require the user to copy a short string from the loaded browser page to the launcher for everything else < 1728749546 605373 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :even the browser-specific solutions could break for unusual setups of cousre < 1728749587 993168 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :on many OSes the launcher won't have a functional UI of its own < 1728750030 529355 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: true, but in the case I'm thinking the UI can be either a command-line program running in a terminal, or you run teh command-line program again with some the identifying string as an argument < 1728750059 250827 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :I mean in the former case it would read the identifier as input from the terminal < 1728750621 541704 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl JOIN #esolangs * :Textual User < 1728752894 399877 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl QUIT :Quit: My iMac has gone to sleep. ZZZzzz… > 1728753553 940325 PRIVMSG #esolangs :14[[07Olus200014]]4 M10 02https://esolangs.org/w/index.php?diff=143226&oldid=143198 5* 03PythonshellDebugwindow 5* (+40) 10Distinguish confusion > 1728754090 225251 PRIVMSG #esolangs :14[[07Special:Log/move14]]4 move10 02 5* 03Ractangle 5* 10moved [[02BASE/Other esolang implementations10]] to [[All in one]] > 1728754090 259325 PRIVMSG #esolangs :14[[07Special:Log/move14]]4 move10 02 5* 03Ractangle 5* 10moved [[02Talk:BASE/Other esolang implementations10]] to [[Talk:All in one]] > 1728754131 857302 PRIVMSG #esolangs :14[[07BAL14]]4 10 02https://esolangs.org/w/index.php?diff=143231&oldid=143220 5* 03Ractangle 5* (-106) 10/* Other implementations */ > 1728754386 317868 PRIVMSG #esolangs :14[[07All in one14]]4 10 02https://esolangs.org/w/index.php?diff=143232&oldid=143227 5* 03Ractangle 5* (-2331) 10Replaced content with "'''All in one''' is an OSIC created by [[User:Ractangle]] that works like this: The first argument choses a commend Everything else is the commands arguments" > 1728754398 613348 PRIVMSG #esolangs :14[[07All in one14]]4 10 02https://esolangs.org/w/index.php?diff=143233&oldid=143232 5* 03Ractangle 5* (+2) 10 > 1728754412 956045 PRIVMSG #esolangs :14[[07All in one14]]4 10 02https://esolangs.org/w/index.php?diff=143234&oldid=143233 5* 03Ractangle 5* (+9) 10 > 1728755266 744742 PRIVMSG #esolangs :14[[07User talk:Gggfr14]]4 10 02https://esolangs.org/w/index.php?diff=143235&oldid=143138 5* 03Gggfr 5* (+126) 10/* unique's relationship with forte */ < 1728755685 320569 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk JOIN #esolangs * :[https://web.libera.chat] ipadwwwww > 1728756269 450838 PRIVMSG #esolangs :14[[07Talk:Andrew's Programming Language14]]4 10 02https://esolangs.org/w/index.php?diff=143236&oldid=141690 5* 03Gggfr 5* (+141) 10 < 1728756409 416726 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl JOIN #esolangs * :Textual User < 1728756437 750161 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :i got and weird idea < 1728756445 357379 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :for an esolang < 1728756454 123934 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :its like LC < 1728756503 604331 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :BUT you can also apply arithmetic cuz the number of functions is just the number of functions inside. < 1728756533 417071 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk QUIT :Quit: Client closed < 1728756554 425728 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Ah, they were too fast. I was going to ask how eta-equivalence would work. < 1728756637 321031 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk JOIN #esolangs * :[https://web.libera.chat] ipadwwwww < 1728756645 384259 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :is it a good idea? < 1728756655 86298 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :ipadwwwww: Ah, they were too fast. I was going to ask how eta-equivalence would work. < 1728756684 364574 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :on another note, I've made a start at getting the BF Joust page back into order, having found all the missing programs from a backup I took a while ago < 1728756699 559817 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :thx < 1728756706 272503 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :what is eta conversion < 1728756719 2918 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but there's currently no way to have working trace-and-animation links, because zemhill only does those for programs on the hill and egojsout isn't running anywhere else < 1728756752 902672 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :for this esolang idea < 1728756794 631238 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :just adding the simple example program from the egobot hill as an option in the dropdown would be helpful for that – it'd also be helpful if there were a way to compare programs from different hill iterations (which there probably is, but it isn't clear from the UI) < 1728756828 659079 :Sgeo!~Sgeo@user/sgeo JOIN #esolangs Sgeo :realname < 1728756830 871214 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :ipadwwwww: I've had some experience trying to design "functional, except the functions have non-function properties too" esolangs, it tends not to work well or is at least difficult to do correctly < 1728756841 936590 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :yea < 1728756844 528517 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :true < 1728756845 921664 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :e.g. in Underload, a stack element can be interpreted either as a function or as a string, and this makes it hard to compile < 1728756846 850410 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :makes sense < 1728756857 827603 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it's possible but it's very inelegant < 1728756864 301940 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :yes < 1728756866 33997 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and is probably one of the worst parts of the language < 1728756874 349426 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(although, it does make it fun and easy to write quines) < 1728756885 984420 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :but vat ist eta conversion < 1728756911 504497 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I feel like I know most of the conversion/equivalence rules for lambda calculus but forget which one is which < 1728756927 327544 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ipadwwwww: eta conversion is when alligators are like chameleons, changing color < 1728756949 656884 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :so function renaming? < 1728756958 135956 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :https://worrydream.com/AlligatorEggs/ < 1728756967 935304 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :yea yea < 1728756987 329349 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :OK, eta-equivalence is the rule that two functions are considered equal/equivalent if they give the same outputs when given the same inputs < 1728756997 784467 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(I knew the rule, just had to look up which rule it was specifically that was named eta) < 1728757006 625664 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :yea < 1728757015 86000 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :how would that not work < 1728757020 355154 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :in this way? < 1728757028 762172 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :in this case, that has a fairly clear generalisation to "two functions are equal if they have the same outputs given the same inputs, and the same numerical values" < 1728757041 463571 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :ok < 1728757043 606348 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ipadwwwww: Eta-equivalence is that you can take any lambda expression (call it f) and replace it with \x.f(x). < 1728757047 768144 :int-e!~noone@int-e.eu PRIVMSG #esolangs :\x. M x = F, x not free in M; related to extensionality < 1728757069 283436 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :Ok ik know < 1728757070 408765 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :So it makes me wonder what you mean by "the number of functions inside", assuming that you're counting lambda-binders. < 1728757080 900832 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :oh wait, I'm wrong < 1728757084 948474 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :i  uust saying < 1728757088 862491 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :nu,ber of lambdas < 1728757092 796688 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :on other words < 1728757097 577780 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais has a point, alligators behaving like chameleons is *alpha*, not *eta* < 1728757099 591291 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :an alternative way to generalise it is to have a sort of special argument that you can pass to a function to make it return its numerical value; this goes spectacularly wrong if you try to implement it or reason about how it works, but there might yet be some way to make it work (I haven't found it yet though) < 1728757102 828183 :int-e!~noone@int-e.eu PRIVMSG #esolangs :s/F/M/ in what I wrote (editing error) < 1728757106 332576 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :number pf æambdas < 1728757109 732387 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :god i hate ios < 1728757137 87440 :int-e!~noone@int-e.eu PRIVMSG #esolangs :Appæe? < 1728757137 240905 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :int-e: do you mean that x *is* free in M/F? < 1728757137 672255 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :yeah, what int-e says < 1728757156 195548 :int-e!~noone@int-e.eu PRIVMSG #esolangs :ais523: no. There's a free x *after* M < 1728757156 434077 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :or, wait, no < 1728757168 23994 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I understand what you were saying but misremembered what "free" meant < 1728757176 325960 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Yeah, that word "extensionality" int-e used is important. Do you want functions to *only* be defined by their behaviors, or by their behaviors *and* their source code? < 1728757180 167267 :int-e!~noone@int-e.eu PRIVMSG #esolangs :well, "free" - it's bound by the outer lambda of course, but in the body it's free < 1728757186 690136 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :im so confused. why wouædnt eta stuff work < 1728757192 392252 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it means "used but not defined", whereas I was interpreting it as "unused" < 1728757213 457221 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :in my version < 1728757253 909128 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :`perl print(0+sub{}) < 1728757256 464573 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :Can't open perl script "print(0+sub{}) ": No such file or directory < 1728757259 817752 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :`perl -eprint(0+sub{}) < 1728757261 205939 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :365791433736 < 1728757278 88967 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :im so funkin confused < 1728757278 403819 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :OK, I understand why that has to return a number, because you cast it to a number < 1728757291 525950 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ipadwwwww: I'm not saying it wouldn't work. I'm just trying to understand. Maybe this is very clear in your mind, but I can't imagine it at all. < 1728757291 844702 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I don't understand why sub references do that when you cast them to a number, though < 1728757310 824467 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`perl -eprint(0+\$_) < 1728757312 203066 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :365791434056 < 1728757323 834685 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I guess it's references in general, and they cast into their memory address? < 1728757330 614332 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :why would Perl even expose that as a primitive? < 1728757348 264338 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(I'd expect it to exist on CPAN somewhere, but as a behaviour of 0+?) < 1728757362 484343 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`perl -eprintf"%x",(0+\$_) < 1728757363 880919 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :552ade5560 < 1728757375 321113 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :that does look a lot like a memory address, they often start with 55 on Linux, IIRC < 1728757393 247436 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :ok. so you have normal expression but they have a value inwhich its equal to the number of lambdas. then you can modify this number to return new functions…does it make sense now korvo < 1728757418 110866 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ipadwwwww: I guess let's look at some examples. Would \x.x and \x.\y.xy have the same number? < 1728757431 633087 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :yes they would < 1728757450 452729 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :in its unsolved state < 1728757457 663363 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :if you give it an input before operations < 1728757471 425364 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :lets say x was identity for the second function < 1728757473 772117 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :then… < 1728757474 676209 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :yea < 1728757485 28689 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Hm. Is that even decidable? I'm genuinely unsure. < 1728757494 962388 :Thelie!~Thelie@2a03:9b40:2294:3d00:c51d:575:9ca2:3f6a JOIN #esolangs Thelie :Thelie < 1728757495 596354 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :vat < 1728757501 745476 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :i think it is < 1728757543 204655 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: I'm genuinely unsure whether it's even well-defined or not < 1728757552 381351 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :idk < 1728757692 942345 :Thelie1!~Thelie@185.13.29.56 JOIN #esolangs * :Thelie < 1728757693 404095 :Thelie!~Thelie@2a03:9b40:2294:3d00:c51d:575:9ca2:3f6a QUIT :Client Quit < 1728757810 465429 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :ill just make a base in like google docs then you can see it ig < 1728757864 477374 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: partly for historical compatibility with old perl, the origins probably go back to ancient C which allows you to cast any pointer to a number; partly so you can use that to make a hash keyed by the addresses of references (there's a module in core to make that easier now) < 1728757889 907674 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :even modern C lets you cast any pointer to a number, you just might not like the reuslts < 1728758104 658114 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :fwiw, I'm very against languages letting you do that sort of thing just because it's easy, because it creates a compatibility nightmare down the line < 1728758122 819217 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :e.g. in Rust you can cast an < 1728758129 229554 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :i have a deep rooted problem with haskell < 1728758133 338045 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :. is not a lambda < 1728758140 556519 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :`! c int f(unsigned long v) { printf("f=%lu\n", v); return 0; } int main(int c, char *v[]) { return f(f); } < 1728758142 404698 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :f=365788049717 < 1728758145 124909 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :IT MAKE MY ANGRY IDK WHY < 1728758155 521426 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :* cast a shared reference to a pointer, and even though usually you don't care that the pointer references the specific object it's referencing rather than a copy, the semantics do guarantee that, and that blocks optimisations < 1728758159 775037 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :explain why plz < 1728758171 985601 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Worse, it creates a weak Sapir-Whorf effect: many folks believe that if you cannot turn a pointer to a number or vice versa, then you're unable to program a machine at the lowest level. < 1728758176 55560 :int-e!~noone@int-e.eu PRIVMSG #esolangs :@src (.) < 1728758176 120553 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esolangs :(f . g) x = f (g x) < 1728758197 209419 :int-e!~noone@int-e.eu PRIVMSG #esolangs ::t (.) < 1728758198 194586 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esolangs :(b -> c) -> (a -> b) -> a -> c < 1728758202 817818 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: yes, and perl lets you convert a reference to a number in more circumstances, eg. in C you can't just write p/2 to get a number from a pointer, you need either an explicit cast or an assignment or pass as function argument or return from function to cast < 1728758204 94030 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: the truth is more like "even if you can't turn a pointer to a number or vice versa, you're unable to program a machine at the lowest level" < 1728758217 673531 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :vat < 1728758220 561195 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :* even if you can < 1728758232 577446 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :int-e im confused < 1728758250 290585 :int-e!~noone@int-e.eu PRIVMSG #esolangs :ipadwwwww: why? < 1728758269 82428 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :int-e: do those two uses of . even technically conflict with each other? < 1728758269 619213 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :what you just sent confised m < 1728758277 914788 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :since it has no words < 1728758310 545914 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: anyway, yes, even if exposing the address is useful, it would have made better for perl to require an explicit call for this, so it's there only for compatibility probably < 1728758318 900841 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Exactly! I am so lucky that lvh pushed me to learn Forth in my 20s. Definitely helped me be less of a bro. < 1728758323 647961 :int-e!~noone@int-e.eu PRIVMSG #esolangs :ais523: Hmm I only see one use of . < 1728758324 801473 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I will say that being able to do an untagged union is helpful for low-level programming, and being able to do a pointer-to-int conversion is one way to do that, but there are alternatives < 1728758337 794296 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :int-e: the other one being the \x. rather than \x-> syntax < 1728758343 321157 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :that ipadwwwww was discussing < 1728758372 82086 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :korvo: hmm, do people believe that? < 1728758372 423009 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :cuz of it was then . would be B < 1728758373 884572 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: did you see my fizzbuzz? that wasn't quite the lowest level of abstraction possible, but it was close < 1728758381 465200 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: yes, they are wrong but it's a common belief < 1728758388 289581 :int-e!~noone@int-e.eu PRIVMSG #esolangs :oh you mean, would the syntax become ambiguous if we used . instead of -> ...hmm. < 1728758415 160781 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :What I want to see more of is intrusive tagged unions, e.g. hardware registers where part of the register is a tag and the other part is tag-dependent. I can't think of any languages that elegantly handle this. < 1728758418 174446 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I guess it's only ambiguous if (.) can be a type constructor < 1728758418 863779 :int-e!~noone@int-e.eu PRIVMSG #esolangs :probably not < 1728758434 794515 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and I don't know Haskell well enough to know whether it technically could be or not < 1728758442 521480 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(it certainly *shouldn't* be) < 1728758443 263556 :int-e!~noone@int-e.eu PRIVMSG #esolangs :\0.0.0 could be either \0.0 -> 0 or \0 -> 0.0 though :P < 1728758451 817433 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :true < 1728758457 973623 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :oh, the float.0 ambiguity, Rust has that one too < 1728758460 583911 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :it shouæd just be predefined tho? < 1728758477 211304 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :fortunately, integer literals are not tuples so it's an easy one to decide the correct resolution for < 1728758504 821264 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :ipadwwwww: some languages let you override the basic definitions, e.g. in case you are implementing the standard library < 1728758516 759467 :ipadwwwww!~ipadwwwww@D47091C6.rev.sefiber.dk QUIT :Quit: Client closed < 1728759134 481167 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :b_jonas: Yeah. Like, the Rust example is good, but it happens *every time* somebody tries to write a kernel. House is a Haskell kernel with a special monad they called H; H is just IO but with the ability to poke and peek registers and allocate memory from an MMU. < 1728759187 864585 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :is there a reason the regular IO monad can't do that? < 1728759206 714808 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Bootstrapping Forths usually start from poke and peek; I think the classic three-instruction booter is poke, peek, and jump. Poke and peek were how syscalls were done on consumer PCs before OSs, and depending on how you feel about software interrupts they're how syscalls are done today too. < 1728759233 841308 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Not really. But that's the sheer reach of the meme. < 1728759243 574158 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: it's probably reasonable to notate your kernel mode capabilities with a different tycon than the more restructed user mode ones < 1728759253 525368 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :restricted < 1728759253 672043 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :oh, on modern x86-64 software interrupts are obsolete as a system call method because they're too slow (although they do still work IIRC) < 1728759282 621407 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: hmm, I guess the choice of monad is one way to do capabilities, although it's a bit of a weird way to do it < 1728759311 955024 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :The Objective-Smalltalk guy has a series of rants on this too; he's upset with what he sees as "the gentle tyranny of the call-return paradigm", and I've chatted with him about how this goes all the way to the hardware, making it an example of an even deeper meme than pointer ~= int. < 1728759334 693330 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :nowadays there is a specific instruction for doing syscalls that just does the bare minimum to make them work (it even clobbers two registers to make the implementation faster, which interrupt handlers can't do for obvious reasons) < 1728759371 128831 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Upcoming hardware is going to have to fight this battle too. The Mill doesn't exist, but CHERI and RISC-V do. ARM also has encrypted/authenticated pointers, which are a nasty nasty hack but also break pointer ~= int. < 1728759374 989024 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: I was thinking about that for a while, and realised that part of the problem is that call/return often genuinely is the best solution < 1728759398 439404 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :also, I'm disappointed that the Mill still doesn't exist, I thought it was further along than that < 1728759452 978579 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Is it? I'd compare specifically with event loops, which don't use the stack quite like call/return does, and also with continuation-oriented stuff that never returns. I know that all of our current implementation techniques reduce to call/return, but I think that that's still a hardware quirk. < 1728759459 258867 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I had my own idea about how to make a better register-like abstraction which is basically the opposite of what the Mill does – each instruction specifies that its result should be passed to the instruction that runs *n* instructions later (rather than instructions taking their argument from *n* instructions earlier) > 1728759469 213847 PRIVMSG #esolangs :14[[07User:HammyHammerhead14]]4 10 02https://esolangs.org/w/index.php?diff=143237&oldid=136086 5* 03HammyHammerhead 5* (+0) 10Censor < 1728759494 249834 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: well, there are plenty of cases where it isn't too < 1728759502 553083 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but it isn't like goto or int/pointer which are nearly always the wrong solution < 1728759554 513 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :As of this year, Mill's status is that it's a VM target which isn't open-source yet: https://millcomputing.com/topic/yearly-ping-and-see-how-things-are-going-thread/ So it's not quite where RISC-V is, but not out of the game. < 1728759564 720489 :int-e!~noone@int-e.eu PRIVMSG #esolangs :ais523: https://wiki.osdev.org/System_Calls#Trap < 1728759600 219509 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :int-e: isn't that even slower than a software interrupt? < 1728759639 900984 :int-e!~noone@int-e.eu PRIVMSG #esolangs :pretty sure it was chosen because it was a few cycles faster on 32 bit Pentium, somehow. < 1728759644 214528 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: I might be lost in maths. I had an idea over the summer: the typical register ISA looks like a multicategory if we restrict to straight-line code, and I can extend this to most conditional code too. Only three constructs can't be handled: computed jump, call, and return. < 1728759676 992524 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :If the hardware had an implicit event loop, or an implicit continuation-passing mechanism, then it'd be a perfect fit. < 1728759699 222659 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :how do you handle infinite (or potentially infinite) loops? < 1728759751 555991 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :The multicategory only has total computable arrows. < 1728759850 542939 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :that would make the hardware kind-of useless, if it can't run functions that aren't provably total? < 1728759882 672795 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :This is the ideal of Actor systems, FWIW. Each actor has a very simple small behavior which always returns quickly, and the event loop stitches them together into a Turing-complete system. Thousands of actors per CPU, each one less than a KiB. < 1728759884 5494 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :"it even clobbers two registers to make the implementation faster, which interrupt handlers can't do for obvious reasons" => https://esolangs.org/wiki/Apollo_Guidance_Computer disables interrupts while the accumulator has an overflow < 1728759885 424110 :Thelie1!~Thelie@185.13.29.56 QUIT :Ping timeout: 276 seconds < 1728759897 203786 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :because it would be hard for the interrupt handler to save and restore it properly < 1728759915 180775 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :sounds like they designed themselves in a corner there < 1728759926 797215 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: ah, you have non-totality in the event loop itself < 1728759968 201434 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Sure. I defeat such memes with reduction to physics. In this case, a CPU's clock constrains how much computation happens per operation, so the CPU already is like an infinite event loop which executes a series of total-computable actions. < 1728759999 52084 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Yes, exactly. Or the continuations are set up such that a letrec can be built, and so general recursion is possible; that's how the Reduceron computes IIRC. < 1728760019 544992 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I guess many of my thoughts on the matter are related to thinking that the independent-threads-of-execution model may be wrong or at least inefficient; I'm more of a fan of manual event loops < 1728760041 989832 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :continuations are more interesting, but seem about as low-level as call-return < 1728760071 516843 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Have you seen microkernels with fast message passing? The common example today is seL4, but L4 or QNX are also good examples. < 1728760089 509246 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I wrote a VM for combinatory logic a while back which describes the state of the program as three combinators (let's call them a, b, c) that represent an evaluation of the function c(a(b)), but all three are always fully reduced < 1728760116 119548 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :In these systems, if an actor promises to handle a message very quickly and synchronously, then the message can be passed *in registers* and the actor is entered *as a call*. So call/return becomes an *optimization* on top of message-passing semantics. < 1728760122 678491 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: oh, it's more that I'm thinking about "are these things actually supposed to be fully independent of each other, or not?" < 1728760141 462119 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I wasn't thinking about the implementation, more about the semantics < 1728760148 471220 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :They start out independent and isolated, and then (to borrow the Go meme) they share memory/resources by communicating. > 1728760209 310372 PRIVMSG #esolangs :14[[07Talk:Delta Relay14]]4 N10 02https://esolangs.org/w/index.php?oldid=143238 5* 03HammyHammerhead 5* (+0) 10Created blank page < 1728760236 719368 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I guess that my mental model of an event loop is that we have a number of tasks/threads/actors/whatever that are each trying to do something, but sometimes they get blocked because they want to perform a blocking action, and sometimes they are not currently blocked, but paused because they were blocked and haven't been explicitly unblocked yet < 1728760286 115791 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Sure. That model has locks, right? Or some similar resource which supports contention. < 1728760291 639586 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and that a good event loop works by running until some or possibly all of the threads are blocked, either sequentially or in parallel, then does some I/O and determines which threads got unblocked by it < 1728760315 307983 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :yes, if the threads need to communicate they need some sort of way to contend with each other, and the event loop resolves that < 1728760316 243905 :int-e!~noone@int-e.eu PRIVMSG #esolangs :ais523: Oh there's context missing. On modern L4, `lock nop` is how you query the base address for the page with all the actual system calls, which presumably use SYSCALL/SYSENTER. > 1728760319 492025 PRIVMSG #esolangs :14[[07Talk:Delta Relay14]]4 10 02https://esolangs.org/w/index.php?diff=143239&oldid=143238 5* 03HammyHammerhead 5* (+143) 10/* Not to be confused... */ new section > 1728760350 481631 PRIVMSG #esolangs :14[[07Talk:Delta Relay14]]4 10 02https://esolangs.org/w/index.php?diff=143240&oldid=143239 5* 03HammyHammerhead 5* (+97) 10/* Not to be confused... */ < 1728760364 599886 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but what I'm thinking about is, is it actually always correct for the threads to continue running after they become blocked? < 1728760387 143133 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :like, in many cases, if they haven't done much work, it makes more sense to discard the work and restart them later, rather than trying to capture their current state < 1728760394 112384 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :My mental model doesn't have locks. Instead, it has explicit backpressure represented by unfulfilled heap allocations (promises/futures). It runs until there's no more messages to deliver. < 1728760397 796093 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :or if there's a deadlock, it's impossible to run both deadlocked threads to completion, one of them has to back out < 1728760446 144236 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it's possible to imagine a purely revert-based model in which threads start running, and if they discover they're blocked, they undo everything they've done so far < 1728760466 543206 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and the event loop records the fact that they were blocked, and what they were blocked on, and restarts them once they should now be possible to run < 1728760487 420899 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :that probably isn't very efficient, but it's very appealing from the "ease of programming" point of view, as long as you're not communicating with a system you couldn't easily revert < 1728760521 233567 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(of course, this means that you need a set of "I/O rules" that actually make it possible for them to gather all the information they need to run to completion in one go) < 1728760533 335042 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Believe it or not, this is what happens in Cliff Click's JVMs, from Hotspot to Zulu, and it's apparently a winning strategy. You do incentivize your users to not make FFI calls, which can be thousands of times more expensive than native, runtime, or user calls. < 1728760545 706726 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :your model or mine? < 1728760550 434847 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Your model is like a JVM. < 1728760570 243888 :int-e!~noone@int-e.eu PRIVMSG #esolangs :"They should probably have used the "UD2" instruction, since it is defined for this purpose." -- but compilers emit UD2 in some cases for code that is supposed to be unreachable and you *really* want that to trap properly instead of executing a system call and running whatever code comes next. < 1728760582 903184 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :there are UD1 and UD0, too < 1728760596 427420 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think UD1 might be the one that's most commonly used for syscalls, and UD0 might be undocumented? < 1728760598 837804 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :My model is like E or Monte, but also like JS in a browser or "RPC" packets in a modern cloud app. The difference is that my model is cloud-native; it was intended to be stretched over multiple machines, not just SMP. < 1728760605 901500 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(the "2" is probably a clue) < 1728760668 260964 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :ooh, UD0 *is* documented, but different processors differ in how many bytes long it is – that's why it's discouraged < 1728760677 855085 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(it must be one of the very few instructions for which its byte length usually doesn't matter) < 1728760729 132371 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the manual says that it matters if the third byte of the instruction is on an unloaded page, because that influences whether you get a page fault or an undefined opcode trap < 1728760759 425924 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but, I guess that usually wouldn't matter either, even if the kernel didn't special-case it! < 1728760783 262012 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Oh, an example of my model in production might be the classic iPods. These had two ARM processors. One processor was dedicated to MP3 decoding and the other ran the UI. They only communicated through a scratchpad and mailboxes; they did not share a coherent view of RAM. < 1728760832 337677 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I don't think my model has a coherent view of RAM either < 1728760839 398090 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :But yeah, message-passing is typically more expensive than direct call/return. It's more expensive than anything else; it has to reify the arguments so that they can be serialized or forwarded, and that's always going to be an expensive prologue. < 1728760860 63035 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :locking doesn't necessarily have to be "I want exclusive access to this memory address", it's more "I want exclusive access to this value" – there's no logical reason why locking can't move a value < 1728760903 754115 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :in fact, I recently realised that, e.g., locking a database row is equivalent to temporarily deleting the row from the database, with a marker specifying not to place another row there yet < 1728760956 438515 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :that's like the SNES, which has two CPUs with separate RAM, and they only communicate through 4 to 8 registers < 1728760984 810678 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :by registers I mean byte values mapped into both of their memory space < 1728761046 989708 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :4 to 8 because it's 4 registers that kind of have separate values in the two directions, but not quite, they behave in some weird way that I don't understand if you try to use one in both directions < 1728761057 598269 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Another good example, yeah. < 1728761089 877381 :Everything!~Everythin@static.208.206.21.65.clients.your-server.de JOIN #esolangs * :Everything < 1728761160 503878 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :OK, I guess I've clarified my view to: I dislike message-passing because it means that the various threads need to be aware of each other and who they're passing messages too, whereas concurrent programs are much easier to write, and much more reliable, if the threads all work correctly regardless of what other threads exist and what they are doing < 1728761172 108691 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :*who they're passing messages to < 1728761184 404751 :X-Scale!~X-Scale@89.214.118.3 JOIN #esolangs X-Scale :[https://web.libera.chat] X-Scale < 1728761214 364158 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Yes. In our parlance, you are in favor of "global mutable state", and as you say, it's fine as long as the program is correct under that assumption. < 1728761279 167911 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I guess I would say that I'm in favour of, in situations where mutable state has to exist, programming techniques that mean you don't need to make assumptions on what other programs, or other parts of the same program, may be doing with that state < 1728761279 873546 :Thelie!~Thelie@2a01:599:444:7e1a:131d:b606:b4e9:b062 JOIN #esolangs * :Thelie < 1728761285 13048 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Most actor systems are going to have some sort of ban on global mutable state. Any kind of mutation is going to be local to individual actors, and some systems might require you to serialize your closure at the end of your action, so that you can't leave a mutation half-done. < 1728761326 262710 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :over the last few weeks I have been actively trying to work out what the correct scope for mutable state is, and I haven't reached any final conclusions yet < 1728761351 668500 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :It'd have to be other parts of the same program, because with global mutable state, *any other program* can stomp your program's state. < 1728761381 263796 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :although my current view (which might well change) is "it could be very local and you can encapsulate it in a call-return type of way without the rest of the call stack ever seeing it; and the rest of the time, global is *usually* correct but not always" < 1728761412 666816 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: only if there aren't enforced rules on what it does with it < 1728761421 393541 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think of reading from a file as a good example < 1728761445 53034 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :this is something that's hard to do efficiently and correctly in languages like Rust – currently, if you memory-map a file in Rust, you get UB if some other process writes to it while you have it mapped > 1728761461 548623 PRIVMSG #esolangs :14[[07Project Euler/1614]]4 10 02https://esolangs.org/w/index.php?diff=143241&oldid=137144 5* 03Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 5* (+23) 10/* Implementations */ < 1728761481 553543 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but, say you place a mandatory lock on it, or a lease, now you can make your program correct regardless of what other programs might to do it (e.g. by abandoning your current computation if you are requested to abandon the lock) < 1728761490 462372 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Okay. So what's the big difference between breaking the whole machine up into an OS enforcing rules on programs, and breaking a whole program up into an event loop enforcing rules on actors/objects/etc? < 1728761534 173329 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I'm not sure there's a *big* difference; the main difference seems to be that mutable state often feels like something that wants to persist beyond the program < 1728761568 238833 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Sure, but only at the pleasure of the OS. Similarly, any state that wants to persist beyond an individual actor needs to be communicated via the event loop. < 1728761572 443840 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :like, the main areas of mutable state I've identified are a) algorithms that use mutable state, which is generally neatly encapsulated inside one function/thread, and b) things that could logically be very persistent, even across reboots < 1728761590 854131 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :there are almost certainly others and examples would be helpful < 1728761659 236830 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Oh, reboots clear all mutable state, in this framing. Persistence is a terminus for mutation. So (b) kind of fades to an opinion rather than something essential. < 1728761687 618722 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :ah; I think that might be a genuine difference of opinion < 1728761711 222750 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :in a way, if you have any mutable state that *isn't* persistent, either a) you didn't need it or b) your program is incorrect if someone kills it / cuts the power / reboots the machine while it is running < 1728761723 808148 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :A file isn't really mutable; each syscall towards it results in a new serialized state, and certainly the underlying disk is usually block-at-a-time. In contrast, SysV/POSIX tools like message queues, shared-memory segments, etc. are global mutable state. < 1728761747 362637 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Oh, it's always (a). Mutation is always an optimization. < 1728761807 769425 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Actor systems are encouraged to be transactional and to keep all important state at message boundaries. For example, my raytracers only lose a few pixels of progress if they lose rendering clients. (Losing the rendering server, of course, loses the entire frame. I'm not Pixar.) < 1728761847 530337 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl QUIT :Read error: Connection reset by peer < 1728761867 693661 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but when I think about the programs I want to write, the main options are a) computer games, in which the save file effectively acts like mutable state and most of the games I want to write want to update it continuously as the user plays; b) compilers/build systems, which want to avoid redoing work as much as possible, so the information about what they've done so far is persistent < 1728761934 803637 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :anyway, I guess my main objection is that if I have a mess of actors, and a backup of the messages they were passing around, that is much less usable for unrelated programs than a file in a clearly-documented format would be < 1728761997 935929 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Sure. Smalltalk images are a practical example, and they're really only useful for resuming progress, not for outputting permanent artifacts. < 1728762100 792603 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Well, actually, thinking more, a backup of all in-progress messages is equivalent to a core dump, not a nice output. So maybe we're not being apples-to-apples about this. < 1728762143 773761 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :right, my viewpoint is not that the two things are comparable, but that they aren't comparable and that this is a problem with Smalltalk-alikes < 1728762190 182192 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :one really big problem with Smalltalk images, which presumably isn't a problem for the actor images / core dumps, is that they mix code and data, making it hard to use the code you've written on a different set of data, and making it hard to version the two separately < 1728762198 777208 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :On (b), Monte's reference implementation uses Nix and supports per-module incremental builds. For the past two decades, it's purely been an engineering problem. Perhaps there's the meta-problem that we aren't teaching capability theory, which directly leads to content-addressed storage; but git was invented without it. < 1728762260 473933 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: OK, I'll agree that it makes sense to build a declarative / pure / immutable build system on top of some underlying library that handles the details of optimising it into something that works with mutable state underneath < 1728762285 339798 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the problem being, that I'm more thinking about how to write the library beneath rather than the program on top of it < 1728762290 574161 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Right. E-style actors are distinguished by *safe code loading*. Code can only be passed around if it can be serialized, which involves a metaintepreter examining the code's AST and building an equivalent AST which is safe on the wire. < 1728762321 184876 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :oh no < 1728762329 667665 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so Java has a mechanism for this sort of code passing < 1728762341 933519 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :involving serialised code on the wire, with sandboxing and safety checks < 1728762346 795990 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it was heavily involved in a previous job of mine < 1728762348 458582 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Smalltalk totally fails at this. Mark Miller's thesis explains that Java fails at this too, even though they explicitly tried to make code-loaders safe. The problem is that the ambient authority, including global state, included in Java's code-loading is too much. < 1728762373 37011 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :ah good, so you already know why it doesn't really work in Java and I don't have to explain, makes life easier :-) < 1728762396 716752 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Right, JOSS or whatever. Hilarious source of security vulnerabilities. Got familiar with it when reverse-engineering MineCraft. < 1728762459 152550 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Anyway, that doesn't happen here. Instead, when the code first tries to be passed on the wire, the E/Monte runtime inspects it, directly reading its AST and private state without calling into it. If the code can be safely serialized, then that's done; otherwise, a reference to the code object is put on the wire. < 1728762481 417850 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the more interesting question is whether, if you put enough restrictions on this sort of thing to make it actually safe, the result is useful for anything < 1728762497 514690 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :E-style message-passing semantics ensure that a reference to the code will be just as good as the code itself; the code-passing and code-loading is ultimately an optimization. < 1728762511 763842 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I am not sure on the answer to that; I think maybe it could be, but I also think that attempts to do that are more likely to have subtle mistakes than to be entirely correct < 1728762575 536285 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Great question! That catches us up to when I entered the scene. The point of Monte is to show that it's possible to write a Monte compiler, a raytracer, a distributed worker, an HTTP server, a TUI app, and a bunch more stuff. < 1728762633 611519 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Monte sucks and I'm one of only two people to seriously work in it. But also, I can't think of something that can't be done with it; I put in five years of using Monte instead of Python. So I'm confident that it's possible to be safe, tamed, and still shipping. < 1728762651 261113 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :More practically, seL4 exists and I hear it's in cars and planes and satellites and other fun stuff. > 1728762805 674532 PRIVMSG #esolangs :14[[07Category talk:Turing complete14]]4 10 02https://esolangs.org/w/index.php?diff=143242&oldid=108290 5* 03Xff 5* (+108) 10 < 1728762815 812899 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :(And anticipating the next question, Monte's reference implementation spanks Python's reference implementation on apples-for-apples benchmarks like dhrystone.) < 1728762876 953303 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :oh no, I wasn't planning to ask that, basically everything beats Perl/Python on performance unless they call out to a library written in some other language < 1728762882 366370 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think maybe INTERCAL is slower? but I'm not sure < 1728762891 472268 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :This is where Cammy came from. CAM-E, a Categorical Abstract Machine for E-style actors. Each actor would run a Cammy expression upon an incoming message. I haven't bothered building up the big impressive parts because nobody cared when I built them last time. < 1728762936 273521 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :But ultimately I think that we needed a code language. The kernel of E was abstracted into Data-E, which would eventually become JSON. Great for data, but terrible for code. < 1728763012 601806 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :And ECMAScript failed to be the future for us. WebAssembly *is* the future; it's capability-safe and isolated by default. But actually doing stuff with WASM sucks too. < 1728763058 303299 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :WASM is *part of* the future, I think – but it feels like one layer in a big software stack and it may be one of the more easily replaceable layers < 1728763079 987579 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Like, for example, there should be a nice easy compiler from Cammy to WASM. It's just S-expressions, right? But there's no good way to map Cammy's curry/uncurry/apply onto WASM's call/return. < 1728763081 320753 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk JOIN #esolangs * :[https://web.libera.chat] PCWWWWW < 1728763082 551343 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :hello im back < 1728763107 182500 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :PCWWWWW: Welcome back! I just came full circle. You should consider setting up an IRC bouncer at some point. Not right now, of course. > 1728763116 937137 PRIVMSG #esolangs :14[[07Empty14]]4 10 02https://esolangs.org/w/index.php?diff=143243&oldid=142917 5* 03Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 5* (+97) 10/* Modulo */ < 1728763123 648355 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :bouncer? < 1728763139 912922 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Thanks for listening to my rant. As you can tell, it's a greatest hit. I'm gonna get lunch. < 1728763143 3693 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: and this is because WASM is at its heart an imperative VM that is supposed to easily capture operations from imperative assembly languages < 1728763157 993475 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :also any good pun for monads plz. im making an esolang i need a pun and im bad at puns < 1728763176 644342 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :PCWWWWW: An IRC bouncer is an IRC client that is always running on a cloud server or VM somewhere. Your IRC client on your phone would connect to the bouncer. The effect is that the bouncer collects all of the messages since your last connection. < 1728763193 58279 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :good < 1728763199 3178 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: I just use the logs for that – I've never been a huge fan of bouncers < 1728763209 373772 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :yea i use logs too < 1728763213 859172 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :they nice to have anyway < 1728763228 753936 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the obvious pun on "monad" is that "monad" can refer to either the category-theory concept (which is used in a slightly modified way in Haskell), or "a function that takes one argument" < 1728763243 53636 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :unfortunately, despite being obvious, this pun often doesn't lead to any good jokes < 1728763245 20838 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Right. And also a modular system for incorporating other folks' code safely (safe code loading!) And also an interop for JS and the browser with GC handles. And also have syscalls for replacing Docker containers. And on and on. I want a refund on this future. < 1728763309 125638 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :ok < 1728763311 255761 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :wait < 1728763312 936934 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :oh god < 1728763323 839311 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :igot such a stupid joke/pun < 1728763345 334848 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :"no im single" < 1728763356 499412 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :...banosh me from ths realm plz < 1728763357 934007 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :god < 1728763364 769130 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :*banish' < 1728763440 183278 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I've been in IRC channels where an op would kick you out of the channel as a joke for saying that, because the opportunity would be too good to pass up – but I tend not to like that moderation style, joking with moderation tools is too easy to misinterpret and can leave people feeling like the rules don't matter < 1728763486 682826 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :PCWWWWW: Do you know what a Kleisli category is yet? (Might have spelled that wrong.) Every monad gives rise to such a category. Could be a more useful way to express your language as well. < 1728763500 57320 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :Kleisli? < 1728763509 721681 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :also i should prop say what my esolang is < 1728763511 480562 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :just is < 1728763514 586068 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :defined variable < 1728763528 616603 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :that can be recursie'and then you have an operator that returns the monad of that < 1728763540 996589 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :if that even maes sense < 1728763554 498608 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :you have one built in which is a category of two things < 1728763558 937440 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :objects < 1728763569 356138 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :where those objects < 1728763571 193690 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Let M be a monad on some category with arrows like f : X → Y. The Kleisli category's arrows are like M(f) : X → M(Y); they're like the original arrows, but they "carry effects" or "carry the monad" of M. < 1728763576 432600 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :connect to themselves and each other < 1728763615 184898 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Oh, Leibnitz's monads, I see. Sorry. I thought you were talking about category theory. < 1728763656 570666 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :technically we *are* but yea < 1728763660 341663 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :i think < 1728763668 897194 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :im talking about likethe function monads < 1728763674 452664 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :or what they where < 1728763714 356853 :craigo!~craigo@user/craigo JOIN #esolangs craigo :realname < 1728763745 763209 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :but yea' < 1728763750 882259 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :is the pun a good one < 1728763757 83177 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :should i use it? < 1728763890 286592 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I don't think I have an opinion about this < 1728763910 183220 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :aww:( but im horrible at choises < 1728763923 813953 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :naming things is one of the hardest problems in computer science, but often solving it incorrectly is not a disaster < 1728763933 798690 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I think that you should develop this concept more without giving it a name. < 1728763938 486008 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :ok < 1728763961 898464 :X-Scale!~X-Scale@89.214.118.3 QUIT :Quit: Client closed < 1728763971 350084 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :wait wat korvo we are talking about category theory < 1728763987 888294 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I have a related concept, giving an algebra over opetopes (fancy category-like things, don't worry about it) but I have a bunch of open questions that I don't know how to resolve. < 1728763997 734336 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :No name for the concept yet. It's just not clear enough. < 1728764017 218506 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :there are esolangs that took me years to figure out the details of < 1728764024 716452 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :https://esolangs.org/wiki/Delta_Relay for example < 1728764039 863523 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I named it after I'd worked out the details, and only spent about a day on the name (which is more than usual) < 1728764076 446274 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :hahaHA. < 1728764080 632144 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :sorry for that < 1728764088 532570 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :PCWWWWW: Well, I wasn't sure if you were. I don't get the feeling that you know what a monad is yet. And some people take decades to understand what they are, usually because they're not actually reading the definitions. < 1728764097 38360 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :its just the (which is more than usual) < 1728764133 94345 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: so I recently came up with something which I suspect isn't a monad, but it acts a lot like one, and I am still trying to figure out exactly what it is and what the rules are < 1728764133 239970 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :korvo: well isnt  a monad of/in X the moinoid of endofunctors in X < 1728764171 188563 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :PCWWWWW: Sure. More specifically, *any* monoid of endofunctors is equivalent to a monad, right? < 1728764193 660484 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :yea i think so < 1728764203 310184 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :just if monad is a function then its that way < 1728764221 597205 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but I feel like I don't have a complete grasp on all the details of the definition yet < 1728764222 958755 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :and a moinoid is a category with a id element and a totl operator < 1728764301 612690 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :*total < 1728764325 786054 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :You had mentioned WebAssembly. I think there are some good ideas with WebAssembly such as being capability-safe like you describe, and that it cannot do I/O by itself, and using a binary format rather than text like JavaScript, also I think is a good idea, but also it has some bad ideas and I think it is badly designed in many ways, too. < 1728764332 107472 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :in this esolang the id element is just an object with no morphisms other than an endomorphism < 1728764349 791016 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :and the total operator just returns the first endofunctor < 1728764354 138478 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: It could be a generalized monad. Monads are the simplest examples of 2-arrows; they can get very fancy. It could also be some sort of algebraic gadget that isn't quite monadic but still obeys some laws. Or maybe it's not well-described categorically. < 1728764370 496920 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :also how did we get to monads < 1728764375 507884 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :they feel funkin random < 1728764379 591069 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the basic idea is, if I have a lambda calculus expression, and apply it to one or more arguments currying-style, then it will apply some of those arguments to others and this effectively describes its observable behaviour < 1728764422 766840 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :PCWWWWW: Monads show up a lot. They weren't one of the things category theorists wanted to study. < 1728764432 494155 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :but whyyyyyy < 1728764447 965872 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and I'm trying to capture the idea of things that can "lift/box" this sort of description of the observable behaviour so that the definition can be applied to "lambda calculus with extras" virtual machines < 1728764449 934738 :Thelie!~Thelie@2a01:599:444:7e1a:131d:b606:b4e9:b062 QUIT :Remote host closed the connection < 1728764471 475914 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Adjunctions always give monads. So if you have two related categories, like rings and semirings, then you get a monad. The list monad, state monad, continuation monad, and maybe monad all have underlying adjunctions. < 1728764471 652765 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but I'm still confused about precisely what it is that I'm trying to do < 1728764508 24880 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :lol < 1728764512 333945 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :PCWWWWW: category theory mostly doesn't contain things for the sake of it – the concepts of category theory came about because people noticed frequently occurring patterns and wanted a way to mathematically describe them < 1728764521 596221 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :2-categories give monads as a special case. So if you want to study higher category theory, which arose for other reasons (∞-categories!) then monads naturally appear. < 1728764537 492760 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it's very common for things to happen to form a monad, so having a way to describe/name the pattern that they follow is useful < 1728764555 253746 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Yep. The original goal of category theory was to define "natural", particularly in "natural transformation". It wasn't until later that categories became useful on their own. < 1728764571 288387 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :yes. but like why endofunctors. why monoids. why not with semi groups < 1728764574 23137 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :if I remember correctly, category theory was originally invented because someone had discovered that natural transformations were really common and had useful properties, and wanted a mathematically rigorous way to define them < 1728764578 872445 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :why not just functors < 1728764625 267801 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so the reason it's endofunctors is that one of the things that monads have in common is that they can be flattened, e.g. you can flatten a list of lists into a list < 1728764631 748870 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Endofunctors generalize endofunctions, and endofunctions show up all throughout science. Like, we computer scientists study discrete dynamical systems (DDSs), and physicists study much fancier stuff. < 1728764638 105715 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but the flattening only makes sense if the outer wrapper and inner wrapper are the same < 1728764699 184742 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :ok < 1728764743 434133 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Why not semigroups? *Excellent question*. Like, there's an entire schism about this. You can think of categories as like the minimum viable structure required to talk structurally about structure. Today we call this "formally formal". The semigroup folks were accused of doing "centipede maths", like when a child tortures a bug by ripping off legs. < 1728764795 467076 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :most children don't do that < 1728764802 572961 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(nor should they) < 1728764808 682831 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :lol' < 1728764812 935012 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Today I'd recommend just trying your best to not have a bias about it. Think of the first category theory you learn as basic, simple, easy. Nothing complicated. No weird conditions. Just a structure. < 1728764823 788954 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :ok < 1728764828 75963 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :group theory was discovered before category theory was < 1728764839 793052 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk PRIVMSG #esolangs :nice:) < 1728764880 65565 :PCWWWWW!~PCWWWWW@D47091C6.rev.sefiber.dk QUIT :Quit: Client closed < 1728764900 909802 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :I have to rip off legs from bugs to understand category theory? < 1728764905 960056 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I didn't know that was the original goal of category theory < 1728764918 102965 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: I just realised that you can think of the relationship between group theory and category theory as being similar to the relationship between untyped and typed languages, except that somehow the addition of multiple objects makes it more powerful even though the addition of multiple types makes it less powerful < 1728764963 554607 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Oh, I was talking *very specifically* about semigroups, sorry. Should I have understood the question more generally? https://en.wikipedia.org/wiki/Centipede_mathematics cites two category theorists and nLab. < 1728764982 783492 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I guess the difference is that untyped lambda calculus doesn't really care if the operations you're performing don't make sense, most abstraction levels above it work by treating a lot of things as UB and avoiding them rather than working out what they would mean < 1728765010 953320 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :huh... ok < 1728765022 295859 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Yeah. Have you heard of groupoids yet? Every category contains a "core" groupoid, and some type theories work with groupoids first and categories second. < 1728765076 657994 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: yes as of maybe about 1 or 2 seconds before reading your comment < 1728765086 591273 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I had heard of magmas earlier, but never looked up the definition (they're the same thing) < 1728765105 342467 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :And then the paradox you mention is resolved by the sheafiness/contravariance of the assignment from a type theory to its category of models. The initial model is "less powerful" in the sense that it can only do what the type theory requires it to do; all of the non-initial models are "more powerful" because they can contain types and operations not specified by the theory. < 1728765114 223320 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :About programs that act as a HTTP server and you interact with them on a browser through a local tcp connection, I do not think it is a good way to make an interface that's portable among systems, since you might not have a compatible web browser, and it will have other issues, including the security issues you mention. Surely there are simpler ways to do it, especially if the program is local only. < 1728765151 71572 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :And, the misfeature of Firefox that you mention, at least on my computer I have a old enough version of Firefox that I could add a JavaScript code in an extension to prevent it from displaying non-ASCII characters in the URL. < 1728765151 193317 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: oh, I hadn't started thinking about it as a paradox, just as an interesting observation < 1728765173 866972 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I would like a way to get Firefox to escape non-ASCII characters in URLs to make Esolang easier to administer < 1728765196 486439 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I have ways to see the homoglyphs but it's a pain, and one particular Esolang user seems to be fond of them < 1728765197 397014 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :Using a web-browser at all is a messy way to handle many things. < 1728765206 302181 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :ais523: What version of Firefox are you using? < 1728765209 36130 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :indeed, but it is easier that reading raw HTML < 1728765220 758294 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :131.0 < 1728765231 364389 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Okay, I really do need lunch, and the farmer's market's almost closed too. Peace. < 1728765315 121476 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 QUIT :Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine < 1728765366 398809 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 JOIN #esolangs Lord_of_Life :Lord < 1728765409 76408 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I used the code: window.losslessDecodeURI=function(aURI) { return aURI.spec; }; It is probably not compatible with 131.0 which I think cannot use XPCOM-based extensions, but you might try. < 1728765473 958047 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I remember when Firefox's major version number was a single low digit < 1728765486 173672 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think they increased the rate of increasing the major version number at some point, and am not sure why < 1728765734 693615 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :clearly we need transfinite ordinal version numbers so we can keep accelerating the version number increases indefinitely, including beyond the normal limits < 1728765858 972457 :int-e!~noone@int-e.eu PRIVMSG #esolangs :it has become a totally meaningless number to me < 1728765879 353063 :int-e!~noone@int-e.eu PRIVMSG #esolangs :and I think it *is* meaningless; it's one major version per month < 1728765905 632870 :int-e!~noone@int-e.eu PRIVMSG #esolangs :so just progression of time, no real relation to features or other developments < 1728765921 881530 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I would rather use a different web browser since most of them aren't very good, and even Firefox isn't that good I tried to write extensions to improve it but some things still don't work as well as it should do. Furthermore, many things shouldn't need a web browser. < 1728766199 573357 :int-e!~noone@int-e.eu PRIVMSG #esolangs :I wonder how much hope to put into Ladybird < 1728766257 692974 :int-e!~noone@int-e.eu PRIVMSG #esolangs :But for the time being, Firefox still feels like the best compromise between evil and usability. < 1728766368 395566 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :(Another thing I did is I had to modify the binary executable file by a hex editor in order to prevent HSTS from working.) < 1728766615 240494 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I would want one that doesn't try to believe they know better than what the user explicitly specifies. It is OK to avoid the use of CSS, and JavaScripts; the ability to write extensions in C would be a good idea, though. Relative URL entry also would be a good idea (another thing I had managed to implement in Firefox by adding a JavaScript code; I dislike the way it normally handles entered URLs) > 1728766637 777539 PRIVMSG #esolangs :14[[07Delta14]]4 M10 02https://esolangs.org/w/index.php?diff=143244&oldid=98599 5* 03PythonshellDebugwindow 5* (+52) 10Stub, categories < 1728766775 116619 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I dislike the way that browser default CSS is often bad enough that websites have to provide their own < 1728766815 778202 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :although the "reader mode" which applies an entirely different set of CSS as an override is sometimes useful, it's also bad at handling certain constructs like code blocks < 1728766833 750217 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I think the browser default CSS is better than what nearly all websites provide. The only thing that I think is missing is: img { max-width: 100%; } < 1728766860 486652 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :But, regardless of my opinion, the user should apply their own preference of CSS. < 1728767036 408543 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I tried to write some minimal default CSS for my blog < 1728767064 953298 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :that just fixed some of the worse issues with typical browser default CSS, also that applied colors to syntax-highlighted code blocks < 1728767084 757288 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :At least the version of Firefox that I have, allows to disable CSS, and I often use that. < 1728767586 678522 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :However, a problem with that is that pictures that are merely for decoration cannot be excluded by this, and sometimes are made too big (especially SVG pictures). > 1728767714 760239 PRIVMSG #esolangs :14[[07)14]]4 10 02https://esolangs.org/w/index.php?diff=143245&oldid=85542 5* 03Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 5* (+22) 10 > 1728767735 96932 PRIVMSG #esolangs :14[[0714]]4 10 02https://esolangs.org/w/index.php?diff=143246&oldid=123773 5* 03Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 5* (+29) 10 < 1728771033 434952 :X-Scale!~X-Scale@89.214.119.76 JOIN #esolangs X-Scale :[https://web.libera.chat] X-Scale < 1728773023 923658 :molson_!~molson@2001-48F8-704A-446-AC58-6BE4-2BD1-E6F4-dynamic.midco.net QUIT :Ping timeout: 245 seconds > 1728773067 582046 PRIVMSG #esolangs :14[[07Pile14]]4 10 02https://esolangs.org/w/index.php?diff=143247&oldid=115692 5* 03Marc-dantas 5* (-5654) 10Blanked the page < 1728773898 862226 :__monty__!~toonn@user/toonn QUIT :Quit: leaving < 1728775009 327685 :X-Scale!~X-Scale@89.214.119.76 QUIT :Ping timeout: 256 seconds