00:00:54 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client).
00:01:41 -!- wob_jonas has joined.
00:04:52 -!- ais523 has joined.
00:05:47 <lambdabot> wob_jonas said 1d 29m 47s ago: Do you want to design a feature phone with good interface? If you made a serious commitment, then I'd volunteer my time to give detailed specs for the parts of the UI
00:05:47 <lambdabot> that matter to me, and volunteer my time to test the phone in any state, whether it's early or late, and give feedback. I think I'm a reasonable tester.
00:05:47 <lambdabot> wob_jonas said 1d 28m 51s ago: Note that I don't volunteer for testing a version control system, because testing a VCS is a daunting hard problem, way over my testing abilities, and even specifying
00:05:47 <lambdabot> the expected semantics has really hard problems in it.
00:06:37 <ais523> wob_jonas: I don't think I can reasonably make a serious commitment to anything extra at this point, I'm finding it hard enough just to keep up with my existing projects even cycling through them and putting some into indefinitely-delayed status
00:06:42 <ais523> the idea is interesting though
00:08:13 <wob_jonas> ais523: it doesn't have to be now. the version control system isn't now either, nor are the ayacc improvements or the aimake3
00:08:30 -!- Gottaname22 has joined.
00:08:42 <wob_jonas> and I don't expect you to do this, I'm just trying to grab any thin chance
00:09:07 <ais523> aimake3 is what NH4 uses at the moment
00:11:27 <wob_jonas> some of these you might never make
00:11:39 <wob_jonas> you're not the one with infinite time for projects like zzo38
00:11:49 <ais523> like 80-90% of the time when I can get around to doing programming at the moment I spend on my day job
00:12:07 <ais523> half the time I just don't seem to have the energy to do anything creative, I just consume, and it's really annoying
00:12:44 <wob_jonas> ais523: yeah. it's much worse for me. I feel like I can barely get anything hobby done.
00:13:16 <ais523> it's probably also worth a disclaimer that my idea of a good interface is often very different from everyone else's :-D
00:14:38 -!- Gottaname22 has quit (Ping timeout: 245 seconds).
00:15:19 <shachaf> ais523: Did you see my question about languages without lvalues? Seems like the sort of thing you'd know about.
00:15:38 <ais523> shachaf: no, I haven't fully logread yet
00:15:44 <ais523> I was just skimming and haven't even skimmed the whole thing
00:16:17 <wob_jonas> ais523: and in the case of aimake, that difference means I'd never use the thing. I can see why you need it for nethack in particular, but that's a difficult project.
00:16:37 <wob_jonas> ais523: and as for uncursed, you made it for nethack too, that shaped its interface.
00:16:55 <wob_jonas> for ayacc, you were following an existing interface mostly
00:17:04 <ais523> what difference? the way I view interface?
00:17:12 <ais523> also uncursed1's interface is /very/ similar to that of curses
00:17:23 <wob_jonas> ais523: right, because that's what's useful for nethack
00:17:56 <wob_jonas> ais523: the difference is that you want aimake to figure out all the messed up dependency loop on itself, by inspecting the symbols in the binaries and all that sort of black magic.
00:18:03 <wob_jonas> I don't want such a make system for sane projects.
00:18:12 <wob_jonas> but you said you used it for new projects too
00:18:21 <wob_jonas> you actually seem to like that black magic
00:19:34 <wob_jonas> I like ayacc, but it has mostly yacc's interface, with some improvements
00:19:57 <wob_jonas> but I had already liked yacc before I ever saw ayacc
00:20:25 <wob_jonas> and I hate how people abuse rec-descent parser generators and think it's a silver bullet
00:23:21 <wob_jonas> ais523: and in several of your esolangs, your idea of the interface is that you don't provide a concrete syntax, you give the semantics and tell what information will have to be specified in the program and input (Incident is one of the exceptions)
00:23:38 <wob_jonas> ais523: that I think is one way of thinking of a user interface, and I have no problem with it
00:24:03 <wob_jonas> ais523: git's bad interface is a problem, but low-level stuff for which I can make my own interface suits me normally
00:24:26 <wob_jonas> I'm a computer guy, I can work with making my own interface that is shaped what I like
00:24:37 <wob_jonas> even for git I have custom aliases
00:24:46 <ais523> I like the black magic in aimake because it's something that a computer should be able to do better than a human
00:24:55 <ais523> at least, /I'm/ no good at it
00:25:23 <wob_jonas> ais523: build systems are hard, and everyone has different ideas about it. I don't like any of them.
00:25:42 <wob_jonas> but I know it's a genuinely hard problem. I don't even know what a good build system would look like.
00:25:50 <shachaf> I have ideas about that are good.
00:25:58 <wob_jonas> note even as much as for the vcs, where I have ideas which might be contradictory
00:26:05 <shachaf> One day I'll figure out how to do it.
00:26:20 <wob_jonas> but I don't think I need a build system, not for my projects
00:26:21 <shachaf> wob_jonas: What do you think of bazel-style build systems?
00:26:30 <wob_jonas> shachaf: I have no idea what bazel-style means
00:26:39 <zzo38> I just use shell scripts. Each source file contains the commands to compile itself, and then if the program has multiple modules that needs to be put together, that will be another shell script to put all of them together. (For example, look at what is done in Free Hero Mesh.)
00:26:55 <shachaf> wob_jonas: In the style of Google's build system, bazel.
00:27:11 <shachaf> (Which Facebook cloned and called Buck, and Twitter cloned and called Pants, and some other people also cloned.)
00:27:50 <zzo38> This is build system of Free Hero Mesh: http://zzo38computer.org/fossil/heromesh.ui/artifact/5fc19466c4f1bbc5
00:28:37 <ais523> wob_jonas: I have some ideas of what a good build system /isn't/
00:28:40 <ais523> e.g. it isn't imperative
00:28:51 <wob_jonas> ais523: oh, ideas of what it isn't are easy
00:28:58 <ais523> that lets you narrow things down
00:29:08 <ais523> the imperative format of Windows installers makes it very hard to get uninstalling right
00:29:15 <wob_jonas> ais523: there are lots of existing build systems, work with a big project that uses any of them and you'll notice why the build system is unsuitable for that project
00:30:03 <wob_jonas> the build system was chosen by others, which is fine for me because luckiliy they also maintained the build system configuration, I only had to report to them that it's not working
00:30:45 <ais523> I don't think C-INTERCAL's build system is unsuitable for it
00:31:04 <wob_jonas> at one point, the build system actually didn't know about a necessary build order dependence, but apparently nobody else complained that sometimes when you do a clean build at the wrong moon phase, you have to rerun the build process after an error
00:31:05 <ais523> except inasmuch as it's unsuitable for anything
00:31:48 <wob_jonas> the middle part is that the build order was nondeterministic, and sometimes incorrect, building against the dependency that would have been required, so the compilation either failed or used an old version of the object file
00:32:05 <wob_jonas> in a clean build it failed, but people are lazy and don't want to wait for a clean build
00:32:17 <ais523> wob_jonas: this is why I wrote aimake1
00:32:34 <ais523> because I had this sort of screwup in NH4 and couldn't find it
00:32:41 <ais523> back then I was more productive, a build system only took about 24 hours or so to write
00:33:37 <wob_jonas> anyway, in *that* case, the problem wasn't the build system, the problem was that whoever configured it worked *around* the build system. there was actually a good practice on how to use the build system, and if they did that, everything would have been easier. but no, they worked it around with custom rules.
00:34:41 <wob_jonas> rules that made the system worked incorrectly when if they had just used what the build system already provided, almost none of those custom rules would have been necessary, and they could not have forgotten a dependency, because the build system would know it automatically from the other configuration, when they tell the build system what to link
00:34:41 <wob_jonas> with what, instead of working it around
00:35:04 <wob_jonas> but then the devs doing that were young and had to learn.
00:36:34 <zzo38> Maybe a better way might be one program takes from stdin several lines of a format like "file : dependencies : command" and if any of the dependencies are newer or if the file does not exist, execute that command; if the return code is nonzero or if the file still does not exist or still older than some dependencies then it fails. And then you can call it from a shell script with a heredoc.
00:36:45 <zzo38> Would that be better?
00:38:22 <wob_jonas> ais523: for git, my main trick is an alias called git switch, which calls checkout with a double-dash after the argument so it can only switch to a different HEAD but never do the other thing git checkout does, and also prints the previous HEAD before that
00:40:17 <wob_jonas> ais523: I also have some aliases for (git status -bs "$@") and (git log --topo-order -c --name-status "$@") and (git log --topo-order -c -p "$@")
00:41:01 <wob_jonas> there's a few more but those are less generally useful
00:42:05 <wob_jonas> also, I figured out that the git worktree feature is very useful
00:43:19 <wob_jonas> SVN not providing enough low-level hooks also bothers me.
00:44:23 <wob_jonas> One particular example is this, for sparse checkouts. The working tree has a trit of status for every directory checked out, which tells how new files in that directory downstream from the repo will be treated when you update the directory.
00:46:23 <wob_jonas> The state of that trit can be "infinity" which means that everything will be checked out recursively and every subdirectory will have its state set to "infinity", the "empty" state means that new files won't be checked out on an update, and the "immediates" means that files and subdirectories will be checked out but the contents of those new subdir
00:46:23 <wob_jonas> ectories won't and their status will be set "empty".
00:46:39 <wob_jonas> (There's actually a fourth state, "files", but that's irrelevant now.)
00:46:57 <wob_jonas> But the problem is, with the command-line interface, you can't directly change the state of a directory without side effects.
00:47:59 <wob_jonas> You can use svn up --set-depth=infinity to set the state to infinity, but that has the side effect of checking out every existing file under the directory recursively. If it doesn't have a local copy of such a file yet, then it has to be downloaded.
00:48:14 <zzo38> (Oops I forgot, if a file itself has dependencies, also check if those dependencies need resolved too)
00:49:19 <wob_jonas> You can later fix all that by excluding some of the checked out files or setting their depth, in a depth-last order, but you still waste a lot of unnecessary bandwidth and disk space, which defeats one of the main uses of sparse checkouts.
00:50:22 <wob_jonas> Similarly but less bad is reducing the state to "empty" or "files", which has the side effect of uncheckouting all the existing files recursively too, except for the immediate children for "files".
00:51:51 <zzo38> (Also, if a filename is in brackets then it is not a real file, but rather is internal and if it believes it can compile and and the command is executed successfully then it is now satisfied, but initially it isn't)
00:51:59 <wob_jonas> Lowering the state is better than raising, because you can at least check out any files you want again without redownloading, a pristine copy still remains in the cache of the working copy until you run a certain command to clean them up,
00:52:11 <wob_jonas> but still it's a nuisance because you have to do the checkouts again.
00:52:39 <wob_jonas> So setting the states for new files requires you to issue a complicated set of commands recursively for all descendant files in the worst case.
00:53:06 <wob_jonas> I haven't yet checked if the C api can do better, I will look, but in at least one other case even the C api was limited.
00:54:11 <wob_jonas> And it gets much worse if you combine sparse checkout with modules (externals, like git submodule)
00:56:36 <wob_jonas> ais523: in the Incident lexer, if the program is "ab", then is the empty string that occurs three times a token?
00:57:13 -!- oerjan has joined.
00:57:16 <ais523> (also I don't think this could ever matter)
00:57:29 <ais523> actually might it output a few bits?
00:58:19 <wob_jonas> ais523: how does execution start in Incident? which command runs first and what's the state of the stack?
00:58:39 <esowiki> [[La We]] https://esolangs.org/w/index.php?diff=57718&oldid=57693 * Pelirodri * (-23)
00:58:41 <wob_jonas> oh wait, I should read the full description in the calesyta submission, not the wiki page
00:58:46 <wob_jonas> I think it tells the complete rules
00:59:01 <ais523> wob_jonas: start of the program; each command has its own stack, initially empty
00:59:59 <esowiki> [[La We]] https://esolangs.org/w/index.php?diff=57719&oldid=57718 * Pelirodri * (+1)
01:00:15 <wob_jonas> ais523: what does "start of the program" mean? the first command in the source?
01:00:25 <wob_jonas> to me "start of the program" is tautological
01:00:39 <wob_jonas> it means however the language starts the program
01:00:45 <esowiki> [[La We]] M https://esolangs.org/w/index.php?diff=57720&oldid=57719 * Pelirodri * (+0)
01:00:55 <wob_jonas> which could be in main in C (though actually it does a few things before main)
01:01:18 <esowiki> [[La We]] M https://esolangs.org/w/index.php?diff=57721&oldid=57720 * Pelirodri * (+4)
01:01:38 <esowiki> [[La We]] M https://esolangs.org/w/index.php?diff=57722&oldid=57721 * Pelirodri * (+7)
01:03:17 <wob_jonas> I mean, this is an esolang. For all I know it could, say, start at some command where the second occurence is close to the third but the first occurance is very far, maybe the command with the highest ratio of distances is taken with some tie-breakers or something.
01:03:25 <wob_jonas> counting in token occurences of course, not in bytes
01:04:06 <wob_jonas> "Execution of an Incident program starts with the first command incidence in the sequence of commands that the program was parsed into"
01:04:12 <ais523> wob_jonas: leftmost end of hte program
01:04:55 <esowiki> [[Chipish]] N https://esolangs.org/w/index.php?oldid=57723 * Galaxtone * (+3234) Thrown together something quickly, needs some work.
01:05:01 <wob_jonas> it's a pity that calesyta disappeared like the bancstar interpreter
01:05:59 <esowiki> [[Chipish]] M https://esolangs.org/w/index.php?diff=57724&oldid=57723 * Galaxtone * (-1) All better.
01:14:04 -!- ep100 has quit (Ping timeout: 240 seconds).
01:14:41 <wob_jonas> ais523: do you ever wonder if it was your language that they didn't cope with, and that's why they disappeared? or are you more psychologically stable than to even consider that?
01:15:04 <ais523> wob_jonas: if they can't cope with my languages they shouldn't be running an esolang competition :-D
01:21:13 <wob_jonas> ais523: you said you're busy, that means you haven't had time to write more than those two pages of the M:tG turing machine construction, right?
01:21:21 <wob_jonas> the one based on the tournament deck
01:21:33 <ais523> although that's not based on busyness
01:21:46 <ais523> so much as needing a program as an example and not being sure what to put there
01:22:08 <wob_jonas> ais523: it's missing more than just a program as an example, isn't it?
01:22:10 <ais523> as it should ideally be formally undecidable, and less ideally, something where we don't know what the result is
01:22:16 -!- Essadon has quit (Quit: Qutting).
01:22:38 <ais523> also, the M:tG tournament rules changed recently, under the new rules the game is infinitely long and players get slow play warnings until they're disqualified
01:23:42 <moony> Making a golflang. It's getting somewhere. No interpreter yet, but i've defined about 400 of all 1024 instructions, so i'm doing attempts on some codegolf problems to try it out
01:24:51 <wob_jonas> meanwhile, I was in my elements in the last few days, trying my hands at manipulation, evil lord style. I don't know if it will be successful, but I sure enjoyed it. I explained about it before you entered the channel.
01:25:03 <wob_jonas> shachaf: about the turing machine?
01:26:29 <wob_jonas> ais523: also, I was golfing SVG. not quite golfing, I can spare a few characters, but I was reducing its size signidicantly while trying to keep the rendered appearance the same at any zoom level in the particular bounding boxes of the views used.
01:26:45 -!- GoMaD_ has joined.
01:26:53 <wob_jonas> the easy part was removing objects that weren't in the viewports I used. but even then the SVG was too long.
01:27:21 <wob_jonas> I hand-optimized it by replacing some objects with clones and transformed clones of other objects
01:27:51 <wob_jonas> (well, colored clones technically, it's cloning an object that inherits the fill from the parent)
01:28:07 -!- GoMaD_ has quit (Remote host closed the connection).
01:28:07 <ais523> moony: I'm making a golflang atm too!
01:28:12 <ais523> I like Brachylog but its syntax annoys me so much
01:28:17 <ais523> so I'm trying to make one that's similar but has a golfier syntax
01:28:52 <ais523> but it's not revolutionary
01:29:07 <ais523> Brachylog /is/ revolutionary, or at least, it changed the way I think about programming
01:29:17 <wob_jonas> I'll have to look at Brachylog then
01:29:19 <moony> ais523, i decided to use 10-bit instructions, that can potentially take a n-bit constant afterwards.
01:29:31 <ais523> moony: I'm using 5/6-bit instructions
01:29:53 <ais523> it's arguable which, the sixth bit is either part of the instruction or part of the context depending on how you view things
01:30:00 <moony> Result, of course, is instructions like these: https://hastebin.com/akesubemen.nginx
01:30:04 <ais523> Brachylog-alikes don't need many instructions
01:30:27 <ais523> that just shows as a blank page in my browser
01:30:32 <ais523> does it need JS or something? (for a /pastebin/?)
01:30:37 <wob_jonas> ais523: wait, if this isn't something "human-readable" like Jelly or golflang, then why do you even have to use constant number of bits or whole number of bits, rather than arithmetic coding with an optimized frequency table?
01:30:39 <moony> RIP, leme try a diffrent paste site
01:30:51 <ais523> wob_jonas: it is human-readable
01:30:54 <wob_jonas> ais523: don't tell me you can't write an arithmetic coder and decoder.
01:31:12 <wob_jonas> it's human-readable with 6-bit commands? for what kind of humans?
01:31:26 <ais523> humans which work on the base64 representation of the source
01:31:28 <wob_jonas> I mean, sometimes I do strange things like write hex constants
01:31:52 <moony> Here just have the entire list: https://ptpb.pw/BbXF
01:32:20 <moony> well duh, it's just a raw text file. Course it works :P
01:32:21 <wob_jonas> but why does a golflang has to be human-readable? why wouldn't you just use a tool to encode or decode it?
01:32:30 <moony> wob_jonas, That's what i'm doing.
01:32:42 <wob_jonas> some people already use complicated tool to write C++ code, because they write it so unreadable they couldn't read it otherwise
01:32:42 <pikhq> Arguably if you allow for such a tool, you might as well just use lzma.
01:33:13 <wob_jonas> basically they put typos in function names, and then never once notice because they only ever type it once and choose it from some gui autocomplete list the rest of the time
01:33:24 <wob_jonas> I'm not even kidding, those are my ex-colleages
01:33:39 <ais523> I don't believe golfing languages have to be human-readable, but if they're close to a human-readable syntax already, may as well go all the way
01:33:54 <wob_jonas> or at least they don't notice until it's too late to change the interface because it's already committed
01:34:12 <moony> Yea, mine encodes pretty simply, i haven't settled on short names for the various instructions yet, so this example will have to do:
01:34:25 <wob_jonas> it's not like I never make typos, but I type almost every new non-short identifier more than once, or type ones that are already used in the library, and if I make a typo once, then the program won't compile
01:34:26 <zzo38> I think that it does not have to be, but just because it does not have to be does not mean it is not allowed to.
01:34:44 <moony> I_Unsigned8bitC 01010000 I_Repeat2DSquareC 01010000
01:35:03 <moony> An encoder could shorten that slightly to I_Unsigned8bitC010 10100 I_Repeat2DSquareC 01010000
01:35:05 <wob_jonas> ais523: I think non-eso languages should be human readable, and if you write code for which you need fancy gui tools and syntax highlighters to understand, then you're doing it wrong
01:35:17 <ais523> moony: that's 33 bits, right?
01:35:28 <wob_jonas> I can sort of understand the opposite view, which says that you can't get naming right and the gui tools help do mass-renaming of identifiers when you got the name wrong, but still
01:35:32 <moony> yup. 33 bits for a 10x10 square of asterisks
01:35:43 <esowiki> [[La We]] https://esolangs.org/w/index.php?diff=57725&oldid=57722 * Oerjan * (+22) Further evidence that my edits are correct are at http://www.youswear.com/index.asp?language=Chilean (warning: exactly what you think it is).
01:35:45 <ais523> now I'm wondering how that compares to other languages
01:36:02 <moony> it does really well against others on codegolf.stackexchange.com
01:36:05 <wob_jonas> ais523: anyway, thanks for mentioning this
01:36:21 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client).
01:36:52 <moony> shortest i've seen so far that isn't mine is 6 bytes
01:37:09 <ais523> in Jelly that's going to be 6 bytes I think
01:37:11 <moony> (Which goes to a Pyth answer by orlp)
01:37:17 <ais523> hmm, can't you do it in 5? let me try this
01:37:29 <zzo38> I just write C codes with vim and without using the autocomplete and syntax highlighting (actually I am using the syntax highlighting feature of vim, although I am using it not to mark what is what in a C code, but rather to mark trailing spaces, and spaces between tabs, in any file)
01:37:29 <moony> 3 1/8th bytes for the win
01:38:03 <moony> also, what would a better name for this instruction be: I_Base10League = 384, // Returns the "league" a number is in. I.e. if it's less than 1000 but more than 100, the return value is 100.
01:38:09 -!- moei has quit (Quit: Leaving...).
01:38:17 <ais523> gah, no, because Jelly's "repeat last instruction" repeats the 5, not the "times 5"
01:38:47 <ais523> moony: what are the boundaries? 100-999 or 101-1000?
01:38:58 <ais523> either way, that's basically just log+floor/ceil+exponentiate
01:39:49 <ais523> the way I think about this sort of thing is that instead of having to come up with all these builtins manually, a language is more expressive if you can build your statements out of individual concepts
01:39:53 <ais523> "on base-10-logarithm, floor"
01:40:20 <moony> yea, i agree. But handpicking can also do quite a bit
01:40:35 <ais523> I don't like handpicking builtins much, at least not when there are so many
01:40:39 <ais523> it's why I hate Mathematica
01:40:52 <ais523> it's basically a very inefficient pattern-matching core language + loads of builtins that do all the real work
01:41:08 <moony> i'm capped at 1024 builtins. Is that too many for you? :P
01:41:20 -!- moei has joined.
01:41:23 <moony> certainly less than what mathematica has haha
01:42:28 <ais523> the goat incident was a good example
01:42:42 <ais523> someone set a challenge "given a photograph of a goat, determine if it's the right way up or upside-down"
01:42:47 <ais523> turns out Mathematica had a builtin for it
01:42:56 <moony> I_ListSquareNums I_FilterInstanceOf, 2 1/2 bytes, should solve https://codegolf.stackexchange.com/questions/82565/return-the-integers-with-square-digit-sums Yea i saw that
01:43:12 <ais523> this is about square /digit sums/, not square numbers
01:43:40 <ais523> so you need to put the whole "sum digits, then test for squareness" inside the filter
01:43:44 <ais523> I hope you have a good lambda/block syntax
01:44:06 <moony> I_SumOfDigits I_ListSquareNums I_FilterInstanceOf 3 3/4 bytes.
01:44:20 <ais523> so what's the scope of filter-instance-of?
01:44:52 <moony> also, i do. It's pretty simple bracket tricks. Also, I_FilterInstanceOf is selfcontained. It doesn't need a scope.
01:45:16 <moony> the filter function in this case is, well, I_IsInstanceOf
01:45:16 <ais523> it does; suppose your first command there was something vectorisable
01:45:28 <ais523> like, say sum-of-digits vectorises
01:45:48 <ais523> then you could either have I_SumOfDigits (I_ListSquareNums)I_FilterInstanceOf
01:45:58 <moony> ais523, it *is* something vectorizable. That's what sum-of-digits is doing. It's checking if the sum of the digits contains anything from I_ListSquareNums
01:45:59 <ais523> or (I_SumOfDigits I_ListSquareNums)I_FilterInstanceOf
01:46:17 <moony> so in this case, it'd be I_SumOfDigits (I_ListSquareNums)I_FilterInstanceOf
01:46:22 <ais523> the former returns the digit sums that are square, the second the numbers that have square digit-sums
01:46:32 <ais523> and the latter is what this specific challenge is asking for
01:46:55 <ais523> for example, see my Brachylog v2 solution, the { } show the range of what's being filtered
01:47:42 <moony> I just chose to copy a jelly-like tree structure, with subroutine blocks thrown in for compactness usage. Leme think, i'm confusing myself
01:48:12 <moony> I_FilterInstanceOf(I_SumOfDigits, I_ListSquareNums) is how that'd look in C style
01:48:41 <ais523> except that that's not what the problem is asking for
01:49:12 <ais523> you can't solve the problem with those specific primitives at all, in fact
01:49:19 <ais523> because they're too specific
01:49:40 <moony> thanks. Leme clear my head and go doublecheck some notes
01:51:32 -!- ais523 has quit (Quit: sorry for my connection).
01:51:44 -!- ais523 has joined.
01:52:21 <moony> So, I_FilterInstanceOf checks if I_SumOfDigits.result contains any values from I_ListSquareNums (A constant, lazy list). For sake of sanity, I_ListSquareNums has special handling to make sure the check doesn't go on forever. (Marked as organized by size.)\
01:52:33 <moony> i must be misunderstanding the problem
01:53:10 <ais523> the problem is, for any list of integers, return each element of the list whose digit-sum is square; don't return the sum, return the original element
01:53:31 <ais523> in this case, if you convert the list to a list of digit-sums, then filter it, you can't get back at the original list whose elements you summed to make the digit-sum
01:53:57 <ais523> or, more precisely, you don't know which of the filtered elements correspond to which elements of the original
01:55:07 <moony> Alright. I_Filter{ I_SumOfDigits I_IsPerfectSquare 0
01:55:37 <moony> I_Filter starts a SS, so the { has no overhead, and the program ends before a } would be needed
01:55:44 <ais523> although what's the 0 for? a typo for }?
01:56:09 <moony> so it's 31 bits. the 0 is there because I_IsPerfectSquare is a dualpurpose function. If that 0 was a 1, it'd act as a filter instead of a check.
01:56:19 <esowiki> [[La We]] https://esolangs.org/w/index.php?diff=57726&oldid=57725 * Pelirodri * (+60)
01:56:33 <moony> as such, I_IsPerfectSquare is 11 bits, not 10.
01:56:44 <esowiki> [[La We]] M https://esolangs.org/w/index.php?diff=57727&oldid=57726 * Pelirodri * (-1)
01:56:55 <moony> 2 7/8 bytes large. Still a really small solution.
01:56:58 <ais523> anyway, I find one of the earlier problems you come across in designing a golfing language so that you can write nontrivial programs in it, is "do filter-like commands filter over several commands, or a single command, by default?"
01:57:21 <ais523> in this case you have it as "several", which is fine, but means you need lots of } (or a short representation for it) in the common case where you only have a short blockk
01:57:40 <moony> ais523, in my case, it's a mix. Some versions of instructions can function as a } as well
01:57:42 <ais523> most languages do the opposite
01:57:53 <moony> i.e. I_IsGreaterThanES
01:58:40 <moony> the most common check functions have a EL/ES embedded into them :D
01:58:54 <ais523> anyway, the main advantage over most golfing languages you have for this is a) blocks that are extending by default, b) shorter names for these builtins
01:59:11 <ais523> digit sum and is-square are both 16 bytes in most current-champion golfing languages, rather than 10
02:00:04 <moony> uh, what do you mean by that. *eyes Jelly's 7 byte solution*
02:00:07 <ais523> the language I'm working on could extend a block around the whole program without using extra bits too; I'm not sure it'll have a 6-bit builtin for select, though, so we might need 12 for that
02:00:43 <ais523> digit sum would be 12, is-square would possibly be 18
02:01:17 <ais523> so 12+12+18 = 42 bits, so 6 bytes (unless the trailing two bits could be inferred somehow)
02:02:33 <moony> https://codegolf.stackexchange.com/questions/172586/nightmare-puzzlang-translator inspired me to start making this lang, btw. None of the mainline golf languages had a nice, clean way to handle both wrapping arrays and moore neighbourhood checks.
02:03:41 -!- nfd9001 has joined.
02:03:50 <ais523> actually this has made me realise that a "restart" command at the end of the block (to restore its output to equal its input) should treat references to "this block's output" within the block itself as the value /before/ the restart
02:04:02 <ais523> (because if it wanted the value afterwards, it could just use "this blocks' input")
02:05:26 <moony> assuming the input was a boolean matrix, the solution in Lux would be: I_SetWrapping I_MooreTransformSS{ I_Collect I_NumToChar } I_Collect
02:06:09 <moony> I_Collect is dualpurpose as well, but it uses type checks instead of a bit se- fuck i just realised an inconsistency
02:06:16 <moony> time to make I_CollectBits
02:06:27 <moony> I_SetWrapping I_MooreTransformSS{ I_CollectBits I_NumToChar } I_Collect correction :P
02:07:47 <moony> ais523, if you mean like a stack frame, stack framing was one of the first things i thought about, alongside a stack, for more complicated ops where stack manip is beneficial
02:08:45 <ais523> Brachylog doesn't have anything resembling a stack, that definitely hurts in more complex programs
02:09:07 <moony> Maybe some sort of indexable memory would be beneficial too. I have the encode space for it
02:09:38 <ais523> my recommendation is that you make it indexable via arbitrary objects
02:09:41 <ais523> sort-of like a giant global hash table
02:10:08 <moony> Mm. Only thing it won't be indexable by is lists, because lists technically arn't data
02:10:37 <ais523> why make an exception for those?
02:10:38 <moony> they're their own little thing due to the huge diffrence between lists, and the other types
02:11:13 <moony> But thats internal only
02:11:21 <moony> to the user they're like the rest of the types
02:11:52 <moony> also indexing by a list is a little silly, and the lang's int type can fit a UUID if you need one. (128bit signed integer)
02:12:43 <moony> but i like the global hash table idea
02:13:01 <ais523> the point is to use the hash table for golfing purposes
02:13:18 <ais523> things like my "sort by first occurrence" golfing challenge, the shortest solutions used one
02:13:33 <ais523> (the challenge: given a list, sort the list, where the sort key is "how early the first occurrence of this element appears in the list")
02:14:16 <moony> yea, i know. I can probably make lists function as hash tables when indexed by nonnumbers, which is arguably better
02:14:43 <moony> they'll function as standard vectors when you don't do that, however, for speed/sanity's sake
02:15:03 <moony> or maybe they should be a seperate type. But that means even more special handling code for each instruction
02:15:09 <ais523> several non-esolangs have array-like structures which you can index by basically anything, and which work like an array when you use numbers
02:15:13 <ais523> Lua and PHP, for example
02:15:26 <esowiki> [[User talk:Oerjan]] https://esolangs.org/w/index.php?diff=57728&oldid=54913 * Pelirodri * (+698)
02:15:35 <moony> so i'll go with that
02:16:02 <moony> I wonder how the Wrapping flag would work with hashmaps tho. that's going to be a difficult semantics issue
02:16:30 <moony> (When it's set, a 1D list pretends to go on forever, repeating itself, a 2D list wraps in a torus fashion, and so on)
02:17:09 <ais523> oerjan: I don't think that language is quite special/amazing enough to be [[Category:Shameful]]
02:17:22 <ais523> that's mostly reserved for things that are not just bad, but spectacularly bad, to the point where it becomes something worth preserving
02:18:19 <moony> firefox pls y u update without asking me
02:18:30 <moony> right, i was running yay -Syyu in the backround
02:18:33 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=57729&oldid=57694 * Pelirodri * (-254)
02:18:44 <moony> sorry for blaming you, firefox /s
02:20:07 <moony> I_Divisors I_Square I_Sum I_IsPerfectSquare 0 solves https://codegolf.stackexchange.com/questions/171943/sum-textsquare2 but 05AB1E beats it by a 8th of a byte ):
02:20:36 <moony> mostly because 05AB1E uses the exact same command sequence :P
02:21:35 <ais523> this is the tradeoff between having a few general-purpose builtins and many special-purpose builtins
02:22:13 <moony> each language has it's advantage
02:22:16 <moony> there's no right way
02:22:34 <moony> i mean look at Brainflack of all things, it's pretty good with triangles
02:22:36 -!- sprocklem has quit (Ping timeout: 252 seconds).
02:24:48 -!- sprocklem has joined.
02:30:25 <esowiki> [[User talk:Pelirodri]] N https://esolangs.org/w/index.php?oldid=57730 * Pelirodri * (+0) Created blank page
02:34:17 <ais523> moony: here's a problem you should test your language on: https://codegolf.stackexchange.com/questions/129596/am-i-divisible-by-double-the-sum-of-my-digits
02:34:41 <ais523> as that's the most common sort of problem that requires at least minimal stack discipline
02:34:43 -!- zamN has joined.
02:35:00 <ais523> Jelly's advantage over other golfing languages, when it's present, mostly comes down to its defaults being highly suited for that sort of porblem
02:35:55 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=57731&oldid=57729 * Oerjan * (+355) Replace accidentally deleted content and add unsigned templates
02:36:15 <moony> alright, leme see how i can do it without adding new builtins
02:36:36 <moony> then i'll see what i can improve
02:38:09 -!- zamN has quit (Remote host closed the connection).
02:39:13 <moony> I_Duplicate I_SumOfDigits Num_2 I_Multiply I_Swap I_Divisors I_FilterInstanceOf seems closest.
02:39:28 <moony> For one, doubling a number is a common op, so a I_Double instruction is a good idea.
02:40:40 <moony> I_Duplicate I_SumOfDigits I_Double I_Swap I_Divisors I_FilterInstanceOf
02:41:01 <moony> I_IsDivisorOf would probably be a nice check/filter to have.
02:41:44 <moony> so I_Duplicate I_SumOfDigits I_Double I_IsDivisorOf 0
02:42:52 <moony> 5 1/8 bytes. pretty soundly beat by some of the major langs. RIP
02:43:49 <moony> so, hm. Would making I_SumOfDigits have a nonconsuming version be worth it, or not.
02:44:03 <moony> Two ways that can be done. Make an alt instruction, or make it take up an extra bit of space
02:44:27 <moony> I_SumOfDigits is pretty uncommon, so it's probably not worh it
02:45:40 <esowiki> [[User talk:Pelirodri]] https://esolangs.org/w/index.php?diff=57732&oldid=57730 * Oerjan * (+247) Fine
02:46:13 <oerjan> ...why did i use bold instead of italics...
02:48:40 <moony> Truth machine: I_LoopUntilFalseSS{ I_TeePrint 2 1/2 bytes
02:50:35 <moony> I made STDin readable as a stream without thinking about a cat program over 100 instructions ago. Cat program: I_STDin
02:53:18 * moony renames to I_STDIO to make it more useful
02:56:37 -!- broquea12 has joined.
02:57:33 -!- broquea12 has quit (Killed (Unit193 (Spam is not permitted on freenode.))).
03:01:24 -!- TimothyGu3 has joined.
03:10:47 -!- TimothyGu3 has quit (Ping timeout: 252 seconds).
03:59:01 <moony> https://codegolf.stackexchange.com/questions/70837/say-what-you-see Code: I_Unsigned8bitC100 01100 I_Repeat1In{ I_RunlengthEncode }
04:01:39 <moony> Code: I_CmdArgs I_CountdownLp2InSS{ I_RunlengthEncode I_TeePrint } should be correct.
04:01:54 -!- xkapastel has quit (Quit: Connection closed for inactivity).
04:03:53 <moony> I should probably start actually implementing this :P
04:36:52 -!- XorSwap has joined.
04:54:35 -!- bradcomp has joined.
05:13:00 -!- variable has joined.
05:43:05 -!- Goldman6020 has joined.
05:45:55 -!- trout has joined.
05:47:06 -!- ais523 has quit (Quit: quit).
05:48:56 -!- variable has quit (Ping timeout: 260 seconds).
05:51:24 -!- Goldman6020 has quit (Ping timeout: 252 seconds).
06:20:04 -!- trout has quit (Ping timeout: 240 seconds).
06:20:42 -!- variable has joined.
06:32:10 -!- bradcomp has quit (Ping timeout: 272 seconds).
06:44:15 <moony> I_MathOp2Chain, I_MathOp3Chain, and I_MathOp4Chain should be pretty useful. Allows joining up 4 4 function math operations (+ - * /) into one instruction, only using up 6 extra bits (Or 2 extra, in the case of I_MathOp2Chain)
06:54:48 -!- trout has joined.
06:58:21 -!- variable has quit (Ping timeout: 260 seconds).
06:59:15 -!- S_Gautam has joined.
07:00:21 -!- MiX-MaN18 has joined.
07:02:05 -!- MiX-MaN18 has quit (Remote host closed the connection).
07:09:14 -!- oerjan has quit (Quit: Nite).
07:10:17 -!- sebbu has joined.
07:13:48 -!- sebbu2 has quit (Ping timeout: 252 seconds).
07:22:51 -!- XorSwap has quit (Ping timeout: 260 seconds).
07:33:38 <esowiki> [[La We]] https://esolangs.org/w/index.php?diff=57733&oldid=57727 * Pelirodri * (+1)
07:34:40 -!- variable has joined.
07:34:52 <esowiki> [[User talk:Oerjan]] https://esolangs.org/w/index.php?diff=57734&oldid=57728 * Pelirodri * (-140)
07:36:06 -!- trout has quit (Ping timeout: 252 seconds).
07:36:11 -!- Ducky^7 has joined.
07:38:38 -!- Ducky^7 has quit (Remote host closed the connection).
07:53:19 -!- variable has quit (Quit: Found 1 in /dev/zero).
08:12:48 -!- stickystyle28 has joined.
08:14:25 -!- stickystyle28 has quit (Remote host closed the connection).
09:14:22 -!- swa_work19 has joined.
09:21:16 -!- swa_work19 has quit (Ping timeout: 260 seconds).
09:27:36 -!- AnotherTest has joined.
10:17:01 -!- jpsharp18 has joined.
10:25:45 -!- jpsharp18 has quit (Ping timeout: 252 seconds).
10:27:52 -!- rhbvkleef26 has joined.
10:33:10 -!- rhbvkleef26 has quit (Ping timeout: 244 seconds).
11:13:14 -!- bourbon26 has joined.
11:19:22 -!- bourbon26 has quit (Ping timeout: 246 seconds).
11:33:09 -!- SopaXorzTaker has joined.
11:33:47 -!- arseniiv has joined.
11:58:54 -!- SopaXorzTaker has quit (Quit: Leaving).
11:59:35 -!- sebbu2 has joined.
12:03:06 -!- sebbu has quit (Ping timeout: 252 seconds).
12:14:54 -!- xkapastel has joined.
13:17:24 -!- nosomebodies has joined.
13:48:36 -!- BallChang-CN has joined.
13:52:35 -!- nosomebodies has quit (Ping timeout: 256 seconds).
13:52:53 <esowiki> [[Talk:SynDev]] https://esolangs.org/w/index.php?diff=57735&oldid=57703 * Plokmijnuhby * (+236)
13:53:34 -!- BallChang-CN has quit (Remote host closed the connection).
14:16:24 -!- sebbu2 has changed nick to sebbu.
14:26:41 <moony> Did a bit of reworking older parts. I_FrmSquareMtrx2C 0101010001010000 is the new solution for the 10x10 asterisk grid
14:27:01 <moony> maybe a I_NumToChar might be necessary as well
14:50:04 -!- veeti29 has joined.
14:51:00 -!- veeti29 has quit (Remote host closed the connection).
14:52:47 -!- SopaXorzTaker has joined.
15:41:17 -!- wob_jonas has joined.
15:41:50 <wob_jonas> “<ais523> someone set a challenge "given a photograph of a goat, determine if it's the right way up or upside-down"” hmm, that sounds quotable
15:44:59 <wob_jonas> <ais523> the problem is, for any list of integers, return each element of the list whose digit-sum is square; don't return the sum, return the original element =>
15:45:00 <wob_jonas> an yes. that's why J has the APL repeat primitive (#) which in all these common cases we use as a fork (#~ c) where c is the verb that transforms the number to a bool condition
15:46:38 <wob_jonas> only APL calls that operation "compress" becuse it only takes boolean repeat counts, not integers
15:46:53 <wob_jonas> matlab has that too, but with a very bad syntax
15:47:06 <wob_jonas> overloaded with indexing depending on whether the type is an integer or bool
16:32:17 <wob_jonas> "<moony> Mm. Only thing it won't be indexable by is lists, because lists technically arn't data" => are you making another Q, in which you can index by list but only with special inconvenient syntax, or a Mathematica, where lists flatten into an argument list so they would appear as multiple levels of indexes?
16:32:53 <moony> those both sound awful lol
16:33:19 <moony> also, the lists arn't data thing was going to be internal only, until i recently figured out a good way to make it function as data
16:33:41 <wob_jonas> “<ais523> (the challenge: given a list, sort the list, where the sort key is "how early the first occurrence of this element appears in the list")” => did J win with ([:;</.) ?
16:33:49 <wob_jonas> J practically has a builtin for that
16:34:15 <wob_jonas> but yeah, J doesn't have a builtin upgoat recognizer
16:34:23 <moony> I have 500~ commands in my list now. Should i fill all 1024 slots, or should i begin building the interpreter...
16:35:17 <wob_jonas> you can still add commands later, like in blsq
16:35:20 <moony> also because i can: I_EngWordLookup is a thing
16:35:38 <moony> 20 bits for the word, 4 bits for determining punctuation and if it should be uppercase'd
16:36:05 <moony> Hello, World! is 8 1/2 bytes large.
16:36:35 <moony> wob_jonas, it's similar in both syntax and design.
16:36:46 <wob_jonas> oh, so you actually have a syntax now?
16:36:50 <moony> but some extra goodies
16:36:56 <wob_jonas> then definitely build an interpreter
16:37:05 <moony> wob_jonas, it's postfix, with the occassional prefix
16:37:39 <wob_jonas> but golfers abbreviate its name to blsq
16:37:50 <wob_jonas> only I think there's only one golfer who uses it
16:38:21 <moony> mm. Also, i'm 100% going to have to write an encoder that converts the human readable format to the encoded format
16:38:29 <moony> i'm not manually manipulating bits, thank you very much
16:38:54 <moony> wob_jonas, this lang has 2 stacks. And maybe a global hash table, depending on if i decide to heed it
16:39:31 <moony> also aliases for 8 subroutines, and support for 65k of them max.
16:39:46 <wob_jonas> moony: two with or without counting the return stack (the stack of commands to be executed)
16:40:41 <moony> first things first: Remember how the hell to use C++'s type system, i've gotten rusty ):
16:45:07 -!- aloril has quit (Ping timeout: 240 seconds).
16:45:44 -!- aloril has joined.
16:46:19 -!- bradcomp has joined.
16:50:10 <wob_jonas> "<moony> yea, i know. I can probably make lists function as hash tables when indexed by nonnumbers, which is arguably better" => what? like awk or lua? no, don't do that!
16:50:35 <wob_jonas> "<ais523> Lua and PHP, for example" => ah
16:51:05 <moony> i still have to write my own list implementation anyways, because negative indexes, wrapping, and matrix handling
16:54:04 <wob_jonas> "Num_2 I_Multiply" => you have 500 primitives and no multiply by 2?
16:54:17 <wob_jonas> ah, that's what you say in the next line, ok
16:54:50 <wob_jonas> moony: are some of the 500 primitives assigned to the same code and will overload by the type of the top of stack?
16:55:05 <moony> some use the same code, and yes they overload based on type
16:55:32 <moony> i.e. a List[Char] and a List[Number] can be treated differently.
16:55:48 <moony> (Note that Char and Number are the same type, the only diffrence is literally just a flag)
16:57:25 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client).
17:03:39 -!- SopaXorzTaker has changed nick to Xukkot.
17:04:06 <esowiki> [[La We]] https://esolangs.org/w/index.php?diff=57736&oldid=57733 * B jonas * (-1) ok, do edit war with oerjan, an admin, if that's what you want
17:07:31 <moony> it's been 5 years since the esolang wiki last had a new "featured language"
17:07:45 <moony> shouldn't we pick something new? :P
17:07:58 -!- bradcomp has quit (Ping timeout: 245 seconds).
17:55:01 -!- Xukkot has quit (Quit: Leaving).
18:46:34 -!- Kaynato has joined.
18:46:37 -!- Kaynato has quit (Client Quit).
19:00:37 -!- hexa-0 has joined.
19:01:30 -!- hexa-0 has quit (K-Lined).
19:13:06 -!- LogicAside8 has joined.
19:13:15 -!- LogicAside8 has quit (Remote host closed the connection).
19:42:50 -!- moei has quit (Quit: Leaving...).
20:01:13 -!- b10n1k10 has joined.
20:01:18 -!- b10n1k10 has quit (Remote host closed the connection).
20:14:25 -!- aibo17 has joined.
20:21:25 -!- XorSwap has joined.
20:21:29 -!- aibo17 has quit (Ping timeout: 252 seconds).
20:37:58 -!- skibo4 has joined.
20:46:06 -!- skibo4 has quit (Ping timeout: 260 seconds).
20:54:13 -!- arseniiv has quit (Ping timeout: 245 seconds).
21:18:19 -!- Phantom_Hoover has joined.
21:26:01 -!- moei has joined.
21:30:02 -!- ep100 has joined.
21:39:04 <ep100> do any of you know of any esolangs with probabilistic parsing? I'm thinking that would be an interesting idea
21:40:17 <ep100> There's a great probabilistic parsing framework called Parserator which I'm wanting to use more >:)
21:46:33 -!- welterde16 has joined.
21:46:41 -!- welterde16 has quit (Remote host closed the connection).
21:53:29 -!- variable has joined.
21:54:17 <esowiki> [[BF-RLE]] https://esolangs.org/w/index.php?diff=57737&oldid=25359 * Rdebath * (+2744) Replace this with a more inclusive description of RLE encodings.
21:56:12 <esowiki> [[User talk:Qwertyu63]] https://esolangs.org/w/index.php?diff=57738&oldid=57717 * Qwertyu63 * (+351) /* Unused image */
21:56:28 -!- bradcomp has joined.
21:59:14 <esowiki> [[User talk:Qwertyu63]] M https://esolangs.org/w/index.php?diff=57739&oldid=57738 * Qwertyu63 * (+2)
22:04:42 -!- AnotherTest has quit (Ping timeout: 264 seconds).
22:07:12 <zzo38> I wrote a C header file (including documentation) for C Audio Simple Plugin. Let's see if it is good and what stuff should be changed, in order whoever has improvement to do, while it is still the draft version. It is: http://zzo38computer.org/textfile/miscellaneous/casp.h
22:11:33 <zzo38> I am not sure what mechanism should be used for timing information, how to do wrappers, even if other stuff is necessary or not
22:27:10 -!- trout has joined.
22:30:31 -!- variable has quit (Ping timeout: 260 seconds).
23:00:22 -!- danieljabailey has joined.
23:04:21 -!- trout has quit (Ping timeout: 260 seconds).
23:07:56 -!- variable has joined.
23:10:14 -!- erkin has quit (Remote host closed the connection).
23:15:43 -!- erkin has joined.
23:17:41 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
23:39:41 -!- trout has joined.
23:42:04 -!- variable has quit (Ping timeout: 240 seconds).
23:52:44 -!- bradcomp has quit (Ping timeout: 272 seconds).