Time Nick Message 02:15 [MTMatrix] hi 02:15 [MTMatrix] @everyone 02:15 [MTMatrix] <@276418762561814539> 02:16 [MTMatrix] 276418762561814539 02:16 [MTMatrix] <@276418762561814539> 02:16 [MTMatrix] <@276418762561814539> 02:16 [MTMatrix] <@276418762561814539> 02:16 [MTMatrix] <@276418762561814539> 02:16 [MTMatrix] <@276418762561814539> 02:16 [MTMatrix] <@276418762561814539> 02:18 MTDiscord https://tenor.com/view/oh-well-thats-wonderful-johnny-rose-johnny-eugene-levy-schitts-creek-gif-20290435 02:19 MTDiscord Try not to be the reason we have to establish cross-platform rules 02:19 MTDiscord also @mistere_123 relay got kicked btw 02:20 hare_hare_yukai the relay bot got kicked instead of the user 02:20 hare_hare_yukai lol 02:33 MTDiscord and for a second there I thought something interesting might be happening for once 02:46 MTDiscord So I have to make it rejoin? 02:46 luk3yx It was banned 02:46 MTDiscord Niec 02:46 MTDiscord Nice* 02:46 MTDiscord Well, that's wonderful 02:46 MTDiscord who banned it? 02:47 MTDiscord the bot 02:47 MTDiscord https://cdn.discordapp.com/attachments/749727888659447960/1149536469766131762/image.png 02:47 MTDiscord Well, ping me when there's something I can do about it 02:47 MTDiscord I was about to say, probably the spam detection 02:48 MTDiscord Understandable, unfortunate, but understandable 02:49 MTDiscord Oh, I could make a new user (unless the ip is banned), but it'd just happen again 02:49 MTDiscord Irc is easy to host, why don't we selfhost it again? 02:49 MTDiscord what the heck does self hosting irc have to do with anything? 02:50 MTDiscord Because for large public projects having the wider network staff is helpful 02:50 MTDiscord No random uncontrolable bans from a higher authority 02:50 MTDiscord Shadowbot is an MT thing 02:50 MTDiscord 🤦, thats a minetest staffs bot 02:50 MTDiscord Oh well, someone can do something about it then 02:52 MTDiscord I thought you were implying that the ban was a done deal, hnce I assumed it was libera which banned the bot 02:52 MTDiscord *hence 02:55 MTDiscord btw mistere: probably should create new matrix channels and link the bots to them instead, so they actually can be moderated 04:07 MTDiscord Since that is in the official minetest space, that's not my job. Lmk when its ready, assuming the relay gets un-banned, and I'll make the bot join said channels 07:55 erle why exactly does the string <@276418762561814539> lead to MTMatrix getting kicked? 08:01 MTDiscord it's not the string itself, it's because of spam, ie sending the same string again and again in short amount of time 08:01 erle okay, butwhat does it *mean* ? 08:14 luk3yx It looks like a Discord mention, I have no idea who they were trying to mention 08:36 MTDiscord it's a Discord mention for benrob 09:23 hare_hare_yukai ah, the things pixel cuboid games will make people do! 10:05 MTDiscord The matrix relay (and probably also the Discord relay) should both have bots that trigger and mute/kick people before ShadowBot kicks the bridge. 10:06 MTDiscord luk3yx, erle: They were mentioning Benrob0329 10:06 luk3yx Ah 11:06 MTDiscord Honestly, we should probably disable hash mentions 11:07 MTDiscord (Discord will interpret various hashes inside as links or mentions, but there is no reason to be pinging people like that from IRC) 11:11 luk3yx The relay bot was automatically unbanned 11:12 sfan5 not automatically, that was me 11:17 luk3yx Oh 11:22 celeron55 ShadowBot should probably be configured to not kickban the relay bots, but that doesn't remove the responsibility of spam filtering from the relay bots 11:22 erle can't you just ratelimit the relay as a first line of defense? 11:23 erle i mean if you paste the entire script of the bee movie into an irc client, some will ratelimit it so that you don't get kicked 11:23 erle IMO a bot should do the same 11:23 celeron55 i guess it's up to MisterE123 to look at the configuration options of the relay software that relay is using 11:25 sy_ Hello :) 11:30 MTDiscord I think there's a ratelimit option 11:36 erle well then the question is what rate freenode tolerates 11:36 erle surely that is documented somewhere 11:37 erle mistere_123 now that you are here, do i have provide more details for the blog regarding my text renderer? 11:37 celeron55 first of all, this is libera. second of all, the limit is in ShadowBot which is a bot we maintain 11:37 erle like if you want a better screenshot, what should be on it? it's a library after all 11:37 erle celeron55 right, i have brainrot obv 11:37 erle celeron55 thanks for making it clear that i should think before typing 11:37 erle i hope it can keep me honest 11:39 erle celeron55 btw, boring stuff i could maybe make a video for: 1. how to refactor the build of minetest 2. how to add doom 3 style crisp shadows 3. how to optimize texture transfers. but that's not mods, that's engine. would you consider it interesting or not? 11:39 erle the only interesting mod stuff i think i could do is explaining exploits 11:39 erle but then again lizzy can do that as well and isn't 11:40 erle and lizzy is a much more convincing anime girl than i am ig 11:43 celeron55 i think nobody is able to make engine dev interesting. you can try to prove me wrong if you insist 11:43 celeron55 explaining exploits is probably a fairly interesting video subject 11:44 erle well i'm trying to goad lizzy into submitting a talk with me about how to exploit minetest (in particular mcl2) 11:44 celeron55 funnily enough i'm not the wrong person to ask this from. i watch a lot of weird stuff on youtube 11:44 erle given she has a history with this cheat client stuff 11:45 erle yeah about engine development, if actual engine developers are not interested … 11:45 erle i vividly remember that the only people interested in my opinions about the shortcomings of minetests current build scripts were … authors of build systems. like, wtf. 11:45 erle i mean it makes sense kinda 11:45 erle these people have domain knowledge and interest 11:45 erle :P 11:46 erle but no interest in minetest generally 11:46 celeron55 there's only one person from which i've watched some actual engine development. it's jonathan blow. but even that gets boring after a few hour long videos 11:46 erle do you watch minetest mod development videos? (if there are any) 11:46 erle i mean debugging sessions are funny 11:46 celeron55 he's pretty good and pretty edgy, which makes it interesting 11:46 erle i mean some bugs are pretty funny 11:47 erle in mineclone2 there are shulkers (portable chests) and they can contain bread and villagers eat bread 11:47 erle so villagers are going to eat your portable chest if bread is in it 11:47 erle surely you can imagine how that bug looks in the source code 11:47 erle (but it seems mcl2 contributors have so far not figured it out, at least they had not yesterday, when i last checked) 11:48 erle i love these kind of bugs that are comedic stories by itself 11:48 celeron55 i think i've watched some minetest mod development videos, but i don't think there have been many. you need to be brutal with the cuts though, the raw material just isn't going to be interesting no matter what, and a timelapse-only video almost never is entertaining 11:48 erle hmm i see 11:48 erle i once had the idea to use the mobs API for zombies that could break down doors 11:48 erle by reusing the definition of “sheep eat grass” for “zombies eat doors” 11:49 erle the problem here being, of course, that the zombie should drop the door 11:49 erle not eat it 11:49 erle but it was funny for a few minutes 11:49 erle and now i wonder if it was only funny for me and my friends 11:49 erle or if it would be funny in a video 11:49 erle what do you think 11:49 erle celeron55, do you like fitmc style? i can imitate that easily 11:50 erle if you don't know fitmc, don't watch the newest video on youtube that seems like it is from fitmc, it is AI generated 11:50 erle watch some older ones 11:50 erle he stretches the material sometimes 11:50 erle but it's pretty fucking funny 11:50 erle like this one time he was talking about people hacking into some server and finding stuff that implicated the server owner in griefing their own base 11:50 celeron55 well, i believe you can make an interesting video about anything, if you make sure to include only the key moments and key commentary in it. leave out the gruntwork, or if you want to hilight the gruntwork, include it as very fast timelapse 11:51 erle it was a book item in a map download with the title ”i am gay” that one of the people breaking into the server had written themselves on a base that had been griefed 11:51 erle and it was in 2 different bases in the map download 11:51 erle implying that the map downloader had stolen it from one base after downloading it and before griefing it 11:51 erle and then deposited it in the other one 11:51 erle before downloading and griefing it 11:51 erle i love these little crime stories 11:52 erle i have a story myself about mesecons 11:52 erle i once tried to do cursed stuff at the map border 11:52 erle and it resulted in the so-called crashbutton 11:52 erle a button near the map border that you could press to crash the server 11:53 erle for a very short time, that button became a pilgrim location for assholes (and the first guy pressing it did it repeatedly and uploaded a video to youtube) 11:53 celeron55 a lot comes down to your storytelling ability also. i personally am ridiculously bad at telling stories. no matter how interesting it is, i make it sound bland. some people can make anything sound interesting 11:53 erle hmmm 11:54 erle i wonder if i can 11:54 erle i thought my stories are liked because i am a weirdo magnet 11:54 MTDiscord (for the irc people, replying to mistere) will make channels tonight, and let you know 11:55 erle hey wsor4035 you any new opinions on the unicode_text API? i remember you having a very low tolerance for bullshit, so ig it may apply to APIs too 11:55 erle i should stop asking around after today 11:55 erle it gets tedious 11:55 erle celeron55 do you like marcel vos? 11:55 celeron55 i'd say just publish it and say it's good. then if it turns out it wasn't good, fix it based on the feedback 11:56 erle celeron55 for me marcel vos is the best youtuber in terms of information density and how niche the topics are 11:56 erle the videos are short and exactly as long as they need to be 11:56 erle celeron55 well often asking around a bit for feedback will uncover stuff that is hard to fix after release, that's why i am doing it 11:57 erle celeron55 but so far everything i got was incremental improvement suggestions, like having a loader for bdf font format because you can render OTF to bdf 11:57 erle and OTF would mean being able to render a lot of fonts 11:57 erle not just 16×8 and 16×16 .hex fonts 11:57 celeron55 i've been kind of avoiding rollercoaster tycoon videos because there are so many of them, but looks like i've watched at least three of his videos 11:57 celeron55 3 being more than 1, i think i liked them 11:58 celeron55 actually looks like 7 11:58 celeron55 8 11:59 celeron55 but he has published 280 11:59 erle regarding API design: i am pretty sure that every single mod coder who tripped over the dynamic media sending suddenly becoming async would have preferred if the function name had just changed 11:59 erle instead of that every single mod i saw that was using dynamic media suddenly had a race condition 11:59 erle and you can't just fix it after the fact 11:59 erle this is what we have now 12:00 erle i wish to make not *that* kind of mistake (i.e. where every API user recoils in horror, even if it is still usable) 12:00 celeron55 it happens 8) 12:00 erle yeah, but it only happens if you publish the first thing that comes to mind 12:01 erle as i am not that good with taking others perspectives, i only can ask for biting criticism 12:01 celeron55 i'm sure it went through the proper PR process 12:01 erle surely 12:01 erle but the issue was, it was from the perspective of the engine devs 12:01 erle not from the perspective of the API users 12:01 celeron55 that's why the modders should follow and comment on API PRs 12:01 erle from an engine POV, i totally get it 12:02 erle but from an “how do you upgrade an API” POV, it's a footgun 12:03 erle celeron55 so far my experiences with commenting on API PRs were „if's about 50/50 if someone even takes technical comments seriously unless someone becomes really fucking annoying about it” and i don't wish to be fucking annoying 12:03 erle i mean i will be the next time someone does something extremely stupid 12:03 erle but only then 12:03 erle the annoying thing has to be saved for actual emergencies 12:03 celeron55 you don't need to make sure it's followed upon or take it personally in any way. just throw in the comment 12:04 celeron55 if nobody acts on it, it's on them 12:05 erle well, i recently chatted with appguru about the minetest.compress() thing supporting zstd, a ticket that appguru had opened. i had benchmarked it and figured that to be worth it *in mods*, you need to support custom zstd dictionaries, because the payloads usually used by minetest mods compress slighly *worse* than zlib simply based on their size. it was entirely ignored, even though i probably spent several hours on benchmarks. 12:05 celeron55 it's mostly a matter of information flow 12:06 erle the thing is, appguru (and probably others) thought the savings for mapblocks would probably translate well here 12:06 erle and now you have an API that supports two compression methods but the one that *looks* like the better one is not necessarily better in practice because the implementation is half-assed 12:07 celeron55 but your comment is still there, ready to answer questions to people who come asking them later 12:07 erle celeron55 if you can tell me what i could have done better communication-wise, please do: https://github.com/minetest/minetest/issues/12512 12:09 erle celeron55 my experience is that almost no one reads the docs lol 12:09 erle the thing is, i might be totally wrong here. but no one even tried to address it. that's demotivating. 12:10 erle anyway, i think it's a stakeholder thing. API consumers should have a stake. 12:11 erle this can generally be seen in the difference that the APIs of cheat clients have 12:11 erle like not only which they have, but how they are coded 12:11 erle the people making these APIs are usually the users of the APIs 12:11 erle that does not mean they are well-designed 12:11 erle but they surely address different concerns than what minetest coredevs address 12:12 erle the ideal API is probably somewhere in between 12:12 erle i mean the most horrible thing i have seen is a cheat client figuring out what item corresponds to a dropped entity based on the texture assigned to it 12:12 erle dropped item entity i mean 12:13 erle the only way this approach is not 100% gross is if it is the only way 12:13 erle it's still gross then 12:13 erle but necessary hehe 12:15 celeron55 i can see you are too verbose. nobody wants to read the amount of text you have posted in the PR, and you go onto all kinds of tangents 12:17 celeron55 but it looks like the matter was considered as bringing up the API on par with the engine internal addition 12:17 erle appguru explained to me it was because he thought that it could be useful for schematic compression 12:17 erle without benchmarking it 12:17 erle that's not in the ticket 12:17 celeron55 arguing against that would require stating specifically and succintly that it is a footgun to less prepared modders 12:18 erle celeron55 given verbosity, should i just have posted “in my tests that i have done with data thrown into minetest.compress() zstd performed worse unless you are willing to wait on the order of seconds” ? 12:18 celeron55 not to tell about dictionaries or whatnot 12:18 erle like what is the shortest way to show this API looks like it's better, but it's not 12:19 erle this happens a lot in projects btw 12:19 erle that someone suggests an improvement that if done half-way makes things worse because footguns 12:19 erle as jwz said: once is coincidence, twice is sabotage, three times is official GNOME policy! ;) 12:20 erle celeron55 the dictionary thing is the reason why zstd outperforms zlib for small data though. like, if you don't do it, you just get maybe 2× to 3× compression or decompression speed at a slightly worse size (which in my tests was not relevant at all for the amounts of data that mods compressed). 12:21 erle i mean, it's like the minetest.encode_png() thing, where to have a reasonably good PNG encoder you need prefiltering, but that's work, so it was not done and the end result is images 20 times that size. i bet if i had pointed that out as it was implemented, no one would have cared as well. 12:22 celeron55 all in all, it barely matters. the only case where it matters is if a modder turns up the compression too high and wastes CPU that way, but even that can practically be statically checked from the mod code if necessary 12:22 erle nah, if they turn up the zstd compression even a little too high, they can stall the server for 10 seconds 12:22 erle that's the actual foot gun much worse than ”you don't get better compression than zlib” 12:22 erle like i'm sure newbies will be like “compression? i want THE MOST” because zlib definitely does not stall ever 12:23 celeron55 that's probably what you should have stated in the PR 12:23 erle hahaha 12:23 erle it's literally at the end of the last bullet point i have 12:23 erle > For a ~7% improvement in compression ratio over Zlib, this operation can take >0.25s and for a ~13% in compression ratio, the operation can take >1s. This seems like a huge API footgun to me, at least in synchronous code. 12:23 celeron55 stop the finesse, go for the clickbait news oneliner 12:23 erle celeron55, you have conclusively proved i suck at communicating important news 12:23 erle like i literally put it last 12:24 erle last sentence of last list item :( 12:24 erle i'll go for the clickbait next time 12:24 erle celeron55 appeal to authority, good or bad? it makes the clickbait shorter 12:25 erle “this thing is worse than the alternative, i know a lot about it, here are the benchmarks if you don't believe me” 12:25 erle i mean i can do that 12:25 erle i am just worried people who don't believe me *won't* run the benchmarks 12:25 erle (it happened in the past in all kinds of projects) 12:25 erle (which is why i now explain everything, which is also bad lol) 12:26 erle btw, exposing everything is not necessarily a good idea, but that's entirely orthogonal to API footgun discussions and performance 12:26 erle so i don't think it matters 12:30 celeron55 most people don't have authority. one should never assume they have authority. even i always try to post from a standpoint of just stating the information. people will resist if you try to push them unless you actually have financial or legal or physical means to punish them 12:32 erle well you *just* stated that just laying out the information is something that does not work 12:32 erle i mean 12:32 celeron55 it does work. but you need to be succint enough to grab attention 12:33 erle you know jwz, the daddy of mozilla and xscreensaver? 12:33 erle in 2004 jwz published a screensaver design document on exactly the tradeoffs made in xscreensaver and why he made them. and what happens if you don't do it exactly like that. 12:34 erle and year after year he publishes “told you so” posts that mainly link to bugs like “my 5 year old leaned on the keyobard for 30 seconds and unlocked the desktop because the screensaver crashed” 12:34 erle which only happen because people either don't read the advice or think it's old and they can do better 12:35 erle if jwz told me *anything* about screensaver architecture, i think it would be wise to believe it *unless* i can conclusively proof otherwise 12:35 erle like he has been doing this for 20+ years ig 12:35 celeron55 that also proves that it's exactly the way people behave. people don't read long documents especially if they can cheat themselves into believing it's not relevant 12:35 erle yes 12:36 celeron55 publishing text is always a fight against burying yourself into your own text 12:36 erle and that's prob a similar reason why my appeals to reason don't work well, they tend to be walls of text 12:36 erle it does not matter if the benchmarks are easy to execute if no one even sees a reason to execute them 12:37 erle celeron55 do you have a good example of someone stating a point about bad design in a matter you find convincing and not off-putting due to length or detail? 12:37 erle in a manner 12:37 celeron55 i guess one rule could be "don't include anything in your text which gives a reason for people to skip the text". in this example case, including a reason like "you shouldn't use this compression algorithm because the resulting size can be 4% larger" is directly one of those. it proves to the reader that you are nitpicking and they stop reading 12:38 erle oh, but the goal was to make the result smaller? 12:38 erle so if it's larger, the thing fails on its own merits 12:38 erle at least that is what i thought 12:38 erle i mean, better compression is either faster or makes things smaller 12:39 celeron55 yes but 4% is insignificant 12:39 erle yeah, but if it fails on the ”filesize” criterion, it should succeed on some other 12:39 erle whatever that is 12:39 erle keep in mind that for mapblocks it succeeded on the filesize criterion 12:39 celeron55 it doesn't matter if it's faster, or anything like that. people try to think about the whole 12:39 celeron55 i mean 12:40 celeron55 the 4% increase in size doesn't matter if the algorithm is considerably faster, because then overall it's better 12:40 erle yes, but *no one said that* 12:40 erle i mean beside me 12:40 erle i pointed it out ;) 12:40 celeron55 it seemed implicit to me when i was reading the PR 12:41 erle btw, the speed increases in mod code really don't matter 12:41 celeron55 that implicit thing is what you were fighting against 12:41 erle the slowdowns do, but well 12:41 erle i was fighting against making an API that looks good to noobs but provides a bad experience if you do what seems to make sense because it's half-assed 12:41 erle i mean i don't care much 12:42 erle it's not like someone is ripping out a feature 12:42 erle but it's a good example thing i think 12:42 erle also now that it's there, it probably has to be kept (if used at all) 12:43 erle celeron55, can i run my next argument that would be a wall of text by you after dumbing it down to easily digestable chunks and you tell me what's shit about it? 12:45 celeron55 i think you might be able to skip me by asking chatgpt. it's really good at scaling texts up and down in verbosity and picking points 12:48 celeron55 it's also able to change the tone of a given text 12:52 celeron55 it's silly that people are so prone to those simple alternations in text, but it just is how it is 12:53 celeron55 alterations* (how do you english) 13:10 erle celeron55 i consider you more intelligent than an autocomplete on crack 13:10 erle let's say rather than asking chatgpt i'd ask literally every other human 13:10 erle i am not a friend of the way LLMs are good with language, but not with reasoning 13:11 erle there was this funny research paper that tried to figure out if chatgpt and similar approaches can program python 13:11 erle and there is a simple idiom that they could not get correct, ever 13:11 erle x, y = y, x 13:11 erle the variable swap 13:11 erle i assume the “give me the next token” architecture is too weak for a gramamr of that complexity 13:13 celeron55 yeah they are limited, but they also prove that many operations in languages (human and programming) don't actually require complex thinking 13:14 celeron55 you can just fit some common patterns to your needs and it works 13:15 celeron55 personally, as a hater of all kinds of tedium, i like LLMs. they are able to do the part that i don't want to do 13:17 erle yes, they are 13:17 celeron55 i like them in the same way as i like robot vacuum cleaners and lawn mowers, and tesla's autopilot in their cars. they're able to do the unimaginative tedious part, and you can focus on the enjoyable things 13:17 erle but there is a nuance 13:17 erle the vacuum cleaner and lawn mower are much less likely to be murderbots than whatever tesla is brewing 13:19 erle celeron55 i am not against AI btw, i just think there are tasks for which LLMs are like bringin a regular expression to an HTML fight. you might get 80% there, but never 100% and sometimes you stab yourself repeatedly with a bajonet because of some edge case that is too complex for the automaton you have chosen. 13:21 celeron55 but not every fight is a html fight. there are many fights you can bring it into and win 13:21 erle indeed 13:21 erle but “how do i dumb this *entirely new information that is not in your training set* down for normal people” is probably not as easily identified as that as the 500th time someone reports on the result of a soccer match 13:22 erle i'm pretty sure most sports journalism that just reports matches can be or already has been replaced by AIs 13:23 celeron55 the training set is absolutely ridiculously vast though 13:24 celeron55 almost the entire business of companies like openai is collecting, pruning, labeling and maintaining training sets 13:24 celeron55 it's what the "magic" is based on 13:35 erle celeron55 yeah but there is this unfortunate thing of the plausiblity bias. an LLM optimizes for plausibliity. unfortunately, *everything* humans read seems more plausible with more details, but becomes less truthful (i.e. combining many predictions with necessary probability less than 1 results in a less truthful prediction). 13:35 erle so for model size for example, for at least some models there has already been found that you can't actually expect more truthful/helpful answers with increasing model size 13:36 erle so the results become ever more plausible, but not necessarily more useful for anyone 13:36 erle i am not an expert, but this *looks* like an architectural issue 13:38 celeron55 well, personally i'll just sit back and see how it goes 13:39 erle yeah you can do that with LLMs, but only for problems where you can 100% verify the solution quickly 13:39 erle basically, i'd use an LLM for my texts if i was able to verify that the result is easily understood 13:39 erle but i am not 13:43 celeron55 yes, any process involving LLMs definitely calls for a final verification step by a human. but the same happens even if you replaced the LLM itself with a human, if you didn't want to place any responsibility on that human. to me it's kind of curious how it actually comes down to responsibility instead of accuracy. putting a human in the loop implicitly means that human will learn from mistakes and 13:43 celeron55 improve the process in a feedback loop, because that's what humans naturally do. what about when AIs are proven to do the same? 13:46 celeron55 i tend to think of everything as a process. processes have some characteristics like always being improvable, and adding any feedback loops from later steps in the process to earlier steps in the process always being beneficial 13:46 erle well in the case of arguments regarding minetest it's more about you and me having both domain knowledge and you having a very specific idea of how sth should be structured and i want to meet your standard as a first goal, not the general public ones 13:46 erle i have a process suggestion that everyone hates 13:47 erle accept failing test cases, but mark them as lesser sins (i.e. pipeline succeeds) unless they succeed once, then make them hard fails 13:47 celeron55 actually, the training data set of chatgpt probably contains something about my ideas of how things should be structured, because i have written about things publicly. i should test it 13:47 erle i have seen no environment where anyone likes this 13:48 erle celeron55 if you test with chatgpt anyway, i'd be interested if it can dumb down the zstd thing and with what prompt. i do not have an account, so i hope it's not too much to ask if you are playing with it anyway. 14:00 celeron55 what do you mean by "how sth should be structured"? 14:04 celeron55 it's funny how you can ask chatgpt to for example "write an example C++ program as celeron55 would it, and then like sfan5 would do it". it will just go ahead do it, just like some impro theatre show, and it even comes up with an explanation on what the difference between the styles is, that it's applying 14:04 celeron55 (sorry for the highlight) 14:08 celeron55 the reasoning it uses for that is, like, completely paper thin. improvizational threatre is a good way to describe how it feels 14:17 celeron55 the thing about prompts is, each word of the prompt will guide the response, probably in a way that applies all your biases as strongly as possible into the response, if you let them leak in the slightest to your prompt 14:18 celeron55 the response is just an extension to the prompt. that is the architecture 14:20 celeron55 the wall between the chat itself and the autocomplete mechanism is just a pre-prompt which indicates the goal is to write a continuous chat with a human 14:21 celeron55 at least the classic implementation of an LLM chatbot goes like that 14:24 erle celeron55, it's confabulating 14:25 erle i hope that people soon come up with something better to keep the state than just shove it in as a new input for the next phase 14:25 erle the whole ”give out tokens” thing seems a bit hacky 14:25 erle even if it gets very good results 14:25 celeron55 well, it will confabulate only if you frame the context in a way that it is. if you ask it to imagine something, then you frame the context in such a way that it's just imagining. confabulation is imagining but thinking it's true 14:26 celeron55 the LLM will not care about this context, it will always do the imagining 14:27 erle i think “imagining” is too high of a word here, but let's not get hung up on that. 14:28 celeron55 you shouldn't think of it as not using imagination to fill in the blanks, because it's exactly what it does. it will fumble in the token space trying append ones that make sense to it, and "making sense" always involves the imaginative part 14:28 erle LLMs remind me of some of trumps speeches 14:28 erle and they also remind me of my old markov chain bots 14:28 erle you can get by pretty far with markov chains for stupider processes 14:28 erle so i am pretty sure LLMs will be there for a while 14:29 erle but i bet within 5 or 10 years someone will have found a better architecture that *can* handle the variable swap and lots of other stuff 14:29 erle douglas hofstaedter once wrote about the shallowness of google translate. 14:30 erle IIRC machine translations in the beginning translated “the capital of frace is paris” to “die hauptstadt von deutschland ist berlin” or so 14:30 erle frace → france 14:31 erle i think it is important to know where the usefulness of your tools end or begin 14:31 erle otherwise you can not use them masterfully 14:54 celeron55 erle: i tried a couple of prompts but here's one. it seems to be unable to really work with it even when given such an opinionated prompt: https://paste.centos.org/view/3d9aa0a7 14:59 celeron55 i have something interesting still, a moment... 15:01 celeron55 a continued prompt, trying to make it pick key points https://paste.centos.org/view/7ab84814 15:04 celeron55 i think your comment simply had too many "minor" looking points 15:05 celeron55 chatgpt of course is incapable of figuring out that >1s is a long time. but trusting a human reader to notice that is also asking too much. such a thing has to be brought up in a more obvious way 15:25 erle celeron55, thanks. i'll try to do better next time. punchier. headline-grabbing! 15:51 hare_hare_yukai guys im trying to run some code at 1 second intervals, is it correct to make a function and call minetest.after initially, then at the end of the function use minetest.after to call itself again? i just tried that and minetest froze 15:52 MTDiscord Show your code. The "after loop" is a standard Minetest pattern. 15:53 hare_hare_yukai function thisfunction() 15:53 hare_hare_yukai -- do thing 15:53 hare_hare_yukai minetest.after(1, thisfunction) 15:53 hare_hare_yukai end 15:53 hare_hare_yukai minetest.after(1, thisfunction) 15:53 hare_hare_yukai just like this 15:54 hare_hare_yukai i tried it but my computer almost died lol 15:54 hare_hare_yukai im too scared to load the minetest world again 15:54 erle hare_hare_yukai do you have the documentation for minetest.after() in front of you? 15:55 MTDiscord this should definitely work; what is the implementation of "do thing"? 15:55 MTDiscord (also please use a pastebin) 15:55 hare_hare_yukai yeah i do erle 15:55 MTDiscord erle: this is not a minetest.after or doc problem 15:56 hare_hare_yukai oh wait i realized something 15:56 erle luatic maybe just maybe i wanted to make sure they are not a cargo culter 15:56 hare_hare_yukai i dont need to do minetest.after at the end to call the function 15:56 hare_hare_yukai i just need to call the function 15:56 MTDiscord what 15:56 hare_hare_yukai ll try that and see if my computer doesnt almost explode again 15:56 MTDiscord so do you need to run this every 1s or not? 15:56 erle hare_hare_yukai, show your code as luatic said 15:56 erle post the damn mod 15:57 hare_hare_yukai its top secret 15:57 calcul0n it won't explode, you'll get a stack overflow this time :) 15:58 Desour lua has tail calls, it won't stack overflow 15:58 calcul0n oh, if you mean the second after() it won't change anything 15:59 MTDiscord Desour: only if they use(d) return thisfunction() 15:59 Desour oh, right 15:59 Desour oops 15:59 erle don't feed the troll 15:59 erle its top secret 15:59 erle this is the admission we should debug in the dark 16:00 hare_hare_yukai nevermind i found out why my computer almost exploded 16:00 hare_hare_yukai i was using goto in a for loop 16:00 hare_hare_yukai ding dong 16:00 hare_hare_yukai thinking it was like continue 16:01 hare_hare_yukai how do u skip to the next iteration of a for loop in lua guys? 16:01 erle hahahaha 16:01 erle i remember this being a funny trap for beginners 16:01 erle lua has no continue statement 16:01 MTDiscord goto continue works with an appropriately placed ::continue:: label, but only on LuaJIT 16:02 erle i suggest to take a deep breath and try to explain what you are actually doing 16:02 erle hare_hare_yukai, continue and goto are only a few of possible control flow mechanisms 16:03 hare_hare_yukai basically do continue 16:03 hare_hare_yukai dont run anything after continue 16:03 erle a bit more abstract please 16:03 MTDiscord There are various workarounds if you want it to work on PUC too. You can refactor your loop to use tail recursion. You can involve a boolean variable and use an if. You can include a closure and return early (very inefficient). If you don't need break, you can use a repeat until false and use break inside that as if it were continue. IIRC this last option even generates pretty much the same bytecode as goto continue on LuaJIT. 16:04 erle in particular why is break not a good thing for your case if “don't run anything” is a thing 16:04 erle > you can use a repeat until false and use break inside that as if it were continue. 16:04 erle that's a thing ig 16:04 hare_hare_yukai so use if boolean 16:05 MTDiscord It depends. Generally I'm not a fan of control flow booleans. 16:05 erle show us the code hare_hare_yukai it makes it easier 16:05 erle maybe your problem can be solved in an entirely different way 16:05 MTDiscord this, otherwise we can only suggest general solutions which are likely to be suboptimal 16:05 hare_hare_yukai if i showed you i would have to kill you 16:06 MTDiscord bruh, do you want to be silly or do you want to seriously get help? pick one 16:06 erle a lot of general advice can lead you to do stupid things, it has happened in the past a lot 16:06 erle i remember when mcl2 contributors were like “we have to replace pairs/ipairs FOR PERFORMANCE” lol 16:06 celeron55 are you implementing the simulator for north korea's cruise missile program, in minetest? 16:06 erle nevermind that there miiiiiight be a difference between pairs and ipairs 16:06 MTDiscord lmao 16:07 MTDiscord the old pairs and ipairs question... 16:07 erle also funny: people creating stack overflowing code that does not overflow *their* stack lol 16:07 erle WORKSFORME 16:07 hare_hare_yukai i got it already okay 16:07 MTDiscord erle: luckily not that much of a problem for us since LJ and 5.1 are roughly in the same ballpark (~65k vs 16k IIRC?) 16:08 erle not sure if it is still possible, but i remember kay27 had a very elegant solution for destroying nether portals by recursive calling 16:08 hare_hare_yukai yes north korea's cruise missile system is my childhood after all 16:08 erle so i developed a very elegant solution for crashing servers using nether portals 16:08 erle it was simply enough to make a portal that was big enough, then overflow the stack by deconstructing it 16:09 MTDiscord erle: how big was that portal? i smell suboptimal algos 16:09 hare_hare_yukai okay i found out i didnt need to use continue or if boolean after all 16:09 Desour oh, you were a north korean cruise missile pilot in your childhood? 16:09 erle luatic 27×27 or so? no idea. it was just that few people believed it could overflow the stack 16:09 hare_hare_yukai apparently i can delete an item in the table while iterating over it and it wont break 16:09 MTDiscord hare_hare_yukai: that's why you should show your actual code 16:10 erle “apparently i can do X and it won't break” is the battle cry of an overconfident noob lol 16:10 erle you know 16:10 MTDiscord 27x27 isn't a lot, the algo was probably visiting nodes multiple times or using particularly many local slots 16:10 hare_hare_yukai i am literally testing it right now whats the problem 16:10 erle “someone told me in basketball you can not hold the ball and run. I JUST DID THIS. checkmate, atheists!” 16:10 Desour hare_hare_yukai: depends on how you loop. if you use pairs, it might break, i.e. on rehash 16:10 MTDiscord Desour: no, deleting items while iterating is fine in Lua, but only after having iterated them 16:11 erle hare_hare_yukai it is likely that you are no longer playing basketball 16:11 MTDiscord e.g. for k, v in pairs(t) do t[k] = nil end to clear a table is perfectly valid Lua 16:11 hare_hare_yukai i control whats put into the table and its always the same stuff so it wont ever break i think? 16:11 erle perfectly cromulent 16:11 MTDiscord BTW, Lua (JIT and PUC) will never shrink tables; this holds for both the hash and array part 16:11 erle you are all arguing on a level that is a red herring 16:12 erle hare_hare_yukai do you know C? 16:12 hare_hare_yukai very little 16:12 erle hare_hare_yukai any idea what INT_MAX + 1 evaluates to? 16:12 Desour being corrected is one of the nicest features of the internet 16:13 erle Desour correct! 16:13 MTDiscord erle: If you don't believe me, here's the refman on the matter: https://www.lua.org/manual/5.1/manual.html#pdf-next - "You may however modify existing fields. In particular, you may clear existing fields. " 16:13 hare_hare_yukai do you mean INT_MAX is the maximum value for an int datatype? 16:13 erle hare_hare_yukai INT_MAX as defined in limits.h or so 16:13 MTDiscord Desour: fun fact, behavior regarding whether array lists / hash maps are shrunk is wildly inconsistent across languages ;) 16:13 hare_hare_yukai https://stackoverflow.com/questions/19376682/is-int-max1-int-min-in-signed-integer#19376719 16:14 MTDiscord This only holds for 2's complement. Some langs (like Zig or Rust) guarantee 2's complement, but these languages tend to make overflowing addition explicit. 16:15 erle void main() { int a = INT_MAX; int b = 1; int c = a + b; printf("%i\n", c); } 16:16 erle ; tcc -run undefined.c 16:16 erle -2147483648 16:16 erle hare_hare_yukai, so what have we learned? 16:17 hare_hare_yukai share your code and dont try to be smart 16:17 hare_hare_yukai but, im stupid 16:17 erle welp 16:18 erle hare_hare_yukai, query 16:19 Desour luatic: as you seem to have looked into that topic, do you know if a lua implementation would be allowed to shrink a table (array or hash part) if a non-existent entry is set? (asking out of curiosity) 16:20 Desour s/if a/when a/ 16:20 Desour oops 16:20 Desour s/when a l/if a l/ 16:21 MTDiscord Desour: well, that's a language lawyering question, and the only relevant statement I can find in the refman is "The behavior of next is undefined if, during the traversal, you assign any value to a non-existent field in the table." - so it would probably be fine. 16:22 MTDiscord ("fine" from the implementors perspective, not from the lua impl users perspective, but that's on them for invoking Lua UB ;)) 16:23 Desour (yeah, but there might be some other thing preventing a shrink) 16:32 hare_hare_yukai guys if i use a minecraft sound in my gamemode and it becomes as big as ctf do you think mojang would sue me 16:33 erle you won't get on cdb anyway 16:34 erle don't try it 16:34 Desour idk. do you think if I killed my neighbors bunny, they'd would sue me? 16:34 Desour -'d* 16:35 hare_hare_yukai actually you know, all im doing is using a sound in a mod 16:35 hare_hare_yukai all modmakers do that 16:35 hare_hare_yukai just that im using it in a different game 16:35 hare_hare_yukai should be fine actually 16:42 jonadab Legally speaking, if you don't have a distribution license for the sound in question, and it isn't in the public domain, then you can't distribute anything that includes it. 16:43 jonadab If your mod is for Minecraft, then you can assume that the user already _has_ all the stock Minecraft sounds, and just telling the game to play them isn't distribution, and you'd be fine. 16:43 jonadab If your mod is for another engine, however, then that doesn't work. 16:43 hare_hare_yukai fuck 16:43 jonadab And given the venue in which we are having this discussion... 16:52 ROllerozxa some of minecraft's sounds originate from freesound. if you go straight to the source and find the original CC licensed sounds on freesound opposed to ripping it from minecraft then you should be fine 16:53 hare_hare_yukai nah i already checked its not freesound 16:54 ROllerozxa then you shall not use it 16:54 hare_hare_yukai ffffffffffffffffffff 16:55 ROllerozxa copyright is a complex subject 16:55 ROllerozxa even if you might have bought a SFX you might not even have the right to use it 16:56 ROllerozxa see roblox's oof sound, which turned out to have been taken from a SFX library with pirated sounds 16:56 hare_hare_yukai shoot me!!!!! 16:56 celeron55 i would be extremely careful with sounds that are on freesound but also on MC. micromojang's lawyers will try to take your stuff down with any excuse they can come up with, real or not 16:57 celeron55 of course for small projects nobody cares 16:57 erle celeron55, [[10 hours of white noise getting 3 copyright strikes on youtube intensifies]] 16:58 ROllerozxa yeah that's why I said you should go directly to the source on freesound, don't rip minecraft sounds expecting them to exist on freesound, because they have probably mixed and edited them slightly throughout the years 16:59 erle https://www.minecraft.net/en-us/attribution/sound 16:59 erle the lawyer-types save the day again 16:59 erle you can go directly from microcraft to freesound 16:59 celeron55 that's nice of them 16:59 celeron55 but also legally required :D 17:00 erle celeron55 this reminds me of the tale of the emperor who is very tolerant 17:00 ROllerozxa I remember for a while that page didn't exist and they got a bit of flak from the community for, in turn, allegedly violating the CC attribution terms 17:00 erle https://slatestarcodex.com/2014/09/30/i-can-tolerate-anything-except-the-outgroup/ 17:01 erle > The Emperor summons before him Bodhidharma and asks: “Master, I have been tolerant of innumerable gays, lesbians, bisexuals, asexuals, blacks, Hispanics, Asians, transgender people, and Jews. How many Virtue Points have I earned for my meritorious deeds?” 17:01 erle > Bodhidharma answers: “None at all”. The Emperor, somewhat put out, demands to know why. Bodhidharma asks: “Well, what do you think of gay people?” The Emperor answers: “What do you think I am, some kind of homophobic bigot? Of course I have nothing against gay people!” And Bodhidharma answers: “Thus do you gain no merit by tolerating them!” 17:02 ROllerozxa ah yeah, it was this video from *ntvenom: https://www.youtube.com/watch?v=nDnDbIG6GRg 17:18 MTDiscord windows nt venom 17:22 celeron55 erle: this is a fairly interesting post 17:23 celeron55 these days, i'm delighted when i see content on the internet that dates to almost 10 years ago. new stuff is boring! 18:05 muurkha celeron55: most old stuff is boring, too, but boring old stuff is less perceptually salient than interesting old stuff, so selection bias favors the interesting old stuff 18:07 muurkha the cuneiform tablets everybody reads are the ones pleading for help from the invasion of the Sea Peoples, the epic of Gilgamesh, and the first stirrings of trigonometry. but the vast, vast majority of surviving cuneiform tablets are actually accounting records describing how many asses and bales of wool were shipped to which customer and for what price 18:11 erle ancient merchant unhappy about the quality of clay complains on tablet hehe 18:11 ROllerozxa shipping ass? o.o 18:13 erle could someone explain to me why coras suggestion works at all here? https://git.minetest.land/erlehmann/mcl_quick_harvest_replant/pulls/2 18:13 erle i mean: is it … legal? 18:13 muurkha ROllerozxa: "donkeys" in your dialect, perhaps 18:15 definitelya erle: "I will make it legal..." sic. 18:17 erle ROllerozxa muurkha “ass” is a perfectly cromulent description of a creatures with type “donkey” in magic the gathering https://scryfall.com/card/unh/95/fat-ass 18:17 erle > Our lawyers say no matter how funny it would be, we can’t encourage players to eat the cards. Hear that? Whatever you do, don’t eat the delicious cards. 18:18 erle (cue someone in this channel advocating eating magic cards) 18:18 MTDiscord erle: so as a consequence of that, you shouldn't eat fat ass? 18:18 ROllerozxa muurkha: lol yes I know that some people call donkeys asses for some reason 18:19 erle luatic i shouldn't? you know how they say, be gay do crime 18:19 erle (i'd never do cybercrime) 18:19 erle luatic pls help with PR https://git.minetest.land/erlehmann/mcl_quick_harvest_replant/pulls/2 18:19 erle like why does it even work 18:19 erle in magic the gathering lore, some donkeys even live in a city https://scryfall.com/card/unh/134/city-of-ass 18:20 muurkha https://catalog.hathitrust.org/Search/Home?fqor-publishDateTrie[]=1924&fqor-language[]=English&filter[]=format%3ABook&sort=title&ft=ft is a list of the 13906 books published in the year 01924 in English that have been scanned by Google. these were already heavily pre-selected for interestingness because printing a book meant spending a lot more money than spinning up a droplet on DigitalOcean, and if 18:20 muurkha libraries didn't buy the book (because they thought someone would be interested in perusing it) it didn't get scanned. but you can see that the vast majority of these books are things like "1924 federal income tax law and estate tax law: new provisions explained: text of statute", "Living English for new Americans", and "Second book of Sanskrit: being a treatise on grammar, with exercises" 18:20 MTDiscord erle: your guess is pretty certainly correct (this should return what the old on place returns) 18:20 erle luatic yeah but why does the other thing work 18:20 MTDiscord erle: because the itemstack is a reference type? 18:20 muurkha which, I mean, do contain useful information that people are interested in, but they're mostly badly written and quite duplicative 18:21 erle luatic is this guaranteed? 18:21 MTDiscord erle: uh, idk? but it probably can't be broken without breaking myriads of mods so.. 18:21 muurkha erle: this seems like a general problem in API design in languages with pervasive mutability 18:22 erle luatic so you are saying i should replace old_on_place(…) with return old_on_place(…) probably? 18:22 MTDiscord erle: yes 18:23 erle i will confront cora about it when she returns from being a person with a job 18:24 erle luatic any idea what the simplest sign mod is? 18:24 erle i wanna unicodify it 18:25 erle (maybe) 18:25 MTDiscord erle: idk lol, off the top of my head there is a mod called "basic signs" but idk how basic that is x) 18:26 erle a simple “no” would have sufficed 18:26 erle NEIN 18:26 erle hehe 18:26 erle the most useful german word 18:26 MTDiscord erle: my nickname on discord is nein, but i think you're seeing me as luatic ;) 18:26 MTDiscord (my nickname in the Minetest Discord) 18:27 MTDiscord muurkha: i think this is mostly a problem with Minetest is doing here; either we should be having "pure functional" itemstacks (as in, mutating operations create mutated copies), or Minetest should not require returning the mutated itemstack to give a false sense of how itemstacks work 18:30 MTDiscord btw erle, doing "return old_on_place(...)" will be much more reliable: what if old_on_place mutates the itemstack for whatever reason, but doesn't return it? with the current proposed change, that would unexpectedly lead to the change being applied to the player's inventory (it also doesn't rely on itemstacks being a reference type) 18:30 erle tup tup tupe 18:30 erle dupe 18:31 MTDiscord also my answer wasn't clear enough. itemstacks basically have to be a reference type with how lua works. if they weren't, you'd have to return mutated copies from mutating functions, and all mod code would have to be adapted to consider that. 18:32 muurkha luatic: it's unappealing to write function foo.get_bars(self) return {table.unpack(self.bars)} end 18:32 muurkha rather than function foo.get_bars(self) return self.bars end 18:32 muurkha especially given the performance cost 18:32 erle luatic now that you said it, some fun-hater will definitely change this and claim the docs do not guarantee anything 18:32 erle i bet the next rug-pull will be justified with some asshole slipping in ambiguous language months before 18:32 erle and then say ”it was all in the filing cabinet in the basement” 18:33 erle you know, the one with the sign 18:33 erle “beware of the leopard” 18:33 MTDiscord erle: what i'm trying to say is that you pretty much can't change this, the most basic code would be broken 18:33 muurkha so it's hard to avoid problems like this in Lua 18:33 MTDiscord stuff like itemstack:set_wear(blah) 18:33 erle would it have to be 18:33 erle itemstack = itemstack:set_wear(blah) 18:33 MTDiscord muurkha: proper immutable tables being impossible is indeed frustrating, best we can do is proxies or userdata 18:34 MTDiscord there are numerous places where the engine copies arguments to emulate pass-by-value behavior though x) 18:34 muurkha proxies or userdata would at least eliminate the performance cost 18:34 MTDiscord proxies will be more expensive, but ofc not nearly as expensive as copying the thing on every get 18:35 muurkha well. not entirely eliminate it, because garbage collection isn't free 18:35 MTDiscord There seem to be Lua forks which allow marking tables as readonly; I think Roblox' Luau has this? 18:36 muurkha but because the default is to return a mutable alias, you'll end up with mutable aliases whenever you don't bother to think about it 18:36 muurkha not that I want to script my games in Tcl or Rust 18:36 erle see this is the kind of API stink which is a good motivation for me to make my APis reviewed by ppl anal about language feature 18:36 erle s 18:37 MTDiscord :P 18:37 MTDiscord it's "stink" that is unfortunately hard to avoid considering Lua's philosophy 18:38 MTDiscord Lua is all about giving user's power, much less about safety or taking power away from users; the answer to "I want readonly tables" pretty much is "then just don't mutate them lmao" 18:38 MTDiscord users* 18:49 muurkha yeah, it's very much not about carefully defining stable interfaces between Lua modules to allow them to evolve independently 18:49 MTDiscord erle btw re imagemagick is absolutely pooping its pants when trying to convert a "large" (40 MB) GIF (supposedly of the Shrek movie) to frames.. lol 18:50 MTDiscord (memory usage goes up, after 50s it dies with "memory allocation failed") 18:52 erle luatic you fail at making funny gifs 18:52 erle luatic the funniest gif has 40k frames and is 1×1 pixels 18:52 erle luatic a lot of software shits its pants then 18:53 muurkha luatic: usually I use netpbm when ImageMagick uses too much memory 18:53 muurkha but I don't know if it would help in this case 18:54 muurkha erle: possibly people might interpret "you fail at making funny gifs" as being gratuitously insulting 18:54 erle luatic do you feel insulted 18:54 erle wait 18:54 muurkha third parties 18:55 erle luatic do you feel gratiously insulted 18:55 erle gratuitously? i have to look that word up 18:55 erle ah, unwarranted 18:55 erle i admit it was unnecessary 18:55 muurkha and possibly multiple different people are going to wonder if "i bet the next rug-pull will be justified with some asshole slipping in ambiguous language months before" is intended as criticism of them personally 18:56 muurkha this kind of thing could prejudice those people against your bug reports and merge requests 18:56 erle muurkha oh that was on purpose, anyone coming forward would have to confess an evil plan to pull a rug 18:56 erle the most revealing coverup! 18:56 MTDiscord i don't feel insulted 18:56 MTDiscord maybe because i didn't make the gif lol 18:56 erle muurkha is right though about worrying about being needlessly bitchy 18:56 erle which i am 18:57 muurkha they don't have to come forward; they could just mentally tag you as "that guy who called me an asshole and accused me of an evil rug-pulling plan" and think of that when they're evaluating your bug reports and merge requests 18:57 erle i shall repent 18:58 muurkha moreover the vague subtweeting nature of the accusation means that many different people might incorrectly think it is intended to refer to them 18:58 erle i did not call anyone in particular an asshole. and i'm pretty sure i'll not be more friendly than necessary to whoever is sneakily planning a rug-pull. the good thing here is that i barely have any mods, it will probably not affect me. 18:58 erle oh, i did not think about the incorrect thing 18:59 muurkha there are drawbacks to being a Beacon of Hostility 18:59 erle yes, for example ancientmariner does not like me! 19:00 erle muurkha i think i would be well-advised to work on my language, both regarding precision and hostility 19:00 muurkha as you pointed out, though, ancientmariner works productively with you anyway. but many people are more sensitive 19:01 erle i think this is because ancientmariner and me can think the other is incompetent in some area without writing the person off entirely. 19:01 erle which, tbh, i find nice. it prevents additional hostility from friction. 19:01 MTDiscord for a split second i misparsed "work on my language" as "work on my programming language" x) 19:02 erle ig now that the MALE MODEL is no longer here i should strive to not be the most vile person in the chat 19:02 erle i mean i'll never be a male model anyway 19:10 erle muurkha i am currently commenting mcl2 issues in a hopefully non-acidic manner 19:12 muurkha yay :) 19:14 erle „please tell me exactly how this dupe works so i can reproduce it“ and so on 19:14 MTDiscord erle: so commenting in an alkaline manner is fine? ;) 19:14 erle (i did not imply i was trying to fix it) 19:14 MTDiscord "please tell me precisely how this dupe works so i can use it too" 19:15 erle it's a crashdupe, so i'll probably have to fix it though 19:15 erle out of a sense of duty 19:15 erle crashing servers is not nice 19:15 MTDiscord yeah 19:15 erle and giving incentives for crashing servers is a bad thing 19:15 erle because then people do it a lot 19:16 erle (the incentive being the dupe) 19:16 erle i mean most people don't know about how easy crashdupes are 19:16 erle and i think it would be a good idea to keep it that way by making crashes not happen 19:17 erle luatic https://git.minetest.land/MineClone2/MineClone2/issues/3206 19:18 MTDiscord oh god, that's pretty much as bad a bug report as can be 19:18 erle i do think it is legit though 19:18 MTDiscord "there is something sketchy going on, i have this screenshot where someone vaguely claims that they can trigger a bug" 19:18 MTDiscord erle: might be, but until we have further details it isn't really worth investigating 19:19 erle which is why i am asking about it 19:19 erle i *know* you can dupe items with a well-timed crash 19:19 erle and if you think about it a little bit you know too 19:19 erle the question is how to crash 19:19 MTDiscord note also that this server could be running an outdated MCl2 etc. 19:20 MTDiscord erle: i don't see evidence of a crash in the report so far? it just says "server will lag" and i don't really see how lag will magically dupe items unless devs have made assumptions about server steps having at least a certain frequency 19:20 erle oh surely they have haha 19:20 erle i mean 19:20 erle i'd not bet against it if forced 19:21 MTDiscord "machin bytebyte lags server and crash" ah well here it says crash, but still isn't clear that the crash is what triggers the dupe.. possibly whatever triggers the lag is just exhausting server resources or triggers bugs that have the potential to trigger a crash.. 19:21 erle luatic *every* crash can trigger a dupe in mcl2 19:22 erle i mean, possibly in many minetest mods? 19:24 erle luatic are map.sqlite, mod_storage.sqlite and players.sqlite always updated in lockstep? if not, you can *probably* figure out some differential in some mods that is useful in terms of crashing. 19:25 erle oh, just to point it out: if you try to fix it so they are always in sync i bet you'll create a prime opportunity for a crashloop :D 19:25 MTDiscord heh yeah 19:25 MTDiscord often you can prevent dupes by first taking, then giving 19:26 MTDiscord ofc this means that in the event of a crash stuff may be lost 19:26 erle antidupe 19:26 MTDiscord the sad thing is that these are, in principle, solved problems 19:26 MTDiscord if we were able to control DB transactions in any shape or form this wouldn't be an issue 19:27 erle if you are not doing proper bookkeeping using a cobbled-together imitation of a journaled filesystem in your item handling, you have pretty much lost control to the dupers!!! 19:27 erle luatic do you know the politicians syllogism? 19:28 MTDiscord no 19:28 erle 1. we must do something 19:28 erle 2. this is something 19:28 erle 3. therefore, we must do it 19:28 erle ;) 19:30 erle i sincerely doubt that the solution to give the monkeys one more key on the typewriter 19:30 erle rationale: they might not even end up pressing it 19:35 MTDiscord well, currently it's hard if not impossible to achieve crash-robust consistent persistence while using Minetest stuff 19:35 erle you don't actually want that persistence 19:35 MTDiscord because of crash loops? 19:35 erle i mean, consider what happens if a player ends up crashing the server using an item that can crash the server 19:36 erle i may have been that player 19:36 erle i may also have been someone who fixes that 19:36 erle but if you really roll back everything like a db transaction that is coordinated, you get the exact same state 19:36 erle and the griefer can grief again 19:37 erle thus, the solution is entirely besides the point 19:37 erle you have, in this case, make the game not crash 19:37 erle just by removing the crashy code 19:37 erle or refactoring it to be not-crashy 19:38 erle IMO any energy you spend on crashes being more deterministic does not help with dealwing with the crashloop or crashdupe scenarios 19:38 erle dealing 19:40 erle luatic the hard question for me is: how to make the code less crashy at all 19:40 erle luatic any idea? 19:40 MTDiscord which code 19:40 MTDiscord minetest games/mods in general? mcl? 19:40 erle mcl2 in particular haha 19:41 erle i bet you have ideas 19:41 erle that will be shot down 19:41 erle :P 19:41 erle (but not by me) 19:41 MTDiscord well 19:41 MTDiscord frankly i'd say lua probably isn't fit for a project of this size and with this many contributors 19:41 erle i mean the only good idea i had was “write semgrep patterns as regression tests” and literally zero people wanted to do that 19:42 MTDiscord erle: that is a good idea though 19:42 MTDiscord do you already have a pattern for the set privs footgun? ;) 19:42 erle no what's that 19:42 erle i have a pattern for the ghost dupe and that is it 19:42 erle you can probably apply it to everything on cdb and find more ghost dupes if they exist 19:42 MTDiscord set_player_privs takes a set of privs, so if you do privs.priv = false it won't revoke the priv but rather will grant it 19:43 erle sounds like you should download cdb and get some privs 19:43 MTDiscord also note that since it takes a set, it's not incremental or anything, so usage like minetest.set_player_privs(name, {priv = true}) will revoke all privs except for priv 19:43 erle top API design 19:43 erle würde wieder kaufen 19:43 MTDiscord pretty much the only correct usage pattern is privs = get privs; privs.x = nil; privs.y = true; set privs 19:44 MTDiscord erle: i've considered adding a new change_player_privs API which takes a table of {privx = true, privy = false} and grants/revokes according to that, thoughts? 19:44 erle luatic this is the song fitting the existing API https://onion.tube/watch?v=1coEIN7safI 19:45 erle this reminds me of the time when i responded with copypasted positive ebay buyer comments instead of LGTM 19:45 erle “top coder, fast delivery. would order again.” 19:46 MTDiscord lol 19:46 erle i can recommend this 19:47 erle ”A+++ PR, great quality, speedy shipping” 19:48 erle ”thanks so much for delivering this feature during these trying times“ 19:48 erle etc. 19:48 erle luatic i suggest to make that new API as a lua mod and see how it goes 19:48 muurkha luatic: does Lua have disadvantages compared to Elisp in this respect? I can't think of any 19:49 muurkha (large projects, many contributors) 19:54 MTDiscord elisp is emacs lisp? not familiar with that 19:54 MTDiscord but i would assume elisp to at least theoretically have the advantage of better metaprogrammability? 20:01 erle luatic this is also a good song about horrible APIs if you squint your ears a bit https://onion.tube/watch?v=XLhQvgdXbgo 20:14 mrkubax10 elisp is short for Emacs Lisp 23:34 fridolin Moin :>