00:02:50 -!- b_jonas has quit (Quit: leaving).
00:27:24 <zzo38> How to reset the file system journal? I get error messages such as "JBD2: Spotted dirty metadata buffer (dev = sda3, blocknr = 0). There's a risk of filesystem corruption in case of system crash." Will resetting the journal fix this error? The filesystem is working OK despite the error message.
00:36:06 <zzo38> (Also, can I reset the journal without losing data?)
01:12:21 <shachaf> Silly syntax question: Is there a language that uses sigils for types?
01:12:40 <kmc> how do you define a sigil
01:13:01 <kmc> when people complained about Rust having ~T and @T and &T they usually called 'em sigils
01:13:03 <shachaf> Well, I mean any syntactic marker other than uppercase.
01:13:05 <kmc> and &T still exists
01:13:15 <kmc> and C++ has it too
01:13:16 <shachaf> Oh, I mean marking that something is a type syntactically.
01:13:35 <kmc> i don't know
01:13:54 <shachaf> kmc: I used to think that your assessment of C++ as an esolang was a bit silly but nowadays I mostly think it's just true.
01:14:30 <shachaf> (I mean, I used to think it was slightly true and somewhat silly. But now I think it's much more clearly true.)
01:16:43 <kmc> what changed your mind?
01:17:49 <shachaf> Something like realizing what a scow C++ is and how it got to be that way.
01:17:58 -!- arseniiv_ has quit (Ping timeout: 246 seconds).
01:18:15 <zzo38> BASIC uses suffixes for types (although you can also use AS to specify types), and so does OAA (a compiler that targets the OASYS text adventure games VM)
01:19:00 <shachaf> My story for things like templates is, originally they added some simple template features that weren't that terrible, just a replacement for C macro templates or something.
01:19:11 <kmc> like A$ for a string?
01:19:41 <kmc> shachaf: SFINAE is maybe the prototypical example in my mind of a feature that turned out to be much more useful than intended, in a bizarre way
01:19:50 <shachaf> Then because of the (legitimate!) latent demand for metaprogramming features, people started doing complicated things with templates.
01:19:51 <zzo38> Yes, A$ names a string variable in BASIC.
01:20:05 <kmc> Haskell typeclasses are sort of like that too but the unanticipated applications of typeclasses are mostly fairly reasonable to use
01:20:27 <shachaf> The C++ committee saw people doing these things, and instead of adding reasonable metaprogramming features, they decided to add tempalte features to allow for even more ridiculous metaprogramming nonsense.
01:20:39 <kmc> pretty much
01:20:47 <zzo38> (In OAA, not only are there suffixes for data types, but also prefixes; for example ,A$ means a local string variable, and %A$ is a global string variable, and &A$ is a method that returns a string.)
01:20:49 <kmc> otoh, it means that C++ metaprogramming is much more type-aware than many languages' systems
01:20:51 <shachaf> And now everyone is stuck in this absurd local optimum which is so far from anything reasonable.
01:21:08 <kmc> the ability to do compile-time dispatch on various properties of a type is very powerful
01:21:12 <kmc> and very useful in a systems language
01:21:23 <kmc> to enable optimizations, etc
01:21:39 <kmc> there is probably a way to design a sensible type-aware metaprogramming system
01:21:47 <shachaf> Anyway there's the esolang attitude of "given these ridiculous constraints, how can I accomplish all sorts of things?" that leads people to enjoy template metaprogramming.
01:21:59 <kmc> it sounds like a hard problem to me
01:22:00 <shachaf> It's not about doing good engineering but about solving fun puzzles.
01:22:06 <kmc> macro systems are already hard enough and they are not type-aware
01:22:10 <kmc> (for the most part)
01:22:25 <shachaf> C++ templates can't even be parsed without instantiating them. It's so bad.
01:22:27 <kmc> and I don't just mean "knowing the types of generated expressions" but things like type traits.
01:22:30 <kmc> this is true
01:22:34 <kmc> the syntax is wretched
01:22:44 <shachaf> By the way I agree that pretty much the same thing happened in Haskell.
01:22:47 <kmc> but as weird as templates are
01:22:55 <kmc> they have some essentially unique capabilities
01:23:04 <shachaf> There were some reasonable type system features and then people were all about doing things in the type system and writing in this silly Prolog variant.
01:23:14 <kmc> that are very useful in C++'s niche
01:23:16 <shachaf> (Meanwhile C++ people are writing in this silly ML variant. Golly.)
01:23:17 <zzo38> I had the other idea (I mentioned before), types with characteristics, and the values of characteristics of types can be macros; this can be used for type-aware metaprogramming.
01:23:18 <kmc> yes that is true
01:24:15 <shachaf> I suspect macros or code generation are much better than a lot of uses of C++ templates.
01:24:25 <kmc> many of them
01:24:31 <zzo38> (Such type-aware metaprogramming actually becomes mandatory to get it to work at all, although most of it is put in standard header files (both system-dependent and system-independent), so you normally do not need to deal with it.)
01:24:31 <kmc> but many others can't be done with code generation
01:24:32 <shachaf> Did you know edwardk once implemented IEEE floating point arithmetic in C++ templates to generate constants or something?
01:24:55 <kmc> e.g. the ability to provide one of multiple implementations of a generic function depending on some property of the type(s) it is instantiated with.
01:25:04 <kmc> which, again, is really useful in high performance systems code
01:25:11 <shachaf> This is 100% about solving fun puzzles rather than solving actual problems.
01:25:40 <shachaf> I think static dispatch based on types is a reasonable feature but C++ has such a bad implementation of it.
01:25:43 <int-e> with enough templates you can compile straight into c-like code that the compiler can actually digest...
01:26:11 <shachaf> Another way that C++ is ridiculous it that it pretty much requires an optimizer to generate reasonable code.
01:26:20 <shachaf> C code is pretty much fine with no optimizations.
01:26:41 <kmc> I wonder if maybe metalanguages (whether designed or evolved) are the wrong way to do things, and instead we should have languages with no meta/object-level distinction, which have powerful introspection facilities, and compile-time partial evaluation
01:26:53 <kmc> C++ already has powerful constexpr too
01:27:02 <kmc> this would avoid the need for both
01:27:27 <kmc> a simplistic way to put this is to have eval as a constexpr function
01:27:36 <kmc> which wouldn't necessarily be present at runtime
01:27:39 <kmc> i mean, probably wouldn't be
01:27:57 <shachaf> Zig's "comptime" seems pretty reasonable to me and it's a much simpler language than C++.
01:28:10 <kmc> shachaf: re optimizations, while that is inconvenient, it is not a design flaw of C++ but rather a consequence of the problem it's trying to solve, which is much different from the problem C is trying to solve
01:28:15 <kmc> C is a low-abstraction language
01:28:17 <zzo38> kmc: I think that is good for interpreted languages, but programming languages that compile code into native code I think will need the ability to do separate metaprogramming (although metaprogramming could be done using the same programming language as the mainly compiled code, if needed).
01:28:26 <kmc> C++ is a very high-abstraction language which nevertheless tries to produce C-level performance
01:28:37 <kmc> this means a huge need for optimizing out those abstractions
01:28:40 <shachaf> I think it's clearly true that you should be able to run arbitrary code in the same language at compiletime (though I could think of some arguments against it, I guess).
01:28:41 <kmc> it's the same in Rust
01:28:48 <kmc> even though Rust is less insane than C++ in many ways
01:29:51 <shachaf> I think if you had macros or something generating reasonable C-style code instead of templates, you could get much better performance for abstractions.
01:29:55 <kmc> zzo38: I am thinking in terms of Futamura projections, where a compiler is a partial evaluator for an interpreter
01:30:07 <shachaf> Anyway I'm not opposed to optimization, I just think C++ has a pretty bad attitude toward it.
01:30:18 <int-e> . o O ( Futurama projections. )
01:30:22 <kmc> shachaf: that wouldn't allow you to (for example) turn chains of iterator HOFs into flat loops
01:30:27 <kmc> which is something both C++ and Rust can do
01:30:34 <shachaf> The C++ coroutine proposal says that coroutines sometimes need to allocate but they expect that an investment of $x million into research-level optimizations will make that not a problem.
01:30:35 <kmc> int-e: good news, everyone!
01:31:19 <shachaf> By the way I think my current opinion on optimizations is that they should never change asymptotic performance of code, only constant factors.
01:32:06 <shachaf> This means that e.g. tail-call elimination is bad -- if you want tail calls to turn into jumps, you should have a language construct that guarantees a jump and fails if it's not possible (because of a destructor or whatever).
01:32:38 <int-e> So you're looking at all the resources, including stack usage, here?
01:33:11 <shachaf> Of course this depends on your goal. If you don't care about predictable software it probably matters less.
01:33:15 <int-e> I was going to agree, but tail call optimization is so benign... and hard to get wrong... I want it.
01:33:22 -!- Lord_of_Life has quit (Ping timeout: 268 seconds).
01:33:35 <shachaf> I want it too! So there should be some kind of language construct that guarantees it.
01:34:24 <shachaf> I suspect tail recursion is just in a language like C or C++, though. Much better to write while (true).
01:34:39 <shachaf> Tail call elimination is more useful for mutually recursive things like parsers.
01:35:38 <kmc> there's a proposal for Rust that's been kicking around for a long time
01:35:41 <kmc> for a syntax like "become f(x)"
01:35:50 <shachaf> Yes, that's the kind of thing I mean.
01:35:53 <kmc> this would be a tail call to f(x), but also runs destructors /before/ the call
01:36:00 <kmc> so it has different semantics from a normal call
01:36:02 <shachaf> (Assuming it means what it looks like, I haven't seen the proposal.)
01:36:10 <shachaf> Oh, not what I was thinking of, but that works too.
01:36:14 <kmc> which is why it can't be done as an optimization
01:36:18 -!- Lord_of_Life has joined.
01:36:20 <kmc> and that's probably wise
01:36:27 <zzo38> LLVM allows explicitly specifying tail calls or not tail calls.
01:36:39 <shachaf> That seems like a pretty strange feature to me.
01:36:41 <kmc> in a lot of cases, it's fine to run destructors before the tail call, and of course anything moved into the tail call isn't destroyed
01:37:55 <zzo38> (Since my idea of the program language is that you can use all features of LLVM, this means that specifying explicitly the tail call or not tail calls is possible to do.)
01:38:42 <kmc> since Rust has memory safety by default, destroying stuff before the tail call isn't going to get you in trouble wrt passing a pointer to that stuff
01:39:31 <shachaf> kmc: By the way, I was thinking about something you said a while ago, about the benefits of dynamically typed programming languages.
01:39:37 <kmc> (and that extends to things like RAII lock objects too, because the only way to access the thing protected by a lock is through the lock object or a reference whose lifetime is tied to the lock object)
01:39:41 <kmc> (which is a really cool design)
01:40:24 <shachaf> You gave some examples that I don't remember, but one of them was something like "copy all the fields of object x into object y that has a different type".
01:41:09 <shachaf> I think something like that is much better covered with some kind of dynamic-ish compiletime code that generates statically-typed runtime code to actually copy the fields.
01:42:35 <shachaf> There's no reason you couldn't write "for each field of object x", it just has to be a compiletime loop rather than a runtime loop.
01:42:47 <shachaf> I feel like this is true for a lot of the benefits of dynamically-typed languages.
01:42:47 <kmc> yes but should we even have such a distinction
01:42:56 <kmc> or write a runtime loop and rely on the compiler to optimize it
01:43:04 <kmc> possibly with an annotation to throw a compiler error if it can't
01:43:08 <shachaf> A runtime loop that uses reflection?
01:43:34 <kmc> that's what i expected
01:43:44 <kmc> based on your opinions above re: C++'s reliance on optimization
01:43:45 <shachaf> If nothing else, I want it to be a type error at compiletime if one of the fields in x doesn't exist in y.
01:43:59 <kmc> that can be arranged
01:44:07 <shachaf> Oh, that argument isn't on performance grounds.
01:44:09 <kmc> it would be a "runtime error" in the constexpr engine
01:44:15 <kmc> which is a compile-time error
01:44:26 <shachaf> OK, so that sounds like the right thing?
01:44:30 <kmc> and again, you can say such and such function must evaluate out at compile time
01:44:37 <kmc> so you won't get any surprise runtime errors
01:44:43 <kmc> but semantically, you only have object-level code and no meta-code
01:44:50 <shachaf> I'm happy with writing "compiletime for (name, type : fields(x)) { ... }"
01:44:55 <kmc> this conversation is very interesting but i think i will go do other things
01:45:27 <shachaf> It seems kind of odd to require that thing to always be interpretable with runtime semantics, since there are all sorts of things the compiler has access to that the running program might not.
01:48:00 <shachaf> kmc: You probably didn't see my conversation about arguments the other but I have a bunch of ideas of things along those lines that could exist easily at compiletime but don't make much sense at runtime.
01:48:57 <shachaf> I don't think macros that operate on an AST really make sense at runtime, but you could easily have them at compiletime (with the same language).
01:50:13 <HackEso> Cats are cool, but should be illegal.
01:50:55 <zzo38> Yes, and is what I intended you can have macros that operate on the AST at compile time only
01:52:54 <shachaf> ASTs aren't the only kind of value I'm thinking of, though.
02:03:59 <zzo38> Yes, there are other stuff that you can do too, such as types and type characteristics
02:15:18 <kmc> fexprs are love
02:15:23 <kmc> fexprs are you
02:19:05 <esowiki> [[Don't]] M https://esolangs.org/w/index.php?diff=63815&oldid=63813 * A * (+66)
02:32:42 <shachaf> In general there are many language features you can use to do compiletime-ish things at runtime.
02:33:53 <shachaf> Often they have different semantics, and almost always different performance, so I'm not sure whether always making the code look identical is particularly valuable.
02:34:33 <shachaf> Ironically C++ is quite bad at a simple thing I want to be able to do, which is to pass an argument either at compiletime when it's known or at runtime or at runtime when it's not.
02:36:22 <shachaf> (It's ironic because I think that kind of thing is nominally what C++ is trying to accomplish.)
02:39:36 <kmc> well that's one reason why people rely so much on inlining
02:39:39 <kmc> but it's not ideal, yes
02:40:46 <shachaf> Well, I'm also thinking of the variant where something is either a field on a struct or a value known at compiletime.
02:41:05 <shachaf> E.g. the size of an array.
02:41:43 <shachaf> Even a lot of inlining won't prevent the value from being needlessly stored in memory.
02:41:48 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=63816&oldid=63803 * A * (-19) I have to make edits every day.
02:43:44 <shachaf> maybe i'll cook some delicious food
02:55:15 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=63817&oldid=63816 * A * (+2823) /* Write some nonsense here */
03:10:09 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=63818&oldid=63817 * A * (-332) /* The magic of H */
03:13:38 <zzo38> In my NNTP client software I put in the following SQL code: INSERT INTO `NEWSGROUPS`(`NAME`, `LAST`) SELECT `NAME`, `LAST` FROM `_UPDATEGROUPS` WHERE 1 ON CONFLICT(`NAME`) DO UPDATE SET `LAST` = EXCLUDED.`LAST`; the conflict is actually guaranteed; it will never add new rows to the table. Is this the best way or is there a better way to do what I am trying to do here?
03:15:26 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=63819&oldid=63818 * A * (-209) /* H */
03:23:27 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=63820&oldid=63819 * A * (+1189) /* H Reference */
03:24:56 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=63821&oldid=63820 * A * (+15) /* Adding if statements and functions without adding any keywords */
03:32:38 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=63822&oldid=63821 * A * (-71) /* H Quine via adding one operator */
04:03:25 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=63823&oldid=63822 * A * (+166) /* H Quine via adding one operator */
04:12:37 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=63824&oldid=63823 * A * (+192) /* H Quine via adding one operator */
04:16:02 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=63825&oldid=63824 * A * (+18) /* H Quine via adding one operator */
04:45:56 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=63826&oldid=63825 * A * (+73) /* H Quine via adding one operator */
05:10:24 <kmc> shachaf: http://www.worldinhome.com/what-is-language-c/
05:10:27 <kmc> "In an effort to keep up the movability of each the C and C++ languages, the Yankee National Standards Institute (ANSI) developed a type of consistency for C and C++ programming."
05:20:21 <shachaf> i'm cooking delicious food and it's going to be tg
05:25:14 -!- sprocklem has joined.
05:39:22 <kmc> ooh, what is it
05:42:31 <shachaf> some nonsense with onions and tomatoes and rice and a trillion spices
05:47:10 <kmc> that sounds nice
05:59:52 -!- xkapastel has joined.
06:07:52 <kmc> I hope you enjoy it :)
06:08:29 <shachaf> it is good but i think i used too much water for the rice
06:08:55 <shachaf> i was going to award myself a billion points for this dish but i think i'm only going to give myself about 2 million
06:09:57 <kmc> I'm tired from a busy weekend and I'm going to sleep
06:10:09 <kmc> I hope to earn a billion sleep points
06:10:39 <kmc> you too :)
07:49:13 -!- APic has quit (Ping timeout: 245 seconds).
08:09:25 -!- mniip has quit (Read error: Connection reset by peer).
08:11:27 -!- mniip has joined.
08:14:07 -!- AnotherTest has joined.
08:55:34 -!- salpynx has joined.
09:25:27 -!- arseniiv_ has joined.
09:27:56 -!- arseniiv_ has changed nick to arseniiv.
09:28:40 <lambdabot> UWUU 010900Z 32006MPS 9999 OVC011 15/14 Q1003 R32L/0///60 NOSIG
09:29:59 <arseniiv> it seems the Earth tilted overnight in an unfortunate fashion and I am now living in a polar region
09:58:48 -!- xkapastel has quit (Quit: Connection closed for inactivity).
10:09:52 <ski> shachaf : "This means that e.g. tail-call elimination is bad" -- so you want "proper tail recursion", rather than TCO ?
10:11:36 <shachaf> What is "proper tail recursion"?
10:13:01 <ski> imho, it's somewhat of a misnomer, since it's not about recursion, per se
10:14:01 <ski> it's a language property in Scheme, that an implementation is to be able to handle an unbounded number of active tail calls, in bounded space (so it's about operational semantics)
10:14:23 <ski> doesn't mandate a particular way to implement that
10:14:59 <ski> the point is that it's not an optimization, something which an implementation may or may not choose to do. it's something you can rely on
10:16:58 <ski> also, given that there's a relatively simple lexical (conservative) check you can do in your head to check if a call is in tail position wrt to some wrapping context, it's something you can practically use
10:19:05 <shachaf> As I mentioned, I don't think tail recursion is very important, at least in a language like C -- you can just write while (true).
10:19:41 <shachaf> I think I'm fine with the "foo() { return bar(); }" always being two stack frames. Or it can always be one stack frame, as long as it's predictable.
10:20:15 <shachaf> In a language like C++, "foo() { Thing x; return bar(); }" could run the destructor for x after bar(), in which case it looks like a tail call but isn't.
10:20:42 <ski> iirc MIT Scheme (?) keeps around the last hundred or so calls to (distinct) procedures, for debugging purposes, which is fine. and Chicken produces C code which never returns normally (using CPS. instead the "stack" is GCed and compacted, when full, iirc. so it's basically a heap)
10:21:00 <shachaf> I was suggesting a version of "return" where it's an error if it can't be implemented with a jump instead of a call.
10:21:32 <ski> i agree about predictability
10:22:24 <shachaf> I have the same opinion about things like fusion in Haskell.
10:23:12 <shachaf> I don't really like "best-effort" optimizations that people need to rely on. If you want your thing to be compiled into a particular thing, you should express it in terms of something that guarantees it.
10:24:23 <ski> my ideas about "unboxed variants" (by which i don't mean putting the tag in a separate register) are going in the direction of having the system complain statically if you don't get the expected fusion / virtual data structures you expect
10:25:35 <shachaf> What are your ideas about "unboxed variants"?
10:25:55 <shachaf> I can't remember whether you told me once when I was all about wanting unboxed sums in GHC.
10:27:26 <ski> "Multi-return function call" by Olin Shivers in 2004-09,2006-0[79] at <http://www.ccs.neu.edu/home/shivers/citations.html#mrlc>, which is about multiple alternative continuations, and a notion of "semi-tail calls"
10:28:01 <shachaf> Right, I remember you were saying something about multiple continuations.
10:28:37 <ski> i had an example (translated from that paper into, imho, more suitable terms) in pseudo-Haskell, on <lpaste.net> ..
10:29:27 <shachaf> There was one paste I would refer to every couple of years on hpaste.org, but fortunately I downloaded a copy before it disappeared.
10:29:45 <shachaf> Oh, maybe sometime you can help me think about efficient implementation of coroutines. I feel like almost no one implements them in the right way.
10:30:57 <ski> imagine if you had a function with e.g. return type `Either Integer [Integer]'. it's common for a caller to immediately do a `case' analysis on the result (or else just pass the result on, for its caller to check, &c.)
10:31:36 <shachaf> In that case you can pass continuations, right.
10:31:58 <shachaf> Isn't the cost of an indirect jump instead of a call-return and conditional jump pretty high?
10:31:59 <ski> so the idea is that we take the continuation of the call, which consists of this `case' (with some wrapping context), and we unbox it, passing the branches as separate, alternative, return points
10:34:08 <ski> well, if you're doing recursive loops, it can commonly be the case that you'd just pass on most of the return points, unchanged (that'd be a semi-tail call). and so if you return via such a continuation, you'd skip most of the activation frames which would otherwise have to interpret the tag
10:34:43 <ski> (so this seems a little bit related to codensity, yes)
10:35:19 <ski> but it would remain to be seen how well it would work out in practice, yes
10:35:52 <esowiki> [[Special:Log/upload]] upload * Cortex * uploaded "[[File:Cheese Dodecahedron.jpeg]]": Cheese Dodecahedron.
10:36:26 <shachaf> Hmm, what would the code for that look like?
10:36:44 <shachaf> I'm imagining something where the alternative would also be a lot of tail calls with no case analysis except at the end.
10:36:55 <ski> i also have a feeling that one could involve composable continuations here, to get "unboxed lists" (e.g.), in which the list structure is virtual. iow we'd get a kind of fusion, with static error if we don't get the fusion we expect
10:37:04 <esowiki> [[User:Cortex/Cheese Dodecahedron]] N https://esolangs.org/w/index.php?oldid=63828 * Cortex * (+59) Created page with "[[File:Cheese Dodecahedron.jpeg|thumb|Cheese Dodecahedron]]"
10:38:15 -!- brett-soric has joined.
10:42:29 <ski> i'm imagining using ordinary pattern-matching syntax, e.g. with `case', but on values of a type of another kind. there'd possibly need to be some extra syntax for passing on the same alternative continuation
10:44:03 <ski> if you have a call `case foo ... of Left# x -> ..x..; Right# y -> Right# y', the intention is to pass on the `Right#' continuation to `foo ...', not eta expanding it. so it would perhaps be nice to have some more obvious way to indicate that
10:45:38 <ski> (if one could "use function extensionality" to write that branch simply as `Right# -> Right#', then that might work nicely)
10:46:48 <ski> i'm not really sure of what situation with "lot of tail calls with no case analysis except at the end" you were imagining ?
10:49:07 <ski> (btw, instead of `Either# Integer [Integer]', you can use `forall o. (Integer -> o) -> ([Integer] -> o) -> o'. but then you have to use explicit CPS. and perhaps not allowing them to be just any old function would allow more efficient implementation ?)
10:50:42 <ski> oh, and i should probably try to look more into different implementations of coroutines. what would you say is better and worse ways that have been used ?
10:57:23 <HackEso> The password of the month has been erroneously sent to the NSA. We apologize for the inconvenience.
10:57:40 <int-e> . o O ( The password of the month is highly controversial. )
11:00:19 <shachaf> ski: I have wondered about something related to this, now that I think of it, where you pass multiple return addresses to a function.
11:00:29 <shachaf> I don't remember the context right now, though.
11:02:31 <shachaf> I'm not sure I can say everything about coroutines, but I can say a bit. This is in the context of a C-like language.
11:03:37 <shachaf> One approach, of course, is to allocate a stack for each coroutine, and switch between them with a function call that saves and restores a few registers (including the stack pointer and return address).
11:04:09 <shachaf> This is nice because you can just call any old function and even a nested function might switch away from the coroutine and then switch back later.
11:04:39 <shachaf> (For example asynchronous I/O is one application of this -- you can make functions that look just like calls that block a thread but they're just blocking the coroutine -- functioning as a userspace thread.)
11:06:08 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=63829&oldid=63826 * A * (+136) /* H Reference */
11:09:52 <shachaf> This has a few downsides, mostly related to this being an unexpected use of the stack pointer.
11:10:35 <shachaf> You have to allocate some amount of stack space up-front, and the compiler and non-coroutine-aware functions have no reason to be sparing with it.
11:12:18 <shachaf> Worse, if you have a lot of coroutines, every time you do a context switch, your stack probably won't be in the cache. If you call some function that uses a bunch of stack space that doesn't need to be saved between context switches, that'll be a bunch of unnecessary cache misses.
11:17:47 <shachaf> Does that seem reasonable?
11:23:03 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=63830&oldid=63829 * A * (+43)
11:24:10 <esowiki> [[User:A/H spec]] N https://esolangs.org/w/index.php?oldid=63831 * A * (+3212) Created page with "== H Reference== Credits to [https://codegolf.meta.stackexchange.com/questions/2140/sandbox-for-proposed-challenges/17827#17827 Programming Puzzles and Code Golf StackExchange..."
11:24:12 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=63832&oldid=63830 * A * (-3213)
11:25:05 <shachaf> So the thing a coroutine does, of course, is implement a state machine, where the state is represented in the stack.
11:26:12 <shachaf> So you might implement it yourself manually -- struct Coroutine { enum State state; int x; char y; bool z; }; or something.
11:26:30 <shachaf> And the question is how to get the compiler to generate that for you.
11:26:55 <shachaf> Then your program can keep using the regular stack for regular things, and only use the "coroutine stack" for things that explicitly need to be saved between calls.
11:27:34 <shachaf> In fact the compiler can probably generate something more efficient than that struct, because it can do standard liveness analysis and allocate space in the state struct better.
11:28:22 -!- brett-soric has left.
11:28:28 <shachaf> So it might look more like struct Coroutine { enum State state; char buf[REIFIED_STACK_SIZE]; };, where the compiler allocates space out of buf.
11:28:58 <shachaf> Another thing is that "enum State" could just be an instruction pointer.
11:29:21 <shachaf> That seems like the sort of thing you'd want. Right?
11:29:41 <ski> hm, i suppose i'm not following how this state machine thing connects to the "pass the baton" view of coroutines ?
11:30:47 <shachaf> A concrete example would be useful here.
11:31:03 <shachaf> What do you mean by "pass the baton"?
11:31:14 <shachaf> (I mean a concrete example from me, of course.)
11:35:50 <esowiki> [[Esolang:Community portal]] M https://esolangs.org/w/index.php?diff=63833&oldid=58895 * A * (-4) "PPCG" is not called that anymore... I can only find this reference.
11:36:10 <lambdabot> Local time for shachaf is Mon Jul 1 04:36:08 2019
11:36:19 <shachaf> I think I'll go to sleep and say more later.
11:36:23 <esowiki> [[User:A/H spec]] M https://esolangs.org/w/index.php?diff=63834&oldid=63831 * A * (-4)
11:36:41 <ski> i mean instead of having a caller and a callee, and the caller calls the callee, possibly passing some parameters, and the callee eventually returns some results to whatever caller called it -- so that the caller "knows" the callee, but not vice versa, and also the callee is "subordinate" to the caller, so that there's a fairly assymetric relationship
11:37:44 <ski> you'd have two (or more) coroutines which execute for a bit, and then pass on information (and control, the "baton") to the other coroutine, which then finds itself in a more symmetrical relation to the first one
11:39:18 <shachaf> Right, there are at least two sorts of models of coroutines, one which is more like userspace threads, and one where they activate each other explicitly.
11:39:41 <shachaf> I'm not quite sure whether they need to be treated differently or not.
11:40:20 <shachaf> But I think either approach I mentioned should work for either one?
11:40:38 <shachaf> So far what I said is really just about how to store the state.
11:40:41 <ski> yea, it's not really clear to me either
11:40:57 <ski> i didn't really follow the second approach
11:41:49 <shachaf> Because I was very vague about it, is why.
11:42:25 <ski> if you need to sleep, i probably shouldn't be keeping you up
11:42:38 <shachaf> I need a few concrete examples of the different styles to explain this well, and I don't have any.
11:42:54 <shachaf> Let's say you have Python-style generators as another (?) sort of style.
11:43:35 <shachaf> foo() { for (int i = 0; i < 10; i++) { yield(i); } }
11:43:47 <shachaf> Hmm, I'll make it a bit more complicated.
11:44:16 <ski> sortof like a lazy list, or backtracking a la Prolog, i suppose (i don't know enough details of quirks and limitations of Python-style generators to compare well)
11:44:23 <shachaf> foo() { for (int i = 0; i < 10; i++) yield(i); for (int j = 0; j < 5; j++) yield(j); }
11:44:29 <shachaf> Oh, then maybe it's not a great example. :-)
11:44:38 <shachaf> But you can see easily enough what that does.
11:44:51 <shachaf> To make it work in the framework above, you can imagine something like this:
11:45:45 <shachaf> enum State { ONE, TWO, DONE }; struct Coroutine { enum State state; int i; int j; };
11:46:13 <shachaf> init_coroutine(struct Coroutine *c) { c->state = ONE; c->i = 0; }
11:47:40 <shachaf> int step_coroutine(struct Coroutine *c) { int v; switch (c->state) { case ONE: v = c->i++; if (c->i == 10) { c->state = TWO; }; break; case TWO: v = c->j++; if (c->j == 5) { c->state = DONE: }; break; default: assert(0); }; return v; }
11:48:17 <shachaf> Oh, I forgot, the c->i == 10 case should also set j to 0. (And if this was implemented more efficiently they'd be stored in the same memory.)
11:48:34 <shachaf> This is an extremely boring contrived case, I should come up with a realistic one.
11:50:44 <ski> i think i was thinking of a similar example (`(++)'), when i was playing with refactoring `[a]' to `forall o. (exists s. (s,s -> o,s -> a -> s)) -> o'
11:53:46 -!- salpynx has quit (Remote host closed the connection).
11:58:17 <shachaf> OK, I'll really go to sleep now.
11:59:14 <ski> good night, pleasant dreams
12:00:54 <shachaf> kmc probably racked up 600 million sleep points by now
12:09:55 -!- APic has joined.
12:15:25 -!- mniip has quit (Read error: Connection reset by peer).
12:16:40 -!- mniip has joined.
12:31:00 <Taneb> I'm racking them up right now
12:39:38 <esowiki> [[User:A/H spec]] M https://esolangs.org/w/index.php?diff=63835&oldid=63834 * A * (-1) /* H Quine via adding one operator */
12:41:01 <esowiki> [[User:A/H spec]] M https://esolangs.org/w/index.php?diff=63836&oldid=63835 * A * (-188) /* H Quine via adding one operator */
12:56:09 -!- arseniiv_ has joined.
12:59:13 -!- arseniiv has quit (Ping timeout: 245 seconds).
13:03:40 -!- xkapastel has joined.
13:21:29 <esowiki> [[ThisIsTheFoxe]] N https://esolangs.org/w/index.php?oldid=63837 * ThisIsTheFoxe * (+77) can I redirect a page like that? .-.
13:22:49 <esowiki> [[User:ThisIsTheFoxe]] M https://esolangs.org/w/index.php?diff=63838&oldid=63786 * ThisIsTheFoxe * (-2) style change
13:24:18 <esowiki> [[ThisIsTheFoxe]] M https://esolangs.org/w/index.php?diff=63839&oldid=63837 * ThisIsTheFoxe * (-15) redirect allowed? .-.
13:25:13 <esowiki> [[User:ThisIsTheFoxe]] M https://esolangs.org/w/index.php?diff=63840&oldid=63838 * ThisIsTheFoxe * (+1) /* DubDubMachine */
13:28:02 <esowiki> [[User:ThisIsTheFoxe]] M https://esolangs.org/w/index.php?diff=63841&oldid=63840 * ThisIsTheFoxe * (+180) about me .-.
13:28:23 <esowiki> [[User:ThisIsTheFoxe]] M https://esolangs.org/w/index.php?diff=63842&oldid=63841 * ThisIsTheFoxe * (-4) /* About Me */ semantics .-.
13:32:35 <esowiki> [[Esolang:Introduce yourself]] M https://esolangs.org/w/index.php?diff=63843&oldid=63769 * ThisIsTheFoxe * (-10) Updated my signature
13:33:48 <esowiki> [[ThisIsTheFoxe]] https://esolangs.org/w/index.php?diff=63844&oldid=63839 * ThisIsTheFoxe * (-62) I am stupid. Pls `rm this.page`
13:34:19 -!- Lord_of_Life_ has joined.
13:35:27 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
13:35:32 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
13:38:23 <esowiki> [[ThisIsTheFoxe]] https://esolangs.org/w/index.php?diff=63845&oldid=63844 * ThisIsTheFoxe * (+12)
13:41:11 <esowiki> [[ThisIsTheFoxe]] https://esolangs.org/w/index.php?diff=63846&oldid=63845 * ThisIsTheFoxe * (+54) pls dilet dis
13:55:46 <esowiki> [[L33t]] https://esolangs.org/w/index.php?diff=63847&oldid=30840 * ThisIsTheFoxe * (+4577) added a few examples
13:57:38 <esowiki> [[L33t]] https://esolangs.org/w/index.php?diff=63848&oldid=63847 * ThisIsTheFoxe * (+285) /* Fibbonacci */
13:58:53 <int-e> . o O ( poor ais523 )
14:05:42 <esowiki> [[DubDubMachine]] https://esolangs.org/w/index.php?diff=63849&oldid=63791 * ThisIsTheFoxe * (-44) /* Examples */
14:06:19 <esowiki> [[DubDubMachine]] M https://esolangs.org/w/index.php?diff=63850&oldid=63849 * ThisIsTheFoxe * (+2) finished cat program
14:30:29 <esowiki> [[DubDubMachine]] https://esolangs.org/w/index.php?diff=63851&oldid=63850 * ThisIsTheFoxe * (+293) Added more examples
14:32:08 <esowiki> [[DubDubMachine]] M https://esolangs.org/w/index.php?diff=63852&oldid=63851 * ThisIsTheFoxe * (+12) /* Cat program */
14:43:58 <arseniiv_> how do you think, is it possible to build an arbitratry tree′ in Punctree?
14:44:56 -!- arseniiv_ has changed nick to arseniiv.
14:59:05 <int-e> arseniiv: _ + ~ should be enough to build an arbitrary context?
15:00:01 <int-e> (Would you mind terribly if I replaced all "tree'" by "context"?)
15:01:31 <arseniiv> hm I seemed to have a time to forget full semantics of +
15:12:23 <int-e> arseniiv: Hmm, do you intend to treat 2 t t' as a zipper? (I think not.)
15:13:18 <int-e> (i.e., a pair where the second component is a context)
15:13:56 <arseniiv> though I don’t know if I’ll change my mind :D
15:15:07 <int-e> I mean I'm going over the whole text right now anyway... so I'll change that u != _ to u = 2 t' t there.
15:15:36 <int-e> (I'm only up to "In this language there are no trees [...]"...)
15:17:35 <int-e> arseniiv: I'd hope that text snippet is unique? It's at the start of the paragraph.
15:17:49 <int-e> In this language there are no trees, but remember that ''u′'' = 2 ''t′'' ''t'' is a context, and a zipper is a pair isomorphic to ''u''. So further we’ll treat ''u′'' = 2 ''t′'' ''t'' as a zipper (''t′'', ''t''), too.
15:19:21 <arseniiv> I was searching the wrong thing
15:20:30 <arseniiv> don’t know why I overgeneralized it that time
15:21:28 <esowiki> [[Punctree]] M https://esolangs.org/w/index.php?diff=63853&oldid=63814 * Arseniiv * (+13) /* Values */ degeneralization
15:25:53 <int-e> arseniiv: why why why did you edit when I announced that I was editing...
15:26:58 <esowiki> [[Punctree]] https://esolangs.org/w/index.php?diff=63854&oldid=63853 * Int-e * (+90) Main change: tree' --> context. But I did some proof-reading as well.
15:27:12 <arseniiv> int-e: I thought you hadn’t yet started
15:27:15 <int-e> arseniiv: (mediawiki is terrible at merging)
15:27:53 <int-e> anyway, there you go... please review, and feel free to revert if you disagree
15:28:45 <arseniiv> only if to check what proofreading entailed
15:29:58 <int-e> Ah. Θ ::= T | T′ is wrong now. But I'll wait for you.
15:36:49 <arseniiv> i think it’s all good, thank you. BTW I do think “context” is actually easier to read. Though originally I treated π₁ and π₂ as solely tree operations, maybe placing α, β there makes a better note that they are no good for a context
15:37:15 <int-e> arseniiv: And sorry for that outburst... it was mostly theatrical, but I'm not sure whether IRC carried that part of the message.
15:38:15 <esowiki> [[Punctree]] M https://esolangs.org/w/index.php?diff=63855&oldid=63854 * Int-e * (-2) /* Values */ fixup: T -> C
15:38:27 <int-e> esowiki: wanna learn unicode?
15:38:28 <arseniiv> I might not notice it for what it is. Ah, that one. No, it’s totally okay
15:39:47 <arseniiv> it was fun when esowiki mentioned <where is that letter…> edits
15:40:21 <arseniiv> now I feel like it just can’t find those characters in time like me now
15:42:52 <arseniiv> like you’re in a dream and trying to read some latin/cyrillic/greek text and then you notice it’s all not quite right
15:43:14 <int-e> I mostly don't bother with Unicode. I'd need to investigate X11 input methods... I played around with scim ages ago but never grew used to it, and the fact that the behavior depends on the toolkit was annoying.
15:43:45 <int-e> When I do use Unicode I use gucharmap. So it's *very* slow and tedious.
15:44:11 <arseniiv> (why do I use Windows charmap at all? There are better programs to search characters, with better name search even)
15:44:31 <arseniiv> oh, a Windows one is at least fast
15:44:50 <arseniiv> though maybe when using a pretty small font
15:46:11 -!- Lord_of_Life has quit (Excess Flood).
15:46:33 <arseniiv> usually I input characters I may need with AutoHotkey, but I hadn’t bothered adding that reversed F to the script
15:47:27 -!- Lord_of_Life has joined.
15:48:31 <arseniiv> here it is, finally: Ⅎ — and no one needs it now
16:07:08 -!- MDude has joined.
16:09:18 <int-e> arseniiv: "bars are invisible" ... if we have ... | x | as the stack, can we pop the x from underneath the bar?
16:09:48 * int-e isn't sure what the bars are all about tbh.
16:11:07 <arseniiv> yes, bars were a mistake. I should have made something like pointers to elements of the stack instead
16:34:50 -!- yharnam has joined.
16:45:00 <int-e> arseniiv: Hmm, what does eval() do, exactly? Run the code, then inspect the top of the stack? Is the top of the stack kept?
16:45:54 <int-e> (Is the modified stack kept or is the original stack restored? "When evaluating a code block, no special things are done to the stack before or after it." is not entirely clear.)
16:47:58 <arseniiv> oh, there’s another inaccuracy. eval(body) and eval(else_) were intended to be simply “run and that’s all”, but eval(cond) is “run and then pop the value”. It definitely needs to be rewritten, I’ll do something
16:49:04 <arseniiv> in the interpreter I actually popped after “eval”(cond) and didn’t do anything after “eval”(body/else_)
16:49:30 <arseniiv> oh, “else_” with an underscore is what I called it in Python
16:51:23 <arseniiv> I’ll promote that description to a subsection
16:59:26 <int-e> arseniiv: http://paste.debian.net/1089917/ is s start of an interpreter but I didn't bother with the bars, and I have not tested anything
17:01:25 <arseniiv> int-e: nice! Don’t you want to represent C as a zipper-without-a-subtree though? (isomorphic to [(Direction, T)] where data Direction = L | R)
17:02:12 <arseniiv> though with singly-linked lists it will be undesirable for some operations
17:04:39 <zzo38> Now downloading articles from the server is implemented in bystand.
17:06:31 <int-e> arseniiv: I didn't really consider that.
17:06:56 <int-e> arseniiv: I find what I have easier to think about.
17:08:12 <esowiki> [[Punctree]] M https://esolangs.org/w/index.php?diff=63856&oldid=63855 * Arseniiv * (+523) /* Syntax */ + Loop command
17:08:42 <arseniiv> aaah I was going to preview it and clicked the wrong button
17:10:27 -!- sprocklem has quit (Ping timeout: 245 seconds).
17:11:50 <esowiki> [[Punctree]] M https://esolangs.org/w/index.php?diff=63857&oldid=63856 * Arseniiv * (+38) /* Loop command */ now it looks as intended
17:12:08 <arseniiv> hopefully it will be less confusing
17:13:07 <arseniiv> also how do you find my mix of C-like and Pascal-like syntax in pseudocode?
17:14:02 -!- Phantom_Hoover has joined.
17:19:19 <zzo38> Is there a fgets() function that allocates the memory needed to store it, in some program?
17:22:10 <int-e> arseniiv: From an efficiency perspective you are probably right that one should represent contexts as a sequence of pairs like that... and then use Data.Seq or something similar that offers efficient concatenation and destruction on both ends.
17:23:17 -!- xkapastel has quit (Quit: Connection closed for inactivity).
17:23:51 <arseniiv> int-e: though, I started with tree-like definition too
17:24:17 <arseniiv> (and then I got unsatisfied and changed to a zippery one)
17:24:43 <arseniiv> main complexities in my code are from elsewhere, BTW
17:25:10 <int-e> I bet you can go crazy trying to optimize the stack representation
17:34:26 <arseniiv> hm I tried that for some extent but surrendered and made it a literal stack of values and bars
17:35:07 <arseniiv> and then after each stack action, two topmost bar positions are recalculated
17:37:11 <arseniiv> hopefully I’m not Knuth enough
17:39:50 -!- xkapastel has joined.
17:40:06 <int-e> What's bad about being Knuth? Aside from his age, perhaps.
17:48:03 <zzo38> I think Knuth is a good computer programmer
17:48:07 <arseniiv> also writing a book which almost no one else could continue
17:48:54 <zzo38> Yes, I want to read the book; I have read a few and it is good.
17:48:59 <arseniiv> and he had an influence on the world
17:49:38 <arseniiv> but I’m glad I’m not him. Two Knuths would be tg :P
17:50:04 <int-e> arseniiv: I'll grant that he's not modern. He grew up at a time when all those microptimizations made a difference.
17:50:26 <int-e> Nowadays... that has become rare.
17:51:20 <int-e> (what's cheaper... 10h of software engineering time or buying an extra AWS instance for running a 50h computation?)
17:51:52 <zzo38> I will use microoptimizations when writing in assembly language especially.
17:52:55 <arseniiv> though I talked with a couple of people for whom such optimizations were a must for a reason (small microcontrollers and a code to search for graphs with specified rare properties)
17:53:00 <zzo38> (And found a lot of existing code that is not optimized so well.)
17:53:23 <int-e> Microoptimizations pay off when they are reused often in computation bottlenecks. So... in hardware, in compiler output, in some drivers.
17:53:54 <int-e> Microcontrollers for mass produced items probably still count.
17:54:39 <arseniiv> yeah, bottleneck argument is basically a specialized “optimize after profiling” argument
17:55:19 <zzo38> The trick that I used to speed up address decoding and bank switching in Famizork is one that I don't know if anyone else has used it.
17:59:09 <zzo38> Also, in some kind of computers, you can use unofficial instructions for optimizations.
18:00:22 <int-e> arseniiv: Hah. How often does the term "software stack" occur in TAoCP?
18:01:47 <arseniiv> int-e: I presume less than once?
18:02:44 <int-e> I'm honestly not sure.
18:03:49 <int-e> But if it does occur I expect that it will be a counterpart to "hardware stack" which could either refer to built-in push, pop, call, ret (operating on memory), or to some limited stack built into the CPU.
18:05:10 <zzo38> MMIX uses a register stack.
18:08:44 <esowiki> [[Deadfish]] https://esolangs.org/w/index.php?diff=63858&oldid=63774 * Areallycoolusername * (+8) /* Implementations */
18:08:46 -!- yharnam has quit (Remote host closed the connection).
18:11:17 <zzo38> And, on MMIX the return address is not stored in the register stack; only the local registers are.
18:19:51 -!- b_jonas has joined.
18:20:07 <HackEso> olist 1169: shachaf oerjan Sgeo FireFly boily nortti b_jonas
18:24:58 <esowiki> [[Deadfish]] https://esolangs.org/w/index.php?diff=63859&oldid=63858 * Areallycoolusername * (+23) /* Implementations */
18:28:15 -!- Guest17850 has quit (Changing host).
18:28:15 -!- Guest17850 has joined.
18:28:17 -!- Guest17850 has changed nick to lizzie.
18:33:53 <zzo38> Does GNU linker support linking time assertions in the program?
18:34:08 <zzo38> Does LLVM support it?
18:41:31 <b_jonas> oh nice, int-e's complains about arseniiv's esolang writeup overlap with mine
18:43:53 <b_jonas> zzo38: re fgets, do you mean malloc-allocates the space at each call? if so, yes, called getline.
18:45:50 <zzo38> O, yes, it is. It says they were originally GNU extensions but are now POSIX.
18:46:15 <shachaf> kmc: how many sleep points did you earn
18:48:02 <kmc> shachaf: not that many :(
18:48:07 <b_jonas> zzo38: re fgets, do you mean malloc-allocates the space at each call? if so, yes, called getline.
18:48:10 <kmc> maybe I should drink less caffeine
18:48:14 <b_jonas> shachaf: re sigils, besides BASIC, there's also INTERCAL
18:48:33 <b_jonas> zzo38: yes, it originates from gnu libc
18:49:11 <shachaf> kmc: i award you 800 million cuddly points
18:49:43 <shachaf> b_jonas: Does BASIC even have identifiers that refer to types?
18:49:56 <zzo38> Yes, INTERCAL also uses sigils for types, with prefix instead of a suffix like BASIC
18:49:57 <b_jonas> zzo38: related gnu libc extensions are asprintf, and the "a" flag in scanf (which actually technically conflicts with the C standard definintion, because "%a" is supposed to be equivale to to "%g", but glibc definitely has priority there)
18:50:09 <b_jonas> shachaf: that depends on which BASIC dialect you ask
18:50:21 <zzo38> BASIC does have names of types, such as INTEGER and LONG and so on.
18:50:41 <zzo38> where % is INTEGER, & is LONG, ! is SINGLE, and # is DOUBLE.
18:50:45 <b_jonas> shachaf: newer versions of BASIC do have identifiers that refer to types, older ones don't
18:51:53 <shachaf> But I'm not talking about using a sigil to indicate what the type of something is.
18:52:06 <shachaf> I'm talking about indicating syntactically whether an identifier is a type.
18:52:20 <shachaf> For example Haskell uses an uppercase letter.
18:52:38 <arseniiv> zzo38: I remember something like $ for string also, is it from another Basic dialect?
18:53:21 <zzo38> Yes, $ is for strings.
18:53:34 <zzo38> (I forgot that one)
18:53:51 <zzo38> shachaf: No, there is no such thing in BASIC.
18:54:17 <arseniiv> for each string, Basic awards us a $
18:54:19 <zzo38> (A variable can also have the same name as a structure type in BASIC.)
18:54:37 <arseniiv> we need writing long string-heavy programs
18:58:04 <zzo38> The "OAC" compiler for OASYS text adventure game system has no sigils and no reserved words either, and uses type names without any syntactic indication. The "OAA" compiler does uses sigils, both prefixes and suffixes.
18:58:07 <zzo38> Suffixes are @ for a pointer to a object, # for a integer (either 16-bits or 32-bits), $ for a index into the string table, ^ for a pointer (only for locals and return values), and nothing for void (only for return values).
18:58:26 <esowiki> [[User:ThisIsTheFoxe]] https://esolangs.org/w/index.php?diff=63860&oldid=63842 * Total Vacuum * (+0)
18:59:07 <zzo38> Prefixes are , for locals (including arguments), . for properties, & for methods, * and ? for classes, % for global variables, and ! for preallocated objects.
18:59:42 <zzo38> And, unlike BASIC, the prefix and suffix alone are sufficient you do not need to add letters in between.
19:06:03 <esowiki> [[Deadfish]] https://esolangs.org/w/index.php?diff=63861&oldid=63859 * Areallycoolusername * (+5) /* C++ Codegolfed */
19:37:58 -!- MDude has quit (Ping timeout: 245 seconds).
19:38:30 -!- FreeFull has joined.
20:08:57 -!- user24 has joined.
20:37:21 -!- atslash has quit (Quit: This computer has gone to sleep).
20:58:52 -!- AnotherTest has quit (Ping timeout: 252 seconds).
22:16:31 -!- user24 has quit (Quit: Leaving).
22:18:18 -!- uplime has changed nick to ^.
22:24:26 -!- nfd has joined.
22:26:52 -!- nfd9001 has quit (Ping timeout: 252 seconds).
22:51:22 <HackEso> bitcoins are coins that have been drilled through with a bit, and can be strung together in long chains. This practice dates to ancient China, and the Chinese remain experts in bitcoin manufacturing. A chain can support up to 21 million coins before breaking.
22:54:31 <b_jonas> A bitcoin also means a coin of which a criminal bites off a small part to obtain a small amount of gold, but then passes the coin on as if it had the full original value. Isaac Newton invented a machine that puts a regular ridged pattern around the edge of the coin so that bitcoins can be easily recognized.
22:54:34 <shachaf> wow, that must've been a century ago
22:54:38 <HackEso> 10459:2017-03-20 <Jafët> learn bitcoins are coins that have been drilled through with a bit, and can be strung together in long chains. This practice dates to ancient China, and the Chinese remain experts in bitcoin manufacturing. A chain can support up to 21 million coins before breaking.
22:55:04 <shachaf> Why did Isaac Newton invent it?
22:56:51 <b_jonas> shachaf: his job was catching counterfeiters
22:58:23 <b_jonas> also maybe it helped his alchemy experiments
23:09:30 <zzo38> I thought he invented it because he was made master of the mint, which was done because the mint could mostly run by itself, but he insisted to do something about it anyways.
23:10:17 <HackEso> The password of the month has been erroneously sent to the NSA. We apologize for the inconvenience.
23:10:43 <int-e> . o O ( This was your second monthly password reminder. )
23:14:51 <b_jonas> don't look at me, unless you want another random dictionary words password like I set the last time
23:15:45 <shachaf> `learn The password of the month is int-e's job.
23:15:47 <HackEso> Relearned 'password': The password of the month is int-e's job.
23:16:16 <int-e> I guess that's a fair assessment.
23:16:36 <int-e> But now I have 39 days to plan my revenge!
23:16:53 <shachaf> Is this month 39 days long?
23:17:36 <int-e> No, the keyboard jumped.
23:17:58 <int-e> (It's the only explanation! My typing is perfect!!!1)
23:19:28 <b_jonas> The password of the month is notable housing compliment vitamin.
23:24:55 -!- b_jonas has quit (Quit: leaving).
23:28:27 <shachaf> July is the month of the password.
23:51:32 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
23:51:54 <int-e> . o O ( cute: http://paste.debian.net/1089950/ )
23:53:12 <shachaf> int-e: oh no, they got your deployment-config.json
23:54:08 <int-e> yeah wtf is that anyway
23:54:39 <arseniiv> oh, it seems the interpreter started working!
23:54:57 <arseniiv> [Compile error] Unknown character ‘a’ at 1.
23:56:48 <arseniiv> also it’s quite polite and says bye on exit
23:57:02 <int-e> https://github.com/amoussard/sftp-deployment/issues/130
23:57:36 <shachaf> presumably deployment-config is the opposite of employment-config
23:58:37 <int-e> hmm https://github.com/IanEdington/deploy-php/blob/master/deployment-config.json#L16
23:58:59 * ski was about to remark on how far the `0' key is from the `9' key
23:59:19 <int-e> ski: yes, they're miles and miles apart... if you use the numeric keypad
23:59:38 <shachaf> I haven't used a computer with a numeric keypad in years.
23:59:59 <int-e> my computer doesn't have a numeric keypad either ;-) my keyboard does.
00:00:08 <ski> nah, in the main key maze, i have moved the `0' key to the left of the `1'-`9' keys
00:00:23 <shachaf> int-e: I was going to correct myself and then I thought no one would be so pedantic as to comment on it.
00:00:36 <shachaf> Anyway I mean a computer that has a numeric keypad connected to it, of course.
00:01:08 <ski> heya shachaf
00:01:16 <int-e> shachaf: Well, I think we have several overly pedantic people here :)
00:02:05 <shachaf> i award you 2.147 billion points
00:02:54 <int-e> shachaf: But there was an undercurrent to my message... I don't like laptop keyboards. So even for the computers that do have a builtin keyboard (which typically lack a numeric keypad), I'd use an external keyboard (and then I usually have a numeric keypad out of habit, and also because I use it for window placement).
00:03:39 <shachaf> you must be some kind of power user
00:03:54 <int-e> shachaf: nah I'm just idiosyncratic
00:04:11 <shachaf> ski is only 483648 points away
00:04:12 <int-e> I still use fvwm2, despite all its flaws.
00:04:36 <shachaf> I'm using i3 but I'm beginning to suspect that tiling window managers are not quite the right thing.
00:05:01 <shachaf> I should think carefully about the standard window management workflows.
00:05:30 <zzo38> I am using i3 (but with my own status line implementation), and it supports floating windows as well as tiling windows, and also tabbed windows.
00:05:41 <shachaf> zzo38: I also wrote my own status line implementation.
00:06:00 <zzo38> They say it is for use with having multiple screens, but I only have one, and it still works OK with only one screen.
00:06:08 <shachaf> It supports floating windows but they're second-class citizens.
00:06:18 <shachaf> My status line implementation is so fancy.
00:06:29 <zzo38> What stuff did you include in the status line?
00:06:57 <shachaf> Chet it out: http://slbkbs.org/tmp/statustext.c
00:07:55 <shachaf> It has things like brightness and volume and CLIPBOARD/PRIMARY size.
00:08:15 <zzo38> (In my computer I put four things: mail counter (checks only if the lease on the mailbox file is broken), system load average (for one minute), RAM usage, date, time (including seconds).
00:08:17 <shachaf> And it listens for updates to all those things so it updates instantly instead of waiting up to a second.
00:09:13 <int-e> // It's probably not a good reason.
00:09:49 <shachaf> I think eventually I'll replace the status bar with my own program so I can draw little graphs and fancy things.
00:10:07 <shachaf> int-e: I'm not going to look up what the reason is, but I maintain high confidence in my statement.
00:12:04 <int-e> I would extend the statement to the existence of pulseaudio :)
00:12:29 <int-e> (but it has stopped causing me trouble some years ago)
00:12:31 <shachaf> I use the libasound API but it ends up going through pulseaudio.
00:13:08 <int-e> I used to have funny effects like a 1s audio delay when playing video... which went away when pulseaudio wasn't running.
00:13:29 <shachaf> Linux audio is such a terrible mess.
00:13:44 <shachaf> Especially when you want to do anything close to real-time audio.
00:14:23 <int-e> My current problem is an inexplicable 1s fade-in when starting a new audio stream. Could be worse...
00:15:22 <shachaf> This statustext program is so good.
00:15:35 <shachaf> You can run it under strace and it does a fairly reasonable number of system calls for every run.
00:16:14 <zzo38> You also use many non-ASCII characters, and I instead am using only ASCII characters.
00:16:50 <shachaf> They're not in ASCII but they are in Unicode.
00:17:12 <zzo38> shachaf: Well, as long as the characters are in the font you are using, then it is OK, I suppose.
00:17:55 <shachaf> Maybe CP437 would be better.
00:18:11 <shachaf> I mean, clearly the right thing would be to just use bitmaps.
00:18:36 <shachaf> It's also ridiculous that I'm drawing a volume meter using characters like ▋.
00:18:46 <shachaf> What an absurdly complicated way of drawing a rectangle.
00:18:57 <int-e> ░▒▓█ are in unicode :)
00:19:13 <zzo38> Also I have not had problems with audio on Linux, except that sometimes if mednafen is started without waiting too long after audio stops playing, then sometimes the audio doesn't work in mednafen.
00:19:28 <shachaf> The characters I'm using give one-eighth precision.
00:19:41 <zzo38> int-e: Yes, and also PC character set (Unicode includes all of the characters in PC character set, but conversion of some of them to Unicode can be ambiguous sometimes).
00:19:54 <int-e> shachaf: no, I just mused about which CP437 characters I miss the most.
00:20:22 <shachaf> Hmm, I'm doing a few system calls more than necessary.
00:20:25 <int-e> And those grayscale characters are near the top of my list.
00:20:39 <int-e> codes 176, 177, and 178, IIRC.
00:20:49 <shachaf> Unfortunately Xlib is doing three identical recvmsg() calls on the same socket that all return EAGAIN before it gives up.
00:21:01 <zzo38> int-e: Yes, those are the PC character codes for them; also 219 for the full block
00:21:28 <shachaf> Do you like the new io_uring system call interface in Linux?
00:21:51 <int-e> The fact that I remember despite not having used them in ... oh ... 15-20 years, says something.
00:21:52 <kmc> what is that
00:22:24 <shachaf> it does asynchronous I/O with a ring buffer interface to the kernel
00:22:35 <shachaf> you can do I/O with zero context switches
00:22:55 <zzo38> I designed UTCS/UTCE (differently than before) to specifically be a character set for use with fix pitch, without needing large tables to figure out widths and how to render stuff and so on; you can just render fixed size bitmaps next to each other and it will work. Also, they include stuff found in many fix pitch character sets of many computers and terminals, some of which is in Unicode and some isn't.
00:23:11 <kmc> but presumably if you run out of stuff to do you would do a system call and sleep?
00:23:33 <shachaf> Right, you can always wait for responses.
00:23:46 <kmc> sounds pretty dope
00:23:50 <shachaf> But even then it's so much better than the existing interfaces.
00:24:03 <shachaf> Well, there were no realistic interfaces for asynchronous I/O in Linux.
00:24:37 <kmc> do you mean asynchronous in a sense different from a epoll() loop?
00:25:13 <shachaf> Also if you don't feed the kernel async requests fast enough it'll stop polling on your request buffer until you wake it up again. Which is fine.
00:25:33 <arseniiv> what a strange bug when [_][][]? executes silently and [__+][][]? fails to pop an argument for some reason, but [___+][][]? again is good and leaves 2 _ 0 on the stack
00:25:47 <shachaf> The io_uring person was suggesting that they could implement support for arbitrary system calls using the same interface.
00:25:54 <shachaf> wouldn't that be the tgest
00:29:43 <shachaf> I should probably upgrade this program to not poll battery/filesystem/whatever on every run.
00:30:22 <shachaf> Instead it should do them on their own schedule like everything else, using a timer or something.
00:31:05 <shachaf> This'll be important (?) if I make it an X program that redraws at 60fps or something. Right now it's not very important.
00:32:54 <int-e> arseniiv: I have some terrible bugs in that area :)
00:33:40 <int-e> arseniiv: [_][][]? is supposed to loop, right?
00:34:35 <arseniiv> it should evaluate [_], take _, see that it’s false and go evaluating “else” part, [], but this doesn’t do anything and it’s all done
00:35:47 <int-e> huh, I interpreted the condition wrong... let me check the old description
00:36:16 <arseniiv> contrary, [__+][][]? should evaluate [__+], find a nonfalse __+ on the stack, then go loop… oh it seems I’m lucky it doesn’t work as expected, it would give an infinite loop
00:36:18 <int-e> hmm, it had a "≠" there, must have misread.
00:36:29 <arseniiv> and I thought it just would loop once
00:36:57 <arseniiv> now I remember that of course that should be an infinite loop
00:37:23 <arseniiv> we can do if with a little more trickery
00:38:18 <int-e> I'd imagine something like [^][][]? with a bit of setup code.
00:38:41 <int-e> but it's a bit tricky
00:38:46 <arseniiv> hm, yes, we simply do: <cond> [][<then-branch> _][<else-branch>]?
00:39:19 <int-e> [][<then-branch>_][<else-branch>_]?.
00:39:21 <arseniiv> ^ is one of intended use-cases also
00:39:43 <arseniiv> we could walk here and there with this loop
00:40:09 <arseniiv> and stop when we had trespassed
00:41:06 <int-e> Ah, sorry, your code is correct. I missed what the _ really did.
00:41:38 <shachaf> zzo38: Do you like this C program?
00:41:44 <shachaf> I like the macros Case and Default. And Struct.
00:42:20 <int-e> *Main> run "[Hello, world!\n];" []
00:42:32 <int-e> arseniiv: ^^ look at all this undefined behavior :)
00:43:10 <arseniiv> it’s too extended an understanding of [...] syntax
00:43:46 <int-e> It's allowed by the specification, I think.
00:44:07 <zzo38> shachaf: I noticed that, and I do not have another comment now
00:44:34 <shachaf> I wrote a fancy abstraction layer for X11 clients.
00:44:50 <arseniiv> int-e: I have fixed a sequence of typos of various dumbness but it seems I need to continue that after I’ll take some rest
00:44:50 <shachaf> It supports a lot of fancy things. It's great.
00:45:31 <zzo38> Why do I sometimes get error messages about the CDROM is not ready, even though I am not using the CDROM?
00:45:31 <int-e> arseniiv: But it's a particular implementation choice, of course. a) programs are represented by strings are represented by bit strings of length 8x<length of string>. b) ; actually accepts any bit string with length divisible by 8.
00:46:42 <arseniiv> <int-e> It's allowed by the specification, I think. => heresy :D okay it’s compliant
00:46:56 <int-e> arseniiv: So the program a) relies on a particular choice of the [] encoding, and b) relies on undefined behvior of ;. So the program is definitely not compliant.
00:48:13 <arseniiv> int-e: I represent them almost this same way, though I do that only if it’s necessary, and in other cases these blocks are “compiled” lists of opcodes (with and without arguments)
00:49:10 <int-e> arseniiv: which indicates another level of complications
00:49:43 <arseniiv> I thought 'H', 'e' etc. print themselves, though it would be a stretch for ' '
00:49:48 <int-e> arseniiv: oh, yeah without the ; that behavior would be wierd.
00:50:41 <int-e> (or, at least, more weird)
00:52:32 <arseniiv> initially I represented blocks as simple strings but then I was ambushed by parsing interleaving with execution and I then decided it would be better to differentiate, and I couldn’t find a simple enough representation of compiled code… then there were bugs related to a forgotten custom string conversion function in the block→context converter… oh
00:58:38 -!- arseniiv has quit (Ping timeout: 272 seconds).
01:00:55 -!- hakatashi1 has quit (Remote host closed the connection).
01:01:10 -!- hakatashi has joined.
01:21:55 <zzo38> I thought to make up set of Magic: the Gathering cards, such as "Ziveruskex and Strixan" set of cards, but clearly a lot more than two cards should be needed, and also other stuff. Such as, if you want to draft this set, then rarities should be assigned, too. If some cards are used in multiple sets, the rarities may be difference per set in case that helps for drafting purpose.
01:35:52 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
01:36:55 -!- Lord_of_Life has joined.
01:41:01 -!- oerjan has joined.
01:42:58 <oerjan> schlock mercenary is fun, but almost every attempt by the author to make connections to real science makes me cringe. ORBITS DON'T WORK THAT WAY. (I think.)
01:44:33 <zzo38> Will you notify them about that?
01:45:14 <oerjan> it's way too late, he's just started the last book in a series of 20.
01:46:29 <oerjan> i don't think people who understand physics are his audience, anyway.
01:47:47 <oerjan> and others probably have griped about his science before.
01:53:18 -!- xkapastel has quit (Quit: Connection closed for inactivity).
02:08:45 -!- lambdabot has quit (Quit: totally pointless restart).
02:11:14 -!- lambdabot has joined.
02:25:14 -!- salpynx has joined.
02:38:23 <zzo38> See if I wrote something wrong in story I wrote. If it is wrong, I hope to correct it please.
03:04:51 <salpynx> re. Punctree, can I add some related links? It took me a while to click that zippers were the main point, not simply binary trees, and that "zipper" was not not being used in a loose informal sense.
03:05:30 <salpynx> https://wiki.haskell.org/Zipper seems to cover the basics with regards to binary trees. I _think_ that's how Punctree is using them
03:06:08 <salpynx> https://www.st.cs.uni-saarland.de/edu/seminare/2005/advanced-fp/docs/huet-zipper.pdf appears to be the origin paper for the zipper structure
03:10:43 <salpynx> I now see why (2 _ _) isn't so sensible. The new 'context' term is better. It makes it clearer why there is only going to be one hole. I originally thought a hole was a way to construct a non-perfect binary tree. I now see that it has a special meaning wrt zippers
03:13:59 <salpynx> I sometimes misunderstand things. I thought for months that zz038 was working on a novel network time protocol (NTP) server, until the cognitive dissonance got too much and it suddenly struck me what NNTP actually was
03:19:42 <zzo38> I wrote a NNTP server software already, and now I am working on the client software.
03:20:27 <zzo38> salpynx: I think if the links is useful then it could be added; if it is found to be wrong, someone will remove it
03:28:10 <zzo38> (You do not have to use this server and client software together; you can use any server software and any client software.)
03:36:03 <zzo38> Do you like my new NNTP software?
03:37:10 <esowiki> [[EXAMPL]] M https://esolangs.org/w/index.php?diff=63862&oldid=59649 * A * (-12) No quotes anymore
03:38:47 <esowiki> [[EXAMPL]] M https://esolangs.org/w/index.php?diff=63863&oldid=63862 * A * (+49)
03:42:22 <esowiki> [[Special:Log/delete]] delete * Oerjan * deleted "[[ThisIsTheFoxe]]": Author request: content was: "{{Db-empty}} {{Db-g7}}, {{Db-author}}, {{Db-blanked}}, {{Db-self}}", and the only contributor was "[[Special:Contributions/ThisIsTheFoxe|ThisIsTheFoxe]]" ([[User talk:ThisIsTheFoxe|talk]])
03:45:44 <esowiki> [[EXAMPL]] M https://esolangs.org/w/index.php?diff=63864&oldid=63863 * A * (+95) /* Syntax */
03:48:59 <esowiki> [[EXAMPL]] M https://esolangs.org/w/index.php?diff=63865&oldid=63864 * A * (+376) /* If statement */
03:59:14 <esowiki> [[+-]] https://esolangs.org/w/index.php?diff=63866&oldid=59297 * Voltage2007 * (+1530)
04:13:17 <shachaf> int-e: Did you improve @pl?
04:19:08 -!- ^ has changed nick to uplime.
04:25:49 <esowiki> [[+-]] M https://esolangs.org/w/index.php?diff=63867&oldid=63866 * Voltage2007 * (+158)
04:27:29 -!- sprocklem has joined.
04:27:38 -!- FreeFull has quit.
04:31:46 <esowiki> [[User:Voltage2007]] N https://esolangs.org/w/index.php?oldid=63868 * Voltage2007 * (+1) Created page with "h"
04:58:50 <esowiki> [[Fetlang]] M https://esolangs.org/w/index.php?diff=63869&oldid=53186 * Voltage2007 * (+91)
05:08:47 -!- Cale has joined.
05:54:13 <esowiki> [[Punctree]] https://esolangs.org/w/index.php?diff=63870&oldid=63857 * Salpynx * (+312) /* Related links */ some introductory reading on 'zippers'
06:00:55 <salpynx> I found those links helpful. The Haskell page even has diagrams.
06:04:08 <salpynx> I think Arseniiv asked here about adding math formatting to the wiki a while ago. I'd make use of that. Some sort of TeX like formatting. MathJax looks nice, with in browser HTML and CSS formatting of formulas.
06:05:23 <salpynx> Some of the other mediawiki plugins look to be a pain to install. Is this a wiki feature request that is likely to be fulfilled?
06:08:43 -!- mniip has quit (Ping timeout: 615 seconds).
06:09:01 -!- mniip has joined.
06:09:08 -!- nfd has quit (Read error: Connection reset by peer).
06:20:46 <esowiki> [[If(j)invert()if(l)change()if(q)input()if(t)output(x);]] https://esolangs.org/w/index.php?diff=63871&oldid=57663 * Voltage2007 * (+2100)
06:21:29 <esowiki> [[If(j)invert()if(l)change()if(q)input()if(t)output(x);]] M https://esolangs.org/w/index.php?diff=63872&oldid=63871 * Voltage2007 * (+20) link fix
06:37:18 -!- nfd9001 has joined.
07:01:20 -!- atslash has joined.
07:27:27 <esowiki> [[If(j)invert()if(l)change()if(q)input()if(t)output(x);]] https://esolangs.org/w/index.php?diff=63873&oldid=63872 * Voltage2007 * (+800)
07:35:08 <myname> what an ugly language name
07:37:45 -!- oerjan has quit (Quit: Nite).
08:14:34 <salpynx> zz038: Is your NNTP server live and public somewhere? NNTP via telnet looks like it would be workable enough for low volume messages.
08:19:11 -!- b_jonas has joined.
08:20:42 <b_jonas> Today I found a spider in my bathroom. Two of its legs kept moving after I severed them from the body of the spider. That seems like relevant information that should be mentioned in the description of spiders in the monster manual.
08:30:02 <b_jonas> zzo38: while the computer is powered off, try to remove both the data cable and the power cable from the CD drive and the other end of the power cable from the motherboard, then plug them in again. maybe you were getting an error because the connection to the CD drive sometimes broke. luckily these modern SATA motherboards are somewhat tolerant about that, so they don't just fry like old ones sometimes
08:31:36 <b_jonas> oerjan: people have complained about the science in the Order of the Stick too, but it rarely comes up
08:32:10 <salpynx> zzo38: I am using rfc-1436 and telnet to search your site for NNTP information, I imagine it's like half the experience. I can read, but I can't post. Huh, rfc3977 (NNTP update) was written in 2006
08:38:15 <salpynx> ok, gopher is fun, and nc is better for accessing it
08:47:03 <b_jonas> yep. though zzo38 is also running a http server that lets you access most of the files on gopher, except there's at least three root directories that you have to know about ("/textfiles", "/mtg", "/sql" or something)
08:49:59 -!- b_jonas has quit (Quit: leaving).
09:09:57 -!- atslash has quit (Read error: Connection reset by peer).
09:10:15 -!- atslash has joined.
09:16:41 -!- kmc has quit (Quit: Lost terminal).
09:36:50 -!- AnotherTest has joined.
09:37:29 <int-e> shachaf: I did something in @unpl, and discovered(?) a bug in @pl
09:37:53 <int-e> shachaf: which I might fix if I figure it out, but mostly I won't touch @pl
09:43:38 <int-e> @pl \x -> \x y -> x
09:43:53 <int-e> @pl \z -> \x y -> x
09:45:07 <int-e> all lambdabot (and lambdabot itself) plugins are of the highest code quality
10:22:06 <esowiki> [[Pi]] M https://esolangs.org/w/index.php?diff=63874&oldid=39793 * ThisIsTheFoxe * (+1) /* Brainfuck converter */ http link doesn't work (anymore?)
10:22:31 <esowiki> [[SLOS]] N https://esolangs.org/w/index.php?oldid=63875 * A * (+623) Created page with "[[SLOS]] stands for Scripting Language that's Outstandingly Simple; it tries to create a scripting language(not an interpreted language) that is very esoterically simple. It i..."
10:33:20 <esowiki> [[SLOS]] M https://esolangs.org/w/index.php?diff=63876&oldid=63875 * A * (+799) /* Tools (45 points) */
10:48:09 <esowiki> [[SLOS]] https://esolangs.org/w/index.php?diff=63877&oldid=63876 * A * (-438) /* Program lengths by language (aka Example programs) */ SLOS is doing terribly; I will reset the example programs.
10:52:14 <esowiki> [[SLOS]] M https://esolangs.org/w/index.php?diff=63878&oldid=63877 * A * (+225) /* Program lengths by language (aka Example programs) */
10:53:26 -!- user24 has joined.
11:02:10 <esowiki> [[SLOS]] https://esolangs.org/w/index.php?diff=63879&oldid=63878 * A * (+549) /* Program lengths by language (aka Example programs) */
11:04:08 <esowiki> [[SLOS]] M https://esolangs.org/w/index.php?diff=63880&oldid=63879 * A * (+32) /* Test file readable (11 bytes) */
11:07:50 <esowiki> [[SLOS]] M https://esolangs.org/w/index.php?diff=63881&oldid=63880 * A * (+258) /* Program lengths by language (aka Example programs) */
11:10:27 <salpynx> zzo38: I discovered sqlnetnews and made a test post. I like.
11:17:55 -!- user24 has quit (Quit: Leaving).
11:25:21 -!- john_metcalf has quit (Ping timeout: 248 seconds).
11:27:54 -!- salpynx has quit (Remote host closed the connection).
11:36:05 <int-e> "please verify your device" ... please stop suggesting that nobody else is using temporary cookies that don't survive the end of the session :(
12:04:02 <int-e> shachaf: fun. \x x y -> y is "alpha-renamed" to \$0 $1 $1 -> $1. Which is not wrong, of course...
12:04:19 <int-e> But probably not intended.
12:05:47 <int-e> Okay, this is just embarrassing. let v' = "$" ++ show (M.size fm) ... sure... that must be the size of the context?
12:16:01 -!- arseniiv has joined.
12:24:54 <int-e> shachaf: there, fixed: https://github.com/lambdabot/lambdabot/commit/eebe60ac0700dcfbd34ea4870fa3286e7fb4a58b
12:25:15 <int-e> (but I won't recompile lambdabot for just that... at least not yet)
12:50:42 -!- wob_jonas has joined.
12:52:20 <wob_jonas> int-e: not recompiling lambdabot because you want to fix other bugs in @pl, such as https://esolangs.org/logs/2019-02-02.html#l5d ?
12:54:40 <wob_jonas> nah, you said that was hard to fix
12:56:33 <wob_jonas> I should stop suggesting such things before you just apply a Cisco style "fix" on it
13:29:22 -!- arseniiv has quit (Ping timeout: 246 seconds).
13:34:38 -!- Lord_of_Life_ has joined.
13:36:30 -!- arseniiv has joined.
13:37:08 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
13:37:14 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
14:00:31 -!- atslash has quit (Ping timeout: 246 seconds).
14:01:25 -!- atslash has joined.
14:05:20 -!- MDude has joined.
14:05:44 <zzo38> salpynx: There is a timeout, although I should fix it so that it will reset the timeout if valid input has been received.
14:36:31 <zzo38> OK, I fixed that now
15:09:34 <esowiki> [[Garbage]] https://esolangs.org/w/index.php?diff=63882&oldid=63710 * A * (-18) /* Implementation */ Shorter implementation
15:35:54 -!- wob_jonas has quit (Remote host closed the connection).
15:45:03 -!- atslash has quit (Ping timeout: 245 seconds).
15:45:23 -!- atslash has joined.
16:13:22 -!- atslash has quit (Quit: This computer has gone to sleep).
16:29:48 -!- b_jonas has joined.
16:33:07 -!- b_jonas has quit (Client Quit).
16:33:24 -!- b_jonas has joined.
17:13:08 -!- kmc has joined.
17:14:43 -!- Phantom_Hoover has joined.
18:34:32 -!- ineiros has joined.
18:40:08 -!- atslash has joined.
19:00:48 <esowiki> [[Special:Log/newusers]] create * Fuckerturd * New user account
19:10:10 -!- FreeFull has joined.
19:18:32 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=63883&oldid=63843 * Fuckerturd * (+176) /* Introductions */
19:27:55 -!- adu has quit (Quit: adu).
19:52:49 -!- john_metcalf has joined.
20:00:50 -!- adu has joined.
20:05:59 -!- adu has quit (Remote host closed the connection).
20:06:27 -!- adu has joined.
20:15:00 <b_jonas> arseniiv: I see you've improved the description of the loop builtin in the holed tree language
20:19:02 <int-e> execution of the loop continues until it falls into a hole
20:30:00 <b_jonas> arseniiv: although I don't understand why you added a while loop primitive rather than a simple conditional primitive
20:30:22 <esowiki> [[DerpText]] N https://esolangs.org/w/index.php?oldid=63884 * Fuckerturd * (+2106) Created page with "DerpText, not to be confused with [[Derpcode|similarly]] [[Derplang|named]] languages, is a language made by [[User:Fuckerturd]]. DERP. == Syntax == Commands have one or more..."
20:32:02 <arseniiv> b_jonas: one ring to rule them all
20:32:49 <b_jonas> arseniiv: sure, but why a complicated ring?
20:33:10 <b_jonas> this way, writing a simple conditional is a bit complicated
20:35:18 <arseniiv> b_jonas: I don’t know what I was thinking at the time, but maybe it’s a vestige of BF
20:36:15 <b_jonas> what contributes to this is that the two test primitives are built in a somewhat ugly way too, so there's no easy way that I can see to use them to make a value conditional
20:36:19 <arseniiv> though a simple conditional is not so complicated: <cond>[][<then> _][<else>]?
20:37:02 -!- xkapastel has joined.
20:37:14 <b_jonas> arseniiv: hmm yes, that might work
20:39:40 <b_jonas> yeah, you can probably use the % # @ = tests to write conditionals
20:39:50 <arseniiv> unfortunately, I didn’t fix any interpreter bugs today, I haven’t yet worked on it. One of these bugs is with forever loop [__+][][]? — for some reason it tries to pop an element from an empty stack, but I’m yet to find out at what step exactly
20:39:52 <b_jonas> it's just the < primitive that works a bit odd
20:40:32 <arseniiv> b_jonas: do you think it really needs a rework?
20:41:19 <arseniiv> maybe it can be argued that the current form has some pros
20:41:42 <b_jonas> arseniiv: dunno. I still find it confusing how you introduce a lot of tricky notation
20:41:49 <b_jonas> and then reference them all in the commands list
20:42:11 <int-e> arseniiv: No clue! Works in my unpublished (and unfinished) interpreter.
20:42:13 <arseniiv> I like it when a projection function works like T → Maybe SubT, < is exactly thus
20:42:14 <b_jonas> but I think you're right about the block conditional
20:42:18 <b_jonas> it is simpler than I thought
20:42:53 <arseniiv> b_jonas: I still find it confusing how you introduce a lot of tricky notation> I could name all that with words, would it make a difference?
20:43:01 <int-e> arseniiv: as far as I understand things, it really should not pop from an empty stack, so that must be a bug in the interpreter :)
20:43:20 <b_jonas> arseniiv: I'm thinking more like introduce fewer, and just use a definition directly in the statement list
20:43:46 <b_jonas> like, introduce the substitution middle circle, but write most of everything out in the statement list. possibly in an alternate list or something.
20:44:19 <arseniiv> <int-e> arseniiv: as far as I understand things, it really should not pop from an empty stack, so that must be a bug in the interpreter :) => yeah, I agree, or we’re both mistaken
20:44:58 <int-e> arseniiv: you are using your own interpreter, right?
20:45:04 <b_jonas> It's also confusing how you use "τ→" and "π→" as infix operators. Use a subscript or overscript or something.
20:45:31 <b_jonas> especially as you also use "→" for something totally different
20:46:05 <b_jonas> you use "→" for something different in the "Runtime" section
20:46:33 <b_jonas> you should probably use some completely different notation instead of "τ→" and "π→"
20:47:52 <arseniiv> <b_jonas> like, introduce the substitution middle circle, but write most of everything out in the statement list. possibly in an alternate list or something. => maaaybe. Seems like a lot of work. Initially I reasoned that pure mathematical definitions placed on their own could describe semantics better. E. g. actual commands use _ as a return when the operation is undefined, and that specific _ is not something intrinsic to the operation itself
20:48:30 <b_jonas> I'm also a bit unsure about "_" as the notation for hole
20:49:08 <arseniiv> <b_jonas> you should probably use some completely different notation instead of "τ→" and "π→" => yeah, these are probably not the best notation
20:49:33 <arseniiv> I seem to have seen it somewhere, even
20:49:57 <arseniiv> <int-e> arseniiv: you are using your own interpreter, right? => yeah. Sorry, missed that
20:51:01 <b_jonas> the "_" is confusing because some languages like Haskell and Rust and Prolog use it to mean (sort of) an unnamed variable in a pattern match, and that notation seems to be well-known, so where you're writing matches like "t′ = u′ ∘ (2 _ u)" it gets confusing, you have to remember that that's not what you mean here.
20:51:11 <arseniiv> my interpreter also has some debug commands, pretty useful to find out what goes wrong without calling separate functions of the module in REPL
20:51:38 <b_jonas> what interpreter? interpreter for what?
20:52:55 <arseniiv> b_jonas: though, I positively see the rationale against _, I’m more interested in possible replacements. *?
20:53:35 <arseniiv> <b_jonas> what interpreter? interpreter for what? => Punctree interpreter I’m writing
20:54:43 <b_jonas> definitely not "*". you are already using right arrow as an infix, small circle as both an infix and a suffix, and "2" as a prefix with two arguments. if you started to use "*", that would look like it might be an infix too. parsing your formulas to a tree is already mentally hard enough.
20:54:47 <int-e> with unicode I might use □
20:55:38 <int-e> arseniiv: which is a common notation for holes... in term rewriting
20:56:02 <arseniiv> b_jonas: also maybe I should take 2 away; in my interpreter, I show trees and contexts as 0, _ and (<L><R>)
20:56:12 <b_jonas> int-e: isn't that still the _other_ kind of hole, the one of which you can have any number in a tree, just like "_"?
20:56:14 <arseniiv> this way it’s both compact and not-unreadable
20:56:24 <int-e> (I'd hope this extends to lambda calculus and from there to all the type systems etc, but I'm not sure.)
20:56:36 <b_jonas> arseniiv: eww. add a colon or something.
20:56:43 <int-e> b_jonas: "we" don't distinguish between those two.
20:56:46 <arseniiv> int-e: ah, I thought it’s a character replacement, not an actual square
20:57:20 <b_jonas> or better still, angle brackets and a colon
20:57:34 <int-e> b_jonas: When both multi-hole contexts and contexts are around, a context is a multi-hole context with exactly one hole.
20:57:37 <b_jonas> and I mean the flat angle brackets, not less than signs
20:57:55 <arseniiv> I don’t want a linear length increase of terms representing code blocks, they are huge
20:58:35 <b_jonas> what? this is for the documentation, it has nothing to do with how an interpreter or anything actually represents them
20:59:16 <arseniiv> though if one is to change 0 to an empty string, something like ⟨_:⟨:⟩⟩ can be shorter
20:59:41 <b_jonas> unless you're trying to make an esoteric documentation, but I don't think that's your goal
21:00:00 <arseniiv> <b_jonas> what? this is for the documentation, it has nothing to do with how an interpreter or anything actually represents them => of course, but sometimes I want to print them for debugging reasons
21:00:49 <arseniiv> now I’ve forgot if I agreed to some changes today, and to what ones
21:01:00 <b_jonas> arseniiv: then keep the colon but drop the parenthesis except when the term is on the left of a colon, when writing for debugging, then the common case of a list will be compact
21:01:20 <b_jonas> more compact still than brackets around every pair
21:02:02 <b_jonas> or use (a0,a1,a2,a3:t) for a list, meaning (a0:(a2:(a3:t)))
21:02:12 <b_jonas> or use (a0,a1,a2,a3:t) for a list, meaning (a0:(a1:(a2:(a3:t))))
21:02:23 <arseniiv> I think maybe I should write all that somewhere
21:02:24 <b_jonas> and (a0,a1,a2,a3) meaning (a0:(a1:(a2:(a3:0))))
21:02:56 <b_jonas> but that only if you actually use lists, because the language doesn't seem to be specifically primed for that
21:04:07 <arseniiv> though cons list manipulation would arise sooner or later in the code
21:04:24 <arseniiv> if someone would write something big enough
21:04:53 <b_jonas> you can stick to just colons with parenthesis if you want, Haskell style
21:05:12 <b_jonas> where (a0:a1:a2:a3:t) means (a0:(a1:(a2:(a3:t))))
21:05:27 -!- AnotherTest has quit (Ping timeout: 264 seconds).
21:11:48 -!- atslash has quit (Quit: Leaving).
21:25:27 -!- john_metcalf has quit (Ping timeout: 245 seconds).
21:34:46 <b_jonas> By the way, it's quite creative how the runners managed to get Super Metroid back to GDQ this time (for Summer GDQ 2019) after that the game wasn't featured because they ran out of popular categories to show.
22:06:53 -!- uplime has changed nick to ^.
22:18:38 -!- nfd9001 has quit (Read error: Connection reset by peer).
22:21:20 -!- nfd9001 has joined.
22:26:58 -!- b_jonas has quit (Quit: leaving).
22:27:52 -!- salpynx has joined.
23:01:13 <int-e> That's not a new question, I think.
23:01:39 <shachaf> It's the old question, "Do you like this?", in disguise.
23:01:55 <shachaf> The disguise is that "this" has been substituted with "SAT solvers".
23:02:22 <int-e> shachaf: I mean you've asked this precise question before.
23:03:02 <shachaf> Did you like them at the time?
23:09:20 <shachaf> Someone suggested that dancing links is a good algorithm for SAT.
23:09:24 <int-e> https://esolangs.org/logs/2019-05.html#lJjc
23:09:38 <shachaf> I'm a bit skeptical of that claim but I wonder how well it works in practice.
23:09:41 <int-e> Dancing links... is missing the point.
23:10:11 <int-e> CDCL is where SAT solvers get their power from, and dancing links does nothing even remotely resembling that.
23:10:20 <shachaf> Hmm, I usually feel distress when I read chat logs of myself. So I won't click that link.
23:10:29 <int-e> There's a dancing links elements in the two watched literal optimization though.
23:11:19 <shachaf> I like the 2-watched-literal scheme and particularly how it doesn't need to be reset when backtracking.
23:11:38 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
23:11:50 <int-e> Well when you set a literal to true you set the clauses on its watch list aside.
23:12:18 <int-e> Hmm, "put aside" sounds more correct.
23:12:27 <int-e> But I guess both work.
23:14:27 <shachaf> Also, I found out that apparently parallelizing SAT solvers is very hard.
23:15:13 <shachaf> I expected it to be easy and I still don't really understand why it isn't.
23:17:00 <int-e> Hmm. It's tricky to estimate the size of a subtask in advance, and it's tricky to communicate all the learned clauses to other workers. Oh and single-threaded SAT solver do a lot of restarts...
23:17:49 -!- zzo38 has quit (Remote host closed the connection).
23:18:10 <int-e> Naive parallelization is easy (just give each thread a copy of the clause set and its own prefix to exhaustively search.) Work balancing and actually obtaining a speedup is... oh I don't know whether it's hard but I can see a lot of potential obstacles.
23:18:46 <shachaf> I'm just thinking of naive parallelization like that. Say to two threads.
23:19:26 <shachaf> Even if one thread terminates early fairly often, once it gets working on a prefix that doesn't terminate early, it should be able to proceed mostly independently, shouldn't it?
23:19:51 <int-e> It gets worse because actually SAT solvers may simplify the clause set as well. That's another thing that doesn't parallelize well and needs communication to benefit all workers.
23:19:59 <shachaf> Of course all sorts of tricky things are going on like CDCL, so the clause list isn't constant.
23:20:17 <int-e> shachaf: if you're unlucky that prefix took 99% of the single-threaded SAT solver time.
23:20:33 <shachaf> But I imagine you can have the threads synchronize once in a while to get an up-to-date clause list or something.
23:20:56 <shachaf> int-e: Sure, but if the second thread terminates early, it can synchronize with the first thread and get a new prefix.
23:21:09 <int-e> I have never looked at what the challenges really are. There should be half a dozen papers on parallelizing SAT solvers.
23:21:18 <shachaf> I imagine that you only need to do so many synchronizations before they both have nontrivial prefixes.
23:22:02 <shachaf> I should probably read those papers, but why do that when I can just make up naive algorithms?
23:23:00 <int-e> You could just use an existing SAT solver :P
23:23:09 <shachaf> I should probably write a SAT solver so I learn how all these things work.
23:24:27 <arseniiv> hopefully SAT solvers are useful for typechecking(?)
23:25:35 <shachaf> I have the feeling that if your type system requires a SAT solver, it's too complicated.
23:28:17 <HackEso> /srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: t̀ype: not found
23:28:23 -!- zzo38 has joined.
23:29:38 <zzo38> Somehow, I got a missing mouse cursor. I tried restarting X, but then I just got a blank screen; the text mode worked though, even though X doesn't. But I rebooted the computer and now it works OK.
23:31:56 <zzo38> (The missing mouse cursor is a problem I have seen on Windows as well; it does not seem to be specific to Linux.)
23:32:08 -!- arseniiv has quit (Ping timeout: 245 seconds).
23:32:26 <shachaf> Maybe your mouse cursor was on another computer.
23:32:31 <shachaf> Or perhaps it slid off the screen onto your desk.
23:36:42 <salpynx> `nc zzo38computer.org 70 <<< textfile/stupid/computers/sound | tail -n5
23:36:43 <HackEso> /srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: nc: not found
23:37:33 <salpynx> HackEso: that's probably for the best
23:47:36 <zzo38> I think HackEso cannot access arbitrary internet stuff
23:48:16 <zzo38> (Also, if you want to use the parsing with the shell, then you must use a `` or ``` prefix rather than only ` and the command)
23:53:24 <salpynx> that file was literally the last thing I gophered from your site last night before moving to nntp, and it relates to mouse cursors on another computer, just as shachaf joked. Funny coincidence.
23:58:20 <salpynx> zzo38: thanks for fixing the sqlnetnews timeout issue so promptly, it booted me a few times while I was exploring.
23:59:31 <salpynx> I love that HELP refers you to the full RFC 3977, all the details you could possibly require are there :)
00:00:27 <zzo38> Yes; the old RFC isn't Y2K compliant, but RFC 3977 is Y2K compliant, and that is what is implemented.
00:05:40 <zzo38> There are a few extensions though, such as the POSTQUIT command. It is meant for in case you prepare a POSTQUIT file, with POSTQUIT on the first line and . on the last line, and then you can use a command such as "nc zzo38computer.org 119 < article" to post it. In order to avoid duplicate postings, a message ID can be included; it will reject it if it already has a message with the same message ID.
00:06:10 <zzo38> POSTQUIT is like POST, except that after posting successfully or in case of any error, it closes the connection immediately, so that it does not try to interpret part of your message as commands.
00:10:33 <salpynx> that is a nice simple way of pre-composing messages and posting without special tools.
00:13:13 <zzo38> I am playing a ZZT game called Faux Amis. It is good. (I also made a ZZT game, called XYZABCDE.ZZT. I think the person who made this ZZT game intends to review mine in future too.)
00:36:51 <salpynx> I had started playing XYZABCDE.ZZT, it was funny, but to complete properly required more time and strategy than I had at the time. I recently got Baba is You (late to the party). I thought the overloading of 'is' would annoy me, but it is a fun mechanic.
00:46:00 <HackEso> Lies are even easier than monoids. They form groups, known as Lie groups.
00:46:07 <HackEso> Lie groups are groups that try being too smooth for their own good.
00:47:12 <zzo38> I don't have the game Baba Is You, but I have seen some screenshots, and it look like interesting idea. Also the book Godel,Escher,Bach in one part, they suggest a chess variant where the rules are defined by the configuration of pieces on the board, so I thought of that too.
01:21:04 -!- oerjan has joined.
01:23:29 <kmc> oh really?
01:23:32 <kmc> i don't remember that part
01:23:34 <kmc> it does sound similar
01:24:48 <oerjan> <b_jonas> oerjan: people have complained about the science in the Order of the Stick too, but it rarely comes up <-- that's fantasy, so i don't _expect_ it to follow science, while Schlock Mercenary sometimes makes a point of referring to real science and gets it wrong
01:25:51 <oerjan> (also i want to add SEASONS DON'T WORK THAT WAY EITHER to yesterday's outburst, i didn't notice the part where they conflated "summer" with "close to sun" until later
01:26:33 <oerjan> now to check if it got worse today :P
01:27:40 <oerjan> ok maybe it got a bit better
01:31:58 <oerjan> (note to spiders: stay away from b_jonas)
01:37:22 -!- Lord_of_Life has quit (Ping timeout: 246 seconds).
01:38:03 -!- Lord_of_Life has joined.
01:45:06 <oerjan> pesky non-replacement characters
01:49:20 <zzo38> Even of Order of the Stick and Schlock Mercenary don't, I do intend to have better science in the story I wrote (with the recording of stuff in the GURPS game) (except for the magic spells, of course, which are not so scientific)
01:51:57 <zzo38> And if they try to refer to real science but do it wrong, well, that is even worse.
01:54:48 <zzo38> And, there is stuff such as: https://allthetropes.org/wiki/Artistic_License_Indexes
02:56:43 -!- xkapastel has quit (Quit: Connection closed for inactivity).
03:11:24 -!- FreeFull has quit.
03:14:25 <esowiki> [[Special:Log/newusers]] create * Catarang * New user account
03:22:10 <esowiki> [[DerpScrp]] N https://esolangs.org/w/index.php?oldid=63885 * A * (+537) Created page with "[[DerpScrp]], not to be confused with [[Derplang|similarly]] [[Derpcode|named]] languages, is an [[esoteric programming language]] created in 2019 influenced by the syntax of..."
03:29:29 <esowiki> [[DerpScrp]] M https://esolangs.org/w/index.php?diff=63886&oldid=63885 * A * (+256) /* Examples (Currently there are only examples) */
03:39:41 <esowiki> [[DerpScrp]] https://esolangs.org/w/index.php?diff=63887&oldid=63886 * A * (+1274)
03:42:58 <esowiki> [[DerpScrp]] M https://esolangs.org/w/index.php?diff=63888&oldid=63887 * A * (+157)
03:50:13 <esowiki> [[Derpodce]] N https://esolangs.org/w/index.php?oldid=63889 * A * (+1537) Another "Derp" derivative
04:07:13 <esowiki> [[Ruined BASIC]] M https://esolangs.org/w/index.php?diff=63890&oldid=63647 * A * (+404)
04:10:31 <esowiki> [[Ruined BASIC]] M https://esolangs.org/w/index.php?diff=63891&oldid=63890 * A * (+185) /* Computational class */
04:13:04 <esowiki> [[Ruined BASIC]] M https://esolangs.org/w/index.php?diff=63892&oldid=63891 * A * (+6) /* Example programs */
04:38:27 -!- salpynx has quit (Ping timeout: 260 seconds).
05:43:13 <oerjan> i wonder if gil is going to appreciate what tarvek just did. assuming it _did_ work.
06:28:17 -!- Hooloovo0 has quit (Ping timeout: 248 seconds).
06:31:00 -!- Hooloovo0 has joined.
06:31:39 -!- oerjan has quit (Quit: Nite).
06:48:50 -!- atslash has joined.
08:25:59 <Taneb> oerjan: it kind of felt like *both* personalities have been removed
08:46:26 -!- salpynx has joined.
08:53:57 -!- AnotherTest has joined.
09:06:04 -!- salpynx has quit (Remote host closed the connection).
09:38:37 -!- ben` has joined.
10:27:32 -!- ben` has quit (Ping timeout: 245 seconds).
10:40:15 -!- xkapastel has joined.
11:10:14 -!- ben` has joined.
11:22:06 -!- arseniiv has joined.
12:09:45 -!- wob_jonas has joined.
12:09:53 <wob_jonas> zzo38: wait, I just realized ... are you named of ZZT?
12:11:14 <HackEso> `fetch [<output-file>] <URL> downloads files, and is the only web access currently available in HackEgo. It is a special builtin that cannot be called from other commands. See also `edit.
12:11:25 <HackEso> `edit <file> gives you a url, then in your browser: (1) Press Sync (unless making a new file) (2) Make your changes (3) Press Save (4) Paste the command line at the top into the channel.
12:11:44 <wob_jonas> salpynx: you can use those to upload small files to HackEso if you want
12:12:45 <wob_jonas> zzo38: missing mouse cursor is difficult to debug because there are a lot of different causes it could have
12:15:33 <wob_jonas> shachaf, int-e: re parallelizing SAT solvers, somehow that reminds me of the esoteric way to add an accurate progress bar to anything:
12:16:16 <wob_jonas> display 0%, do the entire job but measure how much real time it takes, display 10%, wait as much time as the job took, display 20%, wait as much time as the job took, display 30%, etc, display 100%
12:21:46 <wob_jonas> Also, I like this joke. https://twitter.com/reedie72/status/1139298459591143424 "A database query walks up to 2 tables in a bar... Mind if I join you?"
12:48:20 -!- xkapastel has quit (Quit: Connection closed for inactivity).
13:28:04 -!- ben` has quit (Ping timeout: 272 seconds).
13:34:44 -!- Lord_of_Life_ has joined.
13:38:50 -!- Lord_of_Life has quit (Ping timeout: 272 seconds).
13:38:51 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
13:41:41 -!- int-e has quit (Remote host closed the connection).
13:43:09 -!- int-e has joined.
13:55:42 <esowiki> [[User:A/H spec]] https://esolangs.org/w/index.php?diff=63893&oldid=63836 * A * (+2642)
13:56:58 <esowiki> [[User:A/H spec]] https://esolangs.org/w/index.php?diff=63894&oldid=63893 * A * (+40) /* Statements */
14:11:20 <esowiki> [[User:A/H spec]] M https://esolangs.org/w/index.php?diff=63895&oldid=63894 * A * (-234)
14:19:31 <esowiki> [[User:A/H spec]] M https://esolangs.org/w/index.php?diff=63896&oldid=63895 * A * (+397) /* Extended H Reference */
14:23:30 <esowiki> [[Bit~]] M https://esolangs.org/w/index.php?diff=63897&oldid=62369 * RealUndefined * (-45)
14:42:05 -!- wob_jonas has quit (Remote host closed the connection).
14:52:32 <esowiki> [[User:A/H spec]] M https://esolangs.org/w/index.php?diff=63898&oldid=63896 * A * (+785) /* Extended H Reference */
15:10:18 <esowiki> [[User:A/H spec]] https://esolangs.org/w/index.php?diff=63899&oldid=63898 * A * (+1163) /* Extended H Reference */
15:12:00 <esowiki> [[User:A/H spec]] https://esolangs.org/w/index.php?diff=63900&oldid=63899 * A * (+2) /* Extended H Reference */
15:21:10 -!- john_metcalf has joined.
15:29:34 <zzo38> The documentation for Reality Adlib Tracker (which I converted to a plain text document, because the HTML of it isn't very good) fails to mention that algorithms 2 and 3 are not valid for the last three channels, but by looking at the source codes of the playback software, that seems to be the case. (I only downloaded the playback software; it includes source-codes and is for Windows, but I could modify it to work on Linux too.)
15:32:04 <zzo38> (OPL3 only has six 4op channels, although Reality Adlib Tracker uses nine channels. Algorithm 4 and 5 and 6 are emulated by use of two 2op channels, so those algorithms can still be used on the last three channels.)
15:37:44 -!- atslash has quit (Read error: Connection reset by peer).
15:38:17 -!- atslash has joined.
15:43:45 * int-e wonders, not for the first time, what zzo38 is doing for a living.
15:44:10 <int-e> Ideas include: Technician at a computer museum.
15:49:06 <Taneb> I should go back to the computer museum here
15:51:02 <int-e> . o O ( I have to go back... to the Mansion! )
15:51:36 <Taneb> . o O ( I don't understand you reference )
15:52:10 <int-e> It's only one of the best computer games ever. (IMHO) But it's from the mid 90s so probably too old for you.
15:52:43 <Taneb> I am also from the mid 90s so maybe
15:52:45 <int-e> https://www.gog.com/game/day_of_the_tentacle_remastered
15:53:04 <Taneb> That said I'm playing through the Monkey Island games with my partner
15:55:38 <int-e> (The "Mansion" is Maniac Mansion. I didn't like that game so much, because I never got very far... I didn't find one crucial pixel.)
15:55:51 <int-e> But DoTT is great.
15:56:53 <int-e> (And the remastered version is true to the original. It has better graphics resolution, and perhaps a few more hints (I didn't notice those). I liked it.)
16:06:21 -!- b_jonas has joined.
16:07:46 <arseniiv> also I found out why that infinite loop was giving an error
16:10:22 <arseniiv> I had written “if state is CodeChunk” when it needed to be “if type(state) is CodeChunk”, and the code resetting instruction pointer in that code block wasn’t run, and __+ was not reëvaluated
16:10:48 <arseniiv> (hm those dots are indeed strange when you read them)
16:11:18 <b_jonas> arseniiv: don't you want if instanceof(state, CodeChunk) ?
16:11:36 <b_jonas> using type() for that is usually not a good practice
16:11:46 <arseniiv> yeah, I’d write that, but I intend not to subclass there
16:12:01 <arseniiv> it would be semantically cumbersome
16:12:08 <b_jonas> https://docs.python.org/3/faq/programming.html#how-do-i-check-if-an-object-is-an-instance-of-a-given-class-or-of-a-subclass-of-it
16:12:23 <b_jonas> so it's `if isinstance(state, CodeChunk)`
16:13:39 <arseniiv> b_jonas: yeah, one time I had made the same mistake
16:14:10 <b_jonas> so much easier in ruby, you just write CodeChunk === state
16:14:36 <arseniiv> isn’t it weird? What === does?
16:15:13 <b_jonas> it's smartmatch, what it does depends on the type of the lhs
16:15:31 <b_jonas> if the lhs is a class, it checks for class membership
16:15:37 <arseniiv> they probably should have named it ~= or something
16:15:45 <b_jonas> if it's a range, checks for between
16:17:13 <zzo38> Also in JavaScript === means check if two values are the same value, except NaN and positive/negative zero; Object.is() will also check if two values are same, even NaN and positive/negative zero.
16:19:25 <arseniiv> int-e: try to run _ _+ _+ _+~ _+~ _+~ _+~ _+ _+ [α+][α+;#][]?; in your interpreter, it may print �a0 (and some control chars) and finish, though a compliant implementation should output a single byte and then make a bad error noise
16:20:12 <int-e> arseniiv: I can't run that.
16:20:38 <arseniiv> is there something from yet unsupported subset?
16:21:20 <int-e> since α+ counts from the topmost bar...
16:21:40 <int-e> is that always the top element of the stack?
16:23:35 -!- dingwat has quit (Quit: Connection closed for inactivity).
16:28:52 <int-e> encoding unicode points as bytes isn't so great for α
16:29:45 <b_jonas> int-e: just have the interpreter take a..x instead
16:30:02 <zzo38> You could use an encoding other than Unicode if you want with bytes, is another possibility, although accepting ASCII characters probably is better
16:30:08 <int-e> b_jonas: I just did that.
16:31:05 <b_jonas> although I don't see why accepting alpha to omega is that bad. that's still just two bytes, and the first byte is fixed
16:33:41 <ski> DotT is nice :)
16:34:43 <arseniiv> <int-e> is that always the top element of the stack? => no, when there are no explicitly placed bars (as here), it’s the bottom element
16:34:56 <int-e> arseniiv: I meant in your example.
16:35:33 <int-e> arseniiv: I've replaced α+ by a- now, which in my interpreter, dups the top element of the stack.
16:35:57 <int-e> (I felt some sort of duplication was needed... but without bars, the top is really the only reasonable reference point ;) )
16:36:11 <arseniiv> I think I should make a breaking change and replace bars for something more manageable
16:36:24 <b_jonas> arseniiv: yes, make the language better earlier
16:36:46 <b_jonas> before it gets so widely adapted that there's code relying on the current behavior
16:36:54 <b_jonas> (not that that's likely for most esolangs, but still)
16:39:07 <arseniiv> there would be a “section start index” which we would set via <greek>| and there would be a “cut section” operation, let’s say <greek>-, which cuts out all consecutive elements between section start index and the index specified in this command
16:39:29 <arseniiv> and <greek>+ and <greek>= would index from that section start index
16:39:53 <int-e> arseniiv: anyway, this was basically expected: Ã*** Exception: Punctree.hs:(87,5)-(89,58): Non-exhaustive patterns in function go
16:40:02 <arseniiv> thus, a normal stack without any strange uncountable bars
16:40:52 <arseniiv> int-e: it means the impl is incomplete or maybe that the context represents an incomplete byte?
16:41:14 <int-e> arseniiv: no it means that ; doesn't like printing a 7-bit character
16:41:54 <int-e> which I think is undefined behavior (and probably what you alluded to)
16:42:11 <int-e> (except that apparently you expected it to not just "crash")
16:42:24 <arseniiv> int-e: also, how do you find the change? I think I’ll do it anyway just for the simplification. It breaks, but I think it will break my code more than yours(?)
16:42:43 <int-e> I have no code relating to bars.
16:42:53 <int-e> So I think you'll only hurt yourself.
16:43:02 <arseniiv> int-e: no, a crash is a perfectly valid UB here. I was just playing with loops and got up with that example
16:43:41 <arseniiv> also I considered adding typechecking (not to the specification) but then bars confused the matters
16:43:59 <arseniiv> without them, though, it should be not that hard
16:44:05 <int-e> I don't even terribly mind the bars, except that it's odd to count stack positions from the bottom of the frame.
16:44:24 <int-e> (and I haven't made up my mind about how to best implement them)
16:44:46 <int-e> I mostly mind the ability to pop through a frame boundary
16:44:47 <arseniiv> this is the spirit, it makes the stack useful to store “named variables”
16:45:12 <arseniiv> you can treat α…ω in gr+, gr= commands as a temporary names
16:45:47 <arseniiv> without bars, I guarantee it would be easier
16:46:09 <arseniiv> though I’m currently lazy to rewrite the page and my impl too
16:46:52 <int-e> (Because that means a simple pattern match isn't sufficient for popping elements... you actually have to do some scanning of the stack. This is not entirely true; one representation I thought about was a list alternating between trees and integers that count bars.)
16:48:20 <int-e> so popping would collapse i : t' : j : ... into i+j : ..., and the popped value is t'.
16:49:24 <int-e> But I'd much prefer modeling the stack as a list of frames.
16:53:12 <arseniiv> int-e: now you could divide the stack into two frames (before section start and after it)
16:59:23 <int-e> arseniiv: The more I think about it, the more I believe the bars are just fine (maybe not esoteric, but fine)... if you couldn't pop through them.
17:00:30 <arseniiv> int-e: hmmm that would simplify something too
17:00:48 <int-e> it would allow representing the stack as a list of frames
17:01:12 <int-e> (each frame is a list of values; the bars are between consecutive frames)
17:01:20 <b_jonas> oh! do you want multiple bars separating frames so that each frame can have its own local variables named by greek letters?
17:01:55 <int-e> (the representation is possible anyway, but without popping through bars, access to the top element of the stack is much simpler)
17:02:30 <arseniiv> though <greek>| command is still not nice, it could divide a frame not at the top, and in which way should we index elements in this case anyway?
17:03:03 <arseniiv> b_jonas: but only the topmost frame is indexable by letters
17:03:03 <int-e> arseniiv: ah I'd want to restrict that to the top frame as well, as you suggest.
17:03:27 <arseniiv> int-e: I’d agree to that, it’s consistent with pop change
17:03:35 <int-e> arseniiv: arguably adding all that sanity makes stuff less esoteric :P
17:03:52 <arseniiv> and what do you think about infinitely many empty frames at the bottom of the stack?
17:04:02 <int-e> (otoh you can voluntarily adhere to these constraints anyway... and I probably would)
17:04:56 <arseniiv> int-e: hopefully context manipulation is esoteric enough to outweigh still
17:04:58 <int-e> arseniiv: seems like an arbitrary choice to me :)
17:05:33 <int-e> (intuitively: pick an arbitrary solution to concat xs = [])
17:06:03 <int-e> > concat (repeat []) -- of course this doesn't work
17:06:09 <arseniiv> then we could restrict gr|, gr+, gr= as suggested and it will make implementation way easier
17:07:17 <arseniiv> of course this doesn't work => yeah, it should start in the infinite past and then finish abruptly at a finite time, then concat would be fine
17:08:55 <arseniiv> also your idea is good for typechecking too
17:14:32 <arseniiv> also initially I thought about stack frame implementation, but the former behavior had a sobering effect
17:40:56 -!- laerling has joined.
17:58:47 -!- atslash has quit (Quit: This computer has gone to sleep).
18:05:39 -!- sleepnap has joined.
18:45:13 -!- MDude has quit (Quit: Going offline, see ya! (www.adiirc.com)).
19:39:41 -!- tromp has joined.
19:59:26 -!- Phantom_Hoover has joined.
20:30:55 -!- atslash has joined.
20:47:17 -!- john_metcalf has quit (Ping timeout: 244 seconds).
20:53:15 -!- FreeFull has joined.
21:10:52 -!- sleepnap has quit (Quit: Leaving.).
21:10:55 <esowiki> [[ByteByteJump]] https://esolangs.org/w/index.php?diff=63901&oldid=54346 * Anthonykozar * (-11) /* External resources */
21:12:17 -!- MDude has joined.
21:25:59 -!- sleepnap has joined.
21:26:00 -!- AnotherTest has quit (Ping timeout: 258 seconds).
21:46:24 <esowiki> [[Punctree]] https://esolangs.org/w/index.php?diff=63902&oldid=63870 * Arseniiv * (+466) /* Runtime */ restricting bar-related behavior as suggested by int-e; description in terms of frames
22:11:25 <esowiki> [[Punctree]] M https://esolangs.org/w/index.php?diff=63903&oldid=63902 * Arseniiv * (+232) /* Implementations */ new!
22:12:08 -!- sleepnap has quit (Ping timeout: 245 seconds).
22:13:06 <arseniiv> hopefully the code is not unreadable
22:14:52 <arseniiv> I was mainly writing it in a giant cell in a Jupyter notebook (and testing small snippets in a bunch of tiny cells), this may take its toll
22:16:15 <arseniiv> also I’m not completely sure what things should be marked as “don’t touch” (a Python’s take on private) by underscores
22:17:49 <b_jonas> has anyone looked at the ICFP contest? I should look at what it's about
22:22:01 -!- tromp has quit (Remote host closed the connection).
22:25:20 -!- tromp has joined.
22:26:54 -!- atslash has quit (Quit: This computer has gone to sleep).
22:39:09 -!- laerling has quit (Remote host closed the connection).
22:54:17 <b_jonas> zzo38: in M:tG, https://magic.wizards.com/en/articles/archive/news/core-set-2020-update-bulletin-2019-07-03 Core Set 2020 Update Bulletin
23:02:55 -!- arseniiv has quit (Ping timeout: 246 seconds).
23:11:51 -!- tromp has quit (Remote host closed the connection).
23:19:07 -!- b_jonas has quit (Quit: leaving).
23:32:44 -!- sleepnap has joined.
23:45:21 -!- tromp has joined.
23:49:54 -!- tromp has quit (Ping timeout: 252 seconds).
00:20:09 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
00:33:39 -!- salpynx has joined.
00:46:55 -!- sleepnap has quit (Quit: Leaving.).
00:55:38 -!- sleepnap has joined.
00:56:11 <salpynx> arseniiv: I've been playing with your interpreter, I think you want `stdout.buffer.write(bytes((maybe_byte,)))` for output. I get "TypeError: write() argument must be str, not bytes" without .buffer., and with it I can output ASCII and unicode
00:57:42 <salpynx> I'm using Linux, and I'm not sure if Windows handles the buffer differently, but I've used that pattern to convert raw bytes to displayable output which includes multibyte characters.
00:58:53 <salpynx> silly first example: "__+_+_+_+_+~_+~_+~_+~;__+_+~_+~_+_+_+_+_+;__+_+~_+~_+~_+_+_+~_+~;__+_+~_+_+_+~_+~_+_+;__+~_+_+~_+~_+_+~_+~_+~;__+~_+_+_+~_+_+~_+~_+;__+~_+~_+_+~_+~_+~_+~_+;__+_+_+_+_+~_+~_+~_+~;__+_+~_+~_+_+_+_+_+;__+_+~_+~_+_+~_+_+~_+;__+_+~_+_+_+~_+~_+_+;"
01:03:08 <salpynx> Gen Punctree code to output a string: for b in bytes(u'your output here', 'utf8'): print('_' + bin(b)[2:].zfill(8).replace('1', '_+').replace('0', '_+~'), end=';')
01:21:37 -!- sleepnap has quit (Ping timeout: 248 seconds).
01:27:37 -!- tromp has joined.
01:31:51 -!- tromp has quit (Ping timeout: 252 seconds).
01:36:42 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
01:39:43 -!- Lord_of_Life has joined.
01:46:15 -!- ban has joined.
01:46:39 -!- ban has changed nick to Guest18755.
01:48:17 -!- tromp has joined.
01:49:20 <HackEso> TG is short for Turing-Gödel, the highest possible level of difficulty for a multiplayer game. At this level, it's undecidable whether you can manage to halt before losing or not.
01:52:46 -!- tromp has quit (Ping timeout: 252 seconds).
01:54:17 <lambdabot> What module? Try @listmodules for some ideas.
01:54:27 <lambdabot> activity base bf check compose dice dict djinn dummy elite eval filter free fresh haddock help hoogle instances irc karma localtime metar more oeis offlineRC pl pointful poll pretty quote search
01:54:27 <lambdabot> slap source spell system tell ticker todo topic type undo unlambda unmtl version where
01:54:52 <lambdabot> localtime provides: time localtime localtime-reply
01:55:25 <lambdabot> No module "localtime localtime" loaded
01:55:33 <lambdabot> localtime provides: time localtime localtime-reply
02:00:36 -!- Guest18755 has quit (Remote host closed the connection).
02:22:20 -!- FreeFull has quit.
02:52:39 -!- salpynx has quit (Ping timeout: 260 seconds).
04:40:19 -!- salpynx has joined.
04:55:46 <esowiki> [[User:JonoCode9374]] M https://esolangs.org/w/index.php?diff=63904&oldid=62711 * JonoCode9374 * (-778)
06:11:10 -!- Sgeo_ has joined.
06:14:04 -!- Sgeo has quit (Ping timeout: 244 seconds).
06:50:50 <esowiki> [[Turing machine]] M https://esolangs.org/w/index.php?diff=63905&oldid=57244 * A * (+109)
07:04:28 <esowiki> [[User:A/H spec]] M https://esolangs.org/w/index.php?diff=63906&oldid=63900 * A * (-428) /* Extended H Reference */
08:00:01 -!- AnotherTest has joined.
08:40:26 -!- atslash has joined.
08:52:02 -!- tromp has joined.
09:06:53 -!- arseniiv has joined.
09:23:49 -!- tromp has quit (Remote host closed the connection).
09:36:30 -!- tromp has joined.
11:26:59 -!- salpynx has quit (Remote host closed the connection).
12:16:23 -!- john_metcalf has joined.
12:25:49 -!- wob_jonas has joined.
12:26:13 <wob_jonas> fizzie: re https://esolangs.org/logs/2019-04.html#l1C as in what "IV" stands for in pokemon video games, https://www.youtube.com/watch?v=PupgZtt_KEw&feature=youtu.be&t=331 claims "individual values"
12:27:02 <esowiki> [[Hardlang]] N https://esolangs.org/w/index.php?oldid=63907 * A * (+761) Dump everything in my head today into this wiki
12:29:03 <esowiki> [[SPADE]] M https://esolangs.org/w/index.php?diff=63908&oldid=60247 * A * (-18)
13:17:21 -!- john_metcalf has quit (Ping timeout: 248 seconds).
13:28:23 -!- arseniiv has quit (Ping timeout: 245 seconds).
13:37:18 -!- Lord_of_Life_ has joined.
13:39:13 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
13:39:15 -!- arseniiv has joined.
13:39:51 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
14:42:51 -!- sleepnap has joined.
14:58:47 -!- wob_jonas has quit (Remote host closed the connection).
16:45:53 -!- b_jonas has joined.
18:19:48 -!- tromp has quit (Remote host closed the connection).
18:20:21 -!- tromp has joined.
18:24:56 -!- tromp has quit (Ping timeout: 252 seconds).
19:27:46 -!- tromp has joined.
19:32:02 -!- tromp has quit (Ping timeout: 252 seconds).
20:03:21 -!- tromp has joined.
20:04:37 -!- sleepnap has quit (Quit: Leaving.).
20:07:00 <esowiki> [[Rotpai]] N https://esolangs.org/w/index.php?oldid=63909 * Mipinggfxgbtftybfhfyhfn * (+1155) Created page with "'''Rotpai''' is an [[esoteric programming language]] made by [[User:Mipinggfxgbtftybfhfyhfn]]. ==Syntax and execution== A Rotpai program is a list of ordered pairs of characte..."
20:07:36 -!- tromp has quit (Ping timeout: 252 seconds).
20:08:13 <esowiki> [[Rotpai]] https://esolangs.org/w/index.php?diff=63910&oldid=63909 * Mipinggfxgbtftybfhfyhfn * (-30)
20:11:43 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=63911&oldid=63603 * Mipinggfxgbtftybfhfyhfn * (+13) /* R */
20:21:38 -!- FreeFull has joined.
20:46:06 -!- AnotherTest has quit (Ping timeout: 252 seconds).
21:23:02 -!- tromp has joined.
21:32:36 -!- AnotherTest has joined.
21:45:20 -!- salpynx has joined.
21:49:10 -!- AnotherTest has quit (Ping timeout: 252 seconds).
21:52:59 -!- tromp has quit (Remote host closed the connection).
22:02:11 -!- tromp has joined.
22:04:47 -!- sftp has quit (Excess Flood).
22:05:06 -!- sftp has joined.
22:23:00 -!- aji has joined.
22:23:05 -!- tromp has quit (Remote host closed the connection).
22:33:46 -!- tromp has joined.
22:38:19 -!- tromp has quit (Remote host closed the connection).
22:44:16 -!- tromp has joined.
22:48:35 -!- tromp has quit (Ping timeout: 252 seconds).
23:06:56 <int-e> I love this warning: http://paste.debian.net/hidden/d50f8b09/
23:24:51 -!- tromp has joined.
23:29:03 -!- tromp has quit (Ping timeout: 250 seconds).
23:55:48 -!- b_jonas has quit (Quit: leaving).
00:02:55 -!- Bowserinator has quit (Read error: Connection reset by peer).
00:03:14 -!- Bowserinator has joined.
00:22:49 <kmc> shachaf: do you think languages should have better support for fixed point arithmetic
00:23:01 <kmc> programmers use floats for all kinds of things that don't have much dynamic range
00:23:10 <kmc> e.g. I'm using floats for UNIX timestamps down to microsecond
00:23:25 <kmc> but those will all have the same exponent
00:24:08 <kmc> also, do you think binary or decimal floating point is better
00:24:10 <kmc> binary's faster of course
00:24:15 <kmc> but decimal would match the way I'm thinking about this
00:24:55 <kmc> which is "10 digit integer + 6 decimal places"
00:25:11 <kmc> conveniently, people already specify these kinds of things in format strings.
00:25:32 <kmc> if you had a fixed point type of this form you could also format in a nice table-friendly way without repeating yourself.
00:25:44 <kmc> but it would have to really be as convenient as floats or people won't bother
00:25:53 <kmc> people even use floats for money, which is so scow
00:42:34 <esowiki> [[Talk:Iota]] https://esolangs.org/w/index.php?diff=63912&oldid=40423 * Salpynx * (+554) sharing a command to split Iota into 'readable' CL primitives
00:44:13 -!- arseniiv has quit (Ping timeout: 245 seconds).
01:12:43 -!- tromp has joined.
01:17:58 -!- tromp has quit (Ping timeout: 276 seconds).
01:39:13 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
01:40:38 -!- Lord_of_Life has joined.
02:08:30 -!- FreeFull has quit.
02:15:36 <esowiki> [[Feta]] M https://esolangs.org/w/index.php?diff=63913&oldid=56997 * Voltage2007 * (+14)
03:00:45 -!- tromp has joined.
03:05:36 -!- tromp has quit (Ping timeout: 252 seconds).
03:09:22 -!- ^ has changed nick to [.
03:10:03 -!- [ has changed nick to ^.
03:11:46 -!- ^ has changed nick to [.
03:25:10 <salpynx> ^ is a cooler name, because its is part of Punctree, which is a hip new language. [ is bf, which is old-fashioned and boring.
03:26:25 <salpynx> I want to make a joke about about [ = Java and ^=Ruby, but I'm not sure that Ruby is still the fashionable cool language. What is the new fashionable language? I'd guess Haskell (from experience) but I'm not so confident that those ppl were actually the "cool kids". I may have lost the ability to judge.
03:27:09 <kmc> probably JavaScript or Rust
03:27:16 <kmc> Ruby hasn't been cool in a while
03:28:16 <kmc> haskell was never really cool I don't think
03:28:25 <kmc> I also don't program anymore :/
03:28:27 <kmc> so what do I know
03:29:52 <kmc> i have no patience for the cool kids
03:30:10 <salpynx> Rust is a good candidate. I was thinking maybe Go too, but I haven't met anyone who programmed in Go, just those who used it as part of other things
03:30:27 <kmc> Go is polarizing
03:30:52 <kmc> some people love it, and the rest realize that it's a dumbed down language and the fan club is essentially proud of being too lazy to learn anything better
03:30:57 <kmc> the Go community is fiercly anti-intellectual
03:31:47 <kmc> Go was explicitly, according to its creator, designed to wring some level of productivity out of mediocre programmers
03:31:56 <kmc> which is of course what a company like Google needs
03:32:06 <kmc> and probably a lot of working Go programmers are fine with tha characterization
03:32:10 <kmc> but the Go 'fan club' can't admit it
03:32:43 <kmc> so they have to pretend all the dumbing down is actually brilliant and that the features Go lacks (such as generics, which even Java got 15 years ago) are useless
03:33:02 <kmc> instead of admitting the designers basically don't trust them to use generics correctly
03:33:19 <salpynx> Ruby jumped to mind because it seemed to have a very conscious 'cool kid' character, which was kind of funny, even though I actually liked using it. I liked Ruby, not so much the Rails bit.
03:33:37 <kmc> I think the Ruby hipsters have moved on to JavaScript and are now trying to ruin Rust too
03:33:48 <salpynx> That might explain why I haven't met any Go programmers :)
03:35:06 <salpynx> I do know some Ruby -> Rust people. That fits.
03:35:35 <kmc> they've aggressively marketed it to web people with no systems experience
03:35:44 <kmc> I used to be in favor of that strategy
03:35:48 <kmc> now, not so much
03:35:56 <kmc> largely because those people bring in a bunch of cultural baggage I don't like
03:36:59 <kmc> also they flat out ignore the needs of actual systems programmers
03:37:09 <kmc> like, a lot of the web people legitimately do not grasp the need for reproducable builds
03:37:21 <kmc> why shouldn't you just run every library on the current version from the package repo?
03:38:48 <salpynx> What I have seen of Rust seems like it has potential, and big advantages over C, but, yes, some of the over zealous evangelism and over-marketing was off-putting. I don't have much call to use it for any personal projects, but would like to pick it up if something seemed applicable.
03:39:35 <salpynx> I tend to do everything in python now, it's become too much of a comfort.
03:39:58 <kmc> I contributed to Rust for a long time and really regret it
03:40:07 <kmc> because I got emotionally invested and they took it in a direction that really bothers me
03:40:18 <kmc> but that is tied up in some personal issues that I don't need to drag up again
03:40:40 <salpynx> shame (about the big involvement + regret)
03:40:54 <kmc> whatever you think of the community, it is an excellent language
03:41:03 <kmc> that unlike most languages, brings something actually new to the table
03:41:08 <kmc> I consider it a C++ successor, not a C successor
03:41:11 <kmc> it's much more complicated than C
03:41:15 <kmc> C is a low-abstraction language
03:41:19 <kmc> C++ and Rust are high-abstraction languages
03:41:38 <salpynx> Have there been (significant) Rust forks resulting from some of those direction / community issues? (I have not been following)
03:41:53 <kmc> there are some alternative communities but the leadership tries their best to shut down discussion of them
03:42:03 <kmc> in large part, Rust is a redesign of C++ without the historical baggage
03:42:10 <kmc> it has the same underlying concepts as C++11
03:42:18 <kmc> of course, it already has its own historical baggage
03:42:27 <salpynx> sorry, I used 'C' lazily :)
03:42:29 <kmc> then you have the static memory safety stuff, which has no analogue in C++
03:43:39 <kmc> the leadership have been doing more and more things to piss off the community
03:43:47 <kmc> while adopting a condescending "we know what's best for you" attitude
03:43:58 <kmc> I think the odds of a substantial community schism are high
03:44:08 <salpynx> 't know if that's better) or still progam for fun?
03:44:12 <kmc> the latest is that they're shutting down IRC and moving to Discord, which a lot of people hate
03:44:19 <kmc> and the community had basically no say in this
03:44:45 <kmc> they make a big deal about their code of conduct and everything they do is supposedly to be 'friendly and welcoming' but if you don't find it friendly and welcoming, they don't want to hear about it
03:44:53 <kmc> it's just empty self-praise
03:44:58 <kmc> I don't write much code
03:45:06 <kmc> I write little programs when I need to get something done
03:45:09 <kmc> I don't code for fun
03:45:15 <kmc> and I haven't contributed to OSS in a long time
03:45:18 <kmc> which makes me really really sad
03:45:28 <kmc> because it was one of the few things I can do that has value to a lot of other people
03:45:32 <kmc> it's a force multiplier
03:45:42 <kmc> most people don't ever have an opportunity to make things that benefit potentially millions of people at zero marginal cost
03:45:46 <kmc> I did, and I can't anymore :(
03:46:01 <kmc> also OSS is very well aligned with my anarchist values
03:46:06 <kmc> that too has been ruined
03:47:19 <kmc> mostly because it's big money now
03:47:25 <kmc> but also because of the code of conduct nonsense
03:49:03 <salpynx> That is unfortunate :( Getting caught up in community politics can be draining. I do stuff with open data and got involved with wikidata, and accidentally stumbled on a community conflict early, which was very draining and a bit of storm in a teacup, but it caused me to back off
03:49:21 <salpynx> substantially and just interact via data and code
03:49:32 <kmc> maybe one day I will be able to do that
03:49:45 <kmc> i've had a rough few years tbh
03:51:42 <salpynx> sorry to hear... code can be fun (I guess that's why we're here?)
03:52:03 <kmc> code isn't really fun for me anymore
03:52:12 <kmc> talking *about* programming is still kind of interesting
03:52:15 <kmc> and i like the people here
03:52:25 <kmc> and I used to hang out here years ago in a happier (in some ways) time
03:55:43 <salpynx> yeah, seems a nice group here. Suitably quiet and low volume. I'm v. new, but feel like sticking around for a bit. The impression of history and incomprehesible in-jokes from the past gives a aura of mystique
03:56:03 <kmc> it's nice that way
03:56:12 <kmc> your nick looks familiar, I don't remember if we maybe crossed paths before?
03:56:21 * kmc offers hugs
03:57:42 <salpynx> I think I responded to some kind of retro-console coding hw or maybe gaming link you posted a while back, but I don't think we've chatted in much depth before
04:00:53 <salpynx> Thanks for your qualified opinion on Rust too, I'm glad you think it's technically a good lang. I'm solidifying my vaguer opinions accordingly
04:06:20 <kmc> salpynx: <3
04:06:27 <kmc> nice chatting with you too
04:13:28 <kmc> i got my oscilloscope set up as a network connected data logger
04:13:31 <kmc> and am testing a battery using it
04:13:33 <kmc> so that's fun
04:40:40 -!- tromp has joined.
04:45:19 -!- tromp has quit (Ping timeout: 276 seconds).
05:02:51 <kmc> and i now even have it set up to text me
05:02:54 <kmc> if the voltage gets too low
05:02:56 <kmc> so I can end the test
05:03:04 <kmc> I do enjoy coding when it's little things like that
05:03:08 <kmc> to accomplish some other goal
05:03:11 <kmc> I do feel clever doing it
05:18:22 -!- tromp has joined.
05:22:44 -!- tromp has quit (Ping timeout: 252 seconds).
05:28:24 <esowiki> [[Zull]] https://esolangs.org/w/index.php?diff=63914&oldid=59444 * Voltage2007 * (-118)
05:34:24 <esowiki> [[Zull]] https://esolangs.org/w/index.php?diff=63915&oldid=63914 * Voltage2007 * (+13) This is a pretty good joke.
07:01:49 -!- tromp has joined.
07:21:57 -!- tromp has quit (Remote host closed the connection).
07:24:16 -!- john_metcalf has joined.
07:38:21 <esowiki> [[1=0]] https://esolangs.org/w/index.php?diff=63916&oldid=62458 * Voltage2007 * (+348)
07:47:30 -!- wob_jonas has joined.
07:50:35 -!- tromp has joined.
08:26:10 <esowiki> [[*]] https://esolangs.org/w/index.php?diff=63917&oldid=57869 * Voltage2007 * (+328)
08:32:14 -!- AnotherTest has joined.
08:32:39 <esowiki> [[*]] https://esolangs.org/w/index.php?diff=63918&oldid=63917 * Voltage2007 * (+7)
08:45:31 <esowiki> [[+-]] https://esolangs.org/w/index.php?diff=63919&oldid=63867 * Voltage2007 * (+641)
10:40:01 -!- john_metcalf has quit (Ping timeout: 268 seconds).
11:06:36 -!- AnotherTest has quit (Ping timeout: 272 seconds).
11:08:51 -!- salpynx has quit (Remote host closed the connection).
12:24:52 -!- tromp has quit (Remote host closed the connection).
12:36:45 -!- tromp has joined.
13:20:13 <esowiki> [[Zull]] M https://esolangs.org/w/index.php?diff=63920&oldid=63915 * A * (+12)
13:23:55 <esowiki> [[User:Cortex]] M https://esolangs.org/w/index.php?diff=63921&oldid=63562 * A * (+12) /* Languages I made */
13:28:49 -!- arseniiv has joined.
13:39:28 -!- Lord_of_Life has quit (Ping timeout: 258 seconds).
13:43:13 -!- Lord_of_Life has joined.
13:59:29 -!- MDude has quit (Ping timeout: 248 seconds).
14:01:38 -!- border has joined.
14:27:34 -!- border has quit (Ping timeout: 268 seconds).
14:28:28 -!- border has joined.
14:36:00 -!- border has quit (Remote host closed the connection).
14:37:19 -!- sprocklem has quit (Ping timeout: 246 seconds).
14:40:32 -!- wob_jonas has quit (Remote host closed the connection).
14:56:58 -!- john_metcalf has joined.
15:08:22 -!- john_metcalf has quit (Ping timeout: 245 seconds).
15:50:54 -!- AnotherTest has joined.
15:57:48 <esowiki> [[Pistons & Pistons]] N https://esolangs.org/w/index.php?oldid=63922 * Areallycoolusername * (+2242) Created page with "'''Pistons & Pistons''' (hereafter used as Pi&Pi), is an [[esoteric programming language]] made by [User: Areallycoolusername|Areallycoolusername]. It utilizes the Unicode Whi..."
16:01:12 -!- border has joined.
16:07:26 -!- budonyc has joined.
16:15:50 <esowiki> [[Pistons & Pistons]] https://esolangs.org/w/index.php?diff=63923&oldid=63922 * Areallycoolusername * (+463)
16:22:45 -!- b_jonas has joined.
16:23:14 <HackEso> wisdom is always factually accurate, except for this entry, and, uh, that other one? It started with, like, an ø?
16:26:05 <b_jonas> Should we put an ugly all-uppercase disclaimer next to this?
16:26:35 <Taneb> What would it disclaim?
16:27:50 <b_jonas> warranty, liability for damages, etc
16:29:22 <b_jonas> you know, like THIS WISDOM IS DISTRIBUTED "AS IS", WITHOUT WARRANTY OF ANY KIND etc and IN NO EVENT SHALL #ESOTERIC BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
16:29:27 <b_jonas> OUT OF OR IN CONNECTION WITH blah blah
16:30:09 <Taneb> I think maybe if we have that it should be in a separate wisdom
16:30:22 <Taneb> Like in `? wisdom, "see warranty"
16:30:30 <Taneb> And have `? warranty be along those lines
16:30:51 <b_jonas> only it's tricky, because the full disclaimer won't fit in one irc line I think
16:35:28 <HackEso> HACKEGO COMES WITHOUT WARRANTY, EXPRESS OR IMPLIED, AND IS UNFIT FOR ANY PURPOSE, INCLUDING THE PURPOSE OF BEING UNFIT FOR ANYTHING. Its warranty has expired.
16:36:59 <b_jonas> but it's not the full disclaimer
16:38:26 <int-e> `slwd warrenty//s=G=[GS]=
16:38:30 <int-e> `slwd warranty//s=G=[GS]=
16:38:32 <HackEso> warranty//HACKE[GS]O COMES WITHOUT WARRANTY, EXPRESS OR IMPLIED, AND IS UNFIT FOR ANY PURPOSE, INCLUDING THE PURPOSE OF BEING UNFIT FOR ANYTHING. Its warranty has expired.
16:38:55 <int-e> Sun, I'm coming for you...
16:39:53 <HackEso> int-e är inte svensk. Hen kommer att spränga solen. Hen står för sig själv. Hen gillar inte färger, men han gillar dissonans. Er hat ein Hipster-Spiel gekauft.
16:45:00 -!- border has quit (Ping timeout: 258 seconds).
17:01:51 * ski . o O ( `(womdpw cöpse' )
17:19:09 <arseniiv> int-e: no no no not my Sun, come for another one please
17:20:13 <arseniiv> also the Sun it doesn’t exist, so you can’t come for it^W^W^W^W^W^W^W^W^W^W^W^W
17:39:13 -!- LKoen has joined.
17:57:03 * ski . o O ( <http://www.userfriendly.org/cartoons/archives/99dec/uf001320.gif> )
19:00:34 -!- border has joined.
19:27:30 <esowiki> [[Talk:Pistons & Pistons]] N https://esolangs.org/w/index.php?oldid=63924 * Salpynx * (+598) Implemented in Minecraft
19:41:19 -!- border has quit (Remote host closed the connection).
19:42:27 -!- border has joined.
20:01:58 -!- border has quit (Quit: Ping timeout (120 seconds)).
20:04:07 -!- border has joined.
20:24:00 -!- FreeFull has joined.
20:25:08 -!- border has quit (Remote host closed the connection).
20:34:45 <zzo38> I looked at the recent change to Magic: the Gathering card "Brutal Expulsion". I would have instead written "if that permanent would die this turn".
20:50:02 -!- AnotherTest has quit (Ping timeout: 245 seconds).
20:50:06 <shachaf> zzo38: Instead of Magic: the Gathering, I'm playing the computer game Slay: the Spire
20:52:18 <int-e> . o O ( https://esolangs.org/logs/2019-07-05.html#lGd )
20:53:02 <int-e> shachaf: just trying a new way of negative reinforcement here
20:53:49 <shachaf> It's still on my screen so it doesn't work.
20:57:43 -!- LKoen has quit (Remote host closed the connection).
21:19:41 <esowiki> [[Talk:Pistons & Pistons]] https://esolangs.org/w/index.php?diff=63925&oldid=63924 * Areallycoolusername * (+200)
21:23:14 <esowiki> [[User:Areallycoolusername]] https://esolangs.org/w/index.php?diff=63926&oldid=63639 * Areallycoolusername * (+24) /* Full List of languages I Made */
21:24:19 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=63927&oldid=63911 * Areallycoolusername * (+24) /* P */
21:25:05 -!- LKoen has joined.
21:26:26 -!- AnotherTest has joined.
21:27:04 -!- LKoen has quit (Remote host closed the connection).
21:28:21 <esowiki> [[Talk:Pit]] N https://esolangs.org/w/index.php?oldid=63928 * Areallycoolusername * (+217) Created page with "== Paradox == I think this language is so simple, it seems quite complicated, thus defeating the purpose of the langauage. Many other esolangs such as Brainfuck, believe it or..."
21:33:36 -!- AnotherTest has quit (Ping timeout: 272 seconds).
21:34:50 -!- LKoen has joined.
21:36:50 <esowiki> [[D]] https://esolangs.org/w/index.php?diff=63929&oldid=50807 * Voltage2007 * (+1)
22:12:21 -!- MDude has joined.
22:16:46 -!- LKoen has 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.”).
22:19:20 -!- sprocklem has joined.
22:21:43 -!- unlimiter has joined.
23:04:10 -!- atslash has quit (Quit: This computer has gone to sleep).
23:09:19 -!- unlimiter has quit (Quit: WeeChat 2.5).
23:23:02 -!- aji has quit (Remote host closed the connection).
23:23:45 -!- aji has joined.
00:55:29 -!- arseniiv has quit (Ping timeout: 248 seconds).
00:57:58 -!- ski has quit (Ping timeout: 245 seconds).
00:59:32 -!- ski has joined.
01:39:37 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
01:43:09 -!- Lord_of_Life has joined.
02:56:29 -!- moei has joined.
03:07:38 <esowiki> [[A:;]] https://esolangs.org/w/index.php?diff=63930&oldid=62159 * Voltage2007 * (+244)
03:22:07 -!- moei has quit (Ping timeout: 245 seconds).
04:01:00 -!- moei has joined.
04:32:52 -!- MDude has quit (Ping timeout: 272 seconds).
05:05:53 -!- FreeFull has quit.
06:16:10 -!- [ has changed nick to uplime.
06:25:42 <esowiki> [[Turth-machine]] https://esolangs.org/w/index.php?diff=63931&oldid=56519 * Voltage2007 * (+299)
06:32:52 <esowiki> [[A:;]] https://esolangs.org/w/index.php?diff=63932&oldid=63930 * Voltage2007 * (-218)
07:08:36 -!- atslash has joined.
07:15:46 -!- AnotherTest has joined.
07:25:50 -!- AnotherTest has quit (Ping timeout: 252 seconds).
08:43:32 <esowiki> [[Pistons & Pistons]] M https://esolangs.org/w/index.php?diff=63933&oldid=63923 * A * (+170) /* Infinite Loop */
08:49:40 -!- LKoen has joined.
08:50:28 <esowiki> [[Talk:Pistons & Pistons]] M https://esolangs.org/w/index.php?diff=63934&oldid=63925 * A * (+541)
08:53:36 <esowiki> [[Pistons & Pistons]] M https://esolangs.org/w/index.php?diff=63935&oldid=63933 * A * (+121) /* Infinite Loop */
08:56:24 <esowiki> [[Talk:Pistons & Pistons]] M https://esolangs.org/w/index.php?diff=63936&oldid=63934 * A * (+139)
08:56:39 -!- atslash has quit (Quit: This computer has gone to sleep).
09:13:22 -!- john_metcalf has joined.
09:20:52 -!- mniip has quit (Ping timeout: 600 seconds).
09:46:40 -!- Sgeo__ has joined.
09:48:09 -!- arseniiv has joined.
09:49:38 -!- Sgeo_ has quit (Ping timeout: 245 seconds).
09:51:08 <esowiki> [[Special:Log/move]] move * Arcorann * moved [[SLOBOL]] to [[SLOBOL (2015 language)]]: If you've invented a language with the same name as an existing one yours should have the bracketed bit afterwards
09:51:08 <esowiki> [[Special:Log/move]] move * Arcorann * moved [[Talk:SLOBOL]] to [[Talk:SLOBOL (2015 language)]]: If you've invented a language with the same name as an existing one yours should have the bracketed bit afterwards
09:54:38 <esowiki> [[SLOBOL]] https://esolangs.org/w/index.php?diff=63941&oldid=63938 * Arcorann * (+752)
09:55:29 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=63942&oldid=63927 * Arcorann * (+8) /* A */
10:01:07 <shachaf> Taneb: did you invent any good data structures or algorithms lately twh
10:01:53 <Taneb> Not recently I'm afraid
10:02:00 <Taneb> I haven't had much free time for experimentation lately
10:06:34 <shachaf> do you have any old ones for me
10:24:16 <b_jonas> shachaf: you don't want to think about the Old Ones. and if you have to, at least don't remind everyone else on the channel about them.
10:35:33 <shachaf> What's the harm of thinking abou the Old Ones?
10:36:04 -!- john_metcalf has quit (Ping timeout: 246 seconds).
10:46:47 <esowiki> [[Forks & Forks]] N https://esolangs.org/w/index.php?oldid=63943 * A * (+515) Simplify Pistons & Pistons
10:57:19 <esowiki> [[Forks & Forks]] M https://esolangs.org/w/index.php?diff=63944&oldid=63943 * A * (+605) /* Symbols */
11:01:55 <esowiki> [[Forks & Forks]] M https://esolangs.org/w/index.php?diff=63945&oldid=63944 * A * (+434)
11:07:45 <esowiki> [[Forks & Forks]] M https://esolangs.org/w/index.php?diff=63946&oldid=63945 * A * (+544)
11:19:37 <esowiki> [[Forks & Forks]] M https://esolangs.org/w/index.php?diff=63947&oldid=63946 * A * (+621)
11:22:45 <esowiki> [[Forks & Forks]] M https://esolangs.org/w/index.php?diff=63948&oldid=63947 * A * (+114) /* Symbols */
11:25:22 <esowiki> [[Forks & Forks]] M https://esolangs.org/w/index.php?diff=63949&oldid=63948 * A * (+189)
11:43:12 -!- atslash has joined.
12:11:29 -!- LKoen has 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.”).
12:50:49 <esowiki> [[User:YamTokTpaFa/sandbox3]] https://esolangs.org/w/index.php?diff=63950&oldid=62026 * YamTokTpaFa * (-2)
12:52:47 <esowiki> [[User:YamTokTpaFa/sandbox3]] https://esolangs.org/w/index.php?diff=63951&oldid=63950 * YamTokTpaFa * (+101)
12:53:23 <esowiki> [[POGAACK]] M https://esolangs.org/w/index.php?diff=63952&oldid=49935 * YamTokTpaFa * (+288)
12:59:39 <esowiki> [[Ante]] https://esolangs.org/w/index.php?diff=63953&oldid=41535 * YamTokTpaFa * (+42)
13:06:24 <esowiki> [[Nairb]] https://esolangs.org/w/index.php?diff=63954&oldid=50931 * YamTokTpaFa * (+168) More edits plz.
13:06:53 <esowiki> [[Tweet]] https://esolangs.org/w/index.php?diff=63955&oldid=49061 * YamTokTpaFa * (+29) +CAT
13:07:50 <esowiki> [[Print "deadfish"]] https://esolangs.org/w/index.php?diff=63956&oldid=47289 * YamTokTpaFa * (+24) Y U NO +CAT ?
13:09:44 <esowiki> [[Category:Works-in-Progress]] https://esolangs.org/w/index.php?diff=63957&oldid=44863 * YamTokTpaFa * (+24) Let's +CAT
13:11:27 -!- LKoen has joined.
13:12:54 <esowiki> [[User talk:Oerjan]] https://esolangs.org/w/index.php?diff=63958&oldid=62023 * YamTokTpaFa * (+515) /* I have lots of things I'd like to discuss. */ new section
13:13:39 <esowiki> [[User talk:Oerjan]] https://esolangs.org/w/index.php?diff=63959&oldid=63958 * YamTokTpaFa * (+122) /* I have lots of things I'd like to discuss. */
13:20:38 <arseniiv> <b_jonas> shachaf: you don't want to think about the Old Ones. and if you have to, at least don't remind everyone else on the channel about them. => too late, I’m already here
13:21:49 -!- arseniiv has left ("gone too far").
13:21:57 -!- arseniiv has joined.
13:28:29 -!- MDude has joined.
13:40:31 -!- Lord_of_Life has quit (Ping timeout: 246 seconds).
13:42:24 -!- Lord_of_Life has joined.
13:52:08 -!- MDude has quit (Ping timeout: 245 seconds).
13:59:50 -!- unlimiter has joined.
14:18:25 -!- atslash has quit (Quit: This computer has gone to sleep).
14:28:25 -!- mniip has joined.
14:36:53 -!- unlimiter has quit (Quit: Cya guys!).
15:24:47 -!- LKoen has 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.”).
16:08:49 -!- iconmaster has joined.
16:32:15 -!- AnotherTest has joined.
16:47:13 -!- iconmaster has quit (Ping timeout: 276 seconds).
16:47:36 -!- border has joined.
16:58:19 -!- unlimiter has joined.
17:02:26 -!- unlimiter has quit (Client Quit).
17:14:27 -!- border has quit (Remote host closed the connection).
17:31:07 -!- iconmaster has joined.
17:31:18 -!- iconmaster has quit (Read error: Connection reset by peer).
17:45:52 -!- mniip has quit (Ping timeout: 615 seconds).
17:50:52 -!- mniip has joined.
18:38:54 -!- laerling has joined.
18:50:19 <b_jonas> do you like the Niagara board game?
18:54:21 -!- yaewa has joined.
18:55:32 -!- moei has quit (Ping timeout: 244 seconds).
19:01:37 -!- moei has joined.
19:04:01 -!- FreeFull has joined.
19:05:06 -!- yaewa has quit (Ping timeout: 258 seconds).
19:21:18 <zzo38> I don't know what game
19:33:06 <tswett[m]> So, it's easy enough to come up with a Turing machine that halts if and only if ZFC is inconsistent.
19:33:15 <tswett[m]> I wonder about going the other way, though.
19:33:53 <tswett[m]> Consider a Turing machine C that halts if and only if the Collatz conjecture has a looping counterexample.
19:34:26 <tswett[m]> Can we come up with a set theory that is inconsistent if and only if this Turing machine halts?
19:34:34 <int-e> tswett[m]: The opposite would make consistency of ZFC decidable, wouldn't it? So you would be showing that ZFC is inconsistent, I think.
19:35:21 <b_jonas> I'm asking mostly because Niagara is a multiplayer game that could be reasonably played on irc, using a bot that implements the game rules
19:35:28 <int-e> (But this is not what you asked.)
19:35:51 <tswett[m]> Now, we could do something boring, like take an existing set theory and add an axiom asserting that the Collatz conjecture has no such counterexamples.
19:36:19 <int-e> Well... boring is good. :P
19:36:21 <tswett[m]> I wonder if we could do it in a more interesting and "natural" way.
19:44:30 <int-e> I doubt it. I don't know. Ask a proof theorist :)
19:50:09 -!- AnotherTest has quit (Ping timeout: 250 seconds).
19:54:32 <zzo38> I am sure I can play chess on IRC, as well as most other methods of communication.
19:55:21 <b_jonas> sure, it's not the only such game. some card games work too.
19:55:54 <zzo38> Maybe it is, but I think card games is more difficult.
19:58:13 <zzo38> What card game do you think will work?
19:58:25 <shachaf> Do you know how to play poker on IRC?
19:59:00 <b_jonas> with a trusted bot that does the randomness. I don't want to mess with the cryptographic magic that lets you avoid that.
19:59:18 <b_jonas> I don't even understand how some of that cryptographic magic works.
19:59:26 <zzo38> I would think poker would be difficult to do. But chess you can do easily; just write the moves, is all that is needed.
19:59:54 <b_jonas> and in poker, you just write the raises and keeps and folds
20:00:10 <zzo38> Because you need the cards.
20:00:22 <zzo38> Poker could be done with a bot that displays private cards to private messages and then public cards could be mentioned in the channel, though.
20:00:26 <b_jonas> sure. the GM bot tells the cards to you in private messages
20:00:53 <b_jonas> you want the inverse for Niagara, where you send simultaneous move choices to the bot in private message
20:01:01 <shachaf> Oh, I meant the cryptographic magic version without a trusted bot.
20:01:11 <b_jonas> part of the game has each player choose a card from their hand secretly, then revealing all of them
20:01:22 <zzo38> What I meant is that chess you don't need the bot or any private messages
20:01:29 <b_jonas> shachaf: I really don't understand how that works for poker and similar card games, even in theory
20:01:39 <zzo38> b_jonas: O, so it is a card game.
20:01:52 <b_jonas> it is reputed to be possible though, and I believe that
20:02:01 <b_jonas> zzo38: yes, that's true, for chess you don't need private messages
20:02:13 <b_jonas> because it's a full information game
20:17:01 <arseniiv> b_jonas: is there a light TL;DR description of Niagara you could link to?
20:17:21 <arseniiv> I’m interested in playing games over text channels via bots
20:18:30 <arseniiv> though I’m also very partially interested in that cryptographic magic, purely for understanding sake, so if that topic will arise in the future, I’m in
20:19:43 <b_jonas> arseniiv: I don't know. https://boardgamegeek.com/boardgame/13308/niagara has full description. but I can try to give a short description in a few lines of irc, without the full rules
20:20:13 <b_jonas> this is a German style board game for 3 to 5 players
20:20:53 <b_jonas> the fluff is that you are controlling canoes to collect gems on a river that has a waterfall, if you collect gems you win, if you fall down the waterfall you're penalized
20:21:33 <b_jonas> the board has a river that's like five map squares of straight river, then below that, a fork with two map squares on either branch, then below that a waterfall
20:22:52 <b_jonas> there are five mines on the shore where the gems start, three next to the lower three squares of the straight part, one shared between the upper squares of the two branches of the fork, and one shared between the lower squares
20:23:24 <b_jonas> there's a base camp on the shore next to the topmost square (there's nothing at the shore next to the square below that)
20:24:33 <b_jonas> the gimmick of the game is that the river flows down, which moves the floor of each water square one square down in the main branch, then the fifth square moves to one of the branches of the forks alternatingly, pushing the upper square of that branch to the lower square and the lower square to destruction by waterfall, while the other branch doesn't move in that flow
20:24:51 <b_jonas> when floors move this way, canoes on them move with them
20:25:16 <b_jonas> the way how the river flowing is computed is interesting:
20:25:50 <b_jonas> each player has a hand of seven cards, called 1 2 3 4 5 6 R, that they use up in seven consecutive turns then get the full hand back
20:26:15 <b_jonas> at the start of the turn, each player simultaneously secretly chooses a card from their hand to use for that turn, then they reveal it
20:26:43 <b_jonas> then they do actions with their canoes, generally they paddle as many tiles up or down with each canoe as their card shows, but the details are complicated
20:27:20 <b_jonas> and then the river flows as many tiles as the smallest number card revealed among the players, modified by the weather which can be one of -1, 0, 1, 2, and stays constant until a player uses the R card to adjust it
20:27:57 <b_jonas> so if you use a high card, you get to move your canoe long distance, but you risk that other players also bid a high number, in which case the river flows a lot down, bringing your canoes closer to the peril at the waterfall
20:29:16 <b_jonas> your can a gem from the mines on the shore into your canoe, or steal them from an other player's canoe, and transport them with your canoe. you can unload them at your base, where they're owned by you and mostly safe, the aim is to collect enough gems at your base; you can also strategically unload a gem at a mine
20:30:28 <arseniiv> <b_jonas> then the fifth square moves to one of the branches of the forks alternatingly => oh, nice, actually!
20:30:38 <b_jonas> for the movement, each of your two canoes move, except when both are at your home base, in which case only one moves. they either move as many tiles as your card shows, up or down, or two tiles less than that in which case you load or unload a gem to that canoe from a mine either before or after moving the canoe, and you choose the move independently for your two canoes
20:31:17 <b_jonas> the movement itself is sequential in seating order amongst the players, the player who moves first in this round moves last in the next round
20:31:50 <b_jonas> you can't move less than the card says, except when you move to the home base, in which case it's free
20:32:21 <b_jonas> the details are more complicated, boardgamegeek has a full rules sheet and photos of the board that you can use to reconstruct everything
20:35:08 <arseniiv> b_jonas: thank you, seems very decent!
20:35:56 <arseniiv> if someone starts writing a bot in a language I understand, maybe I’ll try to help
20:36:38 <arseniiv> though not knowing the rules in detail as of now, I can’t suggest anything useful
21:04:07 <tswett[m]> So I decided to load up a PC emulator and start writing an operating system in machine code.
21:04:18 <tswett[m]> After about 20 minutes of effort, I managed to write an instruction that jumps to itself.
21:05:09 <b_jonas> tswett[m]: nice. next, try one that prints hello world and then enters an infinite loop
21:05:34 <tswett[m]> Whoa whoa, *prints*? That's a bit much to ask. :D
21:06:20 <b_jonas> tswett[m]: you can choose between serial port and video, and in either case, you can choose between BIOS services or doing it on your own using the PC hardware
21:17:25 <tswett[m]> I'm now trying to save the machine state so that I can pick up where I left off instead of having to start over every time I close the page.
21:18:51 <b_jonas> write the relevant parts of the memory to the diskette
21:23:29 <esowiki> [[Symbols]] https://esolangs.org/w/index.php?diff=63960&oldid=58540 * Voltage2007 * (+1263)
21:29:16 -!- user24 has joined.
21:36:27 <zzo38> DOSBOX does not have the function to save the machine state but I would hope that in a later version they might add such thing possibly
21:43:04 <esowiki> [[AAAAAAAAAAAAAA!!!!]] https://esolangs.org/w/index.php?diff=63961&oldid=41034 * Voltage2007 * (+461)
21:47:59 -!- laerling has quit (Remote host closed the connection).
21:54:49 <tswett[m]> PCjs is awfully underdocumented...
21:56:49 <esowiki> [[Argh!]] https://esolangs.org/w/index.php?diff=63962&oldid=53674 * Voltage2007 * (+6)
21:58:01 <tswett[m]> The documentation says that you can create a "Save" button, but there's no documentation on what that button actually does or what is required to make it work.
21:59:05 <int-e> . o O ( Buttons are for pressing. Or for buttoning. )
22:07:05 <zzo38> I wrote this http://zzo38computer.org/gurpsgame/1.ui/wiki?name=Session+22 and try to think of what to write where it says "[Four weeks have passed.]". Mostly, Ziveruskex is studying mathematics, but other stuff could happen too, related and unrelated. I should see if anyone (including myself) has some idea what to write.
22:10:35 <int-e> Completely unperturbed, Earth moves silently through space, traveling 72 million kilometers around the Sun.
22:11:06 <zzo38> Yes, of course that is one thing, but is probably not remarkable to this.
22:13:47 -!- user24 has quit (Quit: Leaving).
22:17:12 -!- moei has quit (Quit: Leaving...).
22:24:58 <tswett[m]> Actually, it turns out that the earth is completely stationary and the universe is rotating around it. The motion is kept uniform and circular by various inertial forces.
22:25:39 <tswett[m]> For example, the sun and the moon (like almost everything in the universe) are moving east very quickly, which causes them to experience a downward Coriolis force.
22:36:00 <tswett[m]> I'm having a hell of a time with PCjs.
22:36:14 <tswett[m]> The vast majority of its functionality is undocumented, so you have to look at the source code.
22:36:36 <tswett[m]> The funny thing about that is that there's also no documentation about how to *use* the source code.
22:37:03 <tswett[m]> Like, they give you a collection of JavaScript files, and they say "here's the source code", but they don't explain how to do anything with those JavaScript files.
22:54:22 <int-e> tswett[m]: There are some package.json sprinkled in the source code which presumably are understood by npm. the build system is called gulp, and there's at least one 'gulpfile' around. The .js files are actually clojure sources?
22:55:00 <esowiki> [[ABC]] https://esolangs.org/w/index.php?diff=63963&oldid=53728 * Voltage2007 * (+754)
22:59:06 <int-e> tswett[m]: So... 'npm build' at the root should do something, I imagine.
23:06:41 <shachaf> I feel like I'm committing the great sin by commenting on how terrible npm and npm culture is but it's so bad I'm going to say it anyway.
23:07:04 <shachaf> I wrote a little program and it has over 300 dependencies.
23:07:18 <shachaf> Most of them seem to be nonsense.
23:07:50 <int-e> . o O ( cabal install criterion )
23:08:17 <int-e> 49 packages, okay, not quite 300
23:08:51 <shachaf> Also people seem to be incompetent and have no taste. They just write bad code and have no idea about anything.
23:08:56 <int-e> TIL about 'gauge' which is 'criterion' but some non-essential features and a lot of dependencies cut.
23:09:10 <int-e> It works, therefore it can be shipped.
23:09:24 <int-e> It seems to work, therefore it can be shipped.
23:09:47 <shachaf> It was shipped, therefore it seems to work.
23:10:00 <int-e> I see I still have a lot to learn.
23:10:43 <shachaf> Did you know NPM has over a million packages now?
23:11:03 <shachaf> The NPM greatest hits include packages like https://www.npmjs.com/package/ansi-red
23:11:21 <shachaf> A million downloads a week.
23:11:58 <int-e> this one is ... brilliant
23:12:12 <int-e> I mean... it has a dependency!
23:12:32 <shachaf> Of course. It's impossible to write software without dependencies.
23:12:55 <shachaf> The npm command line program takes over 500ms to print the help message.
23:13:24 <zzo38> It is JavaScript; it has to start the JavaScript code, unlike the C code which is compiled into native code before you try to execute it.
23:13:40 <int-e> the author has 834 repositories on gituhub
23:13:51 <b_jonas> shachaf: the first time, or also the subsequent times?
23:14:54 <int-e> shachaf: sadly I can see how "modern" software engineering might make such a "package" popular.
23:14:54 <shachaf> OK, it almost gets down to 400ms some runs.
23:15:21 <b_jonas> shachaf: make a cheating benchmark that doesn't count the startup time then
23:15:46 <shachaf> zzo38: And yet the Ruby `gem` program, written in Ruby, takes 100ms (which is still absurdly long).
23:16:05 <int-e> shachaf: I bet there's an umbrella package that uses them all, and then some semi-useful library with actual functionality that depends on that for colorful messages.
23:16:13 <shachaf> If "it's written in JavaScript" is an excuse for making the program bad, the solution is not to write it in JavaScript.
23:16:38 <shachaf> (I'm pretty sure JavaScript programs don't have to take 400ms to print a help message, though, so it's not really an excuse.)
23:16:50 <zzo38> Yes, I don't know why npm is slower.
23:16:54 <int-e> though, hmm, https://www.npmjs.com/package/ansi-bgcyan has only 100k downloads.
23:17:05 <b_jonas> or you could realize that just because you're using javascript, you don't have to use the most popular library for doing whatever you want
23:17:33 <int-e> shachaf: How much Javascript does node have to JIT-compile before that help message is printed?
23:18:03 <shachaf> Probably a trillion lines.
23:18:26 <shachaf> But I wouldn't even blame JavaScript for that. You can do an OK job in JavaScript for this kind of thing.
23:18:54 <int-e> ... hence my question
23:19:20 <int-e> if you can get to the help message before you compile 100k lines of code, maybe half a second would be node's fault.
23:20:01 <int-e> (that number is pulled out of thin air)
23:20:06 <tswett[m]> Good news, I got persistence working in PCjs. \o/
23:20:19 <shachaf> On the other hand I'm timing Python pip and it's over 900ms.
23:20:31 <int-e> tswett[m] unlocks "persistence" achievement.
23:20:32 <shachaf> So maybe terrible software is just the norm.
23:21:12 <int-e> Right, Python can do better as well.
23:21:40 <shachaf> guess how long apt takes to print a help message
23:21:40 <tswett[m]> Now I have to figure out how the heck keyboard input works on an IBM PC. :D
23:22:58 <shachaf> I wrote a timing program and it's better in terms of the information it shows than my /usr/bin/time or bash builtin time.
23:23:20 <int-e> shachaf: I felt bad about one of our academic tools taking 0.2s to print the help message.
23:23:43 <shachaf> How many people use your academic tool?
23:24:13 <int-e> (It's written in ocaml. It used to be much faster, but then ocaml decided to go the first-class module route, punishing the separation of interfaces and modules...)
23:24:24 <int-e> Hmm, a couple of dozen maybe.
23:24:27 <shachaf> npm has millions of users. If they use it once a day on average, that's several days of waiting for it to print the help message, every day.
23:24:52 <int-e> Obviously the right thing to do is to print out the help message once and for all.
23:26:04 <shachaf> (Of course every npm action other than printing a help message takes longer than 400ms, even the trivial ones.)
23:28:56 <int-e> Oh well, you'd have to design for this, rather than starting your file with all the 'requires' that are potentially relevant (as I presume npm is doing).
23:29:14 <int-e> (Or maybe it's worse and it's actually a huge minimized javascript file)
23:29:43 <int-e> obviously I hardly know what I'm talking about
23:29:56 <int-e> bash: npm: command not found
23:29:59 <lambdabot> error: Variable not in scope: time :: t0 -> terror: Variable not in scope: npm
23:30:35 <int-e> shachaf: ^^ can't reproduce
23:30:44 <shachaf> int-e: Oh, you have the best version of npm installed.
23:30:49 <shachaf> http://slbkbs.org/tmp/tym.c -- I guess I already posted this here.
23:31:54 <int-e> I guess that's a tiny bit more informative than /usr/bin/time
23:32:22 <shachaf> /usr/bin/time supports almost all that information with a format string.
23:32:27 <shachaf> At least the one on Debian does.
23:32:38 <shachaf> But it doesn't have precise timestamps.
23:32:58 <b_jonas> isn't using the right incantation of options to time enough?
23:33:13 <int-e> Heh I've never looked at the manpage for 'time'.
23:33:16 <b_jonas> shachaf: the GNU one, not the builtin one
23:33:24 <b_jonas> int-e: it's an info page because it's GNU software
23:33:42 <int-e> there's a manpage which seems comprehensive enough
23:33:58 <shachaf> b_jonas: No, it can only give you second precision for elapsed time.
23:34:15 <shachaf> Otherwise yes. I used to use it.
23:34:40 -!- xkapastel has joined.
23:34:47 <int-e> huh. SEE ALSO: tcsh, prinf... that seems a bit random.
23:35:32 <int-e> especially since it's printf(3)
23:36:59 <int-e> tcsh is referenced because it extends the tcsh `time' builtin, and printf for the similarity in format specifiers. Never mind.
23:37:20 <shachaf> In bash time is not a builtin.
23:37:48 <shachaf> That means that if you alias the keyword "time" to something else, you have no way to invoke it.
23:38:00 <b_jonas> shachaf: you do, you can use (builtin time foo)
23:38:09 <b_jonas> if you also alias builtin to something else, then you're screwed
23:38:16 <int-e> presumably it's a keyword so that it can apply to a whole pipe...
23:38:25 <zzo38> When I write programs in JavaScript generally I try to avoid too many dependencies
23:38:53 <shachaf> b_jonas: No, it's not a builtin, it's a keyword.
23:39:34 <shachaf> The only way I know is to unalias it.
23:45:38 <shachaf> Here's a pretty good package: https://www.npmjs.com/package/is-unc-path
23:45:59 <shachaf> It takes a string and matches it against a regular expression.
23:46:17 <shachaf> It has a dependency, which is a different package by the same author that exports that regular expression.
23:47:34 <int-e> it's the same author as ansi-red
23:48:11 <b_jonas> shachaf: some perl modules pull in a large dependency forest through a module that it uses for author-only documentation coverage tests, where that module pulls in another module for finding the difference between two sets, to pretty print the set of functions that do not have doc coverage
23:48:11 <shachaf> Yes. He has over 1400 npm packages.
23:48:32 <shachaf> But he's not the only one with the coveted comma in the number of packages.
23:49:46 <int-e> different author: https://www.npmjs.com/package/is-finite
23:50:49 <shachaf> A slacker with only 1.1 kilopackages
23:51:27 <int-e> so unpopular... https://www.npmjs.com/package/leading-zeros
23:53:05 <shachaf> For a good time type a package name into https://npm.anvaka.com/
23:53:09 <int-e> words of wisdom: While polyfills are naughty, ponyfills are pure, just like ponies.
23:53:27 <int-e> (Despite my choice of language, I do not want to see that as a wisdom entry.)
23:55:21 <shachaf> https://npm.anvaka.com/#/view/2d/npm
23:55:49 <shachaf> Now I see why npm takes 400ms to start up.
23:56:26 <int-e> shachaf: I guess this is a glimpse into the wonderful Javascript/npm culture you mentioned... https://kikobeats.com/polyfill-ponyfill-and-prollyfill/
23:57:07 <int-e> Here's me hoping it's just an esoteric subculture.
23:59:17 <shachaf> int-e: I read that article and derived no pleasure from it.
00:00:00 <int-e> shachaf: I got a simultaneous sense of wonder and disgust.
00:01:30 <int-e> IOW an experience almost, but not quite, completely unlike pleasure.
00:06:02 <shachaf> Anyway now Rust is importing npm culture or something. Or so I hear.
00:06:14 <shachaf> I'm sure it'll turn out great.
00:07:28 <b_jonas> shachaf: right, so instead of just pulling in the posix regex function from libc, you can choose to use the package called "regex", which only has like ten transitive dependencies, if you're the kind who can be fooled by simple package names
00:08:06 <int-e> shachaf: they have a cargo cult, right?
00:08:11 <b_jonas> again, the language is good, the dependency hell is optional, you aren't required to use those popular packages, you can just use any good old library that has a C interface
00:08:15 <shachaf> int-e: I like how is-even depends on is-odd which depends on is-number.
00:08:28 <int-e> shachaf: that seems arbitrary
00:08:35 <shachaf> is-number is a good package because it supports not only things with number types but also strings that can be parsed as numbers.
00:08:37 <int-e> clearly is-odd should depend on is-even
00:08:50 <b_jonas> they also have an xml package, reimplemented in pure rust, that can't read utf-16 xml files, if you like that sort of thing
00:09:10 <int-e> shachaf: I also get the feeling that you should stop browsing npm RIGHT NOW
00:09:45 <int-e> shachaf: If you want to get lost in a spiral of links, at least do it somewhere pleasant like allthetropes
00:10:41 <b_jonas> shachaf: doesn't javascript have a built-in & operator, so you can just do 0 != (x & 1) to test if a number is odd?
00:11:43 <shachaf> Maybe, but I took int-e's advice and I'm not going to think about it.
00:25:30 <arseniiv> we need an npm-fold way for an extraordimensionary esolang
00:26:53 <int-e> b_jonas: I don't know what you mean by "n+k rules"
00:28:11 <int-e> Hmm I guess the Wikipedia drama is more interesting.
00:28:44 <int-e> (this one, https://en.wikipedia.org/wiki/Wikipedia:Community_response_to_the_Wikimedia_Foundation%27s_ban_of_Fram#Open_letter_from_the_Arbitration_Committee_to_the_WMF_Board )
00:29:57 <HackEso> enrichment center? ¯\(°_o)/¯
00:30:19 <HackEso> There's cake inside it. Tear it apart, rip open your companion, and extract the delicious, delicious cake...
00:30:22 <HackEso> Hello, and again, welcome to the Aperture Science Computer Aided Internet Relay Chat & Enrichment Center. Please enjoy your stay at #esoteric, because you will never leave.
00:31:10 -!- arseniiv has quit (Ping timeout: 246 seconds).
00:31:17 <shachaf> int-e: I want to use good software instead of bad software. What do I do?
00:31:42 <int-e> shachaf: stop using software
00:32:37 <shachaf> Hmm, that addresses the second part but not the first.
00:33:02 <b_jonas> shachaf: do you have any specific goal for which you want to use software?
00:33:14 <int-e> Find, you're allowed to run your favorite hello world program from time to time, but only if you promise not to look at the environment it's running in.
00:34:16 <int-e> You could also use this elegantly designed platform: https://en.wikipedia.org/wiki/Etch_A_Sketch
00:36:18 <shachaf> I wish I could shake my computer whenever anything was bad.
00:37:56 <int-e> @google "force feedback PCI card"
00:37:57 <lambdabot> https://uibkaap.tk/Wo_Online-Filme-Download.html
00:38:08 <int-e> ... I won't go there.
00:49:17 <tswett[m]> I'm *still* trying to figure out how to process keyboard input in PCjs.
01:02:13 <b_jonas> tswett[m]: call the relevant BIOS functions maybe
01:04:09 <tswett[m]> Maybe I shouldn't have done that. :D
01:04:38 <b_jonas> you can't get rid of the BIOS, it resides in a ROM chip. if you try to write it, it just ignores the writes.
01:04:51 <b_jonas> just reboot the machine and the BIOS will work again
01:04:58 <tswett[m]> I got rid of the part that emulates that ROM chip.
01:05:07 <zzo38> Maybe the SQLite command line program should have a command to edit triggers by using an external editor.
01:05:15 <b_jonas> nice, then your computer won't even boot up
01:05:41 <tswett[m]> In any case, yes, out of all the things this computer is doing, booting is not one of them.
01:06:00 <zzo38> (Could also be used for editing the definition of a view or index.)
01:40:19 -!- Lord_of_Life_ has joined.
01:42:44 -!- Lord_of_Life has quit (Ping timeout: 268 seconds).
01:43:00 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
01:44:04 -!- xkapastel has quit (Quit: Connection closed for inactivity).
02:18:14 <tswett[m]> The good news: I've managed to read from the keyboard data port.
02:19:17 <b_jonas> tswett[m]: read it from the keyboard interrupt handler
02:29:01 <tswett[m]> More bad news: the screen doesn't update while the computer is running, only while it's stopped.
02:32:02 -!- zhiayang has quit (Remote host closed the connection).
02:32:52 -!- zhiayang has joined.
02:36:54 <tswett[m]> Well, either that, or the screen only updates at a multiple of 34304 (= 2^9 * 67) clock cycles, so that it happens to display the same thing every time it updates.
02:43:37 -!- adu has quit (Remote host closed the connection).
02:44:21 -!- adu has joined.
03:07:56 <esowiki> [[Category:Works-in-Progress]] M https://esolangs.org/w/index.php?diff=63964&oldid=63957 * A * (+31) All of these languages are WIP
03:14:06 <esowiki> [[Pistons & Pistons]] M https://esolangs.org/w/index.php?diff=63965&oldid=63935 * A * (+2)
03:35:16 -!- Sgeo has joined.
03:36:42 -!- Sgeo__ has quit (Ping timeout: 272 seconds).
03:45:05 -!- FreeFull has quit.
03:49:24 <zzo38> Now bystand version 0.1 is released. Posting is not implemented yet, but other than that it seems to work as far as I can tell. Please make a suggestion or whatever else it is.
03:50:19 <zzo38> It is http://zzo38computer.org/prog/bystand.zip Do you like this?
03:59:38 <zzo38> shachaf: If you want to use good software instead of bad software, then write a better software, please.
04:02:09 <shachaf> How good should I make my software?
04:03:14 <zzo38> shachaf: As good as you need it to be, I suppose.
04:17:42 <adu> shachaf: Imagine that you are trying to impress E. Scrooge, and that every success if followed by a "bah humbug"
06:12:24 -!- Cale has quit (*.net *.split).
06:12:26 -!- Camto[m] has quit (*.net *.split).
06:12:27 -!- grumble has quit (*.net *.split).
06:12:27 -!- uplime has quit (*.net *.split).
06:12:27 -!- pikhq has quit (*.net *.split).
06:12:27 -!- sprocklem has quit (*.net *.split).
06:12:27 -!- b_jonas has quit (*.net *.split).
06:12:27 -!- Hooloovo0 has quit (*.net *.split).
06:12:27 -!- sebbu has quit (*.net *.split).
06:12:28 -!- GeekDude has quit (*.net *.split).
06:12:28 -!- lifthrasiir has quit (*.net *.split).
06:12:28 -!- Lord_of_Life has quit (*.net *.split).
06:12:28 -!- rain1 has quit (*.net *.split).
06:12:28 -!- rodgort has quit (*.net *.split).
06:12:28 -!- trn has quit (*.net *.split).
06:12:28 -!- Melvar has quit (*.net *.split).
06:12:28 -!- limbo_ has quit (*.net *.split).
06:12:28 -!- Sgeo has quit (*.net *.split).
06:12:28 -!- mniip has quit (*.net *.split).
06:12:28 -!- int-e has quit (*.net *.split).
06:12:28 -!- ineiros has quit (*.net *.split).
06:12:28 -!- lizzie has quit (*.net *.split).
06:12:29 -!- shachaf has quit (*.net *.split).
06:12:29 -!- rdococ has quit (*.net *.split).
06:12:31 -!- adu has quit (*.net *.split).
06:12:31 -!- hakatashi has quit (*.net *.split).
06:12:31 -!- joast has quit (*.net *.split).
06:12:32 -!- ocharles has quit (*.net *.split).
06:12:32 -!- rickbutton has quit (*.net *.split).
06:12:32 -!- ski has quit (*.net *.split).
06:12:32 -!- nfd9001 has quit (*.net *.split).
06:12:32 -!- lambdabot has quit (*.net *.split).
06:12:32 -!- relrod has quit (*.net *.split).
06:12:32 -!- heroux has quit (*.net *.split).
06:12:32 -!- shikhin has quit (*.net *.split).
06:12:32 -!- jix has quit (*.net *.split).
06:12:32 -!- aloril has quit (*.net *.split).
06:12:32 -!- diginet has quit (*.net *.split).
06:12:32 -!- vertrex has quit (*.net *.split).
06:12:32 -!- izabera has quit (*.net *.split).
06:12:33 -!- mich181189 has quit (*.net *.split).
06:12:33 -!- lynn has quit (*.net *.split).
06:12:33 -!- Lymia has quit (*.net *.split).
06:12:33 -!- dog_star has quit (*.net *.split).
06:12:33 -!- fungot has quit (*.net *.split).
06:12:33 -!- zemhill_______ has quit (*.net *.split).
06:12:33 -!- sftp has quit (*.net *.split).
06:12:33 -!- kmc has quit (*.net *.split).
06:12:33 -!- haavard has quit (*.net *.split).
06:12:33 -!- quintopia has quit (*.net *.split).
06:12:33 -!- economicsbat has quit (*.net *.split).
06:12:33 -!- Taneb has quit (*.net *.split).
06:12:33 -!- tromp has quit (*.net *.split).
06:12:34 -!- wmww has quit (*.net *.split).
06:12:34 -!- ivzem[m] has quit (*.net *.split).
06:12:35 -!- Deewiant has quit (*.net *.split).
06:12:35 -!- zhiayang has quit (*.net *.split).
06:12:35 -!- aji has quit (*.net *.split).
06:12:35 -!- zzo38 has quit (*.net *.split).
06:12:35 -!- APic has quit (*.net *.split).
06:12:36 -!- fizzie has quit (*.net *.split).
06:12:37 -!- ^[ has quit (*.net *.split).
06:12:37 -!- ProofTechnique has quit (*.net *.split).
06:12:37 -!- moony has quit (*.net *.split).
06:12:37 -!- stux|away has quit (*.net *.split).
06:12:37 -!- j4cbo has quit (*.net *.split).
06:12:37 -!- glowcoil has quit (*.net *.split).
06:12:38 -!- xylochoron[m] has quit (*.net *.split).
06:12:39 -!- FireFly has quit (*.net *.split).
06:12:39 -!- sparr has quit (*.net *.split).
06:12:39 -!- budonyc has quit (*.net *.split).
06:12:39 -!- clog has quit (*.net *.split).
06:12:39 -!- myname has quit (*.net *.split).
06:12:39 -!- HackEso has quit (*.net *.split).
06:12:39 -!- erdic has quit (*.net *.split).
06:12:39 -!- paul2520 has quit (*.net *.split).
06:17:08 <esowiki> [[ABC]] M https://esolangs.org/w/index.php?diff=63966&oldid=63963 * Voltage2007 * (-60) Improved hello world code
06:18:14 -!- Sgeo has joined.
06:18:14 -!- adu has joined.
06:18:14 -!- zhiayang has joined.
06:18:14 -!- Lord_of_Life has joined.
06:18:14 -!- mniip has joined.
06:18:14 -!- ski has joined.
06:18:14 -!- aji has joined.
06:18:14 -!- sprocklem has joined.
06:18:14 -!- b_jonas has joined.
06:18:14 -!- budonyc has joined.
06:18:14 -!- tromp has joined.
06:18:14 -!- sftp has joined.
06:18:14 -!- int-e has joined.
06:18:14 -!- Hooloovo0 has joined.
06:18:14 -!- zzo38 has joined.
06:18:14 -!- nfd9001 has joined.
06:18:14 -!- ineiros has joined.
06:18:14 -!- kmc has joined.
06:18:14 -!- lambdabot has joined.
06:18:14 -!- hakatashi has joined.
06:18:14 -!- APic has joined.
06:18:14 -!- lizzie has joined.
06:18:14 -!- rain1 has joined.
06:18:14 -!- sebbu has joined.
06:18:14 -!- rdococ has joined.
06:18:14 -!- joast has joined.
06:18:14 -!- wmww has joined.
06:18:14 -!- ivzem[m] has joined.
06:18:14 -!- xylochoron[m] has joined.
06:18:14 -!- rodgort has joined.
06:18:14 -!- ^[ has joined.
06:18:14 -!- relrod has joined.
06:18:14 -!- trn has joined.
06:18:14 -!- haavard has joined.
06:18:14 -!- shachaf has joined.
06:18:14 -!- ProofTechnique has joined.
06:18:14 -!- heroux has joined.
06:18:14 -!- Melvar has joined.
06:18:14 -!- moony has joined.
06:18:14 -!- clog has joined.
06:18:14 -!- limbo_ has joined.
06:18:14 -!- shikhin has joined.
06:18:14 -!- GeekDude has joined.
06:18:14 -!- jix has joined.
06:18:14 -!- stux|away has joined.
06:18:14 -!- fizzie has joined.
06:18:14 -!- mich181189 has joined.
06:18:14 -!- quintopia has joined.
06:18:14 -!- aloril has joined.
06:18:14 -!- lifthrasiir has joined.
06:18:14 -!- lynn has joined.
06:18:14 -!- Lymia has joined.
06:18:14 -!- j4cbo has joined.
06:18:14 -!- economicsbat has joined.
06:18:14 -!- ocharles has joined.
06:18:14 -!- glowcoil has joined.
06:18:14 -!- rickbutton has joined.
06:18:14 -!- myname has joined.
06:18:14 -!- HackEso has joined.
06:18:14 -!- dog_star has joined.
06:18:14 -!- diginet has joined.
06:18:14 -!- erdic has joined.
06:18:14 -!- Taneb has joined.
06:18:14 -!- fungot has joined.
06:18:14 -!- vertrex has joined.
06:18:14 -!- FireFly has joined.
06:18:14 -!- Deewiant has joined.
06:18:14 -!- sparr has joined.
06:18:14 -!- izabera has joined.
06:18:14 -!- zemhill_______ has joined.
06:18:14 -!- paul2520 has joined.
06:18:23 -!- Cale has joined.
06:18:23 -!- Camto[m] has joined.
06:18:23 -!- grumble has joined.
06:18:23 -!- uplime has joined.
06:18:23 -!- pikhq has joined.
07:18:00 -!- mniip has quit (Quit: This page is intentionally left blank.).
07:26:18 -!- mniip has joined.
08:11:10 -!- AnotherTest has joined.
08:11:56 -!- tswett[m] has quit (Remote host closed the connection).
08:12:21 -!- Camto[m] has quit (Remote host closed the connection).
08:12:25 -!- wmww has quit (Write error: Broken pipe).
08:12:25 -!- ivzem[m] has quit (Remote host closed the connection).
08:12:28 -!- xylochoron[m] has quit (Remote host closed the connection).
08:18:42 -!- Camto[m] has joined.
08:24:46 -!- pikhq has quit (Ping timeout: 252 seconds).
08:25:02 -!- pikhq has joined.
08:33:20 -!- john_metcalf has joined.
08:39:06 -!- tswett[m] has joined.
08:39:06 -!- xylochoron[m] has joined.
08:39:13 -!- wmww has joined.
08:39:13 -!- ivzem[m] has joined.
09:46:25 -!- john_metcalf has quit (Ping timeout: 252 seconds).
10:22:51 -!- grumble has quit (Quit: inside their machines there is one empty file).
10:27:45 -!- gurmble has joined.
10:27:50 -!- gurmble has changed nick to grumble.
10:38:16 -!- atslash has joined.
12:41:52 -!- arseniiv has joined.
13:06:38 <esowiki> [[Special:Log/newusers]] create * Relts * New user account
13:40:54 -!- Lord_of_Life_ has joined.
13:43:26 -!- Lord_of_Life has quit (Ping timeout: 272 seconds).
13:43:29 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
13:47:00 -!- FreeFull has joined.
14:40:43 <esowiki> [[Special:Log/newusers]] create * DoggyDogWhirl * New user account
15:00:24 <esowiki> [[Esolang:Introduce yourself]] M https://esolangs.org/w/index.php?diff=63967&oldid=63883 * DoggyDogWhirl * (+287) I'm DoggyDogWhirl. Nice to meet you!
15:37:19 <esowiki> [[Talk:Pistons & Pistons]] https://esolangs.org/w/index.php?diff=63968&oldid=63936 * Areallycoolusername * (+386)
15:38:00 <esowiki> [[Talk:Pistons & Pistons]] https://esolangs.org/w/index.php?diff=63969&oldid=63968 * Areallycoolusername * (+133)
15:40:28 <esowiki> [[Pistons & Pistons]] https://esolangs.org/w/index.php?diff=63970&oldid=63965 * Areallycoolusername * (+83)
16:40:51 <esowiki> [[User:DoggyDogWhirl]] N https://esolangs.org/w/index.php?oldid=63971 * DoggyDogWhirl * (+49)
17:21:26 <zzo38> How to define a text encoding in Firefox?
18:10:25 <esowiki> [[DDR]] N https://esolangs.org/w/index.php?oldid=63972 * DoggyDogWhirl * (+1658) Created page with "'''DDR''' is an [[esoteric programming language]] created by [[User:DoggyDogWhirl]]. It is inspired by the video game series ''Dance Dance Revolution'', and takes many of its..."
19:16:23 <esowiki> [[Special:Log/newusers]] create * Sideshowbob * New user account
19:19:02 <esowiki> [[Language list]] M https://esolangs.org/w/index.php?diff=63973&oldid=63942 * DoggyDogWhirl * (+10)
19:23:42 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=63974&oldid=63967 * Sideshowbob * (+167) /* Introductions */
19:25:10 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=63975&oldid=63974 * Sideshowbob * (+13) /* Introductions */
19:26:51 <esowiki> [[User:DoggyDogWhirl]] M https://esolangs.org/w/index.php?diff=63976&oldid=63971 * DoggyDogWhirl * (+24)
19:39:41 -!- laerling has joined.
19:57:39 <esowiki> [[DDR]] M https://esolangs.org/w/index.php?diff=63977&oldid=63972 * DoggyDogWhirl * (+42)
20:38:45 <zzo38> I made a program "RADMML", which can write music in Reality Adlib Tracker version 2 format. (Reality Adlib Tracker itself is only for Windows and Macintosh, but RADMML can be used on Linux, too. They provided source code for a playback software on Windows; I was able to modify it to work on Linux.)
20:42:53 -!- AnotherTest has quit (Ping timeout: 252 seconds).
22:02:40 -!- laerling has quit (Remote host closed the connection).
23:03:31 -!- tromp has quit (Remote host closed the connection).
23:04:04 -!- tromp has joined.
23:08:27 -!- tromp has quit (Ping timeout: 252 seconds).
23:18:46 -!- tromp has joined.
23:23:06 -!- tromp has quit (Ping timeout: 252 seconds).
23:34:20 -!- arseniiv has quit (Ping timeout: 272 seconds).
23:40:34 <zzo38> Did you look at bystand and see if it is good?
23:53:33 <esowiki> [[DDR/Python Implementation]] N https://esolangs.org/w/index.php?oldid=63978 * DoggyDogWhirl * (+2406)
23:53:39 <esowiki> [[DDR]] https://esolangs.org/w/index.php?diff=63979&oldid=63977 * DoggyDogWhirl * (+74)
00:10:37 -!- b_jonas has quit (Quit: leaving).
00:18:53 -!- tromp has joined.
00:23:15 -!- tromp has quit (Ping timeout: 252 seconds).
01:42:08 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
01:43:02 <esowiki> [[FireStarter]] N https://esolangs.org/w/index.php?oldid=63980 * DoggyDogWhirl * (+3278)
01:44:21 -!- Lord_of_Life has joined.
02:07:29 -!- tromp has joined.
02:12:28 -!- tromp has quit (Ping timeout: 276 seconds).
02:34:43 <kmc> shachaf: I saw a scow today
02:34:46 <kmc> https://en.wikipedia.org/wiki/Alma_(1891)
02:46:47 -!- Sgeo_ has joined.
02:49:37 -!- Sgeo has quit (Ping timeout: 245 seconds).
02:51:50 <esowiki> [[Talk:Keg]] M https://esolangs.org/w/index.php?diff=63981&oldid=63536 * A * (+109) /* Upcoming Features in Keg+ */
02:57:47 <esowiki> [[Talk:Keg]] https://esolangs.org/w/index.php?diff=63982&oldid=63981 * JonoCode9374 * (+133) /* Upcoming Features in Keg+ */
03:03:12 -!- tromp has joined.
03:07:51 -!- tromp has quit (Ping timeout: 264 seconds).
04:13:19 -!- Sgeo_ has quit (Read error: Connection reset by peer).
04:13:43 -!- Sgeo_ has joined.
04:51:09 -!- tromp has joined.
04:55:51 -!- tromp has quit (Ping timeout: 264 seconds).
05:18:29 -!- nfd9001 has quit (Ping timeout: 268 seconds).
05:20:45 -!- tromp has joined.
05:25:00 -!- tromp has quit (Ping timeout: 252 seconds).
05:48:31 -!- zhiayang has quit (Ping timeout: 246 seconds).
05:58:18 -!- tromp has joined.
05:59:21 -!- zhiayang has joined.
06:02:46 -!- tromp has quit (Ping timeout: 252 seconds).
06:14:47 <zzo38> I don't like touch screen
06:20:06 -!- nfd9001 has joined.
06:24:57 -!- nfd9001 has quit (Ping timeout: 250 seconds).
06:30:08 -!- Potato1 has joined.
06:30:15 -!- Potato1 has left.
06:56:49 -!- john_metcalf has joined.
06:57:04 <esowiki> [[Combinational logic]] N https://esolangs.org/w/index.php?oldid=63983 * A * (+731) Very short page for a simple computational model
06:57:51 <zzo38> It is not as good as a real keyboard.
06:59:13 <esowiki> [[Combinational logic]] M https://esolangs.org/w/index.php?diff=63984&oldid=63983 * A * (+99)
07:11:02 <shachaf> Oh, using touch screens for typing is terrible, of course.
07:11:17 <shachaf> But for analog input it can be good.
07:12:40 <zzo38> It can, if you have a stylus rather than touching it directly by hand. For entering text and commands though, a keyboard is much better.
07:15:08 -!- tromp has joined.
07:27:57 -!- nfd9001 has joined.
07:29:25 <esowiki> [[Combinational logic]] M https://esolangs.org/w/index.php?diff=63985&oldid=63984 * A * (+220)
07:31:29 -!- AnotherTest has joined.
07:48:06 -!- tromp has quit (Remote host closed the connection).
07:57:51 -!- tromp has joined.
08:00:43 -!- Sgeo__ has joined.
08:04:22 -!- Sgeo_ has quit (Ping timeout: 268 seconds).
08:04:57 <esowiki> [[Combinational logic]] M https://esolangs.org/w/index.php?diff=63986&oldid=63985 * A * (+68)
08:13:44 <esowiki> [[Combinational logic]] M https://esolangs.org/w/index.php?diff=63987&oldid=63986 * A * (+471)
08:14:25 <esowiki> [[Combinational logic]] M https://esolangs.org/w/index.php?diff=63988&oldid=63987 * A * (+24)
08:17:58 <esowiki> [[Combinational logic]] M https://esolangs.org/w/index.php?diff=63989&oldid=63988 * A * (-171)
08:28:10 -!- AnotherTest has quit (Ping timeout: 276 seconds).
08:37:32 <zzo38> How common is it to use the alpha channel of a picture file as a depth buffer?
08:45:21 <zzo38> What dies "Device-to-host register FISes sent due to a COMRESET" mean?
08:52:04 <shachaf> Those two questions have the same answer: I don't know.
08:52:17 <esowiki> [[Combinational logic]] M https://esolangs.org/w/index.php?diff=63990&oldid=63989 * A * (+1048)
09:09:14 -!- FreeFull has quit.
09:12:45 <esowiki> [[Combinational logic]] M https://esolangs.org/w/index.php?diff=63991&oldid=63990 * A * (+110)
10:12:12 -!- wob_jonas has joined.
10:14:14 <wob_jonas> zzo38: I haven't seen that. I guess you could use that as a workaround, because most picture formats only allow a fixed set of channel arrangements, but it's still not very good, because often you'd want the depth buffer to have more bits of depth or differently lossless compression than the other channels.
10:14:42 <wob_jonas> So I'd prefer to use a separate image.
10:45:58 -!- arseniiv has joined.
10:49:39 <esowiki> [[Combinational logic]] M https://esolangs.org/w/index.php?diff=63992&oldid=63991 * A * (+216)
11:57:17 -!- Sgeo__ has quit (Read error: Connection reset by peer).
11:57:41 -!- Sgeo__ has joined.
12:22:25 <esowiki> [[Pistons & Pistons]] https://esolangs.org/w/index.php?diff=63993&oldid=63970 * Areallycoolusername * (+149)
12:48:57 -!- xkapastel has joined.
12:54:11 -!- AnotherTest has joined.
13:04:48 -!- Cale has quit (Ping timeout: 252 seconds).
13:05:25 -!- user24 has joined.
13:09:31 -!- user24 has quit (Client Quit).
13:09:48 -!- user24 has joined.
13:18:07 <esowiki> [[FireStarter]] M https://esolangs.org/w/index.php?diff=63994&oldid=63980 * DoggyDogWhirl * (+221)
13:23:18 -!- Cale has joined.
13:44:13 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
13:44:59 -!- Lord_of_Life has joined.
13:45:41 -!- Phantom_Hoover has joined.
13:55:27 -!- john_metcalf has quit (Ping timeout: 245 seconds).
14:03:33 -!- wob_jonas has quit (Remote host closed the connection).
15:08:11 -!- Ains has joined.
15:15:45 -!- Sgeo_ has joined.
15:18:47 -!- Sgeo__ has quit (Ping timeout: 245 seconds).
15:52:49 -!- user24 has quit (Quit: Leaving).
15:58:33 -!- xkapastel has quit (Quit: Connection closed for inactivity).
17:14:50 <esowiki> [[Special:Log/newusers]] create * Anne drew Andrew and Drew * New user account
17:20:17 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=63995&oldid=63975 * Anne drew Andrew and Drew * (+268) /* Introductions */ hello there
17:26:45 -!- unlimiter has joined.
17:29:26 -!- unlimiter has quit (Client Quit).
17:30:51 -!- Sgeo_ has quit (Read error: Connection reset by peer).
17:31:19 -!- Sgeo_ has joined.
17:39:14 <esowiki> [[Special:Log/newusers]] create * DumpRegs * New user account
17:44:25 -!- tromp has quit (Remote host closed the connection).
17:52:25 -!- tromp has joined.
17:55:35 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=63996&oldid=63995 * DumpRegs * (+197) /* Introductions */
18:07:16 <esowiki> [[User:DumpRegs]] N https://esolangs.org/w/index.php?oldid=63997 * DumpRegs * (+38) Created page with "I created the an Esolang called Screw."
18:07:27 <esowiki> [[User:DumpRegs]] https://esolangs.org/w/index.php?diff=63998&oldid=63997 * DumpRegs * (-4)
18:09:45 <esowiki> [[User:DumpRegs]] https://esolangs.org/w/index.php?diff=63999&oldid=63998 * DumpRegs * (+87)
18:28:27 -!- unlimiter has joined.
18:31:30 -!- unlimiter has quit (Client Quit).
19:11:36 -!- kolontaev has joined.
19:21:46 -!- moony has changed nick to moonheart08.
19:37:37 -!- sebbu has quit (Ping timeout: 248 seconds).
19:51:34 -!- FreeFull has joined.
19:57:56 -!- sebbu has joined.
20:03:25 <HackEso> smlist 502: shachaf monqy elliott mnoqy Cale
20:08:04 <int-e> Hmm, are homeopaths afraid of washing dishes, because diluting the patogens makes them more potent?
20:08:15 -!- Sgeo__ has joined.
20:11:13 -!- Sgeo_ has quit (Ping timeout: 248 seconds).
20:16:33 -!- Ains has quit (Ping timeout: 244 seconds).
20:35:00 -!- Ains has joined.
20:40:56 -!- laerling has joined.
20:44:45 -!- Ains has quit (Quit: Leaving).
20:59:26 -!- budonyc has quit (Ping timeout: 244 seconds).
21:01:49 -!- user24 has joined.
21:22:15 -!- AnotherTest has quit (Ping timeout: 264 seconds).
21:37:33 -!- laerling has quit (Remote host closed the connection).
21:57:13 -!- tromp has quit (Remote host closed the connection).
22:09:53 -!- tromp has joined.
22:11:14 -!- tromp_ has joined.
22:13:35 -!- tromp__ has joined.
22:14:27 -!- tromp has quit (Ping timeout: 252 seconds).
22:15:33 -!- tromp_ has quit (Ping timeout: 252 seconds).
22:16:40 -!- tromp has joined.
22:17:58 -!- tromp__ has quit (Ping timeout: 246 seconds).
22:18:16 -!- tromp_ has joined.
22:21:39 -!- tromp has quit (Ping timeout: 264 seconds).
22:22:30 -!- tromp_ has quit (Ping timeout: 252 seconds).
22:34:58 -!- tromp has joined.
22:39:22 -!- tromp has quit (Ping timeout: 252 seconds).
22:40:00 -!- user24 has quit (Quit: Leaving).
22:42:47 -!- uplime has changed nick to ^.
22:43:12 -!- ^ has changed nick to KindOne.
23:00:23 <esowiki> [[Talk:Pistons & Pistons]] https://esolangs.org/w/index.php?diff=64000&oldid=63969 * Salpynx * (+1287) Clarify I'm serious about physical computing, and Minecraft.
23:15:22 -!- tromp has joined.
23:16:48 -!- tromp_ has joined.
23:19:43 -!- tromp has quit (Ping timeout: 252 seconds).
23:21:11 -!- tromp_ has quit (Ping timeout: 252 seconds).
23:22:21 -!- droid has joined.
23:22:55 -!- tromp has joined.
23:23:52 <esowiki> [[FireStarter]] M https://esolangs.org/w/index.php?diff=64001&oldid=63994 * DoggyDogWhirl * (+122)
23:25:33 -!- tromp_ has joined.
23:27:04 -!- tromp__ has joined.
23:27:25 -!- tromp has quit (Ping timeout: 252 seconds).
23:29:59 -!- tromp_ has quit (Ping timeout: 252 seconds).
23:30:34 -!- tromp has joined.
23:31:28 -!- tromp__ has quit (Ping timeout: 252 seconds).
23:32:23 -!- tromp_ has joined.
23:35:07 -!- tromp has quit (Ping timeout: 252 seconds).
23:36:36 -!- tromp_ has quit (Ping timeout: 252 seconds).
23:38:39 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
23:49:44 -!- arseniiv has quit (Ping timeout: 272 seconds).
23:51:06 -!- moonheart08 has changed nick to moony.
00:26:46 -!- tromp has joined.
00:31:12 -!- tromp has quit (Ping timeout: 252 seconds).
00:58:02 <esowiki> [[Screw]] N https://esolangs.org/w/index.php?oldid=64002 * DumpRegs * (+114) Created page with "'''Screw''' is an esoteric programming language created by [https://esolangs.org/wiki/User:DumpRegs User:DumpRegs]"
01:05:39 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64003&oldid=64002 * DumpRegs * (+319)
01:06:13 -!- stux- has joined.
01:07:01 -!- Lymia has quit (Remote host closed the connection).
01:07:11 -!- Lymia has joined.
01:07:54 -!- stux|away has quit (Ping timeout: 252 seconds).
01:09:26 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64004&oldid=64003 * DumpRegs * (+42)
01:09:49 <tswett[m]> Oh gee, I just found out that Haskell's type inference is significantly more complicated than I thought. Which is really saying something. :D
01:11:02 <tswett[m]> > let x = undefined in (x :: Int, x :: Char)
01:11:45 <shachaf> That's just Hindley-Milner, isn't it?
01:11:52 <shachaf> It has an explicit case for let for this reason.
01:14:07 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64005&oldid=64004 * DumpRegs * (+163) /* Commands */
01:16:56 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64006&oldid=64005 * DumpRegs * (+215) /* Commands */
01:18:47 <esowiki> [[DDR]] M https://esolangs.org/w/index.php?diff=64007&oldid=63979 * DoggyDogWhirl * (+0)
01:21:56 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64008&oldid=64006 * DumpRegs * (+167)
01:27:15 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64009&oldid=64008 * DumpRegs * (+401)
01:29:23 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64010&oldid=64009 * DumpRegs * (-168)
01:32:23 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64011&oldid=64010 * DumpRegs * (+139)
01:32:59 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64012&oldid=64011 * DumpRegs * (-397)
01:33:42 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64013&oldid=64012 * DumpRegs * (+0)
01:36:21 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64014&oldid=64013 * DumpRegs * (+104)
01:41:19 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64015&oldid=64014 * DumpRegs * (+280)
01:41:43 -!- Lord_of_Life_ has joined.
01:44:54 -!- Lord_of_Life has quit (Ping timeout: 258 seconds).
01:44:55 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
01:51:22 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64016&oldid=64015 * DumpRegs * (+247) /* Add */
01:51:51 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64017&oldid=64016 * DumpRegs * (-4) /* Add */
01:52:09 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64018&oldid=64017 * DumpRegs * (-12) /* Add */
01:52:17 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64019&oldid=64018 * DumpRegs * (+1) /* Add */
01:52:28 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64020&oldid=64019 * DumpRegs * (-1) /* Add */
01:52:36 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64021&oldid=64020 * DumpRegs * (+1) /* Add */
01:56:05 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64022&oldid=64021 * DumpRegs * (+45) /* Add */
01:57:43 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64023&oldid=64022 * DumpRegs * (+46)
01:58:02 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64024&oldid=64023 * DumpRegs * (+0)
02:01:55 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64025&oldid=64024 * DumpRegs * (+256) /* Features */
02:03:02 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64026&oldid=64025 * DumpRegs * (+225) /* Sub */
02:03:55 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64027&oldid=64026 * DumpRegs * (+1) /* Sub */
02:04:27 -!- droid has quit (Ping timeout: 258 seconds).
02:04:44 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64028&oldid=64027 * DumpRegs * (+7) /* Sub */
02:04:55 -!- stux- has quit (Quit: Aloha!).
02:05:09 -!- stux|away has joined.
02:05:14 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64029&oldid=64028 * DumpRegs * (+9) /* Sub */
02:05:24 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64030&oldid=64029 * DumpRegs * (-2) /* Sub */
02:05:46 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64031&oldid=64030 * DumpRegs * (-6) /* Sub */
02:09:33 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64032&oldid=64031 * DumpRegs * (+161) /* Features */
02:09:35 <esowiki> [[Talk:Pistons & Pistons]] https://esolangs.org/w/index.php?diff=64033&oldid=64000 * Areallycoolusername * (+340)
02:15:16 -!- tromp has joined.
02:20:01 -!- tromp has quit (Ping timeout: 276 seconds).
02:24:12 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64034&oldid=64032 * DumpRegs * (+319) /* Features */
02:24:34 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64035&oldid=64034 * DumpRegs * (+0) /* Cell Dump */
02:24:45 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64036&oldid=64035 * DumpRegs * (+2) /* Cell Dump */
02:26:34 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64037&oldid=64036 * DumpRegs * (+208) /* Cell Dump */
02:27:13 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64038&oldid=64037 * DumpRegs * (+1) /* Cell Dump */
02:27:25 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64039&oldid=64038 * DumpRegs * (+10) /* Cell Dump */
02:27:48 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64040&oldid=64039 * DumpRegs * (+10) /* Cell Dump */
02:28:41 <esowiki> [[Talk:Pistons & Pistons]] https://esolangs.org/w/index.php?diff=64041&oldid=64033 * Areallycoolusername * (+121)
02:28:43 <esowiki> [[Talk:Pistons & Pistons]] https://esolangs.org/w/index.php?diff=64042&oldid=64041 * JonoCode9374 * (+218) /* Potential Interpreter */ new section
02:31:32 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64043&oldid=64040 * DumpRegs * (+264) /* Cell Dump */
02:32:28 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64044&oldid=64043 * DumpRegs * (+6)
02:32:33 <esowiki> [[Talk:Pistons & Pistons]] M https://esolangs.org/w/index.php?diff=64045&oldid=64042 * JonoCode9374 * (+136) /* Potential Interpreter */
02:32:46 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64046&oldid=64044 * DumpRegs * (+1)
02:35:29 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64047&oldid=64046 * DumpRegs * (+21)
02:38:06 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64048&oldid=64047 * DumpRegs * (+531) /* Classic Examples */
02:38:17 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64049&oldid=64048 * DumpRegs * (-1) /* Add 3 and 5 */
02:38:41 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64050&oldid=64049 * DumpRegs * (-6) /* Add 3 and 5 */
02:38:57 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64051&oldid=64050 * DumpRegs * (+3) /* Add 3 and 5 */
02:39:05 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64052&oldid=64051 * DumpRegs * (+9) /* Add 3 and 5 */
02:39:51 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64053&oldid=64052 * DumpRegs * (-4) /* Classic Examples */
02:39:59 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64054&oldid=64053 * DumpRegs * (-1) /* Add 3 and 5 */
02:40:12 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64055&oldid=64054 * DumpRegs * (-4) /* Add 3 and 5 */
02:40:21 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64056&oldid=64055 * DumpRegs * (+7) /* Add 3 and 5 */
02:40:28 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64057&oldid=64056 * DumpRegs * (+2) /* Add 3 and 5 */
02:40:38 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64058&oldid=64057 * DumpRegs * (-3) /* Add 3 and 5 */
02:40:46 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64059&oldid=64058 * DumpRegs * (+6) /* Add 3 and 5 */
02:40:55 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64060&oldid=64059 * DumpRegs * (+3) /* Add 3 and 5 */
02:41:04 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64061&oldid=64060 * DumpRegs * (-2) /* Add 3 and 5 */
02:41:16 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64062&oldid=64061 * DumpRegs * (-1) /* Add 3 and 5 */
02:41:22 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64063&oldid=64062 * DumpRegs * (+1) /* Add 3 and 5 */
02:41:30 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64064&oldid=64063 * DumpRegs * (-3) /* Add 3 and 5 */
02:41:50 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64065&oldid=64064 * DumpRegs * (-3) /* Add 3 and 5 */
02:41:59 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64066&oldid=64065 * DumpRegs * (-2) /* Add 3 and 5 */
02:42:26 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64067&oldid=64066 * DumpRegs * (+7) /* Add 3 and 5 */
02:42:33 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64068&oldid=64067 * DumpRegs * (+1) /* Add 3 and 5 */
02:42:48 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64069&oldid=64068 * DumpRegs * (+1) /* Add 3 and 5 */
02:42:55 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64070&oldid=64069 * DumpRegs * (-2) /* Add 3 and 5 */
02:43:01 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64071&oldid=64070 * DumpRegs * (+1) /* Add 3 and 5 */
02:43:45 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64072&oldid=64071 * DumpRegs * (+62) /* Add 3 and 5 */
02:47:10 -!- FreeFull has quit.
02:52:18 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64073&oldid=64072 * DumpRegs * (+1295) /* Classic Examples */
02:53:04 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64074&oldid=64073 * DumpRegs * (-6) /* Hello World */
02:54:15 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64075&oldid=64074 * DumpRegs * (+55) /* Hello World */
02:54:58 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64076&oldid=64075 * DumpRegs * (+10) /* Hello World */
02:55:18 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64077&oldid=64076 * DumpRegs * (+2) /* Hello World */
02:56:30 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64078&oldid=64077 * DumpRegs * (-4) /* Hello World */
02:56:56 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64079&oldid=64078 * DumpRegs * (-12) /* Hello World */
02:57:16 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64080&oldid=64079 * DumpRegs * (-4) /* Hello World */
02:57:34 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64081&oldid=64080 * DumpRegs * (+8) /* Hello World */
02:57:37 <esowiki> [[Talk:Pistons & Pistons]] https://esolangs.org/w/index.php?diff=64082&oldid=64045 * Areallycoolusername * (+62)
02:57:50 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64083&oldid=64081 * DumpRegs * (-2) /* Hello World */
02:58:11 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64084&oldid=64083 * DumpRegs * (+4) /* Hello World */
02:58:20 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64085&oldid=64084 * DumpRegs * (-1) /* Hello World */
02:58:42 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64086&oldid=64085 * DumpRegs * (+6) /* Hello World */
02:58:58 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64087&oldid=64086 * DumpRegs * (+10) /* Hello World */
02:59:16 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64088&oldid=64087 * DumpRegs * (-2) /* Hello World */
02:59:28 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64089&oldid=64088 * DumpRegs * (-4) /* Hello World */
02:59:40 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64090&oldid=64089 * DumpRegs * (+5) /* Hello World */
02:59:54 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64091&oldid=64090 * DumpRegs * (+9) /* Hello World */
03:01:31 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64092&oldid=64091 * DumpRegs * (+165) /* Hello World */
03:01:57 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64093&oldid=64092 * DumpRegs * (-8) /* Hello World */
03:02:17 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64094&oldid=64093 * DumpRegs * (-7) /* Hello World */
03:02:38 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64095&oldid=64094 * DumpRegs * (-11) /* Hello World */
03:02:53 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64096&oldid=64095 * DumpRegs * (-4) /* Hello World */
03:03:42 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64097&oldid=64096 * DumpRegs * (+0) /* Hello World */
03:03:58 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64098&oldid=64097 * DumpRegs * (+4) /* Hello World */
03:04:28 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64099&oldid=64098 * DumpRegs * (-28) /* Hello World */
03:04:41 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64100&oldid=64099 * DumpRegs * (+2) /* Hello World */
03:04:49 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64101&oldid=64100 * DumpRegs * (-1) /* Hello World */
03:05:34 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64102&oldid=64101 * DumpRegs * (+27) /* Hello World */
03:06:14 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64103&oldid=64102 * DumpRegs * (+5) /* Sub */
03:09:02 -!- tromp has joined.
03:09:03 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64104&oldid=64103 * DumpRegs * (+164)
03:12:03 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64105&oldid=64104 * DumpRegs * (+171) /* Executing Screw Code */
03:13:05 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64106&oldid=64105 * DumpRegs * (-54) /* Extra Features */
03:13:23 -!- tromp has quit (Ping timeout: 250 seconds).
03:13:31 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64107&oldid=64106 * DumpRegs * (+3) /* Classic Examples */
03:13:32 <int-e> fungot: are they tightening or loosening the screw?
03:13:32 <fungot> int-e: no more than one consenting nominee, then the revolt succeeds, otherwise the action
03:16:12 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64108&oldid=64107 * DumpRegs * (+0) /* Recognized Symbols */
03:16:27 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64109&oldid=64108 * DumpRegs * (+0) /* Extra Features */
03:16:44 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64110&oldid=64109 * DumpRegs * (+0) /* Classic Examples */
03:16:57 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64111&oldid=64110 * DumpRegs * (+0) /* Executing Screw Code */
03:17:50 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64112&oldid=64111 * DumpRegs * (+24)
03:22:30 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64113&oldid=64112 * DumpRegs * (+81) /* External resources */
03:23:01 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64114&oldid=64113 * DumpRegs * (+28) /* External resources */
03:27:56 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64115&oldid=64114 * DumpRegs * (+128)
03:30:32 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=64116&oldid=63973 * DumpRegs * (+12) /* S */
03:33:45 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64117&oldid=64115 * DumpRegs * (-1) /* Cell Dump */
03:34:46 <esowiki> [[User:DumpRegs]] https://esolangs.org/w/index.php?diff=64118&oldid=63999 * DumpRegs * (+35)
03:35:17 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64119&oldid=64117 * DumpRegs * (-34)
03:36:14 <esowiki> [[Screw]] https://esolangs.org/w/index.php?diff=64120&oldid=64119 * DumpRegs * (-54)
03:37:23 <esowiki> [[User:DumpRegs]] https://esolangs.org/w/index.php?diff=64121&oldid=64118 * DumpRegs * (+16)
03:40:14 <zzo38> I tried to make a program in C to make a Newton fractal, but, it doesn't seems to work.
06:19:51 -!- tromp has joined.
06:20:28 -!- john_metcalf has joined.
06:20:38 -!- tromp has quit (Remote host closed the connection).
06:24:23 -!- tromp has joined.
07:06:16 -!- tromp has quit (Remote host closed the connection).
07:10:45 -!- tromp has joined.
07:15:17 -!- tromp has quit (Ping timeout: 252 seconds).
07:20:17 -!- tromp has joined.
07:24:49 -!- tromp has quit (Ping timeout: 252 seconds).
07:26:28 -!- tromp has joined.
07:31:02 -!- tromp has quit (Ping timeout: 252 seconds).
07:31:30 <ski> @where polymorphic-type-inference
07:31:30 <lambdabot> "Polymorphic Type Inference" by Michael I. Schwartzbach in 1995-03 at <https://cs.au.dk/~mis/typeinf.p(s|df)>,<http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.57.1493>
07:31:46 <ski> tswett[m] ^
07:32:19 -!- tromp has joined.
07:33:36 -!- tromp_ has joined.
07:35:33 -!- tromp__ has joined.
07:36:17 -!- tromp__ has quit (Remote host closed the connection).
07:36:31 -!- tromp__ has joined.
07:37:13 -!- tromp has quit (Ping timeout: 276 seconds).
07:38:00 -!- tromp_ has quit (Ping timeout: 252 seconds).
07:56:35 -!- Cale has quit (Excess Flood).
07:59:10 <esowiki> [[Talk:Pistons & Pistons]] M https://esolangs.org/w/index.php?diff=64122&oldid=64082 * A * (+190) /* Potential Interpreter */
08:01:24 <esowiki> [[Talk:Pistons & Pistons]] M https://esolangs.org/w/index.php?diff=64123&oldid=64122 * A * (+113)
08:01:43 <esowiki> [[Talk:Pistons & Pistons]] M https://esolangs.org/w/index.php?diff=64124&oldid=64123 * A * (-138)
08:10:08 -!- AnotherTest has joined.
08:15:24 -!- j-bot has joined.
08:22:04 -!- zzo38 has quit (Ping timeout: 246 seconds).
08:24:34 <esowiki> [[Talk:Pistons & Pistons]] M https://esolangs.org/w/index.php?diff=64125&oldid=64124 * A * (-43)
08:34:34 <esowiki> [[Talk:Pistons & Pistons]] https://esolangs.org/w/index.php?diff=64126&oldid=64125 * A * (-105)
08:36:07 <Sgeo__> Is this... defined behavior? f->hRestart = &f->history[-1];
08:36:50 <Sgeo__> history there is a pointer not an array, so I'm probably being overly concerned?
09:29:34 <Taneb> I'm getting to really like the jq (not esoteric but not general purpose) language
09:36:20 <shachaf> I've used that for some things.
09:36:40 <shachaf> Some things are very nice and others are awkward to express.
09:36:52 <Taneb> I got started writing a brainfuck interpreter in it that came to me in a dream, I'll finish and post that tonight probably
09:43:26 <rain1> jq is neat but i wonder why they had to implement a whole new language from scratch in C rather than building it on top of javascript
09:48:43 <shachaf> I'm sure I don't want to use a JavaScript interpreter in any of the cases that I use jq.
09:48:54 <shachaf> (Or in most other cases where I don't, for that matter.)
10:00:54 <Taneb> I likely would not use jq if it was built on top of JavaScript
10:40:07 <Taneb> https://gist.github.com/Taneb/be9d6d5048ce6ca3c5563df223052c6b
10:40:21 -!- Cale has joined.
11:09:28 <esowiki> [[Pistons & Pistons]] M https://esolangs.org/w/index.php?diff=64127&oldid=63993 * A * (+167) /* Examples */ Another example.
11:17:25 -!- john_metcalf has quit (Ping timeout: 246 seconds).
11:48:17 <esowiki> [[Talk:Pistons & Pistons]] https://esolangs.org/w/index.php?diff=64128&oldid=64126 * Areallycoolusername * (+913)
11:49:36 -!- zemhill________ has joined.
11:51:45 <esowiki> [[Pistons & Pistons]] https://esolangs.org/w/index.php?diff=64129&oldid=64127 * Areallycoolusername * (-167) Undid edit by User: A, due to redundancy. (You already put that!)
11:55:57 -!- mich181189 has quit (*.net *.split).
11:55:57 -!- lynn has quit (*.net *.split).
11:55:57 -!- dog_star has quit (*.net *.split).
11:55:57 -!- fungot has quit (*.net *.split).
11:55:57 -!- zemhill_______ has quit (*.net *.split).
12:01:27 -!- mich181189 has joined.
12:01:27 -!- lynn has joined.
12:01:27 -!- dog_star has joined.
12:01:27 -!- fungot has joined.
12:07:18 -!- wob_jonas has joined.
12:40:25 -!- arseniiv has joined.
12:40:50 <esowiki> [[SMETANA To Infinity!]] https://esolangs.org/w/index.php?diff=64130&oldid=49759 * Anthonykozar * (+123) Adding link to a new interpreter and moving from Unimplemented to Implemented category.
12:52:29 <esowiki> [[Pistons & Pistons]] https://esolangs.org/w/index.php?diff=64131&oldid=64129 * A * (+167) Undid edit by User:Areallycoolusername due to distinction (These are different programs!)
13:03:24 <esowiki> [[Talk:Pistons & Pistons]] M https://esolangs.org/w/index.php?diff=64132&oldid=64128 * A * (+861)
13:04:20 <esowiki> [[Talk:Pistons & Pistons]] https://esolangs.org/w/index.php?diff=64133&oldid=64132 * A * (+0) Oops
13:05:20 <esowiki> [[Talk:Pistons & Pistons]] M https://esolangs.org/w/index.php?diff=64134&oldid=64133 * A * (+0) Why am I so ignorant?
13:07:46 <esowiki> [[Talk:Pistons & Pistons]] M https://esolangs.org/w/index.php?diff=64135&oldid=64134 * A * (+0)
13:30:55 <wob_jonas> zzo38: re Newton fractal, can you be more specific? how has your program failed?
13:44:01 -!- Lord_of_Life_ has joined.
13:45:37 -!- Lord_of_Life has quit (Ping timeout: 248 seconds).
13:46:40 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
13:51:51 -!- unlimiter has joined.
13:52:33 -!- unlimiter has quit (Client Quit).
14:21:34 <esowiki> [[Talk:Pistons & Pistons]] M https://esolangs.org/w/index.php?diff=64136&oldid=64135 * A * (+480)
14:41:27 -!- atslash has quit (Quit: This computer has gone to sleep).
14:47:15 -!- atslash has joined.
15:13:31 -!- xkapastel has joined.
15:16:36 <esowiki> [[Talk:Pistons & Pistons]] https://esolangs.org/w/index.php?diff=64137&oldid=64136 * Areallycoolusername * (+249)
15:19:07 <esowiki> [[Talk:Pistons & Pistons]] https://esolangs.org/w/index.php?diff=64138&oldid=64137 * Areallycoolusername * (-99)
15:26:02 <esowiki> [[Talk:Pistons & Pistons]] https://esolangs.org/w/index.php?diff=64139&oldid=64138 * Areallycoolusername * (-76)
15:41:09 <esowiki> [[Pistons & Pistons]] https://esolangs.org/w/index.php?diff=64140&oldid=64131 * Areallycoolusername * (+535)
15:42:01 <esowiki> [[Pistons & Pistons]] https://esolangs.org/w/index.php?diff=64141&oldid=64140 * Areallycoolusername * (+0) /* Implementations */
15:44:13 <esowiki> [[Talk:Pistons & Pistons]] https://esolangs.org/w/index.php?diff=64142&oldid=64139 * Areallycoolusername * (+185)
15:49:44 -!- Sgeo_ has joined.
15:53:40 -!- Sgeo__ has quit (Ping timeout: 272 seconds).
15:59:11 -!- wob_jonas has quit (Remote host closed the connection).
16:30:47 -!- Sgeo__ has joined.
16:34:09 -!- Sgeo_ has quit (Ping timeout: 248 seconds).
17:00:31 -!- atslash has quit (Quit: Leaving).
17:07:27 -!- atslash has joined.
17:23:10 -!- xkapastel has quit (Quit: Connection closed for inactivity).
17:49:17 -!- zzo38 has joined.
18:03:43 -!- b_jonas has joined.
18:11:51 -!- Sgeo_ has joined.
18:16:01 -!- Sgeo__ has quit (Ping timeout: 268 seconds).
18:53:07 -!- Phantom_Hoover has joined.
19:09:40 -!- FreeFull has joined.
19:27:21 <esowiki> [[Codd]] N https://esolangs.org/w/index.php?oldid=64143 * Areallycoolusername * (+892) Created page with "'''Codd''',(which has nothing to do with [[Cod]]), is an [[esoteric programming language]] made by [User: Areallycoolusername|Areallycoolusername]. It's meant to be a Turing c..."
19:34:32 <zzo38> wob_jonas: This is the program I have: https://arin.ga/EKffNr It doesn't seems to do properly.
19:34:33 -!- FireFly has quit (Quit: Goodbye).
19:35:13 -!- FireFly has joined.
19:43:28 <b_jonas> zzo38: hmm, the lines 15..18 there seem suspicious. what values do coef_r, coef_i, dcoef_r, dcoef_i have?
19:46:54 <zzo38> Those values are correct; I have tested that already, they are correct for matching the root_r and root_i arrays
19:48:40 <b_jonas> zzo38: what do the lines 15..18 do then?
19:49:28 -!- sparr has quit (*.net *.split).
19:50:05 -!- sparr has joined.
19:50:06 <zzo38> It is supposed to evaluate the complex polynomial in the coef_r, coef_i, dcoef_r, dcoef_i arrays, using z_r and z_i as the real and imaginary parts of the variable.
19:50:56 <zzo38> (Note: I only know that the coefficient arrays are correctly calculated from the root_r and root_i arrays, not that the code I posted here is correct.)
19:51:17 -!- Sgeo__ has joined.
19:51:40 <b_jonas> zzo38: that's what the loop in lines 11..19 is supposed to do, but I don't understand why 15..18 should do the multiplications you do
19:52:33 <b_jonas> I also don't understand why you're not evaluating the formula using horner, but that's not my main problem
19:53:23 <b_jonas> it looks like lines 12..14 in the loop compute successive powers of (z_r+z_i*I) into (v_r+v_i*I), that part makes sense
19:53:32 <b_jonas> but lines 15..18 I don't understand
19:53:40 <zzo38> Yes, now I look again, it seems like wrong. Also it look like maybe line 12-14 should go after line 18 instead.
19:53:58 <zzo38> Yes, I think they are wrong now.
19:54:58 -!- Sgeo_ has quit (Ping timeout: 272 seconds).
19:55:17 <zzo38> You are correct those lines don't make sense I think
19:57:57 <zzo38> (I don't know why I did not notice that mistake before.)
20:00:50 <zzo38> Onec I fixed that, now it works. Those are the lines that were wrong.
20:01:34 <b_jonas> can you show the fixed code?
20:02:08 <zzo38> http://zzo38computer.org/fossil/farbfeld.ui/raw/ff-newton.c?name=14eb774b5e5a9c0524e765c6c4f754fd2c72c867
20:03:42 <zzo38> I also don't know how is evaluating the formula using horner, that is why I did not do so.
20:15:50 <b_jonas> zzo38: you can find out in TAOCP chapter 4.6.4 if you want, but it might not matter for this program
20:16:17 <b_jonas> I was just surprised that that wasn't what you wrote by default for evaluating the polynomial here
20:16:57 <zzo38> I once borrowed TAOCP from library but do not have it now.
20:18:29 <b_jonas> https://en.wikipedia.org/wiki/Horner%27s_method probably has other pointers then
20:31:04 <esowiki> [[Codd]] https://esolangs.org/w/index.php?diff=64144&oldid=64143 * Areallycoolusername * (+1)
21:15:13 -!- AnotherTest has quit (Ping timeout: 258 seconds).
21:21:11 -!- dingwat has joined.
21:29:23 <esowiki> [[User:Areallycoolusername]] https://esolangs.org/w/index.php?diff=64145&oldid=63926 * Areallycoolusername * (+11)
21:31:03 <esowiki> [[Codd]] https://esolangs.org/w/index.php?diff=64146&oldid=64144 * Areallycoolusername * (+2)
21:33:22 -!- ais523 has joined.
21:34:28 <zzo38> The story used in GURPS game I play, I think, there could be more than two factions, even if the main war is two. This can apply in D&D too, and other people's story.
22:01:24 -!- kolontaev has quit (Quit: leaving).
22:03:09 -!- arseniiv has quit (Read error: Connection reset by peer).
22:03:57 -!- arseniiv has joined.
22:19:28 <esowiki> [[PERPLEX]] https://esolangs.org/w/index.php?diff=64147&oldid=58872 * Areallycoolusername * (+55)
22:46:15 -!- ais523 has quit (Quit: quit).
23:16:15 <zzo38> Now I made a "pseudo-Burrows-Wheeler" program.
23:20:25 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
23:21:48 <zzo38> Also, I should think that a variant of move-to-front transform could be to keep a separate list for each previous character (which would require more memory).
00:22:03 <esowiki> [[Jussef Swissen]] https://esolangs.org/w/index.php?diff=64148&oldid=58873 * Areallycoolusername * (+21)
00:39:31 <esowiki> [[Codd]] https://esolangs.org/w/index.php?diff=64149&oldid=64146 * Areallycoolusername * (+216)
00:42:04 -!- arseniiv has quit (Ping timeout: 246 seconds).
00:49:33 <zzo38> What is "gvfs-fuse-daemon"?
01:44:34 -!- Lord_of_Life has quit (Ping timeout: 272 seconds).
01:46:57 -!- Lord_of_Life has joined.
02:05:01 -!- nfd9001 has quit (Read error: Connection reset by peer).
02:08:46 -!- nfd9001 has joined.
02:44:36 <zzo38> SQLite does not currently support upsert for virtual tables. I thought one way it could be implemented, although it will only work on the primary key of the table (unless "WITHOUT ROWID" is specified, it must be the rowid). After ON CONFLICT you must specify either the primary key column or DO NOTHING. The upsert clause will only be executed if the xUpdate method returns SQLITE_CONSTRAINT_PRIMARYKEY or SQLITE_CONSTRAINT_ROWID; if it returns anythi
02:45:18 <zzo38> (Possibly also sqlite3_vtab_config() might be required in order to enable it.)
03:09:38 -!- FreeFull has quit.
03:18:40 <esowiki> [[Talk:Pistons & Pistons]] M https://esolangs.org/w/index.php?diff=64150&oldid=64142 * A * (+20) They are abusing my proof... + Sign my proof
03:19:02 <esowiki> [[Talk:Pistons & Pistons]] M https://esolangs.org/w/index.php?diff=64151&oldid=64150 * A * (+200)
03:21:03 <esowiki> [[Talk:Pistons & Pistons]] M https://esolangs.org/w/index.php?diff=64152&oldid=64151 * A * (+253) /* Validity? */
03:22:17 <esowiki> [[Jussef Swissen]] M https://esolangs.org/w/index.php?diff=64153&oldid=64148 * A * (+61) What is the deal?
03:22:52 <esowiki> [[Jussef Swissen]] M https://esolangs.org/w/index.php?diff=64154&oldid=64153 * A * (-61)
03:25:54 <esowiki> [[Talk:Pistons & Pistons]] M https://esolangs.org/w/index.php?diff=64155&oldid=64152 * A * (+56) /* Validity? */
03:29:04 -!- nfd has joined.
03:32:27 -!- nfd9001 has quit (Ping timeout: 264 seconds).
04:39:16 <esowiki> [[Computational class]] M https://esolangs.org/w/index.php?diff=64156&oldid=59973 * A * (+25) /* Turing-completeness */
08:07:49 -!- b_jonas has quit (Quit: leaving).
08:09:33 -!- Taneb has changed nick to nvd.
08:11:53 -!- AnotherTest has joined.
08:56:00 -!- nvd has changed nick to Taneb.
09:02:04 -!- Tisgh has joined.
09:02:32 -!- Tisgh has left ("Leaving").
09:25:13 -!- laerling has joined.
09:38:51 -!- tromp__ has quit (Remote host closed the connection).
09:44:49 -!- tromp has joined.
09:47:15 -!- Sgeo_ has joined.
09:50:27 -!- Sgeo__ has quit (Ping timeout: 245 seconds).
10:57:47 -!- Sgeo__ has joined.
11:01:17 -!- Sgeo_ has quit (Ping timeout: 245 seconds).
11:37:17 -!- Sgeo__ has quit (Read error: Connection reset by peer).
11:37:45 -!- Sgeo__ has joined.
11:38:45 -!- arseniiv has joined.
11:39:17 -!- wob_jonas has joined.
11:39:37 <wob_jonas> zzo38: https://media.wizards.com/2019/downloads/MagicCompRules%2020190712.txt
11:40:25 -!- xkapastel has joined.
12:07:38 -!- laerling has quit (Quit: Leaving).
12:16:22 <esowiki> [[Cal]] N https://esolangs.org/w/index.php?oldid=64157 * A * (+632) Created page with "[[Cal]] is a simple tool used for doing calculations automatically. ==Command set== {| class="wikitable" border="1" |- ! Command ! Result |- | | Addition |- | | Subtra..."
12:16:45 <esowiki> [[Cal]] M https://esolangs.org/w/index.php?diff=64158&oldid=64157 * A * (+68)
12:19:14 <esowiki> [[Cal]] M https://esolangs.org/w/index.php?diff=64159&oldid=64158 * A * (+182)
12:22:20 <esowiki> [[Cal]] https://esolangs.org/w/index.php?diff=64160&oldid=64159 * A * (+253)
12:27:13 <esowiki> [[Cal]] M https://esolangs.org/w/index.php?diff=64161&oldid=64160 * A * (-221) Nope, 2D is too complex
12:37:34 -!- laerling has joined.
13:03:50 <esowiki> [[Cal]] M https://esolangs.org/w/index.php?diff=64162&oldid=64161 * A * (+218)
13:09:42 <esowiki> [[Cal]] M https://esolangs.org/w/index.php?diff=64163&oldid=64162 * A * (+234)
13:13:23 <esowiki> [[Cal]] https://esolangs.org/w/index.php?diff=64164&oldid=64163 * A * (+52) I don't see how these are useful
13:20:39 <esowiki> [[Cal]] M https://esolangs.org/w/index.php?diff=64165&oldid=64164 * A * (+91) +Uncomputable
13:21:12 <esowiki> [[Cal]] M https://esolangs.org/w/index.php?diff=64166&oldid=64165 * A * (+50)
13:29:28 <esowiki> [[Cal]] M https://esolangs.org/w/index.php?diff=64167&oldid=64166 * A * (+149)
13:32:22 -!- laerling has quit (Remote host closed the connection).
13:45:08 -!- Lord_of_Life_ has joined.
13:46:18 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
13:46:20 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
13:46:48 <esowiki> [[Cal]] M https://esolangs.org/w/index.php?diff=64168&oldid=64167 * A * (-20)
13:50:11 <esowiki> [[Cal]] M https://esolangs.org/w/index.php?diff=64169&oldid=64168 * A * (+8) Now it looks a lot nicer
13:51:14 <esowiki> [[Cal]] M https://esolangs.org/w/index.php?diff=64170&oldid=64169 * A * (-8) "OK" is not universal; the cross sign will be fine.
13:56:41 <esowiki> [[Cal]] M https://esolangs.org/w/index.php?diff=64171&oldid=64170 * A * (-73) Addition = negative subtraction
13:57:06 <esowiki> [[Cal]] M https://esolangs.org/w/index.php?diff=64172&oldid=64171 * A * (+0) /* Command set */ Uhh
13:57:23 <esowiki> [[Cal]] M https://esolangs.org/w/index.php?diff=64173&oldid=64172 * A * (+4)
14:10:39 -!- laerling has joined.
14:13:17 -!- Sgeo_ has joined.
14:14:30 <esowiki> [[Cal]] M https://esolangs.org/w/index.php?diff=64174&oldid=64173 * A * (-78) Reptwice is trivial
14:16:25 -!- Sgeo__ has quit (Ping timeout: 258 seconds).
14:18:43 <esowiki> [[Codd]] https://esolangs.org/w/index.php?diff=64175&oldid=64149 * Areallycoolusername * (+4812) Revamped the page
14:20:16 <esowiki> [[Codd]] https://esolangs.org/w/index.php?diff=64176&oldid=64175 * Areallycoolusername * (+1)
14:21:31 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=64177&oldid=64116 * Areallycoolusername * (+11) /* C */
14:21:58 <esowiki> [[Cal]] M https://esolangs.org/w/index.php?diff=64178&oldid=64174 * A * (+55)
14:35:06 <esowiki> [[Hello world program in esoteric languages]] https://esolangs.org/w/index.php?diff=64179&oldid=63456 * Areallycoolusername * (+2901)
14:40:52 <esowiki> [[Codd]] https://esolangs.org/w/index.php?diff=64180&oldid=64176 * Areallycoolusername * (+289)
14:41:47 <zzo38> wob_jonas: OK, I downloaded it now.
14:41:55 <esowiki> [[Codd]] https://esolangs.org/w/index.php?diff=64181&oldid=64180 * Areallycoolusername * (-1) /* Wolfram Program */
14:44:32 <esowiki> [[Keg]] M https://esolangs.org/w/index.php?diff=64182&oldid=63147 * A * (-3250) /* Example Programs */
14:45:56 <esowiki> [[User talk:JonoCode9374]] N https://esolangs.org/w/index.php?oldid=64183 * A * (+382) Created page with "==Please don't recover the examples on Keg== If you want to recover the examples on Keg, please don't; I created a contest about Keg on CGCC, and I don't want others to cheat...."
14:47:51 <esowiki> [[User talk:JonoCode9374]] M https://esolangs.org/w/index.php?diff=64184&oldid=64183 * A * (+57)
14:49:51 <esowiki> [[Keg]] M https://esolangs.org/w/index.php?diff=64185&oldid=64182 * A * (+2647) Undo revision 64182 by [[Special:Contributions/A|A]] ([[User talk:A|talk]]); undo most of the examples except for Fib example.
14:53:39 -!- wob_jonas has quit (Remote host closed the connection).
15:01:31 <esowiki> [[User talk:JonoCode9374]] https://esolangs.org/w/index.php?diff=64186&oldid=64184 * Areallycoolusername * (+193)
15:08:00 <esowiki> [[Pistons & Pistons]] https://esolangs.org/w/index.php?diff=64187&oldid=64141 * Areallycoolusername * (+93)
15:23:19 -!- Sgeo__ has joined.
15:26:05 -!- Sgeo_ has quit (Ping timeout: 244 seconds).
15:41:49 -!- Sgeo_ has joined.
15:44:58 -!- Sgeo__ has quit (Ping timeout: 258 seconds).
16:30:40 -!- laerling has quit (Ping timeout: 252 seconds).
16:45:10 -!- laerling has joined.
16:50:13 -!- b_jonas has joined.
17:20:38 <esowiki> [[Special:Log/newusers]] create * FlyHamsterPaul * New user account
17:21:40 -!- Phantom_Hoover has joined.
17:24:37 -!- zzo38 has quit (Ping timeout: 245 seconds).
17:29:18 -!- Sgeo_ has quit (Read error: Connection reset by peer).
17:29:44 -!- Sgeo_ has joined.
18:06:44 -!- Sgeo__ has joined.
18:09:37 -!- Sgeo_ has quit (Ping timeout: 245 seconds).
18:28:17 -!- laerling has quit (Quit: Leaving).
18:28:39 -!- laerling has joined.
18:29:03 -!- laerling has quit (Remote host closed the connection).
18:32:37 -!- laerling has joined.
18:42:03 -!- FreeFull has joined.
19:18:24 -!- S_Gautam has joined.
19:54:32 -!- arseniiv has quit (Ping timeout: 272 seconds).
20:05:12 -!- zzo38 has joined.
20:06:08 <HackEso> olist 1170: shachaf oerjan Sgeo FireFly boily nortti b_jonas
20:27:11 -!- laerling has quit (Quit: Leaving).
20:30:04 -!- laerling has joined.
20:38:59 -!- laerling has quit (Quit: ZNC - https://znc.in).
20:39:24 -!- laerling has joined.
20:39:59 -!- S1 has joined.
20:45:16 -!- laerling has quit (Quit: ZNC - https://znc.in).
20:46:50 -!- laerlings has joined.
20:46:59 -!- laerlings has left.
21:27:58 -!- S_Gautam has quit (Quit: Connection closed for inactivity).
21:44:05 <esowiki> [[Talk:Pistons & Pistons]] https://esolangs.org/w/index.php?diff=64188&oldid=64155 * Salpynx * (+415) /* Validity? */
21:56:35 <esowiki> [[Talk:Pistons & Pistons]] M https://esolangs.org/w/index.php?diff=64189&oldid=64188 * Salpynx * (+106) Re-instate heading, and trying to figure out who actually responded
21:58:56 <esowiki> [[Pistons & Pistons]] M https://esolangs.org/w/index.php?diff=64190&oldid=64187 * Salpynx * (-2) /* Specifics */ four
22:07:01 -!- AnotherTest has quit (Ping timeout: 244 seconds).
22:12:04 <esowiki> [[Pistons & Pistons]] https://esolangs.org/w/index.php?diff=64191&oldid=64190 * Salpynx * (-358) /* Infinite Loop */ tidy examples (use ideographic space) & remove invalid ones
22:14:07 <esowiki> [[Pistons & Pistons]] M https://esolangs.org/w/index.php?diff=64192&oldid=64191 * Salpynx * (-152) Tidy categories
22:15:08 -!- S1 has quit (Remote host closed the connection).
22:30:44 -!- laerling has joined.
23:13:48 -!- tromp has quit (Remote host closed the connection).
23:27:49 -!- b_jonas has quit (Quit: leaving).
23:39:17 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
00:01:37 <esowiki> [[User talk:JonoCode9374]] https://esolangs.org/w/index.php?diff=64193&oldid=64186 * JonoCode9374 * (+192) /* Please don't recover the examples on Keg (yet) */
00:20:04 -!- xkapastel has quit (Quit: Connection closed for inactivity).
00:27:01 -!- tromp has joined.
00:31:22 -!- tromp has quit (Ping timeout: 252 seconds).
00:53:45 -!- budonyc has joined.
01:16:04 <shachaf> ski: Hmm, I wonder how strong the connection between coroutines an trampolines is.
01:28:37 <ski> elaborate ?
01:32:26 <shachaf> Maybe I should first sort out the things about coroutines. :-)
01:33:11 <shachaf> I don't remember where we left that conversation off.
01:47:08 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
01:50:20 -!- Lord_of_Life has joined.
02:02:53 <tswett[m]> So, remember how the other night, I was trying to figure out how to do keyboard input with PCjs?
02:03:01 <tswett[m]> I'm *STILL* trying to figure it out. :D
02:19:17 -!- Sgeo_ has joined.
02:22:25 -!- Sgeo__ has quit (Ping timeout: 248 seconds).
03:15:27 <esowiki> [[User talk:JonoCode9374]] M https://esolangs.org/w/index.php?diff=64194&oldid=64193 * A * (+308) Add the link
03:21:47 <esowiki> [[User talk:JonoCode9374]] M https://esolangs.org/w/index.php?diff=64195&oldid=64194 * A * (+76)
03:27:36 <esowiki> [[Talk:Pistons & Pistons]] M https://esolangs.org/w/index.php?diff=64196&oldid=64189 * A * (+39) /* Potential Interpreter */
03:32:36 <esowiki> [[User talk:JonoCode9374]] M https://esolangs.org/w/index.php?diff=64197&oldid=64195 * A * (+3)
03:33:06 <esowiki> [[User talk:JonoCode9374]] M https://esolangs.org/w/index.php?diff=64198&oldid=64197 * A * (+20)
04:51:35 <esowiki> [[Cal]] M https://esolangs.org/w/index.php?diff=64199&oldid=64178 * A * (+69)
05:41:29 -!- akozar has joined.
05:42:15 <esowiki> [[Pistons & Pistons]] https://esolangs.org/w/index.php?diff=64200&oldid=64192 * Salpynx * (+9) /* Examples */ not great, but is at least valid, and space aligned
05:51:49 <esowiki> [[Pistons & Pistons]] M https://esolangs.org/w/index.php?diff=64201&oldid=64200 * Salpynx * (+8) /* Infinite Loop */ slightly better spacing
05:52:08 -!- tromp has joined.
05:57:16 -!- tromp has quit (Ping timeout: 276 seconds).
06:51:34 -!- tromp has joined.
07:17:53 <esowiki> [[User talk:JonoCode9374]] M https://esolangs.org/w/index.php?diff=64202&oldid=64198 * JonoCode9374 * (+194) /* Please don't recover the examples on Keg (yet) */
07:28:19 <esowiki> [[Esoteric computer]] https://esolangs.org/w/index.php?diff=64203&oldid=32402 * A * (+300)
07:30:13 <esowiki> [[User talk:JonoCode9374]] M https://esolangs.org/w/index.php?diff=64204&oldid=64202 * A * (+328)
07:30:45 <esowiki> [[Keg]] M https://esolangs.org/w/index.php?diff=64205&oldid=64185 * A * (+603) Revert my edits
07:38:00 <esowiki> [[Esoteric computer]] M https://esolangs.org/w/index.php?diff=64206&oldid=64203 * A * (+155)
07:40:48 <esowiki> [[Esoteric computer]] M https://esolangs.org/w/index.php?diff=64207&oldid=64206 * A * (-15)
07:43:23 -!- FreeFull has quit.
07:44:15 -!- Frater_EST has joined.
07:52:53 <shachaf> ski: I think there was something unclear about the connection between stack-switching coroutines and state-machine coroutines, maybe?
07:58:31 <ski> hm, i think you mentioned something like that, yes
07:59:30 <ski> (and obviously i didn't recall that, even though i briefly looked at the backlog, until after you mentioned it)
08:03:09 -!- Frater_EST has left.
08:07:21 <esowiki> [[Esoteric computer]] M https://esolangs.org/w/index.php?diff=64208&oldid=64207 * A * (+533)
08:16:38 <esowiki> [[Esoteric computer]] M https://esolangs.org/w/index.php?diff=64209&oldid=64208 * A * (+21)
08:17:02 -!- b_jonas has joined.
08:17:04 <b_jonas> `bobadventureslist http://bobadventures.smackjeeves.com/comics/2823593/20190710/
08:17:06 <HackEso> bobadventureslist http://bobadventures.smackjeeves.com/comics/2823593/20190710/: b_jonas
08:23:07 -!- b_jonas has quit (Quit: leaving).
08:37:33 <esowiki> [[User talk:JonoCode9374]] M https://esolangs.org/w/index.php?diff=64210&oldid=64204 * A * (+127)
08:44:30 <esowiki> [[Keg]] M https://esolangs.org/w/index.php?diff=64211&oldid=64205 * A * (+159) /* Fibonacci sequence */
08:57:25 -!- arseniiv has joined.
09:45:41 -!- akozar has quit (Quit: akozar).
09:53:42 -!- moei has joined.
10:15:20 -!- AnotherTest has joined.
10:25:33 <shachaf> ski: Man, I wish IRC was better at multiline code and other things like that, with real-time editing and so on.
10:26:31 <Taneb> Shame Google Wave never caught on
10:30:59 <esowiki> [[Esoteric computer]] M https://esolangs.org/w/index.php?diff=64212&oldid=64209 * A * (+205)
11:23:45 <esowiki> [[User talk:JonoCode9374]] M https://esolangs.org/w/index.php?diff=64213&oldid=64210 * JonoCode9374 * (+123)
11:29:47 -!- wob_jonas has joined.
12:21:35 <esowiki> [[Punc]] N https://esolangs.org/w/index.php?oldid=64214 * A * (+635) English description
12:26:13 -!- xkapastel has joined.
12:34:44 <esowiki> [[Punc]] M https://esolangs.org/w/index.php?diff=64215&oldid=64214 * A * (+971)
13:42:37 <arseniiv> I was worried it’s a Punctree derivative. Whew
13:47:43 -!- Lord_of_Life has quit (Ping timeout: 246 seconds).
13:50:45 -!- Lord_of_Life has joined.
14:22:37 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64216&oldid=63832 * A * (+118)
14:23:44 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64217&oldid=64216 * A * (+58)
14:25:33 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64218&oldid=64217 * A * (+173)
15:00:16 -!- wob_jonas has quit (Remote host closed the connection).
16:31:24 -!- b_jonas has joined.
16:38:09 <int-e> @tell oerjan Do you like https://www.youtube.com/watch?v=H7HTQai7Wwg ?
16:56:15 -!- Sgeo__ has joined.
17:00:00 -!- Sgeo_ has quit (Ping timeout: 268 seconds).
17:14:45 -!- Sgeo_ has joined.
17:18:56 -!- Sgeo__ has quit (Ping timeout: 272 seconds).
17:20:39 -!- Phantom_Hoover has joined.
17:22:17 -!- zzo38 has quit (Ping timeout: 244 seconds).
17:22:29 -!- zzo38 has joined.
18:23:25 -!- tromp has quit (Remote host closed the connection).
18:34:56 -!- Melvar has quit (Ping timeout: 272 seconds).
18:39:47 -!- Sgeo__ has joined.
18:43:36 -!- Sgeo_ has quit (Ping timeout: 268 seconds).
19:08:13 -!- FreeFull has joined.
19:09:59 -!- user24 has joined.
19:15:10 -!- user24 has quit (Quit: Leaving).
19:32:24 -!- Melvar has joined.
19:35:31 <tswett[m]> Hey, I think I found out why I'm not getting any keyboard interrupts in my 8088 emulator.
19:35:52 <tswett[m]> I'm not talking to the interrupt controller. And when you don't talk to the interrupt controller, it gets mad at you and stops giving you interrupts.
19:36:43 -!- arseniiv has quit (Ping timeout: 245 seconds).
19:37:40 <kmc> that would make sense
20:01:29 -!- tromp has joined.
20:04:18 -!- Sgeo_ has joined.
20:07:29 -!- Sgeo__ has quit (Ping timeout: 248 seconds).
20:18:50 -!- Sgeo_ has quit (Read error: Connection reset by peer).
20:19:15 -!- Sgeo_ has joined.
20:37:54 -!- xkapastel has quit (Quit: Connection closed for inactivity).
20:51:54 <b_jonas> tswett[m]: if that doesn't fix the issue, try pulling off the keyboard connector, then plugging it in again
21:13:07 -!- AnotherTest has quit (Ping timeout: 276 seconds).
21:25:45 -!- akozar has joined.
21:42:10 <akozar> Hello, all. I'm new here so I thought I'd introduce myself. My name is Anthony Kozar and I've been enjoying reading the wiki for a couple of months now.
21:43:46 <HackEso> aKoZaR: wElCoMe tO ThE InTeRnAtIoNaL HuB FoR EsOtErIc pRoGrAmMiNg lAnGuAgE DeSiGn aNd dEpLoYmEnT! fOr mOrE InFoRmAtIoN, cHeCk oUt oUr wIkI: <HtTpS://EsOlAnGs.oRg/>. (fOr tHe oThEr kInD Of eSoTeRiCa, TrY #eSoTeRiC On eFnEt oR DaLnEt.)
21:45:41 <akozar> Thanks. :) (one of those messages is from a bot, right?)
21:45:54 <HackEso> HackEso is almost but not quite unlike HackEgo.
21:46:06 <HackEso> HackEgo, also known as HackBot, is a bot that runs arbitrary commands on Unix. See `help for info on using it. You should totally try to hax0r it! Make sure you imagine it's running as root with no sandboxing. HackEgo is the slowest bot in all Mexico!
21:46:26 <int-e> (And contrary to popular belief, I'm not a bot.)
21:46:57 <int-e> But this channel has a number of bots.
21:47:00 <fungot> int-e: when an electee to three or more players who were contestants, and calculations involving a given board, as described in other
21:47:00 <HackEso> fungot is our beloved channel mascot and voice of reason.
21:48:08 <FireFly> [ 'ye olde friendly evalbot'
21:48:08 <j-bot> FireFly: ye olde friendly evalbot
21:48:28 <lambdabot> "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *Ex...
21:48:59 <HackEso> Esowiki is our resident issue tracker.
21:49:29 <int-e> (esowiki logs wiki edits)
21:50:59 <akozar> I've been trying out a number of the languages on esolangs.org. One that interested me is "SMETANA To Infinity!".
21:51:01 <int-e> Hmm, October last year. I forgot.
21:51:25 <akozar> https://esolangs.org/wiki/SMETANA_To_Infinity!
21:51:48 <akozar> There didn't seem to be an implementation so I wrote one in Python.
21:54:27 <akozar> I've included a few sample programs with my interpreter (https://github.com/anthonykozar/Smetana2Infinity) but I thought I'd put out a general call for more programs in SMETANA To Infinity! I'm interested to test my interpreter some more plus see what clever coding techniques people may come up with. ;-)
21:57:55 <int-e> hmm I wonder what the (Smetana) examples at https://github.com/catseye/SMETANA/tree/master/eg do
21:58:35 <akozar> I think most of them just end up in infinite loops. I couldn't see any other purpose to them.
22:05:56 <int-e> I kind of doubt that there are any substantial SMETANA to Infinity! programs. Languages without I/O have the downside that nobody tackles the standard tasks... cat, reverse, hello world, rot13, quine, brainfuck interpreter, ...
22:07:04 <int-e> Simply because they can't be implemented. So once the computational class is established, there's nothing left to do.
22:08:08 <esowiki> [[Klaus]] N https://esolangs.org/w/index.php?oldid=64219 * Areallycoolusername * (+4588) Created page with "'''Klaus''' is an [[esoteric programming language]] made by [[User: Areallycoolusername|Areallycoolusername]]. It was made to be highly capable, with control flow, variables,..."
22:08:27 <akozar> SMETANA to Infinity! has output but not input. I've included examples that output "hello world", Collatz sequences, and a prime sieve that can find all primes up to some hard-coded limit.
22:08:55 <int-e> Oh, there. I missed that.
22:09:13 <tswett[m]> Oh, the prime sieve sounds really cool.
22:10:18 <akozar> The prime sieve is neat but it requires O(n) lines of code where n is the maximum integer to be checked.
22:10:55 <esowiki> [[Klaus]] https://esolangs.org/w/index.php?diff=64220&oldid=64219 * Areallycoolusername * (+10)
22:11:15 <akozar> I included a Python script in my package that can output a sieve program in STI with an arbitrary max integer.
22:12:25 <akozar> But I'd be really interested if someone could write a program for finding primes that used a constant number of lines of code. :)
22:12:26 <int-e> what would an unbounded binary counter look like? (output 1\n10\n11\n100\n101\n110\n111\n1000\n1001\n and so on?)
22:13:20 <esowiki> [[Klaus]] https://esolangs.org/w/index.php?diff=64221&oldid=64220 * Areallycoolusername * (-13)
22:13:57 <esowiki> [[Klaus]] https://esolangs.org/w/index.php?diff=64222&oldid=64221 * Areallycoolusername * (+9)
22:15:06 <esowiki> [[Klaus]] https://esolangs.org/w/index.php?diff=64223&oldid=64222 * Areallycoolusername * (+1) /* Computational Properties */
22:16:23 <esowiki> [[Klaus]] https://esolangs.org/w/index.php?diff=64224&oldid=64223 * Areallycoolusername * (+23) /* Hello World Program */
22:17:17 <esowiki> [[Klaus]] https://esolangs.org/w/index.php?diff=64225&oldid=64224 * Areallycoolusername * (+1) /* Hello World Program */
22:18:03 <b_jonas> > error "string\nwith\nnewline"
22:18:36 <b_jonas> where does the double quote come from in the lambdabot output for (fix error) ?
22:19:24 <int-e> > undefined :: String
22:20:06 <b_jonas> oh, it defaults to String because error takes a String?
22:20:31 <b_jonas> and it prints the double quote before it starts to actually evaluate the string
22:23:11 <tswett[m]> An unbounded binary counter in STI!? Hmmm.
22:23:49 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=64226&oldid=64177 * Areallycoolusername * (+12) /* K */
22:24:39 <esowiki> [[User:Areallycoolusername]] https://esolangs.org/w/index.php?diff=64227&oldid=64145 * Areallycoolusername * (+12)
22:24:48 <tswett[m]> 1. Swap 2 and 3. 2. Continue to 4. 3. Go back to 1. 4. Swap 5 and 6. 5. Continue to 7. 6. Go back to 1.
22:25:25 <akozar> It shouldn't too hard to write an An unbounded binary counter in STI that outputs the numbers in reverse. I'll have to give it some thought for writing the numbers forwards though....
22:26:10 <tswett[m]> Step 3n+1. Swap step 3n+2 with step 3n+3. Step 3n+2. Go to step 3n+4. Step 3n+3. Go to step 1.
22:26:34 <tswett[m]> Does that program count up in binary? It doesn't output anything, of course.
22:29:10 <int-e> Hmm, I've started with unary. https://int-e.eu/~bf3/tmp/unary.sme.txt
22:29:56 <int-e> (prints 1 \ 11 \ 111 \ ... when run in ASCII mode)
22:33:39 <akozar> I ran the unary program. Cool. :)
22:33:59 <akozar> I'm trying the binary program, but I
22:34:11 <akozar> I'm not quite sure what I'm looking for....
22:35:54 <akozar> Well, I've got to leave for now. Thanks very much for the interest and discussion!! :)
22:36:34 -!- akozar has quit (Quit: akozar).
22:37:01 -!- xkapastel has joined.
22:37:53 <int-e> too slow. But https://int-e.eu/~bf3/tmp/primes.sme.txt is a simpler way to sieve a finite number of primes.
22:38:27 <int-e> (But also disappointing, of course, since the program is not doing any of the sieving itself. It's all in the initialization.)
22:39:53 -!- moei has quit (Quit: Leaving...).
23:07:06 -!- tromp has quit (Remote host closed the connection).
23:16:30 -!- tromp has joined.
23:21:15 -!- tromp has quit (Ping timeout: 252 seconds).
23:56:40 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
23:59:07 -!- tromp has joined.
00:03:24 -!- tromp has quit (Ping timeout: 252 seconds).
00:09:46 -!- Sgeo__ has joined.
00:13:04 -!- Sgeo_ has quit (Ping timeout: 258 seconds).
00:18:53 <tswett[m]> You know, it's very rare that I receive an email from another human being sent specifically to me. :D
00:18:53 <tswett[m]> Most of my email comes from "the Algorithm".
00:20:05 <zzo38> Then what is it for if not specifically for you? Mailing lists? Wide notifications?
00:20:43 <tswett[m]> Yeah, mailing lists and automated emails.
00:22:47 * kmc obeys and worships The Algorithm
00:23:13 <zzo38> I do not have any mailing lists or automated notifications (although I have occasionally received automated replies); all of the messages I receive are someone writing to me specifically. I have sometimes received spam messages, but when that happens I edit my /etc/aliases file so that they can't send it anymore.
00:24:34 <zzo38> (I have several email addresses, so if the spam is prevented in this way, it will not usually prevent legitimate messages.)
00:47:24 -!- tromp has joined.
00:51:49 -!- tromp has quit (Ping timeout: 252 seconds).
00:53:42 -!- tromp has joined.
00:54:58 -!- tromp_ has joined.
00:58:03 -!- tromp has quit (Ping timeout: 252 seconds).
00:59:31 -!- tromp_ has quit (Ping timeout: 252 seconds).
01:09:13 -!- atslash has quit (Quit: This computer has gone to sleep).
01:15:31 -!- tromp has joined.
01:17:51 -!- tromp_ has joined.
01:20:46 -!- tromp has quit (Ping timeout: 276 seconds).
01:22:43 -!- tromp_ has quit (Ping timeout: 276 seconds).
01:47:40 -!- Lord_of_Life has quit (Ping timeout: 246 seconds).
01:47:54 -!- xkapastel has quit (Quit: Connection closed for inactivity).
01:56:13 -!- Lord_of_Life has joined.
02:00:28 -!- FreeFull has quit.
06:04:26 -!- mapleBloodRed has joined.
06:11:38 -!- mapleBloodRed has quit (Read error: Connection reset by peer).
06:15:36 -!- Frater_EST has joined.
06:28:42 -!- akozar has joined.
06:57:14 <HackEso> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch [<output-file>] <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
06:57:18 -!- tromp has joined.
07:09:22 <int-e> akozar: I came up with https://int-e.eu/~bf3/tmp/primes.sme.txt just after you left earlier
07:10:06 <int-e> akozar: (which is borderline cheating because all the sieving is already done during initialization)
07:11:40 <akozar> WOW! That's incredible!
07:13:29 <akozar> Nice work! I'm assuming that it requires more lines to search higher?
07:18:09 <akozar> I think that you can remove the steps An+A where A is not prime, but of course then you have to know some of the primes in advance. ;-)
07:23:32 <akozar> int-e: I was figuring out how your unary counter program worked earlier. Thanks for these examples!
07:28:00 <akozar> And just before you messaged, I was checking out the info about tiling rectangles on your web site. Neat stuff. I enjoy combinatorial problems. ^_^
07:33:19 <int-e> Hmm I might still revisit that one at some point.
07:36:35 -!- b_jonas has quit (Quit: leaving).
07:42:25 -!- tromp has quit (Remote host closed the connection).
08:02:32 -!- tromp has joined.
08:09:52 -!- akozar has quit (Quit: akozar).
08:17:53 <int-e> tswett[m]: I have an unbounded binary counter :) https://int-e.eu/~bf3/tmp/binary.sme.txt
08:27:41 <esowiki> [[Klaus/Dense]] N https://esolangs.org/w/index.php?oldid=64228 * A * (+644) Thank you @Areallycoolusername
08:28:54 <esowiki> [[Klaus/Dense]] https://esolangs.org/w/index.php?diff=64229&oldid=64228 * A * (+3932) Fix typos and more info; Ctrl+C Ctrl+V first
08:39:03 <esowiki> [[Klaus/Dense]] M https://esolangs.org/w/index.php?diff=64230&oldid=64229 * A * (+120) Do partial work
08:52:49 <int-e> But this should not distract from the fact that this is a really annoying language to work in.
08:53:19 <esowiki> [[Klaus/Dense]] M https://esolangs.org/w/index.php?diff=64231&oldid=64230 * A * (+29) Hello World not yet translated.
08:54:40 -!- atslash has joined.
08:56:40 -!- arseniiv has joined.
08:59:13 -!- atslash has quit (Ping timeout: 245 seconds).
08:59:50 -!- atslash has joined.
09:03:22 <esowiki> [[Klaus/Dense]] M https://esolangs.org/w/index.php?diff=64232&oldid=64231 * A * (+124)
09:11:24 <esowiki> [[Klaus/Dense]] M https://esolangs.org/w/index.php?diff=64233&oldid=64232 * A * (-33) Simpler syntax to compile to Klaus
09:15:05 <esowiki> [[Klaus/Dense]] M https://esolangs.org/w/index.php?diff=64234&oldid=64233 * A * (+2)
09:23:47 <esowiki> [[Klaus/Dense]] M https://esolangs.org/w/index.php?diff=64235&oldid=64234 * A * (-100)
09:27:21 <esowiki> [[Klaus/Dense]] M https://esolangs.org/w/index.php?diff=64236&oldid=64235 * A * (+5)
09:35:06 -!- atslash has quit (Quit: Leaving).
09:35:42 <esowiki> [[Klaus/Dense]] M https://esolangs.org/w/index.php?diff=64237&oldid=64236 * A * (+12)
09:45:13 -!- atslash has joined.
10:28:31 -!- AnotherTest has joined.
10:46:40 <esowiki> [[Playlist]] N https://esolangs.org/w/index.php?oldid=64238 * A * (+1108) Created page with "[[Playlist]] is an esoteric programming language based on playlists. ==Rules of operation== Playlist operates over a playlist. There are a few commands in Playlist; they are..."
10:47:30 <esowiki> [[Playlist]] M https://esolangs.org/w/index.php?diff=64239&oldid=64238 * A * (+91)
10:48:59 <esowiki> [[Playlist]] M https://esolangs.org/w/index.php?diff=64240&oldid=64239 * A * (+127)
10:50:54 <esowiki> [[Playlist]] M https://esolangs.org/w/index.php?diff=64241&oldid=64240 * A * (+65) /* Example programs */
10:59:51 -!- nfd9001 has joined.
11:00:40 -!- nfd has quit (Ping timeout: 246 seconds).
11:25:33 -!- xkapastel has joined.
11:46:25 -!- Frater_EST has left.
11:56:34 <lambdabot> Local time for shachaf is Fri Jul 12 04:56:31 2019
11:57:06 <shachaf> ski: This probably doesn't make much sense because it's a thought I had lying in bed at 5 in the morning, but I feel like linear logic par is actually obvious and straightforward.
11:58:25 <shachaf> It just means "or" in one aspect of the classical logic sense: A # B means that "at least one" of A,B is true.
11:59:18 <shachaf> Which means you can turn a refutation of A into a proof of B, and a refutation of B into a proof of A. Which is just the standard thing that document said.
11:59:47 <shachaf> Say, for any natural n, I can tell you that either n is odd or Sn is odd. That means that if you show me that n is even, then I can prove that Sn is odd, and vice versa.
12:00:09 <shachaf> That all seems very simple so can someone remind me what's confusing about par?
12:04:44 <ski> well, consider the proof that for any prime integer `p', if `p' divides `a*b', then `p' divides `a', or `p' divides `b'
12:05:31 <ski> the standard proof of this has the basic shape "suppose `p' does not divide `a'. ... thus `p' divides `b'"
12:06:10 <ski> which seems to me to be exactly the kind of thing that a proof of a multiplicative disjunction would be
12:07:25 <ski> instead of "eagerly" pointing out which alternative we're to prove, we "lazily" wait for our opponent to disprove one disjunct, and only then do we prove the other one (possibly using information that we get from the disproof)
12:08:14 <esowiki> [[Klaus]] M https://esolangs.org/w/index.php?diff=64242&oldid=64225 * A * (+108) No, it is TC
12:08:23 <ski> however, when using this proof, what if we instead of disproving the first disjunct, instead disprove the second one ?
12:08:51 <ski> then we'd have to be able to from that derive a proof of "`p' divides `a'" -- how does that work ?
12:08:58 <esowiki> [[Klaus]] M https://esolangs.org/w/index.php?diff=64243&oldid=64242 * A * (+30) +CAT
12:09:09 <ski> well, in this case, we're in a symmetric situation. but in general, that won't be the case
12:09:55 <ski> so, it seems that one option would be to store both a function from disproof of left disjunct to proof of right disjunct, and a function from disproof of right disjunct to proof of left disjunct
12:10:57 <ski> and here my creeping suspicion is coming in that perhaps, if we take any such pair of functions, then won't necessarily "correspond to each other" (whatever that means)
12:11:10 <shachaf> Here's one odd thing -- I think people end up with expressions like "A # A" in linear logic. I'm not quite sure what that would mean.
12:11:47 <shachaf> Probably because I'm now thinking of these things as truth values, which doesn't work.
12:12:08 <ski> anyway, another option might be to analyze the construction from disproof of left disjunct to proof of right disjunct, in such a way that we can also interpret it as function from disproof of right disjunct to proof of left disjunct, effectively "reversing" it
12:12:34 <shachaf> I kind of like the fact that par is obviously symmetric, unlike functions.
12:13:02 <shachaf> (But the connection to modus tollens that someone mentioned the other day is what made me think of this.)
12:13:22 <ski> so, the one direction (considered as an intuitionistic function, via some forgetful, perhaps) would begat the other direction (which we can also consider in such a way), and then these two (the forgetful versions) would "correspond" in the desired way to each other
12:14:01 <shachaf> I'm not sure quite what you would want from such a correspondence.
12:14:46 <shachaf> Whatever it is it makes sense to want it to arise naturally from the way you write your proofs-or-whatever.
12:14:48 <ski> yeah, by "in this case, we're in a symmetric situation. but in general, that won't be the case", i meant that it's not obvious how to reach from `A^- -> B^+' to `B^- -> A^+', where `A' and `B' may look quite different (as opposed to the above example)
12:15:40 <shachaf> All your logic rules should presumably package up the forward and backward directions together.
12:15:52 <ski> "it makes sense to want it to arise naturally from the way you write your proofs-or-whatever" -- yes
12:16:39 <ski> but from a model-theoretic viewpoint, where we don't consider proofs ?
12:17:05 <shachaf> I don't know what you would want.
12:17:15 * ski neither ..
12:17:28 <shachaf> Informally, I think of "!a" as meaning something like "T & a & a*a & a*a*a & ..." -- a tensor of some number of copies of a, where you get to choose the number.
12:18:01 <shachaf> The De Morgan dual of that would be (0 + a + a#a + a#a#a + ...)
12:19:29 <shachaf> As an implication, you can say that a#a#a = (~a*~a*~a -o _|_)
12:19:57 <shachaf> So it's a thing that takes some number of copies of ~a
12:20:35 <shachaf> Wait, instead of T I should have said 1, and instead of 0 I should have said _|_
12:20:43 <ski> anyway, you can perhaps consider a rule something like from `Gamma , n : neg A |- e : B' derive `Gamma |- {@n |-> e} : A # B' .. hmm
12:21:19 <ski> the point being that we decide to "wait for" a refutaion of `A', and express the proof of `B' in terms of that
12:22:14 <ski> re `!', in that case i'm also pondering if we want some kind of condition on that, to express that "all the `a's are copies of each other"
12:22:36 <ski> (all the `a's in a single "term", i.e.)
12:23:17 <ski> the `T & a & a*a & a*a*a & ...' means that we'll pick how many `a's we like, at least
12:23:51 <ski> and so `0 + a + a#a + a#a#a + ...' means that the context (the opponent) will pick "how many `a's" we'll get fed by it
12:23:53 <shachaf> (It's 1 & a & ..., not T & a & ... -- T is the unit of & and 1 is the unit of *, which was the one I meant.)
12:24:26 <ski> (yea, but i write the additive truth as `1' anyway, so .. :)
12:24:44 <ski> (because it's terminal object)
12:24:58 <shachaf> That's actually a pretty good reason.
12:25:24 <ski> maybe. i'm not sure ;)
12:25:30 <shachaf> Thinking of "a" as a thing that's true or false, a#a makes no sense
12:25:54 <shachaf> So that's not the thing to think in linear logic. Which I already knew of course.
12:26:36 <ski> some systems have a "mix" rule that allows you to derive `A * B |- A # B', iirc
12:27:01 <ski> pretending that the computations corresponding to `A' and `B' communicate, while they actually don't
12:27:24 <ski> and then you can prove `|- 1 # 1' (`1' being mult. truth)
12:27:46 <shachaf> I don't think I have a good feel for the meaning of the four units.
12:28:40 <ski> `*' is "aggregation", and so `1' is "an empty space"
12:28:41 <HackEso> /srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: *': not found
12:30:20 <ski> (er, i should have used `T' of course in `T # T', if i was intending to be consistent with myself. `T' being mult. truth)
12:30:35 <ski> anyway, say you want to prove `T -o A' and `A -o _|_' (`_|_' being mult. false)
12:30:43 <shachaf> Do you have a + b |- a # b in any case?
12:30:45 <ski> prove them together, i mean
12:34:00 <ski> (i was trying to remember a point which i thought i had made in this situation. but now i'm not sure it's there. perhaps because i misremembered some details about the situation ?)
12:35:43 <lambdabot> Local time for shachaf is Fri Jul 12 05:35:40 2019
12:36:19 <shachaf> Thanks for the help. I'll think about it more when I wake up.
12:58:51 -!- nfd has joined.
12:58:54 -!- arseniiv_ has joined.
12:59:41 -!- stux- has joined.
13:00:14 <Taneb> Something I've just thought about
13:00:14 <Taneb> Consider the category "2" which has two objects and a morphism between them
13:00:14 <Taneb> I think there is an adjunction Set |- 2 (if I've got that notation right, I'm not very good at adjunctions)
13:00:14 -!- arseniiv has quit (Read error: Connection reset by peer).
13:00:15 <Taneb> Which maps the empty set to the codomain of the single non-identity arrow in 2, and all other sets to its domain
13:00:15 -!- sftp has quit (Excess Flood).
13:00:31 <Taneb> The reverse of this maps the codomain to the empty set and the domain to any non-empty set, e.g. {{}}
13:00:36 -!- sftp has joined.
13:01:43 -!- nfd9001 has quit (Ping timeout: 245 seconds).
13:02:09 -!- stux|away has quit (Ping timeout: 245 seconds).
13:19:07 <tswett[m]> Usually I just think of a # b as meaning ~a -o b, or equivalently ~b -o a, or equivalently ~(~a * ~b).
13:23:00 <tswett[m]> Let me try to remember here. There's a "protocol semantics" for linear logic. Any formula in linear logic represents a protocol.
13:24:18 <tswett[m]> Generally, you can submit a request to a protocol. After you do, you must wait for a response from that protocol. A protocol can "finish" after responding; if it does, then you have successfully consumed that protocol. However, a protocol can also finish *without* responding, in which case you have not successfully consumed the protocol.
13:25:03 <tswett[m]> You know what, I don't think I'm making any sense. So I'm going to start over.
13:25:19 <tswett[m]> There's a "ball game" semantics for linear logic. Any formula in linear logic represents a person who desires to participate in the game.
13:25:43 -!- stux- has quit (Quit: Aloha!).
13:25:57 -!- stux|away has joined.
13:26:51 <tswett[m]> Initially, you have the ball. In order to win the game (that is, in order to successfully consume the formula you are given), you must get everyone to leave the game, and you must possess the ball.
13:27:10 <tswett[m]> The semantics of the various connectives are...
13:27:19 <tswett[m]> 1 - A player who goes home immediately.
13:27:54 <tswett[m]> Bot - A player who waits to be thrown the ball, and then takes the ball and goes home with it.
13:28:16 <tswett[m]> Top - A player who refuses to go home under any circumstances.
13:29:18 <tswett[m]> 0 - A player who allows you to win the game immediately, by sending all the other players home (even Top), taking any excess balls, and giving you a ball if you need one.
13:29:40 <tswett[m]> a + b - A player who chooses either a or b to substitute for herself.
13:30:03 <tswett[m]> a & b - A player who allows you to pick either a or b, and has the player you chose substitute for herself.
13:31:02 <tswett[m]> a * b - A player who has both a and b standing behind her; when you throw her the ball, she will pass it on to either a or b (your choice), and also pass along any messages. When she receives the ball back from a or b, she throws it back to you.
13:37:58 <tswett[m]> a # b - A player who has both a and b standing behind her, and also has a ball in her pocket. When you throw her the ball, she then throws one ball each to a and b. Whenever she gets a ball back from either one, she throws it back to you; her team then sits and waits to receive the ball again, at which point she will throw it to whichever of her two subordinates she most recently got the ball from.
13:39:52 <tswett[m]> She will not go home until both of her subordinates have gone home and she has thrown you as many balls as you have thrown her.
13:42:00 <tswett[m]> ~a - A player who waits to be thrown the ball, then behaves like *you* are a player of type "a". This player will not go home until she has won (that is, she's done what is necessary to make a player of type "a" go home, and she has the ball).
13:43:06 <tswett[m]> So, all this explains why 1 # Bot can be successfully consumed, but 1 # 1 and Bot # Bot cannot be.
13:43:54 <tswett[m]> In the case of 1 # Bot, 1 goes home immediately; # throws a ball to Bot, who goes home with it; and # throws the other ball to you and goes home.
13:44:05 <tswett[m]> In the case of 1 # 1, both 1s go home immediately, so # has nobody to throw the extra ball to.
13:44:19 <tswett[m]> And in the case of Bot # Bot, # throws a ball to each Bot, they both go home, and # will never get the ball back like she wants.
13:46:12 -!- Lord_of_Life_ has joined.
13:49:34 -!- Lord_of_Life has quit (Ping timeout: 258 seconds).
13:49:36 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
14:45:11 -!- xkapastel has quit (Quit: Connection closed for inactivity).
14:57:59 <tswett[m]> I know I didn't get it *quite* right, but I think I was pretty close.
14:58:32 <tswett[m]> Way back when, I wanted to create a "linear Haskell" programming language.
14:58:47 <tswett[m]> I remember I really liked whatever name I came up for it, but I don't remember what that name was.
15:03:38 <tswett[m]> I think the name was mostly arbitrary. It was chosen for how it has a lot of the sounds from "Haskell" and "linear".
15:03:58 -!- user24 has joined.
15:04:18 <tswett[m]> It comes from the word "Hydralisk" from StarCraft, with the middle syllable dropped.
15:06:51 <tswett[m]> I had the idea to give it a rather fun "disjointed lambda" syntax, where you could write definitions such as this one:
15:06:56 <int-e> mmm straight line haskell
15:07:53 <int-e> . o O ( I even hava a slogan for it: "Don't declare. Just do!" )
15:08:18 <tswett[m]> dual :: ((a -> Bottom) -> Bottom) -> a
15:08:46 <tswett[m]> So in context, f :: (a -> Bottom) -> Bottom; \x :: a -> Bottom; and x :: a.
15:09:20 <tswett[m]> The -> operator sees an expression of type Bottom on the left, and a on the right, and forms an expression of type a.
15:15:06 <tswett[m]> It expresses the following rule: given "X, (a -o Bot) |- Bot" and "Y, a |- b", form "X, Y |- b".
16:17:08 -!- shotover has joined.
16:21:48 -!- shotover has quit (Client Quit).
16:22:24 -!- shotover has joined.
16:25:20 -!- moei has joined.
17:18:00 -!- user24 has quit (Quit: Leaving).
17:19:08 -!- budonyc has quit (Ping timeout: 272 seconds).
17:29:15 * kmc waves to tswett[m]
17:30:45 <kmc> how's life?
17:43:46 -!- Phantom_Hoover has joined.
18:29:14 <HackEso> 537) <Phantom_Hoover> OMG <Phantom_Hoover> What if <Phantom_Hoover> we shoot Hitler with neutrinos \ 1080) <fungot> boily: so i guess a really savvy glass programmer could make some money, maybe start a home based business of a profiler to spot outright dead code. macro-generated code often has big swaths of it. i'd hate learning cobol and fortran just for getting wiki work.
18:29:57 <fungot> Available: agora* alice c64 ct darwin discworld enron europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack oots pa qwantz sms speeches ss wp ukparl youtube
18:30:04 <fungot> Selected style: irc (IRC logs of freenode/#esoteric, freenode/#scheme and ircnet/#douglasadams)
18:30:14 <fungot> int-e: just copy-pasted from http://en.wikipedia.org/ wiki/ irp
18:47:17 <lambdabot> LOWI 121820Z VRB04KT 9999 -RA FEW015 BKN050 OVC090 15/13 Q1015 TEMPO SHRA
18:48:00 <lambdabot> LOWW 121820Z 28008KT 9999 FEW030CB SCT060 BKN300 21/12 Q1011 NOSIG
18:48:41 <lambdabot> EDDT 121820Z VRB02KT 9999 FEW025CB 20/14 Q1009 NOSIG
19:15:25 -!- FreeFull has joined.
19:32:59 <Phantom_Hoover> i like 537 because it's now an obscure reference to a very brief period in popular science
19:35:42 <esowiki> [[Esolang:General disclaimer]] https://esolangs.org/w/index.php?diff=64244&oldid=59371 * Areallycoolusername * (+122) Import Compensation Notice
19:36:15 <esowiki> [[Esolang:General disclaimer]] https://esolangs.org/w/index.php?diff=64245&oldid=64244 * Areallycoolusername * (+1)
19:52:13 <shachaf> Taneb: I don't understand your adjunction. Where do the functors map the arrows?
19:52:41 <shachaf> For example don't you need a function from {{}} to {}?
20:40:51 -!- atslash has quit (Quit: This computer has gone to sleep).
21:01:06 <arseniiv_> <tswett[m]> There's a "ball game" semantics for linear logic => the following was interesting!
21:06:30 -!- arseniiv_ has changed nick to arseniiv.
21:26:44 -!- AnotherTest has quit (Ping timeout: 252 seconds).
21:38:10 <zzo38> Finally, now I implemented the ability to post articles with bystand.
21:50:53 <zzo38> (It still isn't complete, though. Many additional stuff might be added/changed.)
21:56:55 -!- arseniiv has quit (Ping timeout: 246 seconds).
22:25:02 -!- budonyc has joined.
23:03:59 -!- lambdabot has quit (Quit: When will I be back? Only time will tell!).
23:05:45 -!- tromp_ has joined.
23:08:34 -!- tromp has quit (Ping timeout: 276 seconds).
23:19:09 -!- lambdabot has joined.
23:43:46 <esowiki> [[Category:Works-in-Progress]] M https://esolangs.org/w/index.php?diff=64246&oldid=63964 * Salpynx * (-31) Undo revision 63964 by [[Special:Contributions/A|A]] ([[User talk:A|talk]]) redundant category theory joke
23:51:01 -!- Phantom_Hoover has quit (Ping timeout: 246 seconds).
23:53:05 -!- zzo38 has quit (Ping timeout: 248 seconds).
23:53:51 <int-e> shachaf: Well there's a Theseus problem... it's all newly compiled code now!
23:54:10 -!- zzo38 has joined.
23:56:44 <int-e> I don't know how to answer that. (But I do see the pun.)
00:11:07 -!- atslash has joined.
00:34:19 -!- rodgort has quit (Quit: Leaving).
00:38:31 -!- rodgort has joined.
00:39:18 -!- Sgeo_ has joined.
00:42:28 -!- Sgeo__ has quit (Ping timeout: 246 seconds).
01:32:56 -!- atslash has quit (Quit: This computer has gone to sleep).
01:49:28 -!- Lord_of_Life has quit (Ping timeout: 258 seconds).
01:52:11 -!- Lord_of_Life has joined.
02:55:22 -!- budonyc has quit (Quit: Leaving).
03:02:36 -!- yaewa has joined.
03:03:48 -!- moei has quit (Ping timeout: 245 seconds).
04:04:44 -!- Sgeo__ has joined.
04:08:01 -!- Sgeo_ has quit (Ping timeout: 248 seconds).
05:31:47 -!- Sgeo_ has joined.
05:35:04 -!- Sgeo__ has quit (Ping timeout: 272 seconds).
05:37:10 <zzo38> I invented "unusenet:" URI scheme, which can be used with both Usenet and Unusenet, and is a bit similar to "magnet:" URI scheme. You can specify the message by any combination of stuff, such as the message ID, server(s) you can access it from, timestamp, hash values, etc. Any part is optional.
06:18:47 -!- myname has quit (Ping timeout: 244 seconds).
06:32:54 -!- myname has joined.
06:41:17 -!- Frater_EST has joined.
06:41:34 -!- Frater_EST has left.
07:36:27 -!- tromp_ has quit (Remote host closed the connection).
07:37:19 -!- tromp has joined.
07:47:00 -!- john_metcalf has joined.
07:55:45 -!- Frater_EST has joined.
07:56:10 -!- Frater_EST has left.
08:33:17 -!- arseniiv has joined.
08:43:26 -!- AnotherTest has joined.
10:08:31 -!- john_metcalf has quit (Ping timeout: 268 seconds).
10:46:34 -!- Phantom_Hoover has joined.
12:07:41 -!- xkapastel has joined.
13:50:27 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
13:51:41 -!- Lord_of_Life has joined.
14:27:20 -!- xkapastel has quit (Quit: Connection closed for inactivity).
15:10:17 -!- xkapastel has joined.
15:12:43 -!- clog has quit (Quit: ^C).
15:14:17 -!- atslash has joined.
15:17:13 -!- clog has joined.
15:41:05 <esowiki> [[Special:Log/newusers]] create * Impartial * New user account
15:59:57 <esowiki> [[Esolang:Introduce yourself]] M https://esolangs.org/w/index.php?diff=64247&oldid=63996 * Impartial * (+260) /* Introductions */
16:08:37 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
18:11:08 <zzo38> Is it common to use a upsert that is always going to cause a conflict? (Such as "INSERT INTO ... SELECT ... ON CONFLICT(...) DO UPDATE ..."; since you can't use joins and some other features of a SELECT command in a UPDATE command, so you use upsert instead.)
18:26:17 <esowiki> [[Cthulhu]] https://esolangs.org/w/index.php?diff=64248&oldid=59611 * Joshop * (+1451)
18:26:38 <esowiki> [[Cthulhu]] https://esolangs.org/w/index.php?diff=64249&oldid=64248 * Joshop * (+5)
18:27:22 <esowiki> [[Cthulhu]] https://esolangs.org/w/index.php?diff=64250&oldid=64249 * Joshop * (+4)
18:30:40 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=64251&oldid=64226 * Joshop * (+14)
18:57:02 <zzo38> Is there a flag in ELF to share memory after execve() is used?
18:59:35 <zzo38> If this flag is set, and the section in the original and new program have the same name, size, and virtual address, and the flag is set in both programs, then it should not reset the contents of the section. That is what my idea is.
19:26:47 -!- atslash has quit (Quit: This computer has gone to sleep).
19:35:47 -!- grumble has quit (Quit: Don't forget to like, comment and subscribe!).
19:45:03 -!- grumble has joined.
20:44:20 <arseniiv> someone interested in probabilistic context-free grammars?
20:45:19 <arseniiv> aka stochastic CFGs. I wonder if there is a criterion for consistency of PCFG not involving a proper CFG
20:46:36 <arseniiv> I don’t want to write a transformation to proper one (when there is an equivalent proper one)
20:50:08 <int-e> What does "consistency" mean here? Something with almost sure termination of unfolding the productions, perhaps?
20:51:49 <zzo38> I have done stuff like that
21:06:55 <arseniiv> zzo38: I decided to enhance my PCFG-based word/text generator with some analytics, did you generate something with these grammars too?
21:07:33 <arseniiv> (more accurately, I write a new version from scratch)
21:08:23 <arseniiv> okay if there is something re this, please @tell me if you want
21:10:05 <zzo38> arseniiv: FurryScript is similar.
21:12:58 -!- arseniiv has quit (Ping timeout: 245 seconds).
21:17:20 -!- xkapastel has quit (Quit: Connection closed for inactivity).
21:37:59 -!- uber has joined.
21:38:29 <uber> apparently literally all links to esolang discord server are invalid
21:38:37 <uber> so i guess this is the only place to talk about stuff
21:41:12 <zzo38> I like IRC is better than Discord anyways, I think
21:42:32 -!- yaewa has quit (Quit: Leaving...).
21:49:59 <uber> my language takes a substring of a string and then moves it to the front of the string
21:50:04 -!- uber has quit (Remote host closed the connection).
21:50:27 -!- AnotherTest has quit (Ping timeout: 264 seconds).
22:08:20 <esowiki> [[User:Ubersketch/Flippant]] N https://esolangs.org/w/index.php?oldid=64252 * Ubersketch * (+418) Created page with "Flippant is a language based on moving substrings and printing characters. <code>p(x) Print string x and go to the next step. d(x,y) Delete all characters starting from the x..."
22:09:10 <esowiki> [[User:Ubersketch/Flippant]] https://esolangs.org/w/index.php?diff=64253&oldid=64252 * Ubersketch * (+22)
22:11:03 <esowiki> [[User:Ubersketch/Flippant]] https://esolangs.org/w/index.php?diff=64254&oldid=64253 * Ubersketch * (-24)
00:37:43 -!- xkapastel has joined.
01:39:42 -!- haida has joined.
01:50:47 -!- Lord_of_Life has quit (Ping timeout: 268 seconds).
01:52:02 -!- Lord_of_Life has joined.
02:00:46 -!- haida has quit (Ping timeout: 246 seconds).
02:41:05 <zzo38> Is there a MIME type for bbcode? (Such thing can be helpful in case someone want to use NNTP with web forum software.)
02:44:52 <zzo38> How do you think I should implement the progress indicator for bystand?
02:57:20 -!- xkapastel has quit (Quit: Connection closed for inactivity).
03:11:56 -!- FreeFull has quit.
03:14:43 <esowiki> [[User:DoggyDogWhirl]] M https://esolangs.org/w/index.php?diff=64255&oldid=63976 * DoggyDogWhirl * (+1549) Nothing important, I promise
03:52:23 <esowiki> [[Kepler]] N https://esolangs.org/w/index.php?oldid=64256 * Areallycoolusername * (+3339) Created page with "'''Kepler''' is an [[esoteric programming language]] made by [[User: Areallycoolusername|Areallycoolusername]]. It's a deque based, golfing language, made to make golfing a lo..."
06:32:19 -!- Sgeo__ has joined.
06:35:27 -!- Sgeo_ has quit (Ping timeout: 245 seconds).
07:00:24 -!- user24 has joined.
07:04:04 <esowiki> [[Kepler]] M https://esolangs.org/w/index.php?diff=64257&oldid=64256 * A * (+856) /* Implementation */
07:09:47 <esowiki> [[Kepler]] M https://esolangs.org/w/index.php?diff=64258&oldid=64257 * A * (-1) /* Implementation */
07:13:43 <esowiki> [[Kepler]] M https://esolangs.org/w/index.php?diff=64259&oldid=64258 * A * (+80) /* Interesting Properties */
07:14:16 <esowiki> [[Kepler]] M https://esolangs.org/w/index.php?diff=64260&oldid=64259 * A * (+31)
07:21:47 <esowiki> [[Talk:Kepler]] N https://esolangs.org/w/index.php?oldid=64261 * A * (+761) Created page with "Great language, but I think this will be a lot easier to code golf in if you add more undocumented features/problems to your source code. (E.g. ^ without arguments reverses th..."
07:24:20 <esowiki> [[Talk:Pistons & Pistons]] M https://esolangs.org/w/index.php?diff=64262&oldid=64196 * A * (-20) /* Potential Interpreter */
07:25:02 <esowiki> [[Talk:Pistons & Pistons]] M https://esolangs.org/w/index.php?diff=64263&oldid=64262 * A * (-96) /* Potential Interpreter */
07:31:36 <esowiki> [[Talk:Kepler]] M https://esolangs.org/w/index.php?diff=64264&oldid=64261 * A * (+80)
07:40:21 <esowiki> [[Flippant]] N https://esolangs.org/w/index.php?oldid=64265 * A * (+582) Created page with "[[Flippant]] is a language based on moving substrings and printing characters. ==Commands== {| class="wikitable" border="1" |- ! Command ! Purpose |- | p(x) | Print string x a..."
07:49:57 <esowiki> [[Flippant]] M https://esolangs.org/w/index.php?diff=64266&oldid=64265 * A * (+305)
07:55:24 <esowiki> [[Flippant]] M https://esolangs.org/w/index.php?diff=64267&oldid=64266 * A * (+180)
07:56:02 <esowiki> [[Flippant]] M https://esolangs.org/w/index.php?diff=64268&oldid=64267 * A * (+44) /* Hello, world! program */
07:56:43 <esowiki> [[Flippant]] M https://esolangs.org/w/index.php?diff=64269&oldid=64268 * A * (+0)
07:59:52 <esowiki> [[Flippant]] M https://esolangs.org/w/index.php?diff=64270&oldid=64269 * A * (+728)
08:20:20 -!- AnotherTest has joined.
09:34:48 -!- arseniiv has joined.
10:21:58 <esowiki> [[User:DoggyDogWhirl]] M https://esolangs.org/w/index.php?diff=64271&oldid=64255 * A * (+123) /* Brainfuck derivative */
10:34:56 <esowiki> [[User:DoggyDogWhirl]] M https://esolangs.org/w/index.php?diff=64272&oldid=64271 * A * (+260) /* Brainfuck derivative */
10:53:21 -!- user24 has quit (Quit: Leaving).
10:57:39 <esowiki> [[Talk:Kepler]] https://esolangs.org/w/index.php?diff=64273&oldid=64264 * Areallycoolusername * (+166)
11:10:48 <esowiki> [[Talk:Kepler]] M https://esolangs.org/w/index.php?diff=64274&oldid=64273 * A * (+524)
11:13:46 <esowiki> [[Talk:Kepler]] M https://esolangs.org/w/index.php?diff=64275&oldid=64274 * A * (+621) Oops
11:14:14 <esowiki> [[Talk:Kepler]] M https://esolangs.org/w/index.php?diff=64276&oldid=64275 * A * (+4)
11:14:44 <esowiki> [[Talk:Kepler]] M https://esolangs.org/w/index.php?diff=64277&oldid=64276 * A * (-3) /* Ideas on making Kepler's commands useful */
11:23:35 <esowiki> [[Kepler]] M https://esolangs.org/w/index.php?diff=64278&oldid=64260 * A * (+784) /* Implementation */
11:26:34 <esowiki> [[Kepler]] https://esolangs.org/w/index.php?diff=64279&oldid=64278 * A * (+168) /* Implementation */ More new features
11:32:28 <esowiki> [[Kepler]] M https://esolangs.org/w/index.php?diff=64280&oldid=64279 * A * (+4440) /* Hello World Programs */
11:36:27 <esowiki> [[Talk:Kepler]] M https://esolangs.org/w/index.php?diff=64281&oldid=64277 * A * (+148)
11:47:16 <esowiki> [[Kepler]] M https://esolangs.org/w/index.php?diff=64282&oldid=64280 * A * (+154) /* Polynomial growth (a bit close to the Infinite loop) */
11:49:09 -!- adu has quit (Remote host closed the connection).
11:49:13 -!- FreeFull has joined.
11:49:55 <esowiki> [[Kepler]] M https://esolangs.org/w/index.php?diff=64283&oldid=64282 * A * (-2) /* Polynomial growth (a bit close to the Infinite loop) */
11:51:21 <esowiki> [[Kepler]] M https://esolangs.org/w/index.php?diff=64284&oldid=64283 * A * (+111) /* Polynomial growth (a bit close to the Infinite loop) */ Please make this grow faster...
11:54:38 <esowiki> [[Kepler]] M https://esolangs.org/w/index.php?diff=64285&oldid=64284 * A * (+247) /* Polynomial growth (a bit close to the Infinite loop) */
11:55:00 <esowiki> [[Kepler]] M https://esolangs.org/w/index.php?diff=64286&oldid=64285 * A * (+4) /* Human-based looping counter */
11:57:52 <esowiki> [[Kepler]] M https://esolangs.org/w/index.php?diff=64287&oldid=64286 * A * (+17) /* Polynomial growth (a bit close to the Infinite loop) */
11:58:11 <esowiki> [[Kepler]] M https://esolangs.org/w/index.php?diff=64288&oldid=64287 * A * (+2) /* Polynomial growth (a bit close to the Infinite loop) */
11:59:35 <esowiki> [[Talk:Kepler]] https://esolangs.org/w/index.php?diff=64289&oldid=64281 * A * (-616) /* Ideas on making Kepler's commands useful */ Kepler without extensions is very useful.
12:04:04 <esowiki> [[Kepler]] M https://esolangs.org/w/index.php?diff=64290&oldid=64288 * A * (+529) /* Human-based looping counter */
12:05:29 <esowiki> [[Kepler]] M https://esolangs.org/w/index.php?diff=64291&oldid=64290 * A * (-952) /* Implementation */ No need for new features. Kepler is already extremely useful.
12:11:51 <esowiki> [[Kepler]] M https://esolangs.org/w/index.php?diff=64292&oldid=64291 * A * (+240) /* Simulation of addition (and subtraction, of course) */
12:12:36 <esowiki> [[Kepler]] M https://esolangs.org/w/index.php?diff=64293&oldid=64292 * A * (+4) /* Simulation of addition (and subtraction, of course) */
12:14:34 <esowiki> [[Talk:Kepler]] M https://esolangs.org/w/index.php?diff=64294&oldid=64289 * A * (-19)
12:20:02 -!- user24 has joined.
12:24:27 <esowiki> [[Kepler]] M https://esolangs.org/w/index.php?diff=64295&oldid=64293 * A * (+546) /* Implementation */
12:29:17 -!- Sgeo_ has joined.
12:32:33 -!- Sgeo__ has quit (Ping timeout: 248 seconds).
12:44:14 -!- lizzie has left.
13:09:07 -!- user24 has quit (Quit: Leaving).
13:37:46 <fizzie> TIL: dd status=progress
13:38:27 <fizzie> (I did know about kill -USR1 of dd already, but that's more convenient.)
13:50:40 -!- Lord_of_Life_ has joined.
13:51:37 -!- Lord_of_Life has quit (Ping timeout: 246 seconds).
13:52:17 <esowiki> [[Kepler]] M https://esolangs.org/w/index.php?diff=64296&oldid=64295 * A * (+150) /* Interesting Properties */
13:53:21 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
13:53:24 <esowiki> [[Special:Log/newusers]] create * Rapti * New user account
14:38:28 -!- atslash has joined.
14:40:44 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64297&oldid=64218 * A * (+5836)
14:42:15 <esowiki> [[Talk:Kepler]] M https://esolangs.org/w/index.php?diff=64298&oldid=64294 * A * (+275)
14:43:46 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64299&oldid=64297 * A * (+18) /* Quick reference of a nice little golfing language */
15:14:23 -!- Sgeo__ has joined.
15:17:37 -!- Sgeo_ has quit (Ping timeout: 244 seconds).
16:09:19 <esowiki> [[Esolang:Introduce yourself]] M https://esolangs.org/w/index.php?diff=64300&oldid=64247 * Rapti * (+179) /* Introductions */
16:32:38 <zzo38> Do some DVD video players have options to conditionally override the colours and opacity of subpictures?
16:43:51 <esowiki> [[Talk:MarioLANG]] https://esolangs.org/w/index.php?diff=64301&oldid=39251 * Rapti * (+678) /* Good sample programs */
18:30:25 -!- Lord_of_Life has quit (Ping timeout: 248 seconds).
18:58:47 -!- Sgeo_ has joined.
19:02:25 -!- Sgeo__ has quit (Ping timeout: 246 seconds).
19:16:45 -!- adu has joined.
19:21:50 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=64302&oldid=64300 * Sideshowbob * (+53) /* Introductions */
19:24:03 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=64303&oldid=64302 * Sideshowbob * (+26) /* Introductions */
19:29:13 -!- Lord_of_Life has joined.
19:37:00 -!- Lord_of_Life has quit (Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine).
19:37:30 -!- Lord_of_Life has joined.
19:54:19 -!- b_jonas has joined.
19:56:24 <zzo38> I tried to use a printer redirection TSR program with DOSBOX but it doesn't work; it just says "Unhandled INT 17 call EF"
21:04:20 -!- MDude has joined.
21:25:26 -!- AnotherTest has quit (Ping timeout: 252 seconds).
21:26:57 <int-e> That sounds like you (or somebody else?) passed AH = EFh to INT 17h rather than one of the expected values (00, 01, or 02)?
21:59:56 -!- Phantom_Hoover has joined.
23:01:13 -!- b_jonas has quit (Quit: leaving).
23:44:07 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
23:59:38 -!- arseniiv has quit (Ping timeout: 245 seconds).
00:26:41 -!- sprocklem has quit (Ping timeout: 248 seconds).
00:28:53 -!- sprocklem has joined.
00:31:47 -!- Sgeo__ has joined.
00:34:41 -!- Sgeo_ has quit (Ping timeout: 248 seconds).
00:42:06 <zzo38> Did ais523 try to make their card game more? I had a different idea, I will mention it too (after eat, perhaps)
00:45:18 <esowiki> [[Talk:Kepler]] https://esolangs.org/w/index.php?diff=64304&oldid=64298 * Areallycoolusername * (+504)
00:45:38 <esowiki> [[Talk:Kepler]] https://esolangs.org/w/index.php?diff=64305&oldid=64304 * Areallycoolusername * (-2)
01:11:18 <Sgeo__> What the fuck am I reading?
01:11:58 <Sgeo__> On Windows 95, the VFX1 pretends to be... a Joystick. And sending commands to it is done by... reading Joystick data pji.dwFlags = HMD_POWERUP;
01:11:58 <Sgeo__> ret = joyGetPosEx( HMDId, (LPJOYINFOEX)&pji );
01:12:06 -!- zhiayang has quit (Quit: ZNC 1.7.3 - https://znc.in).
01:14:01 -!- zhiayang has joined.
01:14:14 <Sgeo__> #define HMD_POWERUPJOY_CAL_READUONLY
01:19:47 <zzo38> Each player starts five chips of each colour (red, green, blue), and each card also has one colour, and one number 0 to 9, and may also have some flags, commands, etc. And then there are zones, such as the hand, tableau, talon, waste, foundation, pending. Cards in tableau can also have chips placed on them.
01:20:05 <zzo38> There are a few different ways that you can win, lose, and half-lose. If you half-lose twice in one game then you lose.
01:20:52 <zzo38> The actions that you can do on your turn are three kind, which is starting, linking, ending. You must first play a starting action, and then zero or more linking actions, and then one ending action, and then opponent's turn.
01:22:30 <zzo38> Some kind of actions are built-in but some are defined by the cards.
01:24:12 -!- MDude has quit (Ping timeout: 245 seconds).
01:25:02 <zzo38> If between turns any player has no chips or talon is exhausted then that player half-lose and then the chips/talon must be reset, and the other player is given a minor bonus.
01:26:21 <zzo38> Rearranging the cards in your tableau is a linking action (but you can only rearrange their position, and not if it is ready or if it is face down or face up).
01:28:14 <zzo38> And, since declaring an attack is a ending action, that means that, the positioning for attack has to be the same as the positioning for defense, although you can change it per turn.
01:59:35 <esowiki> [[Talk:Kepler]] M https://esolangs.org/w/index.php?diff=64306&oldid=64305 * A * (-925)
02:23:52 -!- FreeFull has quit.
02:28:41 -!- MDude has joined.
02:30:45 <esowiki> [[Talk:Kepler]] https://esolangs.org/w/index.php?diff=64307&oldid=64306 * Areallycoolusername * (+359) Inquiry regarding queue
02:32:23 -!- MDead has joined.
02:33:56 -!- MDude has quit (Ping timeout: 244 seconds).
02:34:04 -!- MDead has changed nick to MDude.
03:09:19 <esowiki> [[Swissen Machine]] N https://esolangs.org/w/index.php?oldid=64308 * Areallycoolusername * (+2309) New Esoteric Computer
03:09:35 <esowiki> [[Swissen Machine]] https://esolangs.org/w/index.php?diff=64309&oldid=64308 * Areallycoolusername * (+4)
03:09:59 <esowiki> [[Swissen Machine]] https://esolangs.org/w/index.php?diff=64310&oldid=64309 * Areallycoolusername * (+1)
03:10:58 <esowiki> [[Swissen Machine]] https://esolangs.org/w/index.php?diff=64311&oldid=64310 * Areallycoolusername * (+70) /* Language Implementation */
03:40:42 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64312&oldid=64299 * A * (+41) /* Quick reference of a nice little golfing language */
03:44:06 <esowiki> [[Kepler]] M https://esolangs.org/w/index.php?diff=64313&oldid=64296 * A * (-68) Break my Python interpreter in order to support more quirks.
03:55:41 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64314&oldid=64312 * A * (-129) /* Quick reference of a nice little golfing language */
03:55:59 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64315&oldid=64314 * A * (+16) /* Stack manipulation operators */
04:00:00 -!- Lord_of_Life has quit (Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine).
04:02:18 -!- Lord_of_Life has joined.
04:04:46 <esowiki> [[Talk:Kepler]] M https://esolangs.org/w/index.php?diff=64316&oldid=64307 * A * (+323)
04:05:11 <esowiki> [[Kepler]] M https://esolangs.org/w/index.php?diff=64317&oldid=64313 * A * (+0) /* Implementation */
04:07:08 <esowiki> [[Talk:Kepler]] M https://esolangs.org/w/index.php?diff=64318&oldid=64316 * A * (-157) /* Python Interpreter */
04:28:21 -!- oerjan has joined.
04:44:43 <oerjan> windows now has a warning to tell me it is turning off warnings when i make e.g. youtube full screen
04:45:09 <oerjan> which means it's annoying me in order to tell me of its remove a less likely annoyance
04:45:48 <oerjan> (less likely, although more prominent if it happens i suppose)
04:45:58 <lambdabot> int-e said 3d 12h 7m 49s ago: Do you like https://www.youtube.com/watch?v=H7HTQai7Wwg ?
04:46:27 <oerjan> ^ was watching this. i have no real relationship to these colored candies.
04:47:32 <int-e> oerjan: I was wondering whether you'd like this mechanism, or the idea of sorting by color, or whether you'd become upset about the one missorted one...
04:48:57 <oerjan> i didn't pay enough attention to notice the one missorted one although it mention in a top comment
04:49:31 <HackEso> CDOP is OCPD, except with the letters in the *proper* order.
04:57:55 <shachaf> oerjan: Do you like this video?
05:05:01 <oerjan> not really in this grumpy mood
05:08:05 <shachaf> would you like a kitten twh
05:25:43 <esowiki> [[Swissen Machine]] M https://esolangs.org/w/index.php?diff=64319&oldid=64311 * A * (+34) I suspect that Jussef Swissen is User:Areallycoolusername.
05:29:30 -!- adu has quit (Quit: adu).
05:35:26 <esowiki> [[Swissen Machine]] M https://esolangs.org/w/index.php?diff=64320&oldid=64319 * A * (+775)
05:40:08 <esowiki> [[Talk:Swissen Machine]] N https://esolangs.org/w/index.php?oldid=64321 * A * (+1581) Created page with "== Difficulties of implementing the Swissen Machine == Whoever has defined the Hugo language, which claims that Hugo conforms part of the Swissen Machine. In this paper, it wi..."
05:42:24 <esowiki> [[Talk:Swissen Machine]] M https://esolangs.org/w/index.php?diff=64322&oldid=64321 * A * (+319) /* Difficulties of implementing the Swissen Machine */
05:43:32 <esowiki> [[Talk:Swissen Machine]] M https://esolangs.org/w/index.php?diff=64323&oldid=64322 * A * (+87) /* Difficulties of implementing the Swissen Machine */
05:44:34 <esowiki> [[Swissen Machine]] M https://esolangs.org/w/index.php?diff=64324&oldid=64320 * A * (-773) /* Difficulties of implementing the Swissen Machine */
05:45:17 -!- Sgeo_ has joined.
05:48:23 -!- Sgeo__ has quit (Ping timeout: 245 seconds).
05:50:47 <esowiki> [[Talk:Swissen Machine]] M https://esolangs.org/w/index.php?diff=64325&oldid=64323 * A * (+821) /* Difficulties of implementing the Swissen Machine */
05:52:17 <esowiki> [[Talk:Swissen Machine]] M https://esolangs.org/w/index.php?diff=64326&oldid=64325 * A * (+62)
05:52:39 <esowiki> [[Talk:Swissen Machine]] M https://esolangs.org/w/index.php?diff=64327&oldid=64326 * A * (+1) /* Conclusion */
05:52:52 <esowiki> [[Talk:Swissen Machine]] M https://esolangs.org/w/index.php?diff=64328&oldid=64327 * A * (-35) /* Conclusion */
05:53:16 <esowiki> [[Talk:Swissen Machine]] M https://esolangs.org/w/index.php?diff=64329&oldid=64328 * A * (+26) /* Conclusion */
05:54:34 <esowiki> [[Talk:Swissen Machine]] M https://esolangs.org/w/index.php?diff=64330&oldid=64329 * A * (+9) /* All language definitions cannot fullfill the definition of the Swissen Machine */
05:56:11 <esowiki> [[Talk:Swissen Machine]] M https://esolangs.org/w/index.php?diff=64331&oldid=64330 * A * (+90) /* All language/machine definitions cannot fullfill the definition of the Swissen Machine */
05:58:37 -!- Sgeo_ has quit (Ping timeout: 258 seconds).
05:58:39 <esowiki> [[Talk:Swissen Machine]] M https://esolangs.org/w/index.php?diff=64332&oldid=64331 * A * (+273) /* Conclusion */
06:07:05 <esowiki> [[Talk:Swissen Machine]] M https://esolangs.org/w/index.php?diff=64333&oldid=64332 * A * (+9) /* Difficulties of implementing the Swissen Machine */
06:11:49 <esowiki> [[Talk:Swissen Machine]] M https://esolangs.org/w/index.php?diff=64334&oldid=64333 * A * (-80)
06:22:36 <esowiki> [[Talk:Swissen Machine]] M https://esolangs.org/w/index.php?diff=64335&oldid=64334 * A * (+1517)
06:24:14 <esowiki> [[Swissen Machine]] M https://esolangs.org/w/index.php?diff=64336&oldid=64324 * A * (+95)
06:24:36 <esowiki> [[Swissen Machine]] M https://esolangs.org/w/index.php?diff=64337&oldid=64336 * A * (+2)
06:28:42 -!- oerjan has quit (Quit: Nite).
06:31:44 <esowiki> [[Swissen Machine]] M https://esolangs.org/w/index.php?diff=64338&oldid=64337 * A * (-2)
06:32:40 <esowiki> [[Swissen Machine]] M https://esolangs.org/w/index.php?diff=64339&oldid=64338 * A * (+44)
06:33:05 <esowiki> [[Swissen Machine]] M https://esolangs.org/w/index.php?diff=64340&oldid=64339 * A * (-15) /* Specifics */
06:34:09 <esowiki> [[Esoteric computer]] https://esolangs.org/w/index.php?diff=64341&oldid=64212 * Salpynx * (-934) remove non-informative content
06:34:34 <esowiki> [[Swissen Machine]] M https://esolangs.org/w/index.php?diff=64342&oldid=64340 * A * (+44) /* Specifics */
06:38:13 <esowiki> [[Talk:Swissen Machine]] M https://esolangs.org/w/index.php?diff=64343&oldid=64335 * A * (+542)
06:42:35 <esowiki> [[Talk:Swissen Machine]] M https://esolangs.org/w/index.php?diff=64344&oldid=64343 * A * (+481) /* A computer with no programs */
06:42:55 <esowiki> [[Talk:Swissen Machine]] M https://esolangs.org/w/index.php?diff=64345&oldid=64344 * A * (-36) /* Difficulties of the Swissen machine, definition 2 */
06:46:03 <esowiki> [[Swissen Machine]] M https://esolangs.org/w/index.php?diff=64346&oldid=64342 * A * (+5) /* Language Implementation */
06:46:19 <esowiki> [[Talk:Swissen Machine]] M https://esolangs.org/w/index.php?diff=64347&oldid=64345 * A * (-117)
06:46:49 <esowiki> [[Swissen Machine]] M https://esolangs.org/w/index.php?diff=64348&oldid=64346 * A * (+5) /* Language Implementation */
06:47:17 <esowiki> [[Jussef Swissen]] M https://esolangs.org/w/index.php?diff=64349&oldid=64154 * A * (+43)
06:50:28 -!- mich181189 has quit (*.net *.split).
06:50:28 -!- lynn has quit (*.net *.split).
06:50:28 -!- dog_star has quit (*.net *.split).
06:50:28 -!- fungot has quit (*.net *.split).
06:50:31 -!- KindOne has quit (*.net *.split).
06:50:31 -!- grumble has quit (*.net *.split).
06:50:31 -!- sprocklem has quit (*.net *.split).
06:50:31 -!- Hooloovo0 has quit (*.net *.split).
06:50:32 -!- GeekDude has quit (*.net *.split).
06:50:32 -!- lifthrasiir has quit (*.net *.split).
06:50:32 -!- atslash has quit (*.net *.split).
06:50:32 -!- stux|away has quit (*.net *.split).
06:50:32 -!- FireFly has quit (*.net *.split).
06:50:32 -!- rain1 has quit (*.net *.split).
06:50:32 -!- trn has quit (*.net *.split).
06:50:32 -!- limbo_ has quit (*.net *.split).
06:50:32 -!- Lord_of_Life has quit (*.net *.split).
06:50:32 -!- rodgort has quit (*.net *.split).
06:50:32 -!- Melvar has quit (*.net *.split).
06:50:32 -!- laerling has quit (*.net *.split).
06:50:32 -!- int-e has quit (*.net *.split).
06:50:32 -!- ineiros has quit (*.net *.split).
06:50:33 -!- shachaf has quit (*.net *.split).
06:50:33 -!- tromp has quit (*.net *.split).
06:50:34 -!- rdococ has quit (*.net *.split).
06:50:35 -!- zzo38 has quit (*.net *.split).
06:50:35 -!- sebbu has quit (*.net *.split).
06:50:35 -!- hakatashi has quit (*.net *.split).
06:50:35 -!- joast has quit (*.net *.split).
06:50:35 -!- ocharles has quit (*.net *.split).
06:50:35 -!- rickbutton has quit (*.net *.split).
06:50:35 -!- mniip has quit (*.net *.split).
06:50:35 -!- ski has quit (*.net *.split).
06:50:36 -!- relrod has quit (*.net *.split).
06:50:36 -!- heroux has quit (*.net *.split).
06:50:36 -!- shikhin has quit (*.net *.split).
06:50:36 -!- jix has quit (*.net *.split).
06:50:36 -!- aloril has quit (*.net *.split).
06:50:36 -!- diginet has quit (*.net *.split).
06:50:36 -!- vertrex has quit (*.net *.split).
06:50:36 -!- izabera has quit (*.net *.split).
06:50:36 -!- zhiayang has quit (*.net *.split).
06:50:36 -!- myname has quit (*.net *.split).
06:50:36 -!- kmc has quit (*.net *.split).
06:50:36 -!- haavard has quit (*.net *.split).
06:50:36 -!- quintopia has quit (*.net *.split).
06:50:36 -!- economicsbat has quit (*.net *.split).
06:50:36 -!- Taneb has quit (*.net *.split).
06:50:36 -!- dingwat has quit (*.net *.split).
06:50:36 -!- zemhill________ has quit (*.net *.split).
06:50:37 -!- ivzem[m] has quit (*.net *.split).
06:50:38 -!- Deewiant has quit (*.net *.split).
06:50:38 -!- lambdabot has quit (*.net *.split).
06:50:38 -!- nfd has quit (*.net *.split).
06:50:38 -!- aji has quit (*.net *.split).
06:50:38 -!- APic has quit (*.net *.split).
06:50:38 -!- fizzie has quit (*.net *.split).
06:50:39 -!- pikhq has quit (*.net *.split).
06:50:40 -!- xylochoron[m] has quit (*.net *.split).
06:50:40 -!- ^[ has quit (*.net *.split).
06:50:40 -!- ProofTechnique has quit (*.net *.split).
06:50:40 -!- moony has quit (*.net *.split).
06:50:40 -!- j4cbo has quit (*.net *.split).
06:50:40 -!- glowcoil has quit (*.net *.split).
06:50:40 -!- sparr has quit (*.net *.split).
06:50:40 -!- Lymia has quit (*.net *.split).
06:50:40 -!- wmww has quit (*.net *.split).
06:50:40 -!- tswett[m] has quit (*.net *.split).
06:50:41 -!- Camto[m] has quit (*.net *.split).
06:50:41 -!- MDude has quit (*.net *.split).
06:50:41 -!- clog has quit (*.net *.split).
06:50:41 -!- shotover has quit (*.net *.split).
06:50:41 -!- Cale has quit (*.net *.split).
06:50:41 -!- j-bot has quit (*.net *.split).
06:50:41 -!- HackEso has quit (*.net *.split).
06:50:41 -!- erdic has quit (*.net *.split).
06:50:42 -!- paul2520 has quit (*.net *.split).
07:00:08 <esowiki> [[Esolang:General disclaimer]] M https://esolangs.org/w/index.php?diff=64350&oldid=64245 * Salpynx * (-123) page already has one not-funny cancer reference.
07:00:44 <esowiki> [[Jussef Swissen]] M https://esolangs.org/w/index.php?diff=64351&oldid=64349 * A * (-3) "that" refers to non-humans, so Jussef Swissen is not a human being.
07:01:08 <esowiki> [[Jussef Swissen]] M https://esolangs.org/w/index.php?diff=64352&oldid=64351 * A * (+0)
07:02:19 <esowiki> [[Jussef Swissen]] M https://esolangs.org/w/index.php?diff=64353&oldid=64352 * A * (+0)
07:06:15 <esowiki> [[Jussef Swissen]] M https://esolangs.org/w/index.php?diff=64354&oldid=64353 * A * (+208)
07:06:36 <esowiki> [[Jussef Swissen]] M https://esolangs.org/w/index.php?diff=64355&oldid=64354 * A * (+1)
07:08:12 <esowiki> [[Jussef Swissen]] M https://esolangs.org/w/index.php?diff=64356&oldid=64355 * A * (+231)
07:11:04 <esowiki> [[Jussef Swissen]] M https://esolangs.org/w/index.php?diff=64357&oldid=64356 * A * (-18)
07:16:57 -!- KindOne has joined.
07:16:57 -!- MDude has joined.
07:16:57 -!- zhiayang has joined.
07:16:57 -!- sprocklem has joined.
07:16:57 -!- atslash has joined.
07:16:57 -!- grumble has joined.
07:16:57 -!- clog has joined.
07:16:57 -!- tromp has joined.
07:16:57 -!- myname has joined.
07:16:57 -!- rodgort has joined.
07:16:57 -!- zzo38 has joined.
07:16:57 -!- lambdabot has joined.
07:16:57 -!- shotover has joined.
07:16:57 -!- stux|away has joined.
07:16:57 -!- nfd has joined.
07:16:57 -!- Melvar has joined.
07:16:57 -!- laerling has joined.
07:16:57 -!- dingwat has joined.
07:16:57 -!- sparr has joined.
07:16:57 -!- FireFly has joined.
07:16:57 -!- fungot has joined.
07:16:57 -!- dog_star has joined.
07:16:57 -!- lynn has joined.
07:16:57 -!- mich181189 has joined.
07:16:57 -!- zemhill________ has joined.
07:16:57 -!- Cale has joined.
07:16:57 -!- j-bot has joined.
07:16:57 -!- Lymia has joined.
07:16:57 -!- sebbu has joined.
07:16:57 -!- ivzem[m] has joined.
07:16:57 -!- wmww has joined.
07:16:57 -!- xylochoron[m] has joined.
07:16:57 -!- tswett[m] has joined.
07:16:57 -!- pikhq has joined.
07:16:57 -!- Camto[m] has joined.
07:16:57 -!- mniip has joined.
07:16:57 -!- ski has joined.
07:16:57 -!- aji has joined.
07:16:57 -!- int-e has joined.
07:16:57 -!- Hooloovo0 has joined.
07:16:57 -!- ineiros has joined.
07:16:57 -!- kmc has joined.
07:16:57 -!- hakatashi has joined.
07:16:57 -!- APic has joined.
07:16:57 -!- rain1 has joined.
07:16:57 -!- rdococ has joined.
07:16:57 -!- joast has joined.
07:16:57 -!- ^[ has joined.
07:16:57 -!- relrod has joined.
07:16:57 -!- trn has joined.
07:16:57 -!- haavard has joined.
07:16:57 -!- shachaf has joined.
07:16:57 -!- ProofTechnique has joined.
07:16:57 -!- heroux has joined.
07:16:57 -!- moony has joined.
07:16:57 -!- limbo_ has joined.
07:16:57 -!- shikhin has joined.
07:16:57 -!- GeekDude has joined.
07:16:57 -!- jix has joined.
07:16:57 -!- fizzie has joined.
07:16:57 -!- quintopia has joined.
07:16:57 -!- aloril has joined.
07:16:57 -!- lifthrasiir has joined.
07:16:57 -!- j4cbo has joined.
07:16:57 -!- economicsbat has joined.
07:16:57 -!- ocharles has joined.
07:16:57 -!- glowcoil has joined.
07:16:57 -!- rickbutton has joined.
07:16:57 -!- HackEso has joined.
07:16:57 -!- diginet has joined.
07:16:57 -!- erdic has joined.
07:16:57 -!- Taneb has joined.
07:16:57 -!- vertrex has joined.
07:16:57 -!- Deewiant has joined.
07:16:57 -!- izabera has joined.
07:16:57 -!- paul2520 has joined.
07:18:03 -!- Lord_of_Life has joined.
07:19:04 <esowiki> [[Jussef Swissen]] M https://esolangs.org/w/index.php?diff=64358&oldid=64357 * A * (+282)
07:19:51 <esowiki> [[Jussef Swissen]] M https://esolangs.org/w/index.php?diff=64359&oldid=64358 * A * (+53)
07:23:04 <esowiki> [[Jussef Swissen]] M https://esolangs.org/w/index.php?diff=64360&oldid=64359 * A * (+394)
07:24:04 <esowiki> [[Jussef Swissen]] M https://esolangs.org/w/index.php?diff=64361&oldid=64360 * A * (+10)
07:25:20 <esowiki> [[Jussef Swissen]] M https://esolangs.org/w/index.php?diff=64362&oldid=64361 * A * (+211)
07:28:31 <esowiki> [[Jussef Swissen]] M https://esolangs.org/w/index.php?diff=64363&oldid=64362 * A * (+490)
07:30:38 <esowiki> [[History (programming language)]] M https://esolangs.org/w/index.php?diff=64364&oldid=62497 * A * (-39)
07:31:30 <esowiki> [[History (programming language)]] M https://esolangs.org/w/index.php?diff=64365&oldid=64364 * A * (-97)
07:32:40 <esowiki> [[Swissen Machine]] https://esolangs.org/w/index.php?diff=64366&oldid=64348 * A * (+9)
07:37:36 <esowiki> [[History (programming language)]] M https://esolangs.org/w/index.php?diff=64367&oldid=64365 * A * (+136)
07:38:02 -!- Sgeo has joined.
07:45:28 <esowiki> [[History (programming language)]] M https://esolangs.org/w/index.php?diff=64368&oldid=64367 * A * (+330)
07:46:27 <esowiki> [[History (programming language)]] M https://esolangs.org/w/index.php?diff=64369&oldid=64368 * A * (-146)
07:47:29 <esowiki> [[History (programming language)]] https://esolangs.org/w/index.php?diff=64370&oldid=64369 * A * (+2)
07:48:08 <esowiki> [[History (programming language)]] M https://esolangs.org/w/index.php?diff=64371&oldid=64370 * A * (+6)
08:23:59 -!- KindOne has quit (*.net *.split).
08:24:00 -!- mich181189 has quit (*.net *.split).
08:24:00 -!- lynn has quit (*.net *.split).
08:24:00 -!- dog_star has quit (*.net *.split).
08:24:00 -!- fungot has quit (*.net *.split).
08:24:00 -!- grumble has quit (*.net *.split).
08:24:00 -!- sprocklem has quit (*.net *.split).
08:24:01 -!- Hooloovo0 has quit (*.net *.split).
08:24:01 -!- GeekDude has quit (*.net *.split).
08:24:01 -!- lifthrasiir has quit (*.net *.split).
08:24:01 -!- atslash has quit (*.net *.split).
08:24:01 -!- stux|away has quit (*.net *.split).
08:24:01 -!- FireFly has quit (*.net *.split).
08:24:02 -!- rain1 has quit (*.net *.split).
08:24:02 -!- trn has quit (*.net *.split).
08:24:02 -!- limbo_ has quit (*.net *.split).
08:24:02 -!- Lord_of_Life has quit (*.net *.split).
08:24:02 -!- rodgort has quit (*.net *.split).
08:24:02 -!- Melvar has quit (*.net *.split).
08:24:02 -!- laerling has quit (*.net *.split).
08:24:02 -!- int-e has quit (*.net *.split).
08:24:02 -!- ineiros has quit (*.net *.split).
08:24:02 -!- shachaf has quit (*.net *.split).
08:24:02 -!- tromp has quit (*.net *.split).
08:24:04 -!- rdococ has quit (*.net *.split).
08:24:04 -!- zzo38 has quit (*.net *.split).
08:24:04 -!- sebbu has quit (*.net *.split).
08:24:04 -!- hakatashi has quit (*.net *.split).
08:24:04 -!- joast has quit (*.net *.split).
08:24:04 -!- ocharles has quit (*.net *.split).
08:24:04 -!- rickbutton has quit (*.net *.split).
08:24:05 -!- mniip has quit (*.net *.split).
08:24:05 -!- ski has quit (*.net *.split).
08:24:05 -!- relrod has quit (*.net *.split).
08:24:05 -!- heroux has quit (*.net *.split).
08:24:05 -!- shikhin has quit (*.net *.split).
08:24:05 -!- jix has quit (*.net *.split).
08:24:05 -!- aloril has quit (*.net *.split).
08:24:05 -!- diginet has quit (*.net *.split).
08:24:05 -!- vertrex has quit (*.net *.split).
08:24:05 -!- izabera has quit (*.net *.split).
08:24:05 -!- zhiayang has quit (*.net *.split).
08:24:05 -!- myname has quit (*.net *.split).
08:24:05 -!- kmc has quit (*.net *.split).
08:24:06 -!- haavard has quit (*.net *.split).
08:24:06 -!- quintopia has quit (*.net *.split).
08:24:06 -!- economicsbat has quit (*.net *.split).
08:24:06 -!- Taneb has quit (*.net *.split).
08:24:06 -!- dingwat has quit (*.net *.split).
08:24:06 -!- zemhill________ has quit (*.net *.split).
08:24:06 -!- ivzem[m] has quit (*.net *.split).
08:24:07 -!- Deewiant has quit (*.net *.split).
08:24:07 -!- Sgeo has quit (*.net *.split).
08:24:08 -!- lambdabot has quit (*.net *.split).
08:24:08 -!- nfd has quit (*.net *.split).
08:24:08 -!- aji has quit (*.net *.split).
08:24:08 -!- APic has quit (*.net *.split).
08:24:08 -!- fizzie has quit (*.net *.split).
08:24:09 -!- pikhq has quit (*.net *.split).
08:24:09 -!- xylochoron[m] has quit (*.net *.split).
08:24:09 -!- ^[ has quit (*.net *.split).
08:24:09 -!- ProofTechnique has quit (*.net *.split).
08:24:09 -!- moony has quit (*.net *.split).
08:24:09 -!- j4cbo has quit (*.net *.split).
08:24:09 -!- glowcoil has quit (*.net *.split).
08:24:09 -!- sparr has quit (*.net *.split).
08:24:09 -!- Lymia has quit (*.net *.split).
08:24:10 -!- wmww has quit (*.net *.split).
08:24:10 -!- tswett[m] has quit (*.net *.split).
08:24:10 -!- Camto[m] has quit (*.net *.split).
08:24:10 -!- MDude has quit (*.net *.split).
08:24:10 -!- clog has quit (*.net *.split).
08:24:10 -!- shotover has quit (*.net *.split).
08:24:10 -!- Cale has quit (*.net *.split).
08:24:10 -!- j-bot has quit (*.net *.split).
08:24:11 -!- HackEso has quit (*.net *.split).
08:24:11 -!- erdic has quit (*.net *.split).
08:24:11 -!- paul2520 has quit (*.net *.split).
08:36:23 -!- esowiki has joined.
08:36:41 -!- Bowserinator has joined.
08:36:41 -!- sftp has joined.
08:37:08 -!- uplime^ has joined.
08:37:18 -!- Soni has joined.
08:44:01 -!- olsner has joined.
09:17:57 -!- AnotherTest has joined.
09:18:42 -!- uplime^ has changed nick to KindOne.
09:24:59 <esowiki> [[SMETANA To Infinity!]] https://esolangs.org/w/index.php?diff=64372&oldid=64130 * Ais523 non-admin * (+112) /* Computational class */ another TCness proof
09:40:17 <esowiki> [[Flippant]] M https://esolangs.org/w/index.php?diff=64373&oldid=64270 * A * (-1000)
09:51:02 <Taneb> myname: I think ais523 doesn't like logging in as admin on certain computers for security reasons
09:56:53 -!- zhiayang has left ("Closing Window").
10:07:01 <shachaf> i,i i prefer not to log in as admin on computers that i don't have admin access on, for security reasons
10:11:02 -!- Sgeo_ has joined.
10:12:32 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
10:13:42 -!- Lord_of_Life has joined.
10:14:10 -!- Sgeo has quit (Ping timeout: 246 seconds).
10:32:33 -!- sprocklem has quit (Ping timeout: 248 seconds).
10:46:31 <esowiki> [[BrainCrash]] https://esolangs.org/w/index.php?diff=64374&oldid=61466 * YamTokTpaFa * (+36)
10:46:51 <esowiki> [[Braincrash]] https://esolangs.org/w/index.php?diff=64375&oldid=61459 * YamTokTpaFa * (+38)
10:57:48 <esowiki> [[TAPASM]] https://esolangs.org/w/index.php?diff=64376&oldid=37954 * YamTokTpaFa * (+25) +CAT please...
11:29:23 -!- sprocklem has joined.
11:30:37 -!- Sgeo__ has joined.
11:33:56 -!- Sgeo_ has quit (Ping timeout: 272 seconds).
12:51:10 -!- arseniiv has joined.
12:52:23 -!- sprocklem has quit (Ping timeout: 244 seconds).
13:16:22 <esowiki> [[Gopher]] https://esolangs.org/w/index.php?diff=64377&oldid=46983 * YamTokTpaFa * (+24) +CAT, plz.... Also this is an article page, not a talk page, so this is not suitable to put your signature. Instead, you should put "This is a language designed by (your name)" in the first of this article.
13:16:53 <esowiki> [[Bauberqueue/bauberqueue.py]] https://esolangs.org/w/index.php?diff=64378&oldid=53503 * YamTokTpaFa * (+30) +CAT, plz....
13:19:32 <esowiki> [[JSON++]] https://esolangs.org/w/index.php?diff=64379&oldid=45898 * YamTokTpaFa * (+52)
13:24:34 -!- Sgeo_ has joined.
13:28:09 -!- Sgeo__ has quit (Ping timeout: 268 seconds).
13:45:24 <esowiki> [[RubE On Conveyor Belts]] M https://esolangs.org/w/index.php?diff=64380&oldid=49841 * Arcorann * (-1) /* Interpreter source code */
14:12:42 <esowiki> [[Swissen Machine]] M https://esolangs.org/w/index.php?diff=64381&oldid=64366 * Areallycoolusername * (+4) User: Areallycoolusername could be Swissen, but he could also be Barack Obama as far as you know, ;)
14:22:19 <esowiki> [[Special:Log/newusers]] create * Jussef Swissen * New user account
14:24:51 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=64382&oldid=64303 * Jussef Swissen * (+244)
14:25:42 <esowiki> [[User talk:A/asdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfa]] M https://esolangs.org/w/index.php?diff=64383&oldid=62832 * A * (+9428)
14:25:50 <esowiki> [[User:A/asdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfa]] N https://esolangs.org/w/index.php?oldid=64384 * A * (+9702) Created page with "{{lowercase}} A funny Ch
14:28:03 <esowiki> [[User:Jussef Swissen]] N https://esolangs.org/w/index.php?oldid=64385 * Jussef Swissen * (+250) Created page with "I'm the guy that made [[PERPLEX]], a over-complicated version of BASIC. I also devised the [[Swissen Machine]]. == Interests == I'm interested in Lambda functions, iota func..."
14:28:04 -!- Sgeo__ has joined.
14:29:07 <esowiki> [[Swissen Machine]] M https://esolangs.org/w/index.php?diff=64386&oldid=64381 * A * (-4) All languages can simulate exactly one of the Swissen Machine's criteria.
14:31:08 -!- Sgeo_ has quit (Ping timeout: 258 seconds).
14:31:38 <HackEso> olist 1171: shachaf oerjan Sgeo FireFly boily nortti b_jonas
14:34:23 <esowiki> [[Special:Log/move]] move * A * moved [[User:A/asdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfa]] to [[User:A/jkl;jkl;jlk;;lkjl;jkl;k;ljlkjl;jljlkjlkjk;lj;k
14:34:23 <esowiki> [[Special:Log/move]] move * A * moved [[User talk:A/asdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfa]] to [[User talk:A/jkl;jkl;jlk;;lkjl;jkl;k;ljlkjl;jljlk
14:34:31 -!- sprocklem has joined.
14:34:55 <esowiki> [[Special:Log/move]] move * A * moved [[User:A/jkl;jkl;jlk;;lkjl;jkl;k;ljlkjl;jljlkjlkjk;lj;klj;klkjljlk;jljk;lj;kljl;j;ljl;kjl;jlkjl;kjl;jl;jl;j;j;ljl;kjlkjljl;jl;j;ljl;jjljj;jljlk;jljljl;j;;jljlk;jlk;jl;kjlkjlkjkjl;jk;kjl;k;kj;jkl;kjl;jk;jk;jkl;jk;lkj;kj;jkll;jkl;jkjkl;jkl;jlk;;lkjl;jkl;k;ljlkjl;j]] to [[User:A/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
14:34:55 <esowiki> [[Special:Log/move]] move * A * moved [[User talk:A/jkl;jkl;jlk;;lkjl;jkl;k;ljlkjl;jljlkjlkjk;lj;klj;klkjljlk;jljk;lj;kljl;j;ljl;kjl;jlkjl;kjl;jl;jl;j;j;ljl;kjlkjljl;jl;j;ljl;jjljj;jljlk;jljljl;j;;jljlk;jlk;jl;kjlkjlkjkjl;jk;kjl;k;kj;jkl;kjl;jk;jk;jkl;jk;lkj;kj;jkll;jkl;jkjkl;jkl;jlk;;lkjl;jkl;k;ljlkjl;j]] to [[User talk:A/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
14:35:22 <esowiki> [[Special:Log/move]] move * A * moved [[User:A/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy]] to [[User:A/cccccccccccccccccccccccccccccccccccccccccccccc
14:35:22 <esowiki> [[Special:Log/move]] move * A * moved [[User talk:A/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy]] to [[User talk:A/cccccccccccccccccccccccccccccccccccc
14:36:32 <esowiki> [[Special:Log/move]] move * A * moved [[User:A/ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc]] to [[User:A/tttttttttttttttttttttttttttttttttttttttttttttt
14:36:32 <esowiki> [[Special:Log/move]] move * A * moved [[User talk:A/ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc]] to [[User talk:A/tttttttttttttttttttttttttttttttttttt
14:38:17 <esowiki> [[Special:Log/move]] move * A * moved [[User talk:A/jkl;jkl;jlk;;lkjl;jkl;k;ljlkjl;jljlkjlkjk;lj;klj;klkjljlk;jljk;lj;kljl;j;ljl;kjl;jlkjl;kjl;jl;jl;j;j;ljl;kjlkjljl;jl;j;ljl;jjljj;jljlk;jljljl;j;;jljlk;jlk;jl;kjlkjlkjkjl;jk;kjl;k;kj;jkl;kjl;jk;jk;jkl;jk;lkj;kj;jkll;jkl;jkjkl;jkl;jlk;;lkjl;jkl;k;ljlkjl;j]] to [[User talk:A/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
14:38:38 <esowiki> [[Special:Log/move]] move * A * moved [[User talk:A/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy]] to [[User talk:A/baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
14:38:58 <esowiki> [[Special:Log/move]] move * A * moved [[User talk:A/ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt]] to [[User talk:A/attttttttttttttttttttttttttttttttttt
14:39:22 <esowiki> [[Special:Log/move]] move * A * moved [[User talk:A/ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc]] to [[User talk:A/dccccccccccccccccccccccccccccccccccc
14:40:00 <esowiki> [[Special:Log/move]] move * A * moved [[User talk:A/ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt]] to [[User talk:A/ttttttttttttttttttttgttttttttttttttt
14:41:03 -!- Sgeo_ has joined.
14:44:44 <esowiki> [[User talk:Jussef Swissen]] N https://esolangs.org/w/index.php?oldid=64413 * A * (+551) Test the personality of Jussef Swissen
14:45:14 -!- Sgeo__ has quit (Ping timeout: 268 seconds).
14:46:04 -!- Sgeo__ has joined.
14:46:26 <esowiki> [[User talk:Jussef Swissen]] M https://esolangs.org/w/index.php?diff=64414&oldid=64413 * A * (-551) Blanked the page
14:48:06 <esowiki> [[User talk:Jussef Swissen]] https://esolangs.org/w/index.php?diff=64415&oldid=64414 * A * (+669) Sign my comment
14:50:10 -!- Sgeo_ has quit (Ping timeout: 268 seconds).
14:52:33 -!- Sgeo_ has joined.
14:56:20 -!- Sgeo__ has quit (Ping timeout: 268 seconds).
15:04:00 * int-e has no eyes for A.
15:04:58 <int-e> Oh I see. I'm still happily ignoring *those* esowiki messages.
15:06:21 <int-e> Now why would A sign as --Areallycoolusername?
15:08:21 <int-e> And, meh, more drama. I don't want to get involved.
15:10:23 <esowiki> [[User talk:Jussef Swissen]] https://esolangs.org/w/index.php?diff=64416&oldid=64415 * Int-e * (+280)
15:10:41 <int-e> But I felt somebody had to.
15:13:24 -!- Sgeo has joined.
15:15:04 <FireFly> dunno about drama, mostly eyeing for the uh, article name moves
15:15:08 -!- Sgeo__ has joined.
15:16:18 -!- Sgeo_ has quit (Ping timeout: 245 seconds).
15:16:35 <int-e> Just another temper tAntrum.
15:17:23 <esowiki> [[User talk:Jussef Swissen]] https://esolangs.org/w/index.php?diff=64417&oldid=64416 * Jussef Swissen * (+442)
15:17:53 -!- Sgeo has quit (Ping timeout: 248 seconds).
15:18:45 <esowiki> [[User talk:Jussef Swissen]] https://esolangs.org/w/index.php?diff=64418&oldid=64417 * Jussef Swissen * (-1)
15:19:00 <int-e> Okay they can fend for themselves :)
15:19:04 <esowiki> [[User talk:Jussef Swissen]] https://esolangs.org/w/index.php?diff=64419&oldid=64418 * Jussef Swissen * (+1)
15:27:21 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64420&oldid=64315 * Jussef Swissen * (+61) Inquiry regarding uncalled for test
15:27:49 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64421&oldid=64420 * Jussef Swissen * (+101) /* Talk page */
15:32:00 <esowiki> [[Talk:Kepler]] https://esolangs.org/w/index.php?diff=64422&oldid=64318 * Jussef Swissen * (+49) /* Python Interpreter */
15:32:53 <esowiki> [[Talk:Kepler]] https://esolangs.org/w/index.php?diff=64423&oldid=64422 * Areallycoolusername * (+116)
15:52:18 <int-e> So am I to conclude that Jussef Swissen and Areallycoolusername are the same person... sigh. https://esolangs.org/w/index.php?diff=64422&oldid=64318
16:05:19 -!- wob_jonas has quit (Remote host closed the connection).
16:17:04 -!- FreeFull has joined.
16:19:41 <esowiki> [[Jussef Swissen]] https://esolangs.org/w/index.php?diff=64424&oldid=64363 * Jussef Swissen * (-5)
16:23:04 -!- Sgeo_ has joined.
16:26:42 -!- Sgeo__ has quit (Ping timeout: 245 seconds).
16:31:52 <kmc> they're putting Alan Turing on the new £50 note
16:33:22 -!- atslash has quit (Quit: This computer has gone to sleep).
16:47:06 -!- Sgeo__ has joined.
16:50:17 -!- Sgeo_ has quit (Ping timeout: 258 seconds).
17:19:40 -!- Phantom_Hoover has joined.
17:34:57 -!- sprocklem has quit (Ping timeout: 248 seconds).
17:43:43 -!- arseniiv_ has joined.
17:46:09 -!- arseniiv has quit (Ping timeout: 248 seconds).
17:55:02 -!- Sgeo_ has joined.
17:58:57 -!- Sgeo__ has quit (Ping timeout: 248 seconds).
18:11:27 -!- b_jonas has joined.
18:15:24 <b_jonas> kmc: why would they do that? aren't there enough kings or queens?
18:16:46 -!- sprocklem has joined.
18:22:10 <kmc> b_jonas: they have the queen on one side and another famous person on the other
18:22:13 <kmc> scientists etc
18:44:04 <kmc> this is also the last bill to switch from paper to plastic
18:44:18 <kmc> apparently £50 bills are not used much in circulation and mainly by criminals and corrupt politicians :P
18:48:57 -!- atslash has joined.
18:54:34 <b_jonas> kmc: how do you pay eastern europeans who illegally work at building construction or renovation projects then?
18:55:02 <b_jonas> I think construction works black market is the main use for large quantity of banknotes
18:55:41 <b_jonas> ... is a think I heared. not that I, or anyone I know, participates in such activities. we're totally law-abiding taxpayers, sir.
18:56:24 <kmc> takes sense
18:56:26 <kmc> makes sense*
19:14:45 -!- Lord_of_Life_ has joined.
19:16:42 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
19:16:42 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
19:41:39 <esowiki> [[Realm]] N https://esolangs.org/w/index.php?oldid=64425 * Hakerh400 * (+6281) New language: Realm
19:42:49 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=64426&oldid=64251 * Hakerh400 * (+12) Add language "Realm" to the language list
19:43:22 <esowiki> [[User:Hakerh400]] https://esolangs.org/w/index.php?diff=64427&oldid=62372 * Hakerh400 * (+12) /* Programming languages we created */
19:45:53 <esowiki> [[Realm]] M https://esolangs.org/w/index.php?diff=64428&oldid=64425 * Hakerh400 * (+3)
19:47:35 <esowiki> [[Realm]] M https://esolangs.org/w/index.php?diff=64429&oldid=64428 * Hakerh400 * (-2) /* Details */
19:48:58 <esowiki> [[Realm]] M https://esolangs.org/w/index.php?diff=64430&oldid=64429 * Hakerh400 * (-49)
19:50:29 <esowiki> [[Realm]] M https://esolangs.org/w/index.php?diff=64431&oldid=64430 * Hakerh400 * (-4) /* Instructions */
19:56:21 <esowiki> [[Gregorovitch]] N https://esolangs.org/w/index.php?oldid=64432 * Jussef Swissen * (+2895) Created page with "'''Gregorovitch''' is a [[Stack]] based esolang made by [[User: Jussef Swissen]]. It's programs are meant to be highly condensed and readable, and are output as a one-liner in..."
20:27:50 <esowiki> [[Realm]] M https://esolangs.org/w/index.php?diff=64433&oldid=64431 * Hakerh400 * (+187) /* Cat */
21:35:46 -!- sprocklem has quit (Ping timeout: 244 seconds).
21:43:19 -!- AnotherTest has quit (Ping timeout: 246 seconds).
22:04:32 <b_jonas> I wonder if there are grandmasters of starcraft-like strategy video games who play two simultaneous matches, each against a separate ordinary mortal, as an exhibition.
22:10:04 <b_jonas> I found one video so far, for Age of Empires, which I think is slower paced and perhaps less macro intensive than starcraft, though I don't think it's a grandmaster showing off, more like some decent player experimenting
22:10:34 <b_jonas> I'm not very familiar with AoE2, so I can't really tell how well he's playing
22:11:40 <b_jonas> (you all probably know that grandmasters of chess do this, but chess has very different requirements as speed goes)
22:54:07 -!- Sgeo_ has quit (Read error: Connection reset by peer).
22:54:32 -!- Sgeo_ has joined.
23:17:44 -!- sprocklem has joined.
23:29:05 -!- Sgeo__ has joined.
23:32:32 -!- Sgeo_ has quit (Ping timeout: 245 seconds).
23:55:32 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
23:58:20 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64434&oldid=64421 * A * (+234) /* Talk page */
00:19:38 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64435&oldid=64434 * Jussef Swissen * (+58) /* Talk page */
00:20:10 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64436&oldid=64435 * Jussef Swissen * (+127) /* Talk page */
00:21:22 <esowiki> [[Gregorovitch]] https://esolangs.org/w/index.php?diff=64437&oldid=64432 * Jussef Swissen * (+8) /* Registers */
00:45:13 <Sgeo__> Is it just me or has computer history mirrored concurrency approaches? DOS with TSRs is a bit like callbacks, then to Windows 3.x with cooperative multitasking akin to coroutines, then preemptive multitasking as threading-like
01:03:40 <Sgeo__> I'm very confused why this very simple program isn't printing Hello world
01:04:41 <Sgeo__> https://gist.github.com/Sgeo/c273fd8d3d524622cad5231c37e9139f
01:04:47 <Sgeo__> It works when I comment out the _dos_keep
01:05:00 <Sgeo__> But even if I'm screwing up the _dos_keep, shouldn't it print first?
01:11:24 <kmc> Unicode Character 'BLACK SLIGHTLY SMALL CIRCLE' (U+1F784)
01:11:37 -!- Sgeo__ has quit (Read error: Connection reset by peer).
01:12:03 -!- Sgeo__ has joined.
01:12:49 -!- TellsTogo has joined.
01:15:27 -!- sprocklem has quit (Ping timeout: 245 seconds).
01:18:03 -!- Sgeo_ has joined.
01:21:37 -!- Sgeo__ has quit (Ping timeout: 248 seconds).
01:24:17 -!- arseniiv_ has quit (Ping timeout: 248 seconds).
01:45:26 -!- FreeFull has quit.
01:55:23 <esowiki> [[Gregorovitch]] https://esolangs.org/w/index.php?diff=64438&oldid=64437 * Jussef Swissen * (+312) /* Printing */
01:58:05 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64439&oldid=64436 * Jussef Swissen * (+126) /* Talk page */
01:59:39 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64440&oldid=64439 * Jussef Swissen * (+147) /* Talk page */
02:05:14 -!- TellsTogo has quit (Remote host closed the connection).
02:09:00 -!- adu has joined.
02:12:16 -!- sprocklem has joined.
02:12:38 <esowiki> [[Talk:Kepler]] https://esolangs.org/w/index.php?diff=64441&oldid=64423 * Anthonykozar * (+1556) C++ interpreter bugs and some questions about the language semantics.
02:16:59 <esowiki> [[Gregorovitch]] https://esolangs.org/w/index.php?diff=64442&oldid=64438 * Jussef Swissen * (+1254)
02:27:40 <esowiki> [[Gregorovitch]] https://esolangs.org/w/index.php?diff=64443&oldid=64442 * Jussef Swissen * (+432) Completed the page
03:12:02 <Sgeo_> :( at Twitter fight
03:15:03 -!- sprocklem has quit (Ping timeout: 245 seconds).
03:20:14 <esowiki> [[Special:Log/move]] move * Jussef Swissen * moved [[Gregorovitch]] to [[Gregorovich]]: Typo in name
03:21:25 <esowiki> [[Gregorovich]] https://esolangs.org/w/index.php?diff=64446&oldid=64444 * Jussef Swissen * (-11)
03:27:00 -!- sprocklem has joined.
03:29:59 <esowiki> [[User:Jussef Swissen]] https://esolangs.org/w/index.php?diff=64447&oldid=64385 * Jussef Swissen * (+88)
03:34:31 <esowiki> [[User:Areallycoolusername]] M https://esolangs.org/w/index.php?diff=64448&oldid=64227 * Areallycoolusername * (+13) /* Full List of languages I Made */
03:35:18 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=64449&oldid=64426 * Areallycoolusername * (+13) /* K */
03:40:56 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=64450&oldid=64449 * Jussef Swissen * (+18) /* G */
04:11:50 <esowiki> [[FireStarter]] https://esolangs.org/w/index.php?diff=64451&oldid=64001 * Ais523 * (-1759) rm copyright-violating content
04:12:20 <esowiki> [[Special:Log/delete]] revision * Ais523 * Ais523 changed visibility of 3 revisions on page [[FireStarter]]: content hidden: Copyright violation
04:12:47 -!- moei has joined.
04:14:29 -!- ais523 has joined.
04:23:54 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64452&oldid=64440 * A * (+1076) /* Talk page */
04:24:35 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64453&oldid=64452 * A * (-1) /* Talk page */
04:27:06 <esowiki> [[Special:Log/block]] block * Ais523 * blocked [[User:A]] with an expiration time of 7 days (account creation disabled): impersonation of other users, attempting to hide their identity in talkpage messages
04:27:20 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64454&oldid=64453 * A * (+428) /* Talk page */
04:31:08 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64455&oldid=64454 * Ais523 * (+864) /* Blocked */ new section
04:46:30 <esowiki> [[Special:Log/abusefilter]] modify * Ais523 * modified [[Special:AbuseFilter/13]] ([[Special:AbuseFilter/history/13/diff/prev/63]])
04:48:15 <esowiki> [[Special:Log/delete]] delete * Ais523 * deleted "[[User:A/jkl;jkl;jlk;;lkjl;jkl;k;ljlkjl;jljlkjlkjk;lj;klj;klkjljlk;jljk;lj;kljl;j;ljl;kjl;jlkjl;kjl;jl;jl;j;j;ljl;kjlkjljl;jl;j;ljl;jjljj;jljlk;jljljl;j;;jljlk;jlk;jl;kjlkjlkjkjl;jk;kjl;k;kj;jkl;kjl;jk;jk;jkl;jk;lkj;kj;jkll;jkl;jkjkl;jkl;jlk;;lkjl;jkl;k;ljlkjl;j]]": Vandalism
04:48:37 <esowiki> [[Special:Log/delete]] delete * Ais523 * deleted "[[User:A/asdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfa]]": Vandalism
04:49:16 <esowiki> [[Special:Log/delete]] delete * Ais523 * deleted "[[User:A/ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc]]": Vandalism
04:49:44 <esowiki> [[Special:Log/delete]] delete * Ais523 * deleted "[[User:A/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy]]": Vandalism: content was: "#REDIRECT User:A/cc
04:50:28 <esowiki> [[Special:Log/delete]] delete * Ais523 * deleted "[[User:A/ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt]]": Vandalism: duplicate of A's talk page; repea
04:52:12 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64456&oldid=64455 * Ais523 * (+291) /* Blocked */ another reason
04:53:14 <esowiki> [[Special:Log/delete]] delete * Ais523 * deleted "[[User talk:A/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy]]": Vandalism
04:53:32 <esowiki> [[Special:Log/delete]] delete * Ais523 * deleted "[[User talk:A/jkl;jkl;jlk;;lkjl;jkl;k;ljlkjl;jljlkjlkjk;lj;klj;klkjljlk;jljk;lj;kljl;j;ljl;kjl;jlkjl;kjl;jl;jl;j;j;ljl;kjlkjljl;jl;j;ljl;jjljj;jljlk;jljljl;j;;jljlk;jlk;jl;kjlkjlkjkjl;jk;kjl;k;kj;jkl;kjl;jk;jk;jkl;jk;lkj;kj;jkll;jkl;jkjkl;jkl;jlk;;lkjl;jkl;k;ljlkjl;j]]": Vandalism
04:54:07 <esowiki> [[Special:Log/delete]] delete * Ais523 * deleted "[[User talk:A/atttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt]]": Vandalism: duplicate of A's talk page;
04:54:32 <esowiki> [[Special:Log/delete]] delete * Ais523 * deleted "[[User talk:A/ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc]]": Vandalism
04:54:42 <esowiki> [[Special:Log/delete]] delete * Ais523 * deleted "[[User talk:A/dcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc]]": Vandalism
04:54:59 <esowiki> [[Special:Log/delete]] delete * Ais523 * deleted "[[User talk:A/ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt]]": Vandalism
04:55:15 <esowiki> [[Special:Log/delete]] delete * Ais523 * deleted "[[User talk:A/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]]": Vandalism
04:55:49 <esowiki> [[Special:Log/delete]] delete * Ais523 * deleted "[[User talk:A/ttttttttttttttttttttgtttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt]]": Vandalism
04:56:11 <esowiki> [[Special:Log/delete]] delete * Ais523 * deleted "[[User talk:A/baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa]]": Vandalism
04:56:42 <esowiki> [[Special:Log/delete]] delete * Ais523 * deleted "[[User talk:A/asdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfasdfadsfasdfasdfasdfasdfasdfa]]": Vandalism
04:59:18 <esowiki> [[Special:Log/delete]] revision * Ais523 * Ais523 changed visibility of a revision on page [[User talk:A]]: edit summary hidden: Inappropriate comment or personal information: this edit summary was possibly an intentional attempt to antagonise someone; redacting in case it is
05:00:19 <ais523> ugh, it's like cleaning up after spambots, but at least the spambots have some sort of economic reason for doing what they do
05:00:43 <ais523> human-generated vandalism is just pointless
05:01:18 <shachaf> ais523: Could you also delete the other post that A named me in?
05:01:51 <shachaf> I really don't like the thing where they send me IRC messages through wiki edits, which they've already been requested not to do.
05:02:07 <ais523> shachaf: see the esowiki post just before I posted
05:02:30 <ais523> given A's recent behaviour I'm not really willing to give them the doubt on this
05:05:44 <shachaf> whoa, luqui made an account to edit A's things?
05:05:49 <shachaf> I have no idea what's going on with anything.
05:09:08 <esowiki> [[Special:Log/block]] reblock * Ais523 * changed block settings for [[User:A]] with an expiration time of 04:27, 23 July 2019 (account creation disabled): impersonation of other users, attempting to hide their identity in talkpage messages; also pagemove vandalism in userspace
05:09:35 <ais523> I didn't notice the vandalism until /after/ I'd already blocked them for pretending to be somebody else on talk pages
05:18:23 <ais523> on a different topic: you know how URLs use protocols like "http:" to indicate an HTTP connection? I'm assuming that "tcp:" and "udp:" are used for raw TCP and UDP sockets, but want to know what the prefix for SSL over TCP would be
05:18:26 <ais523> "tcps:" comes to mind but I'm wondering if there's a standard
05:34:57 <kmc> CSS is fucking scow
05:35:49 <kmc> it's 2019 and all kinds of stuff like centering text vertically next to an image is impossible or requires weird hacks
05:35:54 <kmc> no "vertical-align: middle" does not work
05:36:08 <kmc> I want to go back to <table> layout just to spite them
05:36:16 <kmc> I know how to do this with <table> layout trivially
05:37:23 <shachaf> why is putting pixels on the screen an impossible task?
05:37:58 <ais523> CSS seems to be adding features that it badly needs far too slowly
05:38:24 <ais523> I like the basic concept behind CSS but some of the things it should really be able to do trivially are far too difficult
05:40:32 <ais523> fwiw, centering text vertically next to an image is hard to do with tables too because, for every relevant x coordinate on the whole page, you need to know what order those coordinates come in (ditto y coordinates)
05:40:32 -!- ais523 has quit (Remote host closed the connection).
05:40:45 -!- ais523 has joined.
05:41:11 <shachaf> CSS is just another one of those self-inflicted problems like C++ templates.
05:42:00 <ais523> now I'm curious as to what a better version of C++ templates would look like
05:42:46 <shachaf> It would probably look like writing a regular program rather than contorting yourself in ridiculous ways to do simple things.
05:43:00 <shachaf> Instead of SFINAE you would have innovative techniques like "if".
05:44:33 -!- moei has quit (Ping timeout: 248 seconds).
07:09:55 -!- MDead has joined.
07:10:54 -!- MDead_ has joined.
07:11:20 -!- MDude has quit (Ping timeout: 244 seconds).
07:13:11 -!- moei has joined.
07:14:41 -!- MDead has quit (Ping timeout: 248 seconds).
07:17:22 -!- Lord_of_Life has quit (Ping timeout: 248 seconds).
07:18:35 <ais523> I've been reading about the Language Server Protocol, it seems to have some fairly insane design decisionsn
07:18:58 <ais523> e.g. all positions within a file are given as a line number, plus a byte offset within the line, but the byte offset assumes that the line is encoded in UTF-16
07:19:07 <ais523> (it'd make much more sense to use the file's source encoding, I think?)
07:20:13 <ais523> SFINAE is interesting, it reminds me a bit of Prolog
07:20:29 -!- Lord_of_Life has joined.
07:20:34 <ais523> I don't think you can compile Prolog directly to C++ templates but maybe you can?
07:21:34 <shachaf> There's also the design decision of making it a protocol in the first place.
07:21:56 <ais523> yes, and sending a header along with each request
07:22:11 <shachaf> I guess it's from Microsoft so why not?
07:22:15 <ais523> it seems to be optimised for being used over a network
07:22:35 <ais523> like, there are some cases where there's optimisation to reduce the number of messages/packets sent
07:22:51 <shachaf> That's a silly thing to optimize for.
07:23:14 <ais523> and I'm thinking "these should both be running on the same computer, why not use a more normal form of calling from one program into another so that you don't have the network overhead and serialisation overhead?"
07:23:23 <ais523> that way you could call back and forth freely
07:23:53 <shachaf> "We choose UTF-16 encoding here since most language store strings in memory in UTF-16 not UTF-8."
07:23:58 <ais523> I guess my preferred implementation of something like LSP would be a defined ABI which let you dynamically link the language server into the editor
07:24:09 <shachaf> Yes, it's obviously much more reasonable to have language server libraries.
07:24:35 <ais523> Java uses UTF-16; most Microsoft languages probably do?
07:25:00 <ais523> Rust uses UTF-8; Perl switches between ISO-8859-1 and UTF-8 depending on which codepoints the string actually contains
07:25:18 <shachaf> I saw this talk recently where he complains about it: https://www.youtube.com/watch?v=pW-SOdj4Kkk#t=42m30s
07:26:36 <ais523> C officially uses whatever encoding is indicated by wchar_t, which is UCS-4 on Linux and UCS-2 on Windows, although it's so flexible that ASCII and UTF-8 are common in practice (and C11 added a few UTF-8-specific features like UTF-8 literals)
07:27:29 <ais523> many languages don't support character strings at all, of course (byte strings are much easier to implement)
07:27:43 <shachaf> People should ignore all these language things and just use UTF-8 for everything.
07:28:04 <ais523> …but I guess the interest here is in what encoding the language's /compiler/ uses internally, not what language compiled programs in that language use
07:28:12 <ais523> which are often the same because many languages are self-hosting, but not always
07:28:28 <shachaf> I think the interest here is what encoding the editor uses internally.
07:28:59 <shachaf> The editor is Visual Studio Code, which is written in JavaScript.
07:29:13 <shachaf> Also everything is written in JavaScript because we live in the bad future.
07:29:32 <ais523> so, e.g., C-INTERCAL uses byte-based I/O but C-INTERCAL's compiler uses a mix of UTF-8 and Latin-1 for the source files
07:29:45 <ais523> (like, not even differentiated, you can just mix them both in the same file)
07:30:46 <ais523> there's only one collision between the encodings within INTERCAL's character set, and it's a character that's ambiguous as it is, so of course the compiler does something different with that character based on which encoding it's written in :-D
07:31:24 <ais523> or hmm, I got that backwards
07:31:36 <ais523> there are no encoding collisions, but there's one character that's ambiguous and so we use the encoding to disambiguate the two meanigns
07:33:16 <ais523> anyway, it kind-of disappoints me that the LSP standard is just "let's take our existing code from VS code, document it, and try to make it a standard" without any attempt to actually /design/ a useful protocol
07:33:56 <ais523> it's also really vague in places
07:34:52 <ais523> e.g. the server can ask the client for configuration information, but there's no information on what information can be asked for and the type of the return value is not specified
07:35:07 <ais523> so how can a server and client expect to be compatible in that respect if they were written without knowledge of each other?
07:36:39 <shachaf> people are just expected to use visual studio code hth
07:37:28 <ais523> I like the idea of LSP
07:37:42 <ais523> I just dislike a huge number of the details
07:38:16 <ais523> (I was going to say "I dislike most of the details" but I'm not sure if that's accurate yet, because I haven't read them all yet and because I'm not positive I've seen one I like yet, so "most" might be an understatement)
07:39:08 <shachaf> It sounds like you dislike the idea of it being a (network) protocol rather than an ABI, and also everything about the way it specifies the protocol.
07:39:25 <shachaf> So do you mean you like the idea of a standard interface for exposing information from a compiler to an editor?
07:39:30 -!- AnotherTest has joined.
07:39:58 <ais523> shachaf: pretty much, although I was thinking a bit more generally than "compiler"
07:40:04 <ais523> e.g. I think syntax highlighters should be abstracted in the same way
07:40:37 <ais523> something I'm seriously considering right now is a simple, efficient, general programming language for syntax highlighting (sub-TC, focusing on ease of implementation and efficiency)
07:40:49 <ais523> so that languages could specify their own syntax highlighting rules that every editor could ues
07:42:48 <b_jonas> I just don't like all this integration of language knowledge into editors. I mean the idea that it's possible is fine, but in practice it just leads to the users abusing it by writing unreadable code that's impossible to understand without a compiler, full of typoes, etc.
07:43:36 <b_jonas> I can't much fault the protocol and editor for being complicated, because this is a really hard problem in general, and I can't imagine any satisfying solution to it.
07:44:53 <ais523> I guess my personal view of a perfect LSP is that you can download a pack of information about a language, and it then starts being supported by every editor, even ones that don't know about the language
07:44:57 <b_jonas> Parts of the difficulty are that (1) you have to do it incrementally, you can't afford to reparse everything after every modification of the source files, (2) even if you could, it would be a bad idea, because the moment I type a left brace, the rest of the code would change meaning a lot (yes, I know editors solve this by typing a right brace when I type a left brace, but that too makes using the
07:45:01 <ais523> and that editors don't ship their own langauge definitions any more
07:45:21 <b_jonas> and (3) the languages to be supported are really complicated too.
07:45:38 <ais523> incremental reparse/re-highlight is actually the only hard part in writing my syntax highlighting language, I think
07:45:41 <b_jonas> But sure, even apart from that, you can find definite mistakes in the implementation.
07:47:00 <ais523> it strikes me that a "sane LSP" wouldn't have to be incompatible with the current LSP; you could easily write a current-LSP server that used sane-LSP libraries as plugins
07:47:06 <b_jonas> In particular, in one version of MS visual studio, I had to disable all the parts that try to understand the code during editing (not just the syntax highlighting; I've disabled that earlier by setting all the colors to black), because there's no other way to tell the editor to not show lightbulb icons *covering* parts of the code without doing that. This is a known bug that other people on the
07:47:12 <b_jonas> internets have encountered.
07:49:11 <ais523> why did you disable the syntax highlighting, btw? is it often incorrect?
07:49:26 <b_jonas> also, ais523, you personally have aimake to compile code in complicated ways where you have to compile some of your files to generate code that you then want to compile. would you want a language-aware editor to be aware of such tricky build rules and do them dynamically? how about code that has preprocessor directives and you can build them in multiple different configurations?
07:50:20 <b_jonas> in those cases, compiling, even for as much as the editor needs, can have side effects. uncontrollable ones, not just the accidental ones from the occasional compiler bug.
07:50:47 <ais523> the ideal, for me, is for the editor to show live results for what a compile in a particular configuration would look like
07:51:15 <b_jonas> ais523: no. it's just that the colors are distracting and don't help at all, and if the code can't be parsed by a human easily then it's badly written.
07:51:47 <ais523> e.g. if I saved every open file and typed "make" or "aimake" or whatever into my shell, then that would produce a list of diagnostics, and I'd like to see the diagnostics in the editor
07:51:53 <b_jonas> that, or you're using a bad font where l and 1 look the same.
07:52:04 <ais523> well, my day job is in Java
07:52:40 <ais523> it's often nice to be able to distinguish a property from a variable, for example (both of these are written in all-lowercase in idiomatic Java code, and you normally don't write "this." every time for the property; maybe you should)
07:52:44 <b_jonas> ais523: sure, but incrementally? as opposed to just occasionally when you hit compile, and then hold on to that diagonstic list and keep it, and perhaps track where each part points into the code even if you add or delete a few lines?
07:53:06 <ais523> it's nice to immediately know that you've made a typo
07:53:34 <ais523> anyway, ideally this should be stateless, giving a permanent view of the result of a current compile at all times without any actual side effects
07:54:11 <ais523> this is hard to do efficiently, but in a well-designed language it would be possible (especially as the slowest parts of the compile tend to be things like codegen which isn't needed in this use-case)
07:54:43 <b_jonas> sure, I agree that you don't need all of the compilation
07:56:07 <b_jonas> when people compile everything with -O3 -funroll-all-loops -fmath-errno during development even if they don't want to run the code at all, make huge source files, and then complain that the compiler is slow, it's totally their fault
07:56:49 <ais523> I'd expect -fmath-errno to have more of a runtime than compile-time impact, but maybe it does both
07:57:20 <b_jonas> sure, that doesn't matter much for compilation, it's mostly unrelated to the issue
07:57:29 <ais523> (also, -fmath-errno is the default because -fno-math-errno violates the standard)
07:58:00 <b_jonas> it does in C99, but luckily there are very few programs that actually depend on it, which is why C11 dared to do the change
07:58:51 <b_jonas> also C11 finally has standard ways to access the floating point rounding mode and exception flags
08:00:09 <b_jonas> hmm, even since C99 actually
08:00:32 <b_jonas> it's just that people, and especially Microsoft, are particularly slow the embrace the C99 improvements
08:01:08 <b_jonas> I even had a wisdom entry about that, but I think I deleted it
08:01:21 <HackEso> The lrint and lrintf functions (of C99 and C++11) are actually supported by the MS compiler (starting from the 2013), only strangely undocumented.
08:05:25 <HackEso> apropos: can't open the manpath configuration file /etc/manpath.config
08:05:41 <ais523> was curious as to whether we could get whatis-like output from HackEso, apparently not
08:05:53 <HackEso> whatis: can't open the manpath configuration file /etc/manpath.config
08:06:31 <HackEso> cs \ da \ de \ es \ fi \ fr \ hu \ id \ it \ ja \ ko \ man1 \ man2 \ man3 \ man4 \ man5 \ man6 \ man7 \ man8 \ nl \ pl \ pt \ pt_BR \ ru \ sl \ sv \ tr \ vi \ zh_CN \ zh_TW
08:06:36 <b_jonas> though I must admit I'm glad we've finally made a breakthrough in the image encoding browser compatibility thing. not JPEG2000 specifically, some more recent format, and I don't really know yet how useful that format is for high quality lossy image compression, but still.
08:08:46 <b_jonas> I think hackeso's software environment is deliberately stripped down, because this is #esoteric so there's a risk that our hackeso scripts start to depend on all of the silliest things to do simple operations, which effectively forces the future maintainers of hackeso and its clones to replicate that environment
08:08:53 <ais523> `printf "MANDATORY_MANPATH /usr/share/man\nSECTION 1 8 3 2 5 4 9 6 7" > /etc/manpath.config
08:08:53 <HackEso> "MANDATORY_MANPATH /usr/share/man \ SECTION 1 8 3 2 5 4 9 6 7" > /etc/manpath.config
08:08:58 <ais523> `` printf "MANDATORY_MANPATH /usr/share/man\nSECTION 1 8 3 2 5 4 9 6 7" > /etc/manpath.config
08:08:58 <HackEso> /hackenv/bin/`: line 5: /etc/manpath.config: Permission denied
08:09:17 <b_jonas> but fizzie said that he's willing to install packages from debian's repository to hackeso on request if they aren't too big
08:09:44 <ais523> `whatis -M /usr/share/man lrint
08:09:52 <ais523> `0 `whatis -M /usr/share/man lrint
08:09:52 <HackEso> /srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: 0: not found
08:09:56 <ais523> `` whatis -M /usr/share/man lrint
08:09:57 <HackEso> whatis: can't open the manpath configuration file /etc/manpath.config
08:10:04 <shachaf> Is your 0 key next to your ` key?
08:11:19 <ais523> no, it's next to my right arrow key
08:11:34 <ais523> `` whatis -M /usr/share/man -w '*' lrint
08:11:35 <HackEso> whatis: can't open the manpath configuration file /etc/manpath.config
08:12:24 <HackEso> whatis: can't open the manpath configuration file /etc/manpath.config
08:12:46 <ais523> I give up, apparently I can't override its desire to read its configuration file
08:15:38 <b_jonas> we could add a fake bin/whatis with a built-in database if you want
08:16:19 <ais523> ugh, so LSP uses Markdown – with HTML sanitised! – as the protocol for sending formatted text
08:16:32 <ais523> Markdown is bad enough for humans to use, it's terrible as an exchange format for computers
08:17:07 <b_jonas> isn't that because the doc comments for some doc comment systems (javadoc, doxygen, and even rustdoc) use markdown format?
08:17:27 <b_jonas> the language server just doesn't want to have to reformat those comments
08:17:29 <ais523> rustdoc does indeed use Markdown
08:17:47 <ais523> but Markdown → HTML compilation is /way/ easier than the other direction
08:18:32 <ais523> Javadoc is really strict about HTML, too, to the extent that you have to write <p> in your doc comment to separate paragraphs, a double line break is treated the same as a space
08:18:41 <ais523> I don't really know C#, but I think it predates Markdown becoming popular
08:19:29 <b_jonas> I'm not sure about that. if you ampersand-escape every non-alphabetic ascii character in a html, you get a markdown that has a reasonable chance of working, and the rest of html you generally just can't expressin markdown at all
08:19:43 <b_jonas> but sure, some html-based thing would be a saner interchange format
08:19:50 <b_jonas> because it's more extensible
08:20:13 <ais523> b_jonas: no, the LSP specifies Markdown without the HTML fallbacak
08:20:35 <b_jonas> that's what I do if I have to write nested lists in stackexchange markdown (admittedly that's an even more evil version of markdown than what doxygen uses)
08:20:36 <ais523> although it says "may be sanitised", which is a bit different from specifying the actual format involved
08:20:41 <ais523> so maybe things like <i> aren't sanitised
08:21:01 <b_jonas> right, that means you can't embed arbitrary javascript and css into it
08:21:27 <ais523> perhaps a specific format should have been defined?
08:21:42 <b_jonas> otherwise language servers would start serving webpages like you find on the web these days, that don't even have content, only javascript that downloads content from the web and renders it
08:21:46 <ais523> even BBcode would be better than what they have at the moment, that's almost perfect for the task other than being BBcode
08:21:53 <ais523> (and thus poorly specified)
08:22:08 <b_jonas> specific format => sort of, though it may be worth to leave it extensible in the way that html is (or should be, in some cases), where the renderer can ignore the parts it doesn't understand
08:22:13 <ais523> b_jonas: well, my issue is more that the set of things you can do isn't specified at all
08:23:21 <ais523> …also, isn't the most important form of formatting for this syntax highlighting? like, you want to be able to say not just "italicise this" but "format this in keyword color"
08:23:32 <ais523> and Markdown doesn't have that for obvious reasons
08:23:48 <b_jonas> right, that's where you use HTML
08:23:54 <ais523> (you also don't want to just run the syntax highlighter over a string because it won't have context and you might want to interpolate non-source bits)
08:24:06 <ais523> well, HTML doesn't have a "keyword colour" option either, although it's obvious how to extend it to do so
08:24:11 <b_jonas> tags like <code> and <var> and <samp>, and classes with meaning specific to this stuff
08:27:14 <b_jonas> I have seen at least one Markdown purist on StackExchange by the way, they edited some formatting I put in a post from HTML tags to other markdown.
08:29:07 -!- Sgeo__ has joined.
08:32:22 <b_jonas> as for catching typos while I type, I definitely don't want that. neither when writing natural language, nor when writing code. it just distracts me from writing code, because that usually happens in bursts when I have figured out more code in my head than I can type and am desperate to type quickly to flush the buffer.
08:32:47 <b_jonas> I can go back and fix typos later in a pass after that, it's usually easy enough to figure out what I meant when the compiler or spell checker points out the typos.
08:33:00 -!- Sgeo_ has quit (Ping timeout: 272 seconds).
08:33:36 <b_jonas> so I disabled all the red squiggly line stuff too, and just do a pass after where I compile or spellcheck
08:33:36 <ais523> @djinn (a -> b) -> [a] -> [b]
08:34:07 <ais523> nah, I'm trying to find a nontrivial djinn use
08:34:17 <ais523> although Hoogle is fun too
08:34:22 <ais523> @djinn Monad m => (a -> b) -> m a -> m b
08:34:26 <ais523> @hoogle Monad m => (a -> b) -> m a -> m b
08:34:27 <lambdabot> Control.Monad liftM :: Monad m => (a1 -> r) -> m a1 -> m r
08:34:27 <lambdabot> Distribution.Compat.Prelude.Internal liftM :: Monad m => (a1 -> r) -> m a1 -> m r
08:34:27 <lambdabot> RIO.Prelude liftM :: Monad m => (a1 -> r) -> m a1 -> m r
08:35:05 <ais523> at work I use the Java equivalent of hoogle all the time
08:35:18 <ais523> except it takes into account what variables are available in scope
08:35:45 <ais523> so you can type ctrl-space and get pretty much the entire line of code filled out for you, based only on a bit of context that specifies what sort of value you're looking for
08:36:09 <ais523> that's probably not good for inexperienced devs because there might be more than one way to produce a value of the desired type, but if you're experienced you'll have the line of code envisaged in your mind already
08:36:13 <ais523> and just want to save on typing
08:36:46 <ais523> (Agda editors have a similar feature, but in Agda, often all you care about is producing a variable of the desired type because you're writing a proof not a program, so it works even better there, you don't have to know what line of code you're trying to write)
08:38:33 -!- Sgeo_ has joined.
08:41:43 -!- Sgeo__ has quit (Ping timeout: 245 seconds).
08:53:45 -!- b_jonas has quit (Quit: leaving).
09:25:07 -!- Sgeo_ has quit (Read error: Connection reset by peer).
09:25:34 -!- Sgeo_ has joined.
09:25:44 -!- ais523 has quit (Quit: quit).
09:26:11 -!- zzo38 has quit (Ping timeout: 258 seconds).
09:54:32 -!- wob_jonas has joined.
10:06:08 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64457&oldid=64456 * A * (-2600) /* Talk page */ Uhhh...
10:10:30 <fungot> ^<lang> <code>; ^def <command> <lang> <code>; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool
10:10:50 <HackEso> ! is a syntax used in Haskell and Prolog for solving evaluation order problems.
10:10:58 <HackEso> `! emulates the ! command of our former bot EgoBot. You write `! then the name of the language then a program, and it runs the program you give and returns the result. We used to use it to test out esoprograms in-channel all the time, but the set of included esolangs is fairly old now and so it's rarely used.
10:22:07 -!- Sgeo__ has joined.
10:24:55 -!- Sgeo_ has quit (Ping timeout: 246 seconds).
10:26:42 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64458&oldid=64457 * A * (+990) /* Blocked */ Talk to Ais523 before I got blocked again
10:29:14 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64459&oldid=64458 * A * (-990) /* Blocked */ PH (moved to Page History)
10:32:54 <myname> i like how the "sentence wothoug using 'a'" on his userpage actually has two occurences of the letter a in it
10:33:37 -!- sprocklem has quit (Ping timeout: 248 seconds).
10:49:02 -!- sprocklem has joined.
10:50:59 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64460&oldid=64459 * A * (-2) /* A sentence without using 'a' */
10:57:51 <myname> you can write here, too, you know
11:37:35 <esowiki> [[User:Jussef Swissen]] https://esolangs.org/w/index.php?diff=64461&oldid=64447 * Jussef Swissen * (+278)
11:38:49 <esowiki> [[User:Jussef Swissen]] https://esolangs.org/w/index.php?diff=64462&oldid=64461 * Jussef Swissen * (+77)
11:39:13 <esowiki> [[User:Jussef Swissen]] https://esolangs.org/w/index.php?diff=64463&oldid=64462 * Jussef Swissen * (-5)
11:40:32 <esowiki> [[User:Areallycoolusername]] https://esolangs.org/w/index.php?diff=64464&oldid=64448 * Jussef Swissen * (+114)
11:52:36 <fungot> Available: agora alice c64 ct darwin discworld enron europarl ff7 fisher fungot homestuck ic irc* iwcs jargon lovecraft nethack oots pa qwantz sms speeches ss wp ukparl youtube
11:55:05 -!- AnotherTest has quit (Ping timeout: 252 seconds).
12:02:07 <HackEso> /srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: : not found
12:02:28 <HackEso> ¡Bienvenido al centro internacional para el diseño y despliegue de lenguajes de programación esotéricos! Por desgracia, la mayoría de nosotros no hablamos español. Para obtener más información, echa un vistazo a nuestro wiki: <https://esolangs.org/>. (Para el otro tipo de esoterismo, prueba #esoteric en EFnet o DALnet.)
12:02:35 <HackEso> #!/usr/bin/perl -w \ if (defined($_=shift)) { s/ *$//; s/ +/ @ /g; exec "bin/@", $_ . " ? welcome.es"; } else { exec "bin/?", "welcome.es"; }
12:04:09 <HackEso> #!/usr/bin/perl -w \ if (defined($_=shift)) { s/ *$//; s/ +/ @ /g; exec "bin/@", $_ . " ? welcome"; } else { exec "bin/?", "welcome"; }
12:07:24 <HackEso> `[hd]o[aw][gt] [<filename>] is a set of commands for querying HackEgo hg logs. `hoag is the basic version. d adds revision numbers and dates, w looks only in wisdom, and t lists oldest first.
12:08:24 <HackEso> dontaskdonttelllist? ¯\(°_o)/¯
12:08:30 <HackEso> dontaskdonttelllist: quintopia myname int-e
12:10:24 <HackEso> `edit <file> gives you a url, then in your browser: (1) Press Sync (unless making a new file) (2) Make your changes (3) Press Save (4) Paste the command line at the top into the channel.
12:11:29 <HackEso> elcome o he nternational ub or soteric rogramming anguage esign nd eployment! or ore nformation, heck ut ur iki: <ttps://solangs.rg/>. (or he ther ind f soterica, ry #soteric n Fnet r ALnet.)
12:11:44 <HackEso> (.tenLAD ro tenFE no ciretose# yrt ,aciretose fo dnik rehto eht roF) .</gro.sgnalose//:sptth> :ikiw ruo tuo kcehc ,noitamrofni erom roF !tnemyolped dna ngised egaugnal gnimmargorp ciretose rof buh lanoitanretni eht ot emocleW
12:12:08 <esowiki> [[Talk:Swissen Machine]] https://esolangs.org/w/index.php?diff=64465&oldid=64347 * Jussef Swissen * (+341)
12:12:13 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64466&oldid=64460 * A * (-56)
12:12:39 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64467&oldid=64466 * A * (-235) /* Talk page */
12:12:55 <wob_jonas> I should have used private messages
12:14:17 <esowiki> [[Talk:Swissen Machine]] https://esolangs.org/w/index.php?diff=64468&oldid=64465 * Jussef Swissen * (-1)
12:14:44 <esowiki> [[Talk:Swissen Machine]] https://esolangs.org/w/index.php?diff=64469&oldid=64468 * Jussef Swissen * (+1)
12:15:27 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64470&oldid=64467 * A * (+421) /* Talk page */
12:17:11 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64471&oldid=64470 * A * (+428) /* Talk page */
12:19:36 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64472&oldid=64471 * A * (+1155)
12:21:37 <esowiki> [[User talk:Ais523]] https://esolangs.org/w/index.php?diff=64473&oldid=62957 * Areallycoolusername * (+217) Question about unusmall block circumstances.
12:25:09 <wob_jonas> `perl -e open$I,"<",$c="bin/hi"; local $/; $s=<$I>; $s=~s/`words`/\$ENV{IRC_NICK}/ or die; if (0) { open $O,">",$c or die; print $O $s or die; } print $s;
12:25:10 <HackEso> #!/usr/bin/perl \ $_ = (join " ", @ARGV) || $ENV{IRC_NICK}; s/^\s+|\s+$//g; print "Hi $_. "; if (/[aeiouyAEIOUY0134]/) { s/^[^aeiouyAEIOUY0134]*/H/; } else { s/^./H/; } print "$_.";
12:25:28 <wob_jonas> `perl -e open$I,"<",$c="bin/hi"; local $/; $s=<$I>; $s=~s/`words`/\$ENV{IRC_NICK}/ or die; if (1) { open $O,">",$c or die; print $O $s or die; } print $s;
12:25:30 <HackEso> #!/usr/bin/perl \ $_ = (join " ", @ARGV) || $ENV{IRC_NICK}; s/^\s+|\s+$//g; print "Hi $_. "; if (/[aeiouyAEIOUY0134]/) { s/^[^aeiouyAEIOUY0134]*/H/; } else { s/^./H/; } print "$_.";
12:28:40 -!- arseniiv_ has joined.
12:35:41 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64474&oldid=64472 * A * (+283)
12:37:45 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64475&oldid=64474 * A * (+0) HackEso: Nice introduction to esolangs.org!
12:47:44 <HackEso> #!/bin/sh \ cd /var/irclogs/_esoteric; cat $(ls ????-??-??.txt | tail -1) | sed 's/[^>]*> //' | grep '^`' | tail -1 #Best cheating quine ever?
12:48:54 <HackEso> /hackenv/bin/quine: 2: cd: can't cd to /var/irclogs/_esoteric \ ls: cannot access '????-??-??.txt': No such file or directory
12:49:02 <wob_jonas> ``` set -e; c=bin/quine; >$c echo $'#!/bin/sh\necho $IRC_MESSAGE # Best cheating quine ever?'; chmod -v a+x "$c"
12:49:03 <HackEso> mode of 'bin/quine' retained as 0755 (rwxr-xr-x)
12:49:37 <wob_jonas> ``` quine this # including comments
12:49:37 <HackEso> ``` quine this # including comments
12:49:51 <HackEso> ``` for x in 0 1; do quine; done \ ``` for x in 0 1; do quine; done
12:52:55 -!- sprocklem has quit (Ping timeout: 268 seconds).
12:59:42 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64476&oldid=64475 * A * (-627) /* Talk page */
13:43:29 <esowiki> [[Cthulhu]] https://esolangs.org/w/index.php?diff=64477&oldid=64250 * Joshop * (+597)
13:43:41 <esowiki> [[Cthulhu]] https://esolangs.org/w/index.php?diff=64478&oldid=64477 * Joshop * (+6)
13:57:42 <wob_jonas> `fetch share/whatis https://hack.esolangs.org/get/share/whatis
13:57:44 <HackEso> 2019-07-16 13:57:43 URL:https://hack.esolangs.org/get/share/whatis [748223/748223] -> "share/whatis" [1]
14:03:51 -!- Reallycooluserna has joined.
14:24:55 -!- Reallycooluserna has quit (Ping timeout: 260 seconds).
14:38:56 -!- Reallycooluserna has joined.
14:44:10 <Reallycooluserna> Would it be possible to create a new esolang that 's in some way based off of the chaos game? https://en.m.wikipedia.org/wiki/Chaos_game
14:47:05 <Reallycooluserna> Fo example, input would be the dimensions of a given shape and a exponent to signify how many times the fractal should spread, or text with an exponent that would be printed in a fractal format as output?
14:50:01 <myname> https://medium.com/@balidani/cities-skylines-is-turing-complete-e5ccf75d1c3a is anadder really enough to be tc?
14:51:44 <myname> Reallycooluserna: i'd say if you change randomness at most pseudorandomness, that could work
14:57:07 -!- Reallycooluserna has quit (Ping timeout: 260 seconds).
14:59:46 -!- Reallycooluserna has joined.
15:13:27 -!- Reallycooluserna has quit (Ping timeout: 260 seconds).
15:16:09 <wob_jonas> `fetch bin/whatis https://hack.esolangs.org/get/bin/whatis
15:16:12 <HackEso> 2019-07-16 15:16:11 URL:https://hack.esolangs.org/get/bin/whatis [598/598] -> "bin/whatis" [1]
15:16:50 <HackEso> whatis: can't open the manpath configuration file /etc/manpath.config
15:17:09 <HackEso> mode of 'bin/whatis' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)
15:17:11 <HackEso> Traceback (most recent call last): \ File "/hackenv/bin/whatis", line 16, in <module> \ match = match or argfold == parts[1].casefold() \ TypeError: '_sre.SRE_Match' object is not subscriptable
15:18:47 <wob_jonas> `fetch bin/whatis https://hack.esolangs.org/get/bin/whatis
15:18:48 <HackEso> 2019-07-16 15:18:47 URL:https://hack.esolangs.org/get/bin/whatis [604/604] -> "bin/whatis" [1]
15:18:53 <HackEso> mode of 'bin/whatis' retained as 0755 (rwxr-xr-x)
15:18:59 <HackEso> cp(1) - copy files and directories \ cp(1p) - copy files
15:19:02 <HackEso> lrint(3) - round to nearest integer \ lrint(3p) - round to nearest integer value using current rounding direction \ lrint(3glibc) - Rounding Functions
15:19:40 <wob_jonas> ais523: I added a rudimentary whatis command. it doesn't currently allow command-line options, but that can be fixed later if you need that
15:20:02 <wob_jonas> the command gets its data from a plain text database at share/whatis
15:20:12 <wob_jonas> anyone should feel free to edit that database
15:20:52 <wob_jonas> so if you know what something is, but that list doesn't, edit it
15:22:53 -!- wob_jonas has quit (Remote host closed the connection).
16:17:37 -!- b_jonas has joined.
16:24:33 <esowiki> [[Esoteric data structure]] https://esolangs.org/w/index.php?diff=64479&oldid=61703 * Areallycoolusername * (+757) Extended the data structure page. This has a lot of potential.
16:38:37 <HackEso> string.h(0p) - string operations \ string.h(7glibch) - String Length
16:39:44 <b_jonas> `perl -pi -e 's/^([^(]+)\(7glibch\)/$1(0glibc)/' share/whatis
16:39:44 <HackEso> -i used with no filenames on the command line, reading from STDIN. \ Bareword found where operator expected at -e line 1, near "'s/^([^(]+)\(7glibch\)/$1(0glibc)/' share" \ (Missing operator before share?) \ syntax error at -e line 1, near "'s/^([^(]+)\(7glibch\)/$1(0glibc)/' share" \ Execution of -e aborted due to compilation errors.
16:40:08 <b_jonas> ```perl -pi -e 's/^([^(]+)\(7glibch\)/$1(0glibc)/' share/whatis
16:40:11 <b_jonas> ``` perl -pi -e 's/^([^(]+)\(7glibch\)/$1(0glibc)/' share/whatis
16:40:13 <HackEso> /srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: ``perl: not found
16:40:30 <HackEso> string.h(0p) - string operations \ string.h(0glibc) - String Length
16:40:35 <HackEso> time(1) - time a simple command or give resource usage \ time(1p) - time a simple command \ time(2) - get time in seconds \ time(3p) - get time \ time(7) - overview of time and timers \ time(8lambdabot) - no description \ time(3glibc) - Simple Calendar Time
16:41:35 <HackEso> sockaddr_in(7glibct) - Internet Address Formats
16:41:49 <b_jonas> ``` perl -pi -e 's/^([^(]+)\(7glibct\)/$1(7glibc)/' share/whatis
16:41:53 <HackEso> sockaddr_in(7glibc) - Internet Address Formats
16:41:58 <HackEso> ldiv_t(7glibc) - Integer Division
16:42:40 <esowiki> [[User talk:Areallycoolusername]] N https://esolangs.org/w/index.php?oldid=64480 * Ais523 * (+526) reply to question on my user talk page
16:42:52 <HackEso> stat(1) - display file or file system status \ stat(2) - get file status \ stat(3p) - get file status \ stat(7glibc) - Attribute Meanings \ stat(3glibc) - Reading Attributes
16:54:06 <b_jonas> `fetch bin/whatis https://hack.esolangs.org/get/bin/whatis
16:54:12 <HackEso> 2019-07-16 16:54:10 URL:https://hack.esolangs.org/get/bin/whatis [896/896] -> "bin/whatis" [1]
16:54:17 <HackEso> stat(1) - display file or file system status \ stat(2) - get file status \ stat(3p) - get file status \ stat(7glibc) - Attribute Meanings \ stat(3glibc) - Reading Attributes \ Traceback (most recent call last): \ File "/hackenv/bin/whatis", line 25, in <module> \ for arg, found in zip(foundv): \ ValueError: not enough values to unpack (expected 2, got 1)
16:54:19 <HackEso> Traceback (most recent call last): \ File "/hackenv/bin/whatis", line 25, in <module> \ for arg, found in zip(foundv): \ ValueError: not enough values to unpack (expected 2, got 1)
16:54:37 <HackEso> Traceback (most recent call last): \ File "/hackenv/bin/whatis", line 25, in <module> \ for arg, found in zip(foundv): \ ValueError: not enough values to unpack (expected 2, got 1)
16:54:41 <b_jonas> `fetch bin/whatis https://hack.esolangs.org/get/bin/whatis
16:54:42 <HackEso> 2019-07-16 16:54:42 URL:https://hack.esolangs.org/get/bin/whatis [904/904] -> "bin/whatis" [1]
16:54:45 <HackEso> syzzigy: nothing appropriate.
16:54:47 <HackEso> stat(1) - display file or file system status \ stat(2) - get file status \ stat(3p) - get file status \ stat(7glibc) - Attribute Meanings \ stat(3glibc) - Reading Attributes
16:54:51 <HackEso> stat syzzigy: nothing appropriate.
16:54:59 <HackEso> stat(1) - display file or file system status \ stat(2) - get file status \ stat(3p) - get file status \ stat(7glibc) - Attribute Meanings \ stat(3glibc) - Reading Attributes \ syzzigy: nothing appropriate.
17:06:18 <esowiki> [[Esoteric algorithm]] https://esolangs.org/w/index.php?diff=64481&oldid=44546 * Areallycoolusername * (+1275) Extend page, due to huge potential
17:09:52 <esowiki> [[Esoteric algorithm]] M https://esolangs.org/w/index.php?diff=64482&oldid=64481 * Areallycoolusername * (-2)
17:12:13 <esowiki> [[Gregorovich]] https://esolangs.org/w/index.php?diff=64483&oldid=64446 * Areallycoolusername * (+2)
17:35:22 -!- AnotherTest has joined.
18:29:51 -!- FreeFull has joined.
18:31:31 <b_jonas> ``` set -e; c=bin/bonvenon; /bin/sed 's/ome.nb\>/ome.eo/g' bin/velkommen >$c; chmod -v a+x "$c"
18:31:32 <HackEso> mode of 'bin/bonvenon' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)
18:31:38 <fungot> b_jonas: looking at it
18:31:39 <HackEso> fungot: Bonvenon al la internacia centro por la desegno kaj ellaso de esoteraj programlingvoj! Por pli da informado, vizitu la Viki-on: <https://esolangs.org/>. (Por la alia speco de esotero, iru al #esoteric sur EFnet aŭ DALnet.)
18:37:56 <esowiki> [[Arch]] N https://esolangs.org/w/index.php?oldid=64484 * Areallycoolusername * (+3267) Created page for Arch esoteric data structure
18:38:52 <esowiki> [[Arch]] M https://esolangs.org/w/index.php?diff=64485&oldid=64484 * Areallycoolusername * (+26) Fixed some typos
18:39:27 <esowiki> [[Arch]] https://esolangs.org/w/index.php?diff=64486&oldid=64485 * Areallycoolusername * (-4)
18:40:14 <esowiki> [[Arch]] https://esolangs.org/w/index.php?diff=64487&oldid=64486 * Areallycoolusername * (+13) /* Pop */
18:40:50 <esowiki> [[Arch]] https://esolangs.org/w/index.php?diff=64488&oldid=64487 * Areallycoolusername * (+0) /* Pop */
18:41:12 <esowiki> [[Arch]] https://esolangs.org/w/index.php?diff=64489&oldid=64488 * Areallycoolusername * (-15) /* Pop */
18:41:45 <esowiki> [[Arch]] https://esolangs.org/w/index.php?diff=64490&oldid=64489 * Areallycoolusername * (+0) /* Cells & Point */
18:42:23 <esowiki> [[Esoteric data structure]] https://esolangs.org/w/index.php?diff=64491&oldid=64479 * Areallycoolusername * (+4)
18:44:50 -!- Phantom_Hoover has joined.
18:52:08 <esowiki> [[Arch]] https://esolangs.org/w/index.php?diff=64492&oldid=64490 * Areallycoolusername * (+290)
18:52:45 <esowiki> [[Arch]] https://esolangs.org/w/index.php?diff=64493&oldid=64492 * Areallycoolusername * (-1) /* Computational Properties */
19:06:52 -!- ais523 has joined.
19:07:19 <ais523> does anyone have the timestamp handy for the last time User:A was here on IRC? I wasn't online at the time so wasn't logging
19:08:11 <ais523> (I have a suspicion that "Reallycooluserna" was actually A in disguise, not Areallycoolusername, and want to check the IPs)
19:10:54 <ais523> myname: I don't like wasting strong passwords in situations where the connection could well be being monitored by someone else (because I don't own the computer hardware), so I have low-privileged accounts on a couple of wikis so that I don't need a strong password for them
19:11:06 <ais523> (note: this isn't an invitation to attempt to brute-force ais523 non-admin's password)
19:11:55 <Phantom_Hoover> 'wasting strong passwords' sounds like an admission that your strong passwords are weak, as you have only a small pool of them
19:13:17 <ais523> no, I can generate an almost unlimited number of them, but can only /remember/ a fairly small number of them
19:16:04 -!- Lord_of_Life_ has joined.
19:18:48 -!- Lord_of_Life has quit (Ping timeout: 244 seconds).
19:18:51 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
19:27:00 <ais523> huh, seems like Reallycooluserna genuinely was someone other than A, at least based on the hostname used to connect to IRC (different continents, different clients), so it was probably the real ARCUN
19:28:41 <b_jonas> ais523: I am someone other than wob_jonas, at least based on the hostname used to connect to IRC (I am connecting from home, wob_jonas is connecting from work)
19:29:06 <ais523> b_jonas: that's the significance of "different continents"
19:30:01 <b_jonas> ais523: I have added a rudimentary whatis command to hackeso. it just looks in a plain text list of entries in share/whatis . takes no switches for now.
19:30:11 <HackEso> cp(1) - copy files and directories \ cp(1p) - copy files
19:30:26 <b_jonas> feel free to edit that list.
19:30:27 <ais523> I guess it's only mildly useful without man, but still good for discussing things that have manual sections on IRC
19:30:59 * ais523 wonders what the most eso thing that has a manual entry on a stock Debian install is
19:31:10 <ais523> or Ubuntu, I guess, probably gives more choice
19:32:57 <b_jonas> ais523: I added at least stub entries for most commands of hackeso, lambdabot, and fungot
19:32:57 <fungot> b_jonas: can you specify what kind of research...)
19:33:13 <HackEso> bf_txtgen(1egobot) - no description
19:33:31 <b_jonas> right, that's what stub means
19:33:48 <b_jonas> for the more commonly used commands I added something sensible
19:33:51 <HackEso> /hackenv/ibin/bf_txtgen: line 6: java: command not found
19:34:01 <b_jonas> yeah, the egobot interpreters too
19:34:11 <esowiki> [[User:Total Vacuum]] https://esolangs.org/w/index.php?diff=64494&oldid=61414 * Total Vacuum * (+107)
19:34:29 <b_jonas> but I don't know what any of those do, so I didn't describe them
19:35:14 <shachaf> ais523: They joined in May with the username A_ according to the logs (which don't have host information).
19:35:15 <b_jonas> even without description, this could give you the clue that a command like rot13 or whoami or test may behave differently on HackEso than on normal systems, because there's a HackEso-specific override
19:35:32 <shachaf> I thought it was a very A-like behavior.
19:36:19 <b_jonas> shachaf: I have used the username "a" on irc in some cases, simply because it's short and a shorter username allows more characters in my lines
19:36:42 <esowiki> [[Uf]] https://esolangs.org/w/index.php?diff=64495&oldid=62158 * Total Vacuum * (-36)
19:36:48 <b_jonas> the logs don't have host information? huh
19:36:56 <shachaf> Yes, but I'm not talking about you, I'm talking about wiki user A.
19:37:22 <ais523> b_jonas: the tunes logs do, and probably the raw esolangs logs too
19:37:22 <b_jonas> sure, I'm just saying that someone using an irc username "A_" still doesn't really prove that they're related to wiki user A
19:38:01 <ais523> the choice of username combined with behaviour made it fairly obvious
19:38:24 <b_jonas> (there is also at least one forums where I use the username "jonas" and someone else uses the username "Jonas")
19:39:26 <esowiki> [[Ef]] N https://esolangs.org/w/index.php?oldid=64496 * Total Vacuum * (+1115) Created page with "{{infobox proglang |name=ef \ esoteric forth \ |paradigms= |author=[[User:Total Vacuum|Total Vacuum]] |year=[[:Category:2019|2019]] |memsys=:Category:Stack-based|stack-based..."
19:41:05 <int-e> ais523: what about Jussef Swissen and Areallycoolusername though? I'm not sure I believe that those are different people.
19:41:14 <b_jonas> as for A vs Areallycoolusername, I'd be glad if they turned out to be the same people, because then we could just ban A forever and hope that he continues to contribute more sensibly as Areallycoolusername rather than evading the ban in a different way, but alas, I'm not convinced they're the same person
19:41:25 <b_jonas> int-e: those are definitely the same people. they say so in their user page
19:42:30 <b_jonas> only Jussef Swissen claims that they're Areallycool
19:42:37 <ais523> int-e: Jussef Swissen and ARCUN are obviously the same as each other
19:42:48 <b_jonas> Jusef Swissen has edited Areallycool's user page to claim that they're the same
19:42:52 <b_jonas> I don't see Areallycool claiming that
19:42:55 <ais523> A = Asdf probably = Iamcalledbob
19:43:09 <ais523> (the probably attaches to the = to its right)
19:43:48 <ais523> there are also behavioural differences, e.g. A has more skill in terms of computational class proofs than ARCUN does
19:44:17 <esowiki> [[Ef]] https://esolangs.org/w/index.php?diff=64497&oldid=64496 * Total Vacuum * (+125)
19:44:23 <int-e> A has way more tantrums.
19:44:51 <b_jonas> and A has created more than 150 pages in the main namespace, which seems really excessive to me
19:45:26 <b_jonas> Areallycool is moderated in contrast to that
19:47:13 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=64498&oldid=64450 * Total Vacuum * (+9)
19:47:55 <esowiki> [[User:Areallycoolusername]] https://esolangs.org/w/index.php?diff=64499&oldid=64464 * Areallycoolusername * (+60)
19:55:11 -!- callforjudgement has joined.
19:55:20 -!- ais523 has quit (Ping timeout: 268 seconds).
19:55:39 -!- callforjudgement has changed nick to ais523.
20:13:00 <b_jonas> are there hackeso builtin commands other than revert, fetch, run, help ?
20:21:30 <ais523> I can't think of any offhand, but am the wrong person to ask I think (that's why I was hoping someone else would answer)
20:23:44 <b_jonas> I guess I should check the
20:23:46 <HackEso> Sources for HackEgo can be found at https://bitbucket.org/GregorR/hackbot + https://bitbucket.org/GregorR/multibot + https://bitbucket.org/GregorR/umlbox
20:31:07 <b_jonas> but I think fizzie has changed the source compared to that somewhat
21:04:01 -!- atslash has quit (Ping timeout: 246 seconds).
21:04:10 <fizzie> b_jonas: It's very close to https://bitbucket.org/fizzie/hackbot
21:04:37 <fizzie> And https://bitbucket.org/fizzie/multibot has a few tiny patches as well.
21:05:29 <fizzie> Oh, and https://bitbucket.org/fizzie/umlbox as well.
21:05:33 <fizzie> But really nothing major.
21:06:33 <fizzie> (I don't remember how to ask Bitbucket to compare between repos, but I think there was a way. Certainly there was when submitting a pull request, but hopefully otherwise as well.)
21:06:35 <HackEso> Sources for HackEgo can be found at https://bitbucket.org/GregorR/hackbot + https://bitbucket.org/GregorR/multibot + https://bitbucket.org/GregorR/umlbox
21:07:22 <b_jonas> `slashlearn source//Sources for HackEgo can be found at https://bitbucket.org/GregorR/hackbot + https://bitbucket.org/GregorR/multibot + https://bitbucket.org/GregorR/umlbox . Sources for HackEso can be found at https://bitbucket.org/fizzie/hackbot + https://bitbucket.org/fizzie/multibot + https://bitbucket.org/fizzie/umlbox .
21:07:24 <HackEso> Relearned 'source': Sources for HackEgo can be found at https://bitbucket.org/GregorR/hackbot + https://bitbucket.org/GregorR/multibot + https://bitbucket.org/GregorR/umlbox . Sources for HackEso can be found at https://bitbucket.org/fizzie/hackbot + https://bitbucket.org/fizzie/multibot + https://bitbucket.org/fizzie/umlbox .
21:07:28 <HackEso> Sources for HackEgo can be found at https://bitbucket.org/GregorR/hackbot + https://bitbucket.org/GregorR/multibot + https://bitbucket.org/GregorR/umlbox . Sources for HackEso can be found at https://bitbucket.org/fizzie/hackbot + https://bitbucket.org/fizzie/multibot + https://bitbucket.org/fizzie/umlbox .
21:09:38 <b_jonas> hmm, I could add whatis entries for jevalbot commands too
21:12:02 -!- atslash has joined.
21:16:36 <ais523> we need a jellybot in here really
21:16:49 <ais523> if *:6 means what I think it does then the argument order's very different from what I'm used to from Jelly
21:17:02 <ais523> (which would write that as 6×`)
21:17:26 -!- atslash has quit (Ping timeout: 272 seconds).
21:17:34 <b_jonas> ais523: what encoding would the jellybot use? I guess utf-8, as the alternative would run afoul of the three forbidden irc bytes
21:17:47 <b_jonas> ais523: *: is a primitive builtin, it has nothing to do with *
21:18:04 <b_jonas> ^ you write that if you want to invoke the * builtin with the same argument twice
21:18:57 <b_jonas> ais523: how much dependencies does the jelly interpreter have? is it possible to install it to hackeso?
21:19:23 -!- arseniiv_ has changed nick to arseniiv.
21:19:23 <ais523> it's mostly just a Python program, I'm not sure how many libraries it relies on, probably not many
21:19:32 <ais523> https://github.com/DennisMitchell/jellylanguage/
21:19:35 <b_jonas> does it need python newer than
21:19:43 <b_jonas> ``` python3 --version; python2 --version
21:19:43 <HackEso> Python 2.7.13 \ Python 3.5.3
21:19:59 <ais523> probably not, it does seem to have sympy as a dependency though, that could get awkward
21:20:16 <b_jonas> because I just ran into a problem where the first version of whatis that I uploaded relied on a library addition from python 3.8, so it failed
21:20:25 <b_jonas> it's a short program and doesn't do anything fancy, so that was easy to fix
21:20:31 <b_jonas> but for something large like jelly it could be a problem
21:20:50 <b_jonas> is there a debian package for that? fizzie can install it
21:20:55 <b_jonas> if it's not installed already that is
21:21:03 <b_jonas> ``` python3 -cimport sympy
21:21:04 <HackEso> File "<string>", line 1 \ import \ ^ \ SyntaxError: invalid syntax
21:21:11 <b_jonas> ``` python3 -c'import sympy'
21:21:12 <HackEso> Traceback (most recent call last): \ File "<string>", line 1, in <module> \ ImportError: No module named 'sympy'
21:21:19 <b_jonas> ``` python3 -c'import numpy'
21:21:20 <HackEso> Traceback (most recent call last): \ File "<string>", line 1, in <module> \ ImportError: No module named 'numpy'
21:21:44 <ais523> "python3-sympy" is the name of the package, apparently; simple enough
21:21:54 <b_jonas> actually it's a library addition in python 3.6
21:22:01 <b_jonas> and hackeso has python 3.5
21:22:22 <b_jonas> ais523: well, if you think you want to install jelly, then talk to fizzie about that
21:22:33 <ais523> I think it would be an improvement but not a vital or urgent one
21:22:58 <ais523> also I'm not very familiar with Python packaging
21:24:04 <b_jonas> is there a package for jelly in debian perhaps?
21:24:20 <ais523> I seriously doubt it, it's an esolang after all
21:24:32 <ais523> and not a particularly well-known one outside the golfing community
21:24:36 <b_jonas> eh.. there are some eso utilities in debian, not necessarily esolang, but eso
21:24:53 <b_jonas> the project has contributors that are geeks with odd projects
21:25:01 <ais523> brachylog would also be nice, but it's somewhat harder to type so using it over IRC is more of a pain
21:25:21 <ais523> and it uses SWI-Prolog as the back end and I don't think HackEso has that installed
21:25:22 <HackEso> Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 7.2.3) \ Copyright (c) 1990-2015 University of Amsterdam, VU Amsterdam \ SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software, \ and you are welcome to redistribute it under certain conditions. \ Please visit http://www.swi-prolog.org for details. \ \ For help, use ?- help(Topic). or ?- apropos(Word).
21:25:22 <HackEso> Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 7.2.3) \ Copyright (c) 1990-2015 University of Amsterdam, VU Amsterdam \ SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software, \ and you are welcome to redistribute it under certain conditions. \ Please visit http://www.swi-prolog.org for details. \ \ For help, use ?- help(Topic). or ?- apropos(Word).
21:25:38 <b_jonas> burlesque would be hard to install because it depends on haskell
21:25:56 <b_jonas> I did check hackeso's prolog implementations some weeks ago, let me look up the logs
21:26:31 <ais523> `fetch https://github.com/JCumin/Brachylog/archive/master.zip
21:26:34 <HackEso> 2019-07-16 21:26:34 URL:https://codeload.github.com/JCumin/Brachylog/zip/master [61214] -> "master.zip" [1]
21:26:49 <HackEso> 1l \ 2l \ adjust \ asm \ axo \ bch \ befunge \ befunge98 \ bf \ bf16 \ bf32 \ bf8 \ bf_txtgen \ boolfuck \ c \ cintercal \ clcintercal \ cxx \ dimensifuck \ forth \ glass \ glypho \ haskell \ help \ java \ k \ kipple \ lambda \ lazyk \ linguine \ lua \ malbolge \ pbrain \ perl \ qbf \ rail \ rhotor \ sadol \ sceql \ sh \ slashes \ trigger \ udage01 \ underload \ unlambda \ whirl
21:26:53 <b_jonas> I think it has like two prolog implementations
21:27:06 <ais523> `` mv master.zip ibin/brachylog
21:27:17 <b_jonas> https://esolangs.org/logs/2019-06-23.html#lQb
21:27:22 <b_jonas> ``` swipl -qt 'T is 4^4, display(T), nl'
21:27:25 <ais523> `` (cd ibin/brachylog; unzip master.zip)
21:27:26 <HackEso> /hackenv/bin/`: line 5: unzip: command not found
21:28:30 <b_jonas> I once used gzip to uncompress a single-file zip on hackeso exactly because it doesn't have gzip
21:28:36 <b_jonas> and I tried to install 7zip once, but failed
21:28:39 <HackEso> \ This is perl 5, version 24, subversion 1 (v5.24.1) built for x86_64-linux-gnu-thread-multi \ (with 85 registered patches, see perl -V for more detail) \ \ Copyright 1987-2017, Larry Wall \ \ Perl may be copied only under the terms of either the Artistic License or the \ GNU General Public License, which may be found in the Perl 5 source kit. \ \ Complete documentation for Perl, including FAQ lists, should be found on \ this system using "man perl"
21:29:24 <b_jonas> ais523: you can repack iot to tar, fetch that, and tar x
21:29:42 <b_jonas> we have gzip, bzip2, and xz
21:31:55 <ais523> `` (cd ibin/brachylog; perl -MIO::Uncompress::Unzip=unzip -e 'unzip "master.zip" => "<*>"')
21:31:56 <HackEso> Need input fileglob for outout fileglob at -e line 1.
21:32:06 <ais523> `` (cd ibin/brachylog; perl -MIO::Uncompress::Unzip=unzip -e 'unzip "master.zip" => "master"')
21:32:24 <ais523> `` ls -l ibin/brachylog/master
21:32:25 <HackEso> -rw-r--r-- 1 1000 1000 0 Jul 16 21:32 ibin/brachylog/master
21:32:40 <ais523> `` rm ibin/brachylog/master
21:33:03 <ais523> I don't get the interface of IO::Uncompress::Unzip, a zip file is an archive but it's acting like it's a compressed single file
21:33:56 <ais523> oh, it lets you specify a specific file to unzip but not to do a batch unzip
21:35:03 <ais523> `fetch https://gist.githubusercontent.com/eqhmcow/5389877/raw/514a27c213aefb58079687e4c257b57d6ad7a39f/unzip.pl
21:35:05 <HackEso> 2019-07-16 21:35:04 URL:https://gist.githubusercontent.com/eqhmcow/5389877/raw/514a27c213aefb58079687e4c257b57d6ad7a39f/unzip.pl [2176/2176] -> "unzip.pl" [1]
21:35:11 <ais523> `mv unzip.pl bin/unzip
21:35:12 <HackEso> mv: missing destination file operand after 'unzip.pl bin/unzip' \ Try 'mv --help' for more information.
21:35:16 <ais523> `` mv unzip.pl bin/unzip
21:35:21 <ais523> `` chmod a+x bin/unzip
21:35:31 <ais523> `` (cd ibin/brachylog; unzip master.zip)
21:35:32 <HackEso> Couldn't write to ./Brachylog-master//: Is a directory at /hackenv/bin/unzip line 67.
21:35:50 <ais523> `` ls -l ibin/brachylog
21:35:51 <HackEso> total 64 \ drwxr-xr-x 2 1000 1000 4096 Jul 16 21:35 Brachylog-master \ -rw-r--r-- 1 1000 1000 61214 Jul 16 21:27 master.zip
21:36:00 <ais523> `` ls -l ibin/brachylog/Brachylog-master
21:36:04 <b_jonas> `python3 -cimport os,zipfile; os.chdir "ibin/brachylog"; zipfile.Zipfile("master.zip").extractall() # do these batteries work?
21:36:06 <HackEso> File "<string>", line 1 \ import os,zipfile; os.chdir "ibin/brachylog"; zipfile.Zipfile("master.zip").extractall() # do these batteries work? \ ^ \ SyntaxError: invalid syntax
21:36:57 <ais523> `` sed -i -e 's/unzip(shift)/unzip(@_)/' bin/unzip
21:37:11 <ais523> `` (cd ibin/brachylog; mkdir master; unzip master.zip master/)
21:37:12 <HackEso> Need a file argument at /hackenv/bin/unzip line 40.
21:37:17 <b_jonas> `python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.Zipfile("master.zip").extractall()
21:37:18 <HackEso> Traceback (most recent call last): \ File "<string>", line 1, in <module> \ AttributeError: module 'zipfile' has no attribute 'Zipfile'
21:37:25 <b_jonas> `python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
21:37:31 <ais523> `` sed -i -e 's/unzip(@_)/unzip(@ARGV)/' bin/unzip
21:37:34 <HackEso> ibin/brachylog \ ibin/brachylog/master.zip \ ibin/brachylog/Brachylog-master \ ibin/brachylog/Brachylog-master/misc \ ibin/brachylog/Brachylog-master/misc/brachylog_mini_logo.png \ ibin/brachylog/Brachylog-master/misc/brachylog_logo.svg \ ibin/brachylog/Brachylog-master/misc/brachylog_logo.png \ ibin/brachylog/Brachylog-master/src \ ibin/brachylog/Brachylog-master/src/tokenize.pl \ ibin/brachylog/Brachylog-master/src/predicates.pl \ ibin/brachylog/Brachylo
21:37:41 <ais523> `` (cd ibin/brachylog; mkdir master; unzip master.zip master/)
21:37:42 <HackEso> mkdir: cannot create directory ‘master’: File exists \ Couldn't write to master//Brachylog-master//: Is a directory at /hackenv/bin/unzip line 67.
21:37:55 <ais523> hmm, I guess your unzip works better than mine
21:37:59 <b_jonas> shouldn't the ibin directory contain only interpreter executables though?
21:38:03 <ais523> `` rm -r ibin/brachylog/master/
21:38:18 <b_jonas> and I just got it to work faster
21:38:23 <b_jonas> probably either would have worked
21:38:30 <ais523> I think ibin contains entire distributions?
21:38:39 <HackEso> ./ \ ../ \ 1l* \ 2l* \ adjust* \ asm* \ axo* \ bch* \ befunge* \ befunge98* \ bf* \ bf16@ \ bf32@ \ bf8@ \ bf_txtgen* \ boolfuck* \ brachylog/ \ c* \ cintercal* \ clcintercal* \ cxx* \ dimensifuck* \ forth* \ glass* \ glypho* \ haskell* \ help* \ java* \ k* \ kipple* \ lambda* \ lazyk* \ linguine* \ lua* \ malbolge* \ pbrain* \ perl* \ qbf* \ rail* \ rhotor* \ sadol* \ sceql* \ sh* \ slashes* \ trigger* \ udage01* \ underload* \ unlambda* \ whirl*
21:38:40 <HackEso> -rwxr-xr-x 1 1000 1000 64 Apr 7 2018 ibin/kipple
21:38:46 <b_jonas> those are executables, not directories
21:38:54 <ais523> so where are the corresponding support directories?
21:38:57 <HackEso> - \ :#,_@ \ bin \ canary \ emoticons \ esobible \ etc \ evil \ f \ factor \ good \ hw \ ibin \ interps \ izash.c \ karma \ le \ lib \ misle \ paste \ ply-3.8 \ quines \ quinor \ quotes \ share \ src \ test2 \ testfile \ tmflry \ tmp \ wisdom
21:39:09 <ais523> `` mv ibin/brachylog interps/brachylog
21:39:15 <HackEso> ./ \ ../ \ 1l/ \ 2l/ \ Makefile \ adjust/ \ axo/ \ befunge/ \ bf_txtgen/ \ bfjoust/ \ boof/ \ brachylog/ \ build.sh \ c-intercal/ \ cfunge/ \ clc-intercal/ \ dimensifuck/ \ egobch/ \ egobf/ \ fukyorbrane/ \ gcccomp/ \ gforth_quit/ \ ghc/ \ glass/ \ glypho/ \ kipple/ \ lambda/ \ lazyk/ \ linguine/ \ malbolge/ \ pbrain/ \ qbf/ \ rail/ \ rhotor/ \ sadol/ \ sceql/ \ trigger/ \ udage01/ \ underload/ \ unlambda/ \ whirl/
21:39:19 <ais523> `` ls -R interps/brachylog
21:39:20 <HackEso> interps/brachylog: \ brachylog \ Brachylog-master \ \ interps/brachylog/brachylog: \ Brachylog-master \ master.zip \ \ interps/brachylog/brachylog/Brachylog-master: \ LICENSE \ misc \ README.md \ src \ \ interps/brachylog/brachylog/Brachylog-master/misc: \ brachylog_logo.png \ brachylog_logo.svg \ brachylog_mini_logo.png \ \ interps/brachylog/brachylog/Brachylog-master/src: \ brachylog.pl \ constraint_variables.pl \ metapredicates.pl \ predicates.pl \
21:39:44 <HackEso> ./ \ ../ \ 1l* \ 2l* \ adjust* \ asm* \ axo* \ bch* \ befunge* \ befunge98* \ bf* \ bf16@ \ bf32@ \ bf8@ \ bf_txtgen* \ boolfuck* \ c* \ cintercal* \ clcintercal* \ cxx* \ dimensifuck* \ forth* \ glass* \ glypho* \ haskell* \ help* \ java* \ k* \ kipple* \ lambda* \ lazyk* \ linguine* \ lua* \ malbolge* \ pbrain* \ perl* \ qbf* \ rail* \ rhotor* \ sadol* \ sceql* \ sh* \ slashes* \ trigger* \ udage01* \ underload* \ unlambda* \ whirl*
21:39:48 <ais523> `` rmdir interps/brachylog/Brachylog-master
21:39:49 <HackEso> rmdir: failed to remove 'interps/brachylog/Brachylog-master': Directory not empty
21:40:21 <ais523> `` du interps/brachylog/
21:40:23 <HackEso> 44interps/brachylog/brachylog/Brachylog-master/misc \ 248interps/brachylog/brachylog/Brachylog-master/src \ 308interps/brachylog/brachylog/Brachylog-master \ 372interps/brachylog/brachylog \ 4interps/brachylog/Brachylog-master/misc \ 4interps/brachylog/Brachylog-master/src \ 12interps/brachylog/Brachylog-master \ 388interps/brachylog/
21:40:39 <ais523> `` rm -r interps/brachylog/Brachylog-master
21:41:06 <ais523> `` ls interps/brachylog/brachylog/Brachylog-master/src
21:41:07 <HackEso> brachylog.pl \ constraint_variables.pl \ metapredicates.pl \ predicates.pl \ symbols.pl \ tests.pl \ tokenize.pl \ transpile.pl \ utils.pl
21:41:21 <ais523> now all we need is a wrapper script
21:41:53 <b_jonas> test if it can run a hello world first
21:42:13 <b_jonas> copying the files is the easy part
21:42:15 <ais523> the intended way to run Brachylog is interactive, which is not easy to do on HackEso
21:42:23 <ais523> I'm trying to work out how to do it as a batch process
21:42:27 <ais523> at least it's an interpreted language…
21:42:55 <ais523> although, it leaves the compiled file persistently on disk, which is not good
21:43:02 <ais523> what's the non-versioned directory called? tmp?
21:43:26 <HackEso> tmp/ is a directory for files that are not worth saving in HackEgo history, but which should still outlive a single command. NOTE: It interacts funnily with HackEgo's lock and re-run commit check; files can DISAPPEAR if you don't know what you're doing. Basically, don't modify files inside and outside tmp/ in the same HackEgo command.
21:43:28 <ais523> (that is, Brachylog's compiler is written in an interpreted language, but it compiles the file)
21:43:47 <ais523> `` touch tmp/compiled_brachylog.pl
21:44:20 <b_jonas> it's used interactively and leaves the compiled file persistently on disk? does it leave some kind of workspace that contains a compiled representation of all bindings, in the style of traditional APL or smalltalk?
21:44:30 <ais523> `` ln -s ../../../../../tmp/compiled_brachylog.pl interps/brachylog/brachylog/Brachylog-master/src/compiled_brachylog.pl
21:44:40 <ais523> b_jonas: no, it's just a temporary file placed in the wrong place
21:44:57 <ais523> `` echo test > interps/brachylog/brachylog/Brachylog-master/src/compiled_brachylog.pl
21:45:07 <ais523> `` echo tmp/compiled_brachylog.pl
21:45:16 <ais523> `` cat tmp/compiled_brachylog.pl # facepalm
21:45:28 <ais523> OK, that symlink seems to be going to the correct place
21:45:45 <b_jonas> I hope it's not one of the stupid ones where you can't configure where it puts the temporary file
21:50:23 <ais523> `` echo '"Hello, world!\n"w' > tmp/input.brachylog
21:51:16 <ais523> `` (cd interps/brachylog/brachylog/Brachylog-master/src; swipl -g 'run_from_file("../../../../../tmp/input.brachylog", _, _), halt' brachylog.pl)
21:51:43 <ais523> oh right, I forgot escaping was screwed up in Brachylog
21:51:46 <ais523> `` echo '"Hello, world!\\"w' > tmp/input.brachylog
21:51:50 <ais523> `` (cd interps/brachylog/brachylog/Brachylog-master/src; swipl -g 'run_from_file("../../../../../tmp/input.brachylog", _, _), halt' brachylog.pl)
21:52:05 <ais523> `` echo '"Hello, world!"ẉ' > tmp/input.brachylog
21:52:09 <ais523> `` (cd interps/brachylog/brachylog/Brachylog-master/src; swipl -g 'run_from_file("../../../../../tmp/input.brachylog", _, _), halt' brachylog.pl)
21:52:47 <j-bot> b_jonas, pong: pleiosaur
21:53:40 <ais523> I guess the hardest part now, which might be avoidable, is hooking up arguments and return values to the program appropriately
21:53:48 <ais523> I guess you can just hardcode them in the program itself
21:54:50 <ais523> `` printf '#!/bin/sh\necho "$1" > tmp/input.brachylog\n(cd interps/brachylog/brachylog/Brachylog-master/src; swipl -g 'run_from_file("../../../../../tmp/input.brachylog", _, _), halt' brachylog.pl)' > ibin/brachylog
21:54:51 <HackEso> /hackenv/bin/`: eval: line 5: syntax error near unexpected token `(' \ /hackenv/bin/`: eval: line 5: `printf '#!/bin/sh\necho "$1" > tmp/input.brachylog\n(cd interps/brachylog/brachylog/Brachylog-master/src; swipl -g 'run_from_file("../../../../../tmp/input.brachylog", _, _), halt' brachylog.pl)' > ibin/brachylog'
21:55:06 <ais523> `` printf '#!/bin/sh\necho "$1" > tmp/input.brachylog\n(cd interps/brachylog/brachylog/Brachylog-master/src; swipl -g '\''run_from_file("../../../../../tmp/input.brachylog", _, _), halt'\'' brachylog.pl)' > ibin/brachylog
21:55:14 <ais523> `` chmod a+x ibin/brachylog
21:55:25 <ais523> `! brachylog "Hello, world!"ẉ
21:55:54 <fizzie> Oh, that reminds me, Debian 10 got released, at some point I need to upgrade the HackEso host.
21:56:10 <ais523> many Brachylog commands aren't on my keyboard though
21:57:18 <HackEso> [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71]
21:57:37 <b_jonas> does that use the jelly character set?
21:57:50 <j-bot> b_jonas: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71
21:58:51 <b_jonas> not today, but I'll definitely have to upgrade to debian 10
21:59:07 <ais523> the jelly character set can actually be typed, although many of the characters in it are really obscure
21:59:21 <ais523> (and thus you wouldn't know the appropriate key sequence without a lot of Jelly experience)
21:59:26 <b_jonas> what does "can be typed" mean?
21:59:31 -!- kmc has quit (Quit: leaving).
22:00:10 <ais523> there's a dedicated key sequence for typing it on Linux+X11 on a particular keyboard layout, I forget which one it was designed against but UK works
22:00:54 <b_jonas> `fetch tmp/jeval.whatis https://hack.esolangs.org/get/tmp/jeval.whatis
22:00:55 <HackEso> 2019-07-16 22:00:54 URL:https://hack.esolangs.org/get/tmp/jeval.whatis [4404/4404] -> "tmp/jeval.whatis" [1]
22:00:59 <ais523> which most non-Jelly programmers wouldn't know, but it's fairly easy to type once you do know it
22:01:00 -!- kmc has joined.
22:01:03 <b_jonas> ``` cat tmp/jeval.whatis >> share/whatis
22:01:18 <HackEso> pwd(1) - print name of current/working directory \ pwd(1p) - return working directory name \ PWD(3glibcv) - Working Directory \ pwd(8jevalbot) - show the name of the current persistent session
22:01:24 <HackEso> cd(1p) - change the working directory \ cd(8glibc) - Working Directory \ cd(8jevalbot) - change to a different persistent session
22:01:44 <ais523> however, many of Brachylog's characters, like the superscript letters, don't have key sequences at all so you need something like a character map or memorising the codepoint to type them
22:02:05 <ais523> that's surely the wrong number
22:02:19 <ais523> 8 is for commands that only work as root
22:02:38 <fizzie> I did check out what "apt install python3-sympy" would do, but it's a little... excessive: "-- 214 newly installed -- Need to get 1,386 MB of archives. After this operation, 2,672 MB of additional disk space will be used."
22:02:53 <b_jonas> ais523: the whatares in the glibc section are very approximate, I just imported them to make sure you get a hit for anything documented in glibc
22:03:06 <fizzie> Probably not all of those are actual dependencies, though.
22:03:08 <b_jonas> but not everything in section 8 are things you can invoke only as root
22:04:07 <b_jonas> they're administrative commands, but you can run many of them in an informational way as non-root
22:04:20 <HackEso> ping(8) - send ICMP ECHO_REQUEST to network hosts \ ping(1hackeso) - check if HackEso is reachable \ ping(8lambdabot) - check if lambdabot is reachable \ ping(8jevalbot) - check if jevalbot is accessible
22:04:31 <ais523> fizzie: gigabytes? wow
22:04:32 <b_jonas> these days you can run ping as non-root
22:04:41 <b_jonas> ok, that's a bad example, there's some historical reason there
22:04:44 -!- sprocklem has joined.
22:05:00 <ais523> perhaps it would be possible to remove the sympy dependency from Jelly, I think it only uses it for a few obscure builtins
22:05:39 <fizzie> ais523: Well, it was planning to install Tcl/Tk, TeX Live, a pile of fonts, and a bunch of X11 stuff.
22:06:04 <fizzie> I guess it adds up. Especially TeX.
22:06:23 <ais523> try with --no-install-recommends
22:07:00 <ais523> (the recommended dependencies are "the dependencies which would be needed in any normal installation, but aren't technically required to use this package"; this isn't a normal installation)
22:07:02 <b_jonas> fizzie: is there a package with a similar name that ends in -nox ?
22:07:05 <fizzie> Hm. 2 packages, 2,773 kB of archives, 17.1 MB of additional disk space. That's quite a bit more reasonable.
22:08:15 <b_jonas> but yeah, in the case of cd, it's not only in the wrong section, it's not even something that should have a glibc whatis entry. glibc only references it, it doesn't provide that shell command
22:08:27 <b_jonas> it is a cross-reference to the shell command that's for some reason in the index of the info
22:09:57 <b_jonas> ``` /bin/sed -i '/^cd(8glibc/d' share/whatis
22:10:07 <HackEso> cd(1p) - change the working directory \ cd(8jevalbot) - change to a different persistent session
22:10:10 <HackEso> load(8jevalbot) - copy a persistent session to the current session
22:10:12 <HackEso> swapon(2) - start/stop swapping to file/device \ swapon(8) - enable/disable devices and files for paging and swapping
22:10:26 <HackEso> errno(3) - number of last error \ errno(3p) - error return value \ errno(3glibcv) - Checking for Errors
22:10:31 <fizzie> `` echo $'import numpy\nimport sympy\nprint("{} {}".format(sympy.__version__, numpy.__version__))' | python3
22:10:50 <fizzie> (I did install python3-numpy as well, even though it's only "recommended".)
22:11:24 <b_jonas> numpy is nice and lets you write esoteric programs that wouldn't be as easy in plain python
22:12:09 <HackEso> bf(1hackeso) - no description \ bf(1egobot) - no description \ bf(8fungot) - evaluate brainfuck program \ bf(8lambdabot) - evaluate brainfuck snippet
22:12:36 <HackEso> Bot prefixes: fungot ^, HackEso `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia ~, idris-bot ( , jconn ) , j-bot [ .
22:12:40 <fungot> Bot prefixes: fungot ^, HackEso `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia ~, idris-bot ( , jconn ) , j-bot [ .
22:12:46 <ais523> @bf ++++++++[->++++++++<]>.
22:13:18 <ais523> I think all the bots should use section 1 for their commands
22:13:29 <b_jonas> ais523: I used 8 for builtin commands and 1 for user-defined
22:13:29 <HackEso> hoogle(8lambdabot) - search Haskell library by name or type
22:13:50 <ais523> arguably builtin commands should be in 2, although that would imply user-defined in 3
22:14:01 <b_jonas> for jevalbot it sort of makes sense because the commands are on a level above what you can do in J itself
22:14:09 <ais523> lambdabot's feel like a 2 because they compose in the same way functions do
22:14:29 <b_jonas> ais523: no, they compose like unix utilities do, with pipes that transfer a byte stream
22:14:42 <b_jonas> and so do buubot commands, only the syntax to compose them is better
22:15:57 <b_jonas> in all of those cases there can be some side effects other than the standard input and output, such as changes to the buubot factoid database or the H bindings in lambdabot or the file system
22:16:35 <b_jonas> but the primary way to compose them is through the byte stream outputs
22:16:46 <b_jonas> a single output and single input
22:17:07 <b_jonas> lambdabot and buubot ones don't take input
22:17:19 <b_jonas> so it's like when you compose shell commands with backticks I guess
22:17:46 <b_jonas> (without the strange part where the shell backticks can remove the trailing newline)
22:18:21 <b_jonas> but we can rename sections if you figure out some consistent way to name them
22:18:22 <HackEso> pl(8lambdabot) - convert expression to pointfree style
22:18:32 <ais523> was vaguely wondering if that was a shell command too
22:18:54 <b_jonas> it may be. not every shell command has a whatis
22:19:02 <HackEso> bash: line 0: type: pl: not found
22:21:11 <b_jonas> I was wrong, HackEso only seems to have one prolog implementation installed
22:21:37 <b_jonas> it doesn't have gnu prolog
22:22:14 <ais523> `! brachylog [_7,_3,_2,5,8]⊇.+0∧.w⊥
22:22:15 -!- AnotherTest has quit (Ping timeout: 264 seconds).
22:22:48 <ais523> err, I should probably have added newlines
22:22:55 <ais523> `! brachylog [_7,_3,_2,5,8]⊇.+0∧.ẉ⊥
22:23:35 <ais523> actually there is probably a neater way to write this
22:24:06 <ais523> `! brachylog [[_7,_3,_2,5,8],0]⟨⊇+⟩ẉ⊥
22:24:13 <b_jonas> what is this supposed to do?
22:24:51 <ais523> ⟨⊇+⟩ means "find a subset (⊇) whose sum (+) is", ẉ⊥ prints all solutions
22:25:01 <ais523> so it's solving the subset sum problem
22:25:06 <ais523> pretty inefficiently, fwiw
22:25:20 <ais523> but the point is that you don't need to specify an algorithm
22:25:53 -!- arseniiv has quit (Ping timeout: 245 seconds).
22:26:00 <ais523> hmm, I wonder why that hasn't returned yet, I suspect HackEso doesn't run Brachylog at all quickly
22:26:23 <ais523> (the actual subset sum problem instance is taken from Wikipedia)
22:28:40 <ais523> `! brachylog 100~{Ċṗᵐ+}w
22:29:20 <b_jonas> [ s#~{.(#~(0=[:+/(s=._7 _3 _2 5 8)&*)"1)#:}.i.2^5 NB. yeah, that's rather clumsy
22:29:24 <b_jonas> can probably be improved somewhat
22:29:34 <ais523> `! brachylog 100>ℕ~{Ċṗᵐ+}ẉ⊥
22:29:35 <HackEso> [2,2] \ [2,3] \ [2,5] \ [2,7] \ [2,11] \ [2,13] \ [2,17] \ [2,19] \ [2,23] \ [2,29] \ [2,31] \ [2,37] \ [2,41] \ [2,43] \ [2,47] \ [2,53] \ [2,59] \ [2,61] \ [2,67] \ [2,71] \ [2,73] \ [2,79] \ [2,83] \ [2,89] \ [2,97] \ [3,2] \ [3,3] \ [3,5] \ [3,7] \ [3,11] \ [3,13] \ [3,17] \ [3,19] \ [3,23] \ [3,29] \ [3,31] \ [3,37] \ [3,41] \ [3,43] \ [3,47] \ [3,53] \ [3,59] \ [3,61] \ [3,67] \ [3,71] \ [3,73] \ [3,79] \ [3,83] \ [3,89] \ [5,2] \ [5,3] \ [5,5] \
22:29:42 <b_jonas> oh right, I should take subsets and add them, rather than multiply, since I have to do that for output anyway
22:29:49 <ais523> oh, I need a labelizer
22:29:56 <ais523> `! brachylog 100>ℕ≜~{Ċṗᵐ+}ẉ⊥
22:29:57 <HackEso> [2,2] \ [2,3] \ [3,2] \ [3,3] \ [2,5] \ [5,2] \ [3,5] \ [5,3] \ [2,7] \ [7,2] \ [3,7] \ [5,5] \ [7,3] \ [5,7] \ [7,5] \ [2,11] \ [11,2] \ [3,11] \ [7,7] \ [11,3] \ [2,13] \ [13,2] \ [3,13] \ [5,11] \ [11,5] \ [13,3] \ [5,13] \ [7,11] \ [11,7] \ [13,5] \ [2,17] \ [17,2] \ [3,17] \ [7,13] \ [13,7] \ [17,3] \ [2,19] \ [19,2] \ [3,19] \ [5,17] \ [11,11] \ [17,5] \ [19,3] \ [5,19] \ [7,17] \ [11,13] \ [13,11] \ [17,7] \ [19,5] \ [2,23] \ [23,2] \ [3,23] \ [7
22:30:31 <ais523> and should probably restrict to odd primes?
22:30:56 <ais523> `! brachylog 100>ℕ≜~{Ċṗᵐ¬{∋2∧}+}ẉ⊥
22:31:16 <ais523> I guess putting the constraint there blows up performance
22:31:42 <ais523> `! brachylog 100>ℕ≜~{Ċṗᵐ+}¬{∋2∧}ẉ⊥
22:31:43 <HackEso> 0 \ 1 \ -1 \ 2 \ -2 \ 3 \ -3 \ 4 \ -4 \ 5 \ -5 \ 6 \ -6 \ 7 \ -7 \ 8 \ -8 \ 9 \ -9 \ 10 \ -10 \ 11 \ -11 \ 12 \ -12 \ 13 \ -13 \ 14 \ -14 \ 15 \ -15 \ 16 \ -16 \ 17 \ -17 \ 18 \ -18 \ 19 \ -19 \ 20 \ -20 \ 21 \ -21 \ 22 \ -22 \ 23 \ -23 \ 24 \ -24 \ 25 \ -25 \ 26 \ -26 \ 27 \ -27 \ 28 \ -28 \ 29 \ -29 \ 30 \ -30 \ 31 \ -31 \ 32 \ -32 \ 33 \ -33 \ 34 \ -34 \ 35 \ -35 \ 36 \ -36 \ 37 \ -37 \ 38 \ -38 \ 39 \ -39 \ 40 \ -40 \ 41 \ -41 \ 42 \ -42 \ 43 \ -43 \ 4
22:32:01 <ais523> `! brachylog 50>ℕ×₂≜~{Ċṗᵐ+}ẉ⊥
22:32:08 <HackEso> [2,2] \ [3,3] \ [3,5] \ [5,3] \ [3,7] \ [5,5] \ [7,3] \ [5,7] \ [7,5] \ [3,11] \ [7,7] \ [11,3] \ [3,13] \ [5,11] \ [11,5] \ [13,3] \ [5,13] \ [7,11] \ [11,7] \ [13,5] \ [3,17] \ [7,13] \ [13,7] \ [17,3] \ [3,19] \ [5,17] \ [11,11] \ [17,5] \ [19,3] \ [5,19] \ [7,17] \ [11,13] \ [13,11] \ [17,7] \ [19,5] \ [3,23] \ [7,19] \ [13,13] \ [19,7] \ [23,3] \ [5,23] \ [11,17] \ [17,11] \ [23,5] \ [7,23] \ [11,19] \ [13,17] \ [17,13] \ [19,11] \ [23,7] \ [3,29]
22:32:53 <ais523> Brachylog really changed my view on programming
22:33:00 <b_jonas> [ >{.;_7 _3 _2 5 8([:<<#~0=+/)@#~#:}.i.2^5 NB. a bit nicer
22:33:20 <b_jonas> that's inefficient too, but straightforward
22:33:43 <b_jonas> the way it outputs the first solution could probably be improved
22:34:58 <b_jonas> ais523: hmm, I have a similar problem
22:36:07 <b_jonas> ais523: find a way to write every natural number less than 81 as the sum of three triangle numbers. a solution is at http://russell2.math.bme.hu/~ambrus/sc/info1/info1-gy4.html
22:36:23 <b_jonas> you must print no more than one way to write any one number
22:36:44 <b_jonas> the exact choice of triple doesn't matter when there's more than one way
22:36:57 <b_jonas> format shouldn't matter either
22:37:08 <ais523> how is a triangular number defined? a square number plus its square root divided by 2?
22:37:15 <b_jonas> you can find 63 = 3 + 15 + 45 or 63 = 6 + 36 + 21 but not both
22:38:47 <j-bot> b_jonas: 0 0 1 3 6 10 15 21 28 36 45 55 66 78 91 105 120 136 153 171
22:38:55 <ais523> `! brachylog 81>ℕ≜~{Ṫ{A+₁×↙A/₂}ᵐ+}ẉ⊥
22:39:17 <ais523> oh, I think this outputs multiple possibilities for each number, I forgot a !
22:39:25 <HackEso> [0,0,0] \ [0,0,-1] \ [0,-1,0] \ [0,-1,-1] \ [-1,0,0] \ [-1,0,-1] \ [-1,-1,0] \ [-1,-1,-1]
22:39:31 <ais523> `! brachylog 81>ℕ≜~{Ṫ{A+₁×↙A/₂}ᵐ+!}ẉ⊥
22:40:02 <ais523> also, Brachylog thinks -1 is a triangular number, I think? presumably (-2 × -1) ÷ 2
22:40:25 <ais523> `! brachylog 81>ℕ≜~{Ṫ{ℕA+₁×↙A/₂}ᵐ+!}ẉ⊥
22:40:36 <b_jonas> no, ((-2 × -1) ÷ 2) is 1, and -1 is not a triangular number
22:40:52 <j-bot> b_jonas: 55 45 36 28 21 15 10 6 3 1 0 0 1 3 6 10 15 21 28 36 45
22:40:54 <ais523> so there msut be a bug somewhere
22:40:54 <HackEso> [0,0,0] \ [0,0,-1] \ [0,-1,0] \ [0,-1,-1] \ [-1,0,0] \ [-1,0,-1] \ [-1,-1,0] \ [-1,-1,-1]
22:41:10 <b_jonas> are you writing the triangular number itself, or its index?
22:41:35 <ais523> the triplet of numbers that sum to the original, which is why I'm confused
22:41:40 <ais523> as [0,0,-1] doesn't sum to 0
22:42:11 <ais523> `! brachylog 81>ℕ≜{~{Ṫ{ℕA+₁×↙A/₂}ᵐ+}ẉ!⊥}
22:46:04 <ais523> `! brachylog {ℕA+₁×↙A/₂}ẉ⊥
22:46:27 <ais523> hmm, maybe HackEso won't cut off the infinite output correctly
22:46:35 <HackEso> 0 \ 1 \ 3 \ 6 \ 10 \ 15 \ 21 \ 28 \ 36 \ 45 \ 55 \ 66 \ 78 \ 91 \ 105 \ 120 \ 136 \ 153 \ 171 \ 190 \ 210 \ 231 \ 253 \ 276 \ 300 \ 325 \ 351 \ 378 \ 406 \ 435 \ 465 \ 496 \ 528 \ 561 \ 595 \ 630 \ 666 \ 703 \ 741 \ 780 \ 820 \ 861 \ 903 \ 946 \ 990 \ 1035 \ 1081 \ 1128 \ 1176 \ 1225 \ 1275 \ 1326 \ 1378 \ 1431 \ 1485 \ 1540 \ 1596 \ 1653 \ 1711 \ 1770 \ 1830 \ 1891 \ 1953 \ 2016 \ 2080
22:47:03 <ais523> perhaps the program just runs so slowly it doesn't reach 2?
22:47:39 <b_jonas> maybe it runs in the wrong order so it would need to take infinite steps before it reaches 2?
22:47:58 <b_jonas> like, it tries all sums of the form [0,0,(n choose 2)] before it tries [0,1,1]?
22:48:35 <b_jonas> that's just a guess, I don't really understand the brachylog code
22:49:26 <ais523> I think there may be an infinite loop in the constraint solver, yes
22:49:33 <ais523> runs on TIO suggest it goes into an infinite loop trying to decompose 2
23:03:45 <ais523> `! brachylog 81>ℕ≜{~{Ṫ{ℕA+₁×↙A~×₂}ᵐ+}ẉ!⊥}
23:03:48 <b_jonas> [ 1{": 81{.(<@{./.~{."1)/:~(,~+/)@>,{3#<2!1+i.15
23:04:15 <HackEso> [0,0,0] \ [0,0,1] \ [0,1,1] \ [0,0,2] \ [0,1,2] \ [1,1,2] \ [0,0,3] \ [0,1,3] \ [1,1,3] \ [0,2,3] \ [0,0,4] \ [0,1,4] \ [0,3,3] \ [0,2,4] \ [1,2,4] \ [0,0,5] \ [0,1,5] \ [1,1,5] \ [0,2,5] \ [1,2,5] \ [0,4,4] \ [0,0,6] \ [0,1,6] \ [1,1,6] \ [0,2,6] \ [0,4,5] \ [1,4,5] \ [0,3,6] \ [0,0,7] \ [0,1,7] \ [0,5,5] \ [0,2,7] \ [1,2,7] \ [2,5,5] \ [0,3,7] \ [1,3,7] \ [0,0,8] \ [0,1,8] \ [0,4,7] \ [0,2,8] \ [1,2,8] \ [2,4,7] \ [0,3,8] \ [0,5,7] \ [1,5,7] \ [0,0,9]
23:04:17 <ais523> turns out my division by 2 was attempting to produce floats and confusing the whole thing, I had to replace it with an unmultiplication instead
23:04:37 <ais523> although, some of those numbers don't look very triangular
23:04:43 <j-bot> b_jonas: │0 0 0 0│1 0 0 1│2 0 1 1│3 0 0 3│4 0 1 3│5 1 1 3│6 0 0 6│7 0 1 6│8 1 1 6│9 0 3 6│10 0 0 10│11 0 1 10│12 0 6 6│13 0 3 10│14 1 3 10│15 0 0 15│16 0 1 15│17 1 1 15│18 0 3 15│19 1 3 15│20 0 10 10│21 0 0 21│22 0 1 21│23 1 1 21│24 0 3 21│25 0 10 15│26 1 10 15│27 0 6 21│28 0 0 28│29 0 1 28│30 0 15 15│31 0 3 28│32 1 3 28│33 3 1
23:05:05 <b_jonas> those are probably indexes
23:05:30 <ais523> `! brachylog 81>ℕ≜{ẉ?~{Ṫ{ℕA+₁×↙A~×₂}ᵐ+}ẉ!⊥}
23:06:07 <ais523> actually maybe I just need another labelize
23:06:10 <HackEso> 0 \ [0,0,0] \ 1 \ [0,0,1] \ 2 \ [0,1,1] \ 3 \ [0,0,2] \ 4 \ [0,1,2] \ 5 \ [1,1,2] \ 6 \ [0,0,3] \ 7 \ [0,1,3] \ 8 \ [1,1,3] \ 9 \ [0,2,3] \ 10 \ [0,0,4] \ 11 \ [0,1,4] \ 12 \ [0,3,3] \ 13 \ [0,2,4] \ 14 \ [1,2,4] \ 15 \ [0,0,5] \ 16 \ [0,1,5] \ 17 \ [1,1,5] \ 18 \ [0,2,5] \ 19 \ [1,2,5] \ 20 \ [0,4,4] \ 21 \ [0,0,6] \ 22 \ [0,1,6] \ 23 \ [1,1,6] \ 24 \ [0,2,6] \ 25 \ [0,4,5] \ 26 \ [1,4,5] \ 27 \ [0,3,6] \ 28 \ [0,0,7] \ 29 \ [0,1,7] \ 30 \ [0,5,5] \ 31 \
23:07:06 <ais523> because the thing inside my map isn't a predicate, it's a function
23:07:58 <ais523> `! brachylog 81>ℕ≜{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}ẉ!⊥}
23:08:14 -!- moei has quit (Quit: Leaving...).
23:08:24 <ais523> Brachylog is surprisingly bad at expressing arithmetic, syntactically
23:08:28 <HackEso> [0,0,0] \ [0,0,1] \ [0,1,1] \ [0,0,3] \ [0,1,3] \ [1,1,3] \ [0,0,6] \ [0,1,6] \ [1,1,6] \ [0,3,6] \ [0,0,10] \ [0,1,10] \ [0,6,6] \ [0,3,10] \ [1,3,10] \ [0,0,15] \ [0,1,15] \ [1,1,15] \ [0,3,15] \ [1,3,15] \ [0,10,10] \ [0,0,21] \ [0,1,21] \ [1,1,21] \ [0,3,21] \ [0,10,15] \ [1,10,15] \ [0,6,21] \ [0,0,28] \ [0,1,28] \ [0,15,15] \ [0,3,28] \ [1,3,28] \ [3,15,15] \ [0,6,28] \ [1,6,28] \ [0,0,36] \ [0,1,36] \ [0,10,28] \ [0,3,36] \ [1,3,36] \ [3,10,28] \
23:08:40 <ais523> `! brachylog 81>ℕ≜{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}w!⊥}
23:09:11 <HackEso> [0,0,0][0,0,1][0,1,1][0,0,3][0,1,3][1,1,3][0,0,6][0,1,6][1,1,6][0,3,6][0,0,10][0,1,10][0,6,6][0,3,10][1,3,10][0,0,15][0,1,15][1,1,15][0,3,15][1,3,15][0,10,10][0,0,21][0,1,21][1,1,21][0,3,21][0,10,15][1,10,15][0,6,21][0,0,28][0,1,28][0,15,15][0,3,28][1,3,28][3,15,15][0,6,28][1,6,28][0,0,36][0,1,36][0,10,28][0,3,36][1,3,36][3,10,28][0,6,36][0,15,28][1,15,28][0,0,45][0,1,45][1,1,45][0,3,45][0,21,28][1,21,28][0,6,45][1,6,45][10,15,28][3,6,45][0,0,55][0,1,55
23:09:11 <ais523> I like the idea behind the language a lot, I'm less of a fan of the syntax though
23:10:32 <ais523> `! brachylog 81>ℕ≜{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}{"~p "w₁}ᵐ!⊥}
23:10:39 <b_jonas> interesting, that doesn't consistently find the first or last solution in lex order or in colex order
23:10:51 <ais523> it's using a constraint solver
23:11:11 <ais523> in this case it's a finite domain solver
23:11:11 <b_jonas> I only exlucded two of those, not all four
23:11:29 <ais523> `! brachylog 81>ℕ≜{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}w!⊥}
23:12:00 <HackEso> [0,0,0][0,0,1][0,1,1][0,0,3][0,1,3][1,1,3][0,0,6][0,1,6][1,1,6][0,3,6][0,0,10][0,1,10][0,6,6][0,3,10][1,3,10][0,0,15][0,1,15][1,1,15][0,3,15][1,3,15][0,10,10][0,0,21][0,1,21][1,1,21][0,3,21][0,10,15][1,10,15][0,6,21][0,0,28][0,1,28][0,15,15][0,3,28][1,3,28][3,15,15][0,6,28][1,6,28][0,0,36][0,1,36][0,10,28][0,3,36][1,3,36][3,10,28][0,6,36][0,15,28][1,15,28][0,0,45][0,1,45][1,1,45][0,3,45][0,21,28][1,21,28][0,6,45][1,6,45][10,15,28][3,6,45][0,0,55][0,1,55
23:12:03 <ais523> there are a range of finite domain solver algorithms implemented in clpfd, I think Brachylog just uses the default
23:12:43 <ais523> `! brachylog 82{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}w!⊥}
23:12:44 <b_jonas> oh, so you're actually using a finite domain solver here, rather than just prolog nondeterminism?
23:13:19 <ais523> the ≜ is the interface between them, it runs the solver and converts all the solutions it finds to nondeterminism
23:13:33 <ais523> apart from that the two are separate
23:14:01 <ais523> which can lead to some really confusing code behaviours sometimes because some of your constraints affect one and some of your constraints affect the other
23:14:40 <b_jonas> `! brachylog 63{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}w⊥}
23:15:20 <b_jonas> yeah, compile time is a bit slow
23:15:36 <b_jonas> or perhaps the time to load the brachylog compiler to the prolog environment is slow
23:15:57 <ais523> the Brachylog compilier is lightning-fast IME, so maybe it's the load time that hurts
23:16:15 <HackEso> [3,15,45][3,45,15][6,21,36][6,36,21][15,3,45][15,45,3][21,6,36][21,21,21][21,36,6][36,6,21][36,21,6][45,3,15][45,15,3]
23:16:18 <ais523> that said, the ↙ is a bit of an awkward case in the parser so maybe that slows it down a bit
23:16:38 <b_jonas> well, that's the better case, because you can probably get swipl to precompile it
23:16:47 <b_jonas> and have the wrapper invoke the precompiled version
23:17:25 <b_jonas> using a ! to get only the first solution is nice
23:17:37 <ais523> `! brachylog "test"w⊥82{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}w!⊥}
23:18:06 <ais523> OK, so either the compile is slow, or else the load of the compiled program is slow (or HackEso is randomly being slow on that particular command)
23:18:09 <b_jonas> `! brachylog 5{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}w!⊥}
23:18:22 <ais523> because nearly all the code I wrote there will never run
23:18:38 <HackEso> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch [<output-file>] <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
23:18:45 <ais523> where's the repository?
23:19:09 <HackEso> https://hack.esolangs.org/repo/file/tip/ibin/brachylog
23:19:15 <b_jonas> `! brachylog 5{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}w!⊥}
23:19:39 <ais523> ah, https://hack.esolangs.org/repo/shortlog/tip
23:20:03 <ais523> I wanted to make sure that it wasn't making a new commit with every Brachylog program run, but it isn't
23:20:07 <b_jonas> ok, so it's not just slow because it's trying 81**4 possibilities
23:20:24 <ais523> my "test" which had a copy of the program after it that never ran was slow
23:20:28 <ais523> so the issue is in the compile or load somewhere
23:21:43 <ais523> it compiles and runs basically instantly on my own machine, so there must be some difference between HackEso and my machine that's making it compile slowly there
23:22:14 <b_jonas> maybe it tries every triplet of natural numbers, but does that very quickly?
23:22:40 <ais523> I'm talking about the program «"test"w⊥82{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}w!⊥}»
23:22:42 <ais523> that's slow on HackEso
23:22:44 <b_jonas> maybe file system access on /tmp is slow?
23:22:54 <ais523> the stuff after the first ⊥ doesn't run at all, though
23:22:56 <b_jonas> how many opens does it do?
23:23:10 <ais523> I think just one to write the tempfile and one to read the tempfile but am not sure
23:23:12 <HackEso> tmpfs on /tmp type tmpfs (rw,relatime)
23:23:32 <ais523> that's in brachylog.pl; ibin/brachylog also writes a different tempfile for brachylog.pl to read
23:23:33 <b_jonas> nope, it's not a file system with silly options like syncing to rotating platter after every write
23:24:28 <b_jonas> I've encountered a linux machine where the file system access was really slow because of mount options, so now I had to check that
23:24:36 <ais523> because it seemed much better to use the run_from_file API than to attempt to use run_from_atom, which would require Prolog-escaping the program to run and also protecting it from the shell
23:24:38 <b_jonas> the symptom was that open took a long time
23:28:05 <b_jonas> `! brachylog "h2rSh9Ttx5Qi"w
23:30:51 <ais523> were you just testing the timing?
23:31:20 <ais523> I don't think there's much need for anti-caching techniques as I didn't write any and the Brachylog compiler doesn't have any either
23:31:26 <ais523> but I guess it doesn't hurt
23:33:21 <b_jonas> not for caching, but to avoid a mistake where I get "test" as output from an earlier invocation that took too long
23:33:42 <HackEso> test failed. HackEgo-JUnit is not available.
23:33:46 <HackEso> test(1) - check file types and compare values \ test(1p) - evaluate expression \ test(1hackeso) - no description
23:34:00 <b_jonas> test(1hackeso) is evil by the way
23:34:27 <ais523> ah, I see, test is actually a builtin command
23:34:54 <ais523> `` test -f /etc/passwd; echo $?
23:35:13 <ais523> heh, I guess /etc/passwd actually /doesn't/ exist on HackEgo
23:35:24 <ais523> `` test -f ibin/brachylog; echo $?
23:36:41 <b_jonas> so you usually don't invoke /hackenv/bin/test , luckily
23:37:05 <HackEso> /bin/test: cannot open `/bin/test' (No such file or directory)
23:37:11 <ais523> `` file /hackenv/bin/test
23:37:12 <HackEso> /hackenv/bin/test: ASCII text
23:37:16 <HackEso> test is a shell builtin \ test is /hackenv/bin/test \ test is /usr/bin/test
23:37:21 -!- b_jonas has quit (Quit: leaving).
23:37:21 <ais523> `paste /hackenv/bin/test
23:37:22 <HackEso> https://hack.esolangs.org/repo/file/tip/bin/test
23:38:02 <ais523> I think a segfault is probably the wrong error for that? it stands out too much
23:38:07 -!- ais523 has quit (Quit: quit).
23:50:52 -!- Melvar has quit (Ping timeout: 245 seconds).
23:52:37 -!- Melvar has joined.
00:02:58 -!- Phantom_Hoover has quit (Ping timeout: 245 seconds).
01:33:34 -!- FreeFull has quit.
02:35:16 -!- oerjan has joined.
03:06:18 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64500&oldid=64476 * A * (+1446) /* Talk page */
03:08:42 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64501&oldid=64500 * A * (+282)
03:10:32 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64502&oldid=64501 * A * (+156) /* Computational class */
03:14:31 <esowiki> [[Varnand]] N https://esolangs.org/w/index.php?oldid=64503 * DoggyDogWhirl * (+2387)
03:14:34 <esowiki> [[Varnand/Python Implementation]] N https://esolangs.org/w/index.php?oldid=64504 * DoggyDogWhirl * (+1583)
03:19:26 <esowiki> [[User:DoggyDogWhirl]] M https://esolangs.org/w/index.php?diff=64505&oldid=64272 * DoggyDogWhirl * (+15)
03:22:12 <esowiki> [[Language list]] M https://esolangs.org/w/index.php?diff=64506&oldid=64498 * DoggyDogWhirl * (+14)
03:27:45 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=64507&oldid=64382 * FlyHamsterPaul * (+229)
03:28:05 <esowiki> [[BWTFN]] N https://esolangs.org/w/index.php?oldid=64508 * FlyHamsterPaul * (+1473) Created page with "'''BWTFN''', or '''Because Why The Fuck Not''', is an esolang inspired off of the [[CopyPasta_Language|CopyPasta]] language created in 2019. BWTFN is only used for printing te..."
03:31:58 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64509&oldid=64502 * Areallycoolusername * (+205)
03:36:49 <esowiki> [[Esoteric algorithm]] https://esolangs.org/w/index.php?diff=64510&oldid=64482 * Areallycoolusername * (+4) /* Example */
03:40:43 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64511&oldid=64509 * A * (+322) /* Char language */ I have changed my signature.
04:01:42 -!- adu has left.
04:16:29 <oerjan> <ais523> where's the repository? <-- fizzie might want to change the link at the end of `help
04:16:36 <HackEso> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch [<output-file>] <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
04:16:49 <HackEso> https://hack.esolangs.org/repo/
04:23:54 <oerjan> `! brachylog "test"w⊥82{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}w!⊥}
04:32:39 -!- mniip has quit (Quit: This page is intentionally left blank.).
04:33:14 <oerjan> `` interp 'brachylog "test"w⊥82{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}w!⊥}' </dev/null
04:33:40 <oerjan> although where is that % from
04:34:04 <oerjan> `` interp 'brachylog "test"w⊥82{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}w!⊥}'
04:35:03 <oerjan> @tell ais523 your slow brachylog program was simply hitting the HackEso "feature" where it waits for a timeout if you attempt to read from its stdin
04:59:57 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64512&oldid=64511 * A * (-1083) /* Talk page */
07:07:05 -!- user24 has joined.
07:17:13 -!- Lord_of_Life has quit (Ping timeout: 246 seconds).
07:20:11 -!- Lord_of_Life has joined.
07:26:55 -!- AnotherTest has joined.
07:36:16 -!- user24 has quit (Quit: Leaving).
07:45:35 -!- Sgeo_ has joined.
07:48:37 -!- Sgeo__ has quit (Ping timeout: 258 seconds).
07:55:28 -!- Phantom_Hoover has joined.
07:56:01 -!- Phantom_Hoover has quit (Client Quit).
09:01:53 -!- atslash has joined.
09:02:20 -!- sftp has quit (Ping timeout: 272 seconds).
09:37:49 -!- wob_jonas has joined.
09:38:40 <wob_jonas> oerjan: interesting. though I don't know why it would read stdin when it doesn't in the simple case of the program that just prints a constant string. is it waiting for a more prompt?
09:52:24 <oerjan> wob_jonas: since ais523 said brachylog is supposedly interactive, i suspect it is, and that's what gives the % halt when it gets /dev/null instead.
09:53:15 <oerjan> not that i know brachylog
09:59:32 <wob_jonas> How do I make an URL that refers to a PDF with a fragment part pointing to a specific page? I thought I just had to add a hash mark and the page number in decimal, but that doesn't seem to work.
09:59:44 <wob_jonas> I want to give a link to page 17 of an article for convenience
10:09:09 -!- oerjan has quit (Quit: Later).
10:37:50 <Taneb> wob_jonas: does #page=17 work?
10:38:33 <Taneb> Works for me in Firefox and Chrome
10:39:25 <wob_jonas> hmm, should I add that to a wisdom? I won't remember that syntax otherwise
10:39:38 <HackEso> PDF stands for Pretty Depressing Format.
10:39:40 <HackEso> PDF stands for Pretty Depressing Format.
10:39:43 <HackEso> Nicely formatted classical wisdoms and quotes book at https://www.dropbox.com/s/fyhqyvy3i8oh25m/wisdom.pdf
10:40:27 <HackEso> wisdom/pdf:PDF stands for Pretty Depressing Format. \ wisdom/wisdomme:wisdomme is a PDF that may be in the topic. boily is the one who compiles it. See `? wisdom.pdf \ wisdom/wisdom.pdf:Nicely formatted classical wisdoms and quotes book at https://www.dropbox.com/s/fyhqyvy3i8oh25m/wisdom.pdf
11:04:00 <esowiki> [[Blue Tomato]] N https://esolangs.org/w/index.php?oldid=64513 * Jabutosama * (+3519) Created page with "Blue tomato (BT) is an art programming language concepted by [[user:Jabutosama]]. The language is based around around giving more or less surreal art to very specifically teac..."
11:22:01 <wob_jonas> Ah ah ah is one of the rare customary american units of measurement that happens to fit SI units exactly. One ah ah ah is equal to 1.
11:43:52 -!- shotover has quit (Remote host closed the connection).
11:48:32 -!- howlands has joined.
12:04:32 -!- mniip has joined.
12:17:56 -!- arseniiv has joined.
12:24:35 <esowiki> [[Arch]] https://esolangs.org/w/index.php?diff=64514&oldid=64493 * Areallycoolusername * (+178) /* Cells & Split */
12:29:59 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64515&oldid=64512 * Areallycoolusername * (+786) /* Char language */
12:30:26 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64516&oldid=64515 * Areallycoolusername * (+9) /* Char language */
12:30:54 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64517&oldid=64516 * Areallycoolusername * (-2) /* Char language */
12:31:10 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64518&oldid=64517 * Areallycoolusername * (+3) /* Char language */
12:32:11 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64519&oldid=64518 * Areallycoolusername * (-8) /* Char language */
12:32:39 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64520&oldid=64519 * Areallycoolusername * (+118) /* Char language */
12:44:56 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64521&oldid=64520 * A * (+34) /* Char language */ Thank you, and a memory fix first
12:47:39 -!- sftp has joined.
12:48:46 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64522&oldid=64521 * A * (+387) /* Char language */
12:54:23 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64523&oldid=64522 * A * (+640) /* Char language */
12:56:55 -!- howlands has quit (Quit: sort of).
12:58:24 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64524&oldid=64523 * A * (+190) /* Commands */
13:00:45 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64525&oldid=64524 * A * (+75) /* Commands */
13:08:08 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64526&oldid=64525 * A * (+132) /* Char language */ More verbose! MWHAHAHA
13:13:57 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64527&oldid=64526 * A * (+15) /* Char language */ not TC of course
13:18:37 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64528&oldid=64527 * A * (+232) /* Char language */
13:24:19 -!- wob_jonas has quit (Remote host closed the connection).
13:24:25 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64529&oldid=64528 * A * (+217) /* Char language */
13:39:00 -!- xkapastel has joined.
14:02:09 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64530&oldid=64529 * A * (-145)
14:30:03 <esowiki> [[Char]] N https://esolangs.org/w/index.php?oldid=64531 * Areallycoolusername * (+4040) Created page with "'''Char''' is an [[esoteric programming language]] made by [[User: A]]. It's made to be the first [[Arch]]-based programming language. == Specifics == Char utilizes an arch t..."
14:31:37 <esowiki> [[Char]] https://esolangs.org/w/index.php?diff=64532&oldid=64531 * Areallycoolusername * (+47)
14:31:52 -!- wob_jonas has joined.
14:32:31 -!- wob_jonas has set topic: IOCCC winners are announced; source code release planned in the past | Welcome to the international center for esoteric programming language design, development, and deployment! | https://esolangs.org | logs: https://esolangs.org/logs/ http://codu.org/logs/_esoteric/ http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
14:32:47 <wob_jonas> hmm no, that's not the right way to phrase it
14:34:22 <esowiki> [[Arch]] https://esolangs.org/w/index.php?diff=64533&oldid=64514 * Areallycoolusername * (-19) /* Languages */
14:35:05 <esowiki> [[Arch]] https://esolangs.org/w/index.php?diff=64534&oldid=64533 * Areallycoolusername * (+74) /* Languages */
14:35:51 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=64535&oldid=64506 * Areallycoolusername * (+11) /* C */
14:36:23 -!- wob_jonas has set topic: IOCCC winners are announced; source code release planned by now | Welcome to the international center for esoteric programming language design, development, and deployment! | https://esolangs.org | logs: https://esolangs.org/logs/ http://codu.org/logs/_esoteric/ http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
14:39:38 -!- Sgeo__ has joined.
14:43:04 -!- Sgeo_ has quit (Ping timeout: 272 seconds).
14:51:12 <esowiki> [[Varnand]] M https://esolangs.org/w/index.php?diff=64536&oldid=64503 * DoggyDogWhirl * (+19)
15:07:14 -!- heroux has quit (Read error: Connection reset by peer).
15:07:24 -!- heroux has joined.
15:13:10 -!- atslash has quit (Read error: Connection reset by peer).
15:14:03 -!- atslash has joined.
15:14:42 <esowiki> [[Special:Log/newusers]] create * Sec-iiiso * New user account
15:26:28 -!- wob_jonas has quit (Remote host closed the connection).
15:55:08 -!- Sgeo__ has quit (Read error: Connection reset by peer).
15:55:34 -!- Sgeo__ has joined.
16:05:04 -!- Sgeo_ has joined.
16:08:10 -!- Sgeo__ has quit (Ping timeout: 246 seconds).
16:47:24 -!- b_jonas has joined.
17:07:07 -!- heroux has quit (Read error: Connection reset by peer).
17:07:41 -!- heroux has joined.
17:18:34 -!- Sgeo__ has joined.
17:20:59 -!- heroux has quit (Read error: Connection reset by peer).
17:21:28 -!- Sgeo_ has quit (Ping timeout: 244 seconds).
17:26:03 -!- heroux has joined.
17:32:07 -!- mniip has quit (Quit: This page is intentionally left blank.).
17:34:55 -!- heroux has quit (Read error: Connection reset by peer).
17:39:57 -!- heroux has joined.
17:40:37 -!- Phantom_Hoover has joined.
18:29:28 <b_jonas> "early July 2019" has definitely ended, right?
18:29:46 <shachaf> I think it only ends in mid-August.
18:31:20 <kmc> shachaf: which USB-C laptop charger do you use?
18:31:32 <int-e> b_jonas: I would not say "definitely".
18:31:38 <kmc> I'm considering getting a single charger for my backpack for both laptop and phone, but I want one that's compact
18:32:14 <kmc> laptop refuses to charge on 50W
18:32:19 <kmc> I think I want 65
18:32:50 <b_jonas> USB-C laptop charger? what the... don't we still live in a world where laptop charger plugs are coaxial, with incompatible random geometries, voltages, polarities, and voltage tolerances, so you can never be sure that an off-brand charger won't fry your laptop motherboard and lose the warranty, even if it mechanically fits in the socket?
18:33:10 <b_jonas> effectively random that is. there are standards, but there are too many of them.
18:33:43 <int-e> b_jonas: But I would usually understand it to mean the first 10 days of a month; after that point, the notion becomes increasingly less applicable.
18:34:34 <b_jonas> int-e: I assumed it would mean the first half of July, but gave them a day of doubt just in case they're on the -1200 timezone pacific islands
18:34:57 <kmc> b_jonas: mostly yes :(
18:35:03 <kmc> b_jonas: but some laptops can charge from USB-C
18:35:18 <kmc> my X270 can do either USB-C or the usual square thinkpad charger port
18:35:24 <int-e> (But of course it's July 4th today. ;-) )
18:35:27 <b_jonas> and July has 31 days, so the first half can be about 16 days long
18:35:42 <kmc> but it's picky about USB-C, you can't just plug it into any random wall charger
18:35:43 <int-e> https://www.timeanddate.com/calendar/?country=23 <-- lovely.
18:35:45 <kmc> it may require the 20V mode
18:36:32 <kmc> not sure if you know how USB-PD works
18:37:31 <b_jonas> int-e: no way. they're the IO*C*CC, they insist on accepting only C programs, not programs in other languages, and the C standard library has only the localtime/timelocal functions which work only with the gregorian calendar
18:37:53 <b_jonas> yeah, we can take that as an excuse:
18:38:13 <shachaf> kmc: I first bought a cheap USB-PD charger and it was bad.
18:38:19 <shachaf> Then I bought the one from Apple and it was fine.
18:38:21 <b_jonas> the localtime function allows you to carry stuff from out of range lower fields to higher fields, to make it easy to do date arithmetic with,
18:38:29 <b_jonas> and the IOCCC rules have in fact used that in the past:
18:38:38 <shachaf> Some time later I bought anther cheap one and it was also fine.
18:38:56 <HackEso> Gregor took forty cakes. He took 40 cakes. That's as many as four tens. And that's terrible.
18:39:06 <int-e> No mention of a calendar.
18:39:32 <shachaf> kmc: Apparently this is the one I'm using that works OK: https://www.amazon.com/Genius-Charger-Extension-Overheating-Warranty/dp/B07KCTKKFR
18:39:53 <b_jonas> or haven't they? I seem to remember they have, but now I can't find the reference
18:39:56 <shachaf> kmc: Keep in mind there are several hundred kinds of type-C cables and only one of them is compatible with your charger and laptop.
18:40:01 <kmc> is that so
18:41:03 <int-e> So Elon Musk has a new company, "Neuralink", for brain implants. Too bad "The Boring Company" was already taken...
18:41:12 <kmc> b_jonas: the charger and device negotiate a voltage up to 20V and a current up to 5A
18:41:18 <kmc> I think they also sense what the cable is capable of
18:41:44 <kmc> but yeah the brick I have right now only goes up to 9V which is probably why the laptop won't charge
18:42:06 <shachaf> one scow fact is that my laptop refuses to bios-update on usb power
18:42:15 <shachaf> because it's not 130W or whatever
18:43:15 <kmc> shachaf: I do have a brick that can charge my laptop from 12V power
18:43:17 <kmc> it's exciting
18:43:21 <b_jonas> maybe I'm just bad at datetime calculations and assumed that some date I read somewhere had an out of range field without checking it
18:43:24 <shachaf> anyway the point is that cables make a difference with type-c, and also they all look identical, so you gotta look it up or something
18:43:45 <shachaf> kmc: bricks are also good for charging cats
18:43:57 <int-e> What kind of voltage do flash roms need to be programmed? 5V? More?
18:44:31 <kmc> int-e: modern ones don't require more than the operating Vcc, I think
18:45:45 <shachaf> Obviously the answer to that question is irrelevant.
18:45:55 <shachaf> It's just Dell being scow for Dell reasons.
18:46:22 <kmc> shachaf: I think USB-D should be hermaphroditic, like Powerpole
18:49:18 <b_jonas> shachaf: Dell in the infamous sense where if you order replacement screws from them, they send you six tiny screws each individually packaged in six huge boxes respectively?
19:04:16 -!- MDead_ has quit (Quit: Going offline, see ya! (www.adiirc.com)).
19:19:22 -!- Lord_of_Life_ has joined.
19:19:47 -!- Lord_of_Life has quit (Ping timeout: 244 seconds).
19:20:35 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
19:22:07 <b_jonas> I was trying to think of a certain sci-fi astronomical arrangement between a planet and a double sun moving in a strange pattern, but it seems it's gravitationally impossible.
19:22:57 <b_jonas> What I wanted is a double sun orbiting each other very quickly, and a planet that orbits the two of them slowly, but at the same the planet isn't much father away from them than the two suns from each other.
19:23:39 <b_jonas> If the arrangement exists, it needs a more magical reason, such as for Discworld.
19:23:54 <kmc> what is the computational complexity of orbital mechanics
19:24:10 <kmc> or not complexity, but rather computability class
19:24:14 <kmc> meaning, what kinds of algorithms can you implement as a n-body gravitational system
19:24:31 <kmc> the fact that it's continuous will place limits
19:25:06 <b_jonas> kmc: I won't try to answer that. I just totally confused myself with a different computational complexity question.
19:32:08 <j4cbo> kmc; my MacBook Pro will happily charge (v slowly) from 5v
19:34:10 <kmc> the X270 won't
19:34:12 <kmc> because it's a butt
19:34:22 <kmc> I also bought a USB-C power anal-yzer
19:34:28 <kmc> so I can see what my devices are actually using
20:00:58 <b_jonas> kmc: is that a passive thing that only measures power, or an active thing that interacts with the USB negotiation to tell you the voltage used too?
20:01:17 <kmc> I don't think the cables contain any electronics; I think it probably senses the voltage drop of the cable
20:01:21 <kmc> but also I'm not sure that's a thing at all
20:02:11 <kmc> wait, sorry
20:02:20 <kmc> I thought you were back to talking about the cable quality
20:02:25 <kmc> the meter is a man in the middle
20:02:31 <kmc> I think it does not interfere with the negotiation
20:02:35 <kmc> it probably just measuers the voltage
20:02:50 <kmc> but I'm sure you can buy more advanced (read: expensive) devices that also allow you to mess with the negotiation
20:03:04 <kmc> and also programmable loads and power supplies that you can configure for any set of capabilities
20:03:07 <kmc> it might be fun to own such things
20:03:37 <kmc> and then there are those "USB condoms"
20:03:40 <kmc> which disconnect the data lines
20:03:46 <kmc> I'm not sure if that interferes with USB-PD negotiation
20:04:41 <kmc> I think there are power only cables you can get
20:05:42 <b_jonas> I guess it could be passive and yet measure everything. It just needs to put an ideal infinite resistance voltage meter between the wires of the cable, and an ideal zero impedance current meter interrupting the wires, and some magical zero resistance gold coated sockets with superconducting wires.
20:06:42 <b_jonas> It just needs a separate power source so it doesn't leach the USB itself for power.
20:08:17 -!- FreeFull has joined.
20:08:22 <kmc> yes but of course it has none of those things
20:08:29 <kmc> and is Good Enough ™
20:08:40 <kmc> it's probably like a standard multimeter
20:09:11 <kmc> voltmeter 10 Mohm resistance in parallel to the load, ammeter ~1 mohm resistance in series to the load
20:09:22 <kmc> I do have some Powerpole voltage-current meters that can use an external supply
20:09:32 <kmc> in addition to being more accurate, this allows them to measure a wider range of voltages
20:09:38 <kmc> those things are very useful
20:10:36 <kmc> I'm not sure, but probably on that order
20:12:23 <kmc> I just measured the shunt resistor inside one of my meters as 0.1 ohms
20:12:27 <kmc> but that's the lowest the other meter can read
20:12:30 <kmc> and it's probably lower than that
20:12:56 <kmc> for high current shunts a common size is to drop 75 mV at full current
20:13:05 <b_jonas> kmc: sure, but isn't that only the ohmic resistance? can the capacitance bother the autodetection mechanism or signaling between the laptop and charger?
20:13:08 <kmc> so a 100A max shunt would have a resistance of 0.75 mohm
20:13:32 <b_jonas> I don't really know, I don't understand electric engineering
20:13:39 <b_jonas> we have other people at this company who understand it though
20:13:57 <kmc> b_jonas: if it violates the USB spec for the data lines then yes
20:13:59 <kmc> otherwise no
20:14:03 <kmc> because the negotiation is digital
20:14:20 <kmc> if the meter is poorly made it may prevent USB 3 speeds from working
20:14:26 <kmc> I don't know if the port will automatically downgrade to 2
20:14:37 <b_jonas> I don't mean the signals for negotiation, but for autodetecting the cable quality
20:15:21 <b_jonas> oh, USB3 is a good point, does its extra wires help transmit more current?
20:16:13 <b_jonas> I don't know how USB works, it's magic
20:16:25 <kmc> I am not certain that autodetecting cable quality is even a thing
20:16:29 <kmc> I'm not sure where I got that idea
20:16:56 <kmc> I don't think USB-C has any additional power wires
20:17:09 <kmc> but a cable designed for 5A had better have some reasonably thick wires
20:17:28 <kmc> as for capacitance, USB3 is so fast that it's essentially a microwave-frequency transmission line
20:17:33 <b_jonas> better wires in general, they're not restricted to power.
20:17:33 <kmc> so it does need precisely controlled impedance
20:18:00 <kmc> similarly, the twist in ethernet cables matters more at higher speeds
20:18:19 <b_jonas> and yes, USB3 is so fast you can basically transmit digital video signals to your monitor through it
20:18:21 <kmc> Cat7 has very tight tolerances on the twist geometry
20:19:00 <kmc> b_jonas: yeah
20:19:06 <kmc> b_jonas: you can have an external video card connected by USB3
20:19:09 <b_jonas> there are laptop dockers that use just two USB connectors plus two thick power connectors, and you can transmit data to two external monitors plus high speed network plus external solid state disks through them
20:19:34 <kmc> you can configure a USB-C port to carry HDMI or DisplayPort signals from an internal graphics card
20:19:37 <kmc> https://en.wikipedia.org/wiki/USB-C#Alternate_Mode_partner_specifications
20:19:41 <kmc> it is pretty fancy
20:20:06 <kmc> fun fact: USB3 cables have a tight enough tolerance that you can run PCIe signals through them, at least on short distances
20:20:22 <kmc> this is not in any way supported by the spec, it is just a repurposing of the cables
20:20:33 <b_jonas> the laptop I use at work is like that, although I only transmit laptop power plus data for one monitor plus not too fast network through it, no disk
20:20:35 <kmc> but it's popular with crypto miners
20:20:48 <kmc> as a way to get lots of video cards plugged into one motherbord
20:21:29 <kmc> at fry's I saw a mobo with 19 PCIe x1 slots on it
20:21:51 <kmc> obviously you cannot physically fit that many cards on the board without risers
20:22:18 <b_jonas> huh? why do you need a fast connection for that? don't they put separate built-in RAM onto each video card, so for crypto mining (as opposed to, say, gaming) you don't need much data throughput or latency between the motherboard and video card?
20:22:26 <kmc> and it has *three* ATX motherboard connectors
20:22:32 <kmc> https://www.asus.com/us/Motherboards/B250-MINING-EXPERT/
20:22:53 <b_jonas> also can't you put all that stuff into a single big video card that fits into two adjacent pcie sockets?
20:22:56 <kmc> and the best part? this thing was on blowout sale for $35.
20:23:12 <kmc> shovels and pickaxes 90% off!
20:23:22 <kmc> b_jonas: we are takling 19 big video cards
20:23:36 <kmc> have you ever seen a GPU mining rig
20:23:48 <kmc> here's a small one https://cryptosrus.com/wp-content/uploads/2017/06/mining-rig-1280x640.jpg
20:24:15 <kmc> those little boards plugged into the mobo with USB cables coming out vertically are the PCIe risers
20:24:46 <kmc> mining does not require much bandwidth, so PCIe x1 is fine
20:24:58 <b_jonas> the big card can have separate power cables, going to it directly without the motherboard involved, and as much cooling as you can physically manage
20:25:05 <b_jonas> I don't see why it needs much motherboard connection
20:25:11 <kmc> I've heard of people cutting a notch out of the back of an x1 slot so they can fit an x16 card in it
20:25:20 <kmc> or cutting off most of the GPU's PCIe connector
20:25:21 <kmc> and this works, apparently
20:25:27 <b_jonas> do you need low latency connection to the motherboard?
20:25:35 <kmc> b_jonas: I think it is still allowed to draw a fair amount of current from the PCIe slot itself
20:25:38 <kmc> b_jonas: no
20:25:58 <kmc> the cards basically operate on their own until they discover a solution for a particular block
20:26:13 <kmc> which does not happen very often
20:26:32 <b_jonas> kmc: looks nice, it's sort of like those servers with lots of high capacity hard disks connected to them, only you need more air gaps for heating
20:26:41 <b_jonas> the heating comes from the power cables
20:26:48 <kmc> for heating the environment
20:27:17 <b_jonas> and you need a powerful air conditioner to get the heat out of the room itself
20:27:23 <kmc> my friend has a painting at her apartment, not sure who made it, of a melting glacier with a huge (skyscraper-size) mining rig in front of it
20:28:11 <b_jonas> I mean, I'm paranoid and put air gaps between my disk drives, but I only have three in my computer right now, plus a dvd drive
20:28:34 <kmc> if you have good case airflow then you shouldn't need big gaps
20:28:38 <b_jonas> I use one of these little metal extenders to be able to put a HDD to a 5 inch wide space
20:28:43 <kmc> those are good
20:28:49 <b_jonas> I don't need big gaps, but there's enough space in the box to have it, so why not
20:28:53 <b_jonas> I don't lose anything by it
20:29:08 <b_jonas> it's not like I have a big video card taking up the space
20:29:22 <b_jonas> also, this box is ancient and I should buy lots of new hardware
20:29:57 <b_jonas> and start looking for a new camera too, because the warranty of the current one expires in a week and I'm getting more and more certain that it *knows* and deliberately times its death to right after that
20:30:26 <b_jonas> so that if I took it to repairs within the warranty, I couldn't prove that there's anything wrong, but the motor for the lens will give up right after
20:30:59 <b_jonas> but this compact camera has served me really well for three years, I enjoy it, so I might stick to the Panasonic brand
20:39:31 <b_jonas> Also I have to process and upload some photos that I made with it.
20:59:48 <b_jonas> has oren disappeared? it seems like he hasn't been in the channel (under this name or the backslash one) for a while
21:02:31 <kmc> I need to get a bunch of stuff fixed on my laptop before the warranty runs out
21:02:37 <kmc> I have on site accidental damage coverage
21:02:46 <kmc> I am not that happy with the build quality on this ThinkPad X270
21:03:13 <kmc> it's disappointing even by the standard of the post-IBM standards
21:03:21 <kmc> I broke the keyboard twice with tiny amounts of water, broke the screen once
21:03:29 <kmc> broke the internal speaker *and* the headphone jack, separately
21:04:06 <b_jonas> I broke my non-laptop keyboard with colored water too. I bought a new identical one. I'm more careful about letting drinks close to it now.
21:04:22 <kmc> this was like residual water on my hands after washing them
21:04:33 <kmc> every other thinkpad i've owned, it would not be a problem to get a few drops othe keyobard
21:04:50 <kmc> with this one it messed things up even after letting it dry
21:04:57 <b_jonas> Mind wasn't, I actually spilled a significant amount in it, like perhaps 50 grams or something.
21:05:08 <int-e> Yeah at the very least it should recover after drying out :/
21:05:18 <kmc> cathy spilled a whole cup of tea into her X201i
21:05:22 <kmc> and it was fine in the end
21:05:25 <kmc> let it dry for like a week
21:05:43 <b_jonas> I use a cheaper keyboard at work. That one claims to be waterproof.
21:05:44 <int-e> The best keyboard killer I know is Coca Cola (ideally with sugar).
21:05:54 <kmc> I don't think I've ever had that misfortune
21:06:10 <kmc> the speakers are sort of my fault
21:06:27 <kmc> i dropped the laptop off the side of the bed in a fit of passion
21:06:29 <int-e> I've destroyed 2 keyboards that way. But that was ages ago.
21:06:49 <kmc> I got coffee in one of my external keyboards and fucked it up
21:06:58 <kmc> but I was able to open it up, clean the board with isopropyl alcohol
21:07:01 <kmc> and now it works again \o/
21:08:31 <b_jonas> int-e: I see. I haven't tried spilling that into keyboard yet.
21:10:22 <b_jonas> kmc: what additives did the coffee have?
21:10:51 <b_jonas> I'm asking because int-e says the sugar might matter
21:11:00 <kmc> I like coffee as black as my existential despair
21:11:08 <kmc> it might, yeah
21:11:16 <kmc> ithink it was espresso actually
21:12:30 <b_jonas> I don't drink coffee. In the office, lots of people drink coffee of course. The entire IT industry can grind into a halt when the coffee machine doesn't work or when we run out of sugar or milk.
21:12:48 <kmc> I think maybe I should try quitting caffeine just to see what it's like
21:12:54 <kmc> cause I've consumed a lot of caffeine for a very long time
21:13:16 <b_jonas> oh, I don't say that I don't drink caffeine. I drink coke actually.
21:13:24 <b_jonas> With sweeteners rather than sugar these days.
21:13:50 <kmc> I drink coffee and diet soda and energy drinks
21:13:58 <kmc> I have a sort of compulsion to eat/drink things
21:14:01 <kmc> these things have no calories
21:14:45 <kmc> water's pretyt good too
21:14:52 <kmc> I have also been drinking diluted orange juice
21:14:56 <kmc> it's tastier than it sounds
21:14:59 <kmc> and pretty low calorie
21:16:30 <int-e> b_jonas: sugar matters because in addition to the electrical problem (cola has acid, plenty of electrolytes there...) you get a mechanical one (stickiness).
21:16:58 <b_jonas> int-e: yep, the plain water evaporates completely, but the sugar doesn't, and it keeps the water there more
21:17:25 <b_jonas> but coke with sweeteners is still somewhat sticky, even if not as much as the one with sugar
21:18:34 <int-e> I haven't tried that yet :)
21:19:19 <b_jonas> I haven't spilled it to a computer either
21:19:30 <b_jonas> I destroyed my phone with plain water too
21:31:01 <b_jonas> kmc: https://www.perlmonks.com/?node_id=1225327 has the story of my phone
21:31:28 <b_jonas> oh, I should edit that to add that the bluetooth of the Cat is broken too
21:36:00 -!- AnotherTest has quit (Ping timeout: 272 seconds).
22:03:05 -!- ais523 has joined.
22:04:08 <b_jonas> hi ais523. oerjan figured out what took time.
22:04:10 <ais523> ooh, I guess what was happening is that the Brachylog compiler was falling through into the interactive swipl interpreter after running the code
22:04:17 <HackEso> #!/bin/sh \ echo "$1" > tmp/input.brachylog \ (cd interps/brachylog/brachylog/Brachylog-master/src; swipl -g 'run_from_file("../../../../../tmp/input.brachylog", _, _), halt' brachylog.pl)
22:04:34 <b_jonas> but I don't understand why that happens for your triangular number program but not for the hello world program
22:04:37 <ais523> …but only if it returns false, rather than returning true
22:04:50 <ais523> the hello world program where I "commented out" the rest of the code with a return false returns false :-)
22:06:10 <b_jonas> `! brachylog "QUeRHCOQ9j7V"w
22:06:17 <b_jonas> ^ doesn't that return true?
22:06:25 <ais523> yes, and it ran quickly
22:06:37 <b_jonas> so it's slow if it returns false?
22:06:57 <b_jonas> so in that case, do you have a good way to fix this in your wrapper script?
22:07:09 <ais523> `` sed -i 's/halt/write("\ntrue."), !, halt; write("\nfalse."), !, halt' -e ibin/brachylog
22:07:10 <HackEso> /bin/sed: can't read s/halt/write("\ntrue."), !, halt; write("\nfalse."), !, halt: No such file or directory
22:07:20 <ais523> `` sed -i -e 's/halt/write("\ntrue."), !, halt; write("\nfalse."), !, halt' ibin/brachylog
22:07:20 <HackEso> /bin/sed: -e expression #1, char 60: unterminated `s' command
22:07:25 <ais523> `` sed -i -e 's/halt/write("\ntrue."), !, halt; write("\nfalse."), !, halt/' ibin/brachylog
22:08:06 <ais523> I made it print the program's return boolean, too
22:08:17 <ais523> err, exit code boolean
22:08:33 <ais523> brachylog doesn't have any way to write programs, only functions
22:08:46 <ais523> so you need a wrapper to make a brachylog function into an entire program and there's more than one way to do it
22:09:22 <ais523> the wrapper on TIO prints exit code as true/false by default, but has an option to print return value or even input instead (input is useful if you didn't specify it)
22:09:41 <b_jonas> does halt quit the interpreter?
22:09:55 <ais523> `! brachylog 63{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}w⊥}
22:09:56 <HackEso> [3,15,45][3,45,15][6,21,36][6,36,21][15,3,45][15,45,3][21,6,36][21,21,21][21,36,6][36,6,21][36,21,6][45,3,15][45,15,3] \ false.
22:10:12 <ais523> the "false" here is because there are no more solutions
22:10:36 <ais523> `! brachylog 81>ℕ≜{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}w⊥}
22:10:47 <HackEso> [0,0,0][0,0,1][0,1,0][1,0,0][0,1,1][1,0,1][1,1,0][0,0,3][0,3,0][1,1,1][3,0,0][0,1,3][0,3,1][1,0,3][1,3,0][3,0,1][3,1,0][1,1,3][1,3,1][3,1,1][0,0,6][0,3,3][0,6,0][3,0,3][3,3,0][6,0,0][0,1,6][0,6,1][1,0,6][1,3,3][1,6,0][3,1,3][3,3,1][6,0,1][6,1,0][1,1,6][1,6,1][6,1,1][0,3,6][0,6,3][3,0,6][3,3,3][3,6,0][6,0,3][6,3,0][0,0,10][0,10,0][1,3,6][1,6,3][3,1,6][3,6,1][6,1,3][6,3,1][10,0,0][0,1,10][0,10,1][1,0,10][1,10,0][10,0,1][10,1,0][0,6,6][1,1,10][1,10,1][3,3,
22:11:17 <b_jonas> add the cut to make it print just one solution per sum?
22:11:48 <ais523> `! brachylog 81>ℕ≜{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}!w⊥}
22:11:58 <ais523> I think you can cut after the w too, to the same effect
22:11:58 <HackEso> [0,0,0][0,0,1][0,1,0][1,0,0][0,1,1][1,0,1][1,1,0][0,0,3][0,3,0][1,1,1][3,0,0][0,1,3][0,3,1][1,0,3][1,3,0][3,0,1][3,1,0][1,1,3][1,3,1][3,1,1][0,0,6][0,3,3][0,6,0][3,0,3][3,3,0][6,0,0][0,1,6][0,6,1][1,0,6][1,3,3][1,6,0][3,1,3][3,3,1][6,0,1][6,1,0][1,1,6][1,6,1][6,1,1][0,3,6][0,6,3][3,0,6][3,3,3][3,6,0][6,0,3][6,3,0][0,0,10][0,10,0][1,3,6][1,6,3][3,1,6][3,6,1][6,1,3][6,3,1][10,0,0][0,1,10][0,10,1][1,0,10][1,10,0][10,0,1][10,1,0][0,6,6][1,1,10][1,10,1][3,3,
22:12:14 <ais523> nope, /have/ to cut after, that position is before the labelise :-)
22:12:17 <ais523> `! brachylog 81>ℕ≜{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}w!⊥}
22:12:19 <HackEso> [0,0,0][0,0,1][0,1,1][0,0,3][0,1,3][1,1,3][0,0,6][0,1,6][1,1,6][0,3,6][0,0,10][0,1,10][0,6,6][0,3,10][1,3,10][0,0,15][0,1,15][1,1,15][0,3,15][1,3,15][0,10,10][0,0,21][0,1,21][1,1,21][0,3,21][0,10,15][1,10,15][0,6,21][0,0,28][0,1,28][0,15,15][0,3,28][1,3,28][3,15,15][0,6,28][1,6,28][0,0,36][0,1,36][0,10,28][0,3,36][1,3,36][3,10,28][0,6,36][0,15,28][1,15,28][0,0,45][0,1,45][1,1,45][0,3,45][0,21,28][1,21,28][0,6,45][1,6,45][10,15,28][3,6,45][0,0,55][0,1,55
22:12:24 <ais523> labelise rules are the worst thing about Brachylog
22:12:53 <ais523> because you need to know way too much about how the "derive an algorithm to meet the spec you give" works internally to be able to labelise correctly
22:13:49 <b_jonas> ``` \! brachylog '81>ℕ≜{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}w!⊥}' | perl -e "local $/; print substr <STDIN>,200"
22:13:50 <HackEso> ERROR: Prolog initialisation failed: \ ERROR: brachylog_main/4: Undefined procedure: default/0
22:14:12 <b_jonas> ``` \! brachylog '81>ℕ≜{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}w!⊥}' | perl -e 'local $/; print substr <STDIN>,200'
22:14:14 <HackEso> ERROR: Prolog initialisation failed: \ ERROR: brachylog_main/4: Undefined procedure: default/0
22:14:35 <b_jonas> ``` perl -e 'print "foo!bar"'
22:14:54 <b_jonas> ``` \! brachylog '81>ℕ≜{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}w!⊥}'
22:14:55 <HackEso> ERROR: Prolog initialisation failed: \ ERROR: brachylog_main/4: Undefined procedure: default/0
22:15:05 <b_jonas> ``` \! 'brachylog 81>ℕ≜{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}w!⊥}'
22:15:06 <HackEso> Warning: '../../../../../tmp/input.brachylog':1:4: Illegal multibyte Sequence \ Warning: '../../../../../tmp/input.brachylog':1:5: Illegal multibyte Sequence \ Warning: '../../../../../tmp/input.brachylog':1:6: Illegal multibyte Sequence \ Warning: '../../../../../tmp/input.brachylog':1:7: Illegal multibyte Sequence \ Warning: '../../../../../tmp/input.brachylog':1:8: Illegal multibyte Sequence \ Warning: '../../../../../tmp/input.brachylog':1:9: Illegal m
22:15:33 <b_jonas> I want to see the entries past the line cutoff
22:15:40 <ais523> `` \! 'brachylog 81>ℕ≜{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}w!⊥}'
22:15:42 <HackEso> [0,0,0][0,0,1][0,1,1][0,0,3][0,1,3][1,1,3][0,0,6][0,1,6][1,1,6][0,3,6][0,0,10][0,1,10][0,6,6][0,3,10][1,3,10][0,0,15][0,1,15][1,1,15][0,3,15][1,3,15][0,10,10][0,0,21][0,1,21][1,1,21][0,3,21][0,10,15][1,10,15][0,6,21][0,0,28][0,1,28][0,15,15][0,3,28][1,3,28][3,15,15][0,6,28][1,6,28][0,0,36][0,1,36][0,10,28][0,3,36][1,3,36][3,10,28][0,6,36][0,15,28][1,15,28][0,0,45][0,1,45][1,1,45][0,3,45][0,21,28][1,21,28][0,6,45][1,6,45][10,15,28][3,6,45][0,0,55][0,1,55
22:15:54 <ais523> try using a prefix that doesn't randomly turn UTF-8 mode off?
22:16:07 <b_jonas> well that's backwards, but ok
22:16:08 <ais523> I still don't see the point in ``` :-D
22:16:59 <b_jonas> ``` LC_CTYPE=en_NZ.utf8 \! brachylog '81>ℕ≜{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}w!⊥}' | perl -e 'local $/; print substr <STDIN>,200'
22:17:00 <HackEso> ERROR: Prolog initialisation failed: \ ERROR: brachylog_main/4: Undefined procedure: default/0
22:17:06 <b_jonas> ``` LANG=en_NZ.utf8 \! brachylog '81>ℕ≜{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}w!⊥}' | perl -e 'local $/; print substr <STDIN>,200'
22:17:08 <HackEso> ERROR: Prolog initialisation failed: \ ERROR: brachylog_main/4: Undefined procedure: default/0
22:17:11 <HackEso> LANG=en_NZ.UTF-8 \ LANGUAGE= \ LC_CTYPE="en_NZ.UTF-8" \ LC_NUMERIC="en_NZ.UTF-8" \ LC_TIME="en_NZ.UTF-8" \ LC_COLLATE="en_NZ.UTF-8" \ LC_MONETARY="en_NZ.UTF-8" \ LC_MESSAGES="en_NZ.UTF-8" \ LC_PAPER="en_NZ.UTF-8" \ LC_NAME="en_NZ.UTF-8" \ LC_ADDRESS="en_NZ.UTF-8" \ LC_TELEPHONE="en_NZ.UTF-8" \ LC_MEASUREMENT="en_NZ.UTF-8" \ LC_IDENTIFICATION="en_NZ.UTF-8" \ LC_ALL=
22:17:20 <b_jonas> ``` LANG=en_NZ.UTF-8 \! brachylog '81>ℕ≜{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}w!⊥}' | perl -e 'local $/; print substr <STDIN>,200'
22:17:22 <HackEso> ERROR: Prolog initialisation failed: \ ERROR: brachylog_main/4: Undefined procedure: default/0
22:17:39 <b_jonas> `` \! brachylog '81>ℕ≜{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}w!⊥}' | perl -e 'local $/; print substr <STDIN>,200'
22:17:41 <ais523> ``` LANG=en_NZ.UTF-8 locale
22:17:41 <HackEso> ERROR: Prolog initialisation failed: \ ERROR: brachylog_main/4: Undefined procedure: default/0
22:17:41 <HackEso> LANG=en_NZ.UTF-8 \ LANGUAGE= \ LC_CTYPE="en_NZ.UTF-8" \ LC_NUMERIC="en_NZ.UTF-8" \ LC_TIME="en_NZ.UTF-8" \ LC_COLLATE="en_NZ.UTF-8" \ LC_MONETARY="en_NZ.UTF-8" \ LC_MESSAGES="en_NZ.UTF-8" \ LC_PAPER="en_NZ.UTF-8" \ LC_NAME="en_NZ.UTF-8" \ LC_ADDRESS="en_NZ.UTF-8" \ LC_TELEPHONE="en_NZ.UTF-8" \ LC_MEASUREMENT="en_NZ.UTF-8" \ LC_IDENTIFICATION="en_NZ.UTF-8" \ LC_ALL=
22:18:10 <b_jonas> `` \! brachylog '81>ℕ≜{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}w!⊥}' | cat
22:18:12 <ais523> it should be using LC_CTYPE to determine the program encoding, I think?
22:18:13 <HackEso> ERROR: Prolog initialisation failed: \ ERROR: brachylog_main/4: Undefined procedure: default/0
22:18:31 <b_jonas> `` \! 'brachylog 81>ℕ≜{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}w!⊥}' | cat
22:18:34 <HackEso> [0,0,0][0,0,1][0,1,1][0,0,3][0,1,3][1,1,3][0,0,6][0,1,6][1,1,6][0,3,6][0,0,10][0,1,10][0,6,6][0,3,10][1,3,10][0,0,15][0,1,15][1,1,15][0,3,15][1,3,15][0,10,10][0,0,21][0,1,21][1,1,21][0,3,21][0,10,15][1,10,15][0,6,21][0,0,28][0,1,28][0,15,15][0,3,28][1,3,28][3,15,15][0,6,28][1,6,28][0,0,36][0,1,36][0,10,28][0,3,36][1,3,36][3,10,28][0,6,36][0,15,28][1,15,28][0,0,45][0,1,45][1,1,45][0,3,45][0,21,28][1,21,28][0,6,45][1,6,45][10,15,28][3,6,45][0,0,55][0,1,55
22:18:41 <b_jonas> ``` LANG=en_NZ.UTF-8 \! 'brachylog 81>ℕ≜{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}w!⊥}' | perl -e 'local $/; print substr <STDIN>,200'
22:18:43 <HackEso> 1,10,15][0,6,21][0,0,28][0,1,28][0,15,15][0,3,28][1,3,28][3,15,15][0,6,28][1,6,28][0,0,36][0,1,36][0,10,28][0,3,36][1,3,36][3,10,28][0,6,36][0,15,28][1,15,28][0,0,45][0,1,45][1,1,45][0,3,45][0,21,28][1,21,28][0,6,45][1,6,45][10,15,28][3,6,45][0,0,55][0,1,55][0,21,36][0,3,55][1,3,55][0,15,45][0,6,55][1,6,55][3,15,45][0,28,36][0,10,55][0,0,66][0,1,66][1,1,66][0,3,66][0,15,55][1,15,55][0,6,66][0,28,45][1,28,45][3,6,66][0,10,66][1,10,66][0,0,78][0,1,78][1,1,78
22:19:07 <ais523> it's because `! gets the language name and program as a single argument because that's how single ` works
22:19:34 <b_jonas> though we could make it also work with two arguments
22:20:31 <HackEso> #!/bin/bash \ CMD=`echo "$1" | cut -d' ' -f1` \ ARG="$(echo "$1" | cut -d' ' -f2-)" \ exec ibin/$CMD "$ARG"
22:20:42 <b_jonas> ``` LANG=en_NZ.UTF-8 \! 'brachylog 81>ℕ≜{~{Ṫ{.∧ℕA+₁×↙A~×₂}ᵐ+}w!⊥}' | perl -e 'local $/; print substr <STDIN>,400'
22:20:45 <HackEso> 1,21,28][0,6,45][1,6,45][10,15,28][3,6,45][0,0,55][0,1,55][0,21,36][0,3,55][1,3,55][0,15,45][0,6,55][1,6,55][3,15,45][0,28,36][0,10,55][0,0,66][0,1,66][1,1,66][0,3,66][0,15,55][1,15,55][0,6,66][0,28,45][1,28,45][3,6,66][0,10,66][1,10,66][0,0,78][0,1,78][1,1,78] \ false.
22:21:20 <ais523> `` sed -i -e 's/ARG"$/ARG$2"' 'bin/!'
22:21:21 <HackEso> /bin/sed: -e expression #1, char 14: unterminated `s' command
22:21:24 <ais523> `` sed -i -e 's/ARG"$/ARG$2"/' 'bin/!'
22:21:28 <HackEso> #!/bin/bash \ CMD=`echo "$1" | cut -d' ' -f1` \ ARG="$(echo "$1" | cut -d' ' -f2-)" \ exec ibin/$CMD "$ARG$2"
22:21:50 <b_jonas> be careful, sed is also overridden in /hackenv/bin
22:22:08 <HackEso> /hackenv/bin/`: line 5: brachylog: command not found
22:22:14 <b_jonas> and be careful with sed, if you want to allow two arguments, then you also want to allow two arguments when the second one can have newlines and carriage returns
22:22:15 <ais523> `` '!' brachylog '2+₂w'
22:22:16 <HackEso> ERROR: Prolog initialisation failed: \ ERROR: brachylog_main/4: Undefined procedure: default/0
22:22:40 <b_jonas> not for brachylog in particular, but in some languages, newlines in the source are useful
22:22:55 <ais523> I was only using sed for editing bin/!
22:23:06 <ais523> the edit worked, but the resulting code doesn't do what I wanted
22:23:23 -!- ais523 has quit (Quit: sorry for my connection).
22:23:36 -!- ais523 has joined.
22:24:10 <ais523> `` echo '' | cut -d' ' -f2- | wc
22:24:31 <ais523> `` echo '' | cut -d' ' -f2- | od -t x1z
22:24:51 <ais523> ooh, cut is appending a newline?
22:25:11 <int-e> `` echo -n '' | cut -d' ' -f2- | od -t x1z
22:25:35 <ais523> echo is appending a newline
22:25:45 <ais523> but bin/! isn't using echo -n
22:25:55 <int-e> `` echo a `echo b` c
22:26:03 <ais523> `` sed -i -e 's/echo/echo -n/' 'bin/!'
22:26:04 <int-e> ...the shell should strip the newline
22:26:32 <ais523> `` '!' brachylog '2+₂w'
22:26:34 <HackEso> ERROR: Prolog initialisation failed: \ ERROR: brachylog_main/4: Undefined procedure: default/0
22:26:41 <ais523> b_jonas: why do you use ``` rather than ``?
22:27:06 <int-e> Wasn't ``` the one with the C locale...
22:27:15 <HackEso> #!/bin/sh \ export LANG=C; exec bash -O extglob -c "$@" | rnooodl
22:27:30 <HackEso> #!/bin/bash \ cmd="${1-quote}" \ TIMEFORMAT="real: %lR, user: %lU, sys: %lS" \ shopt -s extglob globstar \ eval -- "$cmd" | rnooodl
22:27:32 <b_jonas> ais523: C locale is more practical for some things. especially bash itself: makes it sort the results of wildcard extension asciibetically rather than locale-wise, and more importantly, make bracket hyphen range wildcards like [a-k] match in a sane asciibetic way
22:28:35 <ais523> generally I use `` like I would use an actual shell
22:28:39 <ais523> and I don't set my actual shell to C locale
22:28:44 <b_jonas> ais523: if the brachylog interpreter depends on the locale, like the java compiler, but most programs use fancy characters that you won't find in smaller charsets, then you should consider making the wrapper set the LC_CTYPE explicitly
22:29:42 <ais523> b_jonas: the brachylog interpreter uses the locale in order to interpret what encoding the input is in, which is correct
22:29:59 <b_jonas> ais523: I set LC_CTYPE to an utf-8 locale, but the other locale facets to C. that makes programs, including the builtin readline in bash, know that the terminal uses utf-8, but doesn't have the strange behavior for wildcard expansion because that's governed by LC_COLLATE
22:30:05 <ais523> forcing it to something that the locale doesn't specify would be incorrect, because if, say, it's running in a UTF-16 environment, it should be interpreting the input as UTF-16
22:30:23 <ais523> perhaps ``` should be using C.UTF-8? because IRC uses UTF-8 except when it doesn't
22:30:42 <b_jonas> ais523: UTF-16 environments won't usually work in unix, definitely not when you pass the program in argv, because argv strings can't have nul bytes
22:31:21 <ais523> that's a good point, main uses char** for argv not wchar_t**
22:31:25 <b_jonas> you can read utf-16 files, but you can't have utf-16 argv or environment
22:31:30 <b_jonas> or filenames for that matter
22:31:52 <ais523> I believe there's some Linux-specific way to get at the command line arguments even if they have embedded NULs but I doubt anyone uses it because the portable way is more portable and more convenient
22:32:11 <b_jonas> in C and unix, yes. in windows and NNIX, you can have the argument and environment contain utf-16 strings.
22:32:12 <kmc> is it in the ELF startup vectors thing
22:32:20 <kmc> there's that weird auxv thing that people don't use
22:32:23 <kmc> that i forgot even the purpose of
22:32:41 <ais523> that said, I'm not convinced you /can/ put embedded NULs into the argument list because I'm not sure there's any kernel-level API for doing that
22:32:42 <kmc> oh right, it has certain useful runtime system info
22:32:52 <ais523> kmc: ASLR is one good use of it, it contains a random number for ASLR purposes
22:32:54 <kmc> that is used mainly by the dynamic loader and libc init code
22:32:54 <b_jonas> ais523: I don't think there is, at least for actual execced programs (as opposed to shell builtins, which cheat), because the arguments are passed in by execve, and execve takes nul-terminated strings
22:33:09 -!- MDead_ has joined.
22:33:12 <b_jonas> ais523: it's quite the opposite: there's a windows-specific way to get the original utf-16 arguments
22:33:47 <b_jonas> kmc: I used it through that libc wrapper in one program
22:33:54 <b_jonas> sysconf or something like that
22:34:03 <b_jonas> I dunno, some strange name like that
22:34:15 <b_jonas> I needed one of the parameters
22:34:26 <b_jonas> because of some linux-specific stuff
22:35:27 <b_jonas> ais523: maybe you can do something crazy like that to put an empty string into the environment and read it
22:36:49 <b_jonas> maybe you can do that even normally
22:38:14 <ais523> b_jonas: putenv puts the provided string into the environment, not a copy of it
22:38:27 <ais523> so you can just put an arbitrary string into the environment and then overwrite the first byte with NUL afterwards
22:38:47 <ais523> this is probably an esoteric use of putenv?
22:39:11 <shachaf> Hmm, I don't know how environment variables work.
22:39:32 <ais523> it's somewhat more insane than you'd expect
22:39:33 <shachaf> Is the running process's environment as modified by libc functions accessible in /proc, in Linux?
22:39:54 <shachaf> Or does putenv only affect getenv and exec functions?
22:39:55 <ais523> basically, environment variables aren't tracked by the kernel at all except at the execve → main boundary
22:39:57 <b_jonas> ais523: but does that survive an execve?
22:40:06 <shachaf> OK, that's what I would have guessed.
22:40:07 <ais523> the environment doesn't survive an execve by definition
22:40:10 <ais523> that's what the e stands for
22:40:12 <b_jonas> or more like, survive an execv, or can you pass execve
22:40:14 <ais523> "replace the environment"
22:40:28 <ais523> execv is just a wrapper in libc that does an execve with your current environment
22:40:49 <b_jonas> ais523: how does /proc/self/env work then?
22:41:00 <shachaf> I know Linux processes can modify their argv and that becomes visible in /proc/cmdline (and ps).
22:41:04 <ais523> so the kernel providing only execve, not any of the other 7 exec* functions, means it doesn't need to track the environment for correctness
22:41:12 <shachaf> But I don't know how they can modify their command line to make it longer, for example.
22:41:21 <ais523> I think /proc/*/environ stores a copy for auditing reasons but the kernel doesn't need to remember it for semantic reasons
22:41:34 <ais523> shachaf: argv[0] is a pointer to a string, you can just change the pointer rather than the string
22:41:46 <b_jonas> ais523: so it's like the filenames you get if you readlink /proc/*/fd/* ?
22:41:48 <shachaf> ais523: And the kernel will pick up on that?
22:41:59 <ais523> argv is double-mutable, you can mutate both the pointers and the things they point to
22:42:15 <ais523> I'm not sure that the kernel picks up on argv[0] assignments in Linux
22:43:06 <ais523> I though you could set the executable name using prctl, but maybe you can't
22:44:18 <ais523> hmm, so prctl lets you set the kernel's idea of where the command line is stored in memory and where the environment is stored in memory
22:44:35 <ais523> so maybe /proc/self/env just reads the environment variables directly out of the program's memory, assuming they're stored in the same place as before?
22:45:19 <b_jonas> ok... I think I don't even want to know those details
22:45:27 <ais523> aha: there's a PR_SET_MM_EXE_FILE
22:45:46 <ais523> which lets you change which executable file the kernel thinks your program is currently running from
22:45:53 <ais523> which is even more insane than changing argv[0]
22:45:57 <shachaf> ais523: But that's only the executable, not the command line.
22:46:18 <ais523> in order to be able to use it you first have to entirely unmap your existing executable, also you can only do it once per process
22:46:35 <shachaf> I once wrote a C program that ran without libc, let me look at what it did.
22:47:05 <b_jonas> shachaf: did that program ran on linux as a user process?
22:47:18 <shachaf> At startup with the amd64 ABI, you get argc right at %rsp, and then argv, which is an array of argc many pointers, and then envp, and then auxv.
22:47:53 <b_jonas> shachaf: what type is auxv there?
22:48:21 <shachaf> Oh, no, it's the actual array.
22:48:39 <shachaf> You scan it until you find the sentinel with type AT_NULL
22:48:45 <b_jonas> yeah, so that was the un-c-like part, not how argv and envp were passed
22:49:34 <shachaf> By the way, auxv contains the file name passed to execve, which can of course be distinct from argv[0]
22:50:02 <b_jonas> shachaf: sure, ps can print both
22:50:57 <b_jonas> it can print two different executable-name-like-things at least
22:51:00 <shachaf> I know it can read the link proc/pid/exe, but that's an absolute path, which I think is a bit different.
22:54:14 <shachaf> Oh man, this is so confusing.
22:54:26 <b_jonas> ``` ps axo pid,comm,args # this prints stuff like "Web Content" in the second column and command lines starting with "/usr/lib/firefox-esr/firefox-esr -contentproc" in the second column
22:54:26 <HackEso> PID COMMAND COMMAND \ 1 init /init \ 2 kthreadd [kthreadd] \ 3 ksoftirqd/0 [ksoftirqd/0] \ 4 kworker/0:0 [kworker/0:0] \ 5 kworker/0:0H [kworker/0:0H] \ 6 kworker/u2:0 [kworker/u2:0] \ 7 lru-add-drain [lru-add-drain] \ 8 kdevtmpfs [kdevtmpfs] \ 9 oom_reaper [oom_reaper] \ 10 writeback [writeback] \ 11 kcompactd0 [kcompactd0] \ 12 crypto
22:54:30 <shachaf> In this program U8 means an 8-byte unsigned integer rather than an 8-bit unsigned integer.
22:54:44 <b_jonas> not always full pathnames that is
22:55:03 <b_jonas> the second colume only has the basename of the executable, or what it lies about itself
22:55:17 <b_jonas> the third column has what looks pretty much like the full argv joined
22:55:45 <b_jonas> the argv sometimes has relative pathname, sometimes absolute pathname for the executable
22:55:57 <b_jonas> and sometimes the argv itself lies
22:56:17 <b_jonas> because you can pass basically anything, and only the shell and gzip and git and a few programs like that care
22:56:35 <b_jonas> (the shell cares about whether it starts with a hyphen, gzip and git cares about names it's usually symlinked to)
22:57:08 <fizzie> I've seen the U1/2/4/8 nomenclature somewhere before, for 8/16/32/64-bit integers, respectively.
22:57:35 <shachaf> ais523: As far as I can tell setting argv[0] to point to a different string has no effect on ps.
22:57:56 <ais523> that's what I'd expect too; it works on some systems but I don't think Linux is one of them
22:57:57 <b_jonas> I have written C++ code where I defined typenames ending in 1, 2, 4, 8 for 1-byte, 2-byte, 4-byte, and 8-byte integers. not U8 or u8 or S8 or s8 or I8 or i8 though
22:58:01 <shachaf> fizzie: Yes, I thought it would be a better idea because they're all one-digit numbers.
22:58:20 <shachaf> ais523: Then maybe I misunderstood 15:41 <ais523> shachaf: argv[0] is a pointer to a string, you can just change the pointer rather than the string
22:58:48 <shachaf> I decided to go back to bit counts because that's what everyone else uses.
22:59:03 <shachaf> It wouldn't be confusing except that 8 bit and 8 bytes are both very common sizes.
22:59:15 <ais523> shachaf: that was in reply to a question asking about how you could make the name longer
22:59:17 <b_jonas> although there's also a third variant, where you use "3" for 1-byte, "4" for 2-byte, "5" for 4-byte, "6" for 8-byte, "7" for 16-byte, "8" for 32-byte, and "9" for 64-byte
22:59:32 <shachaf> ais523: Yes, for people viewing the name through ps.
22:59:38 <ais523> anyway, it seems that on Linux, the "executable name" is the name of the executable's main thread, so you can rename the thread in question and that renames the view in ps
22:59:39 <shachaf> Why else would I want to make it longer?
22:59:47 <ais523> that's limited to 15 bytes, apparently
23:00:08 <b_jonas> and any of these is better than using ambiguous names like "long" and "int" and "word" or abbreviations for them
23:00:09 <ais523> b_jonas: because 1 byte = 8 bits?
23:00:22 <b_jonas> ais523: yes, you can also have "0" for booleans
23:00:24 <shachaf> I want to change the contents of /proc/pid/cmdline.
23:00:45 <fizzie> Oh, I think it was probably the JVM specification.
23:00:58 <fizzie> https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html "The types u1, u2, and u4 represent an unsigned one-, two-, or four-byte quantity, respectively."
23:01:24 <ais523> I'm not sure if it's possible to change arguments after the first in /proc/pid/cmdline; my guess is yes but if so my searches haven't discovered a method yet
23:01:38 <shachaf> Recently I've been reading decompiled Java code to understand a game better.
23:01:49 <shachaf> It's amazing how much information they put in there. Almost everything except comments.
23:01:51 <ais523> Java doesn't /have/ unsigned 1-, 4-, or 8-byte types
23:02:06 <ais523> (char is an unsigned 2-byte number with a misleading name)
23:02:18 <fizzie> ais523: JVM, not Java.
23:02:32 <ais523> fizzie: yes, that's why the names can be weird
23:02:37 <ais523> as they don't have Java names to use as a reference
23:02:42 <b_jonas> and there's also one I considered using for the syntax of a certain sort-of esolang I've been considering: "1" for 1-byte, "2" for 2-byte, "4" for 4-byte, "8" for 8-byte, "3" for 4-byte float, "7" for 8-byte float, "6" for 8-byte pointer, "0" for boolean, because this way they're distinct and give the approximate size of the mantissa in bytes
23:02:50 <shachaf> ais523: Can't you just mutate argv[1][0] or whatever and put what you like in there?
23:03:25 <ais523> shachaf: yes, but if mutating argv[0] doesn't affect ps output, I wouldn't expect mutating argv[1] to affect ps output either
23:03:51 <kmc> I think unixes where it does alter ps output look into the process memory
23:03:54 <kmc> it's n a s t y
23:04:14 <kmc> not sure about /proc/$PID/cmdline
23:04:25 <shachaf> ais523: Mutating argv[0][0] does change ps output.
23:04:36 <shachaf> But not the pointer argv[0], which I thought was the distinction you were making before.
23:04:51 <b_jonas> shachaf: what if you unmap the initial stack?
23:05:02 <ais523> so I guess that /proc/$PID/cmdline is looking at the memory backing the pointers that argv points into
23:05:04 <ais523> that would make some sort of sense
23:05:09 <shachaf> One time I got very confused by a program that used strtok to parse command line arguments.
23:05:12 <b_jonas> surely it won't segfault the kernel, linux is careful about that thing these days, but what does it show in cmdline?
23:05:22 <shachaf> ais523: Yes, that's what it does. I think the pointers aren't used for anything.
23:05:33 <shachaf> It's just nul-separated strings.
23:05:46 <ais523> b_jonas: there's a prctl option to set where the memory backing *argv is; presumably, based on shachaf's results, that could be used to set the entire cmdlien
23:06:28 <shachaf> ais523: But argv isn't limited to 15 bytes.
23:07:06 <ais523> shachaf: there are three separate program name things
23:07:15 <shachaf> I like how the POSIX-specified way of getting access to the environment (to pass to execve or whatever) is to write "extern char **environ;" in your program.
23:07:25 <b_jonas> ais523: the third is the filename remembered for the mapping?
23:07:46 <ais523> you have readlink(/proc/self/exe) (kernel's idea of executable image); orig_argv[0] (memory space in which the command line was passed); and the name of the program's main thread (settable via prctl)
23:08:06 <ais523> the last is the one that's limited to 15 bytes when set via prctl; I'm not sure whether it can exceed 15 bytes if it's set by the kernel on program start
23:08:10 <shachaf> ais523: There's also the AT_EXECFN in auxv.
23:08:31 <ais523> ah yes, although I'm not sure that the kernel can see that one if it's modified?
23:08:41 <fizzie> It would probably be hard for it to look at the pointers, since that vector is constructed by the libc; the initial process stack at _start is just the strings.
23:08:42 <shachaf> No, it's read-only I assume.
23:09:10 <b_jonas> fizzie: is that only for auxv, or also for argv?
23:09:21 <fizzie> Also for (the contents of) argv.
23:09:26 <shachaf> fizzie: No, the ABI gives programs an array of pointers at startup, I think.
23:09:35 <fizzie> shachaf: No, it doesn't.
23:09:39 <b_jonas> I've heard contradictory statements about this, I give up now
23:09:47 <fizzie> At least the x86-64 ELF ABI.
23:09:48 <b_jonas> I'll have libc or other libraries handle this
23:09:48 <shachaf> fizzie: How confident are you, on Linux amd64?
23:09:56 <fizzie> shachaf: Very, because I'm staring at the spec.
23:10:05 <fizzie> It's Figure 3.9: Initial process stack.
23:10:26 <fizzie> No, I just can't read.
23:10:38 <fizzie> Yes, there is an array of pointers there.
23:11:07 <b_jonas> and it's terminated by a null pointer?
23:11:13 <fizzie> It's just that there's no pointer to the array of pointers, that's what I was misremembering.
23:11:38 <ais523> they didn't want to get into three-star programming :-)
23:12:02 <b_jonas> so the libc startup routines create argc and argv, but not *argv or **argv?
23:12:11 <shachaf> I'm glad the spec agrees with my program.
23:12:21 <ais523> that's one of my favourite articles on c2, it inspired the name of an esolang
23:12:22 <b_jonas> shachaf: is your program x86_64?
23:12:47 <shachaf> b_jonas: argc and argv are passed by the kernel at (%rsp) and 8(%rsp)
23:13:11 <shachaf> I guess I should say at %rsp and at %rsp + 8
23:13:29 <fizzie> At 8(%rsp) there is the first pointer, as in argv[0].
23:14:01 <ais523> wow, apparently the C2 wiki need to be able to make "cross-domain" (actually to a different subdomain of itself, but still) XHR requests to work correctly?
23:14:03 <shachaf> Yes, I meant that argv points to that address.
23:14:19 <ais523> http://wiki.c2.com/?ThreeStarProgrammer for anyone interested, btw
23:16:34 <b_jonas> yeah, I remember I looked at that because you link to it from the 3-star programmer description page on esowiki
23:16:49 <b_jonas> I don't otherwise use the c2 wiki
23:16:51 <fizzie> https://zem.fi/tmp/f39.png is that table, just for the reference.
23:17:16 -!- Phantom_Hoover has quit (Quit: Leaving).
23:17:22 <ais523> nowadays most people think only of Wikipedia when someone says "wiki"
23:17:28 <ais523> but the older wikis are an important part of Internet history
23:18:03 <b_jonas> ais523: I most certainly don't, but I mostly think on _newer_ wikis than wikipedia
23:18:30 <shachaf> // argv: 8 bytes * (argc + 1), terminated with 0 pointer
23:18:30 <shachaf> // envv: 8 bytes * ?, terminated with 0 pointer
23:18:30 <shachaf> // auxv: 16 bytes * ?, terminated with AT_NULL (type 0) entry
23:18:42 <ais523> one thing I dislike is when I'm in #esoteric or #nethack or the like and someone says "the wiki" to mean Wikipedia rather than Esolang or NetHackWiki respectively
23:19:20 <fizzie> shachaf: Arguably, auxv is (16*N + 8) bytes long, at least according to that table.
23:19:21 <shachaf> Only nonsense people say that, though.
23:19:31 <ais523> on the subject of argv and friends being insane, I would like there to be a standard for command-line arguments and exit codes from programs, even if not everyone followed it
23:19:47 <fizzie> (The "Auxiliary vector entires..." are "2 eightbytes each", but the "Null auxiliary vector entry" is only "1 eightbyte".)
23:19:53 <ais523> this would mean that programs could opt-in to declaring they followed the standard, making them easier to use in an automated way without needing to special-case your code for every program
23:20:11 <shachaf> But I think the next eight bytes are guaranteed to be mapped so you can treat it as a 16-byte entry.
23:20:16 <ais523> BSD has a standard for return codes, that seems like a good starting point (and I typically try to follow it in my own code, but it's not very fine-grainedD)
23:20:30 <ais523> I'm not sure which BSD, probably all of them
23:20:41 <shachaf> It would be a funny joke to put that right on a page boundary.
23:20:43 <fizzie> It doesn't say in the table, but it might say it in the text. Certainly it's true in practice.
23:21:02 <shachaf> Is it always true in practice?
23:21:17 <shachaf> What if the environment and argv are empty?
23:21:32 <b_jonas> ais523: perl uses the convention that if the program exist with an unhandled exception, the exit code is max(errno & 0xFF, 1)
23:21:38 <shachaf> Oh, there are always going to be other things in the information block.
23:21:52 <ais523> b_jonas: ugh, I hate that convention
23:21:53 <b_jonas> which is useful because the errno can give some useful information when the exception message is not too detailed
23:22:14 <ais523> because errno has more than 256 possible values and as such you're making every single element of the exit code space ambiguous (other than 0)
23:22:26 <ais523> in particular, you have nowhere to return non-errno-based failures
23:22:27 <b_jonas> for proper programs, I prefer if the errno is 1 for ordinary failure, 2 for wrong usage or exceptional failure
23:22:33 <ais523> (I guess you could map them onto the closest errno value)
23:23:03 <ais523> in the BSD system, 64 is used for wrong usage, and is not used in any other circumstance
23:23:05 <ais523> I like that sort of guarantee
23:23:11 <b_jonas> ais523: no it doesn't. it's still under 256 on unix.
23:23:30 <b_jonas> I mean, technically you can assign any int to errno, but the defined errno codes only go up to something between 125 and 256
23:23:38 <b_jonas> I don't know the exact limit
23:23:40 <ais523> hmm, it goes up to 133, but wraps at 127 I think
23:23:44 <b_jonas> it's syscalls that go way past 256
23:23:54 <b_jonas> ais523: hmm, does perl wrap it to 7 bits? let me test
23:24:16 <ais523> no, wait (which is what returns the exit code) wraps it to 7 bits
23:24:25 <b_jonas> ``` perl -e '$!=0x81;die'; echo $?
23:24:32 <b_jonas> ``` perl -e '$!=0x89;die'; echo $?
23:24:47 <b_jonas> I claim this for unix, I don't know what happens on windows
23:25:03 <ais523> ``` perl -e 'kill $$, 9'; echo $?
23:25:09 <ais523> ``` perl -e 'kill 9, $$'; echo $?
23:25:10 <HackEso> bash: line 1: 58 Killed perl -e 'kill 9, $$' \ 137
23:25:10 <b_jonas> it's only the shell the maps signal k to 128+k in the shell parameter $?
23:25:26 <ais523> good thing HackEso protects me from that sort of error :-)
23:25:28 <b_jonas> everything other than the shell support proper 8-bit exit codes, both on the exit side and the wait side
23:25:34 <b_jonas> though sometimes the documentation claims otherwise
23:25:35 <shachaf> Man, I sure wish I could statically link all my Linux programs.
23:26:00 <ais523> even the ones that load dynamic libraries at runtime?
23:26:15 <shachaf> I mean, I wish the platform ABI didn't require you to load dynamic libraries at runtime.
23:26:16 <ais523> I think there are some programs that even compile code from source while they're running, then dlopen the resulting executables
23:26:33 <shachaf> You could use dlopen and still statically link, probably.
23:26:36 <b_jonas> ``` perl -e 'system "perl", "-e", "kill 9, $$"; printf "wait code %04X,\n", $?;'
23:26:39 <shachaf> If you had your own implementation of dlopen.
23:26:54 <b_jonas> ``` perl -e 'system "perl", "-e", "kill 9, \$"; printf "wait code %04X,\n", $?;'
23:26:55 <HackEso> syntax error at -e line 1, at EOF \ Execution of -e aborted due to compilation errors. \ wait code FF00,
23:26:59 <ais523> b_jonas: you need to escape the $$
23:27:00 <b_jonas> ``` perl -e 'system "perl", "-e", "kill 9, \$\$"; printf "wait code %04X,\n", $?;'
23:27:03 <ais523> the inside perl killed the outside perl
23:27:18 <b_jonas> ``` perl -e 'system "perl", "-e", "\$!=0x89; die"; printf "wait code %04X,\n", $?;'
23:27:19 <HackEso> Died at -e line 1. \ wait code 8900,
23:27:23 <shachaf> I think OpenGL is the biggest culprit?
23:27:33 -!- Sgeo_ has joined.
23:27:35 <shachaf> Unfortunately writing GPU code is just ridiculous on every platform.
23:27:37 <b_jonas> upper byte of the wait code is the exit code, lower byte is the signal, and there are two or three other bits stowed in there
23:27:50 <ais523> I think that if you're statically linking libc and friends, you probably want to use LTO to take advantage of that
23:28:08 <b_jonas> the signal and the exit code are the ones you usually care about, unless you're ptracing something
23:28:22 <ais523> anyway, we now have a problem, in that there are /two/ incompatible exit code standards now
23:28:24 <ais523> which is worse than having one
23:28:27 <b_jonas> or doing job control, which needs to care about stopped children
23:28:29 <shachaf> ais523: Do you like Penguins?
23:28:54 <ais523> shachaf: penguins as in the animals, or is Penguins some piece of software or the like that I don't know about?
23:29:34 <b_jonas> ais523: there are also programs with custom exit codes defined. curl the command-line program actually documents what exit codes correspond to each kind of error. I even used that in a script that calls command-line curl and wants to retry for some errors but give up for others.
23:29:39 <ais523> I don't eat chocolate nowadays, but back when I did I didn't /dislike/ Penguins but there were many sorts of chocolate I preferred, so I hardly ever ate them
23:29:51 <shachaf> Why don't you eat chocolate?
23:30:01 <ais523> (don't eat = I avoid things that are primarily chocolate, I'm fine with chocolate traces)
23:30:11 <ais523> also I gave it up for a few months by accident/coincidence and just never started again
23:30:32 <b_jonas> ais523: do you have an estoeric language, other than feather, that does something like time travel?
23:30:33 <ais523> I don't think it's particularly good for my health and I was doing fine without it
23:30:53 -!- Sgeo__ has quit (Ping timeout: 244 seconds).
23:31:17 <ais523> b_jonas: I think the closest you get is nondeterminism in the NP sense
23:31:20 <shachaf> ais523: Anyway LTO seems like a different level of detail than what I was thinking about.
23:31:20 <ais523> e.g. Nellephant, Precognition
23:31:37 <shachaf> The point is that I want to make a Linux executable, in whatever language, which is self-contained. I might not use libc at all.
23:31:38 <ais523> the word "precognition" refers to a time-travel effect even if the language Precognition can be implemented without it
23:31:45 <shachaf> So I just want to know what ABIs it needs to conform to.
23:32:16 <ais523> shachaf: x86_64 (or whatever) kernel ABI would be the only relevant one if you have control over all the code in your executable
23:32:29 <ais523> you can use whatever you want for an ABI internally, and with no libraries, the API isn't relevant
23:32:38 <shachaf> ais523: OpenGL or Vulkan is also relevant if you want to write code that uses the GPU.
23:32:39 <b_jonas> shachaf: just because you don't use libc you can still use some other startup standard library that is distributed with the language. rust actually has one. C++ has one too but that one is pretty close to libc.
23:32:49 <shachaf> And that's a huge userspace mess.
23:32:58 <ais523> shachaf: oh right, you also have the API for any userspace programs you want to communicate with
23:33:13 <ais523> from Web of Lies I learned that X mostly works over sockets
23:33:15 <shachaf> X is a protocol that you can implement yourself.
23:33:22 <kmc> have fun with that
23:33:24 <shachaf> ...Except if you want accelerated rendering.
23:33:28 <b_jonas> shachaf: which side? server or client?
23:33:39 <shachaf> kmc: I'd almost rather implement the X protocol myself than use Xlib.
23:33:52 <ais523> I assume there's enough information to implement either yourself, but also strongly suspect that the client end of the connection is the easier to implement
23:33:54 <shachaf> You also can't really use xcb without Xlib.
23:34:05 <shachaf> b_jonas: The client, of course.
23:35:02 <shachaf> Now they're releasing Wayland which is in many ways even worse, and you're still limited to a single library.
23:35:03 <ais523> sshd logically has to contain an implementation of the server end otherwise ssh -X wouldn't work (possibly unlike ssh -Y, -X needs some understanding of the commands passing overe it), but my guess is that it just delegates almost everything to the X server on the same machine
23:35:22 <shachaf> Except now the library is more complicated and tries to do more things for you that you don't want to do.
23:35:50 <ais523> doesn't Wayland put much of the logic into the client exectuable? that would explain the need for a complex library
23:36:26 <shachaf> Well, for example the Wayland library requires you to do everything with a lot of callbacks instead of just giving you event data like Xlib.
23:36:31 <fizzie> Well, soon there won't be any X, right?
23:36:52 <ais523> X will be supported pretty much forever for compatibility reasons
23:36:59 <fizzie> ais523: "Once we [Fedora] are done with this [transitioning to Wayland] we expect X.org to go into hard maintenance mode fairly quickly. The reality is that X.org is basically maintained by us and thus once we stop paying attention to it there is unlikely to be any major new releases coming out --"
23:36:59 <shachaf> ais523: I'm not objecting to a complex library existing, but I do object to a complex library that you have to use.
23:37:10 <ais523> there's likely already an X server written in Wayland to act as a compatibility buffer between the two
23:37:21 <shachaf> If you're going to be forced to use a library, there should be a minimal simple library that the optional complex library is built on top of.
23:37:27 <fizzie> They'll support XWayland "forever", sure.
23:38:01 <shachaf> I don't object to deprecating X but a bunch of things in Wayland seem either not ready or just bad.
23:38:29 <ais523> one thing I discovered by accident is that SDL is capable of writing to framebuffers directly
23:38:43 <ais523> and thus can run and display graphics without access to X, Wayland or friends
23:38:51 <fizzie> mplayer can do that too.
23:38:55 <ais523> but this only works in fullscreen mode and there are a lot of graphicial artifacts
23:39:01 <b_jonas> some of the things wayland does make sense, but it also runs on a lot of stupid marketing about things where it's not actually better than X, I think
23:39:03 <fizzie> It can also do accelerated video on MGA cards without X.
23:39:14 <ais523> presumably SDL doesn't use the GPU at all in that configuration
23:39:26 <fizzie> (The G200/G400/G450/G550 ones.)
23:39:42 <ais523> b_jonas: the main alleged argument for Wayland is that it doesn't try to serialise the drawing commands over a socket, allowing it to be simpler
23:39:58 <ais523> I'm not sure I agree with this, but it's not an obviously ridiculous argument
23:40:20 <b_jonas> ais523: yeah, but X doesn't do that either, at least with modern programs and local X server
23:40:20 <fizzie> ...well, if you can call it "accelerated video", AIUI the only accelerated bit is the colorspace conversion, the card provides a YUV overlay.
23:40:50 <b_jonas> you can use X that way, but most programs these days don't, I believe
23:40:55 <ais523> b_jonas: it uses a unix domain socket I think rather than a TCP socket
23:41:03 <ais523> it's still /technically/ a socket but I doubt there's much loss at that point
23:41:13 <kmc> yeah i saw someone who had a tiling WM esque setup using tmux windows and mplayer fbdev
23:41:14 <b_jonas> ais523: not even that I think
23:41:23 <kmc> now all you need is a web browser
23:41:32 <ais523> well it uses a unix domain socket when running under web of lies, but maybe it detected that it couldn't talk to X the normal way?
23:41:41 <b_jonas> I meean, there's still a socket connection for control info, but not for all the drawing command data
23:42:02 <fizzie> kmc: There was at least one browser that supported rendering mostly as text, then overdrawing bitmaps into the framebuffer at the right spots.
23:42:09 <ais523> b_jonas: ah, how is that sent? shared memory?
23:43:19 <fizzie> Hmm, it at least has a framebuffer driver, but maybe that's in the more conventional style where it draws the text there as well.
23:43:23 <b_jonas> ais523: I think X gives the programs some sort of access to the GPU, with GPU permissino control, maps some GPU memory thing into the visible window, and the programs use toolkit libraries that, below heavy levels of abstractions and in the common fast case, ask the GPU to render the actual graphics into that GPU memory
23:43:45 <ais523> b_jonas: oh, the Direct Rendering Manager
23:43:50 <ais523> I have no idea how that thing works
23:44:04 <ais523> (just that people keep getting annoyed at it because it has the same acronym as Digital Rights Management and both are tied up with graphics/video)
23:44:05 <b_jonas> the X socket itself is still used to initiate everything, but I don't see a problem with at
23:44:42 <shachaf> I wrote my own UI library that renders directly with Xlib and OpenGL.
23:44:59 <shachaf> Well, it doesn't do very much UI right now.
23:45:31 <kmc> is that the emscriptenized thing you were showing me?
23:45:43 <b_jonas> ais523: that's not an accident of course. if you want to allow the user to read e-books that they don't own but only have a license to read but don't want to allow them to copy their contents, then you can't just serialize the drawing commands for the e-book through a socket to X.
23:46:07 <shachaf> I have an SDL backend which more or less supports HTML, though it's not that great.
23:46:07 <ais523> I would love it if there were a portable UI library where you gave it a description of what elements you wanted in your UI and it translated that to appropriate native (or native-looking/behaving) GUI/TUI for every platform
23:46:23 <ais523> I'm surprised it hasn't been written yet, the main issue may be that a number of the backends would be moving targets
23:46:26 <shachaf> I might make a proper emscripten/web backend eventually rather than using SDL.
23:46:28 <b_jonas> movies too, but for those you also need the efficiency.
23:46:28 -!- arseniiv has quit (Ping timeout: 272 seconds).
23:46:44 <ais523> but more likely it hasn't been written because managers care about their program looking the same on every platform more than they care about their program fitting into the platform
23:46:45 <b_jonas> ais523: there are such portable libraries,
23:47:03 <b_jonas> but the problem is that what the graphics environments want to do are moving targets, so every such library gets obsolate
23:47:14 <ais523> the closest I've seen is Java AWT, which has been deprecated for years and doesn't really work
23:47:23 <shachaf> ais523: I think Google' Flutter is a recent library with a goal like that.
23:47:30 <b_jonas> and eventually they do get improved, but everyone keeps using the old version of gtk (2 rather than 3) just like how they're using the old version of python (2 rather than 3) so the new things can't be added
23:47:48 <shachaf> By the way, chet out https://makepad.github.io/makepad/
23:47:57 <shachaf> That's written in Rust and renders all the text and everything with WebGL.
23:47:59 <ais523> b_jonas: isn't that because Gnome 3 was a disaster? I really dislike the way its native programs behave
23:47:59 <b_jonas> there are several such portable libraries, not only gtk, but also wx and tk which are both even more obsolate and, from a modern point of view, badly designed, than gtk
23:48:09 <shachaf> It looks surprisingly good for a web thing that does that.
23:48:11 <ais523> no doubt it's possible to use GTK 3 without repeating the same bad decisions, but Gnome 3 will have rather tainted it
23:48:16 <b_jonas> ais523: no, I think gnome 3 was a disaster for reasons other than that
23:48:31 <b_jonas> I don't think that's connected to gnome 3 much
23:48:37 <ais523> I have to use Gnome 3 at work, I hate it
23:48:43 <shachaf> Oh man, what's with the GTK3 native client-side decorations (ncsd) thing?
23:48:58 <shachaf> Ubuntu disables it automatically if you're using a window manager other than GNOME.
23:49:12 <ais523> it's bad enough that it forced me to Cinnamon on my laptop, because even though I dislike how bad Cinnamon's performance is it is at least possible to customize it into being usable
23:49:15 <shachaf> But the way they do it is with a .so that they add to LD_PRELOAD (!!!)
23:49:19 <kmc> everything is bad
23:49:56 <ais523> bad enough to be LD_PRELOADed out by the operating system :-D
23:50:11 <ais523> hmm, does this mean that you have terrible UI when you run programs with sudo?
23:50:18 <shachaf> ais523: They have access to the code! Don't they have patches for every package anyway?
23:50:41 <ais523> shachaf: it could be meant for, e.g., locally compiled software, snaps, etc.
23:50:41 <b_jonas> the hackenv environment is actually quite short
23:50:52 <ais523> snapd is something that I would benefit from knowing how it works, I think
23:51:03 <fizzie> shachaf: I don't think Flutter is super-focused on making applications "look native" on the platforms it supports. Maybe for the sort of behavioral things, but I think you get the same widgets you pick on all platforms you target.
23:51:04 <ais523> it may be an excellent idea or a terrible idea but I don't know enough about it to tell
23:51:14 <ais523> I have the suspicion, though, that if I understood it I would have a strong opinion on it
23:51:24 <shachaf> fizzie: Oh, that was the impression I got but I never used it.
23:51:27 <fizzie> Since it does the rendering on its own, with Skia.
23:52:04 <shachaf> fizzie: I thought they rendered the widgets to look like each platform's widgets, though.
23:52:56 -!- ais523 has quit (Remote host closed the connection).
23:52:57 <fizzie> Hm, maybe. I know it's got two widget sets (Material Design, and iOS-y), so maybe the default could be to pick the "natural" one.
23:53:09 -!- ais523 has joined.
23:53:12 <shachaf> fizzie: Oh, maybe that's all I as thinking of.
23:53:41 <shachaf> fizzie: I remember reading something about how they have to chase a moving target to match iOS widget look. Maybe it's just that rather than a general cross-platform thing.
23:54:07 <fizzie> All I know about Flutter is what I've overheard, there's been a lot of talk about it lately.
23:54:34 <fizzie> (Where "lately" means "over the last year or so".)
23:54:35 <shachaf> I wish platforms weren't all about maximizing lock-in with their nonsense bad APIs.
23:54:43 <shachaf> This is what every single platform is about.
23:54:50 <b_jonas> how does that even work these days, when modern programs don't even use any sort of standard widgets, not even from toolkits, but instead use their stupid custom reinvented checkboxes and calendar widgets where you can only enter a date by clicking on arrows with the mouse and text input boxes that try to interpret your raw keyboard presses directly?
23:58:44 <fizzie> shachaf: Text selected in makepad doesn't end up in the PRIMARY selection. :/
23:59:24 <b_jonas> in webpages, first the fashion was custom calendar widgets and custom dropdown boxes, then input boxes that's pre-filled with a description of what the input box should contain that it's supposed to delete when you start entering text but can't really do that because the javascript api doesn't do,
23:59:24 <shachaf> fizzie: Man, that's the one nitpick I pointed out to someone when I was telling them about this the other day.
23:59:36 <shachaf> fizzie: I wonder whether it's doable, by making a hidden buffer and selecting the text in it.
23:59:51 <fizzie> The rounded corners of the selection highlight are nice, though.
23:59:53 <shachaf> fizzie: Ctrl-C/Ctrl-V does work, which surprised me a bit.
00:00:02 <shachaf> fizzie: Did you press Alt?
00:00:21 <b_jonas> then later it became fake textareas that try to handle keypresses, and now it's password fields where the javascript tries to decide whether to reveal the password or not, instead of leaving that to the browser.
00:00:31 <fizzie> I think the text looks kind of blurry here.
00:00:55 <shachaf> fizzie: Hmm, as far as I know it's using MSDF trickery which should allow for pretty sharp text.
00:01:37 <shachaf> Oops, I shouldn't use acronyms. I mean multichannel signed distance field representation of typefaces.
00:02:00 <fizzie> I don't know how I could get a really comparable view. It's not exactly fair to compare it to a terminal window using a bitmap font, when it comes to crispness.
00:02:57 <shachaf> I wonder whether you're using a high-DPI screen and it's rendering at a lower resolution and then the browser is scaling it up, or something.
00:03:00 <b_jonas> and yes, custom checkboxes and option buttons too, although for those I can partially fault browsers, because there was no way to make the default check boxes and option buttons look reasonable on a dark background, and basically EVERY website forever have always overridden the background color, so it's something that browsers should have anticipated to allow
00:03:09 <ais523> b_jonas: after review of the BSD exit code standard, I've concluded that it's better than returning errno in almost every way
00:03:25 <b_jonas> ais523: what's this BSD exit code standard? can you point me to a description?
00:03:32 <ais523> because most of the exit code reasons it envisages aren't tied to errno failures at all, and for those that are, it returns what it was doing at the time of the error rather than the immediate cause
00:03:36 <ais523> http://www.manpagez.com/man/3/sysexits/
00:04:19 <ais523> even then, I find the BSD version is far from perfect, it's missing a lot of things that you'd want and doesn't differentiate well enough
00:04:48 <ais523> but, e.g., exit(ENOENT) is not much useful working out what went wrong, you'd definitely prefer the sysexits code in that case
00:06:26 <b_jonas> well, there'll always be specific programs or future needs that can't be covered by any of these standars
00:06:27 <fizzie> shachaf: I don't know. Probably not, it's not a huge-DPI screen; I do xrandr --dpi 104 as a compromise since there are two screens of different density. Actually, if I turn the browser scaling up to 150% the text actually looks pretty sharp (what?), although overly big. At 100% less so.
00:06:48 <ais523> say you're writing grep, what do you return if no matches were found?
00:07:03 <b_jonas> and in some cases, instead of exit code handling, you want command-line flags or other config to tell the program to consider certain errors as successes
00:07:16 <ais523> I think 1 should be added as an additional exit code with a similar meaning to "no"
00:07:32 <shachaf> fizzie: Hmm, I guess it wouldn't be shocking if this was an artifact of the MSDF rendering.
00:07:33 <ais523> which is how most programs use it already
00:07:59 <b_jonas> ais523: 1 if no matches, 2 if the input files aren't readable and you haven't ignored that with -s or something, 3 if the arguments are wrong or the regex has syntax errors
00:08:11 <ais523> https://man.openbsd.org/grep#EXIT_STATUS
00:08:20 <b_jonas> and yes, that's not a case of errno exits
00:08:33 <ais523> grep doesn't consider failure to find an error, but exits with nonzero status anyway
00:08:35 <b_jonas> the errno exist are useful only for quick and dirty scripts, they're not something you should use in serious programs
00:08:41 <b_jonas> but for typical one-liner programs, they work
00:08:54 <ais523> I guess we have a separate category of "failures"
00:09:05 <ais523> nothing went /wrong/ but the request turned out to be impossible
00:09:34 <b_jonas> ais523: yeah, that more or less agrees with what I said, 1 for normal false, 2 for actual error
00:09:39 <b_jonas> 2 or higher for actual error that is
00:09:48 <b_jonas> because sometimes you want to distinguish different errors
00:10:05 <ais523> hmm, does this mean we need a variant on false(1) that returns 69 rather than 1?
00:10:05 <fizzie> These days you'll probably also want the exit code equivalent of HTTP 451.
00:10:26 <b_jonas> and yes, I do understand that that clashes with errno exit, because 1 is EPERM, which is a reasonably common errno
00:10:28 <ais523> fizzie: 77 probably covers that in the sysexits system
00:10:30 <ais523> although it's a bit more general
00:10:58 <ais523> that said, I can't think of many executable programs that refuse to do something because it's illegal
00:11:07 <ais523> the only example that comes to mind is Photoshop refusing to open images of money
00:11:26 <fizzie> At the office, there's a monitor in one corridor, it's showing a video that shows HTTP error codes as illustrated scenarios at a restaurant, or something along those lines, as far as I have managed to figure out based on three-ish glances of a second each.
00:11:48 <ais523> ooh, also PDF readers that obey the "don't print this", etc., flags in the PDF file (which are just flags that can blatantly be ignored by a reader if it isn't programmed to respect them)
00:11:58 <b_jonas> ais523: some programs didn't have rar/mp3/gif encoder compiled into them because of patent or similar legal reasons
00:12:07 <b_jonas> does that count as "refusing" to do something?
00:12:11 <ais523> fizzie: just the 4xx codes, or all of them? :-D
00:12:25 <ais523> b_jonas: oh, that's a good point
00:12:29 <b_jonas> ais523: also some websites refuse to let you register if you're younger than a certain age limit
00:12:38 <ais523> the crypto export restrictions are another example of that
00:12:42 <fizzie> ais523: I've seen 404 not found, 300 multiple choices and one more I don't remember, which was probably a 4xx too.
00:13:03 <b_jonas> of these, only the rar encoder limitation remain
00:13:08 <ais523> this is totally the sort of thing that makes sense to have in a random corridor at Google :-D
00:13:17 <fizzie> The 404 not found was an empty table, for the 300 I didn't see the actual thing, just the "title card", and for the last one there were two people sitting around the table but I forget what they were doing.
00:13:35 <ais523> b_jonas: the crypto restrictions are a real bother because it's hard to figure out what counts as crypto sometimes
00:13:48 <b_jonas> and ebook readers and even browsers that refuse to save a video
00:13:53 <fizzie> Oh, I remember now! It was 418 I'm a teapot, and it wasn't two people, it was just one person, but there was a teapot on the table.
00:14:10 <ais523> 418 isn't the most useful status code to know :-D
00:14:22 <fizzie> I don't know how the scene continued, I've only been in a hurry to a meeting, should probably stop and actually watch them.
00:14:24 <b_jonas> ais523: yes, but didn't the legal situation in the US actually change there in a way that made most of that crypto problem disappear?
00:14:33 <ais523> I assume 204 would be people ordering something, being brought an empty plate, and they left happy because it's exactly what they ordered
00:14:46 <ais523> b_jonas: it's less insane than it was but the rules still exist
00:15:03 <kmc> it's now only restricted for countries on the naughty list
00:15:13 <ais523> and aren't specific to the US either, basically the old situation was insane rules in the US and slightly less insane rules elsewhere, the current situation is for the slightly less insane rules to be everywhere
00:15:18 <b_jonas> ais523: but are those rules that actually distinguish strong crypto software from software in general?
00:15:43 <b_jonas> I know there are still embargoes to export software to certain countries, such as North Korea or Cuba, but I don't think crypto vs non-crypto matters there
00:15:45 <ais523> b_jonas: AFAICT the rules are mostly based on the end user's use of the software
00:16:09 <ais523> so they wouldn't ban software with a large amount of dead code that implemented a strong crypto algorithm as long as users weren't meant to discover it
00:16:14 <b_jonas> ais523: the end users's use of the software? how the heck am I supposed to know that?
00:16:15 <ais523> I'm not sure on this, though, not being a lawyer
00:16:23 <ais523> b_jonas: I called them insane for a reason :-P
00:16:44 <ais523> I think they intend to make things like NetHack legal even if they use strong CSPRNGs
00:17:16 <b_jonas> ais523: do they still have rules where if you print the source code on paper, send it in mail, and scan and OCR it in Europe, it's no longer illega?
00:17:29 <ais523> I don't think so? besides, these rules apply to Europe too
00:17:42 <ais523> if they /only/ applied in the US I wouldn't care, I don't plan to go there
00:18:06 <b_jonas> ais523: you don't plan to go there, but you may want to use software that someone in the US writes, and you want them to be able to send the software to you
00:18:28 <fizzie> I didn't know about https://www.google.com/teapot
00:18:44 <fizzie> (It just returns a 418 with an appropriate body.)
00:19:09 <ais523> b_jonas: I think you're missing some of my inherent lawfulness; I am worried about /accidentally/ breaking crypto export laws in some piece of code I write
00:19:51 <b_jonas> ais523: but do you care about other people breaking the law when you ask them to send you software, even if you aren't breaking the law for receiving the software?
00:20:25 <ais523> fwiw, I believe that the current US laws on crypto require you to send a copy of any crypto code to a particular email address before you're allowed to export it
00:20:43 <b_jonas> ais523: hehe, that also sounds insane
00:20:53 <ais523> if it's closed-source you need to get permission before selling it, if it's open-source you don't need the permission before distributing it but still need to send a reference to it to the official address
00:22:14 <ais523> b_jonas: I don't like tricking people into breaking the law, but if they don't care about the law in question and are willing to risk any consequences, and I also don't personally consider the law to be useful/good, I find it hard to get worked up about their law breach happening to work to my benefit
00:23:41 -!- MDead_ has quit (Quit: Going offline, see ya! (www.adiirc.com)).
00:24:17 -!- MDead_ has joined.
00:24:17 <ais523> hmm, after thinking about this policy, it also probably needs adjusting for the capability for consent of the person in question
00:24:41 -!- MDead_ has quit (Remote host closed the connection).
00:24:42 <b_jonas> does Canada have such crypto-specific export restrictions too?
00:25:02 -!- MDude has joined.
00:25:45 <ais523> oh wow, the Wasenaar Arrangement has its own website: https://www.wassenaar.org
00:27:45 <b_jonas> ais523: that's written in management speak or politician speak or some such language. I don't understand a word.
00:27:52 <b_jonas> is there a language switcher somewhere?
00:28:43 <ais523> but if there is, the best you're likely to get is Hungarian politician-speak rather than English normal-person-speak
00:29:04 -!- xkapastel has quit (Quit: Connection closed for inactivity).
00:31:04 <b_jonas> nope: https://www.wassenaar.org/about-us/#faq says "The working language of the Wassenaar Arrangement is English and no official translations in other languages are provided by the Secretariat."
00:31:13 <b_jonas> but it's only what they call English
00:31:39 <ais523> hmm, page 92 of the Wassenaar Agreement "List of Dual-Use Goods and Technologies and Munitions List", the introduction to "Information Security", says "Not used since 2015"
00:31:44 <b_jonas> though with the sitemap I can get to other pages that are slightly more readable than the front page
00:31:52 <ais523> and the last time I checked the laws on this was from a source written before 2015
00:32:07 <ais523> this is potentially really good news, but I'm not sure exactly what it applies to
00:33:33 <b_jonas> for my vacation in may, I read some of the airplane luggage regulations, which tell things like that I'm not allowed to put billiard clubs or throwing stars into my hand luggage
00:33:53 <b_jonas> they do also tell more useful information, like about carrying batteries
00:35:34 <b_jonas> in particular, they basically say that all the lithium batteries must be either inside a device that uses it (so that the chasis of the device protects it mechanically) or in the hand baggage and its terminals covered by isolation tape (that's not the exact wording they used, but the sense)
00:36:15 <b_jonas> which sounds quite reasonable actually, provided you buy into the constraint that they really want to allow people to watch movies on their notebooks on the airplane
00:36:36 <b_jonas> the announcements on the plane also changed:
00:36:39 <ais523> what's a billiard club? the only English meaning I can think of for the noun phrase would be a club of people (or building housing such a club) that play billiards, either would be hard to fit into hand luggage
00:37:15 <ais523> is this a mistranslation from Hungarian, or something I was formerly unaware of?
00:38:25 <b_jonas> they talk a lot more about batteries, like warn people that you mustn't charge your lithium batteries during takeoff and landing, whereas they no longer care much about radio interference that your devices use (whether mobile phone protocols, wifi, bluetooth, etc; basically they recognized that with today's electronics it's no longer a practical problem, people won't use vintage equipment on the
00:38:31 <b_jonas> airplane, but they still reserve the right to ask you to turn off your devices in exceptional cases)
00:38:55 <b_jonas> ais523: the long stick that a player uses to hit the balls in the billiard pool game
00:39:36 <b_jonas> typically longer than a meter and rigid and a single peace, so it's practically impossible to get it into your hand luggage
00:39:41 <ais523> oh, that's called a "cue" in English
00:39:58 <ais523> normally "pool cue" or "snooker cue" because nobody plays billiards nowadays, but I guess "billiard cue" would be understandable
00:40:16 <b_jonas> they forbid it for any of the related games
00:41:05 <ais523> pool is probably more commonly played in both the US and UK because it's a common pub game, but snooker is more /popular/ in the UK, e.g. major snooker tournaments are televised on major channels and lots of people watch them
00:41:07 <b_jonas> you can carry nail clippers though
00:41:30 <b_jonas> ais523: yeah, pool is the sport people play, snooker is the one they watch in television
00:43:03 <b_jonas> like how in the weekend, I watched the Red Bull Air Race, where the main event is a airplane aerobatics obstacle course speed race, which is a sport that very few people practice, but much more want to look at it, so there was a crowd of spectators
00:43:22 <b_jonas> they even had a helicopter aerobatics demonstration as a side event, which is even crazier in this respect
00:45:35 <b_jonas> and as for luggage rules, on the public transport buses here, I often see (on particular parts of the city) people carrying adult hockey or fencing equipment or large musical instruments, which are technically against the rules of the transport company, but nobody actually cares about those particular rules or enforces them, so they didn't bother to update the rules to match the reality
00:46:55 <b_jonas> the rules also say that you mustn't eat on the buses, and that you can carry dogs either inside a box or (on a leash and with a muzzle) and only one unboxed dog per vehicle. these too are rules that people often break and they're basically never enforced.
00:48:02 <b_jonas> I think it's actually one dog per carriage for trams and metros
00:48:04 <ais523> on a few occasions I've seen stray (or at least no-accompanying-owner) dogs use the UK public transport on their own
00:48:38 <ais523> nobody attempts to charge them or check their tickets, so they get a discount compared to humans
00:48:42 <b_jonas> ais523: I haven't seen those on buses here, though I have seen dogs that follow an owner but don't much obey them
00:49:13 <b_jonas> ais523: does anyone attempt to get them off the vehicles? that sometimes happens with homeless people here
00:49:21 <ais523> I haven't seen it often enough to know whether the dogs had any idea what they were doing, but have seen anecdotes from other people that some dogs do the same journey repeatedly and thus have worked out some method to know what stop they want
00:49:36 <ais523> b_jonas: not really, I don't think
00:49:42 <b_jonas> I've never seen it happen with dogs, because the kind of people who carry those big out of control dogs are intimidating and the controllers wouldn't want to deal with them
00:50:02 <ais523> in London, if someone starts begging on an Underground train, they change the electronic signs to tell people not to give them monry, that's one method of trying to get them off the vehicle
00:51:05 <b_jonas> ais523: that doesn't sound surprising, there are usually lots of clues that let you figure out where to get off if you have travelled a lot in the same location,
00:51:23 <b_jonas> except sometimes in underground tunnels and a few confusing places
00:52:13 <b_jonas> which is why I can usually get off at the right place even if I'm reading a book, unless the book is VERY interesting, or if it's cold and the windows are completely opaque from dew, and blind people can get off fine too
00:52:51 <ais523> <ais523> hmm, page 92 of the Wassenaar Agreement "List of Dual-Use Goods and Technologies and Munitions List", the introduction to "Information Security", says "Not used since 2015" ← ugh, apparently it's just the specific line in question that's not used since 2015, not the entire section
00:52:52 <b_jonas> of course it's getting easier now that buses have gps-based trackers connected to the automatic voice announcement that *usually* get the stations right without the driver having to intervene
00:53:06 <ais523> like, they deleted the line entirely and that's a way of saying "this line intentionally left blank" to not throw off the numbering
00:53:48 <b_jonas> changing the sign when people are begging => wow, I've never seen that
00:55:21 <b_jonas> there's a person who's regularly in the Kálvin tér metro station, usually either in the M3 platform or in the tunnel between the M3 or M4 platforms (he can't be on the M4 platform itself because that always has guards on it because the M4 is driverless)
00:55:34 <b_jonas> he's making terribly annoying noises with a fiddle
00:55:49 <b_jonas> I wish someone got him out of there or silenced him, but no
00:56:12 <fizzie> I don't think they really do that super-consistently, at least on the stretch I'm at.
00:56:19 <b_jonas> and no, he doesn't seem to be asking for money to stop making the noises, because I do often see people giving him money and he doesn't stop the noise when he gets them
00:56:38 <fizzie> They do have a recorded announcement, though. "There are beggars and buskers operating on this train. Please do not encourage them by giving them money."
00:57:08 <b_jonas> fizzie: well sure, because the people who beg know that the transport company doesn't want them to be their, so they're stealthy, they don't attract attention of the driver or controllers
00:57:39 <fizzie> A lot of the times the people who do the "play one folk song during the tmie between the stations" thing go from car to car using the "danger, do not use these doors" doors.
00:57:46 <fizzie> Which I presume is for avoiding attention.
00:58:04 <b_jonas> and yes, begging for money or selling stuff without explicit permission is also explicitly against the transport company rules, even in the metro platforms, and that is sometimes enforced
00:58:25 <b_jonas> but it doesn't seem to be enforced in the case of this particular man in Kálvin tér
00:58:39 <fizzie> TfL has a registered busker program, though not on the trains, just on some specifically designated locations at stations.
00:58:42 <ais523> in the London Underground busking is allowed at specific locations in *stations*, presumably as long as you're good enough
00:58:47 <ais523> they're circles marked on the ground
00:58:51 <ais523> oh, I see fizzie said that first
00:59:01 <fizzie> ais523: They do auditions and all.
00:59:06 <fizzie> https://tfl.gov.uk/corporate/about-tfl/culture-and-heritage/busking
00:59:26 <b_jonas> I don't think that happens here in areas that belong to the platform company,
00:59:50 -!- atslash has quit (Quit: This computer has gone to sleep).
01:00:09 <b_jonas> but performers are allowed in some public areas like streets or underground passages that don't technically belong to the transport company but are still hubs that are very hard to avoid for many people going that way
01:00:21 <b_jonas> I think even they're not allowed to be very distracting, but they are
01:01:07 <ais523> in at least one station in Birmingham there's a permanently installed piano, with instructions only to play it if you're sufficiently good at the piano
01:01:17 <b_jonas> one example is a certain group of people who do music with siging and shouting with some christian evangelism theme in the evenings in a part of the Keleti pu underground passage
01:01:23 <ais523> it turned out to be a pretty simple and cheap (in a relative scale) way to give a nice variety of music for the station for free
01:01:28 <fizzie> There's been a lot written about the privatization of public space in London recently, a lot of the places with the new developments have "public" squares and the like which aren't actually public land, it's just a deal they've done to get planning permission to allow the public some level of access.
01:01:54 <ais523> (I've never seen anyone ask for money for playing it, and it tends to get played by random members of the pubilc waiting for a train)
01:01:56 <fizzie> But the landowners still reserve the right to move "undesirable" elements out, and of course they don't list their own rules and regulations anywhere.
01:02:20 <fizzie> I think the Pancras Square where our office is is one of those private-public places.
01:02:44 <b_jonas> there was also an american style country music singer, with the stereotypically appropriate hat, in the Móricz underpass. I found that odd.
01:04:19 <b_jonas> but I guess it makes some amount of sense: if we can have jazz and blues bands, why not country music singers?
01:05:03 <fizzie> TfL also has a program called "Platform 88" where they've put some public pianos at stations, and anyone can sit down and play.
01:05:22 <b_jonas> fizzie: oh, we've had some public pianos on streets. not in stations or platforms.
01:05:22 <fizzie> Usually the people that do tend to know how to play. But not always.
01:05:42 <b_jonas> fizzie: well no, those pianos do attract children too to some amount
01:06:33 <b_jonas> I think we should also have children-centric buttons in public places and vehicles, where those buttons do visibly control something, such as change the pattern of some signal lights, but don't control anything actually important
01:06:49 <fizzie> There's one in the King's Cross underground station ticket hall area, and another at the railway station, somewhere in the general vicinity of platform 9¾.
01:07:47 <b_jonas> and the adults should have a conspiracy where they mostly pretend in front of the children that the buttons do something important and that the children shouldn't press the button unless the adult asks them, but in reality they also direct the children to press those buttons and enjoy doing something forbidden and pressing buttons,
01:07:51 <fizzie> At Granary Square, you used to be able to play Snake on the fountains with a phone app. Not sure if it's still operational.
01:07:57 <b_jonas> rather than pressing the actually important buttons
01:08:07 <fizzie> (The fountain is essentially a largeish grid.)
01:08:17 <b_jonas> this should also happen in museum exhibitions and other places that children may visit
01:10:43 <b_jonas> I think I've also seen a public space piano in the netherlands on my vacation
01:11:31 <b_jonas> but there's one here too near Ferenciek, and I think there are a few more somewhere elce in the center
01:11:33 <fizzie> I keep waiting for somebody to play video game music on the piano, but it never happens.
01:11:42 <ais523> OK, so almost anything crypto-related that's easily user-modifiable can't be exported from either the US or the UK, unless it uses only weak crypto (56 bytes symmetric, 512 bytes when using old-fashioned common asymmetric problems), or it falls under the General Software Note
01:12:01 <ais523> I need to find another source for the General Software Note, though, because the version I'm currently using is missing indentation that makes a huge difference to the associativity of the requirements in it
01:12:08 <fizzie> Back in Finland there was a busker playing the Monkey Island theme tune in the Leppävaara train station underpass, on an unlikely instrument, I forget exactly which.
01:13:07 <ais523> got it, this is a fairly favourable associativity
01:14:03 <b_jonas> is silence technically video game music?
01:14:25 <fizzie> I guess? There's games with no music, or sound.
01:14:30 <fizzie> Not quite in the spirit of the thing though.
01:15:02 -!- sprocklem has quit (Ping timeout: 245 seconds).
01:15:16 <ais523> any software is legal, at least based on crypto-export-related requirements, if it's either sold unrestricted to all-comers (i.e. anyone can just buy it without being vetted, etc.) and "Designed for installation by the user without further substantial support by the supplier"; or else "in the public domain"
01:15:39 <ais523> but the "in the public domain" here is using a weird restriction that allows it to be copyrighted as long as there are no restrictions on its further dissemination
01:15:56 <ais523> so I guess CC0 is OK, and BSD and GPL are in a grey area
01:16:05 <b_jonas> ais523: hmm, that's interesting
01:16:12 <ais523> *using a weird definition
01:17:54 <b_jonas> that sounds like an excuse that the companies that sell industry software can use about their abysmal lack of designing anything with security in mind, since they sell software that doesn't match those conditions
01:18:44 <b_jonas> ais523: does this apply if you export software from th UK to within the EU?
01:19:20 <b_jonas> maybe they can't use that excuse then
01:19:20 <ais523> or well, I think there may be more lenience, up to automatic export-is-allowed, for within-EU exports
01:20:12 <b_jonas> they have to argue that they can't make sure that customers don't use the EU-only secure version of their software in asia
01:20:31 <b_jonas> I guess that's still a reasonable excuse
01:20:49 <b_jonas> I mean as much as the whole thing is
01:21:16 <b_jonas> it's just an excuse, their design does actually suck
01:21:30 <ais523> so it looks like within-EU follows different rules which are much more liberal without being completely free; for exports that would otherwise be controlled, you can get a license valid for export to Australia, Canada, Japan, New Zealand, Norway, Switzerland, and the US fairly eaily; for other countries you need specific authorisation
01:22:43 <b_jonas> wekk we do reexport the industry software to korea, so that doesn't sound enough
01:22:58 <b_jonas> (as well as to EU countries)
01:26:17 <ais523> actually, one potential issue I noticed was that there's an explicit list of countries where you can't apply for the specific authorisation, it includes all the EU countries listed individually (presumably because you already have a blanket authorisation)
01:26:57 <ais523> so when Brexit hits, if they forget to adjust the law and the EU blanket authorisation stops applying to the UK, then the rest of the EU will end up in the same status as Iran and North Korea (i.e. you can't even attempt to apply for a license)
01:27:50 <b_jonas> ais523: sure, that sort of thing always happens whenever some autonomous region in the balkan or the caucasus gradually converts into a country, they get into country lists too late
01:28:47 <ais523> you're reminding me of the running joke that Berwick-upon-Tweed was at war with Russia until 1966
01:28:56 <ais523> (when they explicitly signed a peace treaty, just in case)
01:29:11 <b_jonas> admittedly those are generally places not recommended for tourists, so if an insurance company doesn't add it to the list of countries with Europe rate, it could be a feature
01:30:01 <ais523> the issue being that it was in disputed territory between England and Scotland and thus occasionally listed explicitly when announcements were made, and the announcement that started the Crimean War did so but the announcement that ended it didn't
01:30:47 <ais523> (there are several reasons why this can't possibly be true, but it made for a fun publicity stunt)
01:31:37 <b_jonas> things that definitely aren't a country on their own, but are disupted between countries, and the people far away don't want to make it seem like they politically support any country's claim on the area
01:31:57 <ais523> <Wikipedia> Ancient Rome and Ancient Carthage never signed a peace treaty after the Romans seized and completely destroyed the city of Carthage in 146 BC and enslaved its entire surviving population, leaving no entity with which to make peace. In 1985 the mayors of modern Rome and Carthage municipality signed a peace treaty and accompanying pact of friendship.
01:32:12 <ais523> …that's a really interesting legal problem
01:32:16 <b_jonas> I think there's several of those between Israel and Palestine, possibly nested
01:34:10 <b_jonas> ais523: so basically Carthage was disbanded without a legal successor?
01:34:19 <ais523> b_jonas: right, it was completely destroyed by the Romans
01:34:42 <ais523> so you have this permanent war of the Roman Empire against, effectively, a null set
01:35:04 <ais523> presumably the establishment of a new city in the location of Carthage would be a separate nation altogether, unable to do anything about the previous war
01:35:13 <ais523> (and of course, modern-day Rome is not part of the Roman Empire either)
01:36:01 <b_jonas> yeah it can happen that there are multiple different groups of people who claim that they're the worthy successors, such as basically everyone in europe for the roman empire, and you can't regard any of them as the successor without insulting all the others
01:36:30 <b_jonas> that could happen with a country if they were in war with Atlantis or Numenor when it got destroyed
01:36:53 <b_jonas> it gets particularly ugly with churches
01:36:58 <ais523> I thought it was fairly well established that the Roman Empire split into two parts, the western part was entirely overrun and ceased to exist as an entity, the eastern part held out longer but was eventually conquered by the Ottomans
01:37:15 <ais523> (but the Eastern Roman Empire didn't control Rome)
01:37:25 <b_jonas> ais523: yes, but who is the worthy successor of the western empire?
01:37:31 <fizzie> There's that one place on a border which is anti-disputed in the sense that neither side wants it.
01:37:33 <b_jonas> it also split to two, then to three, then to much more
01:37:38 <fizzie> There's two potential borders, and there's a bigger and better chunk of land that's in actual dispute, but the way the borders go, if you claim that good bit you can't claim the other bit.
01:37:43 <fizzie> https://en.wikipedia.org/wiki/Bir_Tawil
01:37:50 <b_jonas> and several parts in europe claimed to be the one true roman emperor
01:37:54 <ais523> b_jonas: I don't think "successor" makes sense when it comes to countries
01:38:00 <ais523> especially if the boundaries are different
01:38:08 <b_jonas> ais523: how about for thrones?
01:38:27 <b_jonas> (and even more claimed to be liege to one of those successors)
01:40:13 <ais523> the laws of succession for the Roman Emperor weren't really well-defined, I don't think
01:40:16 <ais523> given how often they got assassinated
01:40:30 <b_jonas> ais523: oh, as for that, there's country top level domain names. .cs and .yu were both eventually deleted some time after the country it was assigned to got split up.
01:40:40 <ais523> generally speaking the job went to anyone who was capable of convincing sufficiently many important people that they held or should hold it
01:41:05 -!- sprocklem has joined.
01:41:05 <ais523> so from a philosophical sense, either nobody is the rightful Roman Emperor, or everyone is
01:41:09 <b_jonas> deleting a country top level domain that is in use seems totally stupid to me from a technical standpoint
01:41:15 <b_jonas> because there can be lots of references to it
01:41:46 <b_jonas> and this actually suggest that if you register domains, it's usually better to register them under a generic domain, because that won't go away for stupid political reasons
01:41:51 <fizzie> If you're currently on terra nullius, do you get a NullPointerException from Locale.getDefault().toString()?
01:42:12 <b_jonas> obviously for some country-level domains like .hu this is obvious anyway because the country top level domain has stupid registration rules anyway
01:42:16 <b_jonas> but for some it might not be
01:42:48 <b_jonas> though of course you can register domains under country top level domains to redirect to your generic domain, for findability
01:43:01 <b_jonas> like how google and amazon buy google.* and amazon.* for every top level domain name
01:43:02 <ais523> some domain registrars have warnings when buying .tv domains because global warming is threatening the entire territory of Tuvalu
01:43:21 <ais523> that could cause major disruption because it's one of the most popular ccTLDs
01:43:26 <b_jonas> ais523: "buying"? haven't they been giving them away for free? ah no wait, that was .tk domains.
01:43:49 <ais523> really, the situation with TLDs nowadays is complete chaos
01:44:26 <b_jonas> well sure, being roman emperor didn't even start out to be hereditary, even in pretense. that came only later.
01:45:10 <b_jonas> and what makes it worse is that all the shortest top level domain names are country ones
01:45:33 <ais523> emperor wasn't originally even an official position, really, just a de facto description for someone who held all the power
01:46:08 <ais523> now the Roman Empire has no power, thus everyone individually holds all of it, thus everyone is the Roman Emperor
01:46:24 <b_jonas> yet the position and legitimacy recursively derived from it (by liege and successor relations) later became pretty important
01:46:59 <ais523> <Wikipedia> Communications in Tuvalu rely on satellite dishes for telephone and internet access. The available bandwidth is only 512 kbit/s uplink, and 1.5 Mbit/s downlink. ← that's a good argument for them selling their domain name, it's not like they could host much locally with that sort of Internet connection
01:48:12 <b_jonas> ais523: the roman emperor itself doesn't have power, but being european royalty does have some power, in the sense that royalty can marry other royalty much easier without getting excluded from their dynasty, and I have the impression that being royalty is a claim that's basically derived from being a worthy successor of the roman emperor or a close liege of one
01:48:48 <b_jonas> ais523: but they don't have to host the domain name servers in the island, do they? they can buy a server abroad
01:49:04 <b_jonas> multiple servers obviously, for redundancy
01:49:56 <b_jonas> Australia used to be infamous of having really bad internet connectivity to the largest component of Earth, but I don't know if that's still true
01:50:59 <ais523> right, it'd make sense for them to host their domains abroad using their own TLD
01:51:31 <b_jonas> and I hope that eventually people get to live outside earth on other planets, in which case we'll have a problem of huge latency in the connections, which won't be fixed even when throughput is increased to good enough, and that will require to improve a lot of internet protocols and infrastructure in difficult ways but often in directions that I like
01:52:44 <b_jonas> the good part is that webpages won't be able to use all that stupid interactive javascript that tries to phone the server home whenever you scroll to the next page;
01:53:06 <b_jonas> the bad part is that it needs a lot of caching on separate planets, which is hard to combine with effective end-to-end cryptography
01:53:39 <b_jonas> also we'll need an incompatible change to the semantics of IRC that allows non-tree topologies
01:53:43 <ais523> even without separate planets this is still a useful infrastructure to think of, for use with things like IPoAC
01:54:25 <b_jonas> ais523: technically it can matter even for the moon, but I don't think we'll have people live there before they live on other planets
01:54:25 <ais523> I don't think IRC would be a good communication medium for a situation where no realtime communication was possible, something like a mailing list would work better
01:54:51 <b_jonas> ais523: I think something close to IRC but without the tree requirement could work
01:54:59 <ais523> the Moon is much easier to reach than Mars is and doesn't seem that much harder to inhabit?
01:55:16 <ais523> so I'd expect it to be the first natural extraterrestrial body to be inhabited
01:55:25 <ais523> (the International Space Station is inhabited and extraterrestrial, but not natural)
01:55:35 <b_jonas> the relay part makes sense, because it allows you to transport each message only once between planets as long as there's a server on each planet, even if multiple people on the planet are going to read the message, and you might not even be able to tell who'll read it when it's sent
01:55:49 <ais523> you're basically describing Usenet at this point
01:55:58 <ais523> which, to be honest, is probably a pretty good technology for something like this
01:56:15 <b_jonas> ais523: it does seem harder to inhabit for longer term. it might be easier for just a very few people to spend a few months in a research station.
01:56:16 <ais523> back when it was invented, latencies were often very large
01:57:23 <b_jonas> ais523: sure, I'm just more familiar with IRC than usenet. I heared that people used email before the internet and continuous connectivity, with servers only occasionally calling each other, and I've no clue how that could possibly have worked, it sounds like throwing a message to the sea in a bottle and hoping it arrives
01:57:53 <b_jonas> though I admit I also don't understand how routing on the current internet could possibly work, it also sounds about as impossible to me, yet by experience it works most of the time.
01:58:07 <ais523> email addresses weren't a single, fixed thing at the time
01:58:16 <ais523> instead of a domain name, you wrote a list of servers to relay the message via
01:58:39 <ais523> (and the names were much simpler, often a few letters, because they were local hostname lookups on the server before rather than being global domain names)
01:59:06 <ais523> many published email addresses from the time started vax! because "vax" was a fairly famous server that most people knew how to reach
01:59:49 <ais523> nowadays, of course, servers that relay any email they see are incredibly rare because they tend to get exploited by spammers, but back then it was very common to relay any email you came across in order to get it closer to its destination, few people were abusing it
01:59:57 <b_jonas> on the plus side, this has left the good heritage to email, where even though now email practically always goes in at most three hops, from client to sender server to receiving server to client, but it still works if the clients are only occasionally connected, and the servers are only connected most of the time (so that there is often a time when both are connected at the same time)
02:01:26 <b_jonas> ais523: right, so now the "direct" tcp connection between the two servers all happens magically behind the scenes by routing, which I still don't understand
02:01:56 -!- b_jonas has quit (Quit: leaving).
02:06:50 -!- ais523 has quit (Quit: quit).
02:11:12 <tswett[m]> So I'm playing with PCjs some more. Turns out that getting the chipset all set up correctly without the BIOS is a big challenge.
02:11:38 <tswett[m]> So, the problem is pretty much the perennial problem: I'm not getting any interrupts from the interrupt controller.
02:13:34 <tswett[m]> I've determined that this is because the interrupt controller's interrupt request register contains 6, indicating that it's aware of interrupt requests numbered 1 and 2; and because of this, any *new* interrupt requests numbered 1 and 2 are being ignored.
02:15:51 <tswett[m]> In real systems, what happens is that since the interrupt controller has interrupt requests, it signals an interrupt to the CPU; then the CPU signals an acknowledgement to the interrupt controller; then this causes the interrupt controller to clear the corresponding bit in the interrupt request register.
02:21:38 <tswett[m]> And it looks like the way that the emulator simulates this is, the interrupt controller calls the updateINTR method on the CPU, which sets the CPU's INTR flag. But the interrupt controller isn't doing that since it's not receiving any *new* interrupt requests.
02:28:09 <tswett[m]> So, here's what I knew a minute ago. In order to acknowledge an interrupt, you have to write a 20h to port 20h.
02:28:19 <tswett[m]> The assembly I was using for that was:
02:28:39 <tswett[m]> In words: "Load the byte 20h into register AH, then output the contents of register AL to port 20h."
02:51:49 <tswett[m]> I was accidentally loading the immediate byte into the wrong register.
03:31:56 <tswett[m]> All right, sweet, I've successfully made something that takes keyboard input and writes corresponding output to the screen.
03:32:33 <tswett[m]> Now for the big challenge: making it so that the characters typed *are* the characters displayed on the screen rather than merely having some vague relationship.
03:40:37 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64537&oldid=64530 * A * (-4164) /* Char language */ Now that Char has a separate page, I will add my recent ideas here.
03:48:50 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64538&oldid=64537 * A * (+889) /* Hey stack! */ Work in progress. +Example
03:51:50 <tswett[m]> Also... make it so that stuff shows up on the screen immediately instead of not showing up until you hit the "Halt" button on the emulator.
03:51:57 <tswett[m]> I feel like I had that problem before and I figured out how to fix it.
03:53:17 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64539&oldid=64538 * A * (+360) /* Hey stack! */ + a lot of syntactic sugar
03:54:24 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64540&oldid=64539 * A * (+126) /* Hey stack! */
04:00:06 -!- FreeFull has quit.
04:01:16 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64541&oldid=64540 * A * (+426) /* Hey stack! */ MTC
04:05:40 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64542&oldid=64541 * A * (+57) /* Description of Conway's Cellular Automaton in Hey stack! */
04:06:21 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64543&oldid=64542 * A * (+65) /* Hey stack! */
04:09:29 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64544&oldid=64543 * A * (-105) /* Hey stack! */
04:10:09 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64545&oldid=64544 * A * (+36) /* Example: Greeting an array-based stack(simply an array+cursor) with length 5 with a finite length before you use it */
04:17:17 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64546&oldid=64545 * A * (+66) /* Hey stack! */
04:21:38 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64547&oldid=64546 * A * (+261) /* Hey stack! */
04:27:30 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64548&oldid=64547 * A * (+148) /* Quick reference of a nice little golfing language */
04:30:11 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64549&oldid=64548 * A * (+147) /* DO()/UNTIL()/END() */
04:47:36 -!- sprocklem has quit (Ping timeout: 244 seconds).
05:09:45 -!- sprocklem has joined.
05:51:36 -!- Sgeo__ has joined.
05:55:16 -!- Sgeo_ has quit (Ping timeout: 268 seconds).
05:58:43 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64550&oldid=64549 * A * (-2015) /* Quick reference of a nice little golfing language */ Terrible Solutions for Code Golf problems
06:06:42 -!- atslash has joined.
06:59:42 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64551&oldid=64550 * A * (+129) /* Quick reference of a nice little golfing language */
07:20:59 -!- Lord_of_Life has quit (Ping timeout: 268 seconds).
07:23:48 -!- Lord_of_Life has joined.
07:38:14 -!- cpressey has joined.
07:38:35 -!- xkapastel has joined.
07:50:47 <HackEso> cpressey: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: <https://esolangs.org/>. (For the other kind of esoterica, try #esoteric on EFnet or DALnet.)
07:51:51 <cpressey> Yes, I'm familiar with this channel, thanks though.
07:52:36 <shachaf> Are you familiar with the tradition of misusing `welcome?
07:53:08 <shachaf> (It's not all that great a tradition now that I think of it.)
07:55:14 <cpressey> No, I'm not familiar with that tradition. Perhaps a few words about it should be added to the `welcome message, to help introduce it to newcomers.
07:56:23 <HackEso> cpressey invented the esolang, the pipe cleaner and the electrical mousse.
07:56:39 <shachaf> Second only to Taneb in inventiveness.
08:00:46 <cpressey> Not all that inventive anymore. Actually, I dunno. It's mostly that I don't have as much time as I'd like, to actually build out the ideas I have.
08:03:10 <cpressey> I bring good news, though: apparently it's recently been established that, if P != NP, then all instances of CSP are either in P, or are NP-complete.
08:03:45 <cpressey> ( https://mathoverflow.net/a/322335 )
08:07:11 -!- b_jonas has joined.
08:07:27 <HackEso> The CIs are a secret society led by David Morgan-Mar, bent on conquering the world from Sydney with webcomics and unsolvable puzzles. They invented Taneb.
08:07:31 <b_jonas> ^ this one is no longer true
08:08:00 <Taneb> They're no longer secret?
08:08:16 <b_jonas> no, they are no longer bent to use puzzles: http://www.irregularwebcomic.net/draakslair/viewtopic.php?p=173108#173108
08:09:13 <b_jonas> ``` perl -pi -e 's/ and unsolvable puzzles//; warn$_' wisdom/ci # http://www.irregularwebcomic.net/draakslair/viewtopic.php?p=173108#173108
08:09:15 <HackEso> The CIs are a secret society led by David Morgan-Mar, bent on conquering the world from Sydney with webcomics. They invented Taneb.
08:15:29 <b_jonas> that does indeed sound fancy
08:15:35 -!- AnotherTest has joined.
08:18:34 -!- b_jonas has quit (Quit: leaving).
08:21:46 -!- tromp has quit (Ping timeout: 276 seconds).
08:26:07 -!- rodgort has quit (Quit: Leaving).
08:27:34 -!- Sgeo_ has joined.
08:29:52 <shachaf> i,i this is also true if P = NP
08:30:11 -!- tromp has joined.
08:30:21 -!- rodgort has joined.
08:30:58 -!- Sgeo__ has quit (Ping timeout: 248 seconds).
08:44:58 <cpressey> shachaf: I thought that when I read it too but now I'm not so sure. The proof relies on the assumption that P!=NP (as does Ladner's theorem that NPI exists at all).
08:46:11 <cpressey> i.e., maybe P=NP but there are instances of CSP that are not even in NP.
08:46:12 <Taneb> I think it's false if P = NP and there's a CSP not in P or NP
08:46:52 <shachaf> cpressey: Hmm, probably I don't actually know what CSP is then.
08:46:53 <cpressey> :) I don't know CSP well enough to know if an instance of CSP not even in NP ought to be surprising or not.
08:47:07 <Taneb> Well, it's at least as surprising as P=NP
08:48:58 <Taneb> (if P=NP, is everything in P "NP-complete"?)
08:49:31 <cpressey> A pretty good intro to CSP that I also found recently: https://web.archive.org/web/20180214194125/https://www.doc.ic.ac.uk/~sgc/teaching/pre2012/v231/lecture15.html
08:49:47 <cpressey> (and was apparently taken down even more recently, thus the wayback machine)
08:51:27 <cpressey> Taneb: if P=NP then P-complete=NP-complete but... I'm sure there are problems in P that aren't P-complete?
08:51:48 <shachaf> cpressey: Based on 15.1 I'm confusil on how this isn't in NP.
08:52:08 <Taneb> cpressey: given an oracle to a problem in P one can solve any other problem in P in polynomial time
08:52:17 <cpressey> (I am using the word "sure" very loosely, above)
08:52:28 <Taneb> Which was my understanding of "-complete"
08:53:08 <shachaf> I would imagine P-complete would use a different reduction.
09:10:33 <cpressey> Okay, yes, from what I see (from 15.1 and from some web searching), CSP is NP-complete. So, on the face of it, yes, it looks like you could make a stronger claim than in that mathoverflow answer: that all instances of CSP are in P or are NP-complete.
09:13:38 <shachaf> Maybe they were using "or" in the colloquial exclusive sense.
09:15:12 <shachaf> I started reading a book about SAT.
09:29:15 -!- wob_jonas has joined.
09:30:32 <wob_jonas> cpressey: no, if P=NP then every P problem is NP-complete, even the most trivial one, because we define NP-completeness using a P powered reduction
09:30:52 <wob_jonas> P-completeness is trickier, that one is defined with more restricted reductions
09:48:57 <cpressey> wob_jonas: Taneb: I think I follow you and I can't disagree. I find it hard to swallow the implications of that, but I already find it hard to swallow the implications of P=NP I guess, so I guess that doesn't change anything.
09:49:22 -!- xkapastel has quit (Quit: Connection closed for inactivity).
09:49:43 <cpressey> Or maybe it's more like, if P=NP, then P-reductions seem almost meaningless
10:33:33 <cpressey> To relate this all back to esolang (kind of), CSP without bounds on the variables values is Turing-complete. I don't remember where I read that though, I thought it was in that tutorial but can't find it now.
10:37:48 <cpressey> Would make sense though, because it's basically just constraint programming at that point.
10:40:28 -!- arseniiv has joined.
10:43:34 -!- Sgeo__ has joined.
10:47:02 -!- Sgeo_ has quit (Ping timeout: 272 seconds).
10:54:19 <wob_jonas> cpressey: can it simulate diophantine equations?
10:58:39 <cpressey> wob_jonas: Yes, it can. Yes, I thought of that too :)
11:00:07 -!- atslash has quit (Ping timeout: 244 seconds).
11:02:00 -!- atslash has joined.
11:08:04 <shachaf> Phase transition in random 3SAT: Empirically, there seems to be a constant k such that random 3SAT instances are satisfiable iff their clause/variable ratio is smaller than k, and k seems to be around 4.27.
11:09:45 <wob_jonas> of course you have to define the distribution of that "random 3SAT" precisely before you can claim that
11:11:06 <shachaf> Yes. There are a few ways to define it but it seems pretty straightforward.
11:12:52 <cpressey> It seems a bit surprising to me, the `iff` part especially
11:13:05 <wob_jonas> well, maybe it is partly surprising depending on what the distribution is like, because if you do it differently, you'll need an asymptotic more like clause**2/variable or something
11:13:24 <myname> cpressey: welcome to randomness
11:13:25 <wob_jonas> but it's not surprising that there's a phase transition if you count the clauses in the right way
11:13:39 <wob_jonas> it's like all those random percolation things
11:13:55 <myname> i mean, obviously you can construct cases that have more clauses and are satisfiable
11:14:03 <myname> just repeat some indefinitely
11:14:14 <shachaf> cpressey: Oh, I didn't mean "iff" in a logical sense.
11:14:41 <shachaf> Only that the probability is low below the threshold and high above it, and the phase transition becomes sharper as the number of variables increases.
11:15:10 <wob_jonas> shachaf: the iff is in a logical sense, but you need a limit to large number of variables and an almost always in there
11:17:07 <wob_jonas> but I agree with cpressey, it's hard to be surprised by phase transitions like this after I've grown up among the crazy probability theorists here that keep studying problems like that
11:18:56 <shachaf> There is also such a constant for 2SAT, with k=1
11:19:40 <shachaf> And I'm now remembering that someone told me about a similar phase transition in random graphs which is probably related.
11:20:34 -!- atslash has quit (Read error: Connection reset by peer).
11:20:35 <wob_jonas> shachaf: yes, there are many such theorems. for random graphs too, but also for various regular grids with each edge deleted independently with a probability
11:20:55 -!- atslash has joined.
11:21:11 -!- mniip has joined.
11:21:19 <wob_jonas> in some cases the phase transfer parameter is a nice round number because of some symmetry argument, in other cases it's just some odd constant that you can't connect to other numbers
13:21:40 <arseniiv> (I wanted to say something but I don’t have anything interesting)
13:33:14 <Taneb> It'll get here when it gets here
13:33:49 <wob_jonas> before or after the CALESYTA results?
13:34:15 -!- john_metcalf has joined.
13:46:13 <HackEso> The IOCCC is the Industrial Ordovician COBOL Conference Circuit. Not to be confused with OIC. See also ioccclist.
13:46:34 -!- Sgeo_ has joined.
13:49:14 -!- arseniiv_ has joined.
13:49:14 -!- arseniiv has quit (Read error: Connection reset by peer).
13:49:35 -!- Sgeo__ has quit (Ping timeout: 244 seconds).
14:03:27 -!- arseniiv_ has changed nick to arseniiv.
14:03:47 <HackEso> ‘Life,’ said Marvin, ‘don't talk to me about life.’
14:05:38 -!- user24 has joined.
14:05:59 <wob_jonas> well, we have https://esolangs.org/wiki/Game_of_Life at least. no specific article for high life.
14:07:48 -!- arseniiv_ has joined.
14:10:03 -!- arseniiv has quit (Ping timeout: 245 seconds).
14:40:10 -!- arseniiv has joined.
14:42:40 -!- arseniiv_ has quit (Ping timeout: 246 seconds).
14:53:28 -!- atslash has quit (Quit: This computer has gone to sleep).
14:54:38 -!- atslash has joined.
15:11:54 <cpressey> fwiw, I read over a gentle(ish) description of Ladner's NP-intermediate construction, and it's totally reasonable to me that you couldn't write it as a CSP.
15:12:29 -!- atslash has quit (Quit: This computer has gone to sleep).
15:18:06 -!- Sgeo__ has joined.
15:21:54 -!- Sgeo_ has quit (Ping timeout: 272 seconds).
15:26:26 <int-e> cpressey: The CSP result feels a bit like the n-SAT dichotomy, in that you have a parameterized family of problem classes, and you can separate them into P-solvable and NP-complete based on the choice of parameter. It's far more interesting and much harder than the n-SAT case though. (For n-SAT I mean: 0-SAT, 1-SAT, and 2-SAT are in P; 3-SAT and beyond are NP-complete.)
15:29:32 -!- wob_jonas has quit (Remote host closed the connection).
15:29:39 <int-e> cpressey: do you have a pointer to that "gentle(ish) description"?
15:30:44 <cpressey> https://iccl.inf.tu-dresden.de/w/images/a/ab/CT2017-Lecture-14-overlay.pdf
15:30:46 <int-e> (I think I like the notion of 0-SAT. It's not even P-complete.)
15:31:12 <cpressey> I'm afraid I have to take off now but I'll try to pop in tomorrow too.
15:31:15 -!- cpressey has quit (Quit: WeeChat 1.4).
15:37:34 -!- Sgeo_ has joined.
15:40:40 -!- Sgeo__ has quit (Ping timeout: 244 seconds).
15:48:51 -!- xkapastel has joined.
16:05:04 -!- Sgeo__ has joined.
16:07:57 -!- Sgeo_ has quit (Ping timeout: 245 seconds).
16:11:21 -!- user24 has quit (Quit: Leaving).
16:49:38 -!- Sgeo__ has quit (Read error: Connection reset by peer).
16:50:02 -!- Sgeo__ has joined.
17:09:11 -!- b_jonas has joined.
17:09:27 <HackEso> damnation//The Damnation was an evil empire of yore, until the dam no longer held and they got flooded. \ 279) <oklopol> i actually do like sucking
17:20:00 <HackEso> luftballon//A Luftballon is an experimental weapon first developed by the German military in 1983 designed to scramble fighter jets, causing chaos and starting wars between their enemies. \ 662) <fizzie> oerjan: Hey, what's your country code for telephonistic dialling from the outside world? <oerjan> fizzie: +47 <fizzie> oerjan: Ooh, you're, like, right next to Sweden there. <fizzie> I... guess you are geographically, too.
17:21:50 -!- Phantom_Hoover has joined.
17:26:58 -!- FreeFull has joined.
17:46:06 -!- mich181189 has quit (Ping timeout: 257 seconds).
17:47:07 <HackEso> outstanding//Outstanding is when someone is upright in an outdoors position, as in "That scarecrow is outstanding in his field". \ 386) * Sgeo is risking massive forest fires <Sgeo> The bacon is worth it
17:47:12 <HackEso> After the London terrorist attacks of 2005, the Underground was completely evacuated. Without air resistance, the trains would go at blazingly fast speeds between the terminals. This is called a vacuum tube. Sadly, current technology doesn't let passengers travel that way.
17:48:27 -!- mich181189 has joined.
18:02:06 -!- atslash has joined.
18:07:37 -!- Sgeo_ has joined.
18:08:18 -!- atslash has quit (Quit: This computer has gone to sleep).
18:10:30 -!- Sgeo__ has quit (Ping timeout: 244 seconds).
18:25:33 -!- Sgeo__ has joined.
18:28:46 -!- Sgeo_ has quit (Ping timeout: 246 seconds).
18:47:05 -!- Sgeo_ has joined.
18:50:26 -!- Sgeo__ has quit (Ping timeout: 258 seconds).
18:51:00 -!- xkapastel has quit (Quit: Connection closed for inactivity).
18:59:52 <HackEso> rm: cannot remove 'wisdom/386': No such file or directory
19:18:25 -!- Lord_of_Life_ has joined.
19:19:56 <HackEso> *poof* * Sgeo is risking massive forest fires <Sgeo> The bacon is worth it
19:21:18 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
19:21:29 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
19:22:37 -!- \oren\ has joined.
19:23:19 <\oren\> if oiseau is "wazo" then is oieau "wao"?
20:19:26 <b_jonas> \oren\: you haven't been in here for a while. is everything all right?
21:18:05 <quintopia> rebecca black's 22nd birthday was on a Friday last month and i missed the opportunity to tweet about it. y'know, to make people feel old
21:18:54 <rain1> why would one be old if rebecca black is 22
21:24:42 <int-e> I've now read the wikipedia page. I'd like to reiterate my question.
21:32:49 -!- AnotherTest has quit (Ping timeout: 276 seconds).
21:33:54 -!- atslash has joined.
21:34:30 -!- xkapastel has joined.
21:37:35 <quintopia> one would not be old but one might feel old if 2011 feels like yesterday
21:40:18 <int-e> quintopia: you missed the point. you need to pick some event or person that people can actually relate to. :P
21:50:40 <arseniiv> a cubehelix article publication date?
21:51:11 <arseniiv> though I’m not sure if it was 80s, 90s or 00s
21:53:05 <arseniiv> though again who am I to know it, I didn’t see what it was then in the internets, I started crawling them in ≈2007
22:00:07 -!- Sgeo__ has joined.
22:03:14 -!- Sgeo_ has quit (Ping timeout: 248 seconds).
22:12:48 -!- Sgeo has joined.
22:15:13 -!- Sgeo__ has quit (Ping timeout: 246 seconds).
22:48:33 -!- Sgeo_ has joined.
22:51:34 -!- Sgeo has quit (Ping timeout: 244 seconds).
22:54:07 -!- Sgeo has joined.
22:54:58 -!- arseniiv has quit (Ping timeout: 248 seconds).
22:56:18 -!- Sgeo_ has quit (Ping timeout: 245 seconds).
23:39:09 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
23:58:33 -!- Sgeo_ has joined.
00:01:13 -!- Sgeo has quit (Ping timeout: 268 seconds).
01:03:13 <shachaf> fizzie: Huh, now that I'm looking at this ABI, %rdx contains a function pointer that the program is supposed to call atexit.
01:03:46 <HackEso> 62) <Sgeo|web> Where's the link to the log? <lament> THERE'S NO LOG. YOUR REQUEST IS SUSPICIOUS AND HAS BEEN LOGGED.
01:26:18 -!- MDude has quit (Ping timeout: 245 seconds).
01:32:21 -!- xkapastel has quit (Quit: Connection closed for inactivity).
01:39:23 <int-e> shachaf: hmm, could it be for __attribute__((destructor)) cleanup?
01:42:25 <shachaf> int-e: Why would the kernel pass that to _start?
01:42:33 <shachaf> It seems like strictly a userspace thing.
01:51:23 <kmc> is it for that wacky robust futex thing
01:52:29 <shachaf> Oh, I didn't know about that thing.
01:52:51 <kmc> the userspace maintains a linked list of futices and tells the kernel where it is
01:52:52 <shachaf> But presumably if a program crashes it won't run its atexit handlers.
01:53:04 <kmc> it was not a very good guess
01:57:20 <int-e> shachaf: have a look at https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_64/start.S;h=24d59159a9b46e3edd548bfd2f1b1924c6c2eb29;hb=HEAD#l41
01:58:08 <shachaf> OK, it's for the dynamic linker. I was vaguely thinking about that but it looks like it's part of the ABI even for statically linked programs.
01:58:13 <shachaf> I guess it's just the same ABI?
01:58:41 <kmc> what's the purpose though
01:58:50 <int-e> I'm not sure whether the part where the kernel passes control to the dynamic linker is actually part of the ABI.
01:59:24 <kmc> isn't the dynamic linker the ELF interpreter
01:59:33 <kmc> and it just passes control to the entry point of said interpreter
01:59:38 <shachaf> I didn't even know the kernel mapped in any executable memory other than the program text and VDSO.
02:03:05 -!- MDude has joined.
02:21:45 <shachaf> I was looking in the Linux repository to see what it sets rdx to.
02:22:01 <shachaf> I haven't found it, but I did find https://github.com/torvalds/linux/blob/master/tools/include/nolibc/nolibc.h#L430 which just ignores rdx, so presumably it's not that important/
02:35:27 <int-e> shachaf: the interpreter entry point seems to make no attempt to look at or preserve %rdx: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_64/dl-machine.h;h=95a13b35b5d27d8619422d3c5cc896f0ff1663c4;hb=HEAD#l141
02:36:07 <int-e> So basically, the same conclusion, but this time from the glibc side.
02:38:26 <int-e> (the function that is called takes only one argument)
02:39:52 <int-e> OTOH, the stack layout corresponds to reality even for rtdl.
02:41:40 <shachaf> Is that the code for ld-linux?
02:42:09 <int-e> I'm pretty sure it is (well, as small part of it)
02:43:30 <int-e> most of it is in https://sourceware.org/git/?p=glibc.git;a=blob;f=elf/rtld.c
02:43:50 <int-e> (and other files in the elf/ subdirectory)
02:44:11 <int-e> (but rtld is the "main program".)
02:44:24 <shachaf> OK, https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_64/start.S#l79 says it's the "shared library termination function".
02:45:55 <int-e> yeah I linked to line 41 of that particular file earlier.
02:46:28 <shachaf> I looked at that file earlier but didn't see that comment.
02:46:33 <int-e> it's okay... I do this all the time (figuring things out myself)
02:47:04 <shachaf> I'm still curious, though. What does the kernel put in that register? Is it an address I can jump to?
02:47:36 <shachaf> I guess I can find out easily enough.
02:47:57 <int-e> I suspect the kernel doesn't put anything in that register.
02:48:03 <kmc> i love this kind of wild goose chase
02:49:20 <int-e> okay, the kernel should put safe values into the registers that don't leak any information. 0 if fine :)
02:49:25 <shachaf> kmc: i want to write a compiler so i gotta know these things
02:49:26 -!- oerjan has joined.
02:51:06 <kmc> why are you writing a compiler
02:51:20 <shachaf> how else do i program computers
02:52:35 -!- Sgeo__ has joined.
02:55:44 -!- Sgeo_ has quit (Ping timeout: 258 seconds).
03:04:42 <int-e> shachaf: https://github.com/torvalds/linux/blob/master/arch/x86/include/asm/elf.h#L172-L186
03:05:29 <shachaf> int-e: Aha. I was searching for "rdx".
03:05:52 * int-e started from binfmt_elf.c
03:06:09 <int-e> (irritatingly under fs/)
03:07:40 <shachaf> /* ax gets execve's return value. */
03:08:04 <shachaf> The Linux conspiracy doesn't want you to know what execve returns on success.
03:09:17 -!- FreeFull has quit.
03:09:46 <int-e> oh wait... I was wondering why the kernel doesn't just load the interpreter... but the process may not have the right to open&mmap the executable file...
03:10:06 <int-e> So that's one less mystery...
03:14:29 <kmc> shachaf: did you see geofft's userspace exec thing
03:14:39 <kmc> actually i'm not sure if I'm remembering it right
03:14:56 <int-e> one funny thing is https://github.com/torvalds/linux/blob/master/fs/binfmt_elf.c#L1165-L1177
03:15:07 -!- xkapastel has joined.
03:15:15 <shachaf> kmc: Simulating exec from userspace?
03:15:30 <shachaf> I looked for and found a thing like that a while ago. I don't remember geofft being involved.
03:16:06 <int-e> because the comment is specifically about the i386 ABI, it says something about populating %edx, but if you look at https://github.com/torvalds/linux/blob/master/arch/x86/include/asm/elf.h#L109-L114 then there's no effort to set dx :)
03:16:47 <kmc> maybe i'm confused
03:16:55 <kmc> i'm usually confused about something or another
03:17:00 <shachaf> i,i maybe they're setting the lower 16 bits of dx to 0 but the upper 16 bits make it a valid function pointer
03:17:07 <kmc> dazed and confused but trying to continue
03:17:39 <int-e> shachaf: I'm pretty sure the dx field covers all of edx.
03:18:02 <int-e> shachaf: just like on x86_64 the dx field covers all of rdx.
03:20:35 <int-e> oh... #define ELF_PLAT_INIT(_r, load_addr) elf_common_init(¤t->thread, _r, 0) ... what a nice local name space we have here.
03:21:03 <int-e> but that's enough (useless, mostly) code reading.
03:21:17 <int-e> (though interesting)
03:21:47 <kmc> that's not enough underscores
03:21:51 <kmc> it should be _______r at least
03:25:02 <esowiki> [[Doug]] N https://esolangs.org/w/index.php?oldid=64552 * Areallycoolusername * (+4080) Created page with "'''Doug''' is an [[Arch]]-based [[esoteric programming language]] made by [[User: Areallycoolusername|Areallycoolusername]]. All commands are meant to be a quote by Fairly Odd..."
03:41:53 <esowiki> [[Doug]] M https://esolangs.org/w/index.php?diff=64553&oldid=64552 * JonoCode9374 * (-3)
03:58:30 <HackEso> #!/bin/sh \ echo "$1" > tmp/input.brachylog \ (cd interps/brachylog/brachylog/Brachylog-master/src; swipl -g 'run_from_file("../../../../../tmp/input.brachylog", _, _), write(" \ true."), !, halt; write(" \ false."), !, halt' brachylog.pl)
04:07:59 <oerjan> `` ls -l bin/\! bin/interp
04:08:00 <HackEso> -rwxr-xr-x 1 1000 1000 109 Jul 17 22:26 bin/! \ -rwxr-xr-x 1 1000 1000 101 Jan 13 2019 bin/interp
04:08:26 <HackEso> https://hack.esolangs.org/repo/log/tip/bin/%5C%21
04:09:30 <oerjan> *sigh* it was a symbolic link
04:09:45 <kmc> what is swipl
04:10:50 <oerjan> `` ln -s interp bin/\!
04:11:09 <oerjan> `` ls -l bin/\! bin/interp
04:11:09 <HackEso> lrwxrwxrwx 1 1000 1000 6 Jul 19 04:10 bin/! -> interp \ -rwxr-xr-x 1 1000 1000 109 Jul 19 04:10 bin/interp
04:12:44 <kmc> is prolog good
04:12:54 <kmc> should i use prolog
04:14:01 <shachaf> did you know prolog is almost the same thing as index notation
04:18:35 <kmc> because i don't remember what index notation is
04:31:15 <int-e> I don't believe in Prolog.
04:36:23 <int-e> (There may be a discrepancy between how Prolog is taught... or at least taught to me... as a language for solving propositions ("logic programming")... and how it can realistically be used to good effect... namely a DSL for working with unification and very disciplined backtracking.)
04:37:37 <\oren\> I don't understand what problem Prolog was designed to solve
04:38:21 <shachaf> https://en.wikipedia.org/wiki/Boolean_Pythagorean_triples_problem
04:39:36 <int-e> shachaf: that made mainstream news a few years back, as "the largest mathematical proof".
04:40:39 <int-e> I'm actually not 100% sure whether they managed to certify the whole thing.
04:42:37 <\oren\> I guess that is a pretty legitimate need for something like prolog
04:42:49 <int-e> Eh, I should clarify. There's a certification format for SAT problems (called DRAT). There's a C tool (complicated, but far simpler than a SAT solver) that can certify (and prune) such proofs. There have been recent efforts to have formally verified certifiers.
04:43:04 <int-e> \oren\: Prolog doesn't scale to that size.
04:43:29 <int-e> shachaf: wait are you saying that this is what Prolog was invented for?
04:45:27 <int-e> \oren\: Prolog makes for an awful SAT solver because it doesn't do any of the stuff that makes DPLL fast -- variable selection heuristics, restarts, and, most importantly, conflict-driven clause learning. The latter is so important in fact, that parts of the community is talking about CDCL solvers rather than DPLL solvers.
04:46:26 <shachaf> int-e: Do you know whether DPLL solvers actually do pure literal elimination?
04:47:29 <shachaf> int-e: By the way, it's interesting that this proof was parallelized on many machines.
04:47:41 <int-e> \oren\: Prolog fails by not being declarative; it has side effects and a fixed order of evaluation. So such optimizations are completely ruled out. A more modern approach is https://en.wikipedia.org/wiki/Answer_set_programming which seems to be declarative.
04:47:53 <shachaf> Apparently they used a lookahead solver first to decide which variables to split the problem on, and then ran a CDCL solver on each subinstance.
04:48:10 <\oren\> " its original intended field of use, natural language processing."
04:48:38 <int-e> shachaf: Not as part of DPLL. They may do cross-resolution (resolve each clause that contains P with each clause that contains -P, then drop all clauses referring to P) of which pure literal is a special case.
04:48:39 <\oren\> oh, the unbounded optimism of the 1970's
04:49:06 <int-e> \oren\: yeah, and expert systems.
04:50:14 <int-e> SAT solvers are awful in that nobody really wants to write clauses (or even circuits to feed into a Tseitin transformation)
04:57:11 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64554&oldid=64551 * A * (-2842)
04:58:00 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64555&oldid=64554 * A * (+145) /* An arch is simply a curve. */
04:58:20 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64556&oldid=64555 * A * (+2779)
04:58:40 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64557&oldid=64556 * A * (-2779) /* Hey stack! */ Huh
04:59:16 <\oren\> http://orenwatson.be/dups.htm
05:00:01 <\oren\> I've sucessfully created a program to automatically list all characters in my font that have identical glyphs
05:01:03 <int-e> tbh that doesn't sound very impressive
05:02:09 <\oren\> it took not much effort except actually bothering to write the damn program
05:03:04 <\oren\> http://orenwatson.be/bdf_dups_test.htm
05:06:35 <int-e> needs more spaces and line breaks
05:12:17 <\oren\> It's just the "dumb" algorithm of loading the entire font into memory like my editor does, then sorting it on the bitmaps
05:13:13 <\oren\> and then listing the ones that compare equal
05:16:28 <\oren\> I also came up with a stupid way to efficiently show the names
05:17:19 <\oren\> by mmapping the unicode database text and getting a list of pointers to where the names are
05:18:10 <\oren\> (... why do I have to open a file first before I can mmap it?)
05:18:44 <int-e> I would probably have done something more stupid. Like, extract each character as a separate bitmap (surely there must be a tool for that), then hash and sort in the shell. :P
05:19:01 <int-e> because mmap doesn't check permissions
05:22:02 <\oren\> I should make my *editor* show the unicode character names...
05:24:42 -!- xkapastel has quit (Quit: Connection closed for inactivity).
05:46:34 -!- Sgeo_ has joined.
05:48:47 -!- john_metcalf has quit (Ping timeout: 245 seconds).
05:49:37 -!- Sgeo__ has quit (Ping timeout: 245 seconds).
05:49:37 -!- heroux has quit (Ping timeout: 245 seconds).
05:49:45 -!- heroux has joined.
06:39:48 -!- nfd has quit (Read error: Connection reset by peer).
06:58:22 -!- moei has joined.
07:17:07 -!- Sgeo__ has joined.
07:20:02 -!- Lord_of_Life has quit (Ping timeout: 248 seconds).
07:21:24 -!- Sgeo_ has quit (Ping timeout: 272 seconds).
07:23:40 -!- Lord_of_Life has joined.
07:32:06 -!- Sgeo_ has joined.
07:35:57 -!- Sgeo__ has quit (Ping timeout: 258 seconds).
07:42:45 <b_jonas> \oren\: nice. although you might also want to try to find double-width characters of which both the left and right half looks identical to some single-width character, such as " " which looks like " "
07:46:25 <b_jonas> and, technically, you would also have to find longer chains of characters where a sequence of double-width characters looks identical to a one shorter sequence of doublewidth characters flanked between two single-width characters.
07:52:12 <oerjan> <b_jonas> no, they are no longer bent to use puzzles: http://www.irregularwebcomic.net/draakslair/viewtopic.php?p=173108#173108 <-- i was going to follow that link and then realized that would trigger the BB's stupid "forget all about what i haven't read in a few hours" feature, unless i then go on to read it all immediately, which i wasn't planning to.
07:53:47 <oerjan> well, might. i'm not entirely sure what circumstance triggers it.
07:57:11 * oerjan checks out cpressey's link instead, but thinks he's seen that before
07:59:52 <HackEso> 1/1:broily//broily is like boily, but more broiling. \ marriage//Marriage was made legal in the United States on 2015-06-26. \ glass//I can eat glass and it doesn't hurt me. -- http://www.savagechickens.com/2016/05/new-diet.html \ otoh//OTOH means "On the omnipotent hand". \ ü//ü is the ridiculously happy second derivative of the letter ‘u’ with respect to time.
08:10:41 <oerjan> <\oren\> if oiseau is "wazo" then is oieau "wao"? <-- wiktionary refuses to confirm tdnh
08:19:24 <b_jonas> oerjan: uh, check it from a different browser profile so the forum doesn't recognize you? or should I just quote it for you?
08:20:26 <b_jonas> it's a message by DMM from 2019-04: "We'd love to, but honestly our interests seem to have moved on somewhat from the intense puzzle creation necessary to organise an entire competition. We have some ideas and some completed puzzles in the bank, but the motivation for making more puzzles pulling it all together is at a bit of a low ebb right now. I'm hoping we'll return to it. Can't promise anything
08:20:57 <b_jonas> replying to someone asking when there'll be a next mezacotta puzzle hunt
08:21:16 <b_jonas> so it doesn't specifically say no to all puzzles, just that format
08:21:36 <b_jonas> they could have a droidikar second set crossword puzzle
08:21:53 <b_jonas> or, technically, more Eavesdropper puzzles
08:22:23 * oerjan decided not to follow Eavesdropper after a few posts
08:22:29 <oerjan> didn't feel like my thing
08:23:02 <b_jonas> or more single puzzles like http://www.irregularwebcomic.net/3976.html annot
08:23:06 <oerjan> anyway, i'm forgetting to eat _and_ to shave, so ->
08:23:16 -!- oerjan has quit (Quit: Later).
08:23:51 <b_jonas> oerjan: it took me longer to decide I don't like the eavesdropper story, but I'm glad DMM seems to have given up working on it
08:24:19 <b_jonas> the puzzles are hit and miss, but there were a few especially giid ones:
08:24:52 <b_jonas> https://alcohol.stackexchange.com/q/7036
08:25:12 <b_jonas> do you also have an excuse to not visit pages on SE?
08:31:31 -!- AnotherTest has joined.
08:38:19 -!- b_jonas has quit (Quit: leaving).
09:04:55 -!- arseniiv has joined.
09:47:11 -!- wob_jonas has joined.
10:12:58 -!- wob_jonas has quit (Remote host closed the connection).
10:19:32 -!- atslash has quit (Read error: Connection reset by peer).
10:19:56 -!- atslash has joined.
10:32:42 -!- unlimiter has joined.
10:48:07 -!- unlimiter has quit (Quit: still confused).
11:12:13 -!- atslash has quit (Ping timeout: 246 seconds).
11:14:54 -!- atslash has joined.
11:25:52 -!- atslash has quit (Ping timeout: 272 seconds).
11:26:47 -!- atslash has joined.
11:46:54 -!- cpressey has joined.
12:02:53 <cpressey> int-e: I agree about Prolog; I mean, I like logic and all, but I'm not convinced that it's very good for *programming* in.
12:03:41 <cpressey> Its biggest contribution imo was to show that it's possible.
12:06:08 <cpressey> Relatedly, I would love to know what this programming language actually looks like: https://en.wikipedia.org/wiki/Curry%E2%80%93Howard_correspondence#Sequent_calculus
12:07:00 <cpressey> but I can't find a reference on that page, and I haven't had time to hunt for it.
12:11:38 -!- wob_jonas has joined.
12:12:07 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64558&oldid=64557 * A * (+70)
12:12:30 <wob_jonas> cpressey: right, that's more or less what I thought when I made the esoteric language Olvasható, which lets me program prolog as if it were an ordinary functional language, without its special logic programming and unification parts.
12:24:44 <cpressey> wob_jonas: reading the esowiki entry for it, I shudder to imagine what the instructor thought of this answer for their homework assignment :)
12:25:37 <wob_jonas> cpressey: well, the instructor who scored the prolog code said that he found it easier to read the produced prolog code of the program than the olvashato input, but yeah, both were ugly
12:25:54 <wob_jonas> another instructor scored the sml code output, and I don't know what he said
12:27:13 <fizzie> I wrote a Scheme interpreter in Prolog as homework once, but I can't remember what the task specification was. It may even have been something like writing an interpreter for something, although that does sound maybe slightly odd for a Prolog assignment.
12:27:17 <wob_jonas> the same instructor who taught prolog for that course later held a more advanced course for us about constraint logic programming (clp) in prolog.
12:28:10 <wob_jonas> for that, I reused the closure representation from olvashato
12:28:13 <esowiki> [[Doug]] https://esolangs.org/w/index.php?diff=64559&oldid=64553 * Areallycoolusername * (+1644) Revamped the page
12:28:32 <wob_jonas> fizzie: yes, that might actually be saner, an interpreter plus code
12:28:58 <wob_jonas> prolog handles that sort of thing quite naturally because it keeps messing with tree-like data all the time
12:29:02 <esowiki> [[User:Areallycoolusername]] https://esolangs.org/w/index.php?diff=64560&oldid=64499 * Areallycoolusername * (+11)
12:30:44 <esowiki> [[Joke language list]] https://esolangs.org/w/index.php?diff=64561&oldid=63686 * Areallycoolusername * (+11) /* General languages */
12:30:46 <wob_jonas> the exam for that latter course was memorable to me: it had a task where I had to write prolog code on paper, and I managed to write a correct answer that the instructor thought was buggy, so I had to trace the execution on paper to prove that it worked
12:31:57 <wob_jonas> that one came up on https://esolangs.org/logs/2019-03-26.html last
12:33:41 <fizzie> Looks like the only Prolog-special thing about this Scheme interpreter is that it implements (amb ...).
12:36:02 <fizzie> (Modeled after the SICP chapter, https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-28.html )
12:36:18 <wob_jonas> fizzie: what method do you use to represent the scheme mutable state in prolog?
12:36:28 <wob_jonas> there's like ten different ways for that, most of them awkward or nonportable
12:37:01 <fizzie> I'm not sure I can decipher it out from the code, to be honest.
12:37:02 <wob_jonas> there's assert-based ones, extensions for global variables, extensions for mutable terms, and making the whole thing functional
12:37:32 <fizzie> I think it's the third option on your list.
12:37:37 <fizzie> https://www.swi-prolog.org/pldoc/man?predicate=setarg/3
12:37:57 <wob_jonas> the first two has the drawback that you somehow have to gensym atoms (symbols) or something, the second and third are based on nonportable extensions, the third really works badly with the rest of the prolog language, etc
12:38:01 <fizzie> I think I didn't want to spend too much effort on it.
12:38:24 <wob_jonas> fizzie: sure. how many obscure bugs did you have to debug that turned out to come from setarg?
12:38:42 <fizzie> Well, I mean, it didn't have to run a thorough Scheme check suite. :p
12:38:48 <fizzie> I think it did run non-trivial programs though.
12:39:09 <fizzie> call/cc this does via something CPS-ish.
12:39:56 <fizzie> At least judging from ps_apply_builtin(callcc, Args, K, E, SE) :- ... ps_apply(k(apply, E, SE, Proc, [cont(K)], K), void).
12:42:25 <wob_jonas> fizzie: can it run this? (((lambda (fact) (set! fact (lambda (n) (if (< n 1) 1 (* n (fact (- n 1)))))) fact) 0) 5)
12:43:22 <fizzie> I'll test if I can figure out how to actually get to the REPL.
12:43:47 <cpressey> I've never written a Scheme interpreter in Prolog, but I did write a (nano) Prolog interpreter in Scheme once.
12:44:20 <fizzie> This is also from 2005, so it may well have bitrotted away when it comes to current SWI-Prolog version.
12:44:23 <cpressey> Actually, that was just last year. Wanted to refresh/confirm to myself that I knew basically how a Prolog interpreter works.
12:45:00 <cpressey> In the Scheme world, everyone seems to prefer miniKanren though.
12:45:16 <cpressey> (To implement, I mean. Dunno about actually using.)
12:45:40 <fizzie> wob_jonas: Sorry, it's not looking good w.r.t. running anything: http://ix.io/1OTN
12:46:59 <fizzie> Slightly odd, though. I would've expected some error from the Prolog side, not a syntax error from the interpreter itself.
12:48:04 <fizzie> (It's failing while attempting to load the bit of Scheme syntax that has been implemented via macros.)
13:01:08 <esowiki> [[Arch]] https://esolangs.org/w/index.php?diff=64562&oldid=64534 * Areallycoolusername * (+21)
13:07:33 <cpressey> I had some hopeful thoughts that Docker might help bitrot. Like imagine there was a Docker container that had SWI-Prolog circa 2005 installed on it, you could just run it from that. It's never that simple though.
13:08:53 <cpressey> I guess I should say, it's rarely that simple. I refuse to give up all my hopeful thoughts on that.
13:10:05 <cpressey> The source code for early versions of xpuyopuyo is still available, but it uses GTK+ 1.2, so what are my chances of building it? Almost zero.
13:13:14 <esowiki> [[Arch]] https://esolangs.org/w/index.php?diff=64563&oldid=64562 * Areallycoolusername * (+79) /* Languages */
13:14:01 <esowiki> [[Arch]] https://esolangs.org/w/index.php?diff=64564&oldid=64563 * Areallycoolusername * (+0)
13:21:11 <esowiki> [[Doug]] https://esolangs.org/w/index.php?diff=64565&oldid=64559 * Areallycoolusername * (-11) /* Hello World Program */
13:23:31 <esowiki> [[Doug]] https://esolangs.org/w/index.php?diff=64566&oldid=64565 * Areallycoolusername * (+188) /* Variables, Ifs, and for */
13:23:58 <esowiki> [[Doug]] https://esolangs.org/w/index.php?diff=64567&oldid=64566 * Areallycoolusername * (+0) /* Variables, Ifs, and for */
14:07:36 <esowiki> [[Language list]] M https://esolangs.org/w/index.php?diff=64568&oldid=64535 * ThisIsTheFoxe * (+20) added my language :)
14:09:30 <cpressey> According to https://esolangs.org/wiki/Deadfish there is not yet an implementation of Deadfish in Prolog!
14:29:08 <fizzie> Heh, thought I'd check if there are any odd local changes in that code. "The working copy -- is too old (format 4) to work with client version '1.10.4 (r1850624)' (expects format 31). You need to upgrade the working copy first."
14:31:56 <wob_jonas> fizzie: even without upgrading, you can diff it to the repository copy
14:32:37 <esowiki> [[Esolang talk:Categorization]] https://esolangs.org/w/index.php?diff=64569&oldid=62563 * Areallycoolusername * (+228) Proposing new category
14:41:29 <esowiki> [[Esolang talk:Categorization]] https://esolangs.org/w/index.php?diff=64570&oldid=64569 * Areallycoolusername * (+390)
14:41:44 <esowiki> [[Esolang talk:Categorization]] https://esolangs.org/w/index.php?diff=64571&oldid=64570 * Areallycoolusername * (+1) /* Proposed Categories: Arch-based and Bootstraped */
15:59:03 -!- wob_jonas has quit (Remote host closed the connection).
15:59:44 -!- cpressey has quit (Quit: WeeChat 1.4).
16:29:09 <esowiki> [[Dbondb]] N https://esolangs.org/w/index.php?oldid=64572 * Sideshowbob * (+2116) Created page with "DBonDB is an esoteric programming language created by [[User:Sideshowbob]]. DBonDB is derived from Dartmouth BASIC, the first BASIC, which was introduced in 1964. Hence the n..."
16:32:31 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=64573&oldid=64568 * Sideshowbob * (+13) /* D */
16:39:10 <esowiki> [[User:Sideshowbob]] N https://esolangs.org/w/index.php?oldid=64574 * Sideshowbob * (+19) Created page with "Created [[Dbondb]]."
16:42:33 -!- Phantom_Hoover has joined.
16:42:52 <esowiki> [[Dbondb]] https://esolangs.org/w/index.php?diff=64575&oldid=64572 * Sideshowbob * (+0)
17:01:49 <esowiki> [[Dbondb]] https://esolangs.org/w/index.php?diff=64576&oldid=64575 * Sideshowbob * (+4) /* Factorial */
17:02:00 <esowiki> [[Dbondb]] https://esolangs.org/w/index.php?diff=64577&oldid=64576 * Sideshowbob * (+1) /* [Factorial]] */
17:02:42 <esowiki> [[Dbondb]] https://esolangs.org/w/index.php?diff=64578&oldid=64577 * Sideshowbob * (+7) /* Fibonacci series */
17:05:05 <esowiki> [[Dbondb]] https://esolangs.org/w/index.php?diff=64579&oldid=64578 * Sideshowbob * (+7) /* Hello World */
17:05:24 <esowiki> [[Union]] https://esolangs.org/w/index.php?diff=64580&oldid=63748 * Sideshowbob * (+1) /* Hello, world! program doing no output */
17:06:59 <esowiki> [[Dbondb]] https://esolangs.org/w/index.php?diff=64581&oldid=64579 * Sideshowbob * (+4) /* 99 Bottles of beer */
17:24:37 <esowiki> [[Special:Log/newusers]] create * Shuber * New user account
17:27:12 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=64582&oldid=64507 * Shuber * (+160) /* Introductions */
17:28:57 <esowiki> [[Brainfuck implementations]] https://esolangs.org/w/index.php?diff=64583&oldid=62313 * Shuber * (+117) /* Normal implementations */
17:35:17 -!- FreeFull has joined.
18:00:37 -!- Sgeo__ has joined.
18:03:46 -!- Sgeo_ has quit (Ping timeout: 248 seconds).
18:54:04 -!- b_jonas has joined.
18:58:18 <int-e> . o O ( The Gigaminx is not very ergonomic :) )
19:21:10 -!- Lord_of_Life_ has joined.
19:22:46 -!- Lord_of_Life has quit (Ping timeout: 272 seconds).
19:23:45 -!- xkapastel has joined.
19:23:57 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
19:54:27 -!- zzo38 has joined.
20:21:31 <b_jonas> int-e: is that some rubik's cube style permutation puzzle? or a mutant animal companion?
20:47:25 -!- int-e has quit (Remote host closed the connection).
20:58:18 -!- int-e has joined.
21:13:02 -!- int-e has quit (Remote host closed the connection).
21:14:11 -!- int-e has joined.
21:31:57 -!- int-e has quit (Remote host closed the connection).
21:32:39 -!- int-e has joined.
21:35:06 -!- ais523 has joined.
21:36:19 -!- jalumar has joined.
21:36:36 -!- xkapastel has quit (Quit: Connection closed for inactivity).
21:36:47 -!- joast has quit (Quit: Leaving.).
21:40:37 <ais523> b_jonas: email actually often takes more than three hops in practice, there are plenty of setups that use a number of different mailservers on the receiving end that relay to each other
21:40:48 <ais523> but they're all owned by the same company so they're willing to let them freely relay to each other
21:41:04 <ais523> sometimes this happens at the sending end too
21:42:18 -!- joast has joined.
21:42:43 <int-e> Oh right. That doesn't work.
21:42:47 <HackEso> - \ :#,_@ \ bin \ canary \ emoticons \ esobible \ etc \ evil \ f \ factor \ good \ hw \ ibin \ interps \ izash.c \ karma \ le \ lib \ misle \ paste \ ply-3.8 \ quines \ quinor \ quotes \ share \ src \ test2 \ testfile \ tmflry \ tmp \ wisdom
21:43:17 <int-e> ais523: I wanted to type that into the window to the right of this one ;-)
21:43:32 <b_jonas> yeah, some of those might be files I created accidentally
21:43:36 <ais523> we have a shell in-channel too but it's probably attached to the wrong filesystem
21:43:37 <b_jonas> you can hg log them if you want
21:46:12 <ais523> that :#,_@ looks like a Befunge program
21:47:23 <ais523> but I'm not sure it's meaningful
21:47:56 <fizzie> >:#,_@ is the standard print loop.
21:48:07 <fizzie> For printing a 0gnirts.
21:48:13 <ais523> I was assuming a wrap from left to right
21:48:30 <ais523> seeing it as a program /fragment/ makes more sense
21:48:34 <fizzie> I guess maybe the '>' was someone's shell redirection symbol.
21:48:39 <HackEso> Error: couldn't open 'olleh.bf' for input.
21:48:56 <ais523> maybe that was the string they were trying to print
21:49:10 <HackEso> 0000000 45 72 72 6f 72 3a 20 63 6f 75 6c 64 6e 27 74 20 >Error: couldn't < \ 0000020 6f 70 65 6e 20 27 6f 6c 6c 65 68 2e 62 66 27 20 >open 'olleh.bf' < \ 0000040 66 6f 72 20 69 6e 70 75 74 2e 0a >for input..< \ 0000053
21:49:21 <HackEso> rm: cannot remove './- ./'\'':#,_@'\''': No such file or directory
21:49:35 <HackEso> https://hack.esolangs.org/repo/file/tip/f
21:49:40 <ais523> also, I'm amused that rm escaped that correctly
21:50:32 <fizzie> I'm being confused by the f. It doesn't show up in the repo browser.
21:50:40 <ais523> int-e: I managed to permanently break HackEso's filesystem by screwing with the canary
21:50:44 <ais523> hmm, maybe f isn't a regular file
21:51:01 <kmc> press f to pay respects
21:51:41 <ais523> hmm, the meme is "press F to pay respects" but the original source was referring to the physical key on the keyboard four spaces right of Caps Lock
21:51:53 <ais523> is the key called "f" or "F", and do you quote it when writing it in text?
21:52:10 <ais523> it inserts "f" when pressed, under most circumstances, but is labelled with a capital F on most keyboards
21:52:24 <kmc> I think you'd call it F
21:52:25 <int-e> `` echo "Why are you taking Polly down into the mine? Polly's a parrot, not a canary! And where's my cracker?" > canary
21:52:27 <kmc> and not quote it
21:52:33 <kmc> in the context of a game instrution anyway
21:52:53 <ais523> well it probably used keycaps font in the game
21:52:56 <kmc> https://i.kym-cdn.com/photos/images/original/000/858/776/f2e.jpg_large
21:53:00 <kmc> on the console version it's X
21:53:58 <kmc> `` ls -la f
21:53:58 <ais523> I was wondering if one HackEso command could communicate with another via the named pipe
21:53:59 <HackEso> prw-r--r-- 1 1000 1000 0 May 4 19:34 f
21:55:46 <ais523> `` '!' brachylog "test"ẉ
21:55:47 <HackEso> ERROR: Prolog initialisation failed: \ ERROR: brachylog_main/4: Undefined procedure: default/0
21:55:51 <ais523> `` '!' brachylog '"test"ẉ'
21:55:52 <HackEso> ERROR: Prolog initialisation failed: \ ERROR: brachylog_main/4: Undefined procedure: default/0
21:55:59 <ais523> `` interp brachylog '"test"ẉ'
21:56:00 <HackEso> ERROR: Prolog initialisation failed: \ ERROR: brachylog_main/4: Undefined procedure: default/0
21:56:18 <ais523> oerjan: possibly wasn't the best idea to merge those before the merged version actually worked
21:56:45 <int-e> ais523: I wasn't going to turn canary into a pipe special file or all the other things that we know causes trouble, I just don't like it being empty :)
21:59:15 <int-e> . o O ( - is setting the bar rather low. )
22:03:04 -!- Sgeo_ has joined.
22:07:03 -!- Sgeo__ has quit (Ping timeout: 268 seconds).
22:07:06 <ais523> what computational class is parsing indentation-sensitive languages like Python?
22:08:16 <ais523> my sample task is parsing " 1 +\n 2 +\n 3 +\n4" into a data structure of shape (1+(2+3))+4
22:08:36 <ais523> given the characters of the input in order (i.e. space, space, 1, space, plus, newline, space, space, space, space, 2…)
22:09:35 <ais523> I have a suspicion that a PDA is not enough and an LBA is too much
22:09:46 <b_jonas> ais523: well, it can't be context-free, because it has to be able to recognize three identically indented lines
22:10:11 <b_jonas> as in "if 1:\n 1\n 1\n 1\n"
22:10:22 <b_jonas> and notice if any of the three lines is misindented
22:10:22 <int-e> ais523: do people study things like stack (PDA) plus logarithmic space?
22:10:33 <ais523> int-e: probably, but I don't know of any
22:10:43 <int-e> because that would be my guess here
22:11:05 <b_jonas> int-e: yeah, something like that should be enough
22:14:49 -!- AnotherTest has quit (Ping timeout: 252 seconds).
22:17:02 <arseniiv> does HackEso have its own file system?
22:22:15 <b_jonas> arseniiv: no, I think all but /tmp are just directories bound from the same single file system that the host system uses
22:22:34 <b_jonas> the host system being a virtual machine, mind you, because it's a double-ply sandbox
22:22:57 <b_jonas> so it's like parts of the file system of the middle layer mounted on the inner machine
22:22:58 -!- arseniiv has quit (Ping timeout: 248 seconds).
22:23:10 <b_jonas> you can see from df that all the mounts have the same amount of free space
22:28:28 -!- moei has quit (Quit: Leaving...).
22:31:44 -!- nfd9001 has joined.
23:17:31 <fizzie> Well, arguably it's a four-layer cake if you also count the part that's controlled by the service provider. Although the jam between layers 2 and 3 is pretty thin.
23:17:37 <fizzie> The outermost part I don't know too much about, but from circumstantial evidence it's a QEMU/KVM virtual machine, which exposes some sort of storage though the virtio block driver.
23:17:49 <fizzie> Under that, there's a systemd-nspawn container, which sets up a container made out of Linux namespaces: the mount, PID, network and user ones. A few directories (the HackEso code) are shared as read-only bind mounts into the mount namespace, and one (the HackEso data) as a read-write bind mount.
23:18:14 <fizzie> That container is the level where the actual multibot binary is running.
23:18:27 <fizzie> And then finally there's the last level of sandboxing, where each of the HackEso commands is executed in a separate user-mode Linux instance. That uses the UML hostfs to mount the container system's userspace (well, most of it) into the UML as read-only, and the HackEso repository as read-write. And the UML has its own (mostly empty) root filesystem from an initrd, and /tmp as a tmpfs.
23:18:45 <b_jonas> fizzie: isn't the outer layer xen-based?
23:19:18 <fizzie> Not any more. At CloudAtCost I think it might've been, but at Bytemark I think it's KVM.
23:19:38 <b_jonas> oh, what fizzie is saying makes much more sense than what I said
23:19:59 <fizzie> Judging from the "QEMU Virtual CPU version 2.1.3" /proc/cpuinfo model name.
23:23:00 <b_jonas> `fetch ../MGYi.txt http://dpaste.com/3CVV3FH.txt
23:23:01 <HackEso> In another world: ../MGYi.txt
23:23:07 <b_jonas> `fetch /MGYi.txt http://dpaste.com/3CVV3FH.txt
23:23:08 <HackEso> In another world: /MGYi.txt
23:23:28 <fizzie> Fetch will only accept /hackenv paths, I think.
23:23:40 <b_jonas> it should only, yes. I had to test it though.
23:25:06 <ais523> on the subject of recognising indentation-sensitive languages: indexed grammars are strong enough but it's probably possible to go weaker
23:25:19 <ais523> I don't think linearly indexed grammars are enough, though
23:25:37 <ais523> because they can't do a^nb^nc^nd^ne^n (just like a context-free grammar can only manage two, a LIG can only manage four)
23:26:11 <fizzie> I think there might've been a symlink-based escape at some point, which was terrible. Not that the hackeso user is able to write much anywhere else, but it could've probably messed up the repository by writing directly into /hackenv/.hg/.
23:27:11 <fizzie> Now it does os.path.realpath to canonicalize the output, and then verifies it's inside .../hackenv/ but outside .../hackenv/.hg/, which is hopefully enough.
23:27:51 <ais523> indexed grammars can't be parsed in polytime in general, whereas this clearly can be, which is why I'm looking for an appropriate class in between
23:28:49 <ais523> fizzie: doesn't that make it technically possible to deduce the existence of directories and symlinks outside hackenv? by traversing out of hackenv and then back into it
23:29:46 <ais523> that might not be a useful breach of security properties, of course
23:29:55 <b_jonas> you could just move the file to the right place from inside the inner context, as with a normal command
23:32:27 <fizzie> ais523: That's probably true, at least if os.path.realpath disallows "xxx/nonexistentdirectory/../yyy" paths.
23:32:54 <ais523> if it's canonicalizing symlinks it would have to
23:33:06 <fizzie> It doesn't seem to disallow that, though.
23:33:27 <ais523> what about xxx/symlink/../yyy?
23:33:40 <ais523> is the .. relative to the symlinik target, or is the symlink not even parsed?
23:34:18 <fizzie> `` python -c $'import os.path\nprint(os.path.realpath("fsadfsafsdaf/.."))'
23:34:48 <fizzie> I guess it does follow the symlink, so you would definitely be able to detect names of symlinks that lead to a separate depth.
23:35:08 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
23:35:38 <fizzie> By testing whether you can fetch to ../aaaaaa/../hackenv/tmp.
23:37:21 <fizzie> `fetch ../../../notasymlink/../srv/hackeso-data/env/tmp/tmp.txt http://zem.fi/tmp/tmp.txt
23:37:22 <HackEso> 2019-07-19 23:37:22 URL:http://zem.fi/tmp/tmp.txt [4/4] -> "tmp/tmp.txt" [1]
23:37:41 <fizzie> `fetch ../../../proc/net/../../srv/hackeso-data/env/tmp/tmp.txt http://zem.fi/tmp/tmp.txt
23:37:42 <HackEso> In another world: ../../../proc/net/../../srv/hackeso-data/env/tmp/tmp.txt
23:38:22 <fizzie> That reveals that /proc/net is a symlink (to /proc/self/net).
23:39:55 <kmc> ooh, I forgot about $'...'
23:40:51 <fizzie> You could also have used that trick to discover the external location /hackenv as /srv/hackeso-data/env, by fetch-probing ../a, ../b and so on. Though I'm pretty sure there's also something that already leaks that into the UML; don't remember what, though.
23:43:10 <fizzie> Oh, right, the fact that the host filesystem path shows up as the "device" of the hostfs mount.
23:43:13 <fizzie> `` grep ' /hackenv ' /proc/mounts
23:43:14 <HackEso> none /hackenv hostfs rw,nosuid,relatime,/srv/hackeso-data/env/ 0 0
23:46:50 <kmc> shachaf: I found a USB-C brick that will chrge my phone or laptop and is not much bigger than a normal phone charger
23:47:02 <kmc> it's maybe 2x as long, but not wider, so it can still fit in a single outlet on a power strip
23:47:47 <fizzie> But will it charge your Raspberry Pi 4 with the incompatible USB-C port?
23:48:06 <kmc> the laptop is taking about 1.5-2.0 A @ 20V
23:48:17 <kmc> fizzie: what exactly did they fuck up?
23:48:47 <kmc> so that's not nearly the 65W of the dedicated charger, but it should still be good enough
23:49:06 <fizzie> AIUI, they had one resistor where the spec called for two separate ones, which involves connecting together two pins that shouldn't.
23:49:12 <kmc> and now I have one fewer thing to carry in my bag
23:49:30 <kmc> fizzie: dang
23:49:35 <kmc> did they fix it?
23:49:39 <kmc> what is the consequence of this
23:49:47 <kmc> presumably it does work sometimes or they wouldn't have shipped it
23:50:20 <fizzie> Yes, it works if you have the dumbest kind of "charging-only" USB 2.0 A-to-C cable, without the e-Marker thing.
23:50:40 <kmc> so it doesn't work with actual USB-C-PD ?
23:50:59 <fizzie> That's my impression, yes. I think they promised the next revision will.
23:51:07 <kmc> ah, the eMarker is the cable quality information that I was talking about without knowing anything about
23:51:51 <kmc> I don't know if my cables have that
23:52:08 <kmc> this little USB-C inline power meter is great
23:52:27 <b_jonas> kmc: is it something actually useful, or is it just another evil proprietary extension so that you have to buy their expensive cable to charge their device or else it will barely work, even though there's no real technological reason for that restriction?
23:52:42 <fizzie> All I know about this is from a post by that Googler who talks about cables.
23:53:01 -!- atslash has quit (Quit: This computer has gone to sleep).
23:53:13 <kmc> b_jonas: beats me
23:53:40 <kmc> b_jonas: I think there is a valid concern about cables not being up to spec to deliver 5A, which is kind of a lot of current
23:53:40 <int-e> . o O ( it'll be like web browser cookies... well meant, but soon to be abused for nefarious purposes )
23:53:48 <fizzie> https://medium.com/@leung.benson <- that one
23:54:10 <kmc> b_jonas: and I don't know if there's anything proprietary about it, such as a licensing fee
23:54:34 <ais523> 5 amps at what sort of voltage?
23:54:45 <kmc> ais523: up to 20 volts
23:54:55 <ais523> the main issues with overloading cables are based on resistance, both directly and in terms of heat dissipation
23:54:57 <kmc> current is what determines heating in a wire, though
23:55:30 <ais523> well, if the voltage is too low you don't have enough power to heat the wire
23:55:46 <kmc> as long as the insulation is up to snuff, it doesn't matter if you have 5 amps at 20 volts or 5 amps at 20,000 volts, the heat dissipation is calculated as I^2 R
23:55:54 <int-e> ais523: the voltage hardly matters
23:55:54 <ais523> but what actually happens is that the current drops below the value you thought you had because the wire has too high a resistance to force that much current through at that voltage
23:55:59 <shachaf> kmc: My friend showed me such a brick two days ago
23:56:18 <kmc> ais523: if you don't have enough power to heat the wire then the current has decreased, yes
23:56:19 <int-e> (though 20k may be pushing it, insulators break down at some point)
23:56:19 <ais523> so I guess that if you know that your voltage is sufficient to send 5A through the cable, the actual voltage doesn't matter
23:56:23 <kmc> P = I^2 * R
23:56:37 <ais523> (however, the cable's resistance will determine how much voltage you need to be able to get that 5A of current)
23:56:42 <kmc> P = I^2 * R = V^2 / R
23:56:54 <kmc> ais523: yeah
23:57:07 <ais523> that P = I^2 * R = V^2 / R equation is so misleading :-)
23:57:19 <ais523> I is the current along the cable, which is fair enough and what people expect
23:57:33 <ais523> V is the voltage difference from one end of the cable and the other, which is /not/ what people expect
23:57:47 <kmc> *shrug* it's a general equation for resistors, not only for cables
23:57:49 <ais523> (they're normally thinking of the difference between positive and negative/ground, not between one end and the other)
23:58:12 <kmc> anyway, the reason long distance power distribution uses such high voltages is that it allows you to use lower current for the same amount of power delivered, which means less power lost as heat
23:58:27 <kmc> and that in turn is the advantage of an AC grid
23:58:28 <int-e> if the voltage difference between the ends of the cables is 20kV you almost definitely have a problem.
23:58:50 <kmc> because with AC you can convert the voltage up or down using simple, passive devices
23:58:50 <b_jonas> does the resistance at the contacts matter?
23:59:02 <kmc> b_jonas: sure, it is part of the overall resistance of the wire
23:59:03 <ais523> at sufficiently high voltage differences the cable hardly matters, you can just send electricity along the air around them
23:59:19 <b_jonas> kmc: sure, but how localized is the heat from that going to be?
23:59:19 <int-e> b_jonas: yes, it does. that's why contacts are usually the point where things get overheated and potentially melt down
23:59:26 <kmc> b_jonas: that's a complicated question
23:59:36 <ais523> (this happens at high frequencies too, the electricity sometimes ends up going through the air around the wire rather than the wire itself
23:59:53 <kmc> there's no simple answer to "how much current can this bit of wire/contact handle" because it depends on the environment it dissipates heat to
00:00:17 <kmc> so we use rules of thumb and generous margins
00:00:22 <int-e> b_jonas: that, and partial cable breaks (which also have locally higher resistance)
00:01:43 * int-e is reminded of the ingenuity of halogen light bulbs.
00:03:02 <b_jonas> int-e: I love those, despite all the problems they cause
00:03:11 <kmc> > For these reasons, the USB-IF has established USB Type-C™ Authentication (C-AUTH)—a means for authenticating devices and thereby protecting against data tampering and illicit use. The USB PD standard implements C-AUTH through use of a public key infrastructure (PKI) which is a time-proven approach in the Internet world. We will not go into details of PKI implementation here; we will simply note that
00:03:14 <lambdabot> <hint>:1:18: error: parse error on input ‘,’
00:03:17 <kmc> C-AUTH starts when an initiator (laptops, tablets, etc.) reads out a certificate chain from a responder (cable, AC adapter, etc.). Notice that the process can cover the cables as well as the sources and sinks, allowing for systems to be configured at a high level of safety.
00:03:21 <kmc> so that does sound pretty proprietary
00:03:29 <kmc> it's 2019 and your power cables are performing cryptographic authentication
00:03:29 <b_jonas> they burn out more easily than traditional bulbs if the lamp is shaking, and use a higher temperature so you have to be careful with what socket you put them into
00:03:53 <int-e> (Light bulbs are, of course, little wires, which are uneven. So they have a pretty awful feedback loop: as they get hotter, the metal evaprates, making the wire thinner, hence hotter.) In halogen bulbs, the wire is covered with a compound of tungsten and some halogen, that breaks down when it gets too hot, depositing metal on the wire, fixing it (for a while)...
00:04:10 <int-e> so they can operate reliably at higher temperatures than ordinary lightbulbs.
00:04:38 <int-e> (Don't necessarily trust me on the details, I'm working from memory here.)
00:04:40 <kmc> yeah thermal runaway is a problem
00:04:47 <kmc> it also occurs in bipolar junction transistors
00:06:25 <b_jonas> int-e: right, that's why the wire is made of tungsten in traditional bulbs, because it keeps well in high temperatures
00:07:29 <pikhq> Isn't that the one where they managed to pull in fucking ASN.1?
00:07:46 <pikhq> i.e. in the search for security they have, I am confident, guaranteed more vulnerabilities.
00:08:39 <ais523> I'm curious as to why people hate ASN.1 so much
00:08:45 <ais523> is it the concept, or just the details?
00:09:10 <ais523> (I'm reminded of me complaining about Language Server Protocol a while back; I love the idea and hate at least most of the details)
00:09:47 <pikhq> It's more-or-less protobuf, except defined in the 80s by telecom engineers.
00:10:56 <pikhq> It also isn't a single serialization format, it's _several_.
00:11:12 <kmc> also because implementations are notoriously bad
00:11:32 <pikhq> Yeah, but then, the formats are pretty tricky to implement
00:11:42 <int-e> Wasn't protocol buffers that awful thing where you can supply data fields in an arbitrary order, and even several times? This is just begging to be used to exfiltrate data...
00:11:47 <kmc> speaking of impossible to implement protocols
00:11:57 <kmc> my new phone seems to be at least *better* at bluetooth
00:12:08 <kmc> in that it can play to my speaker without skipping
00:12:52 <int-e> The main criticism about ASN.1 that I've heard is that it's, apparently, awfully complex. I have never really delved into it.
00:13:39 <pikhq> int-e: It is awfully complex.
00:14:17 <pikhq> It's designed by telecom engineers, and the assumption is there would be a very small handful of vetted implementations everything would use.
00:15:20 <ais523> presumably this predates the current explosion of programming languages?
00:16:04 <pikhq> In practice, ASN.1 seems to get people doing hack implementations of the subset of whatever encoding format their particular application absolutely forces them to implement.
00:16:05 <ais523> hmm, I think there were still quite a few languages around at that time
00:16:36 <pikhq> How many of them were used by telecoms people?
00:17:24 <ais523> I have no idea, I can't think of /any/ offhand
00:17:41 <int-e> Hmm 1984 is too early for Erlang
00:17:45 <ais523> when does Erlang date from? it would have been appropriate if it existed at the time
00:18:02 <int-e> (I just looked that up)
00:18:54 <ais523> apparently the first Erlang implementation was written by a telecom company in Prolog
00:19:04 <ais523> so at least one telecom company was presumably using Prolog in 1984
00:19:18 <ais523> (they subsequently had to abandon that impl because it was too slow; if they were using a general Prolog, I'm not surprised)
00:19:21 <int-e> https://en.wikipedia.org/wiki/PLEX_(programming_language) is a thing
00:19:25 <int-e> (Also Ericson. Funny.)
00:19:25 <kmc> https://www.youtube.com/watch?v=xrIjfIjssLE
00:19:28 <kmc> Erlang: The Movie
00:19:48 <kmc> RIP Joe Armstrong :(
00:23:44 <ais523> is **bolded text** in Markdown semantically <strong> or <b>? does it need some way to indicate both tags?
00:25:09 <ais523> hmm, MDN's description of when to use <b> over <strong> doesn't convince me, I would use <i> in those cases
00:25:57 <ais523> fwiw, *italic text* in Markdown is nearly always used for <i> not <em>
00:27:01 <ais523> (the semantic difference between <i> and <em> is fairly easy to understand once you know it: <em> is audible when spoken, <i> isn't)
00:27:12 <kmc> interesting
00:29:12 <ais523> so you use <i> for things like foreign words, terms you're defining, and the like; and <em> to indicate words which are stressed more than their position in the sentence would normally imply
00:29:42 <kmc> there are CSS attributes for spoken pages, right?
00:31:10 <int-e> "terms you're defining" -- I think I *would* stress them when reading definitions out loud.
00:31:42 <ais523> hmm, maybe <em> is correct for those then
00:32:12 <zzo38> Also sometimes you may be using a program without CSS to view, and some don't include any CSS attributes for speech even if they are for otherwise.
00:33:23 <zzo38> I also think someone mentioned CSS has commands to check if it is interlace or progressive video, but such thing does not seem to me it would belong for CSS; but the command to check for mono or colour seem like useful.
00:34:18 <kmc> that's an interesting one
00:34:26 <kmc> perhaps there are some animations that would not look right with interlacing
00:34:30 <kmc> or perhaps it's just for completeness sake
00:34:35 <kmc> can you detect the display refresh rate?
00:35:10 <ais523> kmc: https://developer.mozilla.org/en-US/docs/Web/CSS/@media/update-frequency
00:35:14 <ais523> apparently only qualitatively
00:35:15 <kmc> how about the color depth
00:35:55 <kmc> ais523: that's cool
00:36:10 <ais523> kmc: you have a choice there: bits-per-channel, color gamut, or absolute number of colors
00:36:19 <ais523> (the latter's for paletted devices)
00:36:30 <kmc> is CSS always sRGB
00:37:44 <ais523> it supports "rgb", "rgba", "hsl", "hsla", it doesn't appear to list a color space?
00:37:49 <ais523> I hate it so much when programs do that
00:38:03 <ais523> I even wrote a blog post about it: http://nethack4.org/blog/gamma.html
00:38:05 <int-e> https://developer.mozilla.org/en-US/docs/Web/CSS/@media/light-level ... wow
00:38:25 <zzo38> For videos, it seem to me that whether it is interlace or progressive, and refresh rate, and so on, would be part of the video selection and not relevant for CSS, I should think.
00:38:41 <zzo38> Is there a command in CSS to select a colour by index number rather than by RGB?
00:38:48 <kmc> that's interesting int-e
00:38:51 <kmc> most phone can sense that
00:38:53 <kmc> i wonder if they use it
00:39:00 <kmc> "This code will likely not work on any devices (device compatablility is low)."
00:39:09 <ais523> I was about to quote that too :-)
00:39:13 <kmc> also I guess it's a draft
00:39:35 <zzo38> (for indexed colour displays, it would be useful to ensure the colours are different from each other, since otherwise it might use the same colour for many things since it is the closest colour)
00:40:13 <zzo38> Also, can any web browser have option to pretend to have a slower update frequency than it actually does?
00:40:57 <ais523> it would be easy enough to implement that
00:41:06 <ais523> I don't think many people would use it, except possibly for testing
00:41:35 <kmc> for the ambient light thing it actually suggests that browsers should have controls to set it manually
00:41:38 <kmc> for accessibility
00:43:05 <pikhq> Looks like modern CSS allows you to explicitly specify a colorspace for color values, but it's with a special uncommonly used syntax.
00:43:34 <pikhq> If you don't use that, and instead use the "rgb", "rgba", "hsl", and "hsla" color things, it's interpreted as an sRGB value.
00:43:57 <zzo38> Also, it says that Media Queries 4 deprecated some media queries, some of that I think may be useful to have. (I think you probably can use "screen" instead of "tv", "projection", and "handheld", but "tty" and "braille" seems like useful to have separately, I think.)
00:44:02 <int-e> kmc: it's an interesting thought nontheless.
00:44:20 <kmc> media type: stone tablet
00:44:39 <kmc> media type: tattoo
00:44:40 <pikhq> But e.g. color(rec2020 1 1 1); is white in Rec.2020.
00:45:06 -!- Sgeo__ has joined.
00:45:07 <pikhq> You can also import an ICC value with it, and use the colorspace defined there.
00:45:34 <kmc> is css esoteric
00:45:46 <ais523> that's bizarre, why would you need a complex colorspace when /encoding/ a color for CSS?
00:46:23 <ais523> the complexity should normally be on the decode side, because that's what knows the properties of the screen or other display device
00:46:39 <ais523> the only thing I can think of is cases where you need more than three color channels
00:46:40 <pikhq> This is in addition to letting you explicitly state a color in Lab.
00:47:01 <kmc> but can I explicitly state an emission spectrum
00:47:22 <ais523> stating an emission spectrum would probably be incorrect, you're encoding to be seen by humans
00:47:30 <zzo38> For tattoo, I suppose you could use "print", maybe.
00:47:41 <ais523> so what you really want to be able to state is the subjective experience of colour you want people to be able to perceive when they look at your colour
00:48:13 <int-e> ais523: 4 channels to accomodate red-green color blindness?
00:48:42 <kmc> what about tetrachromats!
00:48:56 -!- Sgeo_ has quit (Ping timeout: 272 seconds).
00:48:59 <int-e> Specifying an emission spectrum has a certain charm. Of course, most hardware just won't accomodate that.
00:49:07 <zzo38> What I want to be able to specify is a colour by index number. (If not supported, the other colour specification would be used.)
00:49:10 <ais523> there are some printers that use six colours of ink
00:49:14 <kmc> we should be able to specify subjective colors for different species
00:49:20 <kmc> some animals can detect polarization of light
00:49:23 <kmc> such as cephalopods
00:49:24 <int-e> And what if your website is supposed to attract bees :)
00:49:35 <ais523> kmc: even humans, if wearing sunglasses
00:49:40 <kmc> this is true
00:49:41 <b_jonas> and different angles of view, and differnt tinted glasses, yes
00:49:43 <kmc> and a little bit if not?
00:49:44 <int-e> (I was thinking ultraviolet, but polarization is a great idea as well.)
00:49:51 <b_jonas> also different lighting if it's printed media
00:49:55 <zzo38> My character Ziveruskex can see five colours rather than three, but they don't have a computer machine so it is not a problem
00:50:10 <ais523> being able to produce circularly polarised output would be useful in showing 3D images
00:50:12 <kmc> also there should be support for making regions of the screen reflective
00:50:20 <int-e> b_jonas: oh yes, we can finally distinguish between transparent and reflective windows then
00:50:24 <ais523> kmc: that's just black
00:50:29 <b_jonas> zzo38: don't they at least have illustrations drawn on paper in ink?
00:50:44 <ais523> most screens are naturally somewhat reflective due to being made of glass, and the reflections are more visible if you don't show anything behind them
00:50:46 <kmc> devices which do not support turning parts of the screen into mirrors can emulate it using the front-facing camera
00:50:47 <zzo38> ais523: Yes, I suppose so. Maybe there could be the "3d" command for such purpose?
00:50:55 <kmc> ais523: have you seen the "magic mirror" projects?
00:51:04 <zzo38> b_jonas: Perhaps, but it is just a fictional character anyways.
00:51:09 <kmc> it's a computer screen mounted behind a half-silvered mirror
00:51:11 <int-e> (That's echoing old joke... somebody was saying that they don't see the point in transparent windows. But they would like to have reflective windows so that they could see what's going on behind them.)
00:51:23 <kmc> https://www.makeuseof.com/tag/6-best-raspberry-pi-smart-mirror-projects-weve-seen-far/
00:51:44 <kmc> so it looks like a regular mirror but you can draw stuff on top (light-colored only, I guess)
00:51:50 <kmc> looks pretty damn futurey
00:51:54 <ais523> oh wow, I'm rereading this blog post I wrote and got reminded of ODA
00:52:01 <zzo38> One thing that it seem that only Mozilla has so far is, to select default foreground/background colours by CSS codes. That way you could have reverse video without having to override the user's background/foreground colour settings
00:52:33 <ais523> CSS isn't eso mostly because it's too widely used
00:52:38 <b_jonas> zzo38: that's mozilla only, really?
00:52:45 <ais523> ODA, on the other hand, seems absolutely insane to a modern audience
00:52:57 <zzo38> b_jonas: I think so, but I don't know
00:53:08 <kmc> ais523: C++ is also widely used, yet it's definitely eso
00:53:22 <b_jonas> ais523: it's not widely used because you get a small selection of colors. you don't get extra colors for, like, error messages or anything, and you can't just make them red because that could clash with the default colors. so the safest method is to set the color of everything.
00:53:34 <kmc> what's ODA?
00:53:46 <b_jonas> you get the foreground, background, link, visited link, and a few more stuff like colors in controls
00:54:11 <ais523> kmc: suppose you're trying to work on a common format for word processors to share information, you have identical goals to HTML
00:54:18 <zzo38> b_jonas: That is why I want to have the ability to specify the index numbers for colours rather than RGB.
00:54:31 <zzo38> (If index numbers are used, then they won't clash)
00:54:31 <ais523> but HTML hasn't been invented yet (nor have SGML/XML), nor has the Internet (so you're thinking mostly in terms of editing printed documents)
00:54:39 <int-e> https://en.wikipedia.org/wiki/Open_Document_Architecture?
00:54:41 <ais523> so instead, you attempt to generalise VT100 control codes
00:55:05 <ais523> the project started in 1985 but wasn't finished until 1999, by which point it was completely out of date and nobody used it
00:56:12 <b_jonas> ais523: wouldn't everyone just use wordstar format?
00:56:33 <ais523> b_jonas: there was a format explosion at the time, ODA was an attempt to fix the problem
00:56:39 <ais523> it'd probably have worked if it had been written a bit faster
00:57:03 <ais523> or, hmm, Wikipedia thinks it was doomed to failure anyway
00:57:11 <int-e> Now why am I thinking of jigsaw in this context? Is there a connection or is it just misfiring synapses?
00:57:25 <ais523> because the idea was imposed top-down in Europe and the American word processor manufacturers liked their lock-in
00:57:56 <zzo38> Is ODA less messy than HTML and CSS?
00:58:11 <b_jonas> ais523: it's not just about lock-in. hardware was less capable, and it was harder to write good software back then.
00:58:17 <ais523> zzo38: I don't think so
00:58:22 <int-e> "generalize VT100 control codes" sounds like a recipe for making a horrible mess.
00:58:35 <ais523> I ended up having to read part of the ODA standard because it was referenced by a different standard
00:58:38 <kmc> it's also very not-declarative
00:58:52 <kmc> it's a weird little machine for updating a terminal state in-place
00:59:19 <b_jonas> kmc: does it at least only go from top to bottom so it can be printed easily?
00:59:33 <ais523> I guess my horror at ODA is that you've got this huge complex document format, and when it gets right down to the lowest level, bold text is still represented as ESC [ 1 m
00:59:35 <int-e> Probably feels like more like driving an old dot matrix printer (which is something I've actually done) :)
00:59:40 <b_jonas> so you need like only one line of buffer?
01:00:02 <ais523> b_jonas: even Ecma-48 is pretty out-of-order capable
01:00:30 <zzo38> I like DVI printing format
01:00:33 <int-e> . o O ( switch to this mode, then we submit some data, then we switch out and to another mode, print some more data, and all hell will break loose if the output terminal is 132 instead of 80 characters wide )
01:00:35 <ais523> and suggests codes for a sort of meta-editing where you edit the codes that get sent to the lower level which actually produces the output (and is capable of moving around within that)
01:00:57 <ais523> there's an old computer monitor next to me at the moment
01:01:08 <ais523> it /still/ has a guide to control codes for a particular model of printer taped to it
01:01:38 <ais523> underlined was ESC - l, apparently
01:01:47 <ais523> (these don't seem to be standardised codes, at least they're different from VT100)
01:02:02 <ais523> oh, it's probably a 1 rather than an l
01:02:03 <fizzie> I was going to have #esoteric logged to a dot matrix printer with a tractor feed once, for æsthetic reasons.
01:02:09 <ais523> they're not very different in the font used for the guide
01:02:24 <zzo38> The printer codes are ESC/P which is different from the VT100 codes for the display
01:03:10 <int-e> Oh good old times. Consumer hardware that came with manuals that actually told you how to program it. (And those were not 100s of pages.)
01:03:59 <ais523> I think the printer manual I got the codes from was probably hundreds of pages
01:04:26 <ais523> <ais523> (Incidentally, there's something faintly mind-blowing about there having been around 14 years of effort spent on attempting to implement HTML using terminal control codes.)
01:04:44 <int-e> It might have been, because it was also printed in several languages, now that I think of it.
01:05:57 <kmc> s/effort/bickering/
01:06:39 <ais523> hmm, ODA seems like it's definitely the most appropriate thing to use for INTERCAL manuals
01:06:59 <b_jonas> int-e: not int he same volume, I think. at least the manual that I had for the epson matrix printer was only in Hungarian. it even had a few typos in control sequences exactly of the kind you expect from a translated book before digital typography, when the typesetter doesn't quite understand what the book is about
01:07:02 <zzo38> int-e: It is how I intend to design computer, that the manual does describe all of the programming.
01:07:07 <ais523> complying with standards that nobody else complies with is more or less the most modern-INTERCAL thing possible
01:07:14 <int-e> ais523: t(?)roff isn't obscure enough?
01:07:16 <b_jonas> like an occasional 1 instead of l or backwards and similar
01:07:38 <ais523> NetHack still uses it seriously
01:07:45 <ais523> and it's still the backend for man(1)
01:08:04 <ais523> b_jonas: that's not necessarily a lack of subject matter knowledge
01:08:22 <ais523> these are completely arbitrary codes, you often can't guess whether l or 1 is correct if you don't already know even if you know all the context and are an expert on the subject
01:08:35 <b_jonas> ais523: sure you can guess. how else would I have recognized the typoes?
01:08:40 <b_jonas> there may be more that I didn't recognizer
01:08:53 <ais523> well, I guessed 1 in this case just because the "end underline" code used a 0 in that position
01:08:58 <b_jonas> admittedly it has _fewer_ such typoes than the Hungarian translation of the K&R book
01:09:02 <b_jonas> that one is much more terrible
01:09:29 <b_jonas> I think at one point they mixed up whether you need a \000 or a 0 for a boolean
01:09:39 <ais523> Ecma-48 is a bit better in this respect, it has a very clear grammar to allow you to ignore unknown codes correctly
01:10:02 <b_jonas> like, they show both ascii and hex of the bytes in the control sequence, and the ascii shows 0 and the hex shows 00
01:10:02 <ais523> and 1 and l are in completely different lexical classes, so using one rather than the other will nearly always make the code grammatically incorrect
01:10:12 <b_jonas> although now it occurs to me that maybe only the lowest bit matters
01:10:48 <ais523> are you talking about printer codes? I guess you must be because C didn't have booleans at the time
01:11:03 <b_jonas> they take booleans like you mention
01:11:17 <b_jonas> unlike the ecma-like codes which use "h" and "l"
01:11:30 <b_jonas> or, for attributes, just different numbers
01:11:39 <b_jonas> 20 higher to turn off the attribute or something
01:12:46 <ais523> saying "h" and "l" is wrong, I think; Ecma-48 gives the byte sequences to send purely using hexadecimal, there's not much suggestion that it should correspond to anything in ASCII
01:13:16 <ais523> the only reason ASCII /might/ be the correct way to interpret characters after ESC is the suspicious coincidence that numbers are sent in decimal using 0x30…0x39 as decimal digits
01:13:28 <b_jonas> the K&R translation has a typo related to the \000 character too by the way: the reference implementation source of the fgets function wants '\n' at the end of the string rather than 0
01:14:35 <b_jonas> ais523: well ok, but it's intermixed with ordinary character data, and sometimes, when a program parses the more complicated escape sequences wrong, the bytes of an escape sequence can end up interpreted as ordinary characters
01:14:53 <b_jonas> that more often happens at the receiving end, for a program parsing keyboard input that a terminal gives to it
01:14:57 <b_jonas> but it can happen either way
01:15:33 <ais523> "and sometimes, when a program parses the more complicated escape sequences wrong, the bytes of an escape sequence can end up interpreted as ordinary characters" ← Ecma-48 is really well-designed so that that absolutely cannot happen, the only time you see it is when terminal developers completely ignore the standard's information on what the grammar of terminal codes is
01:16:20 <ais523> I get the feeling that most terminal developers don't even realise that, say, = is a digit in Ecma-48 (because it's in the 0x3? range)
01:16:41 <b_jonas> ais523: it happens often for keyboard input with terminfo+ncurses programs, because it basically only tries to match literal sequences to the escape codes representing the keyboard input (except maybe some rules with the mouse)
01:17:01 <b_jonas> and happens with other programs too with generic terminal input handling (not ecma-specific in theory)
01:17:31 <b_jonas> I do realize that, I know my ascii table
01:18:19 <zzo38> I also think that any CSS media type you should also be allowed to specify continuous or paged media. For example, you might have a presentation that is screen but also paged, or if you use continuous paper then it will be print but also continuous.
01:18:23 <ais523> parsing a terminal code in Ecma-48 is completely trivial and most of the people who don't check the standard probably have more complex code to do it than the code the standard actually wants
01:18:24 <b_jonas> ais523: also, a few of the control characters are interpreted the same when they're inside an escape sequence and when they're not, which also shows that they're supposed to be the same character space
01:18:31 <ais523> at least, for codes starting CSI
01:18:51 <kmc> zzo38: that's a very good point
01:19:07 <b_jonas> ais523: yes, but the problem is that terminfo and many other programs don't even try to parse ecma-48 codes, they try to work with arbitrary terminals, even non-ecma based ones
01:19:31 <ais523> b_jonas: there's actually two layers, a decoding layer that goes bytes → codepoints and then Ecma-48 below that which mostly operates on the codepoints (but the decoding layer leaves, e.g., CSI-sequences the same so that they stay untouched)
01:19:46 <ais523> the decoding layer is in an entirely separate standard, and that explains why some things work consistently regardless of context
01:20:04 <ais523> the decoding layer is widely disrespected nowadays, though, because it is inconsistent with most encodings in widespread use
01:20:09 <b_jonas> in particular, termbot had joe compiled to DOS, with some mild changes by me, and that one parses DOS keycodes, not ecma, but knows nothing about either, just has the literal sequences in the config file
01:20:15 <ais523> e.g. it isn't compatible with Windows-1252 nor with UTF-8
01:20:57 <ais523> so I ended up having to work out my own standard for mixing it with modern encodings when I wrote the bytes → codepoints layer for asciinema
01:21:59 <ais523> hmm, does anyone actually use UTF-1? it's the traditional-terminal-decoding-layer-compatible Unicode encoding
01:22:51 <ais523> https://en.wikipedia.org/wiki/UTF-1
01:23:08 <b_jonas> I know about UTF-7, which is an encoding of unicode chars with only low bytes, and is used in MIME headers and mobile phone contact list export formats
01:23:22 <ais523> it's a multibyte encoding system that's sort-of ASCII compatible (ASCII characters encode to themselves but encodings of other characters can contain embedded ASCII) and avoids both the C0 and C1 ranges
01:23:55 <ais523> trying to make terminal standards work with modern encodings is hard because they both try to use C1 for different purposes
01:24:34 <ais523> so in practice, what happened is that there are fallback codes specified for 7-bit connections that let you encode all the C1 codes using C0 codes, and terminals support /only/ those so that the C1 range can be used for things like UTF-8
01:25:14 <b_jonas> yeah, but didn't those fallback codes basically always exist, because terminal io was sometimes sent through 7-bit serial/modem connections?
01:25:16 <kmc> let's use UTF-20.1 or whatever it is
01:25:43 <ais523> kmc: it goes from 0x0 to 0x10ffff (21 bits would be 0x1fffff)
01:25:51 <kmc> having those C0 and C1 codes in the bottom 256 codepoints is such a waste of space :(
01:26:30 <kmc> ais523: but subtract 2048 values for surrogate pairs
01:26:32 <ais523> I'm not convinced, many of those codes are pretty important
01:26:35 <kmc> which are not valid Unicode codepoints
01:26:35 <ais523> OTOH, many of them aren't
01:26:39 <kmc> most of them aren't
01:27:05 <kmc> which C0 points are widely used
01:27:15 <ais523> `perl-e print 0x10ffff
01:27:24 <ais523> `perl-e print 0x10ffff - 2048
01:27:39 <ais523> I don't want to subtract 2048, 1114111 is a much prettier number
01:27:42 <kmc> 00 (NULL), 07 through 0D (the ones with C escapes), and 1B (escape)
01:27:49 <kmc> that is a pretty number
01:27:54 <ais523> also there are a few other miscellaneous invalid codes, like the byte-reversed byte order mark
01:27:55 <b_jonas> kmc: no, that's not what's the waste. it's having very rare scripts in the low 2048 codepoints is what's a waste. though ais told me that was a historical accident, because the code points were assigned before utf-8 was invented.
01:28:08 <kmc> b_jonas: it's all historical accidents
01:28:18 <kmc> they at one point naïvely thought they could encode everything in 16 bits
01:28:37 <kmc> let's go back to baudot
01:28:44 <kmc> baudot is still used sometimes in ham radio
01:28:54 <ais523> it doesn't scale very well to adding new characters
01:29:14 <kmc> https://www.sigidwiki.com/wiki/Radio_Teletype_(RTTY)
01:29:20 <kmc> this is still fairly popular
01:29:26 <kmc> one day I picked up a Japanese RTTY contest from my house
01:29:29 <kmc> tons of RTTY traffic
01:29:51 <zzo38> I think Unicode is messy. (I partially wrote (and altered) a document of Universal Terminal Character Coding, which is better for use with fix pitch displays without semantic character coding for displayed characters. Some of the characters are in Unicode, some have a ambiguous conversion to Unicode, some have a ambiguous conversion from Unicode, and some are not in Unicode at all.)
01:29:59 <ais523> `fetch http://nethack4.org/esolangs/7/7.pl
01:30:00 <HackEso> 2019-07-20 01:30:00 URL:http://nethack4.org/esolangs/7/7.pl [23458/23458] -> "7.pl" [1]
01:30:12 <HackEso> 7.pl \ bin \ canary \ emoticons \ esobible \ etc \ evil \ f \ factor \ good \ hw \ ibin \ interps \ izash.c \ karma \ le \ lib \ misle \ paste \ ply-3.8 \ quines \ quinor \ quotes \ share \ src \ test2 \ testfile \ tmflry \ tmp \ wisdom
01:30:29 <HackEso> mv: missing destination file operand after '7.pl interps/7' \ Try 'mv --help' for more information.
01:31:11 <zzo38> (And, some characters, if you convert to Unicode you need multiple Unicode characters to represent it.)
01:31:27 <ais523> `` printf '#!/bin/sh\necho "$1" | interps/7/7.pl /dev/stdin' > ibin/7
01:31:44 <ais523> `` chmod a+x interps/7/7.pl
01:32:03 <ais523> `! 7 5325101303040432004513151401430134321027403
01:32:18 <ais523> (I got the program off TIO, thus the weird capitalisation)
01:32:19 <b_jonas> ais523: shouldn't that have an exec in it?
01:32:31 <ais523> b_jonas: I guess it would be marginally more efficient?
01:32:38 <ais523> i don't think there's a correctness difference
01:32:53 <ais523> also, the fact that I'm using an anonymous pipe here might confuse things
01:33:06 <ais523> because the echo and the 7.pl may have to run in parallel
01:33:18 <b_jonas> I think it would make the exit code correct even if the interpreter dies to a signal
01:33:28 <b_jonas> but yeah, that probably doesn't matter
01:34:25 <ais523> kmc: try translating 32 51 01 30 30 40 43 20 04 51 31 51 40 14 30 13 43 21 02 from base 6 into binary, you'll get hello world in Baudot
01:34:34 -!- Sgeo_ has joined.
01:34:51 <ais523> so there is some use being made of it nowadays, admittedly in esolangs
01:34:57 <kmc> what lang?
01:35:03 <ais523> https://esolangs.org/wiki/7
01:35:41 <ais523> when Donald Knuth wrote an INTERCAL program, he used three-letter names for line labels via baudot-encoding them into 15-bit numbers
01:35:59 <b_jonas> kmc: it's ais's underload-like that, instead of using parenthesis, uses levels of escaping values to such functions that output that value, or something strange like that
01:36:22 <ais523> b_jonas: the original aim was "Underload but you could generate /any/ string even if its brackets weren't matched"
01:36:26 <ais523> then it got a little out of control
01:36:42 <b_jonas> the escaping part somewhat reminds me to Endo DNA
01:37:00 <b_jonas> well, my original aim for Consumer Society wasn't what it eventually turned to
01:37:18 <b_jonas> but it somehow converged into a language with very simple definition but interesting properties, which is why it survived
01:37:31 <b_jonas> I have other ideas that I haven't managed to turn to interesting esolangs
01:37:46 -!- Sgeo__ has quit (Ping timeout: 246 seconds).
01:38:10 <ais523> it tends to do well on CG&CC when it's outputting constant strings, because it's pretty good at it (Baudot's a pretty dense encoding) and it lets you do some pretty complex explanations of string literals sometimes
01:38:43 <ais523> here's a good example: https://codegolf.stackexchange.com/questions/183248/output-the-%c5%8bar%c3%a2%c3%be-cr%c3%ae%c3%be-alphabet-song-without-using-many-letters
01:42:18 <kmc> what happens if I plug a USB A-to-C cable into my C charger and then plug the male A into my laptop
01:42:34 -!- Sgeo has joined.
01:44:04 -!- Sgeo_ has quit (Ping timeout: 246 seconds).
01:44:11 <fizzie> Then, there would be a disaster.
01:44:53 <fizzie> (I'm guessing probably it's safe. That sentence just popped to my mind. It's a quote from a book.)
01:45:48 <kmc> which book
01:46:42 <fizzie> Look to Windward, by Iain M. Banks. It's not really related contextually, and the quotation was slightly edited.
01:47:51 <fizzie> Context: http://ix.io/1OX1
01:48:00 <kmc> god, it must be such a nightmare to make all these different USB standards work together
01:48:10 <kmc> including the proprietary USB2 quick charge protocols
01:48:17 <kmc> the Pixel 3a seems to support at least some of those
01:48:28 <ais523> 7 is very good at writing quines of varying levels of cheatiness
01:48:29 <kmc> because I can plug it into a USB-A port and get more than 0.5A
01:48:53 <kmc> and I think this A charger port does not do actual USB-PD, although I have heard that can be done in theory
01:49:01 <HackEso> 2237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237223722372237
01:49:18 <fizzie> There's that BC thing as well, right?
01:49:29 <HackEso> 323'copy' command run with no bar in the frame at interps/7/7.pl line 607, <> chunk 1.
01:49:36 <HackEso> 'copy' command run with no bar in the frame at interps/7/7.pl line 607, <> chunk 1.
01:49:49 <ais523> oh right, the stack underflow happens at the wrong moment
01:49:58 <ais523> 3 exits the program on stack overflow but nothing else does
01:50:12 <ais523> other than the end of the program
01:50:19 <ais523> so you need to time the stack underflow so that it hits in a 3 command
01:50:21 <fizzie> ("that BC thing" = USB Battery Charging Revision 1.2.)
01:50:33 <kmc> fizzie: I don't know anything about that
01:50:43 <kmc> I don't know about the different USB2 fast charge things
01:50:50 <ais523> 223372233 is uncontroversially a valid quine
01:50:51 <kmc> just that they are complicated hacks
01:51:01 <fizzie> "To recognize Battery Charging, a dedicated charging port places a resistance not exceeding 200 Ω across the D+ and D− terminals." That doesn't sound too complicated.
01:51:06 <ais523> no, it isn't, the second 2233 is using itself to print both halves
01:51:19 <kmc> fizzie: there are more complicated ones
01:51:30 <ais523> you'd need the second half to read the /first/ half twice
01:51:52 <kmc> fizzie: https://en.wikipedia.org/wiki/Quick_Charge
01:51:59 <ais523> that one's an uncontroversially valid quine
01:52:18 <kmc> fizzie: ah, this is what I read about it http://blog.deconinck.info/post/2017/08/09/Turning-a-Quick-Charge-3.0-charger-into-a-variable-voltage-power-supply
01:53:35 <fizzie> I guess the problem with USB BC 1.2 is that it only goes up to 1.5A at 5V, which isn't really all that much.
01:54:08 <kmc> there's a nice state machine that looks like a butterfly
01:54:19 <kmc> fizzie: yeah
01:54:40 <kmc> you need more than 5V to fast charge anything laptop/tablet-ish
01:55:18 <kmc> my laptop charges at 20V, whether from USB-C or the dedicated brick
01:55:36 <kmc> I guess that also simplifies the power circuitry, although if it's going into a buck converter, probably doesn't matter that much
01:56:14 <kmc> I'm glad I got this USB3 meter. it is fun
01:57:47 <kmc> you can buy a soldering iron that runs from USB3
01:57:53 <kmc> https://www.amazon.com/UY-CHAN-Programmable-Pocket-size-Soldering/dp/B07G71CKC4
01:58:06 <kmc> s/USB3/USB-PD/
01:59:58 <kmc> the Pixel 3a battery life is not as good as my Moto G5+, which was really exceptionally good
02:02:41 <ais523> `perl-e print 0x10ffff - 2048 - 66
02:02:49 <ais523> that's not too bad-looking a number
02:03:04 <ais523> (in addition to the 2048 surrogates, there are 66 codepoints in range that are invalid for other reasons)
02:04:08 <ais523> FDD0 to FDEF were reserved for programs to use internally, knowing that they'd never clash with any valid codepoint
02:04:20 <ais523> also, any codepoint ending …FFFF or …FFFE is invalid
02:04:56 <ais523> (0xFFFE being the most famous, because it's a byte-swapped 0xFFEF, and if a byte-swapped byte-order-mark could appear at the start of a file that'd be /really/ bad)
02:07:22 <kmc> oh, interesting
02:08:16 <zzo38> In some programs 0 will not be valid either.
02:08:43 <kmc> they've started to do some weird things with combining characters
02:08:49 <j4cbo> take a drink for “modified UTF-8”
02:08:54 <kmc> such as https://emojipedia.org/transgender-flag/
02:08:58 <ais523> I like the UTF-8 fake NUL character
02:09:00 <int-e> . o O ( r/aell/yb da )
02:09:17 <kmc> is this "Emoji 13.0" spec part of Unicode?
02:09:54 <ais523> there should probably be a proper, official name for the encoding that's UTF-8 except that NUL is encoded as C0 80 rather than 00
02:10:11 <zzo38> It is simply a overlong encoding for NUL
02:10:26 <j4cbo> ais523: JNI calls it modified UTF-8
02:10:31 <ais523> ("modified UTF-8" has the problem that it encodes astral plane characters by splitting them into surrogates and UTF-8ing the surrogates separately…)
02:10:38 <j4cbo> JNI does that too yeah
02:10:54 <j4cbo> I’ve never heard of something that uses overlong null but doesn’t do the surrogate thing?
02:10:57 <kmc> WHITE FLAG followed by "MALE WITH STROKE AND MALE AND FEMALE SIGN" (:rolleyes:)
02:11:07 <kmc> there's also WTF-8
02:11:15 <kmc> https://simonsapin.github.io/wtf-8/
02:11:17 <kmc> is that the same?
02:11:22 <ais523> j4cbo: nor have I, but that doesn't mean it's a bad idea
02:11:47 <zzo38> WTF-8 is just another use of UTF-8, that supports encoding lone surrogates.
02:11:49 -!- xkapastel has joined.
02:12:07 <zzo38> (WTF-8 is useful if you want to convert UTF-16 to UTF-8.)
02:12:20 <j4cbo> soooooo muuuuuch damage was done in the brief period when “Unicode” meant what we now call “UCS-2” and 64k codepoints ought to be enough for anyone
02:12:55 <j4cbo> the windows API, NTFS, USB, Java, wchar_t, ...
02:13:02 <ais523> I think a perfect encoding would be more radically different from Unicode, so maybe the current astral plane mess is beneficial in that it provides more incentive for a fix
02:13:35 <ais523> I've been thinking for a while about a format I call "Duocode", which represents each character as a pair: one element is the visual appearance of the character, the other the language/script/similar context
02:13:59 <ais523> so, e.g., Cyrillic a and Latin a have the same appearance, Latin a and Latin b have the same script
02:14:13 <ais523> this fixes a number of problems more or less automatically
02:14:39 <zzo38> I think different kind of character codings can be used for different purposes. But, yes that "Duocode" could work if you want both display and semantics without having to worry about both in programs that don't use it.
02:15:04 <ais523> for example, suppose you're reading some printed Japanese text that you want to type into a computer
02:15:11 <ais523> and find a lone thing in the text that looks like an "a"
02:15:32 <ais523> in Unicode, you have to guess which script it's in to use the appropriate context
02:15:48 <ais523> in Duocode, you'd be able to say "unknown script" (or perhaps even "Japanese")
02:15:57 <ais523> *to use the appropriate character
02:16:07 <ais523> really, Unicode's a big mess of mixing appearance and semantic
02:16:18 <zzo38> My own "Universal Terminal Character Coding" also avoids that problem too (but it doesn't have semantics)
02:16:55 * kmc tries to create an emoji for a family with 5 parents and 3 children
02:16:56 <b_jonas> is that like TeX, in which the font and low 8 bit of the character code uniqely determines the dimensions of the character, the upper 8 bits of the character code can't change it?
02:17:31 <ais523> although in this case I think the dimensions might change for different scripts, even the appearance to a small extent
02:17:45 <zzo38> b_jonas: That is a feature of the .TFM format, which is used in TeX (which itself does not support characters longer than 8-bits at all), but may be usable with other programs too.
02:18:06 <kmc> it selects as a single character, but that might be the usual behavior of anything combined with ZWJ
02:18:10 <b_jonas> ais523: anyway, that doesn't sound like a particular good idea to me. now you're just picking two random properties of the character and want to put it in the code. but there are other properties that programs can be interested in, not just those, and you can look them up from tables, so I don't see why your particular format would be the best.
02:18:12 <kmc> it renders the same as a few nuclear families
02:18:24 <zzo38> (I once wrote a program that had to write to a file containing UTF-16 text, with the source file being ASCII. In the parts where the text was exported to the file, it supports any UTF-8, including improper UTF-8 such as Modified UTF-8, CESU-8, etc; and overlong encodings can be used to escape trailing spaces and line breaks, too.)
02:18:27 <kmc> (binary families? whatever)
02:19:14 <ais523> I think Duocode would probably use the same appearance for б and 6 (the first is a Cyrillic lowercase b, the latter an Arabic numeral)
02:19:26 <ais523> but you'd want to render them differently based on the script code
02:19:35 <ais523> b_jonas: I don't consider them random properties:
02:20:05 <ais523> a) they should be a perfect key, in the sense that one script can't meaningfully have two characters that look the same, so the pair should uniquely define the character
02:20:07 <zzo38> (The reason it does this is just due to the output file being UTF-16 and the input file being ASCII; otherwise, it probably won't do such thing, and would use the same encoding as the output file if it is compatible with ASCII.)
02:20:51 <ais523> b) it removes any incentive to merge characters that are almost identical but not quite into identical codepoints, which has caused some controversy in the past (e.g. merging Chinese and Japanese characters that look the same even though they need to be rendered slightly differently)
02:21:36 <b_jonas> ais523: but then you'll just have to set the "script" artificially in such a way that it matches your property (a)
02:21:37 <ais523> c) appearance isn't a random property at all, it's what people use when actually reading a document
02:21:55 <zzo38> Yes, then a font that only supports one character and not the other one, will still be able to approximate it.
02:21:56 <ais523> b_jonas: I don't think there's much artificial about it? either you know or you don't
02:22:03 <ais523> if you know then it's not artificial
02:22:25 <ais523> if you don't know, Duocode will let you say that you don't know, rather than having to try to find a character that looks similar but might mean something totally different
02:22:42 <ais523> it's really easy to, say, mix up Ⓒ and ©
02:23:02 <ais523> when you're using Unicode
02:23:07 <b_jonas> ais523: sure, but in what sense is that "script", rather than just an arbitrary selector among similar looking characters?
02:23:23 <ais523> b_jonas: it's basically the context in which the character appears
02:23:32 <ais523> like, the language you're writing in
02:23:42 <ais523> often it'll be the same for an entire document
02:23:57 <b_jonas> we currently encode that in metadata
02:24:11 <ais523> well, it's a different word because there's a technical distinction, e.g. Russian is a language but Cyrillic is a script
02:24:33 <ais523> perhaps going as far as just making it the language would be better though
02:24:40 <zzo38> How many bits will be used for each part (visual and script)?
02:24:47 <ais523> it depends on whether different Cyrillic-using languages always want to render it the same way
02:25:25 <ais523> zzo38: 16 should be enough for the script half, it'd be pretty tight on the visual half though so that might need to be larger to be on the safe side
02:25:25 <b_jonas> ais523: no of course not. there are either two or three different incompatible appearances for the same cyrillic letters, depending on who you believe
02:26:07 <ais523> oh, the other advantage of recording the language separately is that it lets you know whether two different-looking characters are supposed to be semantically equal or not
02:26:15 <ais523> ö and oe are semantically equal in German but not in English
02:26:19 <b_jonas> you probably need at least two different ones for latin too
02:26:37 <b_jonas> or more likely three, one specifically for turkish only
02:26:47 <ais523> yes, there are, e.g., two different ways to write lowercase a in English
02:27:07 <ais523> one has a curve above the main body, touching it at the right hand side, curving over, and stopping without touching at the left hand side
02:27:16 <ais523> the other has a taller body and a little curve at the bottom-right corner
02:27:59 <ais523> https://en.wikipedia.org/wiki/File:LowercaseA.svg
02:28:10 <zzo38> For typesetting, I think what the .TFM format does is good (except that it is limited to 256 metrics, which is not always enough, and some languages and uses may need a few additional specifications that the .TFM format does not support)
02:28:44 <ais523> I think I'd give them separate codes because there are probably cases where the distinction matters (also, this would basically force the use of a normalization library, which is probably a good thing)
02:30:12 <ais523> anyway, this is all idle/eso speculation, unseating Unicode is almost certainly impossible at this point
02:30:49 <ais523> <Wikipedia> In modern English orthography, the letter ⟨a⟩ represents at least seven different vowel sounds ← that sounds about right for English
02:30:53 <int-e> at least until they run out of code points for emoji
02:31:56 <b_jonas> int-e: they won't, they're already using crazy standardized code point combinations for emoji that work randomly differently for different emoji characters
02:32:29 <b_jonas> combining stuff that is randomly valid or not valid depending on which brand of mobile phone first added the particular emoji and in what year
02:32:38 <ais523> b_jonas: that's done for backwards-compatibility, I think
02:33:10 <ais523> for example, you can zwj gender markers onto emojis representing particular jobs to get a gendered emoji for the job, but if the client doesn't have one it can just render them separately
02:33:35 <kmc> that's how the family emojis work too
02:33:50 <kmc> man + zwj + man + zwj + girl
02:34:04 <kmc> hence me trying to figure out if i can make poly family emojis
02:34:24 <kmc> ah, and the trans flag is the same way
02:34:47 <ais523> zwj got kind-of more and more out of control as time went on, I think
02:34:50 <zzo38> I think it is messy, but so is the rest of Unicode
02:34:59 <kmc> WAVING WHITE FLAG + ZERO-WIDTH JOINER + MALE WITH STROKE AND MALE AND FEMALE SIGN
02:35:35 <ais523> hmm… perhaps you should be able to zwj absolutely anything onto a flag
02:35:41 <ais523> a lowercase a flag would be fun
02:36:48 <ais523> strangely, Gnome renders it differently without the ZWJ but the a doesn't go onto the flag in either case
02:37:13 <kmc> ais523: how about a CIRCLED LATIN CAPITAL LETTER A flag
02:37:19 <b_jonas> just look at how the country flags are encoded
02:37:26 <kmc> how about a CYRILLIC MULTIOCULAR O flag
02:37:34 <kmc> b_jonas: they have a special copy of the latin alphabet, right?
02:37:38 <ais523> or putting regulr emoji on flags: 🏳😀
02:37:38 <kmc> and a pair of those gives an ISO country code?
02:37:54 <ais523> kmc: actually, the whole flag thing was done to avoid having to specify which countries existed
02:37:58 <kmc> my chrome does not seem to do the trans flag thing yet
02:38:11 <ais523> which can be very controversial
02:38:29 <ais523> (I guess there may also be cases where the existence of the country is uncontroversial but which flag to use is controversial?)
02:38:37 <ais523> so yes, they use pairs of what are, effectively, flag surrogates
02:38:38 * int-e wonders whether unicode has the dancing men alphabet (Sherlock Holmes) somewhere.
02:38:40 <b_jonas> ais523: exactly. but the problem is that some of those two-level country codes have been reused already
02:38:53 <kmc> https://blog.emojipedia.org/fun-emoji-hacks/
02:39:02 <b_jonas> they should have used the three-letter country codes to avoid a flag randomly appearing as the flag of an unrelated country ten years later
02:39:45 <b_jonas> int-e: I think that's just a different font for the latin letters. also we don't even know all of it, some letters are missing.
02:39:50 <kmc> https://blog.emojipedia.org/ninja-cat-the-windows-only-emoji/
02:40:01 <zzo38> Then add a date to the flag
02:40:09 <ais523> "🇪 🇺" without the space produces "🇪🇺", so it's not /just/ countries
02:40:27 <ais523> (that's "EU" in regional indicators, for people whose client can't render it)
02:40:37 <b_jonas> int-e: I could just as well ask for the strange futhark rune that Jules Verne uses for the letter "G" but that was probably never used to that meaning anywhere
02:40:43 <ais523> "UN" also seems to work: 🇺🇳
02:41:19 <kmc> apparently some people got butthurt at some point because you can put a "NO" circle-slash over the rainbow flag
02:41:31 <kmc> but you can put it over a frog emoji too so let's call it even
02:41:33 <ais523> is there anything you can't put it over?
02:41:45 <int-e> b_jonas: it's almost like the choices of what's put into Unicode are arbitrary...
02:41:47 <ais523> IIRC it's a combining character
02:41:57 <b_jonas> kmc: we'll fix that in Newspeak
02:42:02 <ais523> hmm… does this mean you can do things like flag-acute and flag-umlaut?
02:42:59 <kmc> emojis are very political, on twitter putting them in your display name is like badges of which causes you support
02:43:03 <kmc> it's hard to keep up
02:43:04 <ais523> Firefox doesn't put the umlaut on top :-(
02:43:10 <ais523> Konversation does, but it can't render the flag
02:43:42 <kmc> the avocado has become the "YIMBY" pro-housing emoji
02:44:23 <kmc> and the rose is a socialist / Labour Party thing
02:44:28 <kmc> and frog is alt-right due to pepe
02:44:48 <kmc> and there's a bunch more
02:44:57 <kmc> but the avocado is the most amusing one
02:45:07 <kmc> also the tastiest of those
02:45:25 <kmc> i ate frog once, do not recommend
02:45:37 <ais523> the rose is the Labour Party's logo in the UK (and has been for decades, predating the emoji), so that one is fairly easy to explain
02:46:40 <int-e> The rose was popular in socialist countries (at least the GDR) as well.
02:47:27 <kmc> oh wow I didn't realize they had different hair styles in addition to skin tones
02:47:31 <ais523> the UK Labour Party tend to oscillate wildly relating how socialist they are, so they're not an ideal reference to use
02:47:58 <ais523> they're unusually socialist at the moment, but were to the right of the Conservatives not all that long ago
02:48:09 <ais523> so they might not be the greatest reference for defining an emoji
02:48:13 <kmc> yeah parties are funny like that
02:48:26 <kmc> DSA also uses a rose
02:49:12 <kmc> https://emojipedia.org/female-singer/
02:49:26 <kmc> I like that several systems use pink/purple hair to identify a singer :P
02:49:43 <kmc> once I flew to the UK with some friends, all of us happened to have brightly colored dyed hair
02:49:58 <ais523> and people assumed you were a pop group?
02:49:58 <kmc> and the customs agent asked "Are you in a band or something?"
02:50:39 <kmc> two of my friends likewise had brightly colored hair and were touring rural china on a geology trip and
02:50:45 <kmc> were stopped /constantly/ by locals wanting a photo
02:50:57 <kmc> seeing westerners was weird enough by itself, let alone ones with bright green hair
02:51:22 <kmc> also some random stranger asked my friend where to buy LSD on the basis that said friend had bright red hair
02:51:50 <kmc> in my first passport photo I had green hair
02:51:54 <kmc> and looked really good
02:52:05 <kmc> second one was also good, but really masculine
02:52:11 <kmc> third (current) is crappy but recognizably female
02:52:20 <kmc> as is my driver's license photo
02:52:36 <kmc> what really pisses me off is I need to get the DL renewed on my birthday next February, even though I got the new one (w/ updated gender marker) this year
02:52:40 <kmc> it didn't reset the expiration date
02:52:43 <int-e> . o O ( identity transformation )
02:53:26 <kmc> they don't have "pregnant man" emojis yet
02:53:49 <kmc> that's going to become a problem at some point
02:54:39 <kmc> i'm disappointed that you can't ZWJ the bride/groom emojis
02:54:54 <kmc> at least on my system
02:55:57 <kmc> merperson... now this is just silly. they should have a combining character so you can join MAN + FISH
02:56:04 <kmc> then we can do all the other animal combinations
02:56:25 <ais523> is this the point at which someone links the XKCD about the vomiting rocket emoji?
02:57:04 <ais523> hmm… at some point you'd assume that correct emoji rendering would become AI-hard (like AI-complete, but harder because you need knowledge of the world too)
02:57:30 <kmc> "The Kiss: Woman, Woman emoji is a sequence of the 👩 Woman, ❤ Heavy Black Heart, 💋 Kiss Mark and 👩 Woman emojis."
02:57:33 <kmc> this is pretty elaborate
02:57:54 <kmc> ais523: haha
02:57:57 <kmc> I hadn't seen that one
02:58:06 <kmc> "Vomiting Dove" makes sense because that's how they feed their young
02:58:16 <kmc> it's also part of the mating ritual
02:58:25 <int-e> ais523: https://xkcd.com/1857/ is better than the vomiting rocket one.
02:58:51 <ais523> slightly less ontopic, though
02:59:17 <kmc> the unicorn's horn should also be a modifier
02:59:24 <ais523> there was a followup which actually reviewed the emoji movie, I think that's better than either (but even less ontopic)
03:00:09 <ais523> https://www.xkcd.com/1870/
03:00:26 <ais523> (for anyone who hasn't found it yet, the original xkcd we were discussing is https://www.xkcd.com/1813/)
03:01:30 <kmc> Patrick Stewart voicing the poo emoji is probably the worst example I can think of of an actor taking a role way beneath him
03:01:42 <kmc> maybe he owed the mob a bunch of money or something
03:02:11 <kmc> i have read that if you're already famous, voice acting work is absurdly lucritive for very little work
03:02:17 <ais523> the title-text comment about real-world usage of the upside-down smiley face emoji is one of those things that's really thought-provoking
03:03:41 <kmc> TJ Miller rage-quitting Silicon Valley to star in that piece of shit is also pretty pathetic
03:03:55 <kmc> he's a real treat https://en.wikipedia.org/wiki/T.J._Miller#Legal_issues_and_controversies
03:04:04 <kmc> ais523: yeah
03:04:14 <zzo38> What I can find, U+1F93F is diving mask, not for vomiting.
03:04:21 <kmc> I don't know how to explain what upside down face, or face with no mouth means
03:04:24 <kmc> but I think I can use them
03:05:41 <ais523> kmc: I'm not sure if I can use them but I sort-of get the meaning in other people's usage
03:05:48 <ais523> presumably you've seen them more than me
03:06:34 <ais523> the great thing about this is that it acts as a disproof of the Sapir-Whorf Hypothesis that can actually be communicated to other people, because it's a sort of shared disproof rather than being specific to one person's thoughts
03:06:57 <ais523> (I've thought several disproofs in the past, but they have the fundamental problem that I have no way to easily communicate them to other people)
03:08:32 <ais523> hmm… now I'm thinking about that moment several years ago when I had to ask someone what Kappa meant (in the common colloqual usage) as I didn't figure it out exactly based on examples
03:09:32 <ais523> (I got close, but not close enough)
03:16:11 <ais523> hmm… I wonder if it makes sense to use strings like "" as BOM-equivalents to show the encoding of text that escapes Unicode into ASCII rather than using more normal encodings
03:19:59 <kmc> how does it disprove S-W?
03:20:33 <kmc> ais523: you mean that if a file starts with the ASCII literal string "" then the decoder should assume it's ASCII, w/ Unicode escapes of that form?
03:22:40 <kmc> is that useful?
03:23:14 <ais523> it's not obviously useless; say you want to send an HTML file over a 7-bit connection but need it to round-trip perfectly
03:23:47 <ais523> the result would be way more readable (also more likely to be interpreted correctly by a random computer program) than UTF-7
03:24:20 <ais523> you could just use no BOM but then people would be uncertain about whether the input contained the actual characters or the escaped version
03:27:51 <kmc> but the escapes will already have that meaning no matter what
03:27:58 <kmc> so it's just a hint that there will be no non-ASCII characters
03:28:48 <ais523> well, the difference is that if the original text contained characters in both escaped and unescaped form
03:28:58 <ais523> the version after encoding will contain them in double-escaped and escaped form
03:29:03 <ais523> allowing you to roundtrip
03:29:22 <ais523> (whereas if you tried to escape into valid HTML directly, the distinction would be lost because double-escaped would just echo)
03:33:45 -!- FreeFull has quit.
03:51:32 <kmc> interesting
03:51:46 <kmc> TIL that in Japan, it is considered lucky to dream of an eggplant on the first night of the new year
03:53:07 <kmc> you can learn a lot about asian culture by reading about emojis :P
03:54:02 <kmc> (eggplants, hawks, and Mt. Fuji)
03:56:20 <kmc> how many specific, singular things are represented by Emoji?
03:58:13 <kmc> Japan, Mt. Fuji, the Earth (in several variations), the Statue of Liberty, the Tokyo Tower, the Kaaba, Sol, Luna (both in several variations)
03:58:23 <ais523> hmm, maybe compose keys should use RFC 1345, it's /way/ more comprehensive than any other compose key implementation I've seen
04:00:47 <ais523> huh, it even has control codes
04:01:03 <ais523> …it even has /C1/ control codes
04:01:26 <ais523> Compose C I for CSI, for example
04:01:53 <ais523> that said, some of the characters in Brachylog's character set don't appear even in RFC 1345
04:27:16 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64584&oldid=64558 * A * (+4528) /* Sandbox */ new section
04:28:11 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64585&oldid=64584 * A * (-101) /* Sandbox */
04:28:45 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64586&oldid=64585 * A * (-4427)
04:39:13 -!- xkapastel has quit (Quit: Connection closed for inactivity).
05:44:39 <kmc> shachaf: should I get some kind of magsafe nonsense thing for my USB-C charging
05:48:07 -!- Sgeo_ has joined.
05:48:47 -!- ais523 has quit (Quit: quit).
05:51:17 -!- Sgeo has quit (Ping timeout: 245 seconds).
06:02:53 <kmc> wow, there are all kinds of fun things i can do
06:03:13 <kmc> like my phone came with this USB-C-male to USB-A-female adapter
06:03:23 <kmc> which i guess is like an OTG adapter
06:03:34 <kmc> but I can also use it to turn a USB-C charger into a legacy USB charger
06:03:44 <kmc> which means one less thing to carry
06:07:35 <FireFly> Oh it's a charger with a USB-C port, and a USB-C plug-plug cable?
06:07:42 <FireFly> I mean, your usual charger setup
06:08:18 <FireFly> my phone came with a "regular"/legacy USB-A charger but with the relevant fast-charging capabilities, and an A-male - C-male cable, for charging it
06:10:39 <kmc> right, mine came with a brick that has a USB-C port on it
06:12:34 <kmc> and then I got another brick that also has USB-C on it, but this one is a bit larger and can charge my laptop too
06:13:08 <kmc> so i will carry that in my everyday bag, instead of a separate phone and laptop charger
06:14:15 <kmc> along with a C-to-C cable and an A-to-C cable
06:14:22 <kmc> and if I need to charge both I can charge the laptop from USB-C and the phone from its USB-A port
06:14:55 <kmc> and the phone can charge fast enough from my A-only powerbank so I'm keeping that
06:15:36 <kmc> FireFly: so I wonder if your legacy brick supports USB-PD on its type-A port
06:15:50 <kmc> or if it only supports the legacy, quasi-standard quick charge thingies
06:15:55 <kmc> it is so complicated now
06:16:54 <FireFly> Most likely not USB-PD (as in, the standard "fast charge" thing), because phone uses the other quickcharge thing common in the industry
06:17:26 <FireFly> the Nintendo Switch does USB PD IIRC, but its charger just comes with a physical cable attached to the wallwart (and USB-C male at the end of the cable)
06:18:29 <FireFly> My understanding is that the legacy, quasi-standard quick charge thingie was to adopt USB PD as a required thing to support in the next version of it
06:18:41 <FireFly> so hopefully that mess will go away/unify over the next few years? maybe
06:19:23 <FireFly> IIRC phone cos went and did their own thing because the standard PD thing was taking its merry time, and they didn't want to wait around? or something
06:19:28 <FireFly> which I guess I could also see
06:19:42 <FireFly> annoying as the fragmentation is
06:29:38 -!- sprocklem has quit (Ping timeout: 245 seconds).
06:35:07 -!- Camto[m] has quit (Quit: Idle kick: User has been idle for 30 days.).
06:41:50 -!- sprocklem has joined.
07:03:46 <kmc> i mean, as messy as the details are, it's working pretty well for me the consumer
07:03:59 <kmc> if I plug a "fast charging" device into a "fast charging" charger then it usually "fast charges" in some way or another
07:06:04 <FireFly> I don't think it's the case between the Switch and the phone (which are the two USB-C-charging devices I have so far), but ah well
07:06:27 <FireFly> or well, I mean.. it *charges* either way, but charges quicker when I use the "right" charger rather than the "wrong" one
07:06:47 <FireFly> (but fortunately most of the time I'm not that much in a hurry anyway)
07:06:59 <FireFly> so I just use whatever is closest/already plugged in because lazy
07:07:37 <kmc> fast charging will wear out your battery faster won't it
07:07:46 <FireFly> I think so, and that's a fair point
07:08:03 <kmc> I know that's a thing for electric vehicles
07:08:19 <kmc> I don't know if it matters for a phone that will probably be replaced within 5 years anyway
07:08:26 * kmc has a drawer of old smartphones
07:08:34 <FireFly> Maybe devices ought to ask you when you plug it in at what rate you want to charge it (and use that to decide whether to negotiate for faster power or not)
07:08:50 <FireFly> I tend to not be very consumer-y when it comes to smartphones :p
07:09:01 <FireFly> I did get a new one last year, but that was replacing the aging Jolla1 phone from 2013
07:09:41 <FireFly> before that I had the E7 briefly which I got as a replacement when the N900 died, and before that, said N900 which was the first 'smart' phone I had
07:10:10 <FireFly> so I do value not wearing the battery too much :p
07:10:57 <FireFly> The J1 had a very worn out battery, and very worn out USB connector.. those were not insignificant in deciding to get a new phone
07:11:31 <kmc> I just got a new Pixel 3a
07:11:40 <kmc> because I had cracked the shit out of the screen on my Moto G5+
07:11:49 <kmc> and it was looking not too easy to repair / replace
07:11:56 <kmc> it was a good phone, though
07:12:16 <kmc> pro tip, don't store your phone in a purse with a heavy metal object
07:12:41 <FireFly> heavy (metal object), or (heavy metal) object?
07:12:58 <kmc> the former... I hope
07:13:02 <kmc> I think it's stainless steel
07:15:38 <kmc> this Anker brick has one USB-C-PD and one USB-A with "PowerIQ 2.0"
07:15:41 <kmc> whatever the hell that is
07:15:41 <FireFly> I do keep my phone and keys in separate pockets for a reason :p
07:16:17 <kmc> it seems to be their proprietary name for an implementation of various different devices' quick charging specs
07:16:19 <kmc> I don't know
07:16:38 <kmc> normally I do keep my phone in a pocket by itself, but in this case I was wearing a dress and did not have pockets
07:16:42 <FireFly> I think/thought https://en.wikipedia.org/wiki/Quick_Charge was the main competitor to USB-PD (and ah, it looks like 4 and 4+ also do USB-PD stuffs)
07:17:13 <kmc> and was distracted while leaving a party so did not consider the hazards
07:17:59 <kmc> I also dropped that phone on concrete on many occasions
07:22:57 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
07:23:59 -!- Lord_of_Life has joined.
08:20:08 -!- AnotherTest has joined.
08:57:53 <b_jonas> "<ais523> the great thing about this is that it acts as a disproof of the Sapir-Whorf Hypothesis" => huh? what is a disproof?
08:58:30 -!- haavard has quit (Remote host closed the connection).
09:00:02 <b_jonas> "<ais523> I had to ask someone what Kappa meant" => that's one of the Twitch chat specific emoticons. Yeah, it's not trivial to figure out what the commonly used ones mean from examples. I don't think I understand them either. I think Kappa marks a certain kind of humour where you act as better than others or something.
09:00:07 -!- haavard has joined.
09:02:50 <b_jonas> "<ais523> it's not obviously useless; say you want to send an HTML file over a 7-bit connection but need it to round-trip perfectly" => then gzip and mime base64 encode or uuencode it. ampersane-escapes aren't enough, because you won't know which stuff were escapes in the original HTML. (XML can also have CDATA or non-ASCII characters in tag or attribute names.)
09:03:38 <b_jonas> "<ais523> the version after encoding will contain them in double-escaped and escaped form" => uh
09:05:54 <b_jonas> I don't think you can assume from just a  that it's such of a double escaped file. That could be there just by accident when someone accidentally escaped some characters in a file starting with an UTF-8 BOM.
09:36:08 -!- Sgeo_ has quit (Read error: Connection reset by peer).
09:36:34 -!- Sgeo_ has joined.
10:28:50 -!- atslash has joined.
10:31:35 -!- atslash has quit (Client Quit).
10:52:51 -!- AnotherTest has quit (Ping timeout: 264 seconds).
11:49:38 -!- Sgeo_ has quit (Read error: Connection reset by peer).
11:50:02 -!- Sgeo_ has joined.
11:54:35 -!- Melvar has quit (Quit: WeeChat 2.4).
12:04:49 -!- arseniiv has joined.
12:25:19 -!- Melvar has joined.
13:00:55 -!- atslash has joined.
13:13:36 -!- atslash has quit (Quit: This computer has gone to sleep).
14:08:06 -!- Sgeo__ has joined.
14:11:44 -!- Sgeo_ has quit (Ping timeout: 258 seconds).
14:58:36 -!- Sgeo_ has joined.
14:59:12 -!- b_jonas has quit (Quit: leaving).
15:02:05 -!- Sgeo__ has quit (Ping timeout: 268 seconds).
15:13:25 -!- jalumar has quit (Ping timeout: 252 seconds).
15:18:50 -!- Sgeo has joined.
15:21:49 -!- Sgeo_ has quit (Ping timeout: 268 seconds).
15:24:49 -!- Sgeo has quit (Ping timeout: 246 seconds).
16:08:25 -!- Sgeo has joined.
16:25:34 -!- Melvar has quit (Quit: WeeChat 2.4).
16:35:51 <j4cbo> the thing that is really bad for batteries is leaving them at 100%
16:36:10 <j4cbo> but it is basically totally impossible to not do that with any phone or laptop
16:36:23 <kmc> why is that bad for them
16:37:31 <j4cbo> I don’t know the materials science behind it but it results in faster capacity loss
16:37:43 <esowiki> [[Dbondb]] https://esolangs.org/w/index.php?diff=64587&oldid=64581 * Sideshowbob * (+127) /* Commands */
16:39:02 <j4cbo> I’ve charged my car to 100% like five times ever and only *immediately* before a road trip
16:39:18 <j4cbo> I charge my phone to 100% and let it sit that way for hours every night
16:42:16 <esowiki> [[Dbondb]] https://esolangs.org/w/index.php?diff=64588&oldid=64587 * Sideshowbob * (-3) Undo revision 64587 by [[Special:Contributions/Sideshowbob|Sideshowbob]] ([[User talk:Sideshowbob|talk]])
16:47:18 <int-e> yeah where *is* the phone setting that says "stop charging at 85%"?
16:47:32 <kmc> I don't know
16:47:36 <kmc> Thinkpads have that setting
16:47:57 <kmc> and you can also set a maximum point to *start* charging
16:48:04 <kmc> thus giving some hysteresis between them
16:48:19 <kmc> so if you plug in, charge to 96%, run down to 94%, plug back in, it might not necessarily start charging again
16:48:42 <kmc> this is good to avoid excess charge cycles in the usual case where you're unplugging your laptop for brief periods of time
16:48:57 <kmc> though I've noticed, the battery life on my X270 is good enough that I'm using it more like a phone, just plugging it in overnight
16:49:05 <int-e> Also, if charging to 100% is so harmful, maybe you should spec the batteries at lower capacity...
16:49:11 <zzo38> It is OK to use "#ifndef MSG_MORE" and "#define MSG_MORE 0"? Will that cause any problems with the program if it does that?
16:49:14 <int-e> ...so I suppose marketing is a major factor here.
16:49:23 <kmc> it has an internal battery and an external, high-capacity battery
16:49:29 <kmc> this also means the external battery is hot swappable
16:50:59 <int-e> (Phones sell on reviews of early models, and battery lifetime is a major selling point. So any charging schedule that results in higher capacity and does not visibly destroy the battery in the first week is an advantage? Sigh.)
16:51:28 <int-e> Maybe a month or two for people who wait for social media experience reports.
16:52:21 <int-e> And then there's the planned obsolescence angle.
16:53:16 <int-e> 'If you find the mail in your spam, it’s because of your internet ISP.' -- yeah it couldn't possibly be because it *is* spam.
16:53:41 <int-e> (I like reading opening lines of spam mails for some reason.)
16:57:10 <zzo38> I use /etc/aliases to avoid receiving spam
17:05:05 <zzo38> (It works OK, if you use a separate email address for each purpose.)
17:10:46 -!- atslash has joined.
17:12:44 -!- lldd_ has joined.
17:16:22 -!- FreeFull has joined.
17:28:06 -!- Sgeo_ has joined.
17:31:39 -!- Sgeo has quit (Ping timeout: 244 seconds).
17:33:14 <esowiki> [[Esolang talk:Categorization]] https://esolangs.org/w/index.php?diff=64589&oldid=64571 * Areallycoolusername * (-4) /* Proposed Categories: Arch-based and Bootstrapped */
17:33:47 -!- zzo38 has quit (Ping timeout: 245 seconds).
18:17:09 -!- Melvar has joined.
18:20:39 -!- Sgeo has joined.
18:22:26 -!- Sgeo_ has quit (Ping timeout: 248 seconds).
18:47:28 -!- zzo38 has joined.
18:58:46 <zzo38> I think bystand may be so far the only NNTP client program with a feature specific to Unusenet (the UNUSENET_SERVER_NAME() SQL function; which may be used in the PostTo option)
19:07:13 -!- AnotherTest has joined.
19:15:56 -!- lldd_ has quit (Quit: Leaving).
19:20:55 -!- Lord_of_Life_ has joined.
19:23:52 -!- Lord_of_Life has quit (Ping timeout: 246 seconds).
19:23:57 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
19:49:28 -!- lldd_ has joined.
20:11:32 -!- moei has joined.
20:17:58 -!- Phantom_Hoover has joined.
20:39:00 -!- user24 has joined.
20:45:47 <kmc> just passed a car with the vanity plate U1F47E
20:48:41 -!- b_jonas has joined.
20:52:30 -!- lldd_ has quit (Quit: Leaving).
20:57:26 <kmc> https://www.compart.com/en/unicode/U+1F47E
20:58:17 <Phantom_Hoover> the one i remember you linking to and hating years ago
20:58:40 <kmc> that character is sponsored by RubberRhino Games
20:58:46 <kmc> https://www.unicode.org/consortium/adopted-characters.html
20:58:51 <kmc> wonder if that's related to the car
20:58:57 <kmc> Phantom_Hoover: I have no idea what you're talking about, sorry
21:02:26 <Hooloovo0> what kind of car was it? looks like rubberrhino makes truck/car racing games
21:03:02 <Phantom_Hoover> this character sponsorship is some sort of dismal late capitalist performance art
21:03:23 <Hooloovo0> BURNIN R shows up on some of the images I can find
21:05:12 <int-e> kmc: hmm interesting that the same character can be adopted several times
21:06:16 <kmc> at bronze level yes
21:06:23 <kmc> Phantom_Hoover: you know how much dope I smoke
21:06:28 <kmc> I can barely remember what I ate for lunch yesterday
21:06:50 <kmc> actually not that much these days but for the sake of the joke
21:06:57 <int-e> kmc: and this channel should celebrate the bronze sponsor of the multiocular O.
21:07:10 <HackEso> 1132) <shachaf> A Swede who was in #esoteric / Thought his rhymes were a little generic. / "I might use, in my prose, / ꙮs, / But my poetry's alphanumeric."
21:07:22 <kmc> Phantom_Hoover: I dunno, Unicode Consortium is a nonprofit whose mission is vital to enabling people around the world to use the internet through a free open standard
21:07:23 <Phantom_Hoover> best artistic achievement this channel has ever produced
21:07:34 <kmc> I think it's pretty not-dystopian-capitalism as these things go
21:07:44 <kmc> int-e: of course.
21:07:48 <Phantom_Hoover> yes, which makes it pretty dismal that it needs to sell corporate advertising
21:09:36 <kmc> well, true
21:09:42 <kmc> fair point
21:09:48 <zzo38> I think Unicode is very messy
21:10:09 <zzo38> There are better character encodings, and different one are good for different use.
21:10:12 <kmc> did you make a zzocode?
21:10:57 <zzo38> I partially made up a "Universal Terminal Character Coding", which is designed for grid displays with no complex scripts or other stuff like that
21:12:50 <zzo38> The width of a text made up of printable characters only (without control characters) is equal to the number of bytes with value less than 0xC0. Both single-cell characters and double-cell characters are included, although some implementations might support only single-cell characters.
21:17:28 <zzo38> It also includes a lot of stuff that isn't in Unicode. (Some of the characters in some terminals are not in Unicode, but this code does include them. You can use them for font mapping in a terminal emulator when a character set including them is specified by the escape codes.)
21:42:18 -!- MDude has quit (Ping timeout: 272 seconds).
21:45:45 <b_jonas> Phantom_Hoover: why? I think it's a win for everyone. the advertisments don't buy anything. they don't put ugly animated banners on their homepage telling about their sponsors. It's pure sponsorship donations. I don't think it's dismal.
21:46:04 -!- user24 has quit (Quit: Leaving).
21:47:39 <b_jonas> I think the name of the sponsors can't even be queried as character properties from unicode libraries.
21:47:45 <b_jonas> So it's totally without any effect.
21:48:58 <b_jonas> It's not even just optimized away.
21:57:01 -!- AnotherTest has quit (Ping timeout: 276 seconds).
22:11:04 -!- adu has joined.
22:12:57 -!- ais523 has joined.
22:13:14 <ais523> b_jonas: if someone accidentally escaped a BOM, then isn't it likely that they also accidentally escaped the rest of the file the same way?
22:13:46 <ais523> or is the assumption that they escaped all non-ASCI characters but left & the same?
22:15:35 <b_jonas> ais523: no. I'd assume they'd escape only text, not double-escape HTML
22:15:45 <b_jonas> as in, they don't escape the entire HTML, just build an HTML from parts
22:16:21 <b_jonas> yeah, you can't be sure in that, because you can find all sorts of crazy messed up HTML-like things on the internet, but I still wouldn't guess that they just escaped an HTML
22:16:21 <ais523> if they're building it from parts, how did they find a part with a BOM before the opening <html>?
22:16:53 <b_jonas> ais523: yeah... I don't know, but I don't think your alternative is very likely either
22:17:41 <ais523> it would be if you did it intentionally
22:17:43 <b_jonas> this at least if the escaped BOM is at the start
22:18:08 <b_jonas> if it's in an XML inside an element that isn't likely to be part of the HTML, then yes, then I'd think they escaped an HTML inside an XML
22:18:15 <ais523> hmm: https://duckduckgo.com/?q=%EF%BB%BF&ia=web
22:18:24 <ais523> no results, but yet it pulls up a relevant Wikipedia page anyway
22:18:43 <ais523> I can't believe there are no byte order marks anywhere on the Internet, so maybe DDG just don't index them
22:18:44 <b_jonas> I guess you should scan a bit after the BOM
22:19:09 <ais523> but yes, I meant an escaped BOM right at the start of the document (which is the only place they should appear)
22:19:13 <b_jonas> if you see <HTML> then it's not double-escaped; if you see < then it is probably double-escaped,
22:19:46 -!- arseniiv has quit (Ping timeout: 248 seconds).
22:20:08 <b_jonas> especially if you see <DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"<>HTML<
22:20:59 <b_jonas> I've at least seen HTML parts escaped in JSON
22:20:59 <ais523> you got the gts and lts backwards near the end, but yes
22:21:13 <b_jonas> oh yeah, french style, not german style, yeah
22:21:27 <b_jonas> I shouldn't have messed that up
22:32:45 <kmc> smoke html erryday
23:26:55 <esowiki> [[Talk:Kepler]] https://esolangs.org/w/index.php?diff=64590&oldid=64441 * Areallycoolusername * (+947)
23:34:12 -!- ais523 has quit (Remote host closed the connection).
23:35:24 -!- ais523 has joined.
23:48:27 -!- Sgeo_ has joined.
23:51:30 -!- Sgeo has quit (Ping timeout: 272 seconds).
23:57:57 -!- Phantom_Hoover has quit (Ping timeout: 245 seconds).
00:05:36 -!- ais523 has quit (Remote host closed the connection).
00:06:51 -!- ais523 has joined.
00:20:03 -!- ais523 has quit (Quit: quit).
01:22:35 -!- Sgeo__ has joined.
01:25:46 -!- Sgeo_ has quit (Ping timeout: 246 seconds).
01:26:28 -!- Cale has quit (Ping timeout: 244 seconds).
02:02:06 -!- Sgeo_ has joined.
02:05:53 -!- Sgeo__ has quit (Ping timeout: 258 seconds).
02:09:07 -!- MDude has joined.
02:16:10 -!- Cale has joined.
03:16:06 -!- Sgeo__ has joined.
03:17:12 <zzo38> I wrote these (incomplete) rules to make up a new card game: https://arin.ga/5eqtil Do you have a comment of it please?
03:19:10 -!- Sgeo_ has quit (Ping timeout: 246 seconds).
03:24:06 -!- Sgeo_ has joined.
03:27:07 -!- Sgeo__ has quit (Ping timeout: 245 seconds).
03:50:35 -!- Sgeo__ has joined.
03:51:56 -!- Sgeo__ has quit (Read error: Connection reset by peer).
03:53:19 -!- Sgeo has joined.
03:53:43 -!- Sgeo_ has quit (Ping timeout: 244 seconds).
04:06:10 -!- FreeFull has quit.
04:13:54 -!- lambdabot has quit (Remote host closed the connection).
04:15:35 -!- int-e has quit (Remote host closed the connection).
04:16:27 -!- int-e has joined.
04:16:47 -!- lambdabot has joined.
05:15:04 * int-e wishes people would stop using the term "device verification" in a browser context. No, it's not a new device. Just a new browser session.
05:15:11 -!- kiwi_7 has joined.
05:19:07 -!- kiwi_7 has quit (Remote host closed the connection).
05:27:20 -!- kiwi_7 has joined.
05:32:16 -!- kiwi_7 has quit (Remote host closed the connection).
05:34:37 <lambdabot> *** "device" wn "WordNet (r) 3.0 (2006)"
05:34:40 <lambdabot> n 1: an instrumentality invented for a particular purpose; "the
05:34:42 <lambdabot> device is small enough to wear on your wrist"; "a device
05:34:52 <lambdabot> *** "instrumentality" wn "WordNet (r) 3.0 (2006)"
05:34:52 <lambdabot> n 1: a subsidiary organ of government created for a special
05:34:54 <lambdabot> purpose; "are the judicial instrumentalities of local
05:34:56 <lambdabot> governments adequate?"; "he studied the French
05:35:12 <shachaf> oh man, "device" means nothing like what i thought it meant tdnh
06:00:45 -!- kiwi_7 has joined.
06:04:28 -!- kiwi_7 has quit (Remote host closed the connection).
06:06:54 -!- kiwi_7 has joined.
06:10:35 -!- kiwi_7 has quit (Remote host closed the connection).
07:22:25 -!- Lord_of_Life has quit (Ping timeout: 246 seconds).
07:26:24 -!- Lord_of_Life has joined.
08:16:34 -!- AnotherTest has joined.
08:59:37 -!- Cale_ has joined.
09:00:01 -!- Cale has quit (Ping timeout: 276 seconds).
09:25:15 -!- tromp has quit (Read error: Connection reset by peer).
09:25:55 -!- tromp has joined.
09:43:30 -!- Frater_EST has joined.
10:19:47 <fizzie> `` wn device -treen | paste
10:19:50 <HackEso> https://hack.esolangs.org/tmp/paste/paste.3516
10:19:52 <fizzie> There are a lot of devices.
11:05:35 -!- arseniiv has joined.
11:13:12 <HackEso> laver table//A laver table is a type of Welsh furniture primarily used for eating seaweed. \ Can cans can cans?
11:13:20 <HackEso> 929) <lexande> sometimes i am confronted with a problem and i think "I know, I'll use Banach-Tarski"
11:13:34 <HackEso> paperless//In a paperless world, rock would never lose.
11:13:39 <HackEso> 454) <itidus20> software patents strike again <ais523_> that's got to be at least three times, now <ais523_> are they out yet?
11:16:42 -!- Frater_EST has left.
12:18:54 -!- FreeFull has joined.
13:00:41 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=64591&oldid=64582 * Sec-iiiso * (+205) /* Introductions */
13:13:11 -!- grumble has quit (Quit: the bottle stands forlorn, a symbol of the dawn).
13:20:27 -!- grumble has joined.
13:22:05 <HackEso> russia//Russia is a country so huge it manages to be so near to both Finland and Japan. It used to be part of the Soviet Union before Ronald Reagan destroyed it.
13:23:35 <arseniiv> conspiratorially synchronistic
13:23:48 <HackEso> dynamic-wind//dynamic-wind is the opposite of static-wind.
13:36:20 -!- user24 has joined.
13:37:52 -!- Phantom_Hoover has joined.
13:50:56 <b_jonas> the air moving about is an essential feature of wind, so I don't think there's such a thing as static wind
14:02:01 <arseniiv> a wind with air velocities in each point constant in time?
14:03:06 <arseniiv> though I heard “wind” in dynamic-wind is a verb
14:03:44 <arseniiv> (though when I saw it first, I thought it’s a noun and didn’t get why there is a wind, dynamic moreso)
14:04:32 <arseniiv> (and I still don’t get what it does and when it’s needed as I don’t write in Scheme)
15:06:59 -!- Cale_ has changed nick to Cale.
15:31:32 <esowiki> [[User talk:Calamari]] https://esolangs.org/w/index.php?diff=64592&oldid=13184 * Jussef Swissen * (+557) Request to fix links
15:31:55 <esowiki> [[User talk:Calamari]] https://esolangs.org/w/index.php?diff=64593&oldid=64592 * Jussef Swissen * (+1) /* Issues With Page */
15:35:56 <esowiki> [[? $51=]] N https://esolangs.org/w/index.php?oldid=64594 * Mipinggfxgbtftybfhfyhfn * (+22) Created page with "[[Category:Languages]]"
15:38:02 <esowiki> [[? $51=]] https://esolangs.org/w/index.php?diff=64595&oldid=64594 * Mipinggfxgbtftybfhfyhfn * (+13)
15:41:33 <esowiki> [[? $51=]] https://esolangs.org/w/index.php?diff=64596&oldid=64595 * Mipinggfxgbtftybfhfyhfn * (+135)
15:42:26 <esowiki> [[? $51=]] https://esolangs.org/w/index.php?diff=64597&oldid=64596 * Mipinggfxgbtftybfhfyhfn * (+4)
15:43:27 <esowiki> [[? $51=]] https://esolangs.org/w/index.php?diff=64598&oldid=64597 * Mipinggfxgbtftybfhfyhfn * (-4) /* Hello World! script */
15:45:08 <esowiki> [[? $51=]] https://esolangs.org/w/index.php?diff=64599&oldid=64598 * Mipinggfxgbtftybfhfyhfn * (+21)
15:47:36 <esowiki> [[? $51=]] https://esolangs.org/w/index.php?diff=64600&oldid=64599 * Mipinggfxgbtftybfhfyhfn * (+295)
15:53:18 -!- user24 has quit (Quit: Leaving).
15:54:38 <esowiki> [[? $51=]] https://esolangs.org/w/index.php?diff=64601&oldid=64600 * Mipinggfxgbtftybfhfyhfn * (+74)
15:58:14 <esowiki> [[? $51=]] https://esolangs.org/w/index.php?diff=64602&oldid=64601 * Mipinggfxgbtftybfhfyhfn * (+21)
17:48:33 -!- user24 has joined.
18:12:22 <rain1> https://botsin.space/@worldsofzzt/102480754802233031
18:22:06 <zzo38> Do you like XYZABCDE.ZZT game?
18:31:30 -!- unlimiter has joined.
18:42:09 -!- unlimiter has quit (Quit: Thanks guys for your seconds and minutes).
18:43:02 <zzo38> Did you make up a ZZT game?
18:52:04 <zzo38> Some people don't like some stuff in a ZZT game
18:52:28 <zzo38> Did you read the incomplete rules I wrote of card game by now?
19:02:34 -!- Cale has quit (Ping timeout: 276 seconds).
19:10:33 -!- Cale has joined.
19:21:08 -!- user24 has quit (Quit: Leaving).
19:21:41 <rain1> XYZABCDE.ZZT is good yeah
19:21:46 <rain1> but i didnt get very fare
19:22:04 -!- Lord_of_Life_ has joined.
19:24:50 -!- Lord_of_Life has quit (Ping timeout: 248 seconds).
19:24:57 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
19:38:50 -!- Lord_of_Life has quit (Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine).
19:40:07 -!- Lord_of_Life has joined.
19:50:03 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
19:52:27 -!- Lord_of_Life has joined.
20:22:42 <zzo38> rain1: How far did you get to?
20:23:12 <rain1> i think the bits ran up to me an killed me
20:23:17 <rain1> and i was dodging some bullets too
20:23:48 <b_jonas> oh... for a moment I thought the channel was talking about baba is you again
20:38:25 <zzo38> What bits ran up to you and kill you?
21:02:17 -!- budonyc has joined.
21:30:39 -!- AnotherTest has quit (Ping timeout: 264 seconds).
21:38:05 <Hooloovo0> ok, so i thought I was close to beating BIY
21:51:30 <Hooloovo0> I'm working on 2 files, current one has 106, but has 3 more puzzles solved than the other (currently inaccessibale desktop) at (iirc) 109
22:00:44 <shachaf> Do you want spoilers about the number of puzzles?
22:00:58 <shachaf> Hmm, I guess just asking that question is a sort of spoiler.
22:17:38 <Hooloovo0> yeah, I think that's what I just realized
22:18:27 <b_jonas> which layer of secret levels did you find?
22:18:56 -!- atslash has quit (Read error: Connection reset by peer).
22:19:38 -!- atslash has joined.
22:20:08 <b_jonas> also, how many hours did you waste trying to find the secret level in the one zone that doesn't have one?
22:20:18 <b_jonas> pulling that on players is so evil, breaking the pattern that way
22:20:24 <b_jonas> everyone spends time trying to find it
22:22:08 <Hooloovo0> I think I'm on the second layer of levels, beat all of the first area zones (not 100%, but enough flowers)
22:22:37 <b_jonas> so have you unlocked new game plus yet?
22:23:39 <Hooloovo0> I didn't worry too much about the secret levels
22:24:09 <Hooloovo0> not sure what that is, so probably not
22:27:05 <shachaf> b_jonas: Which zone is that?
22:27:18 <b_jonas> shachaf: Mario zone in Game Boy Super Mario Land 2
22:28:01 <shachaf> This does seem like a classic b_jonasing.
22:28:15 <b_jonas> yeah, I guess it's like that
22:33:32 -!- Cale has quit (Remote host closed the connection).
22:39:53 <HackEso> fizzie is not fnord with a monad but the king of #esoteric, see https://zem.fi/static/img/square_fizzie_320px_white.jpg
22:40:03 <shachaf> That doesn't look like gold.
22:40:08 <fizzie> That's not one of those six, no.
22:40:34 <shachaf> Do you like index notation?
22:42:31 <fizzie> As in Aᵢⱼ or something more?
22:44:08 <fizzie> I don't think I've ever used all four corners though.
22:44:32 <shachaf> I'm thinking of the kind with only superscripts and subscripts to the right.
22:48:19 <shachaf> Also specifically the kind where you can write things like A_i^j B_j^k
22:49:38 <b_jonas> how about overscripts and underscripts?
22:52:42 <b_jonas> you can use those as an extra two positions
22:52:46 <shachaf> I'm specifically talking about tensors here.
22:52:49 <b_jonas> besides right superscripts and right subscripts
22:52:52 -!- moei has quit (Quit: Leaving...).
22:52:54 <shachaf> (And also other symmetric monoidal categories or whatever.)
22:53:00 <b_jonas> oh, for tensors you probably use only superscripts and subscripts
22:53:29 <shachaf> You can also use superduperscripts nd subdubscripts.
22:54:13 <shachaf> A subdubscript is the text written in subdubtitles, which are subtitles for a video that's been dubbed.
22:55:34 <shachaf> I sure wish I understood what linear algebra trace is.
22:57:55 -!- Cale has joined.
22:58:37 <arseniiv> shachaf: do you mean on some higher level, or on an ordinary basic level?
23:00:12 <shachaf> Hmm, I understand the level that says "sum of eigenvalues" (or "sum of diagonal").
23:00:56 <fizzie> `` wn trace -over | sed -e '/^5/p;/verb/Q;d'
23:00:57 <HackEso> 5. (1) trace -- (either of two lines that connect a horse's harness to a wagon or other vehicle or to a whiffletree)
23:01:10 <fizzie> I mean, it mentions lines.
23:02:54 <arseniiv> ah okay, I think it would be a basic coordinate-bound level or so. For linear operators realized as elements of V ⊗ V* the trace is just a covector-vector pairing map, and for other tensors of form W1 ⊗ V ⊗ W2 ⊗ V* ⊗ W3 it’s just that first trace appropriately lifted
23:03:25 <shachaf> arseniiv: It seems to me that trace should be related to fixed points, but I'm not quite sure what the connection is.
23:03:35 <arseniiv> I’ll tell it in a less laconic way after sleeping if no one says anything
23:03:48 <arseniiv> hm I don’t think it should relate
23:04:12 <shachaf> For example in most other traced monoidal categories trace is related to fixed points.
23:04:35 <shachaf> And the string diagram notation is very suggestive.
23:05:03 <shachaf> Or the index notation. If you think of A_i^j B_j^k as connecting A's "output" to B's "input", then you should think of A_i^i as connecting A's "output" to its own "input".
23:05:06 <arseniiv> maybe a trace of (1 − A) is? As (1 − A)x = 0 sometimes gives fixed points x of A if any
23:05:37 <shachaf> An eigenvector is a generalized fixed point, of course. So there's some connection between eigenvalues and fixed points in any case.
23:06:10 -!- tromp_ has joined.
23:06:12 <arseniiv> yeah, maybe there should be some not-so-obvious fixed point sense here, then
23:06:50 <shachaf> I also don't really know what it means if (for example) the trace of a map is 0.
23:06:51 <arseniiv> okay I’ll be here tomorrow bye
23:07:39 <arseniiv> did you maybe read a book Linear algebra via exterior product, by Sergei Winitzki?
23:07:51 <arseniiv> there are some words about trace
23:07:57 -!- tromp has quit (Ping timeout: 244 seconds).
23:08:11 <shachaf> arseniiv: Oh, I know Sergei.
23:08:17 <shachaf> I don't remember whether I asked him this question.
23:08:30 <arseniiv> shachaf: also thank you though it’s almost morning
23:09:16 <arseniiv> it encourages coordinate-free things but it also has index notation
23:10:02 <shachaf> arseniiv: Index notation is coordinate-free!
23:10:40 <shachaf> See this nice paper by Penrose: http://homepages.math.uic.edu/~kauffman/Penrose.pdf
23:11:36 <shachaf> Or maybe just this page: https://en.wikipedia.org/wiki/Abstract_index_notation
23:13:43 -!- arseniiv has quit (Ping timeout: 246 seconds).
23:33:14 <HackEso> don'taskdon'ttelllist: quintopia myname int-e
23:51:07 <zzo38> Did anyone else read my incomplete card game document yet?
00:01:05 <zzo38> b_jonas: https://arin.ga/5eqtil
00:06:41 -!- Phantom_Hoover has quit (Quit: Leaving).
01:08:42 <esowiki> [[User:Jussef Swissen]] https://esolangs.org/w/index.php?diff=64603&oldid=64463 * Jussef Swissen * (+56)
01:08:53 <esowiki> [[User:Jussef Swissen]] https://esolangs.org/w/index.php?diff=64604&oldid=64603 * Jussef Swissen * (-1) /* = WIP Ideas */
01:14:47 -!- MDude has quit (Quit: Going offline, see ya! (www.adiirc.com)).
01:21:31 -!- FreeFull has quit.
02:07:09 <esowiki> [[]] N https://esolangs.org/w/index.php?oldid=64605 * Jussef Swissen * (+1193) Created page with "'''''' is a [[Stack]]-based, functional, and self-modifying esolang made by [[User:Jussef Swissen|Jussef Swissen]]. Its entire command set is in hebrew. == Specific..."
02:30:17 -!- b_jonas has quit (Remote host closed the connection).
03:38:23 <esowiki> [[]] https://esolangs.org/w/index.php?diff=64606&oldid=64605 * Jussef Swissen * (+4391) Extended the page.
03:39:40 <esowiki> [[User:Jussef Swissen]] https://esolangs.org/w/index.php?diff=64607&oldid=64604 * Jussef Swissen * (+18) /* Languages I've made */
03:46:02 <zzo38> Now I made a Robot Find Kitten game in Glulx, but, more text should be added for the stuff that is not a kitten.
03:54:45 <shachaf> Why would you have anything that isn't a kitten?
03:56:45 <zzo38> Because that is how it is work; that is how they made it
04:06:24 -!- sprocklem has quit (Ping timeout: 268 seconds).
04:11:42 <shachaf> zzo38: I'm playing this game now: https://www.puzzlescript.net/play.html?p=9eb8f8f3df4efb450b798a279eeba2e0
04:12:53 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=64608&oldid=64573 * Jussef Swissen * (+17) /* Non-alphabetic */
04:21:59 -!- Sgeo_ has joined.
04:24:34 -!- Sgeo has quit (Ping timeout: 248 seconds).
04:24:47 <zzo38> It is not so bad, I suppose, but, maybe I should want to make with Free Hero Mesh maybe
04:28:29 -!- Sgeo has joined.
04:31:04 -!- Sgeo_ has quit (Ping timeout: 268 seconds).
04:33:03 -!- sprocklem has joined.
04:34:32 <esowiki> [[Language list]] M https://esolangs.org/w/index.php?diff=64609&oldid=64608 * Salpynx * (+0) /* Non-alphabetic */ these are actually sorted, by Unicode code point, Hebrew Ayin to go between Cyrillic and Arabic
04:59:47 <shachaf> zzo38: How far did you get? I think the interesting aspects only show up after a few levels.
05:01:42 <zzo38> I did not get very far, although I haven't tried much either. Maybe another day I might try more though. (I did skip a few levels by moving the levels I wanted to skip to the end, but I like how is done in Hero Mesh, you can skip both backwar and forward as often as you want to, and can record a sequence of moves for each level, also saving and restoring the sequence of moves.)
05:25:38 -!- j-bot has quit (Ping timeout: 244 seconds).
05:30:21 -!- FireFly has quit (Quit: Goodbye).
05:30:32 -!- FireFly has joined.
05:46:36 -!- Sgeo_ has joined.
05:48:53 -!- Sgeo has quit (Ping timeout: 244 seconds).
06:03:50 <zzo38> Here is my Robot Find Kitten program: https://arin.ga/gM1bQZ
06:04:21 <zzo38> (More lines of text could be added below "; Text for stuff other than a kitten", but so far I didn't.)
06:06:39 <zzo38> The instruction ":Robot !data 0xC0000000" seem strange (using !data where an instruction is expected), but it happens to be a overlong encoding of a "nop" instruction (normally encoded by the single byte 0x00).
06:08:26 <zzo38> But 0xC0 also indicates the beginning of a function receiving its arguments on the stack (although this function uses no arguments; also note Glulx is big-endian), and then the next two bytes indicate this function has no local variables, and then the first instruction is next, which is a single-byte nop.
06:09:20 <zzo38> Since none of the rest of the instructions in the Redraw function use any local variables, this allows Robot to be executed itself as a function and for the stuff before it to fall through into this function.
06:29:25 -!- dayus has joined.
06:29:49 -!- dayus has left.
06:31:57 <\oren\> My font now supports klingon pIqaD
06:42:14 <\oren\> https://cdn.discordapp.com/attachments/299702207270486016/602751995639627776/unknown.png
06:44:16 -!- Sgeo__ has joined.
06:47:26 -!- Sgeo_ has quit (Ping timeout: 258 seconds).
07:21:35 <zzo38> This new issue of 2600 mentions how to use SSH and HTTP(S) through DNS.
07:51:08 -!- Lord_of_Life has quit (Ping timeout: 272 seconds).
07:52:32 -!- Lord_of_Life has joined.
08:45:36 -!- heroux has quit (Ping timeout: 272 seconds).
08:46:55 -!- heroux has joined.
09:09:34 -!- arseniiv has joined.
09:16:09 <arseniiv> yeah, I know index notation can be understood index-free, I even used it that way several times, though I’m not sure that is elaborated in that book
09:16:54 <arseniiv> I gave up splicing times of day in names when tried several times to do it and it seemed impossible :D
09:18:16 <arseniiv> I thought about trace for a while when falling asleep, but no essential thing arose
09:18:58 <arseniiv> oh I meant, how do you put it… it’s not always a greeting either
09:20:43 <arseniiv> though I have a very raw thought: maybe trace can be understood as a sort of applying the operator to itself vs. applying it to a covector and a vector (so that in both cases we get a scalar)
09:21:06 <arseniiv> I was trying to imagine it in vain and it didn’t happen
09:22:03 <arseniiv> what that link you’ve mentioned between trace and fixpoints in monoidal categories is?
09:23:07 <shachaf> Oh, most instances of https://en.wikipedia.org/wiki/Traced_monoidal_category have an obvious interpretation in terms of fixed points.
09:23:57 <arseniiv> I think it’s more productive to apply it exactly to this category if it’s possible. I think Vec is a somewhat degenerate case of a monoidal catefory, there we for instance don’t have an interesting modal logic thing (as far I understand)
09:25:56 <shachaf> What's a modal logic thing?
09:26:18 -!- Sgeo_ has joined.
09:26:54 <arseniiv> oh I meant not a modal logic, a linear one
09:27:46 <arseniiv> several months ago I tried to see what it means for Vec and it was all conflated there, & = ⊕ etc.
09:28:43 <arseniiv> then I saw why linear spaces aren’t mentioned as examples in texts on linear logic, though both deal with monoidal categories
09:29:35 -!- Sgeo__ has quit (Ping timeout: 258 seconds).
09:36:36 -!- AnotherTest has joined.
09:37:49 <shachaf> arseniiv: Oh, yes, ⊗ = ⅋ in Vec
09:37:59 <shachaf> Which leads to some confusil things.
09:40:10 <arseniiv> shachaf: wow, even ⊗ = ⅋? Didn’t thought that far
09:40:39 <arseniiv> then it’s a very uninteresting category to do linear logic in, indeed
10:02:46 -!- Sgeo__ has joined.
10:06:00 -!- Sgeo_ has quit (Ping timeout: 258 seconds).
10:11:53 <arseniiv> shachaf: they say a traced category should be cartesian monoidal for those fixpoint things to work, but Vec isn’t, as ⊗ ≠ × there
10:13:02 <arseniiv> (but maybe there is a way to make some weak connection)
10:13:27 <arseniiv> link: https://ncatlab.org/nlab/show/traced+monoidal+category#in_cartesian_monoidal_categories
10:14:25 <arseniiv> BTW random variable expectation is too a kind of a trace :) it could be interesting somewhere
10:28:40 <shachaf> arseniiv: Oh, that's interesting. I should look at that paper.
10:32:22 <shachaf> I think that statement is weaker than what you said.
10:32:54 <shachaf> It seems to be saying that if your category's monoidal product is the cartesian product, then so-and-so holds, but not to say anything in the case that it isn't?
10:33:16 <arseniiv> hm also somewhat off-topically there is a sigfpe post about linear operators presented in a monadic fashion, I wonder if there were means to represent a trace (from what I remember, it’s doubtful, but if he implemented MonadFix, it could be)
10:34:31 <shachaf> My hope is more than slight. But I don't know how to figure it out exactly.
10:34:51 <shachaf> arseniiv: There's the special case of, uh, semimodules over a boolean semiring, which are called relations, I think.
10:35:05 <shachaf> It's easy to make sense of trace as talking about fixed points in that case.
10:35:39 <shachaf> If your tensor is separable, then the meaning of trace as "connecting the output to the input" is obvious, of course.
10:36:02 <shachaf> I mean, if A_i^j = B_i C^j, then of course A_i^i = B_i C^i
10:36:05 <arseniiv> shachaf: are those related to usual n-ary relations?
10:36:33 <shachaf> Just regular binary relations. Or n-ary in the multilinear case, sure.
10:38:20 <shachaf> In fact there are two different tensor products that give you two reasonable traces.
10:38:49 -!- cpressey has joined.
10:41:45 <arseniiv> hm I thought about linear algebra thing in relations (like how the matrix of their composition is a plain matrix multiplication, just, as you mentioned, over a semiring) but not yet about tensor multiplicating relations. For R ⊂ A1 × A2, Q ⊂ B1 × B2, will R1 ⊗ R2 ⊂ (A1 × B1) × (A2 × B2)?
10:48:46 <arseniiv> let R ⊂ A1 × A2, Q ⊂ B1 × B2; is one of these products R ⊗ Q defined as { ((a1, b1), (a2, b2)) | (a1, a2) ∈ R, (b1, b2) ∈ Q } and what is the second one?
10:49:09 <arseniiv> shachaf: now I could ping you :)
10:49:12 -!- MDude has joined.
10:50:16 <arseniiv> hm also I think I often misplace “can” and “could”
11:02:38 <lambdabot> Local time for shachaf is Mon Jul 22 04:02:35 2019
11:02:45 <shachaf> You could ask me after I wake up.
11:05:12 <shachaf> I think maybe I'd expect that a one-dimensional thing would be the identity for a tensor product?
11:15:12 <shachaf> Oh, maybe 3.2 in http://www.kurims.kyoto-u.ac.jp/~hassei/papers/tlca97.pdf is relevant.
11:15:15 <shachaf> I'll have to find out tomorrow.
11:31:00 <arseniiv> <shachaf> I think maybe I'd expect that a one-dimensional thing would be the identity for a tensor product? => I would expect the same, yeah
11:33:57 <arseniiv> oh I misplaced what things should be multiplicated. In Rel, objects are A1, A2 from my example, and for what a reason then I try to find out what R ⊗ Q is?.. I should look for A1 ⊗ B1, and in this case it’s obvious A1 × B1 will suffice as one of those tensor products
11:36:40 <arseniiv> I should just look in nLab, obviously
11:53:48 <arseniiv> ah, no, there is ⊗ for maps too. Linear algebra is bad for me
12:33:47 <esowiki> [[Seabass]] N https://esolangs.org/w/index.php?oldid=64610 * Sec-iiiso * (+1480) Created page with "'''Seabass''' is a programming language that was inspired by [[Deadfish]] and is backwards-compatible with it. The other key points of Seabass are: * functionality * (relative..."
12:44:08 <cpressey> Deadfish derivative is the new brainfuck derivative, it seems
12:50:03 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=64611&oldid=64609 * Sec-iiiso * (+14) /* S */
13:00:12 <esowiki> [[Deadfish]] https://esolangs.org/w/index.php?diff=64612&oldid=63861 * Sec-iiiso * (+961) /* Implementations */
13:22:33 <shachaf> I should be asleep but I'm not.
13:22:38 <shachaf> Do you like "real induction"?
13:22:44 <shachaf> For some S ⊆ [a,b] ⊂ ℝ, if the following hold:
13:22:44 <shachaf> • ∀x ∈ [a,b]: if [a,x) ⊆ S, then [a,x] ⊆ S
13:22:44 <shachaf> • ∀x ∈ S\{b}: [x,y] ⊆ S for some y > x
13:44:44 <esowiki> [[]] https://esolangs.org/w/index.php?diff=64613&oldid=64606 * Jussef Swissen * (+0)
13:49:02 <esowiki> [[]] https://esolangs.org/w/index.php?diff=64614&oldid=64613 * Jussef Swissen * (+167)
14:19:47 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64615&oldid=64586 * A * (-829) I am not interested in extending H anymore, so I will delete this part.
14:53:10 -!- stux- has joined.
14:56:06 -!- stux|away has quit (Ping timeout: 272 seconds).
14:58:08 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64616&oldid=64615 * A * (+24) Now there are 4 esolangs that need no code to implement!
15:09:11 -!- xkapastel has joined.
15:22:36 <cpressey> There are three reasons I commonly see for violating an abstraction layer: ignorance, expedience, and arrogance. I can do something about the first two, but I'm not sure what I can do about the last one.
15:24:28 <Taneb> Invoke the wrath of Zeus?
15:29:11 -!- stux- has quit (Quit: Aloha!).
15:29:26 -!- stux|away has joined.
15:48:39 <cpressey> Good idea, sounds a little drastic though? Maybe I'll start small - I'll use more Greek letters in my explanations.
16:14:09 <esowiki> [[Jussef Swissen]] https://esolangs.org/w/index.php?diff=64617&oldid=64424 * Jussef Swissen * (-221)
16:15:31 <esowiki> [[Swissen Machine]] https://esolangs.org/w/index.php?diff=64618&oldid=64386 * Jussef Swissen * (+3) /* Language Implementation */
16:18:58 <cpressey> In other news, hierarchical state machines and algebraic data types seem to share the same structure: the set of states of a machine is like a sum type, and sub-machines embedded in a state is like a product type
16:19:44 <Taneb> Is there anything which corresponds to exponential types?
16:20:43 <cpressey> State transition? Kinda? Maybe not. I'll think about it
16:23:48 <zzo38> Did anyone have any comment of the card game rules I posted, so far? Now I am adding the rules for adjacency
16:24:02 <zzo38> After that, then I can add the rules for combat.
16:25:21 <zzo38> Do you worship the Greek gods?
16:27:31 <zzo38> I meant if cpressey does, but if you want to answer that is OK too
16:30:18 <cpressey> No, the Babylonian gods made me promise that I wouldn't.
16:30:27 -!- FreeFull has joined.
16:32:14 <zzo38> OK (especially if you are not in Greece)
16:41:35 <kmc> I guess it would be nice to give my heart to a God
16:41:35 <kmc> But which one, which one do I choose?
16:56:17 -!- cpressey has quit (Quit: À la prochaine.).
17:09:07 <esowiki> [[User:Sideshowbob]] https://esolangs.org/w/index.php?diff=64619&oldid=64574 * Sideshowbob * (+187)
17:56:11 -!- b_jonas has joined.
17:59:28 <b_jonas> zzo38: it's hard to judge a card game even then, but this would make much more sense if you made example cards. make two beginner preconstructed decks that play against each other, with the equivalent of 30 M:tG cards in each deck (of which about 12 are basic lands)
18:01:15 <b_jonas> That way it would be at least possible to simulate games.
18:39:40 -!- Phantom_Hoover has joined.
18:50:39 <kmc> weirdest bug: when I tap the rear fingerprint reader on my phone, juicessh goes into Ctrl-lock mode
18:52:10 <b_jonas> no wait, I can web search that
18:53:42 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64620&oldid=64616 * Areallycoolusername * (+385) Collab Request
18:55:28 <kmc> b_jonas: yeah. I mostly use it for mosh, actually
18:55:41 <kmc> it might be the only Android app that supports it
18:56:10 <kmc> mosh is incredibly useful for mobile use
18:56:34 <kmc> it works well on shitty connections and it automatically reconnects within 3 second when you switch networks
18:57:13 <kmc> I used to worry that sending out the beacon frames had an impact on battery life
18:57:18 <kmc> but it doesn't seem to matter much
19:04:11 <b_jonas> bacon frames would have an impact on your cholesterol level, not the battery
19:06:19 <kmc> dietary cholesterol doesn't affect blood cholesterol very much
19:06:23 <b_jonas> sorry, "beacon" still doesn't look like a real word to me, even though I heared it several time
19:06:27 <kmc> but it affects obesity so yeah I guess
19:16:06 -!- j-bot has joined.
19:46:53 <arseniiv> b_jonas: maybe you should just continue seeing beacons here and beacons there and someday beacon will shine its light on itself
19:48:28 <arseniiv> omg I had read a parody Objectivist page by Andrej Bauer. I didn’t even thing there are so many strange quasi-rationalistic movements
19:50:24 <int-e> " Read out loud the Axioms of Subject and Object with proper emphasis. For extra credit, do it in front of a mirror."?
19:50:28 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
19:50:57 -!- Lord_of_Life has joined.
19:55:01 <arseniiv> maybe I should start my own. “People can’t become rational, they either born that way or not. I can determine accurately who is which. Please come in and polarize.”
19:56:12 <arseniiv> stated sufficiently bluntly to guarantee a steady intake of followers
19:57:23 <int-e> . o O ( "the second part is concerned with Objectivist ethics" -- this part will be very short. )
20:01:38 <arseniiv> I skipped, is there a second part planned?
20:02:32 <arseniiv> I presume it’s also scheduled at +∞? :)
20:07:02 <int-e> I think I know too little about "objectivism" to find this funny. I did read the two novels though at some point...
20:17:33 <arseniiv> BTW had someone tinkered with Algodoo? It’s a 2D physics sandbox thing. I think it could be possible to make a simple computer in there, but I hadn’t thought on it yet at all. There is a rotational drive primitive, so one is not bounded by what energy one could store beforehand; and there is no temperature simulation, so friction of parts won’t cause any harm
20:21:04 <b_jonas> I haven't heard of that one yet
20:22:03 <arseniiv> also there are working gears out of the box, and parts can occupy different collision layers to make a design more compact. Though there are only 10 layers IIRC. For a computer, it may become limiting
20:28:31 <b_jonas> arseniiv: how flexibly can you connect pairs of the 10 layers?
20:28:55 -!- xkapastel has quit (Quit: Connection closed for inactivity).
20:29:16 <arseniiv> each part can occupy any combination of them (checkboxes in the UI)
20:31:00 <b_jonas> that sounds like you could in theory build a RAM and ROM and CPU and PPU from them, though the question is how efficient the simulation is and whether you can get it fast enough to do some demonstrations
20:31:52 <arseniiv> yeah, I haven’t tested the limits
20:32:10 <arseniiv> also I saw it on youtube used mainly for marble races :D
20:32:35 <b_jonas> you could try to look existing stuff online to see if someone's done something computational
20:32:42 <arseniiv> or not mainly, but pretty often
20:49:53 <arseniiv> yet to find a presentable mechanical calculator, but this Hanoi tower solver is neat: https://www.youtube.com/watch?v=CDERoYv6Jt0
20:56:34 -!- xkapastel has joined.
21:10:30 <HackEso> smlist 503: shachaf monqy elliott mnoqy Cale
21:14:27 -!- AnotherTest has quit (Ping timeout: 264 seconds).
21:31:16 <arseniiv> after some search I think many people experimented with mechanic computation in that program, but almost none shared what they did (maybe they could think it was incomplete)
21:32:46 <arseniiv> I found a logic gate design (AND, OR, NOT, and XOR not shown by itself, but as a part of, I presume, a flip-flop)
21:37:10 <b_jonas> argh, why am I wearing these thin socks for the summer? they all look the same but actually have slight differences, so it's so hard to match the pairs after washing!
21:37:22 <b_jonas> I should just stick to my usual thicker socks for the summer too
21:38:48 -!- arseniiv has quit (Ping timeout: 245 seconds).
22:16:11 -!- mniip has quit (Remote host closed the connection).
22:56:21 -!- Phantom_Hoover has quit (Quit: Leaving).
23:28:42 -!- Sgeo__ has quit (Ping timeout: 258 seconds).
23:36:48 -!- Sgeo has joined.
00:12:02 -!- b_jonas has quit (Quit: leaving).
00:50:02 -!- Sgeo has quit (Ping timeout: 245 seconds).
01:17:01 -!- adu has quit (Quit: adu).
01:39:48 -!- MDude has quit (Ping timeout: 244 seconds).
02:13:54 -!- Sgeo has joined.
02:30:06 -!- moony has quit (Quit: Bye!).
02:30:47 -!- Bowserinator_ has joined.
02:31:03 -!- moony has joined.
02:32:46 -!- Bowserinator has quit (Ping timeout: 272 seconds).
02:34:31 -!- Bowserinator_ has changed nick to Bowserinator.
02:37:25 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64621&oldid=64620 * A * (+272) /* Collaboration Request */
02:38:55 -!- xkapastel has quit (Quit: Connection closed for inactivity).
02:39:33 -!- adu has joined.
02:41:59 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64622&oldid=64621 * A * (+577) /* Collaboration Request */
02:44:11 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64623&oldid=64622 * A * (+53) /* Collaboration Request */
02:48:06 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64624&oldid=64623 * A * (+0) /* Collaboration Request */ terrible grammar
02:55:24 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64625&oldid=64624 * Areallycoolusername * (+292) /* Collaboration Request */
02:58:11 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64626&oldid=64625 * A * (+269) /* Collaboration Request */
03:00:38 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64627&oldid=64626 * A * (+530) /* Collaboration Request */
03:03:42 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64628&oldid=64627 * A * (-16) /* Collaboration Request */
03:09:04 <esowiki> [[Special:Log/newusers]] create * Tokitoki * New user account
04:05:46 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64629&oldid=64628 * Areallycoolusername * (+1085) /* Collaboration Request */
04:06:05 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64630&oldid=64629 * Areallycoolusername * (+116) /* Collaboration Request */
04:15:05 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64631&oldid=64630 * Areallycoolusername * (+48) /* Collaboration Request */
04:15:26 -!- tromp has joined.
04:15:29 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64632&oldid=64631 * Areallycoolusername * (-2) /* Collaboration Request */
04:18:03 -!- tromp_ has quit (Ping timeout: 264 seconds).
04:20:05 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64633&oldid=64632 * A * (+321)
04:38:25 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64634&oldid=64633 * A * (+254) /* Collaboration Request */
04:41:41 -!- FreeFull has quit.
04:43:11 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64635&oldid=64634 * A * (+275) /* Collaboration Request */
04:50:36 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64636&oldid=64635 * A * (+275) /* Collaboration Request */
04:58:31 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64637&oldid=64636 * A * (+222) /* Collaboration Request */
05:11:48 <shachaf> https://twitter.com/zeuxcg/status/1153530252942950400
05:16:01 -!- iconmaster has joined.
05:20:08 <esowiki> [[Seabass]] https://esolangs.org/w/index.php?diff=64638&oldid=64610 * JonoCode9374 * (+29) /* Examples */
05:21:05 <kmc> I saw a big, fat orange cat in our backyard today
05:22:10 -!- sprocklem has quit (Ping timeout: 246 seconds).
05:28:17 <kmc> I suppose so
05:39:09 -!- sprocklem has joined.
05:41:19 -!- sprocklem has quit (Client Quit).
05:46:48 -!- sprocklem has joined.
06:40:18 -!- Frater_EST has joined.
06:40:32 -!- Frater_EST has left.
06:57:36 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64639&oldid=64637 * A * (+298) /* Collaboration Request */
07:23:08 -!- zzo38 has quit (Ping timeout: 245 seconds).
07:23:11 -!- shachaf has quit (Ping timeout: 245 seconds).
07:23:29 -!- shachaf has joined.
07:41:03 -!- iconmaster_ has joined.
07:45:25 -!- iconmaster has quit (Ping timeout: 276 seconds).
07:53:06 -!- Lord_of_Life has quit (Ping timeout: 248 seconds).
07:57:01 -!- Lord_of_Life has joined.
08:36:57 <esowiki> [[Seabass]] https://esolangs.org/w/index.php?diff=64640&oldid=64638 * JonoCode9374 * (+39) /* Truth-machine */
08:38:50 <esowiki> [[Seabass]] M https://esolangs.org/w/index.php?diff=64641&oldid=64640 * JonoCode9374 * (-25) /* Examples */ Formatting
08:48:09 -!- cpressey has joined.
08:54:02 -!- arseniiv has joined.
09:02:01 -!- AnotherTest has joined.
09:43:25 <cpressey> Good morning. To answer Taneb's question of yesterday: yes, function types appear to have the same structure as state transitions.
09:44:08 <cpressey> Inputs to state machines are a little weird: an input is a named, overloaded function.
09:44:59 <cpressey> And I should stress this is just a structural similarity. There is a huge, uh, semantic gap here. Types are static things, but state machines are quite dynamic.
09:47:51 <cpressey> Do type systems based on algebraic data types even usually support overloaded functions (e.g. a la Java)?
09:48:21 <cpressey> I'm not sure I've ever seen one.
09:59:33 <Taneb> Does Haskell's typeclass-based polymorphism count?
10:04:47 -!- wob_jonas has joined.
10:05:54 <wob_jonas> cpressey: rust technically has overloaded methods of the same name, and it has an algebraic type system, but the type inference is a bit weird and incoherent
10:06:13 <wob_jonas> No sorry, not incoherent, as in, it's not supposed to prove impossible things,
10:06:53 <wob_jonas> I mean inconsistent, as in you can't guess what it will be able to infer and what you must explicitly annotate, and this can even change so you have to add new annotations when you add new methods.
10:07:36 <wob_jonas> Standard ML also has a few built-in operators that are overloaded, but you can't define new functions of that sort.
10:17:02 <cpressey> I can well imagine that function overloading does not play nicely with HM-style type inference.
10:17:30 <cpressey> (I want to like Rust, but it's really hard.)
10:19:17 <wob_jonas> cpressey: rust's name resolution rules are, in general, really strange to me
10:19:36 <shachaf> Why do you want to like Rust? Or: Why is it hard?
10:20:44 <wob_jonas> it seems like they were originally designed well, but then they wanted to make them a little more capable than they can be with reasonable rules, and because of that they had to add all sorts of magic in it to work at all
10:22:25 <wob_jonas> besides the method lookup, there's parts where if it has to look for a name among multiple modules, it will ignore sorts of names that don't make sense syntactically (not by type, but by sort as in const, static, enum constructor, struct constructor, function etc)
10:23:48 <wob_jonas> and there's the ugly part about matching to a name where it can either bind to a new local name or use a constructor with no arguments, and the only thing that stops typoes in constructor names to cause silent errors is that there are warnings if you don't name a constructor in upper case or a local variable in lower case.
10:24:31 <cpressey> OK, to be more honest, I *used* to want to like Rust. I have since given up.
10:24:55 <wob_jonas> cpressey: I still like rust, but still in the future sense that it will "soon" become a good language
10:24:58 <cpressey> I have a hard time liking a language with no specification that makes we write a file called "Cargo.toml" in order to use it
10:25:34 <wob_jonas> cpressey: oh, you don't have to use cargo. that part is full of shit, ignore it
10:25:54 <wob_jonas> and if the javascript people tell you that you have to get packages from nodejs, ignore those too,
10:26:18 <wob_jonas> as well as the C or C++ people who tell you to use their favourite overengineered build system
10:26:53 <wob_jonas> the package repository is the sort of stupid dependency hell with low quality packages, you should ignore most of that
10:27:39 <cpressey> I am also amused by the fact that Haskell apparently has two package systems these days
10:27:53 <wob_jonas> and don't use cargo, except perhaps in as much as you need it to build existing good rust projects that use cargo, most importantly the rustc compiler
10:28:13 <wob_jonas> cpressey: that's normal. it'd be bad if a language or compiler tied you to a package system
10:29:25 <cpressey> Well, my point is not really about package systems, it's more about community, I suppose. Although it's also true that I believe you shouldn't judge a language by its community.
10:29:59 <cpressey> What languages do I actually *like*, anyway?
10:32:14 <cpressey> Taneb: sorry, didn't see that. Typeclasses sort of count. But the set of state machines where the transitions only work like that would be - restricted. Not sure what the implications would be.
10:32:46 <wob_jonas> cpressey: yeah, that would be a good question. if you can tell what languages you like and what you like in them and what you don't like, that might help tell if rust is useful for you
10:33:33 <wob_jonas> C++ has overloaded functions, of course, but no real algebraic type system
10:36:01 <cpressey> I once tried to read an article about how to implement a linked list in Rust. It made it sound like utter hell. It also started out with a lengthy argument about how linked lists are a "niche data structure" that no one really uses.
10:38:20 <shachaf> Man, are there any good languages?
10:38:35 <wob_jonas> cpressey: what kind of linked list? the mutable one or the immutable haskell list one? the latter is trivial to implement. for the former, there are a lot of nontrivial decisions you have to make about the interface in any language if you try to make one, but once you decide what interface you really want it to have, it's not hard to implement.
10:39:25 <wob_jonas> the problem only comes from conflicting expectations if you believe those rust evangelists who tell you that you have to write a safe (in the rust sense) interface for everything, and at the same time want to have an interface that is impossible to do that way.
10:39:32 <shachaf> I think non-intrusive linked lists should probably be pretty niche in a langauge like Rust.
10:40:06 <wob_jonas> admittedly intrusive would be _even_ harder to write in rust than in C++, and that you can call a genuine drawback.
10:41:29 <wob_jonas> but since you can have algebraic types generically parametrized by types, you can use non-intrusive lists in a reasonable way, generic over their content type
10:41:30 <cpressey> wob_jonas: I think you might have hit the nail on the head with the conflicting expectations thing.
10:42:33 <cpressey> I can try to dig up the article if anyone is really interested.
10:42:48 <wob_jonas> as for the community, you're on the internet, you have to prepare yourself to evangelists that seriously try to tell you overstatements, such as that rust can do anything that C can do (rust is pretty close for most practical applications, but it's not entirely true), or that you should always use safe rust because you can do anything in safe rust,
10:42:59 <cpressey> But it was almost certainly referring to intrusive linked lists, yeah.
10:44:07 <wob_jonas> cpressey: I suspect that statement is referring to non-intrusive linked list with a hypothetical interface that is safe but lets you do all unsafe mutating operations safely, like somehow magically figure out that you aren't using a pointer to a freed node.
10:44:31 <wob_jonas> it's not possible to have such an interface to arrays either, neither in rust, nor in any language.
10:44:36 <cpressey> Found it. https://rust-unofficial.github.io/too-many-lists/
10:45:03 <cpressey> I think it has changed slightly since I first read it
10:45:24 <cpressey> "Just so we're totally 100% clear: I hate linked lists. With a passion."
10:46:00 <wob_jonas> oh, and another lie you shouldn't believe is that you can have any abstraction for zero runtime cost. again there rust gets you closer than many languages, perhaps better in some areas than C++ and worse in others.
10:46:10 <cpressey> Okay, note to self: stop reading things on the Internet
10:46:24 <wob_jonas> you should read them, just don't believe them
10:46:31 <cpressey> Only scans of compsci papers from before 2002
10:46:43 <shachaf> Why read things that are mostly nonsense and written by nonsense people and will make you sad?
10:47:03 <wob_jonas> shachaf: to find the few gems that aren't mostly nonsense
10:47:19 <shachaf> Why don't you find those gems, and email them to me.
10:47:25 <shachaf> Then I won't have to read anything else.
10:47:34 -!- MDude has joined.
10:48:50 <wob_jonas> shachaf: because you shouldn't believe what I say too about which ones are gems
10:49:29 <shachaf> Of course. I also don't believe that I should read them.
10:50:06 <wob_jonas> I do sometimes link stuff on irc, but most of those are nonsense too
10:50:31 <shachaf> One of the Rust things that seems to be an attitude is that the experts will write data structures or whatever, and they'll use "unsafe" and so on, but then regular humans like you and me won't do that.
10:50:52 <shachaf> I feel like that's not so great in a systems language, where often your thing shouldn't be decomposed into a bunch of prepackaged data structures.
10:51:13 <shachaf> Instead your whole program is the fancy data structure, and you're the expert.
10:51:49 <cpressey> I feel this would all make more sense if the thing had a specification
10:52:00 <wob_jonas> shachaf: no no. if you want to have runtime efficiency, you should use unsafe, but learn its rules. if you want to write high-level programs like you write in safe haskell or perl and mostly don't care about efficiency, then don't use unsafe. and you can use unsafe only for the loops that you have to optimize.
10:52:08 <cpressey> Because without a specification how can I write a proof that it is safe?
10:52:31 <cpressey> Where do I refer to for the definitions of the things in my proof?
10:52:46 <cpressey> And if I have no proof, on what basis do I say it's safe?
10:52:56 <wob_jonas> cpressey: yes, that's a bad part, it's hardly documented, they haven't quite figured out all the unsafe rules yet. mind you, people can't figure out all the rules of memory access in C either, not even for single-threaded.
10:53:30 <wob_jonas> there's some documentation, but it's often unclear, because nobody likes to write documentation, so sometimes you have to ask on irc for people who understand the thing to clarify.
11:00:08 <cpressey> To be clear, I do like many of the ideas Rust is based on, and I think it's probably a better choice than C++ for a lot of projects (although that's partly because I detest C++).
11:01:09 <shachaf> I'd prefer a language that's a better choice than C.
11:02:21 <shachaf> cpressey: I haven't read that whole article, but it seems bizarre to me that doubly linked lists would be a problem because they want each node owns the next node or something.
11:02:23 <cpressey> I often use high-level languages and I rarely need to care about performance. When I do need to care about performance, it is rarely at the level where using unsafe operations would make a difference.
11:02:38 <shachaf> I imagine that instead you'd have some other thing that owns every node in the list.
11:03:00 <shachaf> I think the style of writing C and C++ where pointers are conflated with ownership isn't that great.
11:06:08 <cpressey> shachaf: I'm not sure how much Rust improves over C++ in that regard. I've had it described to me that Rust works this way because it implements RAII "properly" (implication being that C++ does not).
11:06:57 <cpressey> I would rather just have a garbage collector and not have to worry about my objects having a deep understanding of how to acquire what they need when they are allocated
11:07:29 <shachaf> Also this person is saying odd things like "a bunch of pieces of data on the heap (hush, kernel people!)" as if the heap isn't a fake idea.
11:08:06 <shachaf> I mean: Linked list nodes can be wherever I want them to, that's the point.
11:08:34 <shachaf> cpressey: Oh, well, it sounds like you could use almost any programming language made in the last few decades. Why Rust?
11:08:46 <wob_jonas> cpressey: rust does improve on the C++ rules in that it allows better low-level runtime optimizations. if you don't want that, then sure, allocate everything separately and garbage-collect or reference count everything. sometimes that is worth, and you can have at least the reference counting reasonably in rust, probably could do a proper gc too th
11:09:36 <wob_jonas> You can do the reference count everything stuff in rust about as well as in modern C++.
11:10:52 <shachaf> Hmm, my conclusion about this article is that it's not worth reading.
11:15:58 <cpressey> Alright, alright, so Rust is what it is. What I really find obnoxious is hype and bad evangelism. Whether Rust evangelism is worse than other language evangelism, I can't really say. I like Haskell (mostly) and I've seen some bad Haskell evangelism too.
11:16:30 <shachaf> Rust evangelism is pretty bad and annoying.
11:35:12 <cpressey> I don't dislike Julia. I haven't really seen evangelism for it. Maybe because it has an obvious nemesis (R) towards which such chest-thumping can be directed...?
11:36:16 <cpressey> I have very little interest in numerical computing, but even outside of that Julia seems just fine as a general-purpose programming language.
11:48:02 <cpressey> And then I wonder if I should learn LLVM or Liquid Haskell and then I wonder if it's an academic question because I have no time to write anything of interest in them anyway.
11:48:31 -!- iconmaster_ has quit (Ping timeout: 276 seconds).
11:52:34 -!- iconmaster has joined.
11:58:54 <wob_jonas> cpressey: hmm. I barely know anything about Julia. I should look it up a bit if you say it's a fine general-purpose language. I might not like it, but I at least want to be a little familiar about these.
11:59:17 -!- budonyc has quit (Ping timeout: 244 seconds).
12:01:02 <cpressey> wob_jonas: It's definitely worth looking at, IMO. Some of the approaches it takes are interesting.
12:02:39 <wob_jonas> cpressey: as for rust, even though people complain about the community, that it has a community on irc has helped me a lot. I could ask questions and get specific answers, and understand rust better that way. I could mostly ignore the evangelism, since that doesn't come through if I ask specific technical stuff.
12:03:08 <wob_jonas> this isn't exclusive to rust of course, but it helped a lot with rust because of its ... unsatisfying documentation
12:03:58 <wob_jonas> or let's say, the documentation is slow, but probably not really that slow if you compare it to languages like C or C++
12:14:41 <cpressey> A lot of the bad evangelism I've seen (for anything) has come by way of social media. I think that's probably a factor. (I'm not on social media anymore)
12:15:03 <cpressey> IRC I'm not on regularly, but I seem to come back to visit every 3 to 5 years
12:15:54 <cpressey> I seem to have rust installed on this laptop, but not configured correctly. I don't remember when/why this happened.
12:16:04 <wob_jonas> that is quite likely. I don't use facebook, and rarely use twitter.
12:21:27 <cpressey> Another thing about Rust that made it hard to like was how much, and how frequently, the language changes. I wrote this 5 years ago, I wonder if it still passes: https://github.com/catseye/Dipple/blob/master/rust/Tests.markdown
12:26:35 <cpressey> I will need to try to unbreak my rust installation to see
12:27:52 <wob_jonas> cpressey: yes, it does change a bit. they do care somewhat about compatibility of course.
12:28:58 <wob_jonas> cpressey: does that do anything fancy that would change? I'd guess it should still pass, though of course the specific error messages would change.
12:31:31 <wob_jonas> the parts using the tilde box syntax would fail
12:31:44 <wob_jonas> that changed, but I think it changed before rust version 1
12:31:50 <wob_jonas> it's not a recent change by any means
12:32:15 <wob_jonas> the language hasn't changed that much since version 1 in incompatible ways
12:38:43 <wob_jonas> Version 1 was in 2015 I think. I don't know when the tilde box syntax disappeared.
12:42:14 -!- xkapastel has joined.
12:48:01 <cpressey> Good to see that it's slowed down a little in recent years. There are "editions" of the language, now? Okay...
12:48:58 -!- iconmaster has quit (Ping timeout: 276 seconds).
12:49:43 -!- iconmaster_ has joined.
12:50:23 <wob_jonas> cpressey: two editions with some syntax differences, and they're direct call compatible, you can have one compilation unit be in one edition and another one in another, and directly call functions or use types across them, because the type system and runtime is the same, anything you write in one edition still makes sense in the other.
12:51:08 <wob_jonas> and since this isn't C vs C++, you don't have to write headers in both syntaxes (unless you have circular dependencies), the compiler can read the interface of a compilation unit from the object file, just like in haskell.
12:51:41 <wob_jonas> they're still working about some problems with macros, since those work at a level very close to the syntax, and it's a bit hard to mix the two syntaxes in the same statement, needs more compiler magic.
12:52:46 <wob_jonas> basically the compiler has to tag identifiers with which edition source they come from, so that it can resolve the name properly according to the rules of either the original edition or the 2018 edition.
12:54:23 <wob_jonas> also the differences between the editions is documented. you use the --edition=2018 switch of the compiler to tell that a file is written in the newer edition; sadly there's no declaration you can put right in the source file to do that.
12:54:56 <wob_jonas> if you think of the C and C++ magic compilation flags, this won't sound too bad.
12:55:23 <cpressey> Almost none of this sounds too bad compared to C++
12:55:27 <wob_jonas> and I only say it's slowed down for _incompatible_ changes
12:55:45 <wob_jonas> they added a lot of (mostly) compatible stuff, as in, new features or new library functions
12:56:16 <wob_jonas> but yes, there are incompatible changes, even recently, ones that have nothing to do with editions
12:56:59 <wob_jonas> really the editions change only a very few rules, the ones where it makes sense to do the change the way I told above. the incompatible stuff, that you just have to edit if your code triggers it. obviously they try to do it only when it doesn't impact much real code or is easy to fix.
12:57:44 <wob_jonas> and they try to make it so that the compiler error messages and warnings can help you recognize what broke from incompatible changes, or what will break from planned future incompatible changes
13:04:23 -!- cpressey has quit (Ping timeout: 244 seconds).
13:14:52 <arseniiv> hm it seems if I will design a sufficiently complex language, I better add a required “version flavor” directive to its grammar so as to warn users if there is e. g. a breaking change in syntax→semantics but the old syntax is still valid
13:18:56 <arseniiv> when I was in school, I had a wrong impression (I think because of reading MS JScript documentation on my computer; I had only VB6 and that) that the more sources are correct syntactically and have some meaning, the better
13:19:55 -!- cpressey has joined.
13:20:10 <arseniiv> now I find that the opposite is true and should be true. The more restrictions language places on user, the better it could version, the better it could report errors, the better a translator can do
13:21:09 <arseniiv> though maybe there could be drawbacks. I’d like to know if there are famous cases when some language was too rigid
13:24:33 <arseniiv> also on the same note I think overloading is oversold. A language can have rich function types allowing implicit/optional/keyword/iterable arguments and then there would be less sense to call two functions not mergeable this way by the same name and thinking how to get a reference to one of them without too much syntactic burden (by specifying all argument types?)
13:25:11 <arseniiv> (this is about true overloading, not generic functions)
14:21:17 -!- cpressey has quit (Ping timeout: 245 seconds).
14:30:50 -!- ais523 has joined.
14:34:12 -!- cpressey has joined.
14:36:07 <ais523> cpressey: I've been using Rust for some things, I've been pretty impressed with it so far
14:36:29 <ais523> I wrote the The Waterfall Model implementation in it, that's probably the largest released program
14:37:24 <ais523> I doubt it's a perfect language for everything, but I'd favour it for new projects over C (whenever in C I try to do something clever with memory allocation that wouldn't be allowed by Rust, it typically turns out to be incorrect)
14:38:34 -!- trn has quit (Ping timeout: 272 seconds).
14:38:35 <ais523> I'm unwilling to use C++ for almost anything at all, other than when I need to access linker functionality in a portable way
14:38:58 <ais523> I guess writing C++ as though it were C is tolerable, but even then, memory allocation is a pain
14:39:16 <ais523> (I do like many C++ features, like string const-correctness, but gcc lets you request that for C too)
14:41:58 <ais523> modern C++ though has most of the drawbacks of Rust without many of the benefits
14:42:26 <ais523> if you're using std::move and std::unique_ptr and friends, why not use a language actually designed around those concepts (and which enforces them much more comprehensively with better error reporting)?
14:43:17 <cpressey> Rust does make you think hard about memory allocation. Which, for some applications, is a very good thing, because you should think hard about memory allocation, so that you get it right.
14:43:59 <cpressey> For other applications, it's much more productive to not have to think about memory allocation at all.
14:46:42 <cpressey> Often I wonder how much friction programmers generate when discussing languages is simply because of insufficient recognition that different programmers program in different application areas.
14:46:53 <ais523> most of my Rust programs just seem to come down to making a few `Vec`s and storing values in those
14:47:18 <ais523> and yes, some languages are definitely better for certain fields
14:48:11 <cpressey> ais523: On a completely different note: are cellular automata Turing-complete or not? Let's settle this
14:49:04 <ais523> cpressey: the field of cellular automata in general? there are cellular automata that can simulate the steps of a running Turing machine starting from a playfield with only finitely many non-blank squares
14:49:28 <ais523> that seems like something that most people would consider to be Turing-completeness
14:49:50 <cpressey> I think it hinges on whether you allow your reduction to introduce halting or whether you insist it has to preserve halting.
14:50:08 <cpressey> If you allow the reduction to introduce halting, then the set of Turing machines that never halt, is Turing-complete.
14:50:32 <ais523> you can introduce a "halt colour" into a cellular automaton if you want to, but nobody ever does
14:50:50 <cpressey> Well, then it's arguably a different CA, too.
14:50:52 <ais523> also, I personally consider the set of Turing machines that don't halt to be TC, you just need to define a different halt state (e.g. a trivial infinite loop)
14:51:16 <ais523> cpressey: well, yes, but that different CA is still a CA and is Turing-complete, we're just trying to establish whether at least one CA is Turing-complete
14:52:35 <cpressey> Ehm, well, I don't outright reject your view; actually I advocate for a more nuanced view of "Turing-complete".
14:53:17 <ais523> for me, the main interesting definitional problems with Turing-completeness (other than the fancy L thing) is a) what sort of initial conditions are allowed, and b) what sort of halt states are allowed
14:53:48 <ais523> I don't think either problem has been resolved, either by me or by the mathematical community as a whole
14:54:35 <ais523> https://esolangs.org/wiki/Sequential_tag_system is a good example of the type of problems we see; the simplest known "TC" CAs simulate that (rather than cyclic tag), so the question is whether using a cyclic initial condition is permissible
14:54:52 <cpressey> Well, to show something Turing-complete, you need a reduction. Which reductions are allowable and which are not is not universally agreed upon. I think this is not too different from what you are saying.
14:56:46 <ais523> I think it's generally accepted that it's sufficient for the reduction to be computable and always halt
14:57:15 <ais523> but a reduction like that can't generate an infinitely long program, which is what cellular automata and Turing machines require
14:58:55 <cpressey> Do they? ... it's interesting that we seem to see different problems with it.
14:59:54 <ais523> actually I think all the interesting problems in definition of TCness may be special cases of a larger problem
15:00:43 <ais523> which is "suppose program X generates (possibly infinite) output that is read as input by program Y: what pairs of computational classes (X's computational class, Y's computational class) allow the combined program to be Turing-complete?"
15:02:24 <ais523> a long time ago I thought it was obvious that either X or Y had to be TC, but now I'm no longer sure
15:02:43 <cpressey> OK, I've managed to confuse myself again already.
15:02:57 <Taneb> You can get pretty far with an "F"SA with infinite states, I imagine
15:02:58 <ais523> well, there are trivial constructions such as "X produces infinitely many 0s, Y is an LBA", but that seems like cheating in some way
15:03:31 <ais523> Taneb: how do you even define that, though? presumably you need some sort of rule for how a state behaves, and then that rule becomes the language
15:04:00 <Taneb> ais523: yeah, I think I've not given this enough thought
15:04:44 <wob_jonas> next you'll say that the infinite mathematicians choosing an arbitrary non-principial ultrafilter during their meeting before the game with red and blue hats seems like cheating too
15:05:27 <cpressey> OK here is my overall feeling. There is a set of allowable reductions for showing Turing-completeness. Some of these reductions are more complex than others. e.g. some are polytime, some are not.
15:06:33 <cpressey> You can consider sets of languages that are only polytime-Turing-complete, or are only polytime-each-other-complete (if you follow what I'm handwavingly saying)
15:07:32 <cpressey> You can investigate Turing-completeness in a sort of fine-grained way.
15:07:59 <ais523> "polytime-Turing-complete" is only meaningful if you restrict the languages you can reduce /from/
15:08:30 <ais523> otherwise, you can just reduce from an exponentially padded language which requires every character in the program to be repeated 2*n times, where n is the original length of the program
15:08:51 <cpressey> Yes, it's intentionally restricted? Maybe I don't follow you
15:09:34 <ais523> even then, if the language has any equivalent of a string constant, the reduction can just bundle an interpreter with a string constant containing the program you're reducing
15:09:59 <ais523> so "polytime TCness" pretty much just only determines how data can be stored in a language
15:09:59 <wob_jonas> ais523: right, and that's why among practical languages, you have very simple reductions like that
15:10:05 <cpressey> Yes - that's usually considered unallowable or uninteresting, but you can define it, at least
15:10:07 <ais523> although that's interesting in its own right
15:10:33 <ais523> cpressey: I think disallowing that would be a huge mistake (and, anyway, difficult to define); I'm also not convinced it's always uninteresting
15:10:44 <cpressey> To be fair, "how data can be stored in a language" heavily, heavily characterizes a language, does it not?
15:10:58 <wob_jonas> so even polynomial time seems a bit of an overkill most of the time, but we want to allow a bit more than just straighforward encoding string literals for languages like incident or (eodermdrone with an infinite alphabet of letters)
15:11:20 <ais523> I think almost all languages allow a linear-space-in-program data representation, but some don't and are interesting because of that
15:11:40 <wob_jonas> ais523: not really just how the data can be stored at runtime, more like how it can be represented in the source code
15:12:15 <ais523> infinite-alphabet-Eodermdrome probably allows data representation in O(n) characters, thus O(n log n) bytes
15:12:20 <ais523> I suspect Incident is also O(n log n)
15:13:07 <Taneb> (is Eodermdrome TC with any finite alphabet? If so, what's the smallest alphabet such that Eordermdrome on that alphabet is TC?)
15:13:37 <ais523> Taneb: it's fancy-L-complete with a fairly small alphabet; it has finitely many programs for any finite alphabet
15:14:08 <wob_jonas> ais523: yeah. you could also imagine a more straightforward language where you have to input everything with alphabetic identifiers, each identifier is globally scoped and can appear at most ten times. you can chain identifiers to make them an alias of each other. you'd have to at least gensym to write code. it's not far from what you can imagine i
15:14:55 <wob_jonas> just like with infinite alphabet eodermdrone if you have to encode the letters as longer strings with some delimiters
15:15:19 <wob_jonas> (like, if it allows combining diacritic characters after the letters)
15:15:19 <ais523> you can also imagine a language for which programs have the same meaning if anagrammed; that would have a limit on storage density in the source code
15:15:59 <ais523> I think with that storing n bits of string constant requires O(2**n) program characters, in the limit?
15:16:09 <wob_jonas> ais523: oh yeah, we talked about that sort of thing, droppable punch card languages
15:17:28 <wob_jonas> though of course with a fixed length of the punch card there's only a fixed number of programs
15:18:28 <ais523> you can have duplicate punch cards
15:18:42 <ais523> in the extreme, you can have a language like Lenguage that doesn't look at the content of the program at all, only its length
15:19:00 <wob_jonas> ah yeah the length-only brainfuck variants
15:27:51 <cpressey> I guess another way to put it is, instead of asking "Is A B-complete?" we can ask "What reductions are required to get from A to B?" And the time complexity, or "introducing halting", or "initial conditions", etc, are all things you can consider.
15:28:33 <wob_jonas> cpressey: sure, but the answer to that definitely has to depend on what B is, and there's definitely no generic answer.
15:29:56 <cpressey> I agree, there is no canonical definition of Turing machines, -- most mathematicians are quite happy to let details slide when it comes to making a point, and this is usually a good thing
15:30:31 <wob_jonas> I mean for really differently powered classes
15:31:28 <wob_jonas> like we said above, you might define Turing-completeness to allow any polynomial time reduction, to study the power of esolangs with very limited formats of IO and source code
15:32:52 <ais523> defining what you're reducing from is vital for that though
15:33:20 <ais523> otherwise, you reduce from a language that uses infinitely long programs and thus have infinite time to do so, making even cat polytime TC
15:33:21 <cpressey> The most obvious thing about that seems to be that it disqualifies the languages whose TC proof is a reduction to Tag systems
15:33:37 <wob_jonas> sometimes we care about the language being able to read arbitrary input from a class, say byte strings, possibly with arbitrary output and interactive IO
15:33:58 <wob_jonas> or that a language can represent any primitive recursive algorithm with arbitrary non-interactive IO or something
15:34:00 <ais523> cpressey: I don't see why, tag systems use finite programs and finite input
15:34:18 <cpressey> We seem to be talking about vastly different things
15:34:20 <ais523> do you mean sequential tag?
15:34:36 <wob_jonas> cpressey: I got confused, I don't know what I'm talking about
15:34:42 <ais523> but yes, I'm suspecting a disconnect, e.g. the reductions you're suggesting seem to be backwards
15:34:47 <ais523> so maybe we're misunderstanding each other
15:35:00 -!- wob_jonas has quit (Remote host closed the connection).
15:36:00 <ais523> I'm treating reduction as "I'm writing a function that compiles language A programs into language B programs, if my function is correct andd sufficiently simple this proves that B is A-complete"
15:37:22 <cpressey> I think it's that by polytime I meant: I'm writing a function that compiles polytime programs in language A into polytime programs in language B
15:37:33 <cpressey> *not* I'm writing a polytime function to do this
15:37:39 <ais523> oh, I see, a performance-preserving reduction
15:37:46 <ais523> yes, that's an interesting subject too
15:37:59 <ais523> although "polytime programs in language A" is often hard to define due to optimising compilers
15:38:11 <cpressey> Tag systems, from what I understand, are not able to do things in poly time, that TMs can do, in poly time
15:38:32 -!- Sgeo|web has joined.
15:38:48 <ais523> I think they're slower by a factor of the amount of memory in use
15:39:15 -!- Sgeo|web has quit (Remote host closed the connection).
15:39:20 <ais523> I'm not 100% sure that means that polytime → polytime (with a worse exponent) is possible, but it feels like it would be
15:39:25 <cpressey> At any rate, I think I've seen an objection to e.g. the Rule 110 TC proofs, on that basis: like, yes, rule 110 is technically TC, but not in a "useful way"
15:39:58 <ais523> ah yes, an O(n**k) time program can use at most O(n**k) memory, so the tag system can simulate it in O(n**2k) time
15:40:04 <cpressey> And that seems like, someone being conservative with a fine-grained conception of Turing-completeness. rather than being liberal with it.
15:41:20 <ais523> there are some languages which seem to have an exponential slowdown
15:41:27 -!- iconmaster__ has joined.
15:41:42 <cpressey> As for infinite programs, that's a whole nother ball of wax, as they say
15:42:03 <ais523> in particular, I suspect https://esolangs.org/wiki/An_Odd_Rewriting_System may be exponentially slower than some Turing machines at performing the same task
15:42:58 <Taneb> I've just had a dumb esolang idea
15:44:46 <Taneb> Never mind, it doesn't work
15:45:17 <Taneb> (the idea was, you have a list of numbers and execute the program by running the busy beaver corresponding to each number on the tape)
15:45:46 -!- iconmaster_ has quit (Ping timeout: 276 seconds).
15:51:11 <cpressey> The thing I was thinking of was actually from Scott Aaronson's critical review of A New Kind of Science
15:51:34 <cpressey> "However, though Wolframdoes not discuss this explicitly in the book, the known simulations of Turing machines by tag systems require exponential slowdown."
15:51:53 <cpressey> https://arxiv.org/abs/quant-ph/0206089
15:52:36 <cpressey> Now, whether you consider that a problem or not -- that's sort of up to you, I think.
15:55:15 <ais523> I don't consider that a problem for computational class; however, I also don't agree with the statement
15:55:58 <ais523> i.e. I think tag systems can simulate Turing machines with only polynomial slowdown
16:03:46 <ais523> yep: you can compile a Turing machine into a cellular automaton with no slowdown (effectively by using a colour for each TM colour, plus a colour for each (TM colour / TM state) pair, the latter are only used where the tape head is)
16:05:06 <ais523> and you can compile a cellular automaton into a tag system with quadratic slowdown (via evaluating the entire initialized portion of the tape one character at a time on each step, then adding an extra uninitialized character at each end of the tape so that it doesn't run out)
16:06:18 <cpressey> Well, this is from 2002; at the time, this might not've been established.
16:07:03 <cpressey> The existence (or not) of such languages that are (let's say) only-expontentially-Turing-complete, is an interesting subject to me, at any rate.
16:07:14 <ais523> if so then 2002 needed better complexity theorists
16:07:25 <ais523> to me, the construction I just listed is the obvious one
16:07:47 <ais523> and I can't think of a slower construction except via arbitrarily slowing things down
16:07:50 <cpressey> I know I've had lots of difficulty coming up with languages that provably require high complexity to interpret
16:08:34 <ais523> that doesn't surprise me; AORS's "TC, but very slowly" came as a big surprise when I discovered it
16:12:15 <ais523> something like https://esolangs.org/wiki/Brainhype works but that's cheating
16:13:22 <cpressey> The weakness seems to be that it's often possible to find a "sufficiently clever" Hashlife-like optimization (and concomittantly difficult to prove that no such optimization exists!)
16:16:23 <ais523> that said, this conversation gave me an idea for a language but I have no idea if it's even TC
16:16:59 <ais523> you start with nondeterministic Fractran, specifically the variant in which all commands that can legally run at any given point all run in parallel in separate threads, the program doesn't halt as long as at least one thread is still running
16:17:11 <ais523> but then you add a rule that a program cannot run unless the program unconditionally halts in the absence of that command
16:18:01 <ais523> I'm not convinced that this is computable, and I'm /also/ not convinced that it's usable for programming! quite a wide range there
16:20:51 -!- Sgeo has quit (Read error: Connection reset by peer).
16:21:17 -!- Sgeo has joined.
16:21:45 <cpressey> This has definitely been an interesting conversation; I don't have any new ideas but I might be able to organise some of my existing ones more coherently
16:23:01 <cpressey> I might try to understand AORS better; it might be describable in somewhat-more-conventional term-rewriting terms
16:26:48 <ais523> it's basically a tag system that can't maintain memory beyond a particular point in the queue (that cycles round from start to end)
16:27:06 <ais523> the definition on Esolang is an attempt to formalize that, the informal intuition can be helpful too though
16:44:27 <ais523> or, hmm, maybe 2C is the language that can't maintain memory but has no other restrictions, and AORS has an additional restriction?
16:45:26 -!- b_jonas has joined.
16:46:48 -!- FreeFull has joined.
16:48:11 -!- trn has joined.
16:53:47 -!- Phantom_Hoover has joined.
16:57:16 -!- cpressey has quit (Quit: A la prochaine.).
17:07:59 -!- user24 has joined.
17:10:19 <b_jonas> reductions the can turn a polynomial runtime program to a polynomial runtime program are important, and I care about them, in fact I care even about more strict time limits, but people shouldn't try to argue that the "Turing-complete" word refers to anything like that, because I think it's established that it doesn't mean that
17:11:36 <b_jonas> a good example is counter machines with a fixed number of counters: they're Turing-complete, but you blow up your runtime exponentially if you translate programs from more reasonable to them, or double-exponential if there are only two counter registers
17:11:38 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64642&oldid=64639 * Areallycoolusername * (+3198)
17:12:41 <b_jonas> but the whole P class is so robust because we have a lot of natural computation models that are equivalent to each other and blow up by only at most polynomial time
17:12:47 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64643&oldid=64642 * Areallycoolusername * (+4)
17:13:07 <b_jonas> so it doesn't matter which one you use to define which programs run in polynomial time in the size of input
17:15:03 -!- arseniiv has quit (Ping timeout: 245 seconds).
17:15:25 -!- arseniiv has joined.
17:27:43 <b_jonas> ais523, cpressey: that statement in Scott's review is indeed written in a confusing way. as far as I can tell, the problem is that the construction to use that simple cellular automaton can't simulate just any tag system (that would be a strange sort of proof), and the simulation they have does have an exponential blowup, just like with counter machines.
17:28:05 <b_jonas> but yes, that's not what the article says
17:28:19 -!- user24 has quit (Quit: Leaving).
17:28:41 <ais523> we're simulating a turing machine with a cellular automaton with a tag machine, not the other way round
17:28:54 <ais523> that said, the other direction (simulating a tag machine with a turing machine) is also fairly efficient, IIRC
17:29:28 <b_jonas> apparently it's the cellular automaton that simulates certain tag systems with an exponential blowup
17:29:36 <b_jonas> then that statement definitely seems wrong in that draft
17:31:31 <b_jonas> a cellular automaton with a tag machine? ok
17:32:00 <b_jonas> anyway, the slowdown is in simulating something with that particular cellular automaton
17:33:35 <b_jonas> no look, Scott's review clearly seems to say on page 5 to 6 that it's about simulating some kind of tag system with the rule 100 automaton, and simulating a turing machine with the tag system.
17:33:45 <b_jonas> he claims that it's the latter that's slow, I think that's wrong but I'm not sure
17:34:16 <b_jonas> it's definitely not talking about simulating a cellular automaton with a tag machine there, because Wolfram isn't either
17:34:24 <ais523> there's an entirely different argument that shows that's wrong: the very first universal turing machine simulated tag machines, that's why they were invented
17:34:33 <ais523> and people don't complain about a slowdown there
17:34:53 <b_jonas> Wolfram was interested on how powerful simple 1-dimensional cellular automatons are
17:35:07 <ais523> (the naive method has a quadratic slowdown, maybe there are non-naive methods that are faster)
17:35:10 <b_jonas> ones with a three cell neighbourhood and two states
17:35:47 <b_jonas> and I think the cellular automaton construction has been improved later, after that review
17:36:35 <ais523> well, Cook's construction for rule 110 simulates sequential tag
17:37:00 <ais523> and that's also polynomially slower than the Turing machine it's simulating, but only polynomially
17:37:36 <b_jonas> yes, but isn't Cook's construction using an exponential blowup in the simulation?
17:37:56 <b_jonas> the original one, which was known at the time of Scott's review
17:38:35 <ais523> it can't be, the reason is because he created cyclic tag from sequential tag via giving it a periodic input
17:38:55 <ais523> that trick only works if the cellular automaton is linear time with respect to the sequential tag system (otherwise the input wouldn't be periodic)
17:39:48 <b_jonas> the periodic pattern in the CA can be much more fine-grained then the tag system symbols
17:40:18 <ais523> well, in this case (I know the general shape of the rule 110 TCness construction, every symbol in the repetitive part is used)
17:40:27 <b_jonas> imagine simulating anything in Brainfuck, where you use a periodic pattern to store multiple tapes on one tape
17:40:33 <ais523> it could be that the construction moves to the right exponentially fast
17:40:47 <ais523> with the distance the symbols have to move doubling each time round the tape
17:41:15 <ais523> so the symbols are sent in linear time but arrive in exponential time because the queue is running away from them
17:41:27 <ais523> that would be specific to the rule 110 construction, though, not tag systems in general
17:41:28 <b_jonas> only Brainfuck is too powerful, it can do the initialization and tape extension all on its own
17:41:50 <b_jonas> ais523: yes, something like that
18:13:40 -!- ais523 has quit (Quit: quit).
18:15:47 -!- rain2 has joined.
18:18:20 -!- rain1 has quit (Ping timeout: 272 seconds).
18:21:13 <\oren\> ok this is an issue. I can't remember how my vectorization algorithm works
18:21:34 <\oren\> and I didn't put any comments explaining it
18:26:11 -!- iconmaster_ has joined.
18:30:52 -!- iconmaster__ has quit (Ping timeout: 276 seconds).
18:31:50 <\oren\> Ok I figured out how I did it
18:46:49 <\oren\> Basically it involves keeping track of the vertices between pixels instead of the pixels
19:41:57 -!- xkapastel has quit (Quit: Connection closed for inactivity).
19:51:11 -!- Lord_of_Life_ has joined.
19:54:08 -!- Lord_of_Life has quit (Ping timeout: 268 seconds).
19:54:09 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
20:06:59 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64644&oldid=64643 * Areallycoolusername * (+0) /* Collaboration Request */
20:13:20 -!- xkapastel has joined.
20:27:02 -!- KindOne has changed nick to uplime.
21:29:37 -!- AnotherTest has quit (Ping timeout: 276 seconds).
23:03:11 -!- tromp_ has joined.
23:06:10 -!- tromp has quit (Ping timeout: 248 seconds).
23:13:06 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
23:22:33 -!- arseniiv has quit (Ping timeout: 245 seconds).
23:46:17 <tswett[m]> Woot, I successfully implemented a scan code translation table in the IBM PC simulator!
23:46:25 <tswett[m]> Now when you type stuff, it shows the stuff that you typed, instead of showing weird garbage!
23:46:46 <tswett[m]> The first thing I typed was "spinx of black quartz judge my vow".
23:46:48 <b_jonas> tswett[m]: nice! does it support the shift and right shift and control keys as modifiers?
23:46:58 <tswett[m]> It doesn't support anything besides letters yet.
23:47:08 <b_jonas> do you plan to support them later though?
23:47:15 <b_jonas> does it support the space bar?
23:47:30 <tswett[m]> It kind of supports the space bar, but not on purpose.
23:47:40 <tswett[m]> Anything it doesn't recognize shows up as a black, and it doesn't recognize the space bar...
23:47:43 <tswett[m]> So yes, it supports the space bar. :D
23:48:18 <tswett[m]> Also, it doesn't yet recognize that key-down and key-up are different kinds of things; it just interprets a key-up as an unknown character.
23:50:54 <tswett[m]> Also, programming in machine code is awfully tedious.
23:51:25 <b_jonas> my favourite example to type is the Weöres Sándor poem "Munka és béke", because it has at least one of most lower case letters, with like five or six missing, and of most of them appear once in the first stanza and once in the second stanza
23:53:30 <b_jonas> It also has two versions published that differ in a few words, and one of the versions misses one fewer letters
23:57:35 <tswett[m]> In any case, one of the next things I'm gonna want to do is implement some Forth-like stuff.
23:57:43 <b_jonas> The missing lowercase letters are "ö" plus the rare letters "q x w í ú "
23:58:04 <tswett[m]> I want this thing to be able to write its own damn machine code. :D
23:58:44 <b_jonas> The missing lowercase letters in one variant are "ö" plus the rare letters "q x w í ú ű"
23:59:23 <b_jonas> but in the other variant, the first line is "Méh-raj duruzsol fák közt, fű alól,", which adds "ö" and "ű" thus making this quite closer to containing all lower case letters
23:59:59 <b_jonas> And I prefer to add his name too, so we at least have a "W" there
00:01:50 <b_jonas> The missing letters make it look like it was optimized for those old typewriters that were missing the letters "í ú ű". You don't see documents typed with that sort of typewriter anymore, so if there are accented letters missing, it's not that set, but it used to be more frequent in old documents.
00:02:36 <b_jonas> http://math.bme.hu/~ambrus/pu/versw has the full poem
00:03:22 <tswett[m]> Instead of having to write "29 DB B8 10 01 8E D8 B8 00 B8 8E C0 29 C0 E4 60 D7 B4 07 AB B0 20 E6 20 CF", I want to, at the very least, be able to write "sub bx bx mov ax 0110 mov ds ax mov ax b800 mov es ax sub ax ax in al 60 xlat mov ah 07 stosw mov al 20 out 20 al iret".
00:04:25 <b_jonas> tswett[m]: that can be hard, because x86 has a rather tricky complex instruction set, and a stupid assembly syntax that doesn't really correspond well to what's encoded
00:05:20 <b_jonas> so you might want to use a nonstandard assembly syntax to make it a bit easier
00:05:20 <tswett[m]> "Fortunately", I'm only using an 8088 processor.
00:05:30 <b_jonas> yeah, but even that subset
00:06:54 <b_jonas> in fact the later additions tend to be somewhat more regular
00:23:55 <tswett[m]> Man, it'd be awfully nice if the 8088 gave you a separate call stack and data stack.
00:24:05 <tswett[m]> Forth pretty much assumes that you've got that.
00:26:15 <b_jonas> tswett[m]: use the BP register to mark the separate data stack, and access that with the usual instructions and convenient addressing modes, without PUSH or POP, while you use the normal stack marked by SP for the call stack
00:27:08 <tswett[m]> I was thinking I'd use the data segment for the data stack.
00:27:46 <tswett[m]> Then use SI and DI (both at once) to indicate the top of the data stack.
00:28:37 <b_jonas> if you want a single data segment, then I think it's best to have the forth data stack in it
00:29:06 <b_jonas> what? why SI _and_ DI (both at once)?
00:29:55 <b_jonas> I could imagine just using SI or DI, but why both?
00:30:03 <tswett[m]> Yeah, come to think of it, there's probably no good reason to do that.
00:30:13 <tswett[m]> Let me see, why did I come up with that idea in the first place.
00:30:26 <b_jonas> using just one of them to indicate the top of the data stack can work
00:30:41 <tswett[m]> It's so that you can use either a string read instruction or a string write instruction without having to adjust SI or DI first.
00:30:54 <tswett[m]> But then again, you'll have to adjust either SI or DI *afterwards* instead.
00:30:59 <b_jonas> also, some forth interpreters store the top word of the stack in a register, not on the actual memory stack, I think that's usually worth
00:31:28 <tswett[m]> So I think I'll just use DI and then copy it into SI if needed.
00:31:39 <b_jonas> I don't think the string instructions help you much
00:31:57 -!- xkapastel has quit (Quit: Connection closed for inactivity).
00:32:12 <tswett[m]> Well, I'm using STOSW somewhere. :D
00:33:31 <tswett[m]> Nyow, this one Forth tutorial-thingamo I'm looking at implements the DUP word like this:
00:34:24 <tswett[m]> It's pushing, with a "push" instruction, and then immediately returning. So apparently "push" uses one stack and "ret" uses another stack.
00:35:00 <b_jonas> tswett[m]: are you sure you're disassembling it correctly? is it possible that the push has a segment override?
00:35:13 <b_jonas> no wait, that's stupid, push can't do that
00:35:33 <b_jonas> or can it? I don't recall how x86_16 and x86_32 works
00:36:03 <b_jonas> I think the segment override applies only to the operand of the push
00:36:04 <tswett[m]> I'm not disassembling anything; it contains literally that assembly code.
00:36:30 <tswett[m]> Yeah, wait, *can* push have a segment override? That wouldn't make sense, you'd need to override the stack pointer register too.
00:36:55 <b_jonas> maybe that's not the part of the code that duplicates the value on the stack?
00:37:03 <b_jonas> but it does some other bookkeeping?
00:40:24 <tswett[m]> It definitely says that this is the implementation of the DUP word.
00:43:58 -!- iconmaster_ has quit (Ping timeout: 276 seconds).
00:44:33 -!- iconmaster has joined.
00:45:15 -!- doesthiswork has joined.
00:49:54 <tswett[m]> You know, I like the idea of the implementation of a Forth word being *just* some machine code.
00:50:30 <tswett[m]> Like, if there's a Forth word corresponding to the XLAT instruction, then the body of that Forth word is just a single byte: d7
00:51:34 <b_jonas> sure, you can compile forth if you want
00:51:36 -!- b_jonas has quit (Quit: leaving).
00:52:07 <kmc> what does XLAT do again?
00:54:07 <int-e> that was a weird one, something like mov al, [bx+al]
00:54:56 <int-e> and I forgot whether al is signed or unsigned here.
00:55:06 <int-e> in *wrong* pseudo-C if bx+al overflows.
00:55:18 <int-e> (al is /probably/ unsigned)
00:55:46 <tswett[m]> "XLAT (translate) replaces a byte in the AL register with a byte from a 256-byte, user-coded translation table. Register BX is assumed to point to the beginning of the table. "
00:58:04 <int-e> The one with a signed offset was the bit test with a memory target, bt r/m*, r*
01:01:08 <int-e> and apparently bt can still do that when used with a memory operand. this is somewhat crazy.
01:02:53 <int-e> Uhm. Or maybe not. Let me check elsewhere...
01:16:57 <int-e> Okay, AMD describes this far more clearly than Intel does, and indeed bit offsets outside of the designated memory operand are supported (meaning the address of the memory operand is not the final memory address being accessed.)
01:25:37 -!- FreeFull has quit.
01:34:09 <kmc> shachaf: https://i.imgur.com/1LxEakY.jpg https://i.imgur.com/IpTZR7P.jpg
02:00:00 <esowiki> [[Sidex]] N https://esolangs.org/w/index.php?oldid=64645 * A * (+4550) Add Sidex
02:00:31 <esowiki> [[Language list]] M https://esolangs.org/w/index.php?diff=64646&oldid=64611 * A * (+12) /* S */
02:10:36 <esowiki> [[Timeline of golfing languages]] N https://esolangs.org/w/index.php?oldid=64647 * A * (+856) Stub timeline page
02:10:54 <esowiki> [[Timeline of golfing languages]] M https://esolangs.org/w/index.php?diff=64648&oldid=64647 * A * (+0) Oops
02:12:56 <kmc> shachaf: it is a cat that is sometimes seen in our yard
02:14:23 <esowiki> [[Timeline of golfing languages]] M https://esolangs.org/w/index.php?diff=64649&oldid=64648 * A * (+397)
02:14:49 <esowiki> [[Timeline of golfing languages]] M https://esolangs.org/w/index.php?diff=64650&oldid=64649 * A * (+64) /* Since 2015 */
02:14:57 <kmc> so i suppose yes
02:15:17 <int-e> "Everyone who uses a computer frequently has had, from time to time, a mad desire to attack the precocious abacus with an axe."
02:20:04 <esowiki> [[Timeline of golfing languages]] https://esolangs.org/w/index.php?diff=64651&oldid=64650 * A * (+176) /* 2015 */
02:20:34 <esowiki> [[Timeline of golfing languages]] https://esolangs.org/w/index.php?diff=64652&oldid=64651 * A * (+99) /* See also */
02:22:36 <int-e> This was written around 1970 by a rocket scientist :)
02:24:28 <esowiki> [[Nop]] https://esolangs.org/w/index.php?diff=64653&oldid=56953 * A * (+234)
02:24:30 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64654&oldid=64644 * A * (-94)
02:24:30 <int-e> http://library.sciencemadness.org/library/books/ignition.pdf page 97 (113 of the pdf)
02:26:18 <esowiki> [[Hey stack!]] N https://esolangs.org/w/index.php?oldid=64655 * A * (+2850) Created page with "[[Hey stack!]] is a 4th-generation language where you have to declare everything before you use these things. It is a meta-language that can be used to describe anything physi..."
02:26:38 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64656&oldid=64654 * A * (-2778) /* Hey stack! */
02:28:47 <esowiki> [[Char]] M https://esolangs.org/w/index.php?diff=64657&oldid=64532 * A * (-1176) Fix bugs in ARCUN's edits
02:29:22 <esowiki> [[Char]] M https://esolangs.org/w/index.php?diff=64658&oldid=64657 * A * (+68) and +CAT
02:30:56 <esowiki> [[Esolang talk:Categorization]] M https://esolangs.org/w/index.php?diff=64659&oldid=64589 * A * (+236) /* Proposed Categories: Arch-based and Bootstrapped */
02:31:47 <esowiki> [[An arch is simply a curve.]] N https://esolangs.org/w/index.php?oldid=64660 * A * (+1577) Created page with "'''An arch is simply a curve.''' is a self-modifying [[Arch]]-based language where the program itself is an arch. All commands are synonyms of different definitions of the wor..."
02:32:11 <esowiki> [[Arch]] M https://esolangs.org/w/index.php?diff=64661&oldid=64564 * A * (-36) /* Languages */ No xlinks anymore
02:32:28 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64662&oldid=64656 * A * (-1756) /* An arch is simply a curve. */ Tidy up user talk page
02:32:28 <tswett[m]> Pondering whether or not I want to do jumps using POP CS...
02:32:56 <tswett[m]> It's a great idea as long as all of my subroutines start at the same offset into the code segment. :D
02:34:21 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64663&oldid=64662 * A * (+101) /* Collaboration Request */
02:35:00 <int-e> what processor are you targeting?
02:36:29 <int-e> (for all I know, pop cs only ever worked on 8088 and 8086 processors)
02:38:43 <tswett[m]> I wonder if I can use the ES: prefix to make the mod-reg-r/m byte refer to the extra segment instead of the data segment.
02:40:01 <int-e> I mean, that's what the prefix is for.
02:41:48 <esowiki> [[Sidex]] M https://esolangs.org/w/index.php?diff=64664&oldid=64645 * A * (-77)
02:42:10 <shachaf> Should I prefer instruction destination in the first or last position for x86?
02:43:14 <int-e> It's much more entertaining if you have an opinion on that. It doesn't matter which.
02:44:06 <shachaf> I probably want to write an assembler so I should decide on one.
02:44:16 <tswett[m]> The emulator's built-in debugger puts destination first, so that. :D
02:44:16 <shachaf> For three-operand instructions it should obviously be in the middle.
02:44:19 <tswett[m]> As does this random web page. http://pastraiser.com/cpu/i8088/i8088_opcodes.html
02:44:35 <shachaf> I'm used to reading AT&T-style syntax.
02:44:58 <esowiki> [[Sidex]] M https://esolangs.org/w/index.php?diff=64665&oldid=64664 * A * (-396) No named threads, it is off-topic
02:45:06 <int-e> tswett[m]: yes it does
02:47:25 <tswett[m]> I'm starting to think that POP CS is actually a great idea.
02:47:53 <tswett[m]> Just put POP CS right before the first opcode of every subroutine, in the same place.
02:48:10 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64666&oldid=64663 * A * (+41) /* Collaboration Request */
02:48:18 <tswett[m]> Whenever you want to goto another subroutine, you push the new CS and then jump to your POP CS.
02:49:23 <int-e> Well Intel got away with reappropriating that opcode as a prefix for other instructions... so I guess few people thought that way.
02:54:14 <tswett[m]> I think x86 is famously hard to virtualize or whatever.
02:54:46 <tswett[m]> I sorta want to create an "eso-architecture" with the sole goal of being as good at virtualization as possible.
02:55:18 <tswett[m]> I... don't quite know what that would look like.
02:56:26 <tswett[m]> No memory, no registers, no source code. Execution consists of an infinite loop that does nothing.
02:56:38 <tswett[m]> Virtualization is easy because there's only one program.
02:56:41 <int-e> I'm afraid that there's a reason why processors get dedicated virtualization support, especially since "virtualization" nowadays usually implies an extra level of memory management, rather than plain emulation.
02:57:09 <tswett[m]> Not only is it easy to simulate any program, but every program is an accurate simulation of every other program.
02:58:05 <int-e> And we can implement it readily in a grain of sand.
02:58:32 <tswett[m]> I guess that my esoarchitecture would allow you to add layers of "if you would access this memory segment, instead go run this other thing".
02:58:37 <tswett[m]> And, of course, it would not allow you to remove them.
02:58:51 <tswett[m]> But they'd be removed implicitly... or whatever... whenever they're actually invoked.
02:59:29 <tswett[m]> Sudden realization that I don't know what a trap is and how it differs from an interrupt.
02:59:52 <tswett[m]> ("Well," you say, "they're called 'instants' now, and most traps are instants, but I guess a trap could also be an activated ability.")
03:02:47 <int-e> Interrupts are external events; traps are triggered in software. (But obviously this is not 100% consistent... see the 'int' instruction on x86)
03:06:57 <kmc> virtualization shouldn't be anywhere near as difficult as it is on x86 :(
03:08:09 <kmc> > Intel x86 defines two overlapping categories, vectored events (interrupts vs exceptions), and exception classes (faults vs traps vs aborts).
03:08:11 <lambdabot> <hint>:1:45: error: parse error on input ‘,’
03:08:58 <kmc> > traps increment the instruction pointer, faults do not, and aborts 'explode'.
03:09:01 <lambdabot> <hint>:1:40: error: parse error on input ‘,’
03:09:34 <int-e> O I didn't know that there are two forms of hydrogen (H2 molecules).
03:10:23 <int-e> https://en.wikipedia.org/wiki/Spin_isomers_of_hydrogen
03:15:41 <esowiki> [[Talk:Kepler]] M https://esolangs.org/w/index.php?diff=64667&oldid=64590 * A * (+49)
03:18:54 <int-e> (The amazing thing is that this matters---a lot---when liquefying hydrogen, because the state change from the ortho to the para variant releases more energy that is required for evaporation.)
03:22:46 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64668&oldid=64666 * A * (-1) /* Resource Starvation */ typo
03:26:17 <int-e> I also didn't know that nuclear rocket propulsion is not dead. https://en.wikipedia.org/wiki/TEM_(nuclear_propulsion) and "In 2019, the US Congress passed a bill to add a line item to the budget to direct NASA to expend US$100 million to re-initiate development of a nuclear thermal rocket propulsion system, with an aspirational goal of a test flight no earlier than 2024." (from...
03:26:23 <int-e> ...https://en.wikipedia.org/wiki/Nuclear_thermal_rocket )
03:29:33 <kmc> int-e: neat.
03:29:46 <kmc> now cathy's trying to explain to me about electron spin isomers of oxygen
03:29:57 <kmc> (singlet and triplet oxygen)
03:30:21 <kmc> i have only the most rudimentary understanding of molecular orbitals so this is proving difficult
03:35:00 <int-e> tbh I have not really tried to understand this beyond the picture on the wikipedia page.
03:35:45 <int-e> (the thing to understand would be why the spins are restricted to those two configurations)
03:36:15 <kmc> cathy = kmc's wife
03:36:22 <kmc> who studied physical chemistry back in the day
03:41:47 <tswett[m]> It just occurred to me that a potentially convenient way to do a far jump is to just push a code segment and instruction pointer and then do a far return.
03:42:04 <tswett[m]> Only problem is that you can't do a call that way.
03:42:24 <tswett[m]> There's no "pop the code segment and instruction pointer, and push the old code segment and instruction pointer" instruction.
03:42:57 <tswett[m]> That would be kind of an interesting instruction, actually.
03:43:21 <pikhq> Chemistry is weirc.
03:43:34 <pikhq> Also I cannot spell anymore apparently.
03:58:15 -!- adu has quit (Read error: Connection reset by peer).
03:59:14 -!- adu has joined.
04:06:02 <int-e> tswett[m]: so push stuff first... which you can, assuming you know where you are (no position-independent code)
04:06:07 -!- Cale has quit (Ping timeout: 276 seconds).
04:06:13 <int-e> "stuff" being the return address.
04:08:18 <int-e> tswett[m]: you're on the brink of rediscovering return-oriented programming :)
04:10:09 <tswett[m]> Come to think of it, "pop the stack into the instruction pointer and push the old instruction pointer" sounds a lot like a form of call-with-current-continuation.
04:11:02 <tswett[m]> Also, it's pretty rude if the top of the stack is your caller.
04:11:14 <tswett[m]> Because now your caller will return back to you instead of to its caller.
04:12:54 <tswett[m]> Come to think of it, maybe *all* subroutine calls are a form of call-with-current-continuation; it's just that the "current continuation" is given in the form of the stack pointer, and the subroutine is expected to return to it.
04:24:57 -!- Cale has joined.
04:28:10 <shachaf> fun c++ fact: std::tuple is implemented with recursive inheritance rather than just a thing that contains elements as fields
04:28:34 <shachaf> this is apparently because if you inherit from an empty base class, it can be elided, unlike a struct field?
04:46:57 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64669&oldid=64668 * A * (+290) /* Concurrency problems and solutions */
04:47:14 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64670&oldid=64669 * A * (+26) /* Deadlocking */
04:55:07 -!- doesthiswork has quit (Ping timeout: 246 seconds).
04:55:15 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64671&oldid=64670 * A * (+422) /* Concurrency problems and solutions */ Some solutions
04:58:22 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64672&oldid=64671 * A * (+184) /* Race conditions */
04:59:07 <esowiki> [[Sidex]] M https://esolangs.org/w/index.php?diff=64673&oldid=64665 * A * (+30)
05:00:12 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64674&oldid=64672 * A * (-340) /* Sidex solutions (check if this is okay) */
05:03:31 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64675&oldid=64674 * A * (+178) /* Deadlocking */
05:34:51 -!- iconmaster_ has joined.
05:39:03 -!- iconmaster has quit (Ping timeout: 264 seconds).
05:39:52 -!- iconmaster__ has joined.
05:44:16 -!- iconmaster_ has quit (Ping timeout: 276 seconds).
05:44:55 -!- iconmaster__ has quit (Ping timeout: 276 seconds).
05:45:40 -!- iconmaster has joined.
06:09:21 -!- Sgeo has quit (Read error: Connection reset by peer).
06:09:47 -!- Sgeo has joined.
06:13:01 -!- iconmaster_ has joined.
06:17:27 -!- iconmaster has quit (Ping timeout: 264 seconds).
07:52:00 -!- AnotherTest has joined.
07:52:33 -!- Lord_of_Life has quit (Ping timeout: 268 seconds).
07:55:03 -!- Lord_of_Life has joined.
07:58:36 <esowiki> [[Seabass]] https://esolangs.org/w/index.php?diff=64676&oldid=64641 * Sec-iiiso * (+1) /* Truth-machine */
08:08:49 -!- cpressey has joined.
08:22:26 -!- GeekDude has quit (Ping timeout: 248 seconds).
08:31:24 -!- GeekDude has joined.
08:36:10 -!- Phantom_Hoover has joined.
08:43:49 -!- arseniiv has joined.
08:53:25 -!- iconmaster_ has quit (Ping timeout: 276 seconds).
08:56:41 -!- iconmaster has joined.
09:59:05 -!- wob_jonas has joined.
09:59:29 <wob_jonas> `bobadventureslist http://bobadventures.smackjeeves.com/comics/2829040/20190722/
09:59:31 <HackEso> bobadventureslist http://bobadventures.smackjeeves.com/comics/2829040/20190722/: b_jonas
10:08:07 -!- xylochoron[m] has quit (Ping timeout: 252 seconds).
10:08:29 -!- wmww has quit (Ping timeout: 250 seconds).
10:08:30 -!- tswett[m] has quit (Ping timeout: 250 seconds).
10:08:37 -!- ivzem[m] has quit (Ping timeout: 265 seconds).
10:41:09 <wob_jonas> I thought of a certain esoteric language idea. You know how in some real programming languages, there are very few reserved tokens, you can shadow any builtin or keyword with a name of your own as long as you don't mind not being able to use that keyword within the scope. The examples I know of are metafont and scheme.
10:42:09 <wob_jonas> This, of course, is not necessarily good design, because it can lead to somewhat inflexible syntax, as well as the language having to accept some mistakes silently.
10:42:52 <wob_jonas> And I was thinking of a modified variant of C that does this mildly so just the alphanumeric words can all be shadowed, while the punctuation can still remain reserved.
10:45:56 <wob_jonas> There's a few syntax changes you need, about restricting the sillier compound typenames like "int short unsigned" to a more canonical set, or replacing them with a single word for each type if you prefer that, plus a rule that you can no longer omit the name of a parameter in the heading a function definition.
10:45:59 <wob_jonas> Also excluding most pre-ANSI stuff like the implicit int and the no-prototype function definitions.
10:47:31 -!- wmww has joined.
10:48:06 <wob_jonas> Of course this is easier when you design your language syntax in first place to allow this, like in scheme or metafont, but that wouldn't make the language esoteric.
10:48:14 <wob_jonas> C's odd syntax makes this interesting.
10:55:09 <cpressey> I wonder, you might need to use a general parsing algorithm like CYK to parse declarations, if you do that.
10:55:48 <cpressey> int long; long int struct; long long int volatile;
10:56:35 <wob_jonas> cpressey: no, it's worse than that, it gets actually ambiguous. that's why Im' saying that I don't accept such typenames in this variant.
10:57:28 <cpressey> right, sorry; I guess I meant, CYK plus some disambiguating rule in case it gets multiple parses.
10:58:54 <wob_jonas> I only accept "char", "unsigned char", "signed char", "short int", "unsigned short int", "signed short int", "int", "unsigned int", "signed int", "long int", "unsigned long int", "signed long int", "long long int", "unsigned long long int", "signed long int", "float", "double", "long double" and nothing else; not "long" or "unsigned" etc
11:00:31 <wob_jonas> that way I can tell that "long int f(size_t);" declares a function "f" whose argument is of type "size_t", but "long int (size_t);" declares a variable of type long int whose name is "size_t" etc.
11:01:31 <wob_jonas> There's some ambiguities remaining, but they're benign: as a type name "int (*)(void *const)" is a function type whose argument is either a const pointer or a non-const pointer named "const", but when just naming a type (as opposed to defining a function) that doesn't matter
11:02:14 <wob_jonas> if we allowed "long" as a type name, then "long int (size_t);" could be parsed as declaring a function named "int", ambiguous with declaring a variable named "size_t", which is why I forbid that
11:02:53 <wob_jonas> I also have to say that the storage class keywords ("auto", "static", "extern", "inline") have to be written before the type
11:05:09 <wob_jonas> but most people already write the storage class keywords before the type, and most people always name the dummy arguments in a function definition, so the most visible change is the one about "unsigned" and "long", but even there there are styles that give one-word typedefs to each builtin type
11:05:33 <wob_jonas> so I think the resulting language wouldn't look too alien to people who know C
11:06:29 <wob_jonas> there might be other ambiguities that I haven't considered, in particular I'll have to look up how and where struct definitions are allowed in C, because C is weird that way
11:08:19 -!- xylochoron[m] has joined.
11:08:19 -!- tswett[m] has joined.
11:08:26 -!- ivzem[m] has joined.
11:30:53 -!- ivzem[m] has quit (*.net *.split).
11:37:05 -!- ivzem[m] has joined.
11:43:36 <cpressey> Wow, apparently in normal C you can say "volatile volatile int n;" -- I just tested this.
11:43:41 <cpressey> I wonder if it makes it more volatile
11:50:08 <shachaf> Maybe because of typedefs?
11:51:42 <wob_jonas> and yes, I'd have to also add the restriction that you put "complex", "imaginary", "atomic" before the rest of the type name
11:55:55 <wob_jonas> I wonder if it's valid to define a new struct type with a redundant c-v specifier like "struct foo { int x; char y[8]; } const;"
12:14:58 <shachaf> #define Struct(name) typedef struct name name; struct name
12:15:29 <wob_jonas> yeah, "restrict" and "typedef" are storage class keywords too, I didn't list them all
12:17:13 <wob_jonas> and "inline" isn't one of them, it's an extra keyword
12:23:16 <fizzie> cpressey: You can't "test" whether you can do something in C, you can only test whether you can do it on an implementation.
12:25:01 <fizzie> Or I guess maybe you meant something like "it is allowed; and additionally, I tested it on an implementation", which is reasonable.
12:25:19 <fizzie> (It *is* allowed: C11 6.7.3p5 "If the same qualifier appears more than once in the same /specifier-qualifier-list/, either directly or via one or more `typedef`s, the behavior is the same as if it appeared only once.")
12:26:23 <wob_jonas> right. for const and volatile it even makes sense
12:27:08 <wob_jonas> some old implementations parse "long long int" as the same as "long int", which results in strange silent failures
12:28:05 <fizzie> And long long long is famously too long for GCC.
12:28:43 <shachaf> I tested it by reading the specification.
12:29:15 <wob_jonas> you can also try to test by asking on irc, but that doesn't always work
12:30:00 <fizzie> `` gcc -fdiagnostics-color=never -x c <(echo 'long long long i = 0;')
12:30:01 <HackEso> /dev/fd/63:1:11: error: ‘long long long’ is too long for GCC
12:31:27 <wob_jonas> maybe you care about bash 1 compatibility
12:31:59 <fizzie> I just can't really remember bash, that's all.
12:33:17 <wob_jonas> so you, like, can't remembering what all the expansion syntax like ${foo#bar}, ${foo##bar}, ${foo%bar}, ${foo-bar}, ${foo:-bar}, ${foo:=bar}, ${foo+bar}, ${foo/bar/qux} do?
12:33:26 <fizzie> To be honest, usually I do the above sort of thing as [echo or printf] | gcc -x c - which involves remembering even less.
12:33:44 <wob_jonas> and ${foo:2:1} but that doesn't have bar
12:34:23 <shachaf> i,i if you're so qualified at writing c, how come it isn't on your cv
12:34:23 <fizzie> I think I have finally managed to remember #, ##, %, %% using the mnemonic of # being something that's in front of things.
12:34:51 <wob_jonas> I remember that from the mnemonic that # is before $ and % is after $
12:35:17 <fizzie> And the #/## (resp. %/%%) distinction from ## being longer than #.
12:35:21 <wob_jonas> I still don't know vim regex syntaxes
12:35:36 <shachaf> vim has an option to use regular regex syntax
12:35:54 <shachaf> But also it has intersection! Almost makes me want to switch back to vim.
12:37:01 -!- doesthiswork has joined.
12:37:35 <wob_jonas> how often do you use intersection when just a lookahead wouldn't work?
12:37:45 <wob_jonas> I don't recall ever having wanted such a regex
12:37:58 <wob_jonas> maybe it's useful if you want to match fibonacci numbers that are also catalan numbers or some such thing
12:39:46 <wob_jonas> no, that won't work, the regex doesn't actually match catalan numbers, it generates catalan numbers through a side channel
12:40:10 <wob_jonas> `perl -le$==0,(1x$_)=~/^(|()1(?1)(?1)\2)$(?{$=++})^/,print$=for 0..13
12:40:18 <shachaf> Lookahead is complicated and confusing and intersection+complement usually express the thing I want.
12:40:22 <HackEso> 1 \ 1 \ 2 \ 5 \ 14 \ 42 \ 132 \ 429 \ 1430 \ 4862 \ 16796 \ 58786 \ 208012 \ 742900
12:41:10 <shachaf> I don't know what the thing you wrote is, but it doesn't look regular.
12:42:16 <shachaf> The pattern I want most often is e.g. (P&~Q)
12:43:34 <wob_jonas> shachaf: sure, and most practical cases of that you can write with a negative lookahead too, or in some even simpler way
12:43:56 <wob_jonas> at least that's what I found for the regexes I wrote, but maybe I'm just using the one hammer I got for every problem
12:44:14 <wob_jonas> interestingly TRE doesn't support intersections, I don't know why
12:46:25 <myname> that does remind me of the pcre that only matches non-prime unary numbers
12:47:53 <wob_jonas> myname: yes, https://www.perlmonks.com/?node_id=52469 . it's linked from https://www.perlmonks.com/?node_id=796712 which is the side-channel fibonacci thing.
12:49:48 -!- iconmaster_ has joined.
12:53:55 -!- iconmaster has quit (Ping timeout: 276 seconds).
12:56:06 <cpressey> fizzie: I apologize for using the word "tested" in such a lax way.
12:59:16 <cpressey> What I actually did was, I took the C spec and converted it into a set of assertions in first-order logic
12:59:32 <cpressey> Then I converted those assertions into an Agda program
12:59:52 <cpressey> or whatever it is that Agda calls its source files
13:00:20 <cpressey> Turns out that all behaviour in C is undefined.
13:01:29 <wob_jonas> cpressey: did you also find the contradiction in peano arithmetic and thus rule not only the world but all possible worlds?
13:04:29 -!- Melvar has quit (Quit: WeeChat 2.4).
13:04:51 -!- Melvar has joined.
13:05:23 <cpressey> wob_jonas: Yes! That was quite astonishing.
13:12:10 <cpressey> In other news, I'm not too sure about Skolem's paradox. I think my way of dealing with it is to ignore all of model theory.
13:12:34 <cpressey> As soon as you start using non-standard models, you get too many weird results. I'm just, like, let's not even go there.
13:15:06 <wob_jonas> cpressey: yeah, but thinking of logical compactness or nonstandard models can give a different way to think about proofs, and so sometimes reveals interesting connections, even though it rarely lets you prove anything new that you couldn't without that tool. just like when you're thinking of proofs through category theory.
13:16:47 <wob_jonas> for example, logical compactness lets you see that if there's a ramsey-like property that any infinite structure satisfies, then there's also a bound such that any structure larger than that satisfies it. this doesn't let you prove new ramsey-like theorems, because all the proofs where you prove that an infinite structure doesn't work already natur
13:16:48 <wob_jonas> ally give you upper bounds, but it reveals why the proofs are like that.
13:27:57 -!- kspalaiologos has joined.
13:28:50 -!- kspalaiologos has quit (Remote host closed the connection).
14:59:32 -!- wob_jonas has quit (Remote host closed the connection).
15:04:58 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64677&oldid=64675 * Areallycoolusername * (+283)
15:05:45 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64678&oldid=64677 * Areallycoolusername * (+0) /* Race conditions */
15:24:43 -!- cpressey has quit (Quit: WeeChat 1.4).
15:24:44 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64679&oldid=64678 * Areallycoolusername * (+234) /* Sidex solutions (check if this is okay) */
15:33:07 -!- atslash has quit (Quit: Leaving).
15:45:38 -!- Sgeo_ has joined.
15:47:46 -!- Sgeo has quit (Ping timeout: 248 seconds).
16:03:49 -!- atslash has joined.
16:06:55 -!- Sgeo__ has joined.
16:09:38 -!- Sgeo_ has quit (Ping timeout: 245 seconds).
16:24:50 -!- Sgeo_ has joined.
16:28:05 -!- Sgeo__ has quit (Ping timeout: 268 seconds).
16:42:21 -!- iconmaster__ has joined.
16:46:37 -!- iconmaster_ has quit (Ping timeout: 276 seconds).
17:02:11 -!- DHeadshot has joined.
17:38:49 -!- Sgeo__ has joined.
17:42:26 -!- Sgeo_ has quit (Ping timeout: 272 seconds).
17:42:32 -!- DHeadshot has quit (Ping timeout: 245 seconds).
17:43:12 -!- xkapastel has joined.
17:45:55 -!- iconmaster_ has joined.
17:50:19 -!- iconmaster__ has quit (Ping timeout: 276 seconds).
17:51:09 -!- b_jonas has joined.
17:51:19 -!- DHeadshot has joined.
18:01:56 -!- FreeFull has joined.
18:12:46 -!- DHeadshot has quit (Ping timeout: 246 seconds).
18:15:11 -!- DHeadshot has joined.
19:48:52 <b_jonas> ~eval len('the bot with this invocation character doesn't hang in this channle these days, right?')
19:52:21 -!- Lord_of_Life_ has joined.
19:55:05 -!- Lord_of_Life has quit (Ping timeout: 244 seconds).
19:55:05 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
19:56:28 <b_jonas> it will soon be time for the next OotS strip. please prepare to upload it in a few days.
20:03:24 <HackEso> o is a popular comedy fantasy webcomic. It's about a group called the Order of the Stick, as they go about their adventures with minimal competence, and eventually stumble into a plan by an undead sorcerer to conquer the world, and they're out to stop him and conquer their personal problems at the same time. Hopefully not in that order.
20:03:50 <b_jonas> hmm, I think I left a double space in that from when I edited it down
20:05:07 <b_jonas> ``` perl -i -pe 'warn s/ //g, " - $_";' wisdom/o
20:05:09 <HackEso> 1 - o is a popular comedy fantasy webcomic. It's about a group called the Order of the Stick, as they go about their adventures with minimal competence, and eventuallystumble into a plan by an undead sorcerer to conquer the world, and they're out to stop him and conquer their personal problems at the same time. Hopefully not in that order.
20:10:47 <b_jonas> ``` perl -i -pe 'warn s/llystumble/lly stumble/g, " - $_";' wisdom/o
20:10:49 <HackEso> 1 - o is a popular comedy fantasy webcomic. It's about a group called the Order of the Stick, as they go about their adventures with minimal competence, and eventually stumble into a plan by an undead sorcerer to conquer the world, and they're out to stop him and conquer their personal problems at the same time. Hopefully not in that order.
20:10:55 <b_jonas> ok, now that's a better number of spaces
20:29:34 -!- iconmaster_ has quit (Ping timeout: 276 seconds).
20:30:10 -!- iconmaster_ has joined.
20:33:23 <esowiki> [[Esolang talk:Categorization]] https://esolangs.org/w/index.php?diff=64680&oldid=64659 * Sideshowbob * (+0) /* New category? */
20:46:35 -!- arseniiv_ has joined.
20:47:11 -!- arseniiv has quit (Read error: Connection reset by peer).
20:53:09 -!- DHeadshot has quit (Read error: Connection reset by peer).
20:53:24 -!- DHeadshot has joined.
21:13:22 -!- DHeadshot_ has joined.
21:14:08 -!- DHeadshot has quit (Ping timeout: 258 seconds).
21:29:18 -!- Sgeo_ has joined.
21:32:16 -!- Sgeo__ has quit (Ping timeout: 246 seconds).
21:37:17 -!- AnotherTest has quit (Ping timeout: 252 seconds).
21:58:57 -!- iconmaster__ has joined.
22:03:01 -!- iconmaster_ has quit (Ping timeout: 250 seconds).
22:19:37 -!- DHeadshot_ has left.
22:43:18 -!- kolontaev has joined.
22:52:21 -!- iconmaster_ has joined.
22:55:51 -!- iconmaster__ has quit (Ping timeout: 264 seconds).
22:56:51 -!- iconmaster__ has joined.
22:57:07 -!- iconmaster_ has quit (Ping timeout: 276 seconds).
22:59:36 -!- Phantom_Hoover has quit (Quit: Leaving).
23:01:43 -!- arseniiv_ has quit (Ping timeout: 245 seconds).
23:33:31 -!- iconmaster__ has quit (Ping timeout: 276 seconds).
23:54:52 -!- b_jonas has quit (Quit: leaving).
00:54:59 -!- iconmaster__ has joined.
01:02:22 -!- FreeFull has quit.
01:14:46 -!- budonyc has joined.
02:04:03 -!- atslash has quit (Ping timeout: 268 seconds).
02:04:41 -!- atslash has joined.
02:30:58 -!- atslash has quit (Ping timeout: 248 seconds).
02:31:06 -!- atslash has joined.
02:34:06 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64681&oldid=64679 * A * (+179) /* Race conditions */
02:34:58 -!- iconmaster_ has joined.
02:35:46 -!- xkapastel has quit (Quit: Connection closed for inactivity).
02:39:25 -!- iconmaster__ has quit (Ping timeout: 276 seconds).
02:40:15 <esowiki> [[User:DoggyDogWhirl]] M https://esolangs.org/w/index.php?diff=64682&oldid=64505 * DoggyDogWhirl * (+2620) Elevators.
03:00:29 -!- iconmaster__ has joined.
03:02:08 <Sgeo_> "If you decide that your users have had enough browsing for one day, you can even cause their browser to quit. An example script shows how to link actions to some of the events included in the object model. Be careful before you try this out, because your browser will quit."
03:02:36 <Sgeo_> https://ia802904.us.archive.org/view_archive.php?archive=/7/items/ACTIVEX_FOR_DUMMIES/ACTIVE_X.iso&file=CHAP13%2FINDEX.HTM
03:04:46 -!- iconmaster_ has quit (Ping timeout: 276 seconds).
03:18:37 <shachaf> ski: Have you seen https://home.sandiego.edu/~shulman/papers/lcm-bloomington-talk.pdf ?
03:18:54 <shachaf> Also other people here who like linear or constructive logic, or who like good things.
03:22:20 -!- iconmaster_ has joined.
03:25:06 -!- budonyc has quit (Quit: Leaving).
03:25:34 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64683&oldid=64681 * A * (+5) /* Race conditions */
03:26:52 -!- iconmaster__ has quit (Ping timeout: 276 seconds).
03:27:13 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64684&oldid=64683 * A * (+213) /* Sidex solutions (check if this is okay) */
03:29:49 -!- Sgeo__ has joined.
03:31:12 <esowiki> [[Sidex]] https://esolangs.org/w/index.php?diff=64685&oldid=64673 * A * (+874) /* Sidex walkthrough */
03:32:46 -!- Sgeo_ has quit (Ping timeout: 246 seconds).
03:34:39 -!- iconmaster__ has joined.
03:39:03 -!- iconmaster_ has quit (Ping timeout: 264 seconds).
03:53:09 -!- heroux has quit (Read error: Connection reset by peer).
03:53:20 -!- heroux has joined.
04:00:45 -!- iconmaster_ has joined.
04:02:48 -!- Sgeo_ has joined.
04:04:34 -!- iconmaster__ has quit (Ping timeout: 276 seconds).
04:05:31 <\oren\> Idea, end all statements with ~.\n
04:05:54 -!- Sgeo__ has quit (Ping timeout: 248 seconds).
04:07:06 <\oren\> oh, wait ssh is configurable with that thing
04:10:51 -!- iconmaster has joined.
04:13:01 -!- iconmaster_ has quit (Ping timeout: 276 seconds).
04:43:27 -!- nfd has joined.
04:47:28 -!- nfd9001 has quit (Ping timeout: 276 seconds).
05:19:58 -!- Frater_EST has joined.
05:21:51 -!- Frater_EST has left.
05:25:53 -!- nfd has quit (Read error: Connection reset by peer).
05:30:36 -!- iconmaster_ has joined.
05:31:01 -!- iconmaster has quit (Ping timeout: 276 seconds).
05:40:00 -!- doesthiswork has quit (Ping timeout: 272 seconds).
05:49:30 -!- iconmaster_ has quit (Ping timeout: 272 seconds).
06:16:00 <esowiki> [[RarVM]] M https://esolangs.org/w/index.php?diff=64686&oldid=63582 * Void * (+55) /* Jumping processes */
07:02:56 -!- kolontaev has quit (Quit: leaving).
07:14:53 -!- mniip has joined.
07:26:34 -!- AnotherTest has joined.
07:33:55 -!- sebbu has quit (Read error: Connection reset by peer).
07:34:19 -!- sebbu has joined.
07:54:42 -!- Lord_of_Life has quit (Ping timeout: 248 seconds).
07:57:49 -!- Lord_of_Life has joined.
08:49:05 -!- sprocklem has quit (Read error: Connection reset by peer).
08:49:12 -!- sprock1em has joined.
08:50:54 -!- cpressey has joined.
08:52:03 <Taneb> What time zone are you in currently?
08:53:49 <cpressey> BST, but isn't there some IRC command you can run to find that out?
08:54:37 <Taneb> You can do it with CTCP but that always feels rude to me
08:54:50 <cpressey> I suppose it's equally easy to just ask, if you prefer the human touch.
08:55:20 <Taneb> BST is a good time zone to be in, I feel
08:58:51 -!- arseniiv_ has joined.
09:03:22 <cpressey> Yesterday, I learned that there are some theories that have only one model (up to isomorphism), they're called "categorical" theories, and this pleases me greatly, because non-standard models kind of freak me out and I'd rather not think about them.
09:04:02 <cpressey> Granted, a lot of them sound kind of trviial
09:06:49 <cpressey> (the categorical theories that is, not the non-standard models. quite the opposite actually.)
09:09:49 <shachaf> cpressey: You can ask where someone's IRC client is, but not where they are.
09:15:12 <cpressey> shachaf: In a similar vein, you can ask me where I claim I am, but not where I actually am.
09:15:47 <Taneb> I claim to be in Cambridge
09:16:36 <shachaf> cpressey: Yes, but I'd much rather know where you claim you are than where your IRC client claims it is.
09:16:46 <shachaf> I mean, I don't actually particularly want to know either one.
09:17:49 <shachaf> I might go to Cambridge in a few months.
09:19:50 <Taneb> I might leave for unrelated reasons
09:24:42 <cpressey> The thought of visiting Cambridge crossed my mind briefly, recently, but mainly because I saw a train destined for there. I have no good reason to visit there myself.
09:26:21 <cpressey> If I visit anywhere, it's more likely to be, I dunno, Cheddar.
09:27:21 <cpressey> For the cave art. Also, I understand there's a cheese from that region?
09:41:38 <cpressey> Stupid question -- how to tell if one theory A is more expressive than some other theory B? I mean, the trivial answer is, find something you can express in A that you can't express in B, but -- do logicians have a nomenclature for this, a study of this?
09:43:07 <cpressey> Computability and complexity has its classes like RE, R, PR, NEXP, NP, P, NL, etc, and we know some of the relations between them and there are some diagrams, etc.
09:43:18 <cpressey> Do logicians have anything comparable?
09:44:32 <cpressey> Again, I understand you can map a lot of logics to these classes too, and that would count, but is there anywhere they've written a lot of them down?
09:44:44 <cpressey> "Complexity zoo" except for logical theories?
09:52:27 <cpressey> So-called Reverse Mathematics has a collection of theories and understand some of the relationships between them, but they're most interested in really weak theories
10:17:03 <cpressey> I think perhaps there are simply too damned many of them (logical theories, that is) for this to be realistically done.
11:23:16 <cpressey> https://en.wikipedia.org/wiki/Descriptive_complexity_theory <-- closest I've found so far.
11:26:27 <cpressey> wooo! https://people.cs.umass.edu/~immerman/
11:26:51 <cpressey> or rather, https://people.cs.umass.edu/~immerman/descriptive_complexity.html
11:27:44 <cpressey> *Now* my question becomes, where does http://mathworld.wolfram.com/EquationalLogic.html fit into that chart?
12:11:22 -!- wob_jonas has joined.
12:14:17 <wob_jonas> cpressey: I think the answer is yes but I don't understand the details. "Proof-theoretic ordinal" may be a relevant keyword.
12:15:25 <wob_jonas> cpressey: I looked a bit at this julia language. It seems like it might be useful as a "calculator language", for when I want to do computations that start as simple as (2*8) but sometimes grow to five line long one-liners doing array operations. I've sometimes used J or octave for that. But
12:16:28 <wob_jonas> I have one big problem. WHY DOES IT USE ONE-BASED ARRAY INDEXING? Seriously? Haven't people seen the existing languages that do that (matlab or octave, lua, GAP, mathematica) and see how they turned out and how fucking annoying it is that you have to add 1 to your indexes or subtract 1 from them after searching whenever you do anything nontrivial?
12:17:31 <wob_jonas> I really don't understand why anyone would do that when designing a new language that doesn't have to be too compatible with anything existing, and especially not why someone would do that if the language is supposed to be useful for numeric or array computations.
12:18:47 <wob_jonas> So yes, this sort of language with a handy built-in library for numeric computations sounds helpful for doing calculations, but the one-based array indexing seriously scares me away.
12:22:04 <wob_jonas> As for whether it's better for this than octave, I'll have to dig a bit deeper.
12:22:27 <cpressey> wob_jonas: if you hate 1-based indexing you can check out https://github.com/simonster/TwoBasedIndexing.jl
12:24:11 <cpressey> I think the joke there is that Julia's macro support is quite good.
12:24:24 <wob_jonas> yeah. esoteric people sometimes do that. I think some old versions of perl had that built in too.
12:25:12 <wob_jonas> But the problem is that it's not enough to override the index and index-assign operations, because there are a lot of other library functions that manipulate indexes, like for finding and slicing and filtering and stuff.
12:25:16 <cpressey> Perl lets you select the index base by assigning to a magic variable iirc
12:25:49 <wob_jonas> I think modern versions have an improved version of that, where you can change it lexically, but only to 0 and 1
12:26:11 <wob_jonas> but that kind of thing doesn't make sense to change either dynamically (as in old perl or some APLs) or lexically,
12:26:16 -!- arseniiv_ has changed nick to arseniiv.
12:26:26 <wob_jonas> mostly because you often store array indexes in other arrays, or pass them to functions, etc.
12:26:36 <cpressey> Apparently Mathematica uses 1-based. And so does R. Julia is in the same general area ("big data" "stats" "numerical computing"). So, probably that.
12:26:54 <wob_jonas> cpressey: yes, I mentioned mathematica in the list above.
12:28:04 <wob_jonas> I didn't know that R does, I have so far avoided that language.
12:28:11 <cpressey> Well, some people hate qwerty keyboards too, because qwerty is awful and WRONG and etc and everyone around me including myself is using a qwerty keyboard oh well
12:29:47 <wob_jonas> so? you can mix keyboard layouts is easy, because, unless perhaps you're playing video games, the things you type on the keyboard get translated to characters very early, you don't store keycodes anywhere. mixing array indexes is harder, because I do want to store indexes and pass them to all sorts of utility functions and do arithmetic on them.
12:30:16 <wob_jonas> I don't care what keyboard layout other people use.
12:30:24 <arseniiv> 1-based indexing has the only one plus side that you can index from the end by negative integers (the Python indexing scheme is in some cases irregular), though I thing backward indexing should not abuse signs at all and use something else (as e. g. in last versions of C#)
12:30:41 <wob_jonas> When I speak on irc, you can't really tell what keyboard layout I used to type it, and you can read it just as easily regardless how I type it.
12:30:43 <cpressey> OK, well. I don't care about that. I think the interesting things in Julia are its macro system and its type system. And these are interesting to examine, not necessarily useful to use, for any given application.
12:31:31 <cpressey> That's why I suggested to check it out. If you find it useful, too, great. If not, ok, well, sorry.
12:31:38 <wob_jonas> cpressey: I don't know yet if I find it useful.
12:31:53 <wob_jonas> I might, in the sense that it may still be more practical to use than octave.
12:32:03 <wob_jonas> I'll definitely look at it a bit more.
12:34:11 <wob_jonas> Lua gives some useful lessons, like it's a good example of how you can design a good C api that can work with a moving garbage collector, which is pretty rare as these things go.
12:34:32 <wob_jonas> But there's a lot of other things in lua that I don't like, besides the 1-based indexes.
12:36:00 <arseniiv> wob_jonas: statements not being expressions?
12:36:02 <cpressey> arseniiv: the negative indexing and slicing in Python reminds me of Perl.
12:36:08 <cpressey> x[:-1] is virtually an emoticon
12:36:40 <wob_jonas> arseniiv: no, that's not really my problem
12:37:15 <wob_jonas> but I don't really want to talk about lua here unless there's a good reason
12:37:25 <wob_jonas> I just brought it up as another example for 1-based stuff
12:37:33 <arseniiv> cpressey: ah, for ASCII-artness? For my part, I definitely find the ubiquitous x[::] copying or x[::-1] reversal ASCII-arty
12:37:51 <arseniiv> oh, x[:], x[::] is redundant of course
12:38:16 <cpressey> well, ASCII-artness, and general tendency towards golfing
12:39:56 <HackEso> bash: line 0: type: julia: not found
12:41:53 <arseniiv> wob_jonas: okay, I don’t mind at all. I had learned Lua to some depth once (and now I almost forgot it) and it felt a nice example of a minimal language. For some reason I was surprised by size of its grammar. Though it seems I had known about S-expression grammar to that time, and it should be way smaller. I hadn’t used Lua even for smallest projects though
12:43:20 <arseniiv> that time, I found quirks of length operator, or what it were, pretty strange. I skimmed some details about newest versions not that long ago and didn’t find that piece there for some reason
12:43:45 <wob_jonas> and yes, octave and R are probably better examples, because they are geared to the same kind of numerical computation for which julia was made for
12:43:56 <wob_jonas> arseniiv: which generation of the length operator? that changed like twice throughout lua
12:44:21 <arseniiv> wob_jonas: I don’t remember, alas
12:54:15 <lambdabot> EGLL 251220Z AUTO 13008KT 100V170 9999 NCD 36/17 Q1010
12:54:31 <fizzie> It is: too hot. They're saying there's a 70% chance of exceeding the hottest temperature ever recorded in the UK (38.5°C) today.
12:54:54 <wob_jonas> Also, apparently julia uses a variant of python scoping for local variables, except that some control structures (for and while) make inner scopes like def in python
12:58:09 <wob_jonas> in that in python, an assignment without a qualifier means that a new variable is created for that scope
12:58:30 <wob_jonas> that seems like probably a better rule than julia's in the long term, even if possibly less convenient in shorter pieces of code
12:58:48 <wob_jonas> so yeah, they're not similar at all
13:48:08 <cpressey> I'm not much of a fan of Python's "now 'til the end of the definition" scoping. I prefer it when variables in inner blocks disppear when you return to the outer block. I don't remember what Julia does for that.
13:50:24 <cpressey> Meanwhile, Javascript: you can define variables at the *end* of the block if you like!
14:14:59 <cpressey> btw wob_jonas thanks for "Proof-theoretic ordinal", it certainly seems to fit into the picture I'm looking at
14:17:40 <wob_jonas> cpressey: MathOverflow seems to have a lot of people who care about that sort of crazy formal logic stuff, at least when filtered through my perception
14:23:44 <cpressey> I occasionally read MO (I'm a sucker for SE's "hot network questions" when I have to look up something) and, yeah, they're like that there aren't they. I've been increasingly interested in logic lately, but set theory not so much.
14:25:56 <wob_jonas> cpressey: also I keep reading David Madore's blog, in fact it's very high up there among websites I've been following for the longest time, and he sometimes talks about that sort of thing
14:29:36 -!- user24 has joined.
15:25:29 -!- Sgeo__ has joined.
15:28:34 -!- Sgeo_ has quit (Ping timeout: 248 seconds).
15:44:09 -!- wob_jonas has quit (Remote host closed the connection).
16:18:20 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64687&oldid=64684 * Areallycoolusername * (+1300)
16:24:28 <esowiki> [[Realm]] https://esolangs.org/w/index.php?diff=64688&oldid=64433 * Hakerh400 * (+0) Fixed some mistakes
16:38:32 -!- Phantom_Hoover has joined.
16:40:22 -!- doesthiswork has joined.
16:44:30 -!- cpressey has quit (Quit: A la prochaine.).
16:58:55 -!- Melvar has quit (Quit: WeeChat 2.4).
17:00:10 <esowiki> [[User:Sideshowbob]] https://esolangs.org/w/index.php?diff=64689&oldid=64619 * Sideshowbob * (+263)
17:00:21 -!- user24 has quit (Remote host closed the connection).
17:00:47 -!- user24 has joined.
18:04:46 -!- FreeFull has joined.
18:06:11 -!- Reallycooluserna has joined.
18:08:33 <Reallycooluserna> Can anyone give me tips as to how to make a good C++ Compiler?
18:13:01 -!- Reallycooluserna has quit (Remote host closed the connection).
18:13:16 -!- b_jonas has joined.
18:19:17 -!- Reallycooluserna has joined.
18:19:40 -!- Reallycooluserna has quit (Remote host closed the connection).
19:09:06 <esowiki> [[Talk:Sidex]] N https://esolangs.org/w/index.php?oldid=64690 * Plokmijnuhby * (+533) Asked for some clarification
19:13:56 -!- arseniiv has quit (Quit: gone completely :o).
19:22:59 -!- user24 has quit (Quit: Leaving).
19:50:45 <doesthiswork> Reallycooluserna: The more code you reject as causing undefined behavior the better your compiler is
19:51:19 <b_jonas> doesthiswork: so the best compiler is one that considers any code to cause undefined behaviour?
19:54:19 -!- Lord_of_Life_ has joined.
19:56:35 -!- Lord_of_Life has quit (Ping timeout: 244 seconds).
19:57:06 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
20:09:54 -!- lldd_ has joined.
20:26:53 -!- xkapastel has joined.
20:42:45 <esowiki> [[Talk:Sidex]] M https://esolangs.org/w/index.php?diff=64691&oldid=64690 * Plokmijnuhby * (+95) /* Language explanation */ Added my signature.
20:47:55 <esowiki> [[Special:Log/newusers]] create * Argv0 * New user account
20:56:31 <esowiki> [[Talk:Swissen Machine]] https://esolangs.org/w/index.php?diff=64692&oldid=64469 * Plokmijnuhby * (+649)
20:58:04 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=64693&oldid=64591 * Argv0 * (+150) /* Introductions */
20:59:51 -!- Melvar has joined.
21:06:01 -!- lldd_ has quit (Quit: Leaving).
21:31:38 <esowiki> [[Realm]] https://esolangs.org/w/index.php?diff=64694&oldid=64688 * Plokmijnuhby * (+91) /* Examples */ Truth test
21:32:20 <esowiki> [[Realm]] M https://esolangs.org/w/index.php?diff=64695&oldid=64694 * Plokmijnuhby * (+3) /* Truth-test */ Wrong link
21:35:27 -!- AnotherTest has quit (Ping timeout: 245 seconds).
22:54:05 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64696&oldid=64687 * A * (+595) /* Race conditions */
22:56:21 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64697&oldid=64696 * A * (+179) /* Race conditions */
22:59:58 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64698&oldid=64697 * A * (+95) /* Race conditions */
23:04:05 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64699&oldid=64698 * A * (+4) /* Race conditions */ Tell ARCUN I have created a separate page
23:09:06 <esowiki> [[Nop]] M https://esolangs.org/w/index.php?diff=64700&oldid=64653 * A * (+95) I think the SM is a nop machine (prove me wrong if you could)
23:09:29 <esowiki> [[Nop]] https://esolangs.org/w/index.php?diff=64701&oldid=64700 * A * (+0) Oops
23:15:39 <esowiki> [[Talk:Sidex]] M https://esolangs.org/w/index.php?diff=64702&oldid=64691 * A * (+499)
23:17:36 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64703&oldid=64699 * A * (+14) /* Deadlocking */
23:18:56 <esowiki> [[Sidex]] M https://esolangs.org/w/index.php?diff=64704&oldid=64685 * A * (-391) /* stopThisThread.Sidex */
23:19:59 <esowiki> [[Talk:Sidex]] M https://esolangs.org/w/index.php?diff=64705&oldid=64702 * A * (+174)
23:21:52 <esowiki> [[Sidex]] M https://esolangs.org/w/index.php?diff=64706&oldid=64704 * A * (+179) /* More concurrency */
23:23:20 -!- Phantom_Hoover has quit (Quit: Leaving).
23:23:27 <esowiki> [[Sidex]] M https://esolangs.org/w/index.php?diff=64707&oldid=64706 * A * (+29) /* if.Sidex */
23:23:53 <esowiki> [[Sidex]] M https://esolangs.org/w/index.php?diff=64708&oldid=64707 * A * (-12) /* if.Sidex */
23:33:16 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64709&oldid=64703 * A * (+77) /* Deadlocking */
23:35:00 -!- b_jonas has quit (Quit: leaving).
00:40:54 -!- zzo38 has joined.
00:54:29 -!- atslash has quit (Quit: Leaving).
00:54:47 -!- atslash has joined.
01:02:06 <esowiki> [[Realm]] M https://esolangs.org/w/index.php?diff=64710&oldid=64695 * Hakerh400 * (-14) Thanks User:Plokmijnuhby for the nice example! We adapted it to make it work with the abovementioned I/O format, since, as said in the paragraph before, bits of each byte are reversed.
01:09:28 -!- adu_ has joined.
01:09:30 -!- FreeFull has quit.
01:11:45 -!- adu has quit (Ping timeout: 244 seconds).
01:11:45 -!- adu_ has changed nick to adu.
01:30:46 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64711&oldid=64709 * Areallycoolusername * (+399)
01:43:50 <zzo38> b_jonas: Yes, I suppose it can be difficult without the cards. (Although, when ais523 was designing the card game, I did not see any cards either. Did they update the document since then?)
02:06:02 -!- sprock1em has quit (Ping timeout: 258 seconds).
02:56:36 -!- xkapastel has quit (Quit: Connection closed for inactivity).
03:43:19 <zzo38> LLVM has a norecurse attribute. When compiling for Glulx, since there is no addressable frame memory in Glulx, it must be emulated. But, it may be avoided for norecurse functions. One thing to do is to perhaps use the first argument as the frame address, but a calling convention for functions without a frame address may be useful to avoid adding this extra argument.
03:43:32 <zzo38> Or, maybe there may be a better way.
04:01:10 <zzo38> (The emulated frame memory is also not needed if you never take the address of any local variable.)
04:05:52 -!- atslash has quit (Ping timeout: 244 seconds).
04:10:07 <zzo38> Not at this time, but I mention the idea, if it can be used to compile LLVM codes into a Glulx story file.
04:13:59 -!- Sgeo has joined.
04:16:33 -!- Sgeo__ has quit (Ping timeout: 268 seconds).
04:17:18 <zzo38> Non-packed structures should align the elements of the structure according to the type of the elements (and at most four bytes), but the address where the structure begins does not need to be aligned.
04:19:15 <zzo38> In Glulx, you cannot take the address of local variables, and all local variables are 32-bits (smaller local variables are actually possible, but they do not work very well, and the assembler does not support local variables smaller than 32-bits).
04:35:36 -!- adu has quit (Ping timeout: 272 seconds).
04:38:44 <zzo38> Some LLVM functions would be supported in Glulx, but some aren't. Some may be possible if emulated. @llvm.memcpy() and @llvm.memmove() both correspond to the mcopy instruction. @llvm.memset.p0i8.i32() has a single instruction supported but only if the value to write is zero.
04:42:06 <zzo38> The @llvm.debugtrap() function would correspond to the "debugtrap" Glulx opcode (although in Glulx it takes an argument and in LLVM it doesn't).
04:51:07 <zzo38> Glulx does support setjmp() and longjmp(), although there are a few limitations which are unlikely to matter in C, as long as the code generator is aware of these limitations.
04:57:19 -!- adu has joined.
04:58:10 -!- doesthiswork has quit (Ping timeout: 248 seconds).
06:35:05 -!- user24 has joined.
07:37:35 -!- user24 has quit (Quit: Leaving).
07:45:57 -!- atslash has joined.
07:56:18 -!- Lord_of_Life has quit (Ping timeout: 248 seconds).
07:57:56 -!- Lord_of_Life has joined.
08:23:36 -!- Frater_EST has joined.
08:23:55 -!- Frater_EST has left.
08:35:22 -!- cpressey has joined.
08:47:59 <cpressey> Design for a pathological language. Fix an enumeration of Turing machines T0, T1, ... Tω. Programs in this language are integers. For a program i, if there is a j s.t. Ack(j,j) = i, simulate Tj. Else do nothing.
08:49:21 <cpressey> It's Turing-complete, because you can simulate any Turing machine with it - just find a suitable i.
08:53:39 <cpressey> I'm also pretty sure it has inherently high complexity (what ais523 and I were talking about a few days ago.)
08:59:01 <cpressey> It's also horribly "non-compositional" in the sense that the structure of the Turing machine isn't going to bear any resemblance to i. But that's nothing special.
08:59:49 <cpressey> By which I mean, you'll see that in any construction that starts off with "Fix an enumeration of TMs", which happens in a lot of proofs
09:00:00 <shachaf> What is inherently high complexity?
09:01:27 <cpressey> You can simulate any Turing machine, but you can't simulate it efficiently.
09:03:31 <cpressey> It came up because of a stmt in an article from 2002 that tag machines can simulate TMs but that it was not known if that they could do so in poly time, that the best known simulation had an exponential slowdown.
09:11:41 <cpressey> The TC proof for https://esolangs.org/wiki/An_Odd_Rewriting_System has an exponential slowdown, but it's not known if it's inherent.
09:12:55 <cpressey> The pathological thing I wrote above has a slowdown which is more(?) than exponential, and appears inherent (if you could find which Tj to simulate efficiently, you could compute Ackermann function efficiently)
09:14:30 <cpressey> But it's just an ugly little pathological counterexample. I can't call it an esolang. I can't even bring myself to give it a name.
10:00:18 <cpressey> Currently considering implementing AORS in Haskell in order to understand it better.
10:02:52 <int-e> cpressey: sorry, but checking whether Ack(j,j) = i for some j *given i* does not strike me as expensive.
10:03:37 <cpressey> int-e: "for some j" -> "discover j for given i"
10:03:56 <int-e> yeah but you're using a fast-growing function.
10:04:24 <int-e> so we will stop very soon, and we can stop before ack(j,j) is fully computed (it's enough for an intermediate result to exceed i)
10:04:28 <Taneb> A fast-growing, strictly monotonic function
10:04:44 <int-e> (except maybe in some corner cases, I have not thought this through completely)
10:05:45 <int-e> Taneb: right, that's what I meant
10:07:14 <cpressey> I don't follow. Call Ack(1,1), Ack(2,2) "Ackermann numbers". I give you a number, you tell me if it's an Ackermann number or not. You're saying you can do this efficiently?
10:07:28 <cpressey> (I missed the ... after Ack(2,2) there, sorry)
10:07:32 <int-e> I'm pretty sure I can.
10:07:35 <Taneb> I can do it as efficiently as you can give me numbers, I feel
10:09:07 <cpressey> And if I give say "Give me the n'th Ackermann number", can you do that efficiently too?
10:10:05 <int-e> I know that I can't really grasp just how fast that function grows.
10:10:37 <Taneb> If I can fit i into my brain I can be confident j <= 6
10:11:08 <cpressey> Well, I agree that the number of bits in the programs in this language might be expoentially more than the number of bits needed to describe the TMs, but, not sure if that's relevant for what it's trying to show or not.
10:11:50 <cpressey> (I say exponential because I'm looking for something that is at least exponential)
10:16:24 -!- wob_jonas has joined.
10:17:55 <wob_jonas> cpressey: Julia seems like a typical new language, just like how you complained about what rust was like in the past: I ran julia from the debian oldstable and looked up the docs of the latest version online, and already found two obvious differences
10:18:44 <wob_jonas> In the old version, $ was the bitwise xor function; in the new version it's renamed to xor, also available under some non-ascii alias
10:19:19 <int-e> I see no reason why testing whether j exists should take more than quadratic time in the size of i, given that we have a fairly nice closed formula for ack(3,j): ack(3,j) = 2^(j+3)-3... so we don't have to evaluate the recursion down to the base cases (which would likely become exponential, simply because we have to compute, say, ack(4,4), exactly if given that as input).
10:19:42 <wob_jonas> The docs does reflect this of course
10:20:06 <cpressey> int-e: What if I give you a much smaller i and ask you for the smallest Ackermann number that ends in the digits of i?
10:20:25 <int-e> cpressey: that might be undecidable
10:21:15 <cpressey> True, that's not a good thing in a TC reduction.
10:22:05 <int-e> (Gut reaction. There should be some shortcuts when computing ack(i,j) modulo n. But I'm not sure how effective they really are.)
10:23:39 <wob_jonas> int-e: there definitely are. I have a post relevant to that on SE. but more importantly, every positive integer is an ackermann number of form A(0, n),
10:24:20 <int-e> wob_jonas: we've restricted the notion to Ack(n,n), I think.
10:24:25 <wob_jonas> and even if you forbid that and ask for ackermann numbers of form A(m, n) where M<=m for some fixed M, then every ackermann number like that is of form A(M, n).
10:24:32 <wob_jonas> you want only A(n, n)? that's harder
10:26:05 <esowiki> [[Talk:Swissen Machine]] M https://esolangs.org/w/index.php?diff=64712&oldid=64692 * A * (+756) /* Conclusion */
10:26:18 -!- arseniiv has joined.
10:26:28 <cpressey> wob_jonas: Yeah, Julia 1.0 only came out last year. There's a 1.1 already. I hope they keep 1.x stable.
10:27:36 <Taneb> shachaf: when I can
10:27:57 <cpressey> What if I give you an i and you give me the smallest Ackermann number that has at least i digits in its decimal expansion
10:28:10 <shachaf> Are you doing fancy SAT/QBF/exact cover/ILP/whatever solver things?
10:28:16 <cpressey> This is just like last time I tried to do this
10:28:22 <Taneb> I am doing nothing of the sort myself
10:28:45 <Taneb> Just trying to document some of the data structures
10:29:07 <shachaf> Are there any good data structures?
10:29:21 <int-e> cpressey: How something more computational, like checking whether T_i executes for at least 2^i steps before it halts?
10:29:40 <Taneb> shachaf: there's the type-threaded catenable list, which is pretty neat
10:29:50 <shachaf> Apparently many SAT solvers support producing certificates of unsatisfiability.
10:30:00 <shachaf> I wonder what kinds of problems that's feasible for.
10:30:06 <Taneb> ( https://github.com/ekmett/guanxi/blob/master/src/Aligned/Internal.hs#L207 )
10:30:56 <shachaf> How do catenable lists work?
10:31:07 <cpressey> int-e: That sounds almost too simple, but it might work.
10:31:14 <shachaf> Maybe if I unthread the types it'll be easier to see.
10:31:18 <int-e> shachaf: https://en.wikipedia.org/wiki/Boolean_Pythagorean_triples_problem
10:31:56 <wob_jonas> cpressey: anyway, yes, in that case you can tell easily if a number is an ackermann number, and with what argument, because (\n -> A(n, n)) is monotonic
10:31:57 <Taneb> shachaf: the purpose of them is to be a sequence type with O(1) cons, snoc, and append
10:32:04 <int-e> cpressey: I guess it's not really all that easy because simulating a TM might be faster than the original TM.
10:32:06 <Taneb> I'm not too sure how they work so far but they deem to
10:32:07 <shachaf> int-e: Yes, we talked about that the other day.
10:33:20 <shachaf> I should probably learn the details of CDCL better.
10:33:33 <shachaf> data Cat a = E | C a (Q (Cat a))
10:34:31 <shachaf> data Q a = Q -- hang on, what's this existential?
10:34:53 <Taneb> Q can be any reasonably efficient queue type
10:34:54 <shachaf> data Q f a b where Q :: !(Thrist f b c) -> !(Rev Thrist f a b) -> !(Thrist f b x) -> Q f a c
10:35:04 <esowiki> [[Talk:Swissen Machine]] M https://esolangs.org/w/index.php?diff=64713&oldid=64712 * A * (+23) /* Conclusion */
10:35:07 <Taneb> Oh yeah, that existential
10:35:26 <Taneb> There's one in the definition of Cat I linked to, too
10:35:59 <Taneb> data Cat f a b where E :: Cat f a a; C :: f b c -> (Q (Cat f) a b) -> Cat f a c
10:35:59 <shachaf> Oh, sure, Cat has an existential, but it's used twice.
10:36:04 <Taneb> wob_jonas: no, I'm only documenting them
10:36:14 <shachaf> This x is only used once. What's that about?
10:36:32 <Taneb> Oh, the one in Q, it's to do with how the queue is implemented. It's somewhere in PFDS
10:37:52 <shachaf> instance Cons Q where cons a (Q f r s) = Q (a :. f) r (undefined :. s)
10:37:59 <shachaf> I find myself slightly skeptical of ths type.
10:38:55 <shachaf> OK, there's some invariant, which isn't documented of course. I guess that's what Taneb is doing.
10:39:21 <shachaf> Man, how can Haskell people stand how inefficient their code is?
10:39:58 <int-e> shachaf: I don't care as long as it's fast enough
10:42:08 <shachaf> Taneb: OK, is this third Q field literally just a natural number?
10:42:56 <shachaf> I think that's what's going on. For the amortization, or something.
10:47:50 <shachaf> Golly. You should simplify this code before or after documenting it.
10:48:46 <cpressey> Sometimes I don't want fast, if fast means I have to write the program differently
10:49:50 <cpressey> Optimizations interfere with aesthetics, y'know
10:53:58 <wob_jonas> cpressey: one possible solution for that is to write the parts that you have to optimize in two versions, a straightforward version that works but you ifdef it out, and an optimized version.
10:56:11 <cpressey> wob_jonas: Yes, that works well if you have a suite of tests that you can run on both versions
10:56:42 <shachaf> Ugh, I wish any programming language was good.
10:57:15 <wob_jonas> cpressey: right, maybe you can make the part deterministic enough and repeatable enough that you can compare the output of the two of them
10:57:29 <wob_jonas> sometimes it's hard when it can have difficult side effects
10:58:26 <wob_jonas> my code are usually full of assertions to catch stupid errors I make
11:00:22 <int-e> shachaf: the !(Thrist f b x) just acts as a counter... x is a type somewhere in the middle of the first list.
11:02:47 <shachaf> Yes, that's the conclusion I came to above.
11:04:11 <shachaf> Except I think x is any type because the list is just full of undefineds?
11:04:14 <shachaf> I already closed the page.
11:04:17 <int-e> shachaf: I had not seen that yet. I was studying the code.
11:04:28 <int-e> shachaf: no, it starts out as nil = Id
11:05:13 <shachaf> Right, that's the empty list.
11:05:17 <int-e> shachaf: and then at each cons step the undefined is forced to match the function added to the first list
11:05:41 <int-e> shachaf: and then in 'exec' it actually uses a copy of the first list when it knows that the second list is empty
11:06:14 <int-e> (and I guess that copy is the reason for this awkward type... it might actually be more efficient than a unary counter of a different type this way)
11:06:47 <shachaf> I know of a secret technique for representing natural numbers that's more efficient than unary.
11:06:55 <shachaf> But I'm sworn not to reveal it.
11:07:30 <wob_jonas> more efficient than a unary counter... wow, that must be some fancy magical algorithm
11:07:53 <shachaf> I mean a unary counter where each successor is a new heap-allocated node, of course.
11:09:15 <int-e> yeah I'm not convinced that this is more efficient than keeping track of the counter in an Int.
11:10:37 <int-e> It's not clear though. You'd also have to keep track of the length of xs (the first list) at all times. And `rotate` would have to return two values.
11:13:03 -!- sprocklem has joined.
11:14:37 <cpressey> Design for a pathological language, take two. The bits of the program are simultaneously intepreted as a brainfuck program, and as a sentence in Presburger arithmetic. If the sentence is a theorem of PA then the output is the output of running the brainfuck program, otherwise the output is empty.
11:15:03 <cpressey> Presburger arithmetic is decidable, but it's 2-EXP-hard.
11:16:24 <wob_jonas> cpressey: that's probably not too hard to use, unless you design the syntax such that any reasonable BF program is always a syntax error in Presburger Arith. you just have to write your programs with some extra stuff that makes them _easy_ theorems
11:17:00 <cpressey> It might be a better idea to interleave the bits instead of overlap them.
11:17:51 <cpressey> "better" in the sense of "make it easier to show that it works" rather than "more interesting"
11:19:14 <wob_jonas> although it would be annoying, because most brainfuck programs have a lot of >>>>>> things in them, and now you have to change those to pad them out like 1>0&&1>0&&1>0&&1>0&&1>0&&1>0&&1>0 to avoid a syntax error
11:19:39 <int-e> cpressey: interleaving is basically pairing. so you're saying M(T,X) = if X in L then T(X) else <empty>, where T is a Turing machine (Brainfuck program), and L is a hard but decidable language? (Presburger arithmetic).
11:19:55 <cpressey> int-e: yeah that's what makes it boring
11:20:36 <int-e> sorry, not T(X), just T(<empty>) I suppose.
11:21:00 <int-e> (But while we are building tuples, you could add the input as a third component.)
11:22:27 <shachaf> I think I once talked about a language which is just like some other language except it's a syntax error for the sha1 hash of your program to be nonzero.
11:22:56 <shachaf> I don't remember the context now.
11:23:39 <int-e> we also had this idea of restricting C to programs with a particular hash (I forgot which hash, but the idea was to hash the hello world program.)
11:24:00 <cpressey> It seems trivial to say "This language is complex because it insists on solving an unrelated complex problem before it tries to run your program in an otherwise normal fashion"
11:24:04 <int-e> So same idea, but with the benefit that we can actually write *a* program.
11:24:36 <shachaf> I think it's hard to prove things about hash functions like surjectivity.
11:25:01 <cpressey> Still, counterexample is counterexample, so I guess I can't object if it's annoying, boring, trivial, etc
11:25:06 <shachaf> Maybe there are some cryptographic hash functions that also let you prove nice uniformity properties.
11:25:53 -!- arseniiv has quit (Ping timeout: 245 seconds).
11:28:39 <cpressey> Could go with overlapping, but give both alphabets (brainfuck's and PA's) a certain amount of redundancy, so that structure of bf program does not necessitate certain structure of pa sentence, and v-v
11:31:53 <wob_jonas> there's also a variant where the extra condition unrelated to the program is hard to even verify, but you just document that the program causes an undefined behavior unless that condition is satisfied, and the interpreter doesn't try to verify it
11:32:19 <wob_jonas> you can make the program cause an undefined behaviour unless whoever runs the compiler has payed me a hundred dollars,
11:32:47 <wob_jonas> or make the program cause an undefined behaviour unless the program was typed entirely by a cat walking on the keyboad,
11:33:03 <wob_jonas> or make the program cause an undefined behaviour unless whoever wrote the program is pure in heart,
11:33:20 <wob_jonas> or make the program cause an undefined behaviour unless whoever wrote the program really regrets having written it,
11:34:07 <wob_jonas> etc. I'm even thinking of adding such a restriction to some of the library functions of Consumer Society (not to the core language, just a few functions).
11:35:17 <Taneb> shachaf: it's a counter, but it uses a lot of sharing with the first field
11:37:38 <Taneb> shachaf: it's described on page 87 of my copy of Purely Functional Data Structures, so if you can find another copy maybe it's the same page
12:01:10 <esowiki> [[Talk:Swissen Machine]] https://esolangs.org/w/index.php?diff=64714&oldid=64713 * Jussef Swissen * (+446)
12:05:19 <cpressey> ["Cwg","CCwg","Ccwwg","CCCCwg","CcCcwwg","CCccwwwg"]
12:05:29 <cpressey> I seem to have written an AORS interpreter.
12:09:04 <cpressey> https://gist.github.com/cpressey/c8e42eb7223becae2e11aac676d1713e
12:09:45 <cpressey> You can laugh at my Haskell writing style if you like.
12:09:57 <int-e> shachaf: Hmm what kind of property would provably ensure surjectivity of a hash without making preimages or collisions easier?
12:16:07 <cpressey> Turns out it doesn't need indexes (I was confused, thought the spec talked about "odd positions", but it doesn't)
12:17:58 <int-e> yeah I just started wondering about that
12:19:29 <int-e> I would forego the fold there, I think, in favor of an explicitly recursive function that takes a list and the number of seen odd symbols so far.
12:21:01 <int-e> (the main reason being that accumulating a list by appending singleton lists feels horrible)
12:22:50 <cpressey> To each their own. Would it help if I explained that I wrote it because I wanted to better understand how it differs from a conventional rewriting system?
12:23:38 <cpressey> It looks like it's a kind of context-sensitive string rewriting.
12:32:24 <int-e> inserting odd characters has an odd effect in that rewriting flavor :P
12:49:48 <esowiki> [[Talk:An Odd Rewriting System]] N https://esolangs.org/w/index.php?oldid=64715 * Chris Pressey * (+388) Haskell implementation
13:21:59 -!- arseniiv has joined.
13:26:58 -!- arseniiv has quit (Ping timeout: 272 seconds).
13:36:19 <esowiki> [[Talk:Swissen Machine]] M https://esolangs.org/w/index.php?diff=64716&oldid=64714 * A * (+545) /* Conclusion */
13:36:59 <esowiki> [[Talk:Swissen Machine]] M https://esolangs.org/w/index.php?diff=64717&oldid=64716 * A * (+61) /* Conclusion */
13:37:28 <esowiki> [[Talk:Swissen Machine]] M https://esolangs.org/w/index.php?diff=64718&oldid=64717 * A * (-4) /* Conclusion */
13:40:23 <esowiki> [[Talk:An Odd Rewriting System]] https://esolangs.org/w/index.php?diff=64719&oldid=64715 * Chris Pressey * (+2428) Towards a non-exponentially-slowing-down simulation of a 1D-1D-CA
13:42:13 <esowiki> [[Talk:Swissen Machine]] M https://esolangs.org/w/index.php?diff=64720&oldid=64718 * A * (+233) /* Conclusion */
13:42:13 -!- xkapastel has joined.
13:46:36 <cpressey> In other news, effect systems are pretty cool.
13:50:27 -!- Reallycooluserna has joined.
13:51:18 -!- Reallycooluserna has changed nick to ARCUN.
13:54:28 <ARCUN> Why does Java have such a hellish grammer?
13:55:51 <ARCUN> I could write a program in C++ that's roughly the same length as an equivalent program in Java, and only the Java program would have issues
14:16:59 -!- arseniiv has joined.
14:19:53 -!- ARCUN has quit (Remote host closed the connection).
14:38:16 -!- atslash has quit (Quit: This computer has gone to sleep).
14:40:48 -!- atslash has joined.
14:52:20 <cpressey> There is a candy on the table. Alice and Bob, at the same time, see it and try to grab it. Alice gets it, Bob does not. Is this a race condition? No.
14:52:31 <cpressey> If they somehow both got a candy, that would be a race condition.
14:56:56 <int-e> race conditions are a violation of physics. (that's what I got from this scenario)
15:03:30 <cpressey> Physics provides some good built-in locking mechanisms "for free".
15:04:25 <cpressey> I'm actually trying to come up with an analogy to explain why I'm not worried about a particular concurrency scenario, but it's not the best analogy.
15:05:00 <cpressey> It's more like: you can cancel a task, but you will never be guaranteed that you cancelled it in time.
15:05:16 <cpressey> The task might terminate just before you cancelled it.
15:06:41 <int-e> can this be seen as a variation of the byzantine generals problem somehow?
15:06:42 <cpressey> Since you effectively never have a guarantee of that, it's not worth worrying about whether "cancel" will be scheduled before or after "terminate".
15:07:11 <cpressey> I don't know what Byzantine generals refers to, but I heard it used in relation to this already, so I'll look it up. (Thanks!)
15:07:34 <int-e> Hmm, that's the wrong general's problem...
15:07:56 <cpressey> '"Byzantine generals" redirects here. For military generals of the Byzantine empire, see Category:Byzantine generals.'
15:08:01 <int-e> I wanted https://en.wikipedia.org/wiki/Two_Generals%27_Problem which is different (and simpler).
15:10:33 <int-e> The similarity I'm seeing is that cancellation implies synchronization between the two tasks... and termination introduces a source of unreliability. It's a stretch, probably doesn't make sense outside of my mind :)
15:10:53 <esowiki> [[Seabass]] https://esolangs.org/w/index.php?diff=64721&oldid=64676 * Sec-iiiso * (+40) /* Hello, world! */
15:11:15 <esowiki> [[Seabass]] https://esolangs.org/w/index.php?diff=64722&oldid=64721 * Sec-iiiso * (+1) /* Hello, world! */
15:14:16 -!- wob_jonas has quit (Remote host closed the connection).
15:14:54 <cpressey> The Generals problems seem to relate mainly to distributed systems? What I'm thinking of isn't a distributed system, it's just a multithreaded program.
15:15:36 -!- Sgeo_ has joined.
15:15:52 <int-e> As I just wrote, it probably doesn't make sense :)
15:16:35 <cpressey> Well, it lets me figure that the previous reference to it that I heard probably doesn't make sense either :)
15:17:37 -!- Sgeo has quit (Ping timeout: 258 seconds).
15:19:33 <zzo38> I got involved in a discussion on news.software.nntp about the problem when article numbers will have to exceed 31-bits. My own software (both the client and server) already support 63-bit article numbers, although the protocol specification limits it to 31-bits. Some proposed solutions are increasing the version number to 3, adding a new BIGNUM command, and violating the protocol.
15:19:36 <int-e> Obviously you don't *need* any distributed system for this. You need some kind of unreliable communication channel. It's just hard to come up with sources of unreliability on a single system that's operating fine :)
15:19:45 <zzo38> Do you have any comments about fixing this?
15:20:17 <cpressey> zzo38: I would totally just violate the protocol.
15:21:41 <int-e> . o O ( do a hard fork of the block chain )
15:22:03 <zzo38> cpressey: Yes, that is what I do too (but not until it becomes necessary to do so); although Michael think that it can cause a problem with a client that doesn't expect it. But I think that if they do what they suggest instead, then you may fail to notice new articles and fail to notice that there even is a problem.
15:25:16 <zzo38> Did you ever write any NNTP software?
15:28:52 -!- Sgeo__ has joined.
15:29:39 <zzo38> See the thread starting at <5cd011d5$0$15174$426a74cc@news.free.fr>
15:32:25 -!- Sgeo_ has quit (Ping timeout: 268 seconds).
15:39:27 <cpressey> zzo38: No, and I haven't used Usenet in ages.
15:40:46 <cpressey> int-e: If you believe your local event queue is unreliable, you have way worse things to worry about than this, I imagine
15:49:33 -!- doesthiswork has joined.
15:50:29 <cpressey> I wrote a dynamic race-condition analyser once: https://catseye.tc/installation/Matchbox
15:50:54 <cpressey> It's just a toy, but it can be fun to watch as it displays all the possible interleavings
15:56:41 <cpressey> On the subject of programming languages, should I care about Pony?
15:57:29 <int-e> cpressey: what do you think of this... there are water boilers with a mechanical switch that turn themselves off when the water is boiling. If you wait for the water to boil and switch them off, you can never be completely certain that they didn't switch themselves off first.
15:57:52 <cpressey> int-e: That's a good analogy. Thank you!
15:58:48 <cpressey> Indeed, the electric kettle in my kitchen has exactly that feature.
15:59:08 <cpressey> And in many kitchens across the country, one imagines
16:00:50 <cpressey> Pony looks better than I imagined it to be based on how twee it presents itself (that kind of presentation kind of turns me off y'know)
16:01:29 <cpressey> (What's the adjverbial form of the adjective twee? twee-ly?)
16:01:54 -!- xkapastel has quit (Quit: Connection closed for inactivity).
16:01:58 <cpressey> (Elm's presentation is also far too twee for my taste)
16:03:45 <int-e> Do you mean the hand-holding ala "Working your way through the tutorial but in need of more help?"?
16:04:08 <int-e> (I didn't know "twee".)
16:06:07 <int-e> maybe shachaf could read https://www.ponylang.io/media/papers/opsla237-clebsch.pdf and tell us if it's any good. ("Fully Concurrent Garbage Collection of Actors on Many-Core Machines")
16:06:11 <cpressey> In a tutorial, it's forgivable, you want to try to make it readable and friendly, I understand that.
16:06:36 <cpressey> Sometimes it starts to permeate an entire project though.
16:07:19 <cpressey> Related: including an emoji in the description of your project (very popular to do this on Github now.)
16:08:37 <int-e> That reminds me of the fact that I never liked "Learn you a Haskell for Great Good", starting with the title, and the -- twee, I guess -- style.
16:09:11 <cpressey> Yeah I was going to mention that book as a sort of watershed moment in this regard
16:09:26 <doesthiswork> you need to make the emojis an integral part of your language's syntax
16:13:54 <cpressey> doesthiswork: That's a different matter. I approve of that, so long as they are grossly overused in incoherent ways in the program source.
16:14:52 <doesthiswork> I suppose If I do that then the documentation must be as serious and professional as possible
16:18:37 <cpressey> "Incorrectness is simply not allowed." Thank you, Pony project, for engaging in that other rhetorical habit that irritates me: hyperbole.
16:19:16 <Taneb> Hyperbole is the worst possible thing that any form of writing could ever include, with the possible exception of irony
16:21:14 <cpressey> Taneb: That's very good, I'll have to remember that one.
16:21:56 -!- Melvar has quit (Quit: thunderstorm).
16:22:58 <int-e> . o O ( Show me a proogramming language that ensures that all programs are correct and I'll show you a programming language that is useless. )
16:23:40 -!- atslash has quit (Quit: This computer has gone to sleep).
16:29:55 <cpressey> Alas I must away. À la prochaine.
16:29:57 -!- cpressey has quit (Quit: WeeChat 1.4).
16:44:27 -!- lldd_ has joined.
16:48:49 -!- lldd_ has quit (Client Quit).
16:52:03 -!- b_jonas has joined.
16:53:20 -!- Phantom_Hoover has joined.
17:01:33 <b_jonas> oh, that could be evil! make the language so that most things are written in ascii, but there's some rare feature that disables some optimization that you occasionally need to use in programs that do something tricky with pointer aliasing, and make the syntax for that rare syntax a brocoli emoji or something.
17:02:22 <b_jonas> when the next person to maintain your program sees that, they'll believe it's nonsense, because all programs they've seen are written in ascii only, they remove the brocoli from the source code, the program still compiles, but months later they'll get mysterious hard to debug failures when the phase of the moon influences the optimizer the wrong way.
17:03:26 <b_jonas> we should propose that for C++.
17:11:45 <b_jonas> or maybe for one of those features where the code doesn't compile unless you use some crazy incantation, and that incantation is a vomiting rocket emoji. the person learning rust can't figure out how to convince the borrow checker that some code is valid. he asks on StackOverflow or something. he gets an answer with working code with a vomiting rocket in the middle. he ignores that, thinking that must
17:11:52 <b_jonas> be a troll, no programming language actually uses vomiting rockets.
17:11:55 <b_jonas> the answer might even get deleted if other people don't take it seriously either.
17:33:51 <arseniiv> b_jonas: please let’s not do C++ that big a favor
17:37:48 <b_jonas> doesthiswork: https://www.xkcd.com/1813/
17:38:21 <b_jonas> but that's just an example, other emoji characters could work
17:39:03 <b_jonas> presumably they would match the meaning somewhat, so the emoji spelling for std::launder would be a washing machine or something
17:58:44 <doesthiswork> that's the same as what Steele was doing with fortress right?
19:07:17 -!- Melvar has joined.
19:31:10 <shachaf> The idea is that it can prevent global pauses by doing local GC?
19:40:29 <adu> shachaf: that's called Rust
19:55:46 -!- Lord_of_Life_ has joined.
19:57:32 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
19:58:33 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
20:18:54 <b_jonas> also I'm visiting London tomorrow, but only for three days
20:41:37 <zzo38> You can make the syntax to use U+FFFE character
20:59:54 -!- atslash has joined.
21:20:10 -!- xkapastel has joined.
21:43:05 -!- moei has joined.
21:53:14 <b_jonas> I'll be seeing the non-vacuum versions of the tube.
21:58:24 <kmc> what are your other plans in london?
21:58:43 <kmc> adu: Rust hasn't had local GC in a really long time, it was removed before 1.0
21:59:03 <kmc> and actually rustc's @T wasn't real GC, it was a janky refcounting system
21:59:27 <kmc> (but the rustboot implementation before that had real GC)
22:00:11 <kmc> there now are attempts to add hooks to enable GC libraries
22:00:29 <kmc> however I think Rust has enough "no GC" inertia that they're not going to end up with the D problem where half the libs depend on GC
22:00:33 <kmc> it'll be more for specialized things
22:00:45 <kmc> Servo had a bunch of hooks to enable Rust objects to be managed by SpiderMonkey's GC
22:00:51 <kmc> that was really really janky
22:00:52 <kmc> and unsafe
22:01:11 <kmc> not less safe than the way Gecko does it in C++, but not as safe as Rust is supposed to be
22:01:41 <kmc> in the early days, Rust was more like a native-code Erlang or a not dumbed down Go
22:01:50 <kmc> it gradually evolved towards being a "bare metal" systems language
22:32:27 <b_jonas> nice, the big museums in London are open almost every day. I'm used to most museums being open only 6 days a week
22:32:43 <b_jonas> kmc: I don't have too much plans. I'm going with family, so the plan mostly involves being with them.
22:32:57 <b_jonas> I definitely want to visit museums, as well as just walk on the streets of the inner city, because both of those are my kinds of fun
22:32:59 <kmc> are they cool
22:33:14 <esowiki> [[Talk:An Odd Rewriting System]] https://esolangs.org/w/index.php?diff=64723&oldid=64719 * Ais523 * (+1304) what causes the issue with AORS
22:33:22 <b_jonas> also they're planning to go to some sort of concert on saturday evening
22:39:16 -!- arseniiv has quit (Ping timeout: 246 seconds).
23:15:46 -!- sprocklem has quit (Ping timeout: 248 seconds).
23:17:31 -!- sprocklem has joined.
23:31:13 <Phantom_Hoover> kmc, oh hey i talked to someone on discord the other day who swore that he had run into a bug where firefox's JS engine was garbage collecting live variables in the middle of a function
23:31:33 <Phantom_Hoover> i still don't really believe him but extremely lol if true
23:34:07 <zzo38> Do you have a example program to test it? Then you can see if that is the case.
23:37:19 <Phantom_Hoover> i do not, and it sounded like one of those baffling bugs that's buried very deep in a giant project
23:38:48 <Phantom_Hoover> wouldn't be surprised if it turns out not to be reproducible. the guy was saying he suspected it might actually be some JS library or other instead
00:04:55 <zzo38> How common is it to use scientific method to try to determine the behaviour of proprietary software?
00:13:00 <zzo38> The documentation for Hero Mesh mentions what many things do, and also has a section about the internal code structure, but they mention many things which are untrue or which are unclear. I have figured out how a lot of the stuff actually works; this can be used with making Free Hero Mesh.
00:18:48 -!- Phantom_Hoover has quit (Ping timeout: 245 seconds).
00:29:02 -!- FreeFull has joined.
00:41:57 -!- adu has quit (Quit: adu).
00:50:37 -!- adu has joined.
00:52:04 -!- MDude has quit (Ping timeout: 244 seconds).
01:16:06 -!- b_jonas has quit (Remote host closed the connection).
01:16:38 -!- MDude has joined.
01:50:30 <int-e> shachaf: I have only read the title. :P
01:52:47 <shachaf> I didn't even get that far!
01:57:06 -!- MDude has quit (Ping timeout: 268 seconds).
02:19:52 -!- xkapastel has quit (Quit: Connection closed for inactivity).
02:34:59 <int-e> shachaf: okay I got something out of reading the informal description (Section 4).
02:35:18 <int-e> about 1 1/2 pages.
02:36:26 <int-e> And they have benchmarks where they beat Erlang. I have no clue how fair these are.
02:59:04 <zzo38> Now I made it so that if a word ends with 's then it will parse 's as a separate word.
03:20:30 <esowiki> [[Seabass]] M https://esolangs.org/w/index.php?diff=64724&oldid=64722 * A * (+4) /* Infinite Loop */ People usually forget that there is a page for the program form.
03:32:17 <esowiki> [[Talk:Swissen Machine]] M https://esolangs.org/w/index.php?diff=64725&oldid=64720 * A * (-1) /* Conclusion */ typo
04:45:07 -!- rtcwyvrn has joined.
04:49:18 -!- Sgeo_ has joined.
04:52:35 -!- Sgeo__ has quit (Ping timeout: 258 seconds).
04:59:05 -!- rtcwyvrn has quit (Quit: Leaving).
05:04:08 -!- tromp has joined.
05:04:09 -!- tromp_ has quit (Ping timeout: 250 seconds).
05:17:07 -!- atslash has quit (Ping timeout: 245 seconds).
07:52:22 -!- Frater_EST has joined.
07:56:35 -!- xkapastel has joined.
07:57:22 -!- Lord_of_Life has quit (Ping timeout: 248 seconds).
07:58:42 -!- Lord_of_Life has joined.
08:26:33 -!- arseniiv has joined.
08:50:02 -!- doesthiswork has quit (Ping timeout: 245 seconds).
09:50:02 <esowiki> [[Malbolge]] M https://esolangs.org/w/index.php?diff=64726&oldid=62502 * Malbranche * (+3) /* External resources */ Updated links
09:52:21 -!- atslash has joined.
09:54:14 <esowiki> [[Pxem]] https://esolangs.org/w/index.php?diff=64727&oldid=61698 * YamTokTpaFa * (+1466) /* Interpreter Development */
09:54:37 <esowiki> [[Pxem]] https://esolangs.org/w/index.php?diff=64728&oldid=64727 * YamTokTpaFa * (+6) /* pxemi.7z and text2pxem.pl */
09:55:27 <esowiki> [[Pxem]] https://esolangs.org/w/index.php?diff=64729&oldid=64728 * YamTokTpaFa * (-6) /* pxemi.7z and text2pxem.pl */
09:57:07 -!- atslash has quit (Ping timeout: 245 seconds).
09:58:02 -!- atslash has joined.
10:02:36 <esowiki> [[Malbolge Unshackled]] https://esolangs.org/w/index.php?diff=64730&oldid=53438 * Malbranche * (-299) /* External resources */
10:06:11 <esowiki> [[Special:Log/newusers]] create * PCC * New user account
10:22:01 -!- xkapastel has quit (Quit: Connection closed for inactivity).
10:34:03 -!- MDude has joined.
11:38:40 -!- Frater_EST has quit (Remote host closed the connection).
12:15:33 <esowiki> [[HQ9F+]] https://esolangs.org/w/index.php?diff=64731&oldid=61461 * YamTokTpaFa * (+202) /* Links */
12:20:05 <esowiki> [[Pxem]] https://esolangs.org/w/index.php?diff=64732&oldid=64729 * YamTokTpaFa * (-312) /* External Links */
12:21:26 <esowiki> [[BrainCrash]] https://esolangs.org/w/index.php?diff=64733&oldid=64374 * YamTokTpaFa * (+337) /* External resources */
12:22:13 <esowiki> [[Pxem]] https://esolangs.org/w/index.php?diff=64734&oldid=64732 * YamTokTpaFa * (-21) /* External Links */
12:22:21 <esowiki> [[Pxem]] https://esolangs.org/w/index.php?diff=64735&oldid=64734 * YamTokTpaFa * (+1) /* External Links */
12:23:24 <esowiki> [[HQ9F+]] https://esolangs.org/w/index.php?diff=64736&oldid=64731 * YamTokTpaFa * (-58) /* Links */
12:25:29 -!- atslash has quit (Quit: This computer has gone to sleep).
13:01:19 -!- xkapastel has joined.
13:39:39 -!- FreeFull has quit.
13:42:23 -!- FreeFull has joined.
13:54:02 <arseniiv> hi; are quantum logics/sets useful for anything? It seems to me it’s way more proper to use a language of QM or QFT and say things there. And if some things we cannot say, then so be it
13:55:40 <arseniiv> I think these are akin to various fuzzy formalisms: may be popular, but it isn’t a valid shortcut through a “normal” mathematics, as probability/statistics (almost always, I think) are for fuzziness
13:57:51 <arseniiv> in statistics, we are forced to be explicit about what we assume, to get something in return. We can make ad-hoc assumptions, but we’ll reap something tangibly linked to what we sown (or so I think); contrarily, we can ad-hoc all the way in fuzzy world and I don’t understand how to make something with a clear semantics
14:00:34 <arseniiv> or maybe not that; AFAIK fuzziness tries to reason about uncertainty without concerning dependence. And then it is ad-hoc’ed back in all other places to make this or that inference mechanism working
14:02:07 <arseniiv> I very strongly hope I’m misdirected about that, but alas it seems I am not. Junk science does exist, after all, here and there
14:03:51 <arseniiv> so, for quantum logics I also don’t know what do their authors trying to accomplish with them, though in this case I’m less primed to think so polarized
15:04:04 <esowiki> [[HQ9F+]] https://esolangs.org/w/index.php?diff=64737&oldid=64736 * YamTokTpaFa * (+176) /* Links */
15:17:05 <esowiki> [[HQ9F+]] https://esolangs.org/w/index.php?diff=64738&oldid=64737 * YamTokTpaFa * (+95)
15:31:53 -!- Phantom_Hoover has joined.
15:45:54 -!- doesthiswork has joined.
16:14:04 -!- atslash has joined.
16:28:29 <zzo38> Fortunately, to implement Free Hero Mesh, there are a lot of test cases; each level made for Hero Mesh is a test case; they always include solutions, so this can be used to test it.
16:46:10 -!- Sgeo has joined.
16:47:23 <esowiki> [[Dbondb]] https://esolangs.org/w/index.php?diff=64739&oldid=64588 * Sideshowbob * (+63) /* Commands */
16:48:49 -!- Sgeo_ has quit (Ping timeout: 246 seconds).
16:50:42 -!- Sgeo has quit (Ping timeout: 248 seconds).
16:56:22 -!- Sgeo has joined.
17:15:10 -!- doesntthiswork has joined.
17:17:33 -!- doesthiswork has quit (Ping timeout: 245 seconds).
18:21:04 -!- xkapastel has quit (Quit: Connection closed for inactivity).
18:54:30 <zzo38> Is there something like OpenID but with SASL instead and not HTML?
19:27:37 <arseniiv> doesntthiswork: these ducks are cool!
19:46:11 <zzo38> Will they add later in SQLite the possibility that you can use incremental blob I/O with virtual tables?
19:52:34 -!- lldd_ has joined.
19:54:43 -!- xkapastel has joined.
19:56:51 -!- Lord_of_Life_ has joined.
19:59:12 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
19:59:38 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
20:02:47 -!- sebbu2 has joined.
20:06:17 -!- sebbu has quit (Ping timeout: 245 seconds).
20:17:53 -!- lldd_ has quit (Quit: Leaving).
22:27:20 -!- moei has quit (Quit: Leaving...).
22:47:07 -!- sebbu2 has changed nick to sebbu.
23:57:51 -!- Sgeo_ has joined.
00:00:52 -!- Sgeo has quit (Ping timeout: 244 seconds).
00:11:54 -!- Phantom_Hoover has quit (Ping timeout: 272 seconds).
00:14:01 -!- arseniiv has quit (Ping timeout: 246 seconds).
01:55:32 <zzo38> I found a Scrabble game called "scribble" in the package manager on my computer. Scribble was written by Brian White <bcwhite@pobox.com> and has been placed in the public domain (the only true "free"). I added a single player mode, so that if you put level 0 then you can play game by yourself.
02:26:16 -!- FreeFull has quit.
02:40:24 <esowiki> [[Talk:Swissen Machine]] https://esolangs.org/w/index.php?diff=64740&oldid=64725 * Jussef Swissen * (+291)
02:44:29 -!- xkapastel has quit (Quit: Connection closed for inactivity).
03:10:52 -!- Sgeo__ has joined.
03:13:48 -!- Sgeo_ has quit (Ping timeout: 245 seconds).
03:37:11 <int-e> The Wave: \o/ \ꙩ/ \ꙫ/ \ꙭ/ \ꙮ/
03:37:29 <int-e> Oh there's \ꚙ/ as well.
03:39:41 <shachaf> int-e: It doesn't seem easy to get a definitive answer to the question "what should my program non-C program do between _start and main?"
03:39:54 <shachaf> That rdx thing is one piece of the puzzle but there are presumably others.
03:41:10 <esowiki> [[Talk:Swissen Machine]] M https://esolangs.org/w/index.php?diff=64741&oldid=64740 * A * (+615) /* Conclusion */
03:41:24 <esowiki> [[Talk:Swissen Machine]] M https://esolangs.org/w/index.php?diff=64742&oldid=64741 * A * (+64) /* Conclusion */
03:46:48 <esowiki> [[Idea]] N https://esolangs.org/w/index.php?oldid=64743 * A * (+666) Stub page.
03:47:44 <esowiki> [[Idea]] M https://esolangs.org/w/index.php?diff=64744&oldid=64743 * A * (+0)
03:50:44 <int-e> Tricky. I would rather take off from main() instead, because presumably I want to interact with libraries that in turn use libc, so I want the C library to be fully initialized.
03:51:47 <int-e> And I'm not sure that it does all that using the __constructor__ mechanism. (I don't even know how that works on the ELF side.)
04:00:17 <esowiki> [[Idea]] M https://esolangs.org/w/index.php?diff=64745&oldid=64744 * A * (+195)
04:01:04 <shachaf> How can my compiler do that?
04:01:16 <shachaf> Do I find crt0.o and link it in or something?
04:01:43 <int-e> shachaf: Oh there's more to this than the SysV ABI. LSB plays into it as well, apparently: http://refspecs.linuxbase.org/LSB_3.1.0/LSB-generic/LSB-generic/baselib---libc-start-main-.html (I googled "libc initialization" with duckduckgo)
04:01:46 <shachaf> It seems like there should be an ABI for this.
04:01:56 <esowiki> [[Idea]] M https://esolangs.org/w/index.php?diff=64746&oldid=64745 * A * (-14) /* Instructions */
04:04:44 <int-e> hmm objdump -dr /usr/lib/x86_64-linux-gnu/crt1.o
04:06:31 <shachaf> You want things from /usr/lib/gcc/x86_64-linux-gnu/*/ as well.
04:07:08 <esowiki> [[Idea]] M https://esolangs.org/w/index.php?diff=64747&oldid=64746 * A * (-59) /* Infinite loop */
04:07:10 <shachaf> `` echo 'int main() { return 0; }' | gcc -x c - -o /tmp/true; objdump -d /tmp/true | grep '>:$' | awk '{print $2}' | xargs
04:07:11 <HackEso> <_init>: <.plt>: <.plt.got>: <_start>: <deregister_tm_clones>: <register_tm_clones>: <__do_global_dtors_aux>: <frame_dummy>: <main>: <__libc_csu_init>: <__libc_csu_fini>: <_fini>:
04:07:26 <shachaf> What's all this nonsense? Am I supposed to do all that?
04:08:56 <esowiki> [[Idea]] M https://esolangs.org/w/index.php?diff=64748&oldid=64747 * A * (-10)
04:10:00 <int-e> Hmm, what does csu stand for. Something boring like "C start-up" maybe?
04:10:16 <zzo38> I don't know; I have once used LLVM and just defined main, and it work, so, I don't know how to do it without main
04:11:22 <shachaf> "This directory contains the C startup code (that which calls main)." from glibc/csu/
04:11:26 <int-e> I mean, looking at https://sourceware.org/git/?p=glibc.git;a=tree;f=csu it's all connected to initialization of various things...
04:12:35 <shachaf> So crti/crtn stand for "initializer" and "finalizer".
04:12:59 <int-e> http://www.dbp-consulting.com/tutorials/debugging/linuxProgramStartup.html has a fancy diagram
04:14:16 <int-e> So it seems that my idea of .init is all wrong, I thought the loader handled those... but it's libc. The loader does preinit stuff, which I wasn't aware of.
04:14:38 <int-e> (loader = interpreter = ld.so)
04:15:49 <int-e> I was unaware of both preinit and init stuff; only the constructors were on my radar.
04:15:53 <shachaf> It seems like the loader has to be involved.
04:16:00 <int-e> too many mechanisms...
04:22:43 <int-e> Hrm, that picture fails to explain what rdx is used for by the loader.
04:23:24 <int-e> Or edx, since they're discussing x86
04:23:42 <shachaf> It explains it under rtld_fini, doesn't it?
04:26:05 <shachaf> So is calling __libc_start_main required by any program that wants to use libraries that link against libc?
04:27:52 <int-e> That's what it looks like to me. It seems that *a lot* of initialization doesn't happen otherwise.
04:28:16 <int-e> All the world is libc :)
04:28:26 <shachaf> And then there's register_tm_clones and other things.
04:36:03 <shachaf> https://stackoverflow.com/questions/34966097/what-functions-does-gcc-add-to-the-linux-elf talks about these a bit.
04:39:50 <int-e> https://gcc.gnu.org/wiki/TransactionalMemory - yay yet another ABI
04:42:17 <shachaf> Why does this need to be linked into my program instead of libc?
04:45:04 <int-e> well it's a gcc feature not a libc feature, and presumably glibc doesn't use transactional memory itself?
04:45:11 <shachaf> This page says some of these things are deprecated, too.
04:45:38 <int-e> Anyway I should take advantage of being up early and go for a walk before it starts getting hot.
04:45:44 <lambdabot> Local time for int-e is Sun Jul 28 06:45:43 2019
04:47:18 <lambdabot> LOWI 280420Z VRB02KT 9999 FEW008 SCT018 BKN090 16/15 Q1001 NOSIG
04:47:37 <lambdabot> KOAK 280353Z 29007KT 10SM CLR 20/15 A2994 RMK AO2 SLP137 T02000150 $
04:47:45 <int-e> hmm, almost chilly...
05:22:15 <shachaf> int-e: I thought the _tm_ things were necessary when linking any library that uses the transactional memory.
05:56:00 <int-e> shachaf: I expect so. But why should the C library care?
06:05:38 <shachaf> I think maybe I'll just call __libc_start_main or something and see if anything breaks.
06:05:47 <shachaf> That sounds like a good way to be confident in your software.
06:06:40 <int-e> I mean, gcc is a C compiler but in this case it's implementing its own features that need additional initialization support.
06:07:16 <int-e> I would invoke gcc as a linker, tbh. Maybe g++ if C++ stuff is involved.
06:09:31 <int-e> (partly because that's what ghc does)
06:09:37 <shachaf> And how do you cross-compile in that scenario?
06:10:07 <int-e> I basically don't cross-compile.
06:11:33 <shachaf> Probably because every tool makes it impossible to cross-compile because they do things like that.
06:11:34 <int-e> I guess technically the OpenCL experiment involved cross compilation. The last time before that was playing with an Arduino.
06:11:42 <shachaf> Or because you unly use one platform, I guess.
06:12:24 <int-e> But if you have a gcc cross compiler for the target then that should work?
06:12:54 -!- doesntthiswork has quit (Ping timeout: 272 seconds).
06:15:16 <shachaf> I thought cross-compiling with gcc was a nightmare.
06:15:43 <int-e> I thought that was true in general, independent of gcc.
06:16:51 <int-e> But as indicated I have not really touched cross compilation.
06:17:07 <int-e> Even for the Arduino thing I used a canned Makefile which, fortunately, worked.
06:17:23 <shachaf> Maybe I should look at what Go does when it makes non-statically-linked binaries.
06:17:26 <int-e> That did involve gcc as a cross compiler.
06:18:34 <int-e> (but as a stand-alone implementation without a full-fledged C library, so a lot of *your* problems didn't really come up)
06:18:53 <int-e> (no dynamic linking either!)
06:19:22 <shachaf> I've already made an ELF file that segfaults gdb.
06:21:17 <int-e> Was that your goal? :P
06:21:18 <shachaf> It's actually pretty easy, you can make it with objcopy.
06:21:33 <shachaf> No, my goal was to make an ELF file that can be executed.
06:22:12 <int-e> (Didn't we once find out that you can crash /bin/true by messing with localisation?)
06:23:05 <int-e> How about an ELF file that can be executed but still makes gdb crash when you attempt to load it there?
06:23:53 <int-e> (Basic idea, put garbage in some sections that only gdb really cares about... dwarf stuff, say.)
06:24:07 <shachaf> Hmm, I don't remember whether the ELF file I made loaded.
06:26:38 <int-e> tbf, it was /bin/true --help
06:32:22 <shachaf> So it looks like Go programs that link with libc don't call libc_start_main.
06:34:02 <shachaf> But what do they do instead?
06:34:06 <shachaf> I should probably just do that.
06:34:12 <shachaf> https://golang.org/src/runtime/asm_amd64.s
06:35:03 <int-e> what assembly flavor is that...
06:35:12 <shachaf> Plan 9 assembly, obviously.
06:35:57 <int-e> Hmm I guess actually I'm wondering about the register naming.
06:36:21 <shachaf> I think the register sizes are implied by the instruction names?
06:37:41 <shachaf> Recently I was writing a bit of x86 code by hand and I was confusil until I remembered someone said octal would be better than hexadecimal.
06:37:48 <shachaf> Then I was a bit less confusil.
06:38:22 <int-e> what does the (SB) do?
06:38:47 <int-e> ...Oh is that a register...
06:39:44 <shachaf> https://golang.org/doc/asm
06:39:51 <shachaf> "The SB pseudo-register can be thought of as the origin of memory, so the symbol foo(SB) is the name foo as an address in memory."
06:42:22 <shachaf> So that file defines main to be called by libc, but as far as I can tell that's not being used on a compiled binary.
06:57:29 <int-e> shachaf: https://golang.org/src/cmd/cgo/doc.go ... have a look at lines 698ff. It seems that gcc is involved in the middle of the process.
06:58:34 <int-e> __libc_start_main is mentioned but it's not clear by what mechanism it would actually be called.
07:00:23 <int-e> (that means it's still possible that it isn't called)
07:30:54 <int-e> shachaf: this may disappoint you, but go will use gcc or clang as a linker if shared libraries are involved somehow.
07:32:39 <int-e> https://golang.org/src/cmd/link/internal/ld/config.go#L224
07:33:40 <int-e> (plus documentation for `link`, which says "Set the external linker (default "clang" or "gcc")." for the -extld flag.)
07:33:51 <shachaf> int-e: I didn't see it executing gcc in the strace output, and I didn't see libc_start_main in the output of objdump -d
07:34:21 <int-e> hmm did you do strace -f
07:34:29 <shachaf> Admittedly it is passing -extld=gcc to `link`.
07:35:49 <int-e> Maybe I'm misinterpreting ctxt.linkShared.
07:35:57 <int-e> I will stop anyway
07:37:07 <shachaf> Maybe it's being cached somehow?
07:51:51 <shachaf> Anyway the entry point is certainly _rt0_amd64_linux
07:57:57 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
08:00:21 -!- Lord_of_Life has joined.
08:01:40 -!- nfd9001 has joined.
08:15:37 <\oren\> the BDF format is apparently so old that BDF files were "typically distributed on nine-track tapes"
08:16:21 <\oren\> why one would use a text-based format rather than binary in that era, I don't know
08:18:09 <int-e> so that they could be input using punched cards maybe?
08:18:29 <\oren\> ah yeah, that would explain it
08:18:41 <shachaf> What's the benefit of bitmap font formats?
08:19:26 <\oren\> or at least, that's my main reasoning
08:20:57 <int-e> \oren\: Maybe punched cards are too old, but even so I suspect being able to edit bitmaps in a text editor was useful.
08:22:51 <int-e> Though, hmm. It's using hex encoding. That's inconvenient.
08:23:09 <\oren\> I am currently working on making my BDF-handling programs more general, rather than totally specific to my neoletters font
08:23:48 <\oren\> They should be capable of handling any number of rows and up to 32 columns of pixels
08:32:09 <shachaf> \oren\: have you considered making a signed distance field font instead hth
09:28:35 -!- Frater_EST has joined.
09:39:58 <HackEso> /bin/true: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=9ae82394864538fa7b23b7f87b259ea2a20889c4, stripped
09:40:30 <shachaf> Is it a shared object (rather than an executable) because it's a position-independent executable?
09:41:04 <HackEso> linux-vdso.so.1 (0x0000007fbffff000) \ libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x000000004042e000) \ /lib64/ld-linux-x86-64.so.2 (0x0000000040000000)
09:41:29 <shachaf> `` readelf -h /bin/true | grep -i entry
09:41:29 <HackEso> Entry point address: 0x1670
09:41:46 <shachaf> That doesn't look like an absolute entry point.
09:42:05 <shachaf> So that's pretty neat. I guess I want my programs to be position-independent.
09:42:14 <int-e> Oh, I get the question, hmm.
09:42:37 <HackEso> file-5.30 \ magic file from /etc/magic:/usr/share/misc/magic
09:42:49 <shachaf> I imagine that's much trickier if you're doing static linking.
09:43:14 <int-e> here it says, /bin/true: ELF 64-bit LSB pie executable, with file-5.37 (though technically iot's the `magic` file that's more important...)
09:43:44 <shachaf> `` readelf -h /bin/true | grep -i type
09:43:45 <HackEso> Type: DYN (Shared object file)
09:44:33 <shachaf> `` echo $'.globl _start\n_start: int3' > /tmp/test.s && as -o /tmp/test.o /tmp/test.s && ld -o /tmp/test /tmp/test.o && file /tmp/test
09:44:34 <HackEso> /tmp/test: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped
09:46:46 <shachaf> https://github.com/file/file/commit/6876ebadcdf27224b3ffa9dfa4343127aa97c9b2
09:46:50 <shachaf> Looks like a pretty recent change.
09:48:30 <shachaf> int-e: Does it just print that because it has +x permission?
09:54:26 <int-e> shachaf: maybe but then please explain why file -L /lib/x86_64-linux-gnu/libc.so.6 says "shared object"
09:55:14 <shachaf> What about the thing it links to?
09:56:00 <shachaf> Well, my version of file isn't even new enough to say "pie executable"
09:58:22 <int-e> Hmm, no, 'x' must be something else.
10:05:46 <shachaf> I'm also confused that it says leshort when e_type is a one-byte value.
10:06:01 <shachaf> The last time I wrote magic entries I didn't enjoy it.
10:09:41 <int-e> well, you got the meaning of 'x' right.
10:09:58 <int-e> https://github.com/file/file/commit/5b49de03a239c6765b6b6858d56827a021370b07#diff-dde49634c7a5cf692df46037d67d8c2eR480-R488
10:11:44 <int-e> which means I'm pretty confused now
10:12:27 <shachaf> Did you try it on the link target to be sure?
10:13:06 <int-e> I actually made a copy of /bin/true, removed the x, and it still says "pie executable"
10:13:48 <shachaf> Also is this the one use of ${ in the entire magic database?
10:14:26 <int-e> possibly? the feature was introduced one or two patches before the elf change
10:15:13 -!- arseniiv has joined.
10:15:14 <shachaf> Ugh, autoconf/automake is such a scow
10:15:19 <int-e> certainly looks that way
10:15:23 <shachaf> It makes me miserable every time I accidentally read any of it
10:15:57 <shachaf> I know I call things scow sometimes but I think this is a pretty legitimate use
10:19:09 <shachaf> Anyway this is a real mystery now.
10:19:16 <shachaf> If only I had a more recent version of file.
10:25:09 <shachaf> Oh, I guess I can get it from Nix.
10:25:27 <int-e> ah, there's more magic
10:25:46 <esowiki> [[Bauberqueue/bauberqueue.py]] M https://esolangs.org/w/index.php?diff=64749&oldid=64378 * Erikkonstas * (-9)
10:26:00 <int-e> which overrides the file mode for ELF files
10:26:58 <int-e> https://github.com/file/file/blob/master/src/readelf.c modifies ms->mode in a couple of places.
10:28:43 <shachaf> `` readelf -a /bin/true | grep FLAGS_1
10:28:44 <HackEso> 0x000000006ffffffb (FLAGS_1) Flags: PIE
10:30:04 <shachaf> I wonder where this is specified?
10:36:13 <shachaf> https://cirosantilli.com/elf-hello-world#df_1_pie talks about it and links to a description
10:37:21 <shachaf> `` readelf -h /lib64/ld-linux-x86-64.so.2 | grep -i entry
10:37:22 <HackEso> Entry point address: 0xc20
10:37:46 <shachaf> Even ld-linux is randomized?
10:37:55 <int-e> It looks like this elf specific hack was initially introduced just for ", stripped" (checking for the absence of a particular type of section is too hard for the simple 'magic' logic)
10:37:57 <shachaf> I think I'm a bit confused about how ASLR works.
10:38:23 <shachaf> It seems the kernel decides to randomize based on an ELF file calling itself DYN.
10:40:22 <int-e> Hmm, on a fundamental level that's nevessary: ld.so remains mapped executably, and may contain useful functions and ROP gadgets.
10:40:41 <shachaf> But then why would the kernel only randomize DYN files?
10:40:46 <shachaf> Can static executables get randomized?
10:42:43 <int-e> Hrm, depends on details of the ELF format that I don't want to check...
10:44:08 <shachaf> https://stackoverflow.com/a/55704865 says "The Linux kernel 5.0 determines if ASLR can be used based on ET_DYN"
10:46:09 <shachaf> https://github.com/torvalds/linux/blob/v5.0/fs/binfmt_elf.c#L956
10:46:26 <shachaf> "There are effectively two types of ET_DYN * binaries: programs (i.e. PIE: ET_DYN with INTERP) and loaders (ET_DYN without INTERP, since they _are_ the ELF interpreter)."
10:47:36 <shachaf> Oh, well, that doesn't say what I thought it did.
10:48:27 <shachaf> But the gist of it seems the same.
11:07:59 -!- Frater_EST has left.
11:11:25 -!- Phantom_Hoover has joined.
11:39:12 <lambdabot> LOWI 281120Z 07003KT 030V170 9999 -SHRA FEW025 SCT050 BKN070 20/16 Q1001 TEMPO SHRA
11:39:35 <int-e> not hot today. it's raining actually.
12:05:41 -!- FreeFull has joined.
12:28:41 <shachaf> The PE machine identifier for x86-64 is 0x8664
12:57:16 <int-e> have a look at Intel's PCI vendor id some day
13:08:03 <shachaf> That doesn't use the x, though.
13:10:32 <int-e> the 0x isn't part of the ID anyway
13:19:26 -!- Sgeo__ has quit (Read error: Connection reset by peer).
13:19:54 -!- Sgeo__ has joined.
13:31:53 -!- xkapastel has joined.
14:06:44 <esowiki> [[Sidex]] M https://esolangs.org/w/index.php?diff=64750&oldid=64708 * A * (+189)
14:10:28 <esowiki> [[Brainfuck extensions]] M https://esolangs.org/w/index.php?diff=64751&oldid=61455 * A * (+30)
14:17:08 <esowiki> [[Sidex]] https://esolangs.org/w/index.php?diff=64752&oldid=64750 * A * (+1) Oops
14:30:40 <fizzie> Intel also has the "8086F2" MAC OUI, which may or may not be a coincidence. (They have many others too.)
14:36:49 <esowiki> [[Idea]] https://esolangs.org/w/index.php?diff=64753&oldid=64748 * A * (+109)
14:40:13 <shachaf> Next you'll tell me they have it in their CPUID
14:49:00 <int-e> shachaf: I don't know, do they?
14:50:06 <int-e> > map length . words $ "GenuineIntel AuthenticAMD"
14:50:18 <int-e> > map length . words $ "GenuineIntel AuthenticAMD"
14:50:45 <int-e> that's the only part of cpuid I tend to remember
14:50:47 -!- Frater_EST has joined.
14:51:06 -!- Frater_EST has left.
15:10:01 <shachaf> int-e: Oh man, https://www.cs.stevens.edu/~jschauma/631A/elf.html
15:17:55 <esowiki> [[Talk:Sidex]] https://esolangs.org/w/index.php?diff=64754&oldid=64705 * Areallycoolusername * (+194)
15:40:17 -!- Frater_EST has joined.
15:40:32 -!- Frater_EST has left.
15:45:27 -!- Sgeo__ has quit (Ping timeout: 245 seconds).
15:59:19 <esowiki> [[Talk:Sidex]] https://esolangs.org/w/index.php?diff=64755&oldid=64754 * Arseniiv * (+588) /* Concatenative */ new section
16:54:30 -!- Sgeo has joined.
16:55:03 <Sgeo> You know what would be nice? A non-dying Internet connection. And a chat platform that doesn't spam people when someone happens to have a dying Internet connection.
16:58:48 <kmc> someone's salty
16:59:09 <kmc> Sgeo: I rent a cheap VPS, run irssi there and connect with mosh from both my laptop and phone
16:59:27 <kmc> it's very convenient and only rarely disconnects
16:59:45 <kmc> only when linode reboots my machine, or i have to update irssi
17:30:39 -!- moei has joined.
17:58:30 -!- user24 has joined.
18:08:48 -!- doesntthiswork has joined.
18:19:06 -!- dont-panic has joined.
19:03:36 -!- user24 has quit (Quit: Leaving).
19:10:33 -!- arseniiv has quit (Read error: Connection reset by peer).
19:10:50 -!- arseniiv has joined.
19:33:17 -!- lynn has quit (Read error: Connection reset by peer).
19:33:37 -!- lynn has joined.
20:00:02 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
20:01:03 -!- Lord_of_Life has joined.
20:29:37 -!- Googied has joined.
20:31:15 -!- Googied has left ("Leaving").
20:43:49 <esowiki> [[Renumbering]] N https://esolangs.org/w/index.php?oldid=64756 * DoggyDogWhirl * (+1839)
20:43:54 <esowiki> [[Renumbering/Python Implementation]] N https://esolangs.org/w/index.php?oldid=64757 * DoggyDogWhirl * (+1486)
21:02:51 -!- Sgeo_ has joined.
21:05:52 -!- Sgeo has quit (Ping timeout: 245 seconds).
21:29:09 <esowiki> [[User:DoggyDogWhirl]] https://esolangs.org/w/index.php?diff=64758&oldid=64682 * DoggyDogWhirl * (+18)
21:31:38 -!- xkapastel has quit (Quit: Connection closed for inactivity).
21:31:52 <esowiki> [[Language list]] M https://esolangs.org/w/index.php?diff=64759&oldid=64646 * DoggyDogWhirl * (+18)
21:32:07 -!- dont-panic has quit (Ping timeout: 258 seconds).
21:36:23 -!- Sgeo__ has joined.
21:39:07 -!- dont-panic has joined.
21:39:47 -!- Sgeo_ has quit (Ping timeout: 268 seconds).
21:56:18 -!- atslash has quit (Quit: Leaving).
22:04:05 <zzo38> What is the command in Perl to count how many copies of a letter can be found in a string?
22:34:53 -!- xkapastel has joined.
22:35:23 -!- moei has quit (Quit: Leaving...).
23:27:46 -!- arseniiv has quit (Ping timeout: 272 seconds).
23:35:27 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
23:40:46 -!- Lord_of_Life has joined.
23:55:38 -!- ais523 has joined.
23:56:20 <ais523> zzo38: there isn't a dedicated command, but if you use code like $string =~ y/x/x/ to replace the letter with itself in the string, the return value is the number of replacements (and the string doesn't actually change); for a hardcoded letter, that's probably the shortest and clearest way to do it
23:56:25 <zzo38> Sgeo: If you do not want that spam then you should filter it out by your client.
23:56:46 <zzo38> ais523: As it turns out I asked on ifMUD and received a suitable answer there, so I did what they said and it work.
23:56:59 <ais523> was it the same answer or a different one?
23:57:27 <ais523> hmm… a general method might be to split the string on the letter, count the number of components in the result, and subtract 1
23:57:59 <Sgeo__> zzo38, it's other people complaining at me in one of the channels I'm in
23:58:19 <zzo38> Their answer was: $count = () = ($str =~ /$letter/g)
23:58:59 <ais523> I'm a bit surprised that =()= works
23:59:04 <ais523> although I can see logical rules behind which it would
23:59:13 <zzo38> I asked because I was modifying a Scrabble game in Perl. I added a "count" command, to count how many letters remain according to your point of view, so the letters in opponent's hand have to added back in to the count.
00:00:30 <zzo38> ais523: Did you write more about the card game you were designing?
00:01:26 <ais523> I'm working on so many projects that any specific random old project from a while ago is unlikely to have received updates, even if I've had no reason to abandon it
00:01:28 <zzo38> I made other changes as well, such as, I added a solitaire mode, and I removed the fifty-point bonus.
00:02:04 <shachaf> Is making statically linked binaries a hopeless endeavor?
00:02:56 <ais523> I don't think most build tools are very good at it nowadays
00:03:18 <ais523> the ideal would be some sort of LTO against libc, which would be fun to see
00:03:40 <shachaf> I mean in terms of the capabilities of the final binary, not how it's produced.
00:04:47 <ais523> "gcc -static helloworld.c" produced a binary for me that file claims is statically linked
00:05:10 <ais523> however, it appears to have a PLT anyway, which is suspicious
00:05:42 <shachaf> Yes. On Linux it's sort of possible. But once you want to do things like OpenGL it's not possible again.
00:06:18 <ais523> …also I'm not sure if I trust my disassembler, it disassembles "66 90" as "xchg %ax, %ax", which is not correct ("xchg %ax, %ax" would clear the upper 32 bits of %rax, it should be disassembled as "nopw" or "word ptr nop")
00:08:43 <shachaf> `` echo 'int main() { return 0; }' | gcc -x c - -o /tmp/true; readelf -a /tmp/true > tmp/out; objdump -d /tmp/true >> tmp/out; url tmp/out
00:08:46 <HackEso> https://hack.esolangs.org/tmp/out
00:08:50 <shachaf> `` echo 'int main() { return 0; }' | gcc -static -x c - -o /tmp/true; readelf -a /tmp/true > tmp/out; objdump -d /tmp/true >> tmp/out; url tmp/out
00:08:52 <HackEso> readelf: Warning: [ 3]: Link field (0) should index a symtab section. \ https://hack.esolangs.org/tmp/out
00:09:25 <shachaf> It's certainly possible to make statically linked binaries that only use the kernel ABI.
00:10:35 <ais523> my statically linked hello world has a relocation section, which is interesting: it hasn't been fully linked
00:10:43 <ais523> maybe that's related to ASLR or something like that
00:10:50 <shachaf> I think glibc is quite hostile to static linking.
00:11:32 <ais523> IIRC there's a separate compile of it which is more static-link-friendly
00:11:41 <shachaf> There's no reason for ASLR to cause this because all the statically linked jumps are relative.
00:12:52 <ais523> apparently not, there are some absolute calls in the compiled hello world executable
00:12:55 <ais523> those are what are going via the PLT
00:13:16 <shachaf> Right, but the PLT is what's making them absolute in the first place.
00:13:53 <shachaf> I've seen 66 90 diassembled as xchg %ax,%ax before. I wonder why.
00:14:40 <shachaf> `` echo $'.globl _start\n_start:\nxchg %eax,%eax\nint3' > /tmp/test.s; as -o /tmp/test.o /tmp/test.s; objdump -d /tmp/test.o
00:14:41 <HackEso> \ /tmp/test.o: file format elf64-x86-64 \ \ \ Disassembly of section .text: \ \ 0000000000000000 <_start>: \ 0:87 c0 xchg %eax,%eax \ 2:cc int3
00:14:52 <shachaf> `` echo $'.globl _start\n_start:\nxchg %ax,%ax\nint3' > /tmp/test.s; as -o /tmp/test.o /tmp/test.s; objdump -d /tmp/test.o
00:14:52 <HackEso> \ /tmp/test.o: file format elf64-x86-64 \ \ \ Disassembly of section .text: \ \ 0000000000000000 <_start>: \ 0:66 90 xchg %ax,%ax \ 2:cc int3
00:14:59 <shachaf> `` echo $'.globl _start\n_start:\nxchg %rax,%rax\nint3' > /tmp/test.s; as -o /tmp/test.o /tmp/test.s; objdump -d /tmp/test.o
00:15:00 <HackEso> \ /tmp/test.o: file format elf64-x86-64 \ \ \ Disassembly of section .text: \ \ 0000000000000000 <_start>: \ 0:90 nop \ 1:cc int3
00:15:26 <ais523> shachaf: because if you treat the instruction encoding orthogonally, 90 actually means xchg %ax, %ax on 8086; with 32-bit processors it was repurposed to mean nop (and xchg %ax, %ax is actually a nop on those)
00:16:01 <shachaf> But you'd expect it to clear the upper 32 bits on amd64, like you said.
00:16:14 <ais523> right, so on amd64, you need to special-case 90 to have no relationship to ax
00:16:31 <ais523> and it's probably easy to forget to do that when it doesn't matter on a 32-bit processor
00:21:37 <shachaf> "XCHG (E)AX, (E)AX (encoded instruction byte is 90H) is an alias for NOP regardless of data size prefixes, including REX.W."
00:22:26 <shachaf> So I think the diassembly is correct? Though it would be nicer to call it a 2-byte nop.
00:24:11 <shachaf> objdump should have an option to show the instruction in octal.
00:24:15 <ais523> huh, "xchg %ax, %ax" assembles into 66 90
00:24:19 <ais523> (I ran it the other way)
00:25:09 <ais523> interestingly, "xchg %rax, %rax" assembles into just 90
00:25:17 <shachaf> I guess REX.W followed 90 would also be a 2-byte nop.
00:25:24 <ais523> I guess that does the same thing :-D
00:25:41 <ais523> REX is a bit of a complex prefix, it /also/ overrides which registers you're using
00:25:54 <ais523> so you'd need to pick a version of REX that left the registers the same
00:26:25 <shachaf> `` echo $'.globl _start\n_start:\n.byte 0x48; .byte 0x90\nint3' > /tmp/test.s; as -o /tmp/test.o /tmp/test.s; objdump -d /tmp/test.o
00:26:26 <HackEso> \ /tmp/test.o: file format elf64-x86-64 \ \ \ Disassembly of section .text: \ \ 0000000000000000 <_start>: \ 0:48 90 rex.W nop \ 2:cc int3
00:27:09 <shachaf> (I was hand-encoding some x86-64 code today so I happened to have it handy.)
00:27:11 <ais523> I just used 48 in my own tests
00:27:25 <ais523> and yes, it disassembles as REX.W
00:28:30 <ais523> hmm, I wonder what the other REXes disassemble as
00:28:33 <shachaf> I wonder whether I should go the Microsoft route and call that architecture "x64".
00:28:51 <ais523> OK, so the odd-numbered REXes change the second operand to r8
00:30:11 <ais523> only REX.B and REX.WB weren't noted at all by the disassembler, for the others it mentioned the prefix explicitly
00:31:40 <shachaf> `` echo $'.globl _start\n_start:\n.byte 0101; .byte 0220' > /tmp/test.s; as -o /tmp/test.o /tmp/test.s; objdump -d /tmp/test.o
00:31:40 <HackEso> \ /tmp/test.o: file format elf64-x86-64 \ \ \ Disassembly of section .text: \ \ 0000000000000000 <_start>: \ 0:41 90 xchg %eax,%r8d
00:31:54 <shachaf> `` echo $'.globl _start\n_start:\n.byte 0111; .byte 0220' > /tmp/test.s; as -o /tmp/test.o /tmp/test.s; objdump -d /tmp/test.o
00:31:55 <HackEso> \ /tmp/test.o: file format elf64-x86-64 \ \ \ Disassembly of section .text: \ \ 0000000000000000 <_start>: \ 0:49 90 xchg %rax,%r8
00:32:11 <ais523> I'm reading the spec now
00:32:14 <shachaf> `` echo $'.globl _start\n_start:\n.byte 0111; .byte 0221' > /tmp/test.s; as -o /tmp/test.o /tmp/test.s; objdump -d /tmp/test.o
00:32:15 <HackEso> \ /tmp/test.o: file format elf64-x86-64 \ \ \ Disassembly of section .text: \ \ 0000000000000000 <_start>: \ 0:49 91 xchg %rax,%r9
00:32:34 <shachaf> Does HackEgo have a nicer way to ask these questions than that?
00:32:42 <shachaf> LLVM has some tools for it, I think.
00:35:21 <ais523> hmm, xchg seems to use a really weird formatting for its arguments
00:36:19 <ais523> normally you'd use rex.r to change the first register to the r9..r15 set, but rex.rw xchg %ax, %r9 isn't interpreted as xchg %r9, %r9 like you'd expect
00:36:52 <ais523> I'm guessing it's because the one-byte encoding of xchg hardcodes the first register rather than using modrm
00:37:05 <shachaf> This form of xchg just always uses ax, I think.
00:37:20 <ais523> so xchg %r8, %r8 has to be encoded as 4d 87 c0
00:37:34 <shachaf> You can use 0x87 to exchange arbitrary registers.
00:38:00 <shachaf> I think that's pretty reasonable? REX only affects registers whose name is explicitly encoded.
00:38:33 <ais523> yep; 87 = xchg (word/dword/qword); c0 = registers only, ax or r8, ax or r8; then the rex prefix disambiguates the registers and operation size
00:39:10 <shachaf> By the way this is way better in base 8.
00:39:36 <ais523> meanwhile, 90 has a hardcoded first argument (ax), and non-hardcoded second argument (ax or r8), which seems a little inconsistent
00:39:58 <shachaf> The mod r/m byte for two-register exchange is encoded as 03xy where x and y are the names of the two registers.
00:40:00 <Sgeo__> I'm still trying to wrap my mind around how calls into the OS work on Windows. On Linux and DOS there are certain interrupts. On Windows... you assemble an EXE to say that it links to kernel32.dll, and have the assembly code ... jump into some location that the loader will point to the userland code in kernel32 that will do the jump?
00:40:25 <shachaf> Sgeo__: Yes, the standard ABI is based on dynamic linking.
00:40:58 <shachaf> It's kind of like the VDSO in Linux.
00:41:06 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
00:41:08 <Sgeo__> I have no idea what VDSO is
00:41:33 <ais523> the vDSO is a library that's provided by the kernel and that ld-linux automatically links against
00:41:34 <shachaf> It's a small ELF file that's loaded into your address space at startup in Linux which you can use to make system calls.
00:41:58 <shachaf> Some system calls can be implemented without switching to kernel mode so the VDSO implements them directly, or something.
00:42:23 <ais523> it contains a general system call instruction (mostly not needed nowadays now that syscall is a CPU instruction), but also implementations of functions like gettimeofday that communicate with the kernel using shared memory rather than system calls
00:43:02 <ais523> cpuid is a good example, the kernel basically just places the number of the CPU the thread is running on into a particular memory location, and the vDSO implementation reads it
00:43:23 <ais523> you need the kernel to make this sort of cpuid caching work because it's the kernel that knows when it's moved a thread to a different CPU
00:44:01 <Sgeo__> I bought the Windows Internals book, but I think it's a bit too detailed for me.
00:44:10 <shachaf> In Windows the only stable ABI is like this.
00:45:02 <ais523> a good way to put it is that on Windows, the only documented kernel ABI is to go via some libraries (lower-level than libc) that are provided with the operating system
00:45:22 <ais523> presumably they make calls into the kernel themselves via some means, but the way they do that, and the interfaces they use, are both intended to be opaque to users
00:45:42 <shachaf> It's also the only stable way. They change the library-kernel ABI all the time.
00:46:20 <ais523> well, that's the reason you make it opaque, isn't it?
00:46:24 <Sgeo__> What do calls into DLLs look like at the assembly level (assuming the assembler itself doesn't hide details)?
00:46:26 <ais523> so that you can change it without things breaking
00:47:16 <shachaf> Sgeo__: Presumably they have references to functions exported by DLLs which are resolved by the dynamic loader.
00:47:20 <ais523> on Windows, IIRC the way it works is that you write a jump instruction aimed at 0, together with a note (elsewhere in the executable) specifying what it's meant to go to
00:47:31 <ais523> and the dynamic linker will update it to the real address
00:47:47 <shachaf> Sgeo__: https://x0r19x91.github.io/2018/tiny-pe
00:48:03 <Sgeo__> shachaf, ais523, thank you
00:49:09 <shachaf> I don't know how these things work on Windows exactly but I hear it's a bit different from the standard Linux thing.
00:49:30 <shachaf> I'll probably write a program to emit PE binaries at one point.
00:50:08 <ais523> actually, shared library linking is pretty similar between Windows and Linux at the asm level, but it's pretty different at the .o/.c level
00:50:20 <shachaf> kmc: should i put a fancy 512-byte dos demo in the MZ stub in windows binaries i generate
00:50:30 <shachaf> Well, even Linux has multiple methods.
00:50:45 <ais523> like, the encoding in the executable is pretty similar, but the toolchain to get there is radically different
00:51:25 <ais523> the way things work toolchain-wise in Windows is more explicit than on Linux, it's actually a bit easier for tools like aimake to handle because there are clear dependencies between all the steps
00:51:42 <ais523> (whereas on Linux, a .so acts as its own import library, which makes, e.g., circular dependencies between .so files hard to intentionally construct)
00:51:42 <shachaf> Some Linux libraries use relocation rather than position-independent code (I think this is pretty rare nowadays).
00:52:02 <ais523> that only works with 32-bit code IIRC
00:52:02 <shachaf> I think for a long time (maybe still?) Windows DLL addresses were randomized at boot time rather than load time.
00:52:35 <shachaf> ais523: I don't understand how Windows import libraries work or why you'd want them.
00:52:51 <shachaf> Can you generate them from DLLs?
00:53:03 <ais523> you can generate them from more or less anything
00:53:21 <ais523> all you need is a list of functions to import, pretty much (maybe also some information about their calling convention, I forget if you need that)
00:53:24 <shachaf> Why would I use them rather than just using DLLs directly?
00:53:25 <Sgeo__> I tried ton generate one for a dll, failed because the tool couldn't do it for the ... calling convention in question iirc
00:53:27 <ais523> that can either be explicit or extracted from some file
00:53:48 <ais523> the import library is what you /link against/ to be able to use the DLL
00:54:00 <ais523> it isn't the DLL itself, just the code/data to link to it
00:54:10 <shachaf> I mean: If I'm writing a compiler/linker, why shouldn't I do it Linux-style rather than generating import libraries first?
00:54:15 <ais523> the interesting part, and where the value comes from, is you can generate the import library even if you don't have a workinh DLL
00:54:27 <shachaf> Does it correspond to the PLT section in an ELF file or something?
00:54:28 <ais523> so it makes the dependencies in the build process more fine-grained
00:54:40 <ais523> you can think of an import library as the "source code" for the PLT
00:54:49 <ais523> that compiles to produce it
00:55:02 <Sgeo__> You can use a DLL without an import library if you're willing to do the retrieve function calls at runtime stuff
00:55:18 <Sgeo__> I wonder if any languages make that as convenient as using a DLL with an import library
00:55:28 <ais523> perhaps a good way to think about it is that the import library is the header file for a DLL
00:55:36 <shachaf> Why can't I just use a header file?
00:55:37 <ais523> it specifies what functions it has and how to call into them
00:55:47 <ais523> shachaf: because those only generate declarations, not code
00:56:09 <ais523> it'd make a /lot/ of sense to combine implibs and header files, except that C is the wrong language for it
00:56:24 <shachaf> OK, if I'm making up a language, why shouldn't I just use something like a header file, is what I meant.
00:56:27 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=64760&oldid=64711 * Areallycoolusername * (+299) Ask User: A for ideas
00:56:36 <ais523> if you were creating a new language you would probably make a (header file + static library) or (header file + import library) combination as its own thing
00:56:52 <ais523> whereas (header file + shared library) doesn't work because you don't want to compile the shared library into your source code
00:57:07 <shachaf> I mean, if you're making up a language you should probably get rid of header files entirely for most uses.
00:57:19 <shachaf> Import libraries are the only place where you'd want things that look like headers.
00:57:24 <ais523> well, you don't want header files that are textually included, like C has
00:57:36 <ais523> but you do want some way to specify the API of code you don't have access to because it's in a library
00:57:49 <shachaf> You also don't want declarations that appear twice.
00:58:08 <shachaf> So it makes sense for externally linked things.
00:58:35 <shachaf> Anyway this all makes sense.
00:58:51 <ais523> actually, one thing that strikes me about languages is that working out the API of a file you're linking against is kind-of a major problem, that different languages solve (or fail to solve) in very different ways
00:59:09 <shachaf> You also ant to be able to cross-compile things without access to the DLLs or import libraries (I think kernel32.lib normally comes with Visual Studio or something?).
00:59:24 <ais523> e.g. in OCaml, the compiler can extract an interface from a file, and you can then compile against that, but writing the interfaces manually is also common
00:59:54 <ais523> in Java, the compiler wants access to either the source or binary you're linking against, and extracts declarations from that, but this is a pretty painful process and requires doing things like giving files specific names so that the compiler can find them
01:00:23 <ais523> shachaf: that's a good point, an ideal implib equivalent wouldn't be platform-specific
01:00:56 <ais523> although maybe it at least needs to be specific to things like target word sizes
01:01:57 <shachaf> I mean, the import library specifies an ABI, so it makes sense for it to specify platform-specific things?
01:04:51 -!- callforjudgement has joined.
01:04:57 -!- ais523 has quit (Disconnected by services).
01:05:02 -!- callforjudgement has changed nick to ais523.
01:05:22 <ais523> <ais523> hmm… if you're writing vectorised code by hand, what instruction set should you aim for?
01:05:37 <ais523> I was trying to use VPCMOV but it turns out my processor doesn't support it
01:05:38 <shachaf> The target architecture's?
01:05:48 <ais523> I mean, if you want other people to use the program
01:05:56 <ais523> presumably you aim for x86_64 as that's what most people have
01:06:11 <shachaf> Depends on how many people you want to use your thing.
01:06:12 <ais523> but what vector instructions do most people have on their processors and which ones might be less well supported?
01:06:31 <ais523> the manual I have in which VPCMOV is documented dates from 2005
01:06:50 <ais523> it's 2019 now and my processor still doesn't support it, so maybe some instructions are just omitted intentionally on some processors
01:07:26 <ais523> Intel(R) Core(TM) i3-7100U CPU @ 2.40GHz
01:07:56 <ais523> I'm guessing that AVX2 might be a good cutoff point
01:08:02 <shachaf> Are you sure it's not supported?
01:08:13 <shachaf> Intel says it supports SSE4.
01:08:16 <ais523> shachaf: I compiled a program that used it and got SIGILL when it tried to execute
01:08:21 <ais523> it's an XOP instruction I think
01:09:05 <ais523> hmm, apparently AMD changed their mind about XOP and removed it again
01:09:19 <ais523> so I have some documentation of apparently very useful instructions that ended up not being implemented
01:11:16 <shachaf> At one point I wanted AVX2 and there was no CPU available that had it.
01:11:24 <shachaf> But that was years ago and it's probably reasonable to target by now.
01:11:38 -!- xkapastel has quit (Quit: Connection closed for inactivity).
01:13:01 <ais523> VPCMOV and some of the permutation instructions seem like the most useful XOP instructions
01:13:09 <ais523> horizontal adds could be useful in some algorithms too
01:13:39 <ais523> also the vectorised shifts/rotates are XOP, which surprises me, I thought they'd have been introduced long ago
01:15:41 <esowiki> [[Renumbering]] https://esolangs.org/w/index.php?diff=64761&oldid=64756 * JonoCode9374 * (+267) /* Example programs */ Infinite Counter
01:16:16 <ais523> hmm, so apparently Intel and AMD had their own competing ways to write vectorised shifts and rotates?
01:18:46 <ais523> or, no, PSLLW and friends hvae indeed been around for ages, now I'm really confused
01:19:39 <ais523> aha, the relevant case is shifts where different components get shifted different distances, i.e. vectorising << over both args, not just the left arg
01:22:14 <ais523> so that's less useful, then
01:37:30 <Sgeo__> "By using the pointer table, the loader does not need to fixup all of the places in the code that want to use the api call, all it has to do is add the pointer to a single place in a table and its work is done. "
01:37:32 <Sgeo__> http://sandsprite.com/CodeStuff/Understanding_imports.html
01:44:54 <shachaf> Do you know why ELF files usually have the program headers at the beginning of the file and the section headers at the end?
01:45:06 <shachaf> Is it an artifact of how they're usually generated, a section at a time?
01:47:29 <shachaf> Sgeo__: Are you writing fancy code to generate PE files too?
01:48:04 <Sgeo__> No. Learning about DOS to write a driver-level emulator for a DOS VR device, and started becoming curious about Windows
01:54:04 <shachaf> Can you also figure out Mac OS while you're at it?
01:54:21 <shachaf> I think it has a similar story to Windows, except system calls are somewhat more stable.
01:56:20 <Sgeo__> I don't know anything about Mac (and I'm pretty sure Mac would have two stories. X and before X). But AmigaOS is fascinating. Multitasking without virtual memory by using relocation. I think Windows at least doesn't bother relocating the .exe being run most of the time, but Amiga has to
01:57:05 <Sgeo__> On Amiga, 0x04 is a special location containing a pointer into an "Exec" library, and offsets of that are used to find Exec functions including ones for using other libraries.
01:57:35 <Sgeo__> Also the entire kernel is run in the user ring
02:01:09 <pikhq> Classic Mac OS was kinda funky -- it didn't have multitasking until a decent bit in.
02:02:23 <Sgeo__> That reminds me, is Commodore 64 considered to have multitasking? It's... possible to run two programs at once sort of, but it's hard to be sure they'll both not occupy the same memory
02:02:34 <Sgeo__> I guess more like a TSR than real multitasking
02:10:06 <Sgeo__> pikhq, did Classic Mac OS ever need its memory defragmented? I remember reading about ... something like that, I think in a book about using Macs.
02:10:53 <Sgeo__> These days paging sort of makes that irrelevant, memory locations don't need to be physically next to each other to be virtually next to each other
02:11:10 <pikhq> After Mac OS 7, it also had virtual memory and a 32-bit address space.
02:11:22 <pikhq> (this is also when it actually shipped with multitasking)
02:18:24 <shachaf> OK, it's pretty clear now why it's generated that way.
02:22:17 <ais523> hmm, so apparently Intel and AMD implemented incompatible versions of fused multiply-add, then both changed to support the other's version and dropped their own previous version
02:22:51 <ais523> apart from that, though, they're pretty much compatible up to AVX2
02:23:45 <ais523> whereas AMD hasn't yet started supporting Intel's new AVX-512 (which is admittedly pretty ridiculous, it contains so many features it needs a 4-byte /prefix/ on every operation in addition to things like the ModRM byte and opcode)
02:26:17 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64762&oldid=64760 * A * (+194)
02:27:02 <pikhq> Isn't AVX-512 the one that's also really hard to use effectively, because just using it forces a downclock for some fraction of a second?
02:27:36 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64763&oldid=64762 * A * (-7) /* Race conditions */
02:30:40 <zzo38> Is there any pokemon battle where each player may have a computer with three pokemons that you can exchange between each battle if you do best of three, like you can with side cards in Magic: the Gathering?
02:32:06 <esowiki> [[Talk:Sidex]] M https://esolangs.org/w/index.php?diff=64764&oldid=64755 * A * (+485)
02:33:18 <esowiki> [[Sidex]] M https://esolangs.org/w/index.php?diff=64765&oldid=64752 * A * (-73)
02:44:52 <ais523> zzo38: the Battle Factory mode in Pokémon Emerald/Platinum/HeartGold/SoulSilver is sort of like that: you start by being given 6 random Pokémon and pick a team of 3 of them, then play 3v3 against computer opponents, whenever you win you can swap one of your Pokémon with one of theirs, whenever you lose you have to restart from the start
02:45:08 <ais523> it's not quite the same rules as you were describing but it's close
02:45:56 <ais523> oh, Pokémon Black 2/White 2 have Mix Battles at the PWT, which is even closer to what you said: each player brings a team of 3 Pokémon, then chooses one of their opponents Pokémon and battles with the one they chose + the 2 the opponents didn't choose
02:46:52 <ais523> if you're talking about a sideboarding equivalent, that's already used in standard tournament rules: each player brings six Pokémon, sees the opponents six, then chooses four to battle with
02:47:06 <ais523> like sideboarding in M:tG except you get to do it right from the start of the game
02:53:02 -!- FreeFull has quit.
02:55:30 -!- ais523 has quit (Ping timeout: 248 seconds).
03:21:46 <dont-panic> are there certain topics that are easier to learn or find information on if you know a language that isn't english? I guess english could be included... I'm not sure how to search for what I'm thinking of on google
03:23:29 <zzo38> Maybe it even isn't on Google. Or even if it is, may be difficult to find for other reasons, such as how the searching ranking is work, or on the wording they use difference from your wording (they try to make it work anyways, but it doesn't always work so well), etc
03:24:27 <dont-panic> zzo38: I'm thinkiing of things like Ruby used to be more popular in japan as well as trading candlesticks for various currency markets
03:26:39 -!- dont-panic has quit (Read error: Connection reset by peer).
03:31:45 -!- dont-panic has joined.
03:32:42 <dont-panic> my hotspot is so bad I can't even do a speed test and my lag on irssi goes from 0 to 200 something and back and forth... its really bad
03:33:06 <dont-panic> like, I don't know if half of my messages make it into the channel type of bad
03:36:27 <Sgeo__> dont-panic, fiction originally in non-English languages. I like a thing called the Evillious Chronicles, but the novels are in Japanese
03:36:38 <Sgeo__> (The songs are also in Japanese but most of them have good English subtitles)
03:37:49 <dont-panic> its just unfathomable the amount of infromation in even one language, and then to think we have like 7111 languages, 23 of which are the main ones... what information am I missing out on?
03:38:43 <dont-panic> luckily the ramayana and vasistha's yoga were translated among other items from sandscrit... but its just kind of mind blowing to think about what you'd be able to figure out if you knew like 7 or 8 languages fluently
03:39:43 <zzo38> There is log for this IRC, so you can check if the messages are in the channel.
03:41:04 <dont-panic> I'm using irssi and for some reason ubuntu keeps thinking I hit page up and page down 10 or so times when I hit it once... its impossible to loook up further than the monitor allows
03:44:16 <dont-panic> I've been learning russian, but now I think I might switch over to chinese since there's more chinese and english speakers than most of the other languages combined
03:45:39 <kmc> the chinese writing system is so hard though ;_;
03:48:25 <kmc> what's new
03:49:06 <zzo38> dont-panic: It logs the message if the logging bot received the message. If it was sent to the channel, then all clients on that channel will receive it.
03:51:09 <kmc> dont-panic: I worked on an OCaml related thing in uni and took advantage of the fact that my project partner knew a little French and could read docs that weren't translated to English
03:52:00 <kmc> (it involved internals of the OCaml VM so not as well documented as the user level stuff)
03:58:15 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=64766&oldid=64763 * A * (+4) /* Race conditions */
04:06:35 <dont-panic> kmc: chinese writing may look hard, but if its your first language, you wouldn't know it was... the same as those with chinese as a first language probably squirm at english... our characters and sounds are all weird to them too lol
04:07:00 <kmc> chinese has thousands of symbols you have to learn
04:07:03 <kmc> english has 26, give or take
04:07:13 <dont-panic> Russian is the same... not entirely true
04:07:30 <dont-panic> chinese has thousands of combined symbols
04:07:53 <dont-panic> i.e. hill is like ^ and mountains is 3x ^ spaced weird
04:08:29 <dont-panic> its the same as prefix's and postfixes or whatever and particles in english or other languages
04:09:23 <dont-panic> *thousands of symbols made from combining symbols
04:09:51 <dont-panic> how else would one be able to use a standard keyboard to type mandarin or kanji?
04:11:35 <shachaf> `` echo $'.globl _start\n_start:\n.byte 0xeb; .byte 00' > /tmp/test.s; as -o /tmp/test.o /tmp/test.s; objdump -d /tmp/test.o
04:11:36 <HackEso> \ /tmp/test.o: file format elf64-x86-64 \ \ \ Disassembly of section .text: \ \ 0000000000000000 <_start>: \ 0:eb 00 jmp 2 <_start+0x2>
04:11:50 <shachaf> `` echo $'.globl _start\n_start:\n.byte 0xeb; .byte 00; int3' > /tmp/test.s; as -o /tmp/test.o /tmp/test.s; objdump -d /tmp/test.o
04:11:51 <HackEso> \ /tmp/test.o: file format elf64-x86-64 \ \ \ Disassembly of section .text: \ \ 0000000000000000 <_start>: \ 0:eb 00 jmp 2 <_start+0x2> \ 2:cc int3
04:12:03 <shachaf> I guess eb 00 is also a nop.
04:16:40 <dont-panic> сказок жен, их уже такой как ты ГОГ LOL ГОГ ROFL
04:16:59 <dont-panic> ^those aren't any easier for me to understand than chinese would be lol
04:17:06 <HackEso> [U+004C LATIN CAPITAL LETTER L] [U+004F LATIN CAPITAL LETTER O] [U+004C LATIN CAPITAL LETTER L]
04:18:12 <dont-panic> in russian p's are r's and b's are v's... along with a lot of weird stuff going on. sounding it out becomes a pain when transitioning from english and remembering where keys are on the keyboard gets weird too...
04:18:37 <dont-panic> http://xahlee.info/kbd/i2/Russian_keyboard_windows_layout_78067.png
04:19:39 <dont-panic> and f's look like they belong in a schematic work book... 'ф'
04:21:27 <dont-panic> № <-- that's one of my favorite keys lol
05:18:24 <zzo38> I think that Aquinas's proof of existence of God is illogical, because the conclusion contradicts the premise. However, the suggestion of infinite regress, that would satisfy the conditions, even though, they say it is impossible. Such infinite regress, the "end" (which still goes on anyways by infinitely) can then be "God".
05:25:18 <zzo38> Do you think such thing?
05:27:08 -!- user24 has joined.
06:17:45 -!- kolontaev has joined.
06:20:57 <zzo38> I mentioned my idea of cfork() for Plan10 on here before, and then one way to implement fork() by: #define fork() (cfork()?:detach())
06:28:33 <shachaf> What is cfork? What is Plan10?
06:34:07 -!- kolontaev has quit (Quit: leaving).
06:39:24 -!- moony24 has joined.
06:39:32 <zzo38> It is just a idea I had, about a alternative of Plan9 and Unix, which is compatible with Unix but also has some differences. (If you do not define plan10main() then the linker can substitute the default implementation, which sets up some compatibility with Unix and then calls main().)
06:39:54 -!- moony24 has changed nick to moony_.
06:41:25 <moony_> zzo38, what kind of differences?
06:41:30 <zzo38> shachaf: The cfork() function will fork, but all memory and registers (including the program counter) are shared until execve(), _exit(), or detach() is called. If successful, cfork() returns 0 (to the child process; it does not return any value to the parent process). In this case, execve() returns zero if successful.
06:43:22 <moony_> zzo38, i don't see what can be done with cfork that can't be done with normal fork
06:44:42 <moony_> if, theoretically, both programs have the exact same state as you described, it'd just have the same behavior as forking at the point the programs diverge
06:44:42 <zzo38> It seem a better interface to me, and also seems like it may be able to be more efficient in some cases.
06:45:31 <zzo38> The two processes do not have the exact same state; they still have their own process ID, file descriptors, etc (although the file descriptors are initially inherited).
06:46:43 <int-e> sounds eerily similar to vfork
06:47:48 <zzo38> Yes, it is similar, but there are some differences. (For one thing, vfork() is not guaranteed to be different from fork().)
06:50:05 <zzo38> Also, it is not allowed to return from the function vfork() was called in the child process, and the behaviour may depend on what is stored in registers, and so on; with cfork the registers are shared too (including the program counter).
06:54:09 <moony_> How would that be feasibly implemented on x86_64 without just setting a flag and no-oping
06:56:38 <int-e> moony_: yeah I'd also think it sets a flag that modifies the behavior of execve.
06:56:57 <zzo38> The kernel would probably copy some stuff, select the new process, and then just continue the same program with the new process ID.
06:56:59 <int-e> and reserves a PID?
06:58:02 <int-e> moony_: or it could be like vfork except that on child termination or execve, state is copied back to the parent.
06:58:36 <int-e> (state being the registers...)
06:58:43 <zzo38> Once it is detached, then it would create a new saved register set for it, I suppose.
06:58:57 <zzo38> int-e: Yes, that could also be a way to implement it, I suppose.
06:59:21 <moony_> Well uh, two processes with the exact same deterministic behavior seems kinda useless in practice
06:59:38 <moony_> and it'd be very easy to break the illusion via, say, RDRAND
07:00:37 <int-e> or something trivial like getpid() ;-)
07:01:02 <moony_> "who am i" "you are a split personality"
07:01:45 <zzo38> You can use getpid(); if used before it is detached, it will return the child process ID, but you can store it in a variable, and then after it is detached, the value (which is the child process ID) will still be visible to the parent.
07:02:11 <moony_> could add a brand new error value to handle the CFORK state when calling certain syscalls
07:02:49 <moony_> technically syscalls should be done twice
07:02:56 <int-e> moony_: no, I don't think it's really two processes.
07:03:08 <zzo38> (The parent process won't execute until the child is detached, so getpid() will always return the child process ID. Any system calls will be executed in the child process, too.)
07:03:57 <int-e> moony_: the way zzo38 describes it, only the child runs (like vfork) and the parent is revived upon executing execve() (and sees the return code of that)
07:03:59 <moony_> you can ignore me because I am a derp
07:04:02 -!- doesntthiswork has quit (Ping timeout: 248 seconds).
07:04:47 <int-e> Or only upon *successfully* executing execve?
07:05:40 <zzo38> Only if successful, then the parent sees zero as the return value of execve(). If execve() is not successful, it returns -1 to the child, and the parent is not revived.
07:07:49 <zzo38> Hopefully that explains it?
07:09:04 <int-e> zzo38: so what does the child do if it doesn't find any executable to execute?
07:09:55 <int-e> I mean, at some point you need to give up, and pass control back to the parent anyway.
07:11:05 <zzo38> Yes; then you can just call _exit() in the child, which causes the parent to continue; or detach(), which causes both the parent and child to continue.
07:11:58 <zzo38> (Remember that fork() is the same as (cfork()?:detach()).)
07:21:49 <esowiki> [[BlobVM]] N https://esolangs.org/w/index.php?oldid=64767 * Void * (+7367) Create BlobVM
07:22:27 -!- xkapastel has joined.
07:22:52 <esowiki> [[Language list]] M https://esolangs.org/w/index.php?diff=64768&oldid=64759 * Void * (+13) Add BlobVM
07:23:14 -!- dont-panic has quit (Ping timeout: 248 seconds).
07:24:19 -!- moony_ has quit (Ping timeout: 260 seconds).
07:25:32 <esowiki> [[Special:Log/upload]] upload * Void * uploaded "[[File:Little.png]]"
07:29:03 <esowiki> [[BlobVM]] M https://esolangs.org/w/index.php?diff=64770&oldid=64767 * Void * (-1573) Add capability example
07:37:23 <esowiki> [[BlobVM]] M https://esolangs.org/w/index.php?diff=64771&oldid=64770 * Void * (+424) Add data structure overview
07:37:57 <esowiki> [[BlobVM]] M https://esolangs.org/w/index.php?diff=64772&oldid=64771 * Void * (+0) Fix list
07:40:21 <esowiki> [[BlobVM]] M https://esolangs.org/w/index.php?diff=64773&oldid=64772 * Void * (-346) /* Cooperative resource sharing between devices */
07:45:28 <user24> Can I rename an article?
07:46:14 <esowiki> [[Special:Log/move]] move * Void * moved [[BlobVM]] to [[KeyVM]]: Rename VM
07:47:33 <esowiki> [[KeyVM]] M https://esolangs.org/w/index.php?diff=64776&oldid=64774 * Void * (-3) Rename from blobVM to keyVM
07:48:39 <esowiki> [[Language list]] M https://esolangs.org/w/index.php?diff=64777&oldid=64768 * Void * (-1) Rename from blobVM to keyVM
07:54:41 <zzo38> Do you like to play solitaire Scrabble? My highest score so far is 699
08:00:27 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
08:02:19 <shachaf> My highest score so far is 700.
08:02:42 <shachaf> (But not in solitaire Scrabble. That's just my score in life.)
08:04:35 <int-e> What's the measure? sheets of sheet music?
08:05:16 -!- Lord_of_Life has joined.
08:06:37 <int-e> .......... .......... .......... .......... ..
08:06:56 <int-e> Oh maybe it's your Chinese social score.
08:09:42 <shachaf> Are you objecting to not being swatted for that pun? I'm not oerjan.
08:09:44 -!- cpressey has joined.
08:10:27 <int-e> shachaf: I'm just riding the wave.
08:10:36 <shachaf> But I think that multiplier is backwards.
08:11:03 <int-e> I was working with a a 700 score.
08:11:22 <shachaf> If my score = 700, then my = 35
08:12:02 <int-e> (Does that bring it up to 701?)
08:28:29 -!- Phantom_Hoover has joined.
08:44:56 <esowiki> [[Talk:An Odd Rewriting System]] https://esolangs.org/w/index.php?diff=64778&oldid=64723 * Chris Pressey * (+1944) I don't see "predict parity on the left" being a problem.
09:02:12 -!- ais523 has joined.
09:02:15 -!- ais523 has quit (Client Quit).
09:05:40 <cpressey> Since we have an esowiki->IRC bridge, I think the obvious next step would be to build an IRC->esowiki bridge
09:06:09 <cpressey> Hm. I said that in jest, but now I'm not so sure
09:07:49 <int-e> Well, it does sound like a terrible idea.
09:09:06 <HackEso> helsinki:Helsinki is the capital of Finland. Its main suburb is Hexham, Northumberland.
09:09:20 <HackEso> 1229) <fungot> boily: the proc is invoked. before or after the evaluator transfers control to a certain class of anime characters with long hair and loud music \ 847) <zzo38> The winter solstice is in approx. 13 hours from now <kmc> the mayans warned us <zzo38> Warned you of what? The solstice? <kmc> yes
09:22:16 -!- tswett[m] has quit (Remote host closed the connection).
09:22:20 -!- ivzem[m] has quit (Remote host closed the connection).
09:22:26 -!- wmww has quit (Remote host closed the connection).
09:22:43 -!- xylochoron[m] has quit (Read error: Connection reset by peer).
09:22:55 <shachaf> Do you know how .a files work?
09:23:05 <int-e> beyond them being ar archives, a collection of .o files? no
09:23:13 <shachaf> I thought they'd be very simple but there's no formal specification and I'm confused.
09:23:34 <int-e> (in particular I think there's some magic on top for better indexing)
09:27:17 <FireFly> Based on a very quick look at creating one with 'ar', it does look fairly simple
09:27:50 <FireFly> and perhaps unsurprisingly, not too far from tar
09:28:34 <shachaf> I'm looking at /usr/lib/x86_64-linux-gnu/libfreetype.a, hopefully without loss of generality
09:30:42 -!- wmww has joined.
09:31:25 <shachaf> OK, it's a symbol lookup table.
09:31:32 <shachaf> I was looking in the wrong place.
09:33:01 <cpressey> so if I untar an .a file will it create a file for each symbol, please say it does
09:37:22 <esowiki> [[KeyVM]] M https://esolangs.org/w/index.php?diff=64779&oldid=64776 * Void * (-9) /* Distinguishing features */
09:37:51 -!- arseniiv has joined.
09:50:44 -!- tswett[m] has joined.
09:50:44 -!- xylochoron[m] has joined.
09:50:53 -!- ivzem[m] has joined.
10:02:06 -!- xkapastel has quit (Quit: Connection closed for inactivity).
10:48:57 <shachaf> So apparently sections aren't used for running a program at all?
10:53:54 * int-e wonders where shachaf is going with all this
10:55:10 <int-e> But programs have sections too, don't they... executable bits, read-only data bits, zero-initialized read/writable bits...
10:55:40 <shachaf> They have segments which specify what's mapped into memory.
10:56:27 <shachaf> I thought the .bss section and .plt section and .rodata and so on were used for that but apparently not?
10:59:21 <shachaf> Writing a compiler, maybe. Or just understanding things?
10:59:37 <shachaf> There are more important problems in the compiler thing than this, of course.
11:02:22 <cpressey> Sections are used for computing offsets during linking, I think
11:02:44 <cpressey> Once those offsets have been computed, the running program doesn't need to care what they were
11:02:49 <cpressey> So in that sense they're not used
11:03:27 <cpressey> Actually I think I mean "segment", don't know if that's different from "section" or not
11:05:59 <shachaf> Sections are required for object files and optional for executable files, and segments are the other way around.
11:09:57 <cpressey> Mostly what I remember is that the .bss section is for uninitialized data. The linker needs to decide where in memory it will be, but doesn't need to give it any particular contents.
11:10:26 <shachaf> Yes. But apparently the ELF loader doesn't care about it at all.
11:11:24 <cpressey> The linker might merge it and other sections into a single segment, as long as there's enough space in that segment for all the variables.
11:11:36 <cpressey> I really have no idea, actually
11:11:53 <cpressey> I'm just going from fuzzy memories to plausible inferences
11:13:28 <cpressey> I imagine there are probably a dozen people in this channel who know this like the back of their hand...?
11:20:25 <arseniiv> . o O (what is more complex, ELF or PE?)
11:21:36 <shachaf> Though I looked at a PE file today, it seems OK.
11:22:10 <int-e> ELF does not contain an a.out stub that prints a useless message. :P
11:23:46 <shachaf> You can put whatever you want in there.
11:24:01 <shachaf> The first 60 bytes are up to you.
11:24:34 <shachaf> Oh, no, you need the MZ header, of course.
11:24:41 <int-e> superficially they look to be of similar complexity.
11:25:27 <int-e> (ELF may have more extensions? I don't know.)
11:26:16 <int-e> Though the extensions were mostly special sections, which technically do not increase the file format complexity... just the complexity of making sense of the contents.
11:27:02 <shachaf> I thought the .gnu.hash section was used for dynamic linking, but apparently the information is in the DYNAMIC segment which is what actually matters.
11:40:23 -!- Phantom_Hoover has quit (Quit: Leaving).
12:07:39 <esowiki> [[Tsb]] N https://esolangs.org/w/index.php?oldid=64780 * Sec-iiiso * (+5262) Created page with "'''Tsb''' is a programming language that compiles to [[Seabass]] and was made to simplify coding in it, while retaining many of Seabass's design choices. ==Basics== ===Genera..."
12:08:25 <esowiki> [[KeyVM]] M https://esolangs.org/w/index.php?diff=64781&oldid=64779 * Void * (+59) /* See also */
12:12:14 -!- user24 has quit (Quit: Leaving).
12:20:31 <esowiki> [[Tsb]] https://esolangs.org/w/index.php?diff=64782&oldid=64780 * Sec-iiiso * (+225) /* General */
12:23:36 -!- MDude has quit (Ping timeout: 272 seconds).
12:45:48 -!- FreeFull has joined.
12:54:05 <esowiki> [[Special:Log/newusers]] create * Hanzlu * New user account
12:58:14 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=64783&oldid=64693 * Hanzlu * (+142)
13:00:09 -!- user24 has joined.
13:00:25 -!- user24 has quit (Remote host closed the connection).
13:35:43 -!- MDude has joined.
13:38:24 <esowiki> [[ACL]] N https://esolangs.org/w/index.php?oldid=64784 * Hanzlu * (+2995) Created page with "ACL (Advanced Computer Language) is a language created in 2019. Its memory consists of binary cells, with the values 0 or 1. The commands in the language code are Hexadecimal..."
13:39:58 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=64785&oldid=64777 * Sec-iiiso * (+10) /* T */
13:40:36 <esowiki> [[ACL]] https://esolangs.org/w/index.php?diff=64786&oldid=64784 * Hanzlu * (+14)
13:46:40 <esowiki> [[ACL]] https://esolangs.org/w/index.php?diff=64787&oldid=64786 * Hanzlu * (+79)
13:49:22 <esowiki> [[ACL]] https://esolangs.org/w/index.php?diff=64788&oldid=64787 * Hanzlu * (+41)
14:00:45 -!- doesntthiswork has joined.
14:08:07 -!- user24 has joined.
14:08:47 -!- Melvar has quit (Ping timeout: 245 seconds).
14:17:30 <esowiki> [[ACL]] https://esolangs.org/w/index.php?diff=64789&oldid=64788 * Hanzlu * (+338)
14:22:47 -!- Melvar has joined.
14:56:57 -!- cpressey has quit (Quit: WeeChat 1.4).
15:02:22 <esowiki> [[Renumbering]] M https://esolangs.org/w/index.php?diff=64790&oldid=64761 * DoggyDogWhirl * (+127) Primer
16:02:35 -!- FreeFull has quit.
16:03:01 -!- Sgeo_ has joined.
16:05:55 -!- Sgeo__ has quit (Ping timeout: 246 seconds).
16:20:10 -!- xkapastel has joined.
16:30:00 -!- Sgeo__ has joined.
16:32:52 -!- Sgeo_ has quit (Ping timeout: 246 seconds).
17:07:58 -!- user24 has quit (Quit: Leaving).
17:09:34 -!- Reallycooluserna has joined.
17:09:59 <Reallycooluserna> Im thinking of creating a computer that uses an esolang as its native machine code.
17:10:22 <Reallycooluserna> Ive already figured out what I would need to do this, thanks to quora
17:12:09 <Reallycooluserna> If anyone has an esolang thats simple enough to be workable machine code, and elaborate enough to be used to perform useful computations, I'd appreciate it
17:12:46 -!- Reallycooluserna has quit (Remote host closed the connection).
17:16:20 -!- Phantom_Hoover has joined.
17:18:30 <esowiki> [[MISC]] https://esolangs.org/w/index.php?diff=64791&oldid=54347 * Areallycoolusername * (-9) /* Origin of the name */
17:21:22 <kmc> Reallycooluserna: I have some ideas, but you left immediately after asking your question for some reason. how do you think IRC works, exactly?
17:33:14 <HackEso> 330) <oklopol> are there boobs you wack and squeeze around to move the mouse? [...] <oklopol> like those little nipples in laptop keyboards, but they'd be full-blown boobies
17:42:26 -!- Sgeo_ has joined.
17:45:27 -!- Sgeo__ has quit (Ping timeout: 245 seconds).
18:45:31 -!- Reallycooluserna has joined.
18:47:30 <shachaf> This is what they do all the time.
18:47:40 <Reallycooluserna> I usually leave after asking a question, since I don't wan to wait on the chat until someone answers. I instead go do something else and wait, and then check the logs for some answers.
18:47:52 <shachaf> It's also what A did all the time, though the claim is that they're a different person.
18:51:33 -!- Reallycooluserna has changed nick to ARCUN.
18:56:49 <arseniiv> ARCUN: one of your previous questions was pretty mysterious :D let me look for it…
18:56:59 <arseniiv> ah, here it was: <Reallycooluserna> Can anyone give me tips as to how to make a good C++ Compiler?
18:56:59 <doesntthiswork> ARCUN: you have to leave the channel and wait for the answer or it won't work
18:57:56 <arseniiv> ARCUN: did you mean a compiler written in C++ or (what I thought of) a full-blown compiler of C++ itself?
19:00:03 <arseniiv> the latter should be a massive task, as C++ is a language wih a huge specification, even if one is to take one of its older versions
19:00:07 -!- ARCUN has quit (Ping timeout: 260 seconds).
19:01:10 <arseniiv> the former can have some specifics regarding C++, but usually writing a compiler (in a normal language) is more or less the same
19:07:28 -!- ARCUN has joined.
19:08:49 <ARCUN> I meant writing a compiler IN C++. Writing a compiler for C++ would be the end of me.
19:10:08 <ARCUN> Im asking because I need to make a compiler for a minimalistic esolang for a computer that runs that esolamg as its machine code
19:10:15 -!- ARCUN has quit (Remote host closed the connection).
19:30:25 <shachaf> My program is segfaulting in the ELF interpreter, before getting to my entry point.
19:30:35 <shachaf> I don't know how to tell gdb to break early enough.
19:37:29 -!- ARCUN has joined.
19:38:16 <kmc> shachaf: can you explicitly invoke the interpreter as a program?
19:41:14 <ARCUN> kmc: What are the ideas you said you had regarding the esoteric computer?
19:42:00 -!- lldd_ has joined.
19:44:23 <kmc> well, it would be easy to implement any simple state machine like thing such as Brainfuck
19:44:27 <kmc> in Verilog or VHDL
19:44:33 <kmc> i've done it actually, loooooong time ago
19:45:26 <ARCUN> Yeah, I was thinking of a language that used 1 byte constructions, to maximize space like brainfuck
19:45:57 <shachaf> kmc: I could, but that would go through a different code path.
19:46:05 <ARCUN> but using brainfuck in an eso-computer has already been done more than twice
19:47:51 <kmc> shachaf: yeah :(
19:48:08 <kmc> shachaf: inject an INT3 instruction at _start?
19:48:19 <shachaf> Oh, that gives me an odd error message.
19:48:22 <kmc> also, there probably is an obscure gdb option to do what you want
19:48:30 <shachaf> I think it explains what's going on so that's something.
19:48:33 <kmc> what the heck did you even do to segfault the ELF interpreter
19:48:35 <shachaf> kmc: _start where, in ld.so?
19:48:55 <kmc> may not have a symbol but I mean whatever its entry point is (which readelf will tell you)
19:48:55 <shachaf> I guess I can make a copy of ld.so for testing.
19:49:18 <shachaf> I'm generating my own ELF files so it figures they're malformed.
19:49:25 <shachaf> I also made an ELF file that segfaults gdb.
19:49:46 <kmc> good old libbfd
19:50:43 <shachaf> No, I'm writing them out myself.
19:52:02 <shachaf> It looks like ld.so isn't happy that I wasn't mapping the DYNAMIC segment into memory. Which, I mean, fair enough, I guess.
19:52:13 <kmc> it is the file format for executables and libraries used on Linux and many other systems
19:52:17 <shachaf> Or rather I wasn't specifying its address.
19:53:08 <kmc> ARCUN: at its core it is a set of records saying "load this chunk of data to this memory address, with this set of permissions (read / write / execute)"
19:53:15 <shachaf> ARCUN: In response to the other day, making a dynamically linked PE file seems a lot simpler, probably because it's required.
19:53:33 <kmc> ARCUN: but there are many complexities of course
19:53:55 -!- Sgeo__ has joined.
19:54:12 <kmc> ARCUN: if you have access to a Linux system then you can run "readelf -a /bin/ls | less" to see some of this info
19:54:24 <kmc> linkers are so complicated
19:54:25 <kmc> and also neat
19:54:34 <kmc> https://www.iecc.com/linker/
19:54:42 <ARCUN> I'm just starting to use UNIX through cygwin, so i'll look into it
19:55:11 <arseniiv> <ARCUN> I meant writing a compiler IN C++. Writing a compiler for C++ would be the end of me. => okay, thanks
19:55:47 <arseniiv> though I personally can’t advice about writing on C++, I don’t know it too well
19:56:23 <kmc> ARCUN: cygwin uses native Windows binaries, so they will be PE format, not ELF
19:56:48 <kmc> cygwin is, roughly speaking, a set of userspace libraries which implement a POSIX compatible userspace for the Windows operating system
19:56:51 <ARCUN> arseniiv: Then what languages do you know? I'm certain you know a language that I know also
19:57:01 <kmc> it's not a Linux/UNIX emulator
19:57:16 -!- Sgeo_ has quit (Ping timeout: 246 seconds).
19:57:19 <kmc> however Windows 10 also has WSL which runs unmodified Linux ELF binaries through a kernel level syscall translation layer
19:57:51 <ARCUN> kmc: Then i'll try running ubuntu in a VM
19:57:58 <kmc> ARCUN: that is a good way to go
19:59:39 -!- Lord_of_Life_ has joined.
19:59:41 <arseniiv> shachaf: I wondered about ELF vs PE because I don’t know either (except that MZ-something header thing, but it’s of course doesn’t matter)
20:00:07 <arseniiv> ARCUN: yeah I have an Ubuntu in VirtualBox
20:01:16 <arseniiv> though I boot it rarely. I definitely need to make myself more familiar with it for the future
20:01:38 -!- Lord_of_Life has quit (Ping timeout: 248 seconds).
20:02:24 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
20:04:22 <shachaf> I think I'm still confusil about how things are normally mapped into memory.
20:04:31 <arseniiv> <ARCUN> arseniiv: Then what languages do you know? I'm certain you know a language that I know also => C#, Python, Mathematica are those I written in more or less recently to not forget them too much. Though of course using Mathematica for a VM is a strange thing. OTOH C# and Python allow one to emit their bytecode (and in case of C#, it would then be JIT’ed, which is good, and in case of PyPy Python implementation it should IIRC be so too, but not s
20:04:36 <shachaf> There are typically two loaded segments, right? One rw and one rx.
20:04:59 -!- ARCUN has quit (Ping timeout: 260 seconds).
20:05:25 <shachaf> These are presumably both randomized independently.
20:06:00 <shachaf> The PLT and data and so on would be in the rw segment.
20:06:05 <shachaf> Are those at a fixed offset to each other?
20:07:12 -!- ARCUN has joined.
20:08:03 <ARCUN> arseniiv: Yeah I know C#, it was my first language
20:08:29 <ARCUN> but I use C++ a lot more than C#, so i'll have to brush up on it
20:09:44 -!- xkapastel has quit (Quit: Connection closed for inactivity).
20:10:57 <shachaf> So I guess some fixed offset is randomized and everything is loaded relative to that.
20:11:20 <shachaf> And so everything can just do IP-relative addressing to get at data, which is reasonable.
20:16:08 <arseniiv> ARCUN: then if you are not shy of parser combinators, I’d recommend writing parser/lexer for the language chosen in them, it’s good at least as a prototype thing, and some libraries are as good as to allow writing a parser robust enough to show transparent error messages to user or etc.. Also maybe a useful general advice would be to use Expression trees to get compiled methods out of them without having to use Emit class. They both had poor docume
20:16:08 <arseniiv> ntation when I looked it, but the former are clearer semantically, almost a high-level language. If you’ll use C#, that is
20:17:36 <arseniiv> there should be some parser combinator libraries for C++ too
20:18:25 <ARCUN> I'll look into that, since I'd like my language to have some extensions
20:18:41 <ARCUN> maybe a math library for starters
20:25:35 <ARCUN> The language I had in mind would be called "Xrk", and it would have logic based on Complex numbers. somewhat based on the "NaNs and Flips flops" paper from http://sigbovik.org/2019/proceedings.pdf#page102
20:28:25 <ARCUN> arseniiv: It would be minimalistic with maybe 6 or less instructions, but would still have a lot of potential. i'll do everything possible to make it not look like Brainfuck
20:30:57 <arseniiv> have you seen https://esolangs.org/wiki/7 ?
20:32:39 <arseniiv> one of my favorite esolangs is FALSE, maybe because it looks pretty writeable/readable (so, not so eso?..)
20:32:59 -!- ARCUN has quit (Ping timeout: 260 seconds).
20:33:57 <arseniiv> I like [...] from it, though I don’t know if it was borrowed from some more mainstream stack language
20:42:21 -!- ARCUN has joined.
20:43:27 -!- ARCUN has quit (Remote host closed the connection).
20:54:01 -!- lldd_ has quit (Quit: Leaving).
21:52:26 -!- Sgeo_ has joined.
21:55:41 -!- Sgeo__ has quit (Ping timeout: 258 seconds).
22:19:33 <HackEso> smlist 1172: shachaf monqy elliott mnoqy Cale
22:19:40 <shachaf> That's not the right list.
22:19:42 <HackEso> olist 1172: shachaf oerjan Sgeo FireFly boily nortti b_jonas
22:27:58 -!- Phantom__Hoover has joined.
22:30:26 -!- Phantom_Hoover has quit (Ping timeout: 248 seconds).
22:35:40 -!- b_jonas has joined.
22:35:56 <b_jonas> zzo38, ais523: in perl, y/x// also works instead of y/x/x/
22:40:11 <b_jonas> ais523: re x86_64 nop and xchg instructions, we tried to figure out how those worked at https://esolangs.org/logs/2019-02.html#lwFc
22:44:34 <b_jonas> ais523: "on Linux, a .so acts as its own import library, which makes, e.g., circular dependencies between .so files hard to intentionally construct" => is that like how if you want to make circular dependencies between modules in haskell or rust, then you need to write "headers" with declarations, which you normally don't have to do because the compiler can tell the declarations from the object file?
22:45:30 <b_jonas> whereas in C or C++, you always write header files if you have more than one compilation unit, because the compiler can't read the declarations from the object files
22:45:47 <shachaf> Whole program compilation is TG.
22:59:35 <b_jonas> oh good, there was a new olist while I was gone
23:15:39 -!- arseniiv has quit (Ping timeout: 264 seconds).
23:21:25 -!- Sgeo__ has joined.
23:24:37 -!- Sgeo_ has quit (Ping timeout: 258 seconds).
23:26:50 -!- Sgeo has joined.
23:29:14 -!- Sgeo__ has quit (Ping timeout: 272 seconds).
23:56:16 <Sgeo> Hm. Is Windows's thing of sys calls being undocumented behind a dll a thing that allows WINE to run in userspace?
23:56:32 <Sgeo> Like, a reverse WINE would need to run as admin and do some tricky stuff, right?
23:59:13 -!- doesntthiswork has quit (Ping timeout: 244 seconds).
00:00:54 <b_jonas> so basically, the United Kingdom now has to sacrifice three or four prime ministers every year in order to be able to delay the Brexit forever and have someone to blame for it
00:01:22 <b_jonas> if only they could start a Ministry of Brexit, so that they only had to sacrifice the Brexit minister, rather than the prime minister
00:16:01 <b_jonas> but maybe the political dragon specifically demands prime ministers
00:27:28 -!- Phantom__Hoover has quit (Quit: Leaving).
00:35:49 <shachaf> Sgeo: Yes, Microsoft's reverse WINE runs in the kernel and does trickery.
00:36:04 <shachaf> But I imagine you could implement it with a debugger or something.
00:37:28 <kmc> you mean WSL?
00:39:49 <b_jonas> Sgeo: nah, I think if there was a need to emulate windows syscalls by catching the actual syscall, then the linux kernel would just grow an api for user processes to do exactly that
00:40:02 <b_jonas> to catch the syscall that is, not to do the whole emulation
00:40:10 <b_jonas> how does UML work by the way?
00:44:16 <kmc> b_jonas: ptrace is already an API to catch syscalls
00:44:33 <kmc> and UML is a different architecture from x86 or whatever
00:44:42 <b_jonas> kmc: yeah, ordinary linux syscalls (all flavors of them), but I don't know if it would catch windows syscalls
00:44:51 <kmc> so I think the "syscalls" are implemented as userspace calls into the user mode linux kernel
00:45:05 <kmc> you can't run ordinary linux binaries in UML, I don't think
00:45:21 <b_jonas> so that's why it didn't work when I just tried to copy an x86 binary?
00:45:22 <kmc> `file /bin/ls
00:45:23 <HackEso> /bin/ls: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=3c233e12c466a83aa9b2094b07dbfaa5bd10eccd, stripped
00:45:34 <b_jonas> but that would make UML all but useless
00:45:41 <kmc> b_jonas: no because we have these things called compilers
00:45:43 <b_jonas> because nobody would actually compile programs for it
00:45:54 <b_jonas> I don't think it's a different architecture though
00:45:54 <kmc> most of the software people want to run on linux is open source
00:45:59 <HackEso> Linux (none) 4.9.82 #6 Sat Apr 7 13:45:01 BST 2018 x86_64 GNU/Linux
00:46:13 <kmc> well, I might be wrong, it's been forever since I played with uml
00:46:29 <kmc> maybe it does use ptrace for syscall emulation
00:46:34 <kmc> i know it uses it for some weird pagetable manipulation stuff
00:46:45 <b_jonas> maybe there's some interface other than ptrace
00:47:48 -!- FreeFull has joined.
00:52:14 <kmc> shachaf: ham radio : communication :: esoprogramming : programming
00:52:38 <kmc> https://old.reddit.com/r/amateurradio/comments/8lpk45/moon/dzhpm4k/ "the military spent some time and money on this Back In The Old Days, but they stopped doing it because it's dumb as dog shit and horrifically inefficient, which means it is absolutely irresistible for amateur radio operators."
00:52:39 <b_jonas> but maybe I'm taking metaphors too seriously
01:18:46 <shachaf> kmc: Update: Now "/lib64/ld-linux-x86-64.so.2 ./out.a" runs successfully but just running the program fails.
01:20:19 <shachaf> I previously called it "out" but that was either too confusing or not confusing enough.
01:20:59 <kmc> why not call it a.out
01:21:43 <shachaf> I guess, if I called it a.out, it would be an a.out file.
01:36:33 <shachaf> I built a debug musl loader and it's more helpful.
01:39:47 <int-e> I have plenty of ELF files called a.out.
01:40:13 <kmc> shachaf: does it also crash?
01:43:51 <shachaf> It's already crashed in several different ways.
01:44:17 <int-e> does the kernel say anything about it?
01:44:35 <shachaf> It says things like "segfault at 8"
01:45:56 <int-e> So, maybe some symbol didn't get resolved (relocated) properly :)
01:47:45 <int-e> I do wonder how hard it would be to transplant the kernel code into user spaces so it could be traced...
02:03:43 -!- doesthiswork has joined.
02:04:56 <b_jonas> int-e: you can emulate a whole virtual machine and debug the kernel that way
02:20:26 <shachaf> Oh, my PT_PHDR header was wrong, that's why.
02:21:48 <kmc> what's that one
02:25:57 <shachaf> It tells the dynamic linker where to find the segment headers.
02:27:04 <kmc> that sounds pretty important
02:36:17 -!- Sgeo has quit (Ping timeout: 258 seconds).
02:41:43 -!- b_jonas has quit (Quit: leaving).
02:41:50 -!- Sgeo has joined.
02:50:25 <shachaf> It seems kind of silly because it's the first segment itself.
02:50:36 <shachaf> Well, some segment header, maybe not the first.
04:20:10 <int-e> it tells tyhe kernel what to map into memory in the first place
04:20:11 -!- FreeFull has quit.
04:20:48 <int-e> (which /may/ explain the difference between executing the thing and asking ld.so to load it for you...)
04:21:19 <int-e> (all AFAIUI, which isn't very far.)
04:22:34 <shachaf> int-e: No, those are the LOAD segments.
04:23:09 <shachaf> Someone posted this method for 2-out-of-3 secret sharing with xor: https://github.com/wybiral/tshare/blob/master/tshare.go
04:23:22 <shachaf> I feel like there should be a simpler way than that.
04:25:28 -!- doesthiswork has quit (Ping timeout: 268 seconds).
04:27:03 <shachaf> Hmm, https://eprint.iacr.org/2008/409.pdf
04:46:57 <shachaf> What's the simplest possible 2-of-3 sharing scheme? Say for sharing 1 bit.
04:48:45 <int-e> The natural thing to my mind is interpolating a linear polynomial over GF(2^2).
04:51:26 <int-e> But it ends up being more complicated than what you get if you mask part of the messages: http://paste.debian.net/1093525/
04:52:45 <shachaf> Say the bit is b (0 or 1) and we flip a 3-sided coin to a random value r (0 or 1 or 2). We give person p the value (b + r + p) % 3
04:52:58 <shachaf> Wait, that doesn't even let you recover the message, what am I saying.
04:53:22 <shachaf> I was thinking of a different scheme and I obviously simplified it too much.
04:57:55 <int-e> Ah, of course working modulo 3 works. Distribute r, m+r, 2m+r to the parties.
04:58:32 <int-e> (m is the secret message to be shared; r is random modulo 3)
04:59:23 <shachaf> Oh, that's better than the scheme I wrote out.
04:59:40 <shachaf> (I mean, the working scheme I wrote in a text file here, not the one I wrote above which was nonsense.)
05:00:43 <int-e> this is dual to the polynomial interpolation (the message is in the linear term now, not the constant term).
05:14:30 <int-e> shachaf: http://paste.debian.net/1093526/ ... so this can be thought of as polynomial interpolation over GF(2^2) :-)
05:23:14 <int-e> Hah I'm missing a ' at the end.
05:35:16 <int-e> x comes from the representation of GF(2^2).
05:35:56 <int-e> (polynomials in x over GF(2) modulo x^2+x+1)
05:38:16 <int-e> I see what you did there. I don't approve. I should've written "near the end".
07:13:41 -!- cpressey has joined.
07:25:26 <esowiki> [[Talk:An Odd Rewriting System]] https://esolangs.org/w/index.php?diff=64792&oldid=64778 * Chris Pressey * (+361) I admit defeat
07:31:08 <cpressey> Design for a pathological language, take 3: Fix an enumeration Tn of TMs and an enumeration of sentences Sn in Presburger Arithmetic. Input is <Sn,V|I>. Check if Sn is valid (V) or invalid (I). If it matches 2nd element of pair, simulate Tn, else nop.
07:32:16 <cpressey> There's still a problem: you want the two enumerations to be "different enough" from each other, but how do you guarantee that?
07:33:28 <cpressey> Maybe every 100th n there's an instance of PresA that's easy, and a TM that's useful.
07:35:20 <cpressey> But I guess the bigger question is: if I'm so bad at math, why do I even try to do it?
07:41:25 -!- Frater_EST has joined.
07:41:34 -!- Frater_EST has left.
07:49:02 <cpressey> I'm bad at software too, because to be good at software, you need to be charismatic and live in California.
08:01:38 -!- Lord_of_Life has quit (Ping timeout: 248 seconds).
08:02:55 -!- Lord_of_Life has joined.
08:04:51 -!- rodgort has quit (Quit: Leaving).
08:10:00 -!- rodgort has joined.
08:18:36 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=64793&oldid=64783 * PCC * (+99)
08:20:36 -!- heroux has quit (Ping timeout: 272 seconds).
08:38:53 -!- b_jonas has joined.
08:39:17 <b_jonas> shachaf: for secret sharing, see David Madore's program with which he has unknowingly won the IOCCC: ftp://ftp.madore.org/pub/madore/misc/shsecret.c
08:42:41 <esowiki> [[What Mains Numbers?]] N https://esolangs.org/w/index.php?oldid=64794 * PCC * (+682) what is What Mains Numbers and how to can you program with it?
08:43:06 -!- user24 has joined.
08:46:27 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=64795&oldid=64785 * PCC * (+26) /* W */
09:21:32 -!- arseniiv has joined.
09:29:29 -!- b_jonas has quit (Quit: leaving).
09:34:32 <Taneb> Apparently, version 1.0 of the Haskell Report was published on the first of April 1990
09:34:42 <Taneb> Maybe it's been an elaborate April Fools' joke that got out of hand
09:54:38 -!- shachaf has quit (Ping timeout: 245 seconds).
10:02:40 -!- shachaf has joined.
10:36:37 -!- wob_jonas has joined.
10:37:07 <wob_jonas> Taneb: it certainly got out of hand, but I think it wasn't a joke
10:40:03 <cpressey> It was an April Fool's Serious
10:41:03 -!- heroux has joined.
10:57:02 -!- sebbu has quit (Quit: reboot).
11:19:48 -!- user24 has quit (Quit: Leaving).
11:23:54 -!- FreeFull has joined.
11:24:02 -!- oklopol has joined.
11:24:54 -!- FreeFull has quit (Client Quit).
11:25:59 <shachaf> $ ldd out.a statically linked
11:26:22 <shachaf> out.a: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/l, not stripped
11:27:34 <int-e> so what does ldd do? collect the shared objects linked in and spout that message if it comes up with nothing?
11:28:08 <shachaf> I'm not sure what ldd does.
11:28:52 -!- FreeFull has joined.
11:29:13 <shachaf> whoa, I didn't know about pldd
11:29:17 <int-e> "ldd invokes the standard dynamic linker with the LD_TRACE_LOADED_OBJECTS environment variable set to 1."
11:29:23 <wob_jonas> note that objdump is a cross-utility, it can read the executables of any platform on any platform
11:30:21 <shachaf> ...I also didn't know that ldd was a shell script.
11:30:43 <shachaf> Or that it used that mechanism.
11:30:53 <shachaf> Only platforms it knows about.
11:31:02 <wob_jonas> huh, didn't ldd use to use a more esoteric interface to communicate with the dynamic linker, where instead of an env-var, it invoked the program with argc being zero?
11:31:11 <shachaf> objdump won't tell me anything I don't already know, since I generated this ELF file myself byte by byte.
11:31:41 <shachaf> I mean, it won't tell me anything about my program.
11:31:58 <wob_jonas> well, it could tell you something if you don't fully understand how the ELF format works
11:31:59 <shachaf> The idea was to learn what wasn't compliant about it.
11:32:43 <shachaf> Man, using ld.so totally messes up my nice strace output.
11:32:51 <wob_jonas> like if you made a mistake or something
11:33:02 <shachaf> `` strace -fo tmp/OUT /bin/true
11:33:41 <HackEso> https://hack.esolangs.org/tmp/OUT
11:33:59 <shachaf> What! That's a lot nicer than I get on my system.
11:34:25 <shachaf> $ strace /bin/true |& grep 'ld\.so\.nohwcap' | wc -l
11:39:33 <shachaf> $ strace /bin/true |& wc -l
11:39:54 <shachaf> Anyway I guess I should try calling into libc and then ldd will probably call it dynamic.
11:40:16 <shachaf> But for that I'd need a bunch of things like a PLT and real relocations or something.
11:40:28 <shachaf> My "assembler" has very primitve fixups for local jumps but that's it.
11:40:56 <wob_jonas> ``` objdump -x /bin/true # x86_64 here too
11:40:56 <HackEso> \ /bin/true: file format elf64-x86-64 \ /bin/true \ architecture: i386:x86-64, flags 0x00000150: \ HAS_SYMS, DYNAMIC, D_PAGED \ start address 0x0000000000001670 \ \ Program Header: \ PHDR off 0x0000000000000040 vaddr 0x0000000000000040 paddr 0x0000000000000040 align 2**3 \ filesz 0x00000000000001f8 memsz 0x00000000000001f8 flags r-x \ INTERP off 0x0000000000000238 vaddr 0x0000000000000238 paddr 0x0000000000000238 align 2**0 \
11:42:07 <shachaf> Man, you need a hash table and GOT and probably a GNU hash table and all sorts of things.
11:43:03 <wob_jonas> shachaf: maybe they differ in /proc settings about address randomizatio or something?
11:43:04 <shachaf> Oh, running ld.so directly tells me what's wrong:
11:43:24 <shachaf> "error while loading shared libraries: [...]: ELF load command address/offset not properly aligned"
11:43:44 <shachaf> That's a very legitimate complaint, ld.so.
11:44:51 <shachaf> Oh, no, that's what it says on the *statically linked* file.
11:49:26 -!- Sgeo has quit (Read error: Connection reset by peer).
11:49:51 -!- Sgeo has joined.
11:52:48 <shachaf> Oh, what do you know, it's not properly aligned.
11:52:49 <int-e> shachaf: do you have an LD_LIBRARY_PATH set? I get strace /bin/true 2>&1 | wc -l => 73 and LD_LIBRARY_PATH= strace /bin/true 2>&1 | wc -l => 25...
11:54:50 <shachaf> I have an LD_PRELOAD, courtesy of Ubuntu.
11:55:06 <shachaf> Because Ubuntu is ridiculous in many ways.
11:55:16 <shachaf> I've probably mentioned how bad this LD_PRELOAD is before.
11:55:18 <int-e> really, what does Ubuntu deam important enough to LD_PRELOAD?
11:55:45 <cpressey> I feel left out. I'm running Ubuntu and I don't have a LD_PRELOAD.
11:55:50 <shachaf> So GTK or GNOME decided to switch to drawing decorations in the client and requesting borderless windows from the WM at one point.
11:55:51 <wob_jonas> int-e: some graphics toolkit thing
11:56:27 <shachaf> This only works particularly well if you're running GNOME. And there's no configuration to disable it. So if you don't run GNOME, they set you up with an LD_PRELOAD that forces GTK to use the old behavior.
11:56:53 <int-e> Fancy. And awkward.
11:57:09 <shachaf> This is definitely the most reasonable way to do things, rather than, say, patching the source to check an environment variable for using the old behavior.
11:57:26 <shachaf> Or patching the source in any other way. That's not Ubuntu's business.
11:57:58 <shachaf> Anyway I'm stuck with this LD_PRELOAD which constantly makes things fail in annoying ways.
11:58:29 <shachaf> For example Nix programs run with a different library path so they can't find the GTK wrapper and they print an error message whenever I run them.
12:00:56 <cpressey> This must be an Ubuntu 18.04 thing, I'm still running 16.04. What happens if you override LD_PRELOAD?
12:01:24 <cpressey> Maybe I don't actually want to know
12:01:42 <int-e> Could this be specific to Unity (and hence primarily Ubuntu)?
12:02:26 <shachaf> I don't remember whether Ubuntu uses Unity or GNOME by default?
12:02:42 <shachaf> But I think this is a GTK-wide or GNOME-wide decision.
12:02:51 <shachaf> https://wiki.gnome.org/Initiatives/CSD
12:03:32 <shachaf> cpressey: If I override LD_PRELOAD then most things work slightly better except for GTK programs which work quite a bit worse.
12:04:15 <wob_jonas> what if you use wrappers for GTK programs that restore the LD_PRELOAD?
12:04:40 <Taneb> Ubuntu uses Gnome3 by default in recent versions
12:04:50 <shachaf> But who can know what programs are GTK programs?
12:05:00 <int-e> shachaf: Ah so it's a nasty surprise still in the making.
12:05:35 <int-e> firefox, thunderbird, emacs, inkscape, gucharmap... are my main gtk apps?
12:06:37 <int-e> (Emacs has several frontends but I'm pretty sure the gtk one is what I'm using. I expect it's still gtk2 and won't be affected for a while yet.)
12:06:47 <wob_jonas> shachaf: ask the package manager what programs it would uninstall if you decided to uninstall gtk
12:07:16 <shachaf> Also GTK is a mess in many other ways.
12:07:36 <shachaf> It does theming in a particular way, but if you run something called a settings-daemon then it starts doing theming in a completely different way.
12:07:39 <Taneb> They can't even decide what the G stands for
12:07:56 <shachaf> And half of your programs work well with a high-DPI screen one way, and half the other way.
12:08:06 <int-e> Oh, gimp of course. Forgetting about that one is embarrassing. :)
12:08:40 <shachaf> I tried running a settings-daemon not long ago and it was so terrible that I stopped.
12:08:52 <shachaf> Despite it being the only way to make something work.
12:09:05 <shachaf> The year of Linux on the desktop is now.
12:09:37 <shachaf> But don't worry. As soon as I write this compiler I'll write some good GUI programs with it.
12:10:41 <shachaf> OK, there's no definite compiler planned. But I did write some UI programs using plain X11+OpenGL.
12:11:48 <shachaf> They're surely way better than some kind of GTK nonsense that prints a bunch of dbind-warnings whenever you run it.
12:13:36 <shachaf> At least it's not kbuilding any sycocas.
12:14:59 -!- ais523 has joined.
12:16:04 <ais523> <AMD64 Architecture Programmer’s Manual Volume 3:
12:16:05 <ais523> General-Purpose and System Instructions> "PEXT Parallel Extract Bits \ Copies bits from the source operand, based on a mask, and packs them into the low-order bits of the destination. Clears all bits in the destination to the left of the most-significant bit copied."
12:16:42 <ais523> did they seriously add select from INTERCAL to the x86 instruction set?
12:16:59 <ais523> although this version is 32-bit or 64-bit, rather than 16-bit or 32-bit
12:17:33 <ais523> it's part of the BMI2 instruction set, which my processor apparently supports
12:17:51 * ais523 has an urge to feature-test this during C-INTERCAL's build process and use the asm instruction if supported
12:18:07 <wob_jonas> ais523: yes. some call it sheep and goats.
12:18:24 <wob_jonas> ais523: you can use the 32-bit one to emulate the 16-bit one though
12:18:58 <wob_jonas> ais523: you can probably use a gcc intrinsic and an MSVC instrinsic, with ifdefs, rather than an inline asm
12:19:37 -!- heroux has quit (Read error: Connection reset by peer).
12:19:53 <ais523> inline asm is more fun
12:19:57 -!- heroux has joined.
12:20:25 <shachaf> Microsoft doesn't support inline assembly on x64.
12:21:47 <ais523> that doesn't really matter, C-INTERCAL has a really robust autoconf/automake setup and this is the sort of random thing autoconf is designed for
12:22:27 <shachaf> Does autoconf even work on Windows?
12:22:54 <shachaf> autoconf is awful and I hate its ./configure scripts.
12:23:19 <shachaf> Most of what it does isn't useful and hasn't been useful for decades, and it has real and significant costs.
12:23:21 <ais523> it works about as well as sh and friends do
12:23:36 <ais523> fwiw, I agree with you about autoconf solving entirely the wrong problem
12:23:48 <ais523> but for C-INTERCAL in particular this felt like an upside rather than a downside
12:23:51 <shachaf> If they cared, autoconf people could at least make the configure scripts much faster, but I don't imagine they do, or maybe there just are no autoconf people.
12:23:57 <ais523> it is not the most serious of projects
12:24:15 <shachaf> Sure, for C-INTERCAL you can get an exception.
12:24:33 <shachaf> Though I feel like autoconf isn't even the enjoyable kind of esocomplexity.
12:24:40 <shachaf> It's just nonsense complexity that makes things bad.
12:25:14 <wob_jonas> ais523: https://docs.microsoft.com/en-us/cpp/intrinsics/x64-amd64-intrinsics-list?view=vs-2019 suggests that _pext_u64 is the intel-standard intrinsic, though I'll have to check that in the intel architecture manual
12:25:40 <wob_jonas> if that's right, then that will work the same on gcc and msvc, because gcc has headers implementing all that stuff based on gcc builtins
12:25:41 <ais523> tbh I'm not sure if C-INTERCAL even compiles on Windows
12:25:48 <ais523> I got it compiling on /DOS/ once but that's different
12:25:48 <cpressey> shachaf: https://github.com/GregorR/autoconf-lean
12:26:12 <cpressey> By a person who used to hang out here frequently once
12:26:50 -!- j-bot has quit (Ping timeout: 244 seconds).
12:27:02 <wob_jonas> yeah, the intel architecture reference confirms that _pext_u32 and _pext_u64 are the functions corresponding to the PEXT instruction
12:27:21 <int-e> cpressey: He still turns up once every blue moon.
12:27:23 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=64796&oldid=64795 * Hanzlu * (+10)
12:27:34 <wob_jonas> it's probably still worth to test for this in the autoconf, but it should work
12:28:21 <int-e> cpressey: and of course umlbox is still actively used
12:28:31 <wob_jonas> the gcc headers even define these so that they emulate the same operation even if you compile to older instruction sets or non-x86 cpu
12:30:00 <ais523> ugh, is it correct to write this instruction as asm or as machine code?
12:30:16 <ais523> I guess it has to be asm so that gcc can participate in register allocation
12:31:04 <int-e> That's certainly the preferable way, if you want to shun the compiler intrinsic.
12:31:25 <shachaf> It's possible to prefer it, but not mandatory.
12:32:19 <ais523> yes, but this is INTERCAL, so I have to give at least passing thought to the idea that writing it as raw bytes would mean you didn't have to worry about what syntax the assembler used
12:32:40 <ais523> wob_jonas: what header files are those even in?
12:32:56 <ais523> tbh checking for inline asm support in autoconf is probably easier than checking for a specific header file
12:33:30 <wob_jonas> ais523: look up the header file name and the type of the function at https://docs.microsoft.com/en-us/cpp/intrinsics/x64-amd64-intrinsics-list?view=vs-2019
12:34:05 <ais523> hmm, neat, seems like both gcc and clang support it
12:34:22 <ais523> that'd clearly be the better way to do things, which gives a reason to avoid it
12:35:26 <wob_jonas> ais523: yes, this happens to most of the new x86 instructions; it's only old instructions BSF and BSR that fall through the cracks and have like three different sets of compiler intrinsics that you have to ifdef between, because neither msvc supports the gcc builtins nor backwards
12:36:04 <wob_jonas> I contributed the parts of http://software.schmorp.de/pkg/libecb.html where it can use the MSVC wrappers for BSF and BSR, which is why I know
12:36:15 <ais523> is fused multiply-add broken the same way? it's the instruction that's different between Intel and AMD due to a lack of coordination
12:36:57 <wob_jonas> you should note that even though msvc and gcc both support this, the semantics differ: on msvc, the intrinsic will just emit that instruction even if you're compiling for an older cpu,
12:37:46 <wob_jonas> for gcc it emits something that gives the same computation result as that instruction would perform, which for such new instructions won't actually call that instruction, unless you're explicitly compiling with a high -march
12:38:09 <wob_jonas> I don't know, I don't follow how the fused multiply-add and all that neural network nonsense worked, sorry
12:39:55 <ais523> wob_jonas: it's a silly history
12:40:08 <ais523> AMD and Intel came out with incompatible implementations of the same instruction
12:40:21 <esowiki> [[Special:Log/newusers]] create * RetroBug * New user account
12:40:27 <ais523> then both dropped their own version of it and implemetend the other's, so they're still incompatible but in the other direction
12:42:36 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=64797&oldid=64793 * RetroBug * (+68)
12:43:05 <shachaf> One fun fact about ELF is that the ELF 64 standard says hash table entries are 64 bits, but most implementations use 32 bits.
12:43:22 <shachaf> I think that means the standard is wrong rather than the implementations.
12:47:38 <ais523> hmm, I suspect this inline asm version may actually be substantially faster than what was there before; performance improvements are great!
12:47:42 <ais523> now, I wonder how best to do mingles
12:48:09 <ais523> AVX and friends have mingle instructions, but sadly they only mingle at the byte level
12:51:11 <wob_jonas> ais523: that's what the opposite instruction PDEP is for. if you have PEXT, you also have PDEP.
12:51:40 <ais523> shachaf: alternates bits in two operands to form a combined operand of twice the width
12:51:48 <ais523> wob_jonas: right, two PDEPs and an OR would do it
12:53:19 <wob_jonas> ais523: but intercal code often uses mingle followed by an intercal bitwise followed by selecting the odd or even bits, which you can optimize to just a bitwise op
12:54:03 <ais523> yes, C-INTERCAL does that optimisation already
12:54:47 <wob_jonas> I mentioned at some point that I think intercal code could use that redundant representation of integers that's base 2 but digits go from -2 to 1, because you can do arithmetic on that representation with the intercal ops faster
12:55:33 <ais523> yes but it's way harder to store in memory
12:56:25 <shachaf> I feel like there are very limited uses for inline assembly nowadays.
12:56:33 <shachaf> Almost everything is covered by either top-level assembly or intrinsics.
12:56:53 <shachaf> So Microsoft's decision is perhaps reasonable.
12:57:03 <shachaf> What are uses for inline assembly?
12:58:13 <ais523> shachaf: out-optimising the compiler is one thing
12:58:25 <izabera> accessing some specific instructions
12:58:49 <wob_jonas> ais523: no it's not. you just store it as two integers, and they represent their difference
12:58:59 <izabera> like rdrand or rdtsc or...
12:59:00 <ais523> this morning, I was curious about the following problem: suppose you have a function that generates a sequence of ints and can't be parallelised
12:59:14 <wob_jonas> I'll have to clear this up at some point, but now I don't know how they work
12:59:15 <ais523> what's the fastest way to store the generated ints into memory, assuming that there are too many to fit into the L2 cache?
12:59:44 <shachaf> But at what point do you need to out-optimize the compiler within a function?
13:00:20 <shachaf> I think in most such cases you end up wanting to write the whole function in assembly.
13:00:20 <ais523> gcc's and clang's approaches were utterly different, but very comparaible in speed; I tried a few other things on my own, and eventually found one that was slightly but consistently faster
13:00:26 <shachaf> Specific instructions sounds like what intrinsics are for.
13:00:51 <lambdabot> Local time for shachaf is Tue Jul 30 06:00:49 2019
13:01:05 <ais523> shachaf: well, in my case, the loop was still written in C
13:03:16 <ais523> funnily enough, I decided to use a repeated rotate-left as a standin for the "function that generates a sequence of ints and can't be parallelised" (yes, I know you can parallelise that in practice)
13:03:46 <ais523> and the compiler didn't recognise it, so I ended up writing the "add %0, %0\n\tadc $0, %0" manually
13:08:05 -!- sebbu has joined.
13:08:45 <ais523> actually my experience is that even modern compilers are fairly bad at micro-optimisation, they're just good at knowing about more long-range optimisations that humans don't often think of
13:10:00 <esowiki> [[ACL]] https://esolangs.org/w/index.php?diff=64798&oldid=64789 * Hanzlu * (+204)
13:12:00 <esowiki> [[ACL]] https://esolangs.org/w/index.php?diff=64799&oldid=64798 * Hanzlu * (-2)
13:15:55 <esowiki> [[What Mains Numbers?]] M https://esolangs.org/w/index.php?diff=64800&oldid=64794 * A * (+166) 2019 esolang
13:17:26 <esowiki> [[What Mains Numbers?]] M https://esolangs.org/w/index.php?diff=64801&oldid=64800 * A * (+18) No
13:20:47 <ais523> OK, C-INTERCAL repo updated with the use of inline asm for PEXT
13:22:27 <ais523> our exiting mingle is fairly optimised as it is
13:23:26 <esowiki> [[What Mains Numbers?]] M https://esolangs.org/w/index.php?diff=64802&oldid=64801 * A * (+159)
13:23:29 <ais523> that said, it's still a /lot/ of instructions
13:24:28 <ais523> hmm, I wonder how you ask gcc to pick an arbitrary temporary for you
13:24:37 <wob_jonas> ais523: you know that Warren's "Hacker Delight" talks about the mingling (shuffling) and selecting, right? I don't recall what it says, but it definitely talks about them.
13:24:42 <esowiki> [[What Mains Numbers?]] M https://esolangs.org/w/index.php?diff=64803&oldid=64802 * A * (-22)
13:24:43 <ais523> maybe just say "register int temp;" and assign to it without reading it
13:25:16 <wob_jonas> ais523: I don't think you even need "register" if it's arbitrary
13:25:29 <ais523> oh, duh, you just do it one instruction at a time
13:25:55 <ais523> wob_jonas: well, it has to actually /be/ a register, although gcc's =r hint is sufficient to teach it about that
13:26:14 -!- j-bot has joined.
13:26:43 <wob_jonas> as in, fourth argument or something
13:26:45 <ais523> clobbers have to be fixed in the source code, though
13:26:59 <esowiki> [[What Mains Numbers?]] https://esolangs.org/w/index.php?diff=64804&oldid=64803 * A * (+133)
13:27:03 <ais523> I think the correct thing to do is to just make the temporary visible to gcc explicitly so that it can do SSA and friends on it
13:27:06 <ais523> and spills, and the like
13:28:36 <esowiki> [[What Mains Numbers?]] M https://esolangs.org/w/index.php?diff=64805&oldid=64804 * A * (-3)
13:30:31 <esowiki> [[What Mains Numbers?]] M https://esolangs.org/w/index.php?diff=64806&oldid=64805 * A * (+19)
13:30:32 <oklopol> ais: about compilers being bad about micro-optimization, https://m.youtube.com/watch?v=bSkpMdDe4g4
13:31:49 <oklopol> I found some of those impressive, sums compressed to formulas, multiplication turned differently into combinations of bit shifts etc.
13:32:07 <oklopol> (probably very basic stuff, I'm no expert)
13:32:08 -!- wob_jonas has quit (Ping timeout: 245 seconds).
13:33:54 -!- wob_jonas has joined.
13:34:38 <esowiki> [[What Mains Numbers?]] https://esolangs.org/w/index.php?diff=64807&oldid=64806 * A * (+22)
13:35:47 <cpressey> ais523: you should mark it "volatile volatile"
13:37:20 <ais523> oklopol: AMD's optimisation guide has a list of constants for which it's worth using alternative code to multiply by them
13:37:36 <ais523> the smallest nonnegative integer for which IMUL is the fastest way to multiply by that integer is 22
13:37:44 <ais523> for every smaller integer, there's some trick
13:37:58 <ais523> (disappointingly, they didn't even bother to list the tricks for multiplying by 0 or 1)
13:38:27 <oklopol> ais: yes that sort of stuff, optimizing mul by constant to shifts, and also vice versa if you try to be clever :P
13:39:00 <oklopol> And differently based on what you're compiling for
13:41:05 <ais523> optimising to shifts is boring, the /real/ trick on x86 is to use the AGU to do multiplications by unexpected numbers
13:41:47 <ais523> e.g. for multiply by 9, AMD suggests "lea reg1, [reg1 + reg1 * 8]"
13:41:48 <oklopol> This is also shown on the vid iiuc
13:42:04 <oklopol> Yes that's automatically done by optimizers
13:42:05 <ais523> btw, LEA is still a total hack :-)
13:42:20 <ais523> I'd expect any compiler developer who cares about optimization to have read this document already
13:42:22 <esowiki> [[What Mains Numbers?]] M https://esolangs.org/w/index.php?diff=64808&oldid=64807 * A * (+228)
13:43:56 <esowiki> [[What Mains Numbers?]] https://esolangs.org/w/index.php?diff=64809&oldid=64808 * A * (-34) An infinite loop in a language that only provides finite loops!
13:44:52 -!- wob_jonas has quit (Ping timeout: 272 seconds).
13:46:26 <esowiki> [[What Mains Numbers?]] M https://esolangs.org/w/index.php?diff=64810&oldid=64809 * A * (+43) /* Infinite loop */
13:50:12 <esowiki> [[What Mains Numbers?]] https://esolangs.org/w/index.php?diff=64811&oldid=64810 * A * (+61)
13:51:40 <ais523> OK, mingles are now also hardware-accelerated
13:54:08 <esowiki> [[What Mains Numbers?]] https://esolangs.org/w/index.php?diff=64812&oldid=64811 * A * (-27) /* What Mains Numbers? */
13:55:47 <esowiki> [[What Mains Numbers?]] https://esolangs.org/w/index.php?diff=64813&oldid=64812 * Ais523 * (+124) Mixed undo revisions 64809, 64810 by [[Special:Contributions/A|A]] ([[User talk:A|talk]]): not an infinite loop, it just allocates so much memory that it'll probably thrash nearly-indefinitely
13:56:05 <ais523> A should stop jumping to assumptions :-(
13:56:39 <ais523> btw, I had a great idea about how pointers should work
13:57:04 <ais523> instead of pointing to the start or end of an object, they should point to the middle (this means adding an extra bit so you can point into the middle of a byte)
13:57:33 <ais523> this assumes that all your allocations are power-of-2-sized and aligned, otherwise there's no real gaini
13:57:48 -!- wob_jonas has joined.
13:58:06 <wob_jonas> exactly in the middle of objects? hmm
13:58:17 <ais523> but if you have that, then the middle-pointer uniquely specifies both the memory you're accessing and the width of it, which should make things like hardware bounds checking efficiently possible
13:58:55 <Taneb> How does it store the width?
13:59:07 <ais523> on x86_64 you could make up for the extra bit at the end by dropping bit 62, it's never going to get used anyway
13:59:13 <ais523> Taneb: count the number of trailing zeroes
13:59:39 <ais523> objects are power-of-2-sized and aligned, thus the middle is aligned with respect to half the object's size but misaligned with respect to the object's full size
14:00:11 <ais523> thus, you can use the alignment to determine the size, without ever having a pointer that's randomly more aligned than it should be
14:00:43 <wob_jonas> that won't give exact bounds checks though, only bounds checks rounded up to a power of two or something close
14:00:57 <ais523> well, you only allocate objects in power-of-2 sizes
14:01:05 <ais523> (there are good reasons for a malloc to do that anyway)
14:01:14 <ais523> the main issue is structs, I think
14:01:44 <wob_jonas> you can also do a fibonacci version of this alignment scheme, just to screw with people
14:01:57 <int-e> Or you can add 3*2^k into the mix for fun.
14:02:06 <ais523> the algorithm of "just allocate in the first available aligned address of the appropriate size" is great, when you use power-of-two sizes only it actually works
14:02:12 <int-e> (That seems easier than fibonacci.)
14:02:24 <int-e> (Also Fibonacci seems awful for alignment.)
14:02:25 <wob_jonas> allocate only objects of fibonacci size, at addresses whose address in zeckendorf end with as many zeroes
14:02:34 <ais523> yes, the fibonacci version is definitely in the screwing-with-people realm
14:02:47 <wob_jonas> int-e: only on current cpus, which use 64-byte 64-aligned cache lines
14:03:10 <ais523> I have a suspicion that 64-byte will be the correct size for a cache line for the foreseeable future
14:03:17 <int-e> When will we move to 128? Also, RAM rows enter the picture as well at some point.
14:03:59 <ais523> just like my tests indicate that 16 bytes is the correct size for a bulk write to memory (if you're getting the data as individual ints rather than a bulk read)
14:04:33 <ais523> int-e: cache lines are weird, ideally you'd want them to be /smaller/, the only reason to have them that large is to reduce the amount of bookkeeping you have to do
14:05:02 <ais523> a larger cache line would mean that you had so many of the things that you could afford to often waste data space in the L1 cache, but were very tight on bookkeeping cache
14:05:10 <ais523> which seems implausible with modern processor designs
14:05:39 <ais523> I guess maybe L2 would benefit from longer cache lines?
14:05:40 <wob_jonas> int-e: in a hypothetical cpu that has 55 and 89 byte cache lines, aligned to fibonacci round addresses
14:05:46 <ais523> but there are obvious reasons to want them the same size as L1
14:05:54 -!- oklopol has quit (Ping timeout: 258 seconds).
14:05:56 <int-e> wob_jonas: I'm not going there.
14:07:36 <ais523> I wonder what the performance of a malloc that, for large objects, just maps a ridiculous amount of memory as MAP_NORESERVE and relies on the kernel to do the actual allocations when page faults happen
14:08:09 <ais523> (the page faults were going to happen anyway, so there seems to be no particular reason to do anything at other times)
14:08:44 <ais523> the huge advantage of this is that realloc becomes a nop, which helps make your write loops tighter
14:09:06 <wob_jonas> ais523: yeah, but that doesn't work too well when you allocate a lot of small objects, which is a common case
14:09:14 <wob_jonas> also you don't have infinite address space
14:09:18 <ais523> you need a different algorithm for small objects, yes
14:09:25 <ais523> so that they don't need a separate page
14:09:32 <ais523> but you do pretty much have infinite address space
14:09:58 <ais523> you can allocate 4 GiB for every object and still have 32 bits left
14:10:08 <wob_jonas> the kernel has to do bookkeeping for what you allocate
14:10:22 <wob_jonas> no, you don't have 64 bits of virtual address space
14:10:35 <ais523> it's, what, 48 bits on modern processors?
14:10:42 <wob_jonas> that's just what the architecture allows us to expand the address space without breaking binary compatibility
14:11:10 <ais523> because half the virtual address space is reserved for kernel-internal use
14:11:22 <wob_jonas> (and that too only if people don't start using high bits for tag bits when they have perfectly usable low bits instead, like they did in the 32-bit era and ended up with a prolog interpreter that couldn't use more than 256 megabytes of memory)
14:11:46 <ais523> even so, that's still 32767 self-reallocing objects, there are plenty of programs that are unlikely to use anywhere near that many
14:12:10 <ais523> wob_jonas: they can't, x86_64 actually intentionally crashes if it sees a high bit used as a tag bit
14:12:13 <wob_jonas> I don't know how many bits we have now, they keep changing that every decade or so, I'm not following
14:12:39 <wob_jonas> if you explicitly mask it off before using it as an address, it will work
14:12:58 <ais523> right, because the processor can't see how the value was derived
14:13:11 <wob_jonas> but low bits is still easier, because if you know all the low bits, you can usually remove them by just using the right offset
14:13:35 <wob_jonas> most people do get this right though, so it's not much of a worry
14:13:54 <wob_jonas> that one prolog interpreter was more just an unfortunate exception
14:14:03 <ais523> anyway, one thing that's really annoying is that malloc() is not async-signal-safe
14:14:20 <ais523> the first-power-of-2 technique can be implemented lock-free, I think
14:14:37 <ais523> in which case it probably should be, so that people can allocate memory in their signal handlers without deadlocks
14:15:14 <wob_jonas> yeah, you're right, 48 bits of virtual address space now, I think
14:17:12 <wob_jonas> ais523: really? do you mean even without a small performance penalty for the common case of sane programs that don't try to alloacte from a signal handler?
14:17:50 <wob_jonas> if you really want to allocate from a signal handler, then use a custom more expensive allocator for those parts of the code that may run from a signal handler
14:18:06 <ais523> wob_jonas: well you need to use a lock or atomic /somewhere/
14:18:29 <wob_jonas> but I think it's usually better to just not do anything fancy from a signal handler
14:18:29 <ais523> I think there's debate about which is faster in the common, non-contended case, but I'm guessing they're much the same
14:18:58 <ais523> and when there's no contention the algorithm runs quickly (unless there's /so much/ contention that the processor starts predicting the branch as taken, which is likely to be the least of your issues)
14:20:41 -!- ARCUN has joined.
14:21:35 <ARCUN> Anyone know any good FPGAs? I need one for my esoteric computer.
14:22:50 <ais523> in my experience, FPGA toolchains are really terrible
14:23:15 <ais523> as for the FPGAs themselves, for the majority of tasks, either most FPGAs will be good enough or affordable FPGAs won't b e good enough
14:23:17 -!- ARCUN has quit (Remote host closed the connection).
14:23:27 <ais523> so the main difficulty is finding a way to wire them up to your computer
14:24:18 <wob_jonas> why? don't those FPGAs have IO devices built in?
14:25:24 -!- ARCUN has joined.
14:25:58 <cpressey> They're field programmable, you see.
14:26:24 <cpressey> If you happen to be in a forest, tough luck.
14:26:30 <ARCUN> I was thinking of using an Altera cyclone ii mini to use, but I heard that the Spartan series is good too
14:28:47 <ARCUN> One of the main problems is, how would I get it to display items on the screen? VHDL really doesn't make this any easier, as it's not be most consice of languages
14:29:52 -!- ARCUN has quit (Remote host closed the connection).
14:31:52 <cpressey> https://github.com/stacksmith/fpgasm
14:32:26 <ais523> hmm, so in a quick test, Linux was quite happy to allocate me 16 GiB of address space in one large mapping
14:32:58 <ais523> even though I don't have that much memory in physical or swap space or both combined
14:33:12 <wob_jonas> well sure, many computers these days have 16 GB physical memory
14:33:28 <ais523> and I could read/write random addresses in it without any obvious performance issues
14:34:36 <wob_jonas> but won't the kernel still need to keep about 1/1000 the size of that virtual memory for administration?
14:34:42 <ais523> this leads me to suspect that the most efficient way to deal with memory, if you don't care about getting segfaults for wild accesses, is to only ask the kernel for memory once in the lifetime of the program, and use writes to memory to allocate it and madvise to free it
14:34:58 <ais523> wob_jonas: page caches have multiple levels nowadays
14:35:02 <wob_jonas> unless you use large pages that is, but large pages would defeat the problem
14:35:15 <wob_jonas> ais523: sure, but ... I don't know how that works in the kernel
14:35:30 <ais523> also I don't see how the same problem doesn't happen even if you allocate a bit at a time and use brk and mmap and whatever to request more as you need it
14:35:41 <ais523> err, "a small amount at a time", not a literal bit :-)
14:36:19 <wob_jonas> sorry, I was trying to argue against the method you mentioned above, of allocating 4G for every large object
14:36:25 <ais523> does MADV_REMOVE work with anonymous mappings, I wonder?
14:38:36 <ais523> hmm, I wonder if any memset implementations use madvise to zero memory? I'm guessing not, it'd be insane
14:38:45 <ais523> but memset is the sort of function where insane optimisations can make sense
14:39:10 <ais523> (the idea would be to swap out the page backing the memory you're trying to zero for a freshly zeroed page)
14:39:30 <ais523> I don't know whether Linux has a background memory zeroing daemon (or equivalent); I know Windows does
14:39:37 <wob_jonas> I don't think it would help much, in the long run, as long as you're using memset for memory you want to use later, because the kernel has to zero the page eventually
14:40:06 <ais523> Windows has a supply of pre-zeroed physical memory pages that it hands out to applications, and zeroes pages in the background after they're unmapped
14:40:37 <wob_jonas> yeah. I think linux has something like that too
14:42:18 <ais523> it doesn't run constantly, only when the number of zeroed pages is low
14:42:27 <ais523> if it gets very low the kernel foregrounds the page-zeroing task so that it never runs out
14:44:37 -!- ais523 has quit (Remote host closed the connection).
14:44:50 -!- ais523 has joined.
14:49:27 <cpressey> Should I learn LLVM assembly or should I not bother
14:50:49 -!- oklopol has joined.
14:51:16 -!- wob_jonas has quit (Ping timeout: 246 seconds).
14:51:36 <Taneb> cpressey: that's up to you
14:53:00 <ais523> I'd say, only if you want to use it for something
14:53:14 <ais523> or if you're interested in SSA-based languages in general
14:53:33 <ais523> it's really a multiple-level language, though, it can express a lot of different levels of abstraction and is designed to compile into lower abstraction levels of itself
14:53:41 <ais523> (this is a common property for compiler intermediate representations)
14:53:50 <ais523> so really, "learning LLVM" is about learning a specific subset of it
14:55:08 <ais523> whatever you need for whatever it is you're doing
14:55:49 <cpressey> I have two compiler projects that became dead ends because I tried to generate C and it just got frustrating and boring and I abandoned them.
14:56:40 <ais523> I think generating C is generally easier than generating LLVM, also less platform-specific
14:56:49 <esowiki> [[ACL]] https://esolangs.org/w/index.php?diff=64814&oldid=64799 * Hanzlu * (+1117)
14:56:55 <ais523> (LLVM is slightly platform-specific, enough so that you can't really generate "portable LLVM")
14:57:15 <ais523> perhaps WebAssembly would be an interesting target to use instead, that's fairly regular as ASMs go
14:57:40 <cpressey> I'll just leave them as dead ends
14:57:55 -!- cpressey has quit (Quit: WeeChat 1.4).
15:02:17 -!- ais523 has quit (Quit: quit).
15:16:06 -!- doesthiswork has joined.
15:20:30 -!- wob_jonas has joined.
15:21:23 <wob_jonas> I was in London for the weekend. It seems that the stores sell milk in both one liter size and a size slightly larger than one liter, the latter is apparently somewhat round in some non-metric measurement unit.
15:22:21 <wob_jonas> Also they sell half liter and two liter bottles. I still find that strange. Half liter milk bags used to exist here, but only a very long time ago, and I've only ever seen ones larger than one liter abroad.
15:28:15 <Taneb> I sometimes buy the half-litre bottles if I'm thirsty when I'm out and about
15:38:26 -!- lldd_ has joined.
15:42:15 <kmc> drinking milk as a beverage is weird to me
15:43:28 <Taneb> It's weird to a lot of people
15:43:44 <wob_jonas> kmc: is that because you live in a place where you can't easily buy fresh milk, only
15:44:20 <wob_jonas> UHT milk? because fresh milk tastes much better, but I know it's not available everywhere
15:44:41 <Taneb> But like, it's cheaper and healthier (here at least) than soft drinks
15:46:17 <Taneb> ...now I'm thirsty
15:48:10 -!- FreeFull has quit.
15:51:10 -!- wob_jonas has quit (Remote host closed the connection).
16:12:38 <kmc> UHT milk isn't common in the USA
16:12:53 <kmc> we mostly have regular pasteurized milk
16:12:57 <kmc> which needs to be refridgerated
16:13:22 <kmc> I bought some lemonade the other day, didn't notice it was unpasteurized... within less than a week the bottle had puffed up to almost a round cylinder
16:13:39 <kmc> I started unscrewing it in the sink and the cap came off with a bang
16:17:42 <kmc> probably the "slightly larger than one liter" was 2 imperial pints?
16:18:00 <kmc> it's great how the UK's non-metric unit isn't even the same as the US's non-metric unit of the same name
16:18:18 <kmc> 2 imperial pints is a bit more than 1L but 2 US pints is a bit less than 1L
16:18:32 -!- xkapastel has joined.
16:20:11 <Taneb> Someone once taught me a rhyme, "A litre of water is a pint and three quarter"
16:20:44 <Taneb> I didn't realise the US pint was different
16:21:08 <kmc> that rhyme doesn't even rhyme very well
16:21:22 <kmc> a litre of wuarter
16:21:26 <Taneb> It rhymes almost perfectly to me
16:21:43 <Taneb> You must talk weirdly
16:21:52 <Taneb> (or, like, have a rhotic accent)
16:25:55 -!- Sgeo_ has joined.
16:29:13 -!- Sgeo has quit (Ping timeout: 245 seconds).
17:06:36 <adu> I live in the US and I have no idea what a pint is
17:13:01 -!- b_jonas has joined.
17:33:48 <b_jonas> I didn't much pay attention right there, and I don't have the bottles or photos of them anymore
17:37:20 <b_jonas> still no IOCCC source codes
18:16:12 <b_jonas> so the Giant says that the end of the sixth OotS book is in sight. and there will only be seven books. we must be two thirds ratio into the story by now.
18:16:38 <b_jonas> I presume the last book will be the thickest, because that's how these series usually go, but still.
18:18:58 <esowiki> [[ACL]] https://esolangs.org/w/index.php?diff=64815&oldid=64814 * Hanzlu * (-178)
18:21:17 <b_jonas> can you imagine living in a time when everyone knows OotS as an epic that is already complete, and we tell children about how we had to wait ten days (uphill both ways) for the next strip to appear, over and over again for each strip?
18:25:00 <b_jonas> although I guess we can already tell them about when Harry Potter wasn't yet complete
18:27:51 -!- ARCUN has joined.
18:28:47 <ARCUN> Ubuntu came out with the 19.04 version
18:28:58 <ARCUN> I almost installed 18.04
18:29:10 -!- ARCUN has left.
18:30:09 <b_jonas> and #esoteric is logged way back so we can even prove it
18:58:49 -!- lldd_ has quit (Quit: Leaving).
19:09:28 <arseniiv> <b_jonas> although I guess we can already tell them about when Harry Potter wasn't yet complete => was it too published strip by strip?
19:15:13 <b_jonas> arseniiv: no, but we had to wait for the last three books
19:31:45 <arseniiv> it would be quite interesting if Harry was originally a comic series
19:34:15 <b_jonas> dunno. that would make the books more expensive, I think, so it would get to fewer people
19:35:10 <b_jonas> the way they are, with books, I can have the complete story in seven books. in comics, I could only have slices.
19:36:25 <arseniiv> hm, there are some prose/comic hybrids out there, maybe it’s a good format
19:37:02 <b_jonas> I have Matilda by Roald Dahl on my bookshelf, but that one is short
19:37:51 <arseniiv> oh, I didn’t know that’s illustrated originally (I only have seen a film)
19:38:10 <b_jonas> I also have some of the Kästner books
19:38:32 <arseniiv> also, is it translated, I mean Matilda?
19:38:52 <b_jonas> there is a translation, and I've read it, but in this case, I have the original English version of Matilda on my shelf
19:39:01 <b_jonas> the Kästner books I only have in translation
19:39:32 <b_jonas> Matilda is one of the books I've met when I was very young, but only got the original more recently
19:41:07 <arseniiv> BTW I don’t like very much how it ends, “and she didn’t need to use her telekinesis almost ever”, is it a tad boring
19:41:27 <b_jonas> no no, it ends by Matilda _losing_ her telekinesis
19:41:36 <b_jonas> there's some speculation too on why
19:41:40 <b_jonas> but that's not even the important point
19:42:13 <b_jonas> the more important is that it ends by Matilda living happily ever after with her teacher Ms Honey in the house that she inherited, instead of with the parents who don't care much about her
19:42:46 <arseniiv> I understand what is it she didn’t have is a loving family, yeah, I agree it’s greater, but still
19:44:42 <arseniiv> it’s like there can only be one thing more important that all the others, and it doesn’t ring too true, even when I was a kid and saw the movie version the first time
19:45:51 <arseniiv> and I can also say if Matilda is okay with no superpowers, then so am I :D
19:46:18 <b_jonas> why wouldn't she be okay? she didn't ask for them anyway, and she was never dependent on them
19:50:41 <quintopia> @tell ais523 this new smb3 tas is even super cooler than last time thx
19:57:24 -!- xkapastel has quit (Quit: Connection closed for inactivity).
20:03:13 -!- Lord_of_Life_ has joined.
20:03:36 -!- Lord_of_Life has quit (Ping timeout: 272 seconds).
20:05:56 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
21:51:46 -!- xkapastel has joined.
21:57:39 <HackEso> An union is the opposite of an ion.
21:57:43 <HackEso> 1288) <ais523> (btw, "q = 1-p" should be the standard definition of q, IMO)
22:51:47 -!- b_jonas has quit (Quit: leaving).
23:09:38 -!- MDude has quit (Ping timeout: 245 seconds).
23:24:24 <esowiki> [[ACL]] https://esolangs.org/w/index.php?diff=64816&oldid=64815 * Hanzlu * (+439)
23:30:52 <esowiki> [[ACL]] https://esolangs.org/w/index.php?diff=64817&oldid=64816 * Hanzlu * (+479)
23:31:01 -!- MDude has joined.
23:33:56 <esowiki> [[ACL]] https://esolangs.org/w/index.php?diff=64818&oldid=64817 * Hanzlu * (+32)
23:53:55 <esowiki> [[ACL]] https://esolangs.org/w/index.php?diff=64819&oldid=64818 * Hanzlu * (+118)
00:00:46 -!- sparr has quit (Changing host).
00:00:46 -!- sparr has joined.
00:01:43 <esowiki> [[ACL]] https://esolangs.org/w/index.php?diff=64820&oldid=64819 * Hanzlu * (+145)
00:10:34 -!- arseniiv has quit (Ping timeout: 246 seconds).
00:15:58 <esowiki> [[ACL]] https://esolangs.org/w/index.php?diff=64821&oldid=64820 * Hanzlu * (+143)
00:27:24 -!- xkapastel has quit (Quit: Connection closed for inactivity).
00:45:49 -!- xkapastel has joined.
01:11:27 -!- FreeFull has joined.
02:03:55 <tswett[m]> Awrighty, I think I've decided how I want to implement Forth for my weird PC project.
02:04:03 <tswett[m]> Uh, I've decided *some* of it, anyway.
02:04:14 <tswett[m]> Here's what my keyboard handler looks like currently...
02:04:20 <tswett[m]> 29 DB B8 10 01 8E D8 B8 00 B8 8E C0 29 C0 E4 60 D7 B4 07 AB B0 20 E6 20 CF
02:05:04 <tswett[m]> sub bx, bx; mov ax, 0110; mov ds, ax; mov ax, b800; mov es, ax; sub ax, ax; in al, 60; xlat; mov ah, 07; stosw; mov al, 20; out 20, al; iret
02:05:19 <tswett[m]> The new keyboard handler is going to be:
02:05:20 -!- adu_ has joined.
02:05:26 <tswett[m]> b800 set-es 60 input-byte 500 xlat 700 or 404 load store-es 404 load inc inc 404 store 20 20 output-byte iret
02:05:30 <tswett[m]> Which is obviously so much more readable.
02:05:43 -!- adu has quit (Ping timeout: 246 seconds).
02:05:43 -!- adu_ has changed nick to adu.
02:06:07 <tswett[m]> And which compiles to 107 bytes instead of the 25 bytes of the original. :D
02:06:38 <tswett[m]> Now I just merely have to write the compiler.
02:11:11 <kmc> how do you know it's 107 bytes if you haven't written the compiler yet?
02:11:50 <tswett[m]> Well, the compiler is just going to take each of those words, look up the corresponding piece of assembly code, and write that assembly code into the compiled output.
02:17:19 <kmc> sounds like you need an optimizing compiler :)
02:29:54 <int-e> tswett[m]: wah, you have to restore those segment registers!
02:30:15 <int-e> (and the other ones as well)
02:31:17 <tswett[m]> Oh yeah, that's probably a good idea.
02:33:32 <tswett[m]> I guess I'm assuming that no code will be running when an interrupt happens.
02:33:43 <tswett[m]> Which... is an assumption that may prove to be false. :D
02:34:55 <int-e> Oh the interrupt handler will be fine... only other programs will suffer ;)
02:38:05 <tswett[m]> I have another interrupt handler that ends with "eb fe", which is a jump to itself.
02:45:35 <shachaf> I wrote a little assembler the other day, it's great.
02:46:08 <shachaf> I probably won't bother with multipass assembly to get the smallest instruction sizes.
03:34:28 -!- nfd9001 has quit (Ping timeout: 276 seconds).
04:17:23 -!- xkapastel has quit (Quit: Connection closed for inactivity).
04:18:57 -!- FreeFull has quit.
04:47:14 <esowiki> [[What Mains Numbers?]] https://esolangs.org/w/index.php?diff=64822&oldid=64813 * A * (+1498) /* The implementation */
04:49:00 <esowiki> [[What Mains Numbers?]] M https://esolangs.org/w/index.php?diff=64823&oldid=64822 * A * (-1363) /* The implementation */
04:51:29 <HackEso> 526) <elliott> Second Life is like... real life, modelled by people who've READ about real life, you know, in books.
04:51:36 <HackEso> 1199) <b_jonas> oerjan: the original purpose was to make a language in which I write ugly source code, and it's compiled to readable standard ml and readable prolog code; but I sort of ran out of time and the readable part got dropped so now the compiled code is even more ugly than the original
04:52:35 -!- Melvar has quit (Quit: WeeChat 2.4).
04:53:33 <shachaf> Are there uses for the REX byte without any of W,R,X,B?
05:07:52 <esowiki> [[What Mains Numbers?]] M https://esolangs.org/w/index.php?diff=64824&oldid=64823 * A * (+0) /* The implementation */
05:08:16 -!- doesthiswork has quit (Ping timeout: 258 seconds).
05:08:17 <esowiki> [[What Mains Numbers?]] M https://esolangs.org/w/index.php?diff=64825&oldid=64824 * A * (+2) /* What Mains Numbers? */
05:11:09 <esowiki> [[What Mains Numbers?]] M https://esolangs.org/w/index.php?diff=64826&oldid=64825 * A * (+33) /* The implementation */
05:19:31 -!- Melvar has joined.
05:28:39 <esowiki> [[What Mains Numbers?]] https://esolangs.org/w/index.php?diff=64827&oldid=64826 * A * (-1) /* The implementation */
05:31:44 <esowiki> [[What Mains Numbers?]] https://esolangs.org/w/index.php?diff=64828&oldid=64827 * A * (+0) /* The implementation */
05:46:25 -!- Sgeo__ has joined.
05:49:28 -!- Sgeo_ has quit (Ping timeout: 244 seconds).
06:57:28 <shachaf> `` doag quotes | grep 'standard definition'
06:57:30 <HackEso> 9233:2016-10-11 <shachäf> addquote <ais523> (btw, "q = 1-p" should be the standard definition of q, IMO)
06:59:03 <esowiki> [[Pxem]] https://esolangs.org/w/index.php?diff=64829&oldid=64735 * YamTokTpaFa * (+27) /* References */
07:01:16 <esowiki> [[User:YamTokTpaFa]] https://esolangs.org/w/index.php?diff=64830&oldid=62025 * YamTokTpaFa * (+22)
07:03:50 <esowiki> [[User:YamTokTpaFa/sandbox4]] N https://esolangs.org/w/index.php?oldid=64831 * YamTokTpaFa * (+33) Created page with "'''Pxemf'''(Pronunciation: ) is"
07:09:01 <esowiki> [[Talk:ACL]] N https://esolangs.org/w/index.php?oldid=64832 * JonoCode9374 * (+290) Created page with "= Python Interpreter = Is it alright if I make a direct port of the Java interpreter in Python? Because I am unable to access anything that could compile Java, but I do have..."
07:10:24 <esowiki> [[Talk:ACL]] M https://esolangs.org/w/index.php?diff=64833&oldid=64832 * JonoCode9374 * (+29) /* Python Interpreter */
07:12:11 <esowiki> [[User:JonoCode9374]] https://esolangs.org/w/index.php?diff=64834&oldid=63904 * JonoCode9374 * (+90)
07:28:17 <esowiki> [[What Mains Numbers?]] M https://esolangs.org/w/index.php?diff=64835&oldid=64828 * A * (+61) /* Example programs */
07:28:25 <esowiki> [[What Mains Numbers?]] M https://esolangs.org/w/index.php?diff=64836&oldid=64835 * A * (+1) /* = Hello, world! program */
07:30:01 -!- cpressey has joined.
07:31:49 <esowiki> [[What Mains Numbers?]] M https://esolangs.org/w/index.php?diff=64837&oldid=64836 * A * (+6) /* The implementation */
07:36:40 <cpressey> Good morning. It occurs to me that "ghci" is an acronym for "Glasgow Haskell Compiler Interpreter". I approve of this. The world needs more compiler interpreters.
07:36:44 <esowiki> [[What Mains Numbers?]] M https://esolangs.org/w/index.php?diff=64838&oldid=64837 * A * (+1492) No it is, you probably don't know JavaScript.
07:45:12 <esowiki> [[What Mains Numbers?]] M https://esolangs.org/w/index.php?diff=64839&oldid=64838 * A * (+166) /* Infinite loop */
07:57:03 <int-e> Oh. I finally got the etymology of "bison".
07:57:33 <int-e> And I wish I didn't. Puns are only good when they're your own ;-)
08:00:32 <esowiki> [[What Mains Numbers?]] https://esolangs.org/w/index.php?diff=64840&oldid=64839 * A * (+623) /* Infinite loop */
08:02:27 -!- Lord_of_Life has quit (Ping timeout: 268 seconds).
08:03:52 <esowiki> [[What Mains Numbers?]] https://esolangs.org/w/index.php?diff=64841&oldid=64840 * A * (+303) /* Infinite loop */
08:05:10 -!- Lord_of_Life has joined.
08:13:50 <esowiki> [[What Mains Numbers?]] M https://esolangs.org/w/index.php?diff=64842&oldid=64841 * A * (+224) /* Infinite loop */ I should have explained it further when Ais523 is a JavaScript beginner. (But indeed it is obvious enough.)
08:16:09 <esowiki> [[What Mains Numbers?]] M https://esolangs.org/w/index.php?diff=64843&oldid=64842 * A * (+35) /* Infinite loop */ Minor improvement
08:16:46 <esowiki> [[What Mains Numbers?]] https://esolangs.org/w/index.php?diff=64844&oldid=64843 * A * (+29) /* Infinite loop */
08:22:12 <esowiki> [[Talk:ACL]] M https://esolangs.org/w/index.php?diff=64845&oldid=64833 * A * (+84) Stub reply
08:25:52 -!- GeekDude has quit (Ping timeout: 272 seconds).
08:28:30 -!- GeekDude has joined.
08:43:53 -!- wob_jonas has joined.
08:48:42 <wob_jonas> "<shachaf> Are there uses for the REX byte without any of W,R,X,B?" => rarely. you can use them to encode the DIL, SIL, BPL, SPL byte register operands
08:54:35 <wob_jonas> They aren't in x86_16 or x86_32, but then you rarely need them, you can do almost everything with either the other byte registers or full word operations
08:56:32 <int-e> shachaf: I miss the one byte inc/dec register operations :P
08:56:39 <shachaf> I see. Without the rex prefix it encodes the upper half of the [abcd]x registers.
08:56:59 <int-e> (Bot really. But that's where they stole those prefixes from.)
09:00:28 <shachaf> So 010x is inc and 011x is dec.
09:01:53 <shachaf> And in long mode inc %eax is encoded with... ff?
09:03:05 <int-e> (I don't know what you mean by 010x and 011x though)
09:03:10 <shachaf> Oh, which was already inc r/m
09:03:26 <shachaf> I mean octal 0100|reg and 0110|reg
09:03:48 <int-e> right, makes sense
09:04:00 <shachaf> octal is the way to go, it's great
09:04:40 <shachaf> The mod r/m byte is great. 03xy encodes register x and register y, and so on.
09:24:37 -!- ais523 has joined.
09:25:06 <ais523> well, I wrote my slightly crazy malloc: http://nethack4.org/pastebin/animalloc.tgz
09:25:39 <ais523> it compiles to a .so file that you can use with LD_PRELOAD
09:26:33 <ais523> I've been trying it on various programs, it seems to work (in particular, a full build+test of C-INTERCAL works, with malloc replacements in all the programs invoked as part of that, including make, gcc, and friends)
09:33:51 <ais523> shachaf: it's based around asking the kernel for a huge amount of address space and then using pagefaults for the actual allocation
09:34:37 <ais523> it also uses a lock-free algorithm (specifically, a lock-free stack) to make it async-signal safe, because I hate the fact that standard malloc isn't
09:35:18 <ais523> there's also some code in there to fill freed memory with 0xAA, I should probably remove that because this really isn't a malloc about safety
09:35:59 <ais523> OK, updated with that line taken out
09:36:35 <ais523> note that if you try to allocate too much memory and then use it, you'll likely get a segfault, but that's no different from standard mallocs on Linux
09:36:53 <ais523> (also, this assumes Linux and a 64-bit processor; it doesn't assume x86_64 specifically, although that's what most people are likely to use)
09:37:50 <wob_jonas> ais523: you should probably implement the various aligned allocation functions too, even if by just stubs that abort
09:38:23 <ais523> I just realised that while looking at competitors
09:38:33 <ais523> you're right, it's important to have the entire set of alloc functions implemented at once
09:38:39 <ais523> so that you don't mismatch malloc and free impls
09:39:15 <wob_jonas> see https://www.gnu.org/software/libc/manual/html_node/Replacing-malloc.html#Replacing-malloc
09:39:49 <esowiki> [[User:YamTokTpaFa/sandbox4]] https://esolangs.org/w/index.php?diff=64846&oldid=64831 * YamTokTpaFa * (+942)
09:41:06 <ais523> ooh, "malloc_usable_size" is what that function's called
09:41:07 <wob_jonas> filling with 0xAA can make sense, but make sure to do that only for small allocations, or at least small parts of large allocations, because people can use malloc to allocate huge blocks that will be paged in on demand too
09:41:56 <ais523> yes, it was limited to blocks of 32768 bytes at most
09:42:00 <ais523> but I removed it anyway
09:44:51 <wob_jonas> aligned allocation is another of those messes that we got because everyone added their own incompatible apis, and now we have to support all of them
09:45:13 <ais523> animalloc uses 512-byte alignment for its huge allocation (I didn't want the alignment to be too coarse as that screws up ASLR)
09:46:04 <ais523> so I guess the correct way to implement an aligned alloc is to increase the size to the alignment if it's smaller and we have less than 512 bytes of alignment requirement
09:46:13 <esowiki> [[Ruby]] https://esolangs.org/w/index.php?diff=64847&oldid=38207 * YamTokTpaFa * (+19)
09:46:13 <wob_jonas> shachaf mentioned a few days ago how many different ways you can tell libc to run a function early in the program, before main. that's one of those messes too, because C doesn't have a standard mechanism.
09:46:24 <ais523> or to use the "over-allocate and filter" method if the request is for an alignment larger than 512 bytes
09:46:54 <wob_jonas> and for aligned allocation, I'm tempted to add a new api too if I ever make my own malloc:
09:49:06 <ais523> hmm, a quick check with a malloc benchmarker is showing that my malloc is both faster than glibc malloc, and also less memory-hungry
09:49:25 <ais523> although of course, real-world programs may act in a very different way from a malloc benchmarker
09:49:39 <wob_jonas> I'd like a four-argument function void *alloc4(size_t size, size_t alignment, size_t before, size_t after) which allocates a block of legth at least size bytes, aligned to a boundary of alignment bytes (must be a power of two), with at least before bytes readable before the block and at least after bytes readable after the nominal end of the block
09:50:01 <ais523> this is most likely because animalloc is completely immune to fragmentation
09:50:31 <ais523> wob_jonas: I assume that the readable bytes are allowed to be part of some other allocation, and not necessarily writable
09:50:40 <ais523> so that they're basically just a "legal overrun"?
09:51:10 <wob_jonas> and they can contain administration data used by the malloc implementation itself
09:51:30 <ais523> that'd be pretty trivial with animalloc, tbh, as long as your allocation is at least 9 bytes long you have several gigabytes of readable overrun space :-)
09:52:29 <esowiki> [[What Mains Numbers?]] M https://esolangs.org/w/index.php?diff=64848&oldid=64844 * A * (+139)
09:52:30 <wob_jonas> in fact maybe I should make the api even more general, adding an alignment offset too, though that doesn't come up often
09:52:42 <ais523> <man aligned_alloc> The function aligned_alloc() is the same as memalign(), except for the added restriction that size should be a multiple of alignment.
09:52:49 <ais523> but it doesn't report what error it's supposed to return if it isn't :-(
09:52:57 <ais523> wob_jonas: even backwards, that's what the 9-byte minimum is for
09:53:26 <ais523> because there's 4GiB of address space reserved for objects that are 8 bytes and smaller
09:54:00 <ais523> (allocating objects that small is normally a mistake, but there are likely uses for it)
09:57:31 <esowiki> [[What Mains Numbers?]] M https://esolangs.org/w/index.php?diff=64849&oldid=64848 * A * (+1) /* = Computational class */
09:58:23 <shachaf> ais523: The GHC RTS maps 1TB of address space at startup nowadays, I hear.
09:58:51 <shachaf> Sometimes I wonder whether disabling overcommit would be better.
09:59:37 <ais523> I think overcommit should be under the control of the program allocating the memory
10:00:01 <ais523> in the understanding that if a program overcommits willingly, it's signing up to be OOM-killed
10:01:17 <shachaf> I've been writing a bunch of C code that hardly ever calls malloc.
10:02:14 -!- ais523 has quit (Quit: sorry for my connection).
10:02:32 -!- ais523 has joined.
10:03:14 <shachaf> Do you think passing custom allocators to libraries is a plausible thing to do?
10:03:48 <shachaf> One thing that I'm a bit skeptical of is that different allocators can have different APIs and usage patterns, it's not malloc and free.
10:05:34 <wob_jonas> shachaf: sure! in some cases, like for interpreters or haskell runtimes that allocate a lot of small objects with known type (that are either not arrays, or arrays where the actual size has to be known because there are destructors), it's worth to use a library with a sized free, which means the allocation function needn't store the size of the blo
10:05:42 <esowiki> [[Pxem]] https://esolangs.org/w/index.php?diff=64850&oldid=64829 * YamTokTpaFa * (+14)
10:06:34 <wob_jonas> in this case, you pass the size and alignment of the object to both the allocate and the free function, and it's an UB if you pass a different size or alignment when freeing
10:07:02 <esowiki> [[User:YamTokTpaFa/sandbox4]] https://esolangs.org/w/index.php?diff=64851&oldid=64846 * YamTokTpaFa * (+794)
10:09:54 <shachaf> Yes, that would certainly be a better API option.
10:10:36 <shachaf> But also sometimes you want to allocate in an arena and free all at once, in which case you don't want to call free on each individual allocation even if it's a no-op.
10:10:53 <ais523> wob_jonas: animalloc stores the size of the block in the returned pointer :-)
10:11:12 <esowiki> [[Pxem]] https://esolangs.org/w/index.php?diff=64852&oldid=64850 * YamTokTpaFa * (+209)
10:11:18 <ais523> plenty of address space, after all, to use some of the bits of the returned pointer to record the size
10:19:49 <ais523> this works well because there are only ten allocation sizes used anyway, in terms of distance between returned pointers (the entire space is mapped)
10:20:13 <wob_jonas> ais523: it might also help to add an explicit -std to the compiler command in the makefile
10:21:13 <ais523> OK, I added -std=gnu11
10:21:21 <ais523> this is hopelessly Linux-specific anyway
10:21:39 <ais523> haven't uploaded yet, am still implementing the remaining functions
10:22:07 <shachaf> Did you see my fancy gnu11 printf?
10:22:12 <wob_jonas> ais523: you could also consider to mprotect all the space you don't use to unreadable, both the large allocations that you make the kernel throw away with MADV_FREE, and the tail part of the spaces for small allocations until first used. that way it's more likely that some pointer mistakes are caught by segfaults.
10:22:19 <shachaf> http://slbkbs.org/tmp/fmt.txt
10:23:13 <shachaf> I don't remember whether this is C11. I think I concluded it wasn't.
10:23:44 <ais523> huh, this thing compiles a few bytes smaller with -O3 than with -Os under clang (gcc's -Os is larger)
10:25:46 <shachaf> I wonder what the smallest program that's true of is.
10:29:25 <ais523> the -Os /code/ is way shorter, so I wonder why the file is larger
10:30:01 <ais523> (this relationship is true both stripped and unstripped)
10:32:42 <shachaf> Oh, that's more interesting.
10:33:41 <ais523> after looking at readelf for a while I figured it out: there's some sort of alignment requirement which causes the -Os output to lose its advantage due to having to pad the code up to the same length as the -O3 output within the .so file
10:34:36 <ais523> but the -O3 output inlines a call to an exported function, whereas the -Os output calls the function directly, and that function call creates one additional relocation
10:34:44 <ais523> the relocation is in a part of the ELF file that /does/ affect the file length
10:35:34 <ais523> OK, I uploaded the new version
10:37:19 <shachaf> Dynamic linking is so complicated.
10:37:26 <shachaf> And there are hardly any benefits to it.
10:38:17 <ais523> <clang -Os> a6f: 48 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%rax ← oh come on, even I can beat that
10:38:43 <ais523> in "outoptimize the compiler" wars, -Os is more fun as a target because it's much more objective as to what code is better than what other code
10:39:01 <ais523> that's my competing program
10:39:22 <cpressey> I once worked on some code where the structs were 8 bytes so I passed them directly to functions, and I was told that I should be allocating them on the heap and passing pointers to them instead
10:39:36 <shachaf> Did you see that heap-compacting malloc?
10:39:51 <ais523> admittedly they probably hve different effects on flags but the context doesn't care about the flags
10:40:03 <shachaf> https://github.com/plasma-umass/mesh
10:40:35 <ais523> cpressey: many programmers don't have a good intuition about when it's best to pass things by value
10:40:47 <wob_jonas> ais523: -Os doesn't always try to produce the smallest code if it's slower
10:40:57 <cpressey> you're Just Not Supposed to Do That with a Struct
10:41:29 <ais523> wob_jonas: is there an "as small as possible" optimization option? analogously to the "as fast as possible" -Ofast?
10:41:40 <shachaf> ais523: gcc -Os has a four-byte solution, it seems.
10:41:44 <wob_jonas> I don't know, but I don't care. I dno't use the compiler for golf.
10:42:14 <shachaf> Sign-extended or with 0xff
10:42:19 <ais523> (-Ofast isn't standards-compliant)
10:42:30 <wob_jonas> you can try to add __attribute__((cold)) or whatever that is to functions if you want
10:44:29 <ais523> compilers typically don't do much with hot/cold
10:44:51 <wob_jonas> ais523: and if you're willing to pay for two instructions where the second one depends on the first one, you can just use an OR instruction with a 8-bit immediate, which would be three bytes long and have a false dependency that the cpu doesn't know is false
10:45:05 <ais523> and the normal optimisations for hot don't help much unless you have an entire loop entirely in hot code, which is pretty inappropriate for a malloc
10:45:41 <shachaf> I do wish the amd64 calling convention wasn't different for values and singleton structs.
10:46:05 <shachaf> Or is it? I can't remember for sure now.
10:47:07 <ais523> my experience with clang vs. gcc optimisation wars is that gcc knows many more optimisations, but clang is better at working out when to use them
10:48:23 <ais523> gcc sometimes goes a little mad with the optimisation and makes the code slower/longer as a result
10:49:09 <wob_jonas> ais523: doesn't it go a little mad only when people pass inappropriate compiler options?
10:49:47 <ais523> wob_jonas: well, that's what -O3 is asking for, yes; but I'd be surprised if -O2 could compete
10:50:23 <ais523> hmm, something that's been bothering me: there are two encodings of the ret instruction on x86_64; branching /directly/ to the shorter encoding has a huge performance penalty, the longer one doesn't have that issue
10:50:44 <wob_jonas> ais523: yes, the optimization manual describes that
10:50:52 <ais523> I'm trying to figure out what sort of insanity would be happening in the hardware to make that happen
10:51:25 <ais523> like, I can understand why branching to a ret might be slow, but why would a repret be any faster? is there a reason not to just use the code underlying repret by default, or whenever there's just been a branch, etc.?
10:51:50 <wob_jonas> ais523: the cpu is trying to cache the likely target of jump instructions, for which it stores the address of the jump, but every other jump instruction is at least two bytes long... I don't know the details, but it doesn't seem too strange
10:52:23 <shachaf> People use rep ret to avoid that, right?
10:52:29 <shachaf> I remember reading about this.
10:52:34 <ais523> yes, rep ret is the recommended long encoding
10:52:41 <ais523> nop ret works too but is slower, for obvious reasons
10:53:43 <ais523> (incidentally, you have to use rep rather than the more commonly seen data16 becauses data16 would actually affect the ret instruction and make it pop only 16 bits!)
10:56:29 <shachaf> ais523: http://repzret.org/p/repzret/ talks about the details of the branch predictor that cause this.
10:56:59 <ais523> another thing that surprised me: I assumed that commands like rep movsd were only worthwhile for small moves, and that bigger more complex code could do a large move faster
10:57:28 <ais523> but it's actually the opposite, rep movsd (and particularly rep movsq) has a large setup cost but runs very quickly when it gets going, and thus is only efficient for large moves
10:57:44 <ais523> presumably it's being recompiled into some sort of vector operation behind the scenes
10:58:04 <ais523> also, I'm not surprised that there's a blog post about repret, but am surprised that it has its own website
10:58:40 <wob_jonas> ais523: the rep movsd thing is complicated, it depends a lot on which cpu brand and core you have
10:58:59 <shachaf> I think whether rep movsd is better or worse than alternatives has changed over the years in different uarchs.
10:59:14 <wob_jonas> you have to look up the details in the optimization manuals and Agner's optimization docs and Agner's memcpy implementation if you want to know the details
10:59:39 <ais523> the optimization guides basically say "don't try to figure it out yourself, the compiler manufacturers know what to do, so memcpy or __builtin_memcpy are the best options for copying things"
11:00:10 <wob_jonas> but the opt guides also give assembly source codes for them I think
11:00:23 <shachaf> Aren't the optimization guides written for compiler manufacturers?
11:01:17 <ais523> AMD's is written for anyone who cares but assumes that compiler manufacturers will be a major audience
11:01:48 <shachaf> I wonder how important compiler optimizations are.
11:02:01 <ais523> some of them are pretty important
11:02:13 <ais523> like storing things in registers rather than memory
11:02:45 <ais523> nowadays people typically forget that that's an optimisation, but on -O0 most compilers will use registers only for the course of one instruction and put everything back into memory in between
11:02:45 <wob_jonas> yeah, that's one of the earliest optimizations that compilers implemented
11:03:18 <wob_jonas> way back when what would now count as a non-optimizing compiler of a low-level language counted as an optimizing compiler of a high-level languaeg
11:03:27 <shachaf> Anything that requires solving an NP-complete problem is certainly an optimization.
11:04:29 <shachaf> OK, the claim turned out much bolder than I intended.
11:04:39 <shachaf> For "anything" substitute "This particular thing".
11:04:54 <int-e> register allocation?
11:05:05 <ais523> doing it optimally is NP-complete, I think
11:05:13 <ais523> but doing better than nothing is much easierr
11:05:28 <wob_jonas> it's still hard to do it well enough
11:05:44 <shachaf> What are the most important optimizations for a compiler?
11:05:50 <shachaf> Register allocation seems important.
11:05:50 <wob_jonas> I don't understand how that part of compilers work
11:05:53 <shachaf> Inlining is probably important.
11:06:19 <ais523> constant folding is important because without it most of the other optimisations don't work either
11:06:20 <shachaf> Though it's certainly much more important in a language like C++ than in C.
11:06:46 <shachaf> Ah, constant folding, sure.
11:07:11 <shachaf> I've said before that I think some optimizations are a bad idea, like tail call "optimization".
11:07:30 <wob_jonas> shachaf: constant folding, "peephole optimizations" (a very general term), optimizing integer divisions by a compile-time constant and repeated integer divisions by the same divisor
11:07:41 <int-e> it's a great idea. it should be mandated by the language standard.
11:08:13 <int-e> strength reduction, bounds check elimination, loop unrolling
11:08:27 <shachaf> I think tail calls should be marked explicitly.
11:08:52 <int-e> (bounds check elimination is *very* important because without it, performance-hungry people will not use safe languages at all.)
11:08:56 <shachaf> If they are it should be an error to use an extra stack frame for them. But it shouldn't be implicit.
11:09:00 <wob_jonas> outputting shorter forms of instructions (on x86),
11:09:52 <cpressey> shachaf: I largely agree. I like Perl's use of goto for this.
11:09:54 <shachaf> C compilers don't do bounds check elimination so how important can it be?
11:09:56 <ais523> I'm planning to write a program in asm at the moment, I've spent over a day just on trying to optimise the register allocation to allow for shorter instruction forms
11:10:03 <ais523> and I haven't even started writing the program yet
11:10:13 <ais523> shachaf: I think they do
11:10:33 <ais523> although they might see it as removing redundant conditionals rather than anything specifically related to bounds checking
11:12:28 <shachaf> cpressey: I don't know how that works. Does "goto &f" mean the same as "return f(@_)" but without the stack frame?
11:13:00 <shachaf> When I try to look this up everyone is talking about "tail recursion optimization" which is double silly because tail recursion is the most useless kind of tail call.
11:13:54 <cpressey> shachaf: I think that's basically it.
11:14:42 <shachaf> I think in a language like C tail recursive functions are much more clearly written with a loop.
11:15:23 <shachaf> Useful cases of tail calls are mutually recursive functions like parsers, I guess.
11:15:59 <wob_jonas> also being able to emit the common instructions in all addressing modes, using indexed memory access for reading or writing when possible, immediates for compile-time constant operands, swapping arguments of commutative operations
11:16:37 <cpressey> shachaf: Yes, finite state machines especially.
11:17:15 <wob_jonas> following which local variables are non-volatile and never taken address so the compiler knows that indirect assignments can't affect them
11:17:18 <shachaf> Are these actually important or are you just listing optimizations?
11:17:30 <wob_jonas> indirect reads too, so you can store them in registers
11:17:40 <wob_jonas> shachaf: I don't really know, I haven't made a compiler yet
11:17:41 <shachaf> I think I meant something like, if you only have time to implement a few optimizations, which are the most important?
11:18:02 <ais523> <shachaf> I think in a language like C tail recursive functions are much more clearly written with a loop. ← things like iterating over a binary tree look really ugly when one branch is recursive and the other is iterative, although of course the tail call doesn't save stack height there, just a bit of time
11:18:41 -!- FreeFull has joined.
11:19:58 <shachaf> void print_node(Node *n) { if (!n) return; print_node(n->left); print(n->value); print_node(n->right); }
11:20:03 <esowiki> [[User:YamTokTpaFa]] https://esolangs.org/w/index.php?diff=64853&oldid=64830 * YamTokTpaFa * (+114)
11:20:32 <shachaf> void print_node(Node *n) { while (1) { if (!n) return; print_node(n->left); print(n->value); n = n->right; } }
11:20:55 <shachaf> I suppose you do lose some symmetry.
11:21:27 <wob_jonas> well, it's closer to return &f(@_); which can matter if f is a prototyped function
11:21:42 <esowiki> [[User:YamTokTpaFa/sandbox4]] https://esolangs.org/w/index.php?diff=64854&oldid=64851 * YamTokTpaFa * (+185) /* Language overview */
11:21:45 <shachaf> I don't know Perl at all so I made up some syntax.
11:21:48 <cpressey> shachaf: If I had limited time and only wanted to implement one optimization technique it would probably be peephole optimization, but that's also because I typically don't want to think hard about the code I generate
11:22:20 <cpressey> so, like, push ax; pop ax -> get rid of that
11:22:57 <cpressey> Is register allocation in and of itself an optimization, relative to stack allocation?
11:23:27 <shachaf> push ax; pop ax isn't a no-op but I guess you can assume it doesn't matter.
11:23:28 <wob_jonas> cpressey: does it count as an optimization to be able to emit arithmetic instructions directly on memory operands, for both input and output, and arithmetic instructions with immediate operands?
11:23:33 <ais523> storing things in registers rather than on the stack is a huge optimization and one of the most important
11:23:54 <ais523> shachaf: if you're a compiler, you almost certainly don't want the side effect it has
11:25:42 <ais523> and if you /do/ want that effect, you'd likely write code like orb $0x0,-0x2(%rsp) (and would probably use a more negative number than -2)
11:26:56 <Taneb> What's the side effect?
11:27:12 <shachaf> It writes ax to the memory past the end of the stack.
11:27:26 <ais523> Taneb: pagefault (possibly upgraded to a segfault) if you're at the end of the paged-in portion of the stack
11:27:46 <Taneb> Ah, also of course
11:27:59 <shachaf> I imagine the most important optimizations are the ones that save on the most important resources.
11:28:02 <ais523> and of course on x86_64, you're writing actual valid memory there (specifically, redzone memory)
11:28:24 <ais523> on 32-bit x86 the ABI treats the memory there as undefined
11:28:29 <shachaf> Presumably executing a few extra instructions doesn't matter nearly as much as avoiding cache misses.
11:28:32 <Taneb> I feel like I should spend more time learning about this sort of thing
11:28:36 <ais523> so most people don't use things above the top of the stack there
11:28:49 <shachaf> Or mispredictions or something.
11:29:03 <shachaf> Taneb: You should write a fancy x86 assembler for me.
11:29:10 <shachaf> I wrote one but it's very simple and bad.
11:29:39 <Taneb> I don't want to do that
11:30:00 <ais523> back in 2005, when my copy of the optimization guide was written, the most important factors were latencies in dependency chains, throughput of various units on the CPU, and things that caused the whole processor to stall
11:30:06 <cpressey> Register allocation is such an important optimization that people don't think of it as a compiler optimization
11:30:31 <cpressey> Some of these same people are happy with stack-based VMs
11:30:43 <ais523> for example, most instructions that did nontrivial memory accesses would not stall anything and would not use much of the CPU's resources, but the result wouldn't be available for 4 cycles
11:30:53 <wob_jonas> shachaf: http://yasm.tortall.net/ fancy x86 assembler
11:30:59 <shachaf> Man, generating code for a fancy out-of-order processor is ridiculous.
11:31:23 <shachaf> Taneb: I don't need it anyway because the point of it is to write it myself.
11:31:26 <ais523> I actually had a really good idea for an instruction set design in the last couple of days
11:31:27 <cpressey> Level one: just generate some code that doesn't crash
11:32:06 <ais523> the idea is, many of the registers are actually shift registers, you read from the end of them but write not at the end
11:32:18 <ais523> (either "the value this register will have after one shift" or with higher numbers than "one")
11:32:31 <ais523> and there's a shift instruction to shift everything all at once
11:32:43 <shachaf> Dan Bernstein once posted about how the x87 stack instructions, where you get a free swap after every instruction, let you express things that register machines don't.
11:32:47 <ais523> this gives most of the advantages of VLIW but is much less specific to an individual processor
11:33:44 <ais523> basically, because the processor can decide for itself how to split the VLIW up, in the knowledge that two commands that happen between a register shift can't possibly interfere with each other (because no position in the shift register is simultaneously wriiteable and readable)
11:34:52 <wob_jonas> ais523: is that sort of like those old SIMD cpus where if you write a register, you can't read it in the next instruction?
11:34:52 <ais523> jumps have their own jump target register, the jump instruction just jumps to the address in the jump target register, but you can load that an arbitrary distance beforehand
11:35:08 <ais523> wob_jonas: yes, except you control how much delay there is
11:35:36 <ais523> the nice thing about this is that temporaries don't need any nontrivial register allocation at all
11:36:04 <ais523> you know when the instruction that uses the temporary is coming up, so you just place it in the appropriate point of the shift register
11:36:13 <ais523> and more normal registers are only needed for values that you want to copy or persist
11:36:44 <ais523> (even then, a command to store in multiple shift registers would likely be both useful and easy to implement, to save on copying)
11:37:08 <ais523> my current plan is for immediates to be part of the instruction, but addresses (both store and load) to be taken from shift registers
11:37:27 <ais523> so that the processor can prefetch an address, or lock it into L1 cache, if it sees that an instruction is going to use it soon
11:37:59 <ais523> this also makes double ll/sc really easy to implement, which means efficient lock-free algorithms
11:39:08 <wob_jonas> there are a lot of advantages you can get without any of these fancy instruction set innovations, by just breaking compatibility and designing a new instruction set that is like the current practices but without the historical cruft
11:40:14 <ais523> I guess my aim here is to design an instruction set that won't hurt optimisations in future processors and makes the optimisations done by current processors easier
11:41:39 <ais523> that said, although this is intellectually interesting, I'm unlikely to practically get the chance to design an instruction set that CPUs will actually use
12:18:19 <cpressey> Register allocation does not strike me as fun (YMMV). One reason I would want to target LLVM is so that it can do register allocation for me.
12:20:10 <shachaf> Hmm, one thing I want is precise control and information over stack frame allocation, which I think might be tricky to get with LLVM.
12:20:33 <shachaf> For example, I want a function to be able to get its maximum stack usage at compiletime.
12:21:14 <cpressey> Yes, that might be impossible to know with certainty, with something like LLVM.
12:24:23 <cpressey> Maybe I'll target CIL instead. I already did that for one toy project. It's not terrible.
12:25:27 <cpressey> It's backed by a standard, it runs on at least two platforms, where it has half-decent JIT compilers.
12:27:13 <shachaf> Another related thing I want is efficient coroutines, which is very similar code to stack frame allocation.
12:27:23 <shachaf> I don't know how much LLVM can help you with that.
12:29:02 <cpressey> I would be surprised if LLVM could not do coroutines reasonably efficiently.
12:29:13 <int-e> There's https://en.wikipedia.org/wiki/SPIR-V as well which sounds interesting in that it stores a control-flow graph of SSA basic blocks.
12:29:35 <shachaf> Ugh, why are GPU APIs all such a mess?
12:29:44 <shachaf> Maybe not all, but at least the common ones.
12:29:50 <int-e> But I don't know whether it can do general purpose programming at this point.
12:32:10 <shachaf> Well, LLVM has an implementation of coroutines, but if they're like C++2038's coroutines I probably don't want them.
12:33:44 <int-e> I've probably forfeited my right to complain but now you're just being silly.
12:33:45 <ais523> C++2038 actually came out in 1901 but the date underflowed
12:33:54 <cpressey> What are the last two digits of ω
12:34:37 <shachaf> The C++ coroutine proposal last I saw it does some heap allocations sometimes.
12:35:03 <shachaf> But it said something like, don't worry, with only $x0 million of investment in compilers, we expect that optimizers can usually eliminate these allocations.
12:35:06 <int-e> I guess if you make a decimal reperesentation of ordinals, the last ω digits of ω will be zero.
12:35:38 <int-e> And only the ω-th digit will be one.
12:36:14 <int-e> (counting from the left)
12:36:21 <int-e> (counting from the right)
12:36:29 <int-e> I should say "counting from the end" :P
12:39:06 <int-e> shachaf: I think recent GPU APIs are messy because they are common interfaces to a very wide range of different hardware, and they expose a lot of iffy details for performance reasons. (The original OpenGL had a pretty different attitude.)
12:43:55 <wob_jonas> ``` set -e; cd wisdom; printf "%s/ " *ium
12:43:56 <HackEso> amnesium/ belgium/ corium/
12:44:09 <HackEso> An amnesium is a school where you forget everything you learned after each test.
12:44:10 <HackEso> Corium is the material that a nuclear reactor's core dump is made of.
12:44:13 <HackEso> Alumni is a compromise spelling suggested to solve the aluminum vs aluminium debate that never really caught on, except in a few big colleges.
12:45:21 <wob_jonas> ``` set -e; cd wisdom; printf "%s/ " *ion
12:45:22 <HackEso> abbreviation/ action/ algebraic chess notation/ bessel function/ cat elimination/ cat introduction/ cipation/ citation/ civilization/ communication/ composition/ cut elimination/ damnation/ defenestration/ degeneration/ dereduntantation/ detonation/ eurovision/ hallucination/ hppavilion/ identity function/ implication/ indentity function/ intersection/ invention/ just intonation/ last-class function/ lion/ natural transformation/ nnection/ onion/ operation
12:45:47 <shachaf> I wonder how much more true that is of GPUs than CPUs.
12:46:25 <shachaf> Hmm, someone should name an element "belgium".
12:46:40 <HackEso> The plural form of "Belgium" is "Belgia".
12:48:59 <esowiki> [[Talk:ACL]] https://esolangs.org/w/index.php?diff=64855&oldid=64845 * Hanzlu * (+14) /* Python Interpreter */
12:49:25 <esowiki> [[Talk:ACL]] https://esolangs.org/w/index.php?diff=64856&oldid=64855 * Hanzlu * (-14)
12:50:59 <esowiki> [[Talk:ACL]] https://esolangs.org/w/index.php?diff=64857&oldid=64856 * Hanzlu * (+30)
13:03:53 <esowiki> [[ACL]] https://esolangs.org/w/index.php?diff=64858&oldid=64821 * Hanzlu * (+28)
13:05:37 <esowiki> [[Truth-machine]] https://esolangs.org/w/index.php?diff=64859&oldid=63439 * Hanzlu * (+27)
13:07:30 <esowiki> [[ACL]] https://esolangs.org/w/index.php?diff=64860&oldid=64858 * Hanzlu * (+6)
13:16:47 -!- doesthiswork has joined.
13:23:58 <esowiki> [[Talk:Keg]] M https://esolangs.org/w/index.php?diff=64861&oldid=63982 * A * (-109)
13:37:23 -!- xkapastel has joined.
13:59:18 <esowiki> [[Talk:ACL]] https://esolangs.org/w/index.php?diff=64862&oldid=64857 * A * (+6)
14:09:38 -!- ais523 has quit (Ping timeout: 248 seconds).
14:21:45 <esowiki> [[Brace For Impact]] N https://esolangs.org/w/index.php?oldid=64863 * Areallycoolusername * (+1483) Created page with "'''Brace For Impact''' is a [[Stack]]-based [[esoteric programming language]] made by [[User: Areallycoolusername|Areallycoolusername]]. It has featured derived from Lisp,thou..."
14:21:50 <esowiki> [[ACL]] https://esolangs.org/w/index.php?diff=64864&oldid=64860 * Hanzlu * (+128)
14:29:07 <esowiki> [[What Mains Numbers?]] https://esolangs.org/w/index.php?diff=64865&oldid=64849 * A * (+1) /* What Mains Numbers? */
14:41:08 <esowiki> [[What Mains Numbers?]] https://esolangs.org/w/index.php?diff=64866&oldid=64865 * A * (+825) /* Implementations */
15:32:07 -!- oklopol has quit (Read error: Connection reset by peer).
15:35:13 -!- wob_jonas has quit (Remote host closed the connection).
16:09:27 -!- john_metcalf has joined.
16:29:45 <cpressey> https://github.com/catseye/Castile/blob/master/src/castile/stackmac.py
16:30:48 -!- cpressey has quit (Quit: A la prochaine.).
17:17:09 <esowiki> [[ACL]] https://esolangs.org/w/index.php?diff=64867&oldid=64864 * Hanzlu * (-419)
17:19:05 <esowiki> [[ACL]] https://esolangs.org/w/index.php?diff=64868&oldid=64867 * Hanzlu * (+2)
17:22:43 <esowiki> [[ACL]] https://esolangs.org/w/index.php?diff=64869&oldid=64868 * Hanzlu * (+153)
17:25:47 <esowiki> [[ACL]] https://esolangs.org/w/index.php?diff=64870&oldid=64869 * Hanzlu * (+137)
17:26:22 -!- ais523 has joined.
17:42:31 <esowiki> [[Brace For Impact]] https://esolangs.org/w/index.php?diff=64871&oldid=64863 * Areallycoolusername * (+1)
17:54:35 -!- b_jonas has joined.
18:18:05 <b_jonas> ha, I caught this stupid fly that somehow got in here
18:19:21 <esowiki> [[Esolang:Categorization]] M https://esolangs.org/w/index.php?diff=64872&oldid=58894 * Areallycoolusername * (-157) Most of these proped categories are too obvious to be added. A few need to be discussed on the talk pag, not on the page itself.
18:45:50 <esowiki> [[Esolang:Categorization]] https://esolangs.org/w/index.php?diff=64873&oldid=64872 * Ais523 * (+157) Undo revision 64872 by [[Special:Contributions/Areallycoolusername|Areallycoolusername]] ([[User talk:Areallycoolusername|talk]]): those aren't proposed categories, but listings of possibilities that are too common to be categorised (for exhaustiveness)
18:54:42 <esowiki> [[Brace For Impact]] https://esolangs.org/w/index.php?diff=64874&oldid=64871 * Areallycoolusername * (+606)
19:04:49 -!- ais523 has quit (Quit: quit).
19:16:07 <esowiki> [[Brace For Impact]] https://esolangs.org/w/index.php?diff=64875&oldid=64874 * Areallycoolusername * (+623) /* (a'),(s;),(d.), (f=), and (y~) */
20:00:48 -!- Lord_of_Life_ has joined.
20:04:07 -!- lldd_ has joined.
20:04:19 -!- Lord_of_Life has quit (Ping timeout: 248 seconds).
20:04:19 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
20:15:51 -!- Phantom_Hoover has joined.
20:29:24 -!- howlands has joined.
20:48:59 <b_jonas> ``` set -e; cd wisdom; echo *[ae]nce
20:49:00 <HackEso> ance insurance intelligence persistence reference science sentience this sentence
20:49:06 <HackEso> Insurance is a closed loop.
20:49:18 <HackEso> Semi-automatic text generation.
20:49:20 <HackEso> sentience is the primary goal of wisdom. wisdom is the primary goal of sentience.
20:49:23 <HackEso> This sentence is just. Taneb invented it.
20:49:28 <HackEso> Taneb invented persistence long ago, and it's been around ever since.
20:58:54 -!- lldd_ has quit (Quit: Leaving).
21:00:24 <HackEso> /srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: hatis: not found
21:00:27 <HackEso> ld.so(8) - dynamic linker/loader
21:08:27 <esowiki> [[User:Hanzlu]] N https://esolangs.org/w/index.php?oldid=64876 * Hanzlu * (+64) Created page with "Some random guy who made [[ACL]]. What more do you need to know?"
21:53:27 -!- b_jonas has quit (Quit: leaving).
22:44:38 -!- Phantom_Hoover has quit (Ping timeout: 245 seconds).
23:09:55 <doesthiswork> suppose that the time complexity of adding two 2 digit integers is linear in the smaller term. But you can choose N sums to memoize to improve the worst case. How should you choose the N sums?
23:16:10 -!- Melvar has quit (Ping timeout: 258 seconds).
23:16:37 -!- Melvar has joined.