< 1603324829 258552 :esowiki1!~esowiki@techne.zem.fi JOIN :#esoteric
< 1603325017 665006 :esowiki!~esowiki@unaffiliated/fizzie/bot/esowiki QUIT :Ping timeout: 260 seconds
< 1603325063 759880 :esowiki1!~esowiki@techne.zem.fi NICK :esowiki
< 1603327513 580537 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 QUIT :Ping timeout: 264 seconds
< 1603327751 967437 :Lord_of_Life!~Lord@46.217.219.190 JOIN :#esoteric
< 1603328985 140935 :LKoen!~LKoen@lstlambert-657-1-123-43.w92-154.abo.wanadoo.fr QUIT :Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”
< 1603334944 885396 :delta23!~deltaepsi@cpe-24-208-148-153.insight.res.rr.com QUIT :Quit: Leaving
< 1603337112 500519 :aaaaaa!~ArthurStr@91.90.11.13 QUIT :Quit: leaving
< 1603338176 849246 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esoteric :C doesn't have macros that are expanded only where a variable name is expected (similar to vardef in METAFONT).
< 1603340902 87464 :zzo38!~zzo38@host-24-207-14-22.public.eastlink.ca PRIVMSG #esoteric :I have read that cell phones cannot send/receive faxes due to the codec in use, but is the codec compatible with slow scan format?
< 1603341315 15399 :adu!~arobbins@c-76-111-99-194.hsd1.md.comcast.net JOIN :#esoteric
< 1603343223 712459 :hendursaga!~weechat@gateway/tor-sasl/hendursaga QUIT :Ping timeout: 240 seconds
< 1603347639 491166 :hendursaga!~weechat@gateway/tor-sasl/hendursaga JOIN :#esoteric
< 1603349185 526846 :imode!~linear@unaffiliated/imode QUIT :Ping timeout: 264 seconds
< 1603349986 194637 :adu!~arobbins@c-76-111-99-194.hsd1.md.comcast.net QUIT :Quit: adu
< 1603350985 213298 :Lord_of_Life!~Lord@46.217.219.190 QUIT :Changing host
< 1603350985 213352 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 JOIN :#esoteric
< 1603351084 906040 :Sgeo!~Sgeo@ool-18b982ad.dyn.optonline.net QUIT :Read error: Connection reset by peer
< 1603353051 461806 :moony!moony@hellomouse/dev/moony QUIT :Remote host closed the connection
< 1603353176 404434 :moony!moony@hellomouse/dev/moony JOIN :#esoteric
< 1603353703 710133 :hendursaga!~weechat@gateway/tor-sasl/hendursaga QUIT :Ping timeout: 240 seconds
< 1603354054 492801 :hendursaga!~weechat@gateway/tor-sasl/hendursaga JOIN :#esoteric
< 1603354559 481558 :hendursa1!~weechat@gateway/tor-sasl/hendursaga JOIN :#esoteric
< 1603354703 722506 :hendursaga!~weechat@gateway/tor-sasl/hendursaga QUIT :Ping timeout: 240 seconds
< 1603354963 742597 :hendursa1!~weechat@gateway/tor-sasl/hendursaga QUIT :Ping timeout: 240 seconds
< 1603355165 465933 :t20kdc!~20kdc@cpc139384-aztw33-2-0-cust220.18-1.cable.virginm.net JOIN :#esoteric
< 1603355926 254388 :cpressey!~cpressey@88.144.95.69 JOIN :#esoteric
< 1603356038 509988 :hendursa1!~weechat@gateway/tor-sasl/hendursaga JOIN :#esoteric
< 1603356052 439951 :hendursa1!~weechat@gateway/tor-sasl/hendursaga QUIT :Remote host closed the connection
< 1603356098 369777 :hendursa1!~weechat@gateway/tor-sasl/hendursaga JOIN :#esoteric
< 1603356417 234787 :cpressey!~cpressey@88.144.95.69 PRIVMSG #esoteric :Good morning.
< 1603356429 845672 :cpressey!~cpressey@88.144.95.69 PRIVMSG #esoteric :Defining a function is like adding an axiom, in the sense that it asserts that the hitherto-meaningless name of the function now has such-and-such meaning.
< 1603356525 281731 :rain1!~rain1@unaffiliated/rain1 PRIVMSG #esoteric :morning!
< 1603356766 172208 :Taneb!~Taneb@runciman.hacksoc.org PRIVMSG #esoteric :cpressey: I think it's more analogous to stating a theorem
< 1603356778 566060 :Taneb!~Taneb@runciman.hacksoc.org PRIVMSG #esoteric :With adding a builtin function like adding an axiom
< 1603357008 208289 :cpressey!~cpressey@88.144.95.69 PRIVMSG #esoteric :Most of the functions I write surely aren't theorems
< 1603357222 557384 :Arcorann_!~awych@121-200-5-186.79c805.syd.nbn.aussiebb.net JOIN :#esoteric
< 1603357225 88253 :Arcorann!~awych@121-200-5-186.79c805.syd.nbn.aussiebb.net QUIT :Ping timeout: 240 seconds
< 1603357273 761702 :Taneb!~Taneb@runciman.hacksoc.org PRIVMSG #esoteric :They might just not be very good theorems
< 1603357317 703115 :int-e!~noone@int-e.eu PRIVMSG #esoteric :There's a definitional principle by specification: If you prove (exists x. P(x)), then that allows you to introduce a fresh constant k, and assert P(k) as an axiom.
< 1603357361 246486 :int-e!~noone@int-e.eu PRIVMSG #esoteric :The proof of exists x. P(x) is fairly trivial if P(x) has the form x = foo with x not occurring in foo.
< 1603357797 187257 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Hmm. I believe Isabelle/Pure really only has the special case of definition by equality. Isabelle/HOL adds a Hilbert choice operator, so you get the specification principle by defining k = SOME x. P(x), and noting that exists x. P(x) ==> P(SOME x. P(x)) <==> P(k).
< 1603357817 2999 :rain1!~rain1@unaffiliated/rain1 PRIVMSG #esoteric :\x. x has type P -> P which is the tautology theorem
< 1603357822 733414 :int-e!~noone@int-e.eu PRIVMSG #esoteric :No clue about other interactive theorem provers.
< 1603357855 484564 :rain1!~rain1@unaffiliated/rain1 PRIVMSG #esoteric :\f. \g. \x. g(f(x)) has type (P -> Q) -> (Q -> R) -> (P -> R) which is a tautology
< 1603357870 690693 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Especially the dependently typed ones.
< 1603357875 670346 :rain1!~rain1@unaffiliated/rain1 PRIVMSG #esoteric :if you read -> as implies it works
< 1603357925 700464 :int-e!~noone@int-e.eu PRIVMSG #esoteric :rain1: not sure what your point is
< 1603357949 203551 :int-e!~noone@int-e.eu PRIVMSG #esoteric :@djinn (p -> q) -> (q -> r) -> p -> r
< 1603357949 267373 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :f a b c = b (a c)
< 1603357952 23305 :rain1!~rain1@unaffiliated/rain1 PRIVMSG #esoteric :it's for cpressey to see why functions are proofs of theorems
< 1603357978 145061 :rain1!~rain1@unaffiliated/rain1 PRIVMSG #esoteric :just a couple simple examples
< 1603357990 453099 :int-e!~noone@int-e.eu PRIVMSG #esoteric :But that is entirely independent of how you deal with definitions.
< 1603358024 745108 :cpressey!~cpressey@88.144.95.69 PRIVMSG #esoteric :There are lots of functions which are not proofs of theorems.
< 1603358025 961829 :int-e!~noone@int-e.eu PRIVMSG #esoteric :And you want proper definitions in every practical proof framework because they are crucial for compression.
< 1603358032 731743 :int-e!~noone@int-e.eu PRIVMSG #esoteric :That, and lemmas.
< 1603358051 630325 :int-e!~noone@int-e.eu PRIVMSG #esoteric :(Which may be the same if you have dependent types.)
< 1603358090 475880 :rain1!~rain1@unaffiliated/rain1 PRIVMSG #esoteric :cpressey, that is true...
< 1603358092 240125 :int-e!~noone@int-e.eu PRIVMSG #esoteric :In *theory*, of course you can treat definitions and lemmas as abbreviations to be unfolded.
< 1603358097 610985 :rain1!~rain1@unaffiliated/rain1 PRIVMSG #esoteric :like, infinite loops
< 1603358125 649516 :rain1!~rain1@unaffiliated/rain1 PRIVMSG #esoteric :but if you stick to functions with no infinite loops they can be read as theorems (even if they are often boring ones)
< 1603358149 649917 :Taneb!~Taneb@runciman.hacksoc.org PRIVMSG #esoteric :I think all functions are proofs of theorems, just not necessarily in a consistent logic
< 1603358165 893464 :cpressey!~cpressey@88.144.95.69 PRIVMSG #esoteric :"can be read as theorems that no one cares about", I won't argue with that
< 1603358168 676878 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Most of the functions I write are broing when viewed as theorems.
< 1603358222 958095 :int-e!~noone@int-e.eu PRIVMSG #esoteric :When I write a function of type Nat -> Nat, I usually care about the values. But usually not enough to try to specify what they are in the type.
< 1603358254 657582 :int-e!~noone@int-e.eu PRIVMSG #esoteric :So... functions are more than just proofs.
< 1603358298 814639 :cpressey!~cpressey@88.144.95.69 PRIVMSG #esoteric :If I use a dynamically typed language, then I am using a "degenerate type system with only one type" in the view of type theory, and I imagine that make it difficult to form any interesting proofs. But I can *program* in it just fine.
< 1603358321 151156 :Taneb!~Taneb@runciman.hacksoc.org PRIVMSG #esoteric :I still assert that functions are far more like theorems than axioms
< 1603358330 934183 :int-e!~noone@int-e.eu PRIVMSG #esoteric :And yes, indeed, the potential for nontermination makes the picture of functions as proofs even more inaccurate.
< 1603358349 253748 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Taneb: It's not about functions, at least not as I read it.
< 1603358392 132745 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Taneb: It's about giving a *name* to a value, which is the essence of a definition of a function.
< 1603358493 61757 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Of course this is my own interpretation of something cpressey wrote. I don't know whether it's the intended one.
< 1603358571 639039 :cpressey!~cpressey@88.144.95.69 PRIVMSG #esoteric :int-e: I feel like I *kind of* follow your explanation with P(x), if, to prove that x (for example factorial) exists you only need to supply the definition of it (a term exists that we can call "factorial")
< 1603358606 279172 :cpressey!~cpressey@88.144.95.69 PRIVMSG #esoteric :I suppose that's a kind of existence proof.
< 1603358673 238488 :cpressey!~cpressey@88.144.95.69 PRIVMSG #esoteric :But then, what is P() in general? It seems like it could be the evaluation relation for your environment?
< 1603358705 180785 :int-e!~noone@int-e.eu PRIVMSG #esoteric :Yes.
< 1603358721 210058 :cpressey!~cpressey@88.144.95.69 PRIVMSG #esoteric :OK, then I probably follow you.
< 1603358731 791244 :int-e!~noone@int-e.eu PRIVMSG #esoteric :it could be... P(f) <--> f(0) = 1 /\ forall x. f(x+1) = f(x)*(x+1)
< 1603358895 222549 :int-e!~noone@int-e.eu PRIVMSG #esoteric :(Which specifies the factorial function, assuming f : nat -> nat, but makes existence of f non-trivial.)
< 1603358908 271577 :rain1!~rain1@unaffiliated/rain1 PRIVMSG #esoteric :yes functions are more than just their types
< 1603358930 324086 :rain1!~rain1@unaffiliated/rain1 PRIVMSG #esoteric :types are just a blueprint of what the function does structurally
< 1603359031 602766 :int-e!~noone@int-e.eu PRIVMSG #esoteric :cpressey: What I'm saying is very much inspired by how Isabelle/HOL deals with these things.
< 1603359143 799460 :int-e!~noone@int-e.eu PRIVMSG #esoteric :For example, there is a function definition package that *can* deal with the above specification of the factorial function. Internally it'll extract a dependency relation (here, x+1 -> x; in general those will be tuples of all the arguments) and shows that it is well-founded (for which it has various heuristics)... and then one can show that f exists by induction on that relation.
< 1603359169 546765 :int-e!~noone@int-e.eu PRIVMSG #esoteric :(This is not entirely accurate, but close enough for an overview.)
< 1603359249 998556 :int-e!~noone@int-e.eu PRIVMSG #esoteric :hmm. let's s/overview/outline/
< 1603359307 223855 :rain1!~rain1@unaffiliated/rain1 PRIVMSG #esoteric :although some functions are uniquely determined by their type
< 1603359325 827907 :rain1!~rain1@unaffiliated/rain1 PRIVMSG #esoteric :up to extraneous lambda terms and other "nothings"
< 1603359405 117839 :cpressey!~cpressey@88.144.95.69 PRIVMSG #esoteric :rain1: Yeah, and even when it's not uniquely determined, you get at least one theorem "for free" by parametricity, as I understand it.
< 1603359449 95145 :int-e!~noone@int-e.eu PRIVMSG #esoteric :@djinn (a -> a) -> a -> a
< 1603359449 172282 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :f a = a
< 1603359469 897873 :rain1!~rain1@unaffiliated/rain1 PRIVMSG #esoteric :that's true! parametricity is pretty amazing
< 1603359479 810386 :int-e!~noone@int-e.eu PRIVMSG #esoteric :(unsurprisingly, the preferred Church numberal is 1.)
< 1603359486 961037 :rain1!~rain1@unaffiliated/rain1 PRIVMSG #esoteric :if a function works for all types you know it doesn't inspect and case analysis on data of that type
< 1603359494 944978 :rain1!~rain1@unaffiliated/rain1 PRIVMSG #esoteric :which lets you say a lot about a function
< 1603359504 813361 :int-e!~noone@int-e.eu PRIVMSG #esoteric :"numberal". Finally a typo that makes sense.
< 1603359520 706842 :int-e!~noone@int-e.eu PRIVMSG #esoteric :@free (a -> a) -> a -> a
< 1603359520 741270 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :Try `free ` or `free :: `
< 1603359530 881450 :int-e!~noone@int-e.eu PRIVMSG #esoteric :@free church :: (a -> a) -> a -> a
< 1603359530 917400 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :f . g = h . f => f . church g = church h . f
< 1603359563 782574 :int-e!~noone@int-e.eu PRIVMSG #esoteric :induction, more or less.
< 1603359682 498792 :rain1!~rain1@unaffiliated/rain1 PRIVMSG #esoteric :wow i never knew that!
< 1603359684 817386 :rain1!~rain1@unaffiliated/rain1 PRIVMSG #esoteric :that's cool
< 1603359984 911720 :cpressey!~cpressey@88.144.95.69 PRIVMSG #esoteric :On the other hand, it's possible for a function to uphold an invariant that cannot be captured by any type.
< 1603361866 735596 :HaJones!~HaJones@217-210-86-17-no2320.tbcn.telia.com JOIN :#esoteric
< 1603362084 707599 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :cpressey: definitions aren't like axioms in that they don't let you prove things that were meaningful but you couldn't have proved from your existing axioms.
< 1603362230 917254 :int-e!~noone@int-e.eu PRIVMSG #esoteric :spoken like a logician
< 1603362583 948808 :cpressey!~cpressey@88.144.95.69 PRIVMSG #esoteric :My comparison to axioms was meant to highlight that before you give the definition of factorial there's no way in hell you can deduce the truth or falisty of the statement "factorial(5)=120"
< 1603365729 292390 :ais523!~ais523@unaffiliated/ais523 JOIN :#esoteric
< 1603365744 146771 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :b_jonas: you can imagine a modification of, say, the SHA-1 or SHA-256 algorithm
< 1603365772 579286 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :in which the final step is "check if this hash has ever been output for a different input file; if so, increment the hash and repeat this step"
< 1603365786 206796 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :now you have an algorithm that is precisely defined and collision-free
< 1603365791 564987 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(if a little difficult to use in practice)
< 1603365796 518658 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :this seems quite similar to what your magic box is doing
< 1603365806 351401 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(although not the same, obviously)
< 1603365818 757172 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :ais523: I'm not sure if it's well-defined whether a hash has been output, and which of two hashes has been output first.
< 1603365854 385771 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :ais523: and no, (a) the magic box does more than just produce hashes, and (b) it uses a longer digest and one that's cryptographically safe so you can't produce collisions
< 1603365885 454104 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the thing that the magic box produces is a hash by definition, isn't it? except that it might not be deterministic
< 1603365895 666637 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(when using it in "store" mode)
< 1603365915 275254 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :ais523: it need not be. it could be just an entirely random value that it doesn't compute from the input or anything
< 1603365916 999082 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the magic boxes are slightly more useful if you also add the proviso that the same code will be returned for anyone, if they provide the same file as input
< 1603365935 987390 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I would argue that *even if* it isn't computed from the input, it's still a hash function
< 1603365940 681904 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :ais523: sort of but not really. if you want to check for collisions, you can just use an ordinary hash independent of the magic box.
< 1603365954 967365 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :ok, then it's a hash function.
< 1603365975 307326 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :fwiw, I have wanted a similar operation to this in a golfing language
< 1603365986 425672 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it takes an arbitrary data structure and returns a single integer, consecutive from 0
< 1603365999 437528 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :interning arbitrary data structures?
< 1603366002 694719 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :could work
< 1603366003 151585 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :right
< 1603366014 25731 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :of course, there is an uninterning operation, too
< 1603366038 904973 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :another idea I had, along similar lines, was a function that interns pairs of integers
< 1603366050 829709 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :when you have this, your language no longer needs data structures, as you can do cons just on integers
< 1603366075 798599 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(there are bijections between Z² and Z, so I guess you wouldn't even need to use interning if you didn't mind the size of the numbers exploding)
< 1603366094 584395 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :ais523: that's what cons does if there's no garbage collection, except I think if you say interning, you want a deterministic function
< 1603366109 206587 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :as for numbers exploding, yes, that's what (0) does
< 1603366128 324438 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :well, deterministic within one run of the program
< 1603366141 468727 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :ok
< 1603366175 652899 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :anyway, I think "content-addressable storage" is the general term for your magic boxes, except that two different CASes are not usually linked to each other
< 1603366186 786248 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :that sounds typical for these golf languages, normally you wouldn't want to intern every pair, because it's sort of slow, but in a golf language you might not care
< 1603366216 996781 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :yes, this seems like an operation that is probably usable by golfing languages only
< 1603366246 193530 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :ais523: yes, and https://valerieaurora.org/monkey.html is the clear explanation of them
< 1603366284 627279 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :huh, rsync is a CAS?
< 1603366314 93152 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :the magic boxes are not only linked, but can also store practically any amount of data (limited by the boxes' bandwidth) forever for free, unlike in the real world
< 1603366365 849 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :ais523: rsync => not in the traditional system, but it uses clever use of hashes to likely find matching infixes among files, just like how some delta compression algorithms do
< 1603366383 901824 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :and in fact even some ordinary compression algorithms do that
< 1603366427 268487 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :Riot Games wrote an article about how they do incremental updates, without needing to know what's already installed on the target computer
< 1603366435 554778 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :because deterministically finding all common infixes is too expensive, but finding enough of them to compress well in typical practical cases is good enough
< 1603366469 920362 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it works by breaking files into sections based on their content, and sending the hash of each section that should be in the new files
< 1603366473 294063 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :we'll probably learn all about this in Knuth vol 5 by the way
< 1603366488 186627 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :then the existing files are used to find as many of those sections as possible, and the ones which aren't found are downloaded
< 1603366500 213052 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :ais523: yeah, that's sort of what rsync does
< 1603366512 792710 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :right, that's why I mentioned it
< 1603366533 738328 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :incidentally, A Pear Tree's current algorithm for finding sections of files with a CRC of 0 is quadratic
< 1603366541 525278 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :but I think it's possible to do it in linear time
< 1603366570 621773 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so maybe there isn't even a need to define the sections in terms of content, you could just do it in terms of, say, a CRC-128
< 1603366599 28112 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(you would expect no random collisions with one of those; even though it isn't cryptographically secure, it seems likely that any actual collisions would have been planted by a human)
< 1603366620 985161 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :err, it's probably actually n log n rather than linear
< 1603366633 559189 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :ais523: ah yeah, that reminds me of one of my favorite algorithmic problems. you get a vector of nonnegative machine-sized integers, find the infix in that vector that maximizes the product of the length and the minimum of that infix.
< 1603366661 627865 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :if n is the length of the vector, there's a trivial O(n**3) algorithm, an easy O(n**2) algorithm, and a tricky O(n) algorithm
< 1603366708 132908 :cpressey!~cpressey@88.144.95.69 QUIT :Quit: WeeChat 1.9.1
< 1603366710 561232 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :"infix" = contiguous substring, right?
< 1603366715 758890 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :yes
< 1603366802 38955 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :there's an easy O(nk) algorithm too, which might or might not be faster depending on the size of the numbers
< 1603366809 682697 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :what is k?
< 1603366834 879724 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :largest integer in the vector
< 1603366875 420571 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(faster than the O(n²) algorithm, that is)
< 1603366973 82263 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I think the easy O(n²) algorithm is "for each element in the vector, scan forwards until you find a smaller element, then take the maximum among the infixes calculated this way"
< 1603366993 203072 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :in case you want to experiment, a test vector is [138, 222, 263, 156, 176, 58, 116, 211, 293, 481, 352, 217, 454, 639, 423, 580, 819, 716, 845, 999, 936, 714, 621, 569, 361, 175, 52, 57, 33] and the largest product is 5121, I have two longer test vectors that I can paste
< 1603367008 779140 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :yes, that is the easy O(n**2) algorithm
< 1603367047 942678 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the easy O(nk) algorithm is "for each k from 1 to the highest element in the vector, look for maximum-length infixes whose minimum is k, then take the maximum among the infixes calculated this way"
< 1603367069 573194 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :yes, that works too
< 1603367154 423829 :sprocklem!~sprocklem@unaffiliated/sprocklem QUIT :Ping timeout: 258 seconds
< 1603367164 881349 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :easy O(n log n): sort the indexes of the vector by their values, then consider the infixest between the smallest and second-smallest, second-smallest and third-smallest, etc., values
< 1603367169 797767 :sprocklem!~sprocklem@unaffiliated/sprocklem JOIN :#esoteric
< 1603367174 975332 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :* infixes
< 1603367180 843337 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I'm not 100% sure that's correct though
< 1603367208 45034 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :how do you compute the minimum of those infixes?
< 1603367208 522020 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :ah no, you have to extend each of those infixes outwards until you reach a value that's smaller
< 1603367224 717032 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :ah right, yes, that hurts the complexity too
< 1603367299 635122 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :more difficult O(n log n): consider the entire list as an infix, and recursively apply this algorithm to prefix before the smallest element, suffix after the smallest element
< 1603367312 937532 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :this is O(n log n) if you speed it up by locating all the element locations in order from smallest to largest first
< 1603367319 278933 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and do the recursion in that order
< 1603367327 441176 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :because, then you'll always know what the smallest element in the infix you're considering is
< 1603367332 178766 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and where it is
< 1603367372 412777 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the recursion itself becomes O(n) once you have the O(n log n) index of elements in order
< 1603367408 182443 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :ais523: how does that work? how do you do a recursion "in that order"? a recursion would usually has to do descend to all infixes on one side, then all infixes on the other side.
< 1603367441 596905 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so you can do a recursion with a call stack, where you're doing the left subtree than the right subtree
< 1603367451 664373 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :but you can also use a call queue, then you're effectively recursing over the tree breadth-first
< 1603367464 829278 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :you can generalise this into doing a recursion in arbitrary order
< 1603367472 389687 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :and how will that work in O(n) time?
< 1603367476 806009 :sprocklem!~sprocklem@unaffiliated/sprocklem QUIT :Ping timeout: 256 seconds
< 1603367504 583195 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :that sounds like it might work but I'm not convinced
< 1603367510 331785 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :b_jonas: oh right, it's acutally n log n; there are n recursive calls, each of which take constant time, but the context switches take log n time
< 1603367513 938801 :sprocklem!~sprocklem@unaffiliated/sprocklem JOIN :#esoteric
< 1603367533 652332 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :because you need to find the right stack/queue frame to aim for
< 1603367661 788940 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :here's the algorithm expanded: we have a set of infixes, initially just the initial list
< 1603367667 453495 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :meanwhile Im' trying to find my old implementation of the O(n) algorithm...
< 1603367684 743721 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :repeatedly, we locate the smallest element in any of the infixes, and split it into two infixes, the elements before that element, and the elements after that element
< 1603367688 19979 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :but I'm not sure I still hvae it
< 1603367698 6116 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and repeat until we have no elements left
< 1603367728 436531 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :if we sort the list in advance (remembering where the elements are in sorted order), "locate the smallest element in any of the infixes" (in terms of its position relative to the original list, and its value) is constant-time
< 1603367776 902649 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and if we maintain the list of infixes in sorted order (sorted using position in the initial list), using a self-balancing search tree, finding the correct infix based on the position of an element relative to the original list is O(log n)
< 1603367798 586193 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :thus, the sort in advance is O(n log n), the analysis of all the infixes is also O(n log n), overall algorithm is therefore O(n log n)
< 1603367814 96075 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :constant factor seems bad, though :-D
< 1603367899 254004 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric : One of my favorite quotes from this paper: "Our attack can find collision [in MD4] with hand calculation."
< 1603367919 547897 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :apparently, nowadays MD4 is so broken that finding collisions in it is actually faster than MD4'ing the two resulting strings to verify that their hashes are the same as each other
< 1603368250 507268 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :ah, it's probably one of these scripts in this text file of completely undocumented and unreadable perl one-liners
< 1603368269 856418 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :or more than one of them, they're probably multiple algorithms for the same thing
< 1603368291 160049 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :must be this one
< 1603368326 64540 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :but is this actually the O(n) solution?
< 1603368382 691066 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :it says this where the input is the numbers as space-separated decimal
< 1603368384 817280 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :perl -we 'use strict; use List::Util "max"; my @A=split/ /,<>; sub f { my(@a) = (0, @_, 0); my $m = 0; my @s; for my $j (0 .. @a-1) { while (@s and $a[$j] <= $a[$s[-1]]) { my $l = 1<@s?$s[-2]:0; my $t = ($j-$l-1)*($a[$s[-1]]); $m<$t and $m=$t; pop @s; } push @s, $j; } $m; } print f(@A), "\n";'
< 1603368465 243582 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :that looks like an unused import to me
< 1603368471 722067 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :unless there's some usage of "max" I'm missing
< 1603368482 871952 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :yeah, like I said, undocumented and messy, wrote it for myself
< 1603368489 384713 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :but I think it's the O(n) solution
< 1603368526 66769 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :the trick is that it's an amortized thingy, the body of the while loop pops an element from @s, so it runs exactly once for each value pushed, and we push a value in each iteration of the for loop, which runs n times
> 1603368536 559473 PRIVMSG #esoteric :14[[07Special:Log/newusers14]]4 create10 02 5* 03Filexor 5* 10New user account
< 1603368543 342271 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it's O(n), the inner loop can't run any more iterations than the outer loop does because the outer loop pushes to @s exactly once and the inner loop pops from it exactly once
< 1603368546 647314 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :so you have n iterations of the for loop, n iterations of the body of the while loop total
< 1603368583 423814 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :and I have more test vectors here
< 1603368618 507302 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :9 apparently
< 1603368660 512722 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I think your algorithm is basically the same as my O(n log n) algorithm except that it goes left to right, and manages to locate all the correct infixes as it does so, rather than needing an index calculated in advance
< 1603368661 456611 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :(and outputs for them, but you could get each with the quadratic time algorithm)
< 1603368673 266136 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :but both algorithms look at the same n infixes
< 1603368707 541239 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :that is likely, because neither uses any deep tricks about how the multiplication works apart from that it's monotone
< 1603368725 623123 :HaJones!~HaJones@217-210-86-17-no2320.tbcn.telia.com QUIT :Quit: Leaving
< 1603368757 45456 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :so you have to consider O(n) infixes, though you could consider O(n) more redundnatly
< 1603368815 104340 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :hmm… I assume there are randomized hashing algorithms which are secure in the sense that if you don't know the seed, you can't create a collision, and that given a random seed, two strings are no more likely to collide than a birthday paradox suggests
< 1603368824 732470 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :how much faster are they than cryptosecure hashes?
< 1603368879 429217 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :Wikipedia calls this "universal hashing"
< 1603368968 190488 :Frater_EST!~adrianbib@75.107.60.35 JOIN :#esoteric
< 1603368998 182239 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :ais523: people usually use the Blake2 hashes with a secret seed for that, I think python has such an implementation for its dictionaries
< 1603369013 734584 :Frater_EST!~adrianbib@75.107.60.35 PART :#esoteric
< 1603369033 234305 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :Blake2 is supposed to be cryptosecure, but it's still somewhat faster than SHA-2 or SHA-3 usually, and more flexible
< 1603369062 930171 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :there's a Blake3 now
< 1603369085 368466 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it's faster than blake2 partly because the number of rounds was reduced, but also because it can be vectorised
> 1603369094 72891 PRIVMSG #esoteric :14[[07Esolang:Introduce yourself14]]4 10 02https://esolangs.org/w/index.php?diff=78096&oldid=78062 5* 03Filexor 5* (+170) 10/* Introductions */
< 1603369113 652210 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :although, the input needs to be at least 2KiB in order to get the main gain from the vectorisation, and there's some overhead introduced to make that possible
< 1603369117 867960 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :no, I think blake2 can be vectorized too. blake3 can be parallelized.
< 1603369129 108335 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it's a different sort of vectorization
< 1603369149 240025 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :as in, you need to do a single serial iteration to compute blake2 on a long input
< 1603369164 84147 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :Blake3 can be vectorized the same way Blake2 is, but it's more efficient to use the parellelizability and just use the vector registers to SIMD many of the parallel streams of execution at once
< 1603369173 459579 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :but that is an iteration with a rather fast constant factor as crypto hashes go
< 1603369202 891694 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :you could also use multiple CPUs or threads, but I don't consider that to actually speed up an algorithm, the same amount of CPU effort is expended
< 1603369205 849208 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :but I don't this this comes up often as an advantage
< 1603369218 208073 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :it's something that rarely helps in practice
< 1603369238 467834 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :or, rather, I think of the runtime of an algorithm as the integral of its CPU load dtime
< 1603369253 988527 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :also the blake2 hashes are well-studied, which is the main advantage when you consider crypto hashes
< 1603369258 416048 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :maybe I shouldn't, because in practice you rarely find things to fill the idle CPU cores with
< 1603369267 700326 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :yes
< 1603369280 348212 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I wouldn't use Blake3 for non-crypto work yet
< 1603369283 767738 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :err, for crypto work yet
< 1603369299 590648 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I might use it for non-crypto purposes, though, if I simply wanted a hash function that's unlikely to have collisions
< 1603369409 256547 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :anyway, using a universal hash rather than cryptosecure hash means that there are certain useful properties that might not be ruled out
< 1603369427 955235 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :for example, having an easy way to calculate the hash of A concat B if you know the hashes of A and B
> 1603369891 813617 PRIVMSG #esoteric :14[[07PlusOrMinus14]]4 M10 02https://esolangs.org/w/index.php?diff=78097&oldid=75472 5* 03PythonshellDebugwindow 5* (+550) 10Update year and add original version
> 1603370004 602699 PRIVMSG #esoteric :14[[07Special:Log/newusers14]]4 create10 02 5* 03Blue screen of life 5* 10New user account
> 1603370489 686468 PRIVMSG #esoteric :14[[07Esolang:Introduce yourself14]]4 10 02https://esolangs.org/w/index.php?diff=78098&oldid=78096 5* 03Blue screen of life 5* (+172) 10Adding intro
> 1603370498 69319 PRIVMSG #esoteric :14[[07Befunge14]]4 10 02https://esolangs.org/w/index.php?diff=78099&oldid=77368 5* 03Blue screen of life 5* (+72) 10Adding a shorter Hello World program without string reversion to the examples section.
> 1603370828 999490 PRIVMSG #esoteric :14[[07XENBLN/Commands14]]4 M10 02https://esolangs.org/w/index.php?diff=78100&oldid=74681 5* 03PythonshellDebugwindow 5* (+3) 10Update commands
< 1603372405 33873 :hendursa1!~weechat@gateway/tor-sasl/hendursaga QUIT :Quit: hendursa1
< 1603372424 857217 :hendursaga!~weechat@gateway/tor-sasl/hendursaga JOIN :#esoteric
< 1603372443 906685 :File_xor!1b52d943@KD027082217067.ppp-bb.dion.ne.jp JOIN :#esoteric
< 1603372513 828933 :File_xor!1b52d943@KD027082217067.ppp-bb.dion.ne.jp QUIT :Remote host closed the connection
< 1603373220 806981 :cpressey!~cpressey@88.144.95.69 JOIN :#esoteric
> 1603375878 374392 PRIVMSG #esoteric :14[[07User talk:Orby14]]4 10 02https://esolangs.org/w/index.php?diff=78101&oldid=78011 5* 03OsmineYT 5* (-171) 10
< 1603376380 471871 :Arcorann_!~awych@121-200-5-186.79c805.syd.nbn.aussiebb.net QUIT :Read error: Connection reset by peer
< 1603376656 787559 :cpressey!~cpressey@88.144.95.69 QUIT :Ping timeout: 256 seconds
< 1603376756 207137 :cpressey!~cpressey@88.144.95.69 JOIN :#esoteric
< 1603377165 199212 :Sgeo!~Sgeo@ool-18b982ad.dyn.optonline.net JOIN :#esoteric
< 1603377514 666248 :Colonel_Kernel!~Colonel_K@142.180.244.137 JOIN :#esoteric
< 1603377520 430096 :Colonel_Kernel!~Colonel_K@142.180.244.137 PART :#esoteric
> 1603379477 16923 PRIVMSG #esoteric :14[[07Braindumbed14]]4 N10 02https://esolangs.org/w/index.php?oldid=78102 5* 03Filexor 5* (+1501) 10Created page with "'''Braindumbed''' is esoteric instruction set architecture designed by [[User:Filexor]]. ==Language overview== Braindumbed generally runs with 65536 bits of address space with..."
> 1603381019 7199 PRIVMSG #esoteric :14[[07Language list14]]4 10 02https://esolangs.org/w/index.php?diff=78103&oldid=78067 5* 03Filexor 5* (+18) 10
< 1603381262 911428 :Filexor!1b52d943@KD027082217067.ppp-bb.dion.ne.jp JOIN :#esoteric
< 1603381360 975123 :Filexor!1b52d943@KD027082217067.ppp-bb.dion.ne.jp QUIT :Remote host closed the connection
< 1603381684 441264 :arseniiv!~arseniiv@136.169.204.164 JOIN :#esoteric
< 1603381701 546151 :arseniiv!~arseniiv@136.169.204.164 PRIVMSG #esoteric :hi from win10 (:
< 1603381723 545136 :rain1!~rain1@unaffiliated/rain1 PRIVMSG #esoteric :hi
< 1603382452 843158 :cpressey!~cpressey@88.144.95.69 QUIT :Quit: WeeChat 1.9.1
< 1603383699 534918 :FreeFull!~freefull@defocus/sausage-lover JOIN :#esoteric
< 1603384420 524897 :Melvar!~melvar@dslb-178-007-125-010.178.007.pools.vodafone-ip.de QUIT :Quit: WeeChat 2.8
< 1603384858 31018 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :hi arseniiv
< 1603384864 954413 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :arseniiv: is it a new computer hardware too?
< 1603385693 973530 :ATMunn!ATMunn@hellomouse.net QUIT :Ping timeout: 246 seconds
< 1603385758 920149 :ATMunn!ATMunn@gateway/shell/hellomouse/x-nflyrazfhwlwduwy JOIN :#esoteric
< 1603386353 468007 :LKoen!~LKoen@81.255.219.130 JOIN :#esoteric
< 1603386520 425043 :arseniiv!~arseniiv@136.169.204.164 QUIT :Ping timeout: 258 seconds
< 1603387472 923720 :arseniiv!~arseniiv@136.169.204.164 JOIN :#esoteric
< 1603387817 524230 :arseniiv!~arseniiv@136.169.204.164 PRIVMSG #esoteric :b_jonas: nah, the same, though I bought a new display cable and tomorrow hopefully I'll grab it at the store. The current one is DVI-HDMI which is suboptimal, I picked HDMI at both sides. Should have done it so long ago but at least late is better than never. The change wouldn't improve resolution and frequency but I think it would do better in subtle and oblique ways
< 1603387850 898570 :arseniiv!~arseniiv@136.169.204.164 PRIVMSG #esoteric :oh I need to reactivate my AutoHotkey script to be able to enter fancy apostrophes
< 1603388029 990296 :arseniiv!~arseniiv@136.169.204.164 PRIVMSG #esoteric :it takes a day or so to migrate all settings that need to, and to install a stray driver and to reinstall most of the programs which aren't portable. I should take notes to automate that for the next upgrade or migration but I'm lazy
< 1603388094 293559 :FreeFull!~freefull@defocus/sausage-lover QUIT :
< 1603388209 585172 :FreeFull!~freefull@defocus/sausage-lover JOIN :#esoteric
< 1603388595 771611 :b_jonas!~x@catv-176-63-12-22.catv.broadband.hu PRIVMSG #esoteric :I'll probably grab the stuff I bought on Monday or Tuesday
< 1603389495 224463 :kurisu!~user@2a01:e34:ec06:13a0:cd56:6bd8:d37a:d475 JOIN :#esoteric
< 1603389979 511692 :Melvar!~melvar@dslb-178-007-125-010.178.007.pools.vodafone-ip.de JOIN :#esoteric
< 1603391131 724862 :arseniiv!~arseniiv@136.169.204.164 QUIT :Quit: gone too far
< 1603393148 347633 :ais523!~ais523@unaffiliated/ais523 QUIT :Quit: quit
< 1603393407 582523 :hendursaga!~weechat@gateway/tor-sasl/hendursaga QUIT :Remote host closed the connection
< 1603393459 240262 :hendursaga!~weechat@gateway/tor-sasl/hendursaga JOIN :#esoteric
< 1603394366 413194 :imode!~linear@unaffiliated/imode JOIN :#esoteric
< 1603396424 184725 :kurisu!~user@2a01:e34:ec06:13a0:cd56:6bd8:d37a:d475 QUIT :Remote host closed the connection
> 1603397039 732465 PRIVMSG #esoteric :14[[07UFSA14]]4 M10 02https://esolangs.org/w/index.php?diff=78104&oldid=74608 5* 03PythonshellDebugwindow 5* (+61) 10/* One-time binary cat */ Add example
> 1603397623 530448 PRIVMSG #esoteric :14[[07!@$%^&*()+/Algorithms14]]4 10 02https://esolangs.org/w/index.php?diff=78105&oldid=77980 5* 03SunnyMoon 5* (-314) 10This does not work...
> 1603398160 498102 PRIVMSG #esoteric :14[[07Taktentus14]]4 M10 02https://esolangs.org/w/index.php?diff=78106&oldid=74146 5* 03PythonshellDebugwindow 5* (+61) 10/* Syntax */ Add to documentation
> 1603399052 530833 PRIVMSG #esoteric :14[[07Taktentus14]]4 M10 02https://esolangs.org/w/index.php?diff=78107&oldid=78106 5* 03PythonshellDebugwindow 5* (+57) 10/* Syntax */ Add note about comments
< 1603399467 153143 :cherrybean!~philip@210.16.83.127 JOIN :#esoteric
< 1603399878 64878 :cherrybean!~philip@210.16.83.127 PART #esoteric :"Leaving"
> 1603400569 224219 PRIVMSG #esoteric :14[[07Voxvy14]]4 N10 02https://esolangs.org/w/index.php?oldid=78108 5* 03PythonshellDebugwindow 5* (+334) 10Create
< 1603400903 769449 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 QUIT :Read error: Connection reset by peer
< 1603400955 864951 :Lord_of_Life!~Lord@46.217.219.190 JOIN :#esoteric
< 1603400956 79245 :Lord_of_Life!~Lord@46.217.219.190 QUIT :Changing host
< 1603400956 79284 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 JOIN :#esoteric
< 1603403186 48006 :LKoen!~LKoen@81.255.219.130 QUIT :Remote host closed the connection
< 1603403577 943654 :tromp!~tromp@dhcp-077-249-230-040.chello.nl QUIT :Remote host closed the connection
< 1603405416 919824 :tromp!~tromp@dhcp-077-249-230-040.chello.nl JOIN :#esoteric
< 1603405723 914029 :tromp!~tromp@dhcp-077-249-230-040.chello.nl QUIT :Ping timeout: 260 seconds
> 1603405939 940922 PRIVMSG #esoteric :14[[07Talk:Anarchysm14]]4 N10 02https://esolangs.org/w/index.php?oldid=78109 5* 03Heavpoot 5* (+142) 10Created page with "would it be considered ok to improve the english of this ~~~~"
< 1603406023 175616 :t20kdc!~20kdc@cpc139384-aztw33-2-0-cust220.18-1.cable.virginm.net QUIT :Remote host closed the connection
> 1603406113 125525 PRIVMSG #esoteric :14[[07Anarchysm14]]4 10 02https://esolangs.org/w/index.php?diff=78110&oldid=76549 5* 03Heavpoot 5* (+182) 10bees
> 1603406211 758383 PRIVMSG #esoteric :14[[07If the question specifies that the number of the words should be less than 3, and the number of words in your answer is larger than 3, your answer is automatically wrong.14]]4 M10 02https://esolangs.org/w/index.php?diff=78111&oldid=74257 5* 03Heavpoot 5* (+32) 10i think you forgot an operator.
> 1603406372 468569 PRIVMSG #esoteric :14[[07H14]]4 M10 02https://esolangs.org/w/index.php?diff=78112&oldid=71264 5* 03Heavpoot 5* (+9) 10Fixed grammar
< 1603406688 418818 :Arcorann_!~awych@121-200-5-186.79c805.syd.nbn.aussiebb.net JOIN :#esoteric
> 1603406943 971831 PRIVMSG #esoteric :14[[07Revaver2pi14]]4 M10 02https://esolangs.org/w/index.php?diff=78113&oldid=73504 5* 03Heavpoot 5* (+143) 10Changed wording, fixed grammar
> 1603407086 373547 PRIVMSG #esoteric :14[[07TLOWScript14]]4 M10 02https://esolangs.org/w/index.php?diff=78114&oldid=56541 5* 03Heavpoot 5* (-12) 10"compiler/interpreter" -> "implementation"
> 1603407139 664536 PRIVMSG #esoteric :14[[07TLOWScript14]]4 M10 02https://esolangs.org/w/index.php?diff=78115&oldid=78114 5* 03Heavpoot 5* (+6) 10Fixed grammar
> 1603407277 332032 PRIVMSG #esoteric :14[[07Cod14]]4 M10 02https://esolangs.org/w/index.php?diff=78116&oldid=43386 5* 03Heavpoot 5* (+76) 10Add link, fix typos/grammar
< 1603407464 858623 :deltaepsilon23!~deltaepsi@cpe-24-208-148-153.insight.res.rr.com JOIN :#esoteric
< 1603407520 925353 :tromp!~tromp@dhcp-077-249-230-040.chello.nl JOIN :#esoteric
< 1603407647 589404 :deltaepsilon23!~deltaepsi@cpe-24-208-148-153.insight.res.rr.com NICK :delta23
< 1603407804 802253 :tromp!~tromp@dhcp-077-249-230-040.chello.nl QUIT :Ping timeout: 256 seconds
< 1603408140 622832 :aaaaaa!~ArthurStr@host-91-90-11-13.soborka.net JOIN :#esoteric
< 1603408936 490337 :FreeFull!~freefull@defocus/sausage-lover QUIT :
< 1603410775 170604 :tromp!~tromp@dhcp-077-249-230-040.chello.nl JOIN :#esoteric