Minetest logo

IRC log for #minetest, 2023-09-08

| Channels | #minetest index | Today | | Google Search | Plaintext

All times shown according to UTC.

Time Nick Message
00:32 leo_rockway joined #minetest
01:11 lemonzest joined #minetest
01:23 smk joined #minetest
01:30 amfl joined #minetest
01:33 YuGiOhJCJ joined #minetest
02:04 v-rob joined #minetest
02:15 [MTMatrix] <starryuwu> hi
02:15 [MTMatrix] <starryuwu> @everyone
02:15 [MTMatrix] <starryuwu> <@276418762561814539>
02:16 [MTMatrix] <starryuwu> 276418762561814539
02:16 [MTMatrix] <starryuwu> <@276418762561814539>
02:16 [MTMatrix] <starryuwu> <@276418762561814539>
02:16 [MTMatrix] <starryuwu> <@276418762561814539>
02:16 [MTMatrix] was kicked by ShadowBot: Message repetition flood detected.
02:16 [MTMatrix] joined #minetest
02:16 [MTMatrix] <starryuwu> <@276418762561814539>
02:16 [MTMatrix] <starryuwu> <@276418762561814539>
02:16 [MTMatrix] was kicked by ShadowBot: Message repetition flood detected.
02:16 [MTMatrix] joined #minetest
02:16 [MTMatrix] <starryuwu> <@276418762561814539>
02:16 [MTMatrix] was kicked by ShadowBot: Message repetition flood detected.
02:18 MTDiscord <wsor4035> https://tenor.com/view/oh-well-thats-wonderful-johnny-rose-johnny-eugene-levy-schitts-creek-gif-20290435
02:19 MTDiscord <greenxenith> Try not to be the reason we have to establish cross-platform rules
02:19 MTDiscord <wsor4035> also @mistere_123 relay got kicked btw
02:19 SoniEx2 joined #minetest
02:20 hare_hare_yukai the relay bot got kicked instead of the user
02:20 hare_hare_yukai lol
02:33 MTDiscord <benrob0329> and for a second there I thought something interesting might be happening for once
02:46 MTDiscord <mistere_123> So I have to make it rejoin?
02:46 luk3yx It was banned
02:46 MTDiscord <greenxenith> Niec
02:46 MTDiscord <greenxenith> Nice*
02:46 MTDiscord <mistere_123> Well, that's wonderful
02:46 MTDiscord <mistere_123> who banned it?
02:47 MTDiscord <wsor4035> the bot
02:47 MTDiscord <wsor4035> https://cdn.discordapp.com/attachments/749727888659447960/1149536469766131762/image.png
02:47 MTDiscord <mistere_123> Well, ping me when there's something I can do about it
02:47 MTDiscord <benrob0329> I was about to say, probably the spam detection
02:48 MTDiscord <benrob0329> Understandable, unfortunate, but understandable
02:49 MTDiscord <mistere_123> Oh, I could make a new user (unless the ip is banned), but it'd just happen again
02:49 MTDiscord <mistere_123> Irc is easy to host, why don't we selfhost it again?
02:49 MTDiscord <wsor4035> what the heck does self hosting irc have to do with anything?
02:50 MTDiscord <benrob0329> Because for large public projects having the wider network staff is helpful
02:50 MTDiscord <mistere_123> No random uncontrolable bans from a higher authority
02:50 MTDiscord <benrob0329> Shadowbot is an MT thing
02:50 MTDiscord <wsor4035> 🤦, thats a minetest staffs bot
02:50 MTDiscord <mistere_123> Oh well, someone can do something about it then
02:52 MTDiscord <mistere_123> 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 <mistere_123> *hence
02:55 MTDiscord <wsor4035> btw mistere: probably should create new matrix channels and link the bots to them instead, so they actually can be moderated
03:12 libera-staff joined #minetest
04:00 MTDiscord joined #minetest
04:07 MTDiscord <mistere_123> 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
04:18 v-rob joined #minetest
04:19 olliy joined #minetest
04:35 kamdard joined #minetest
04:42 cation joined #minetest
04:53 calcul0n_ joined #minetest
05:03 fluxionary joined #minetest
05:21 qqq joined #minetest
05:49 TomTom_ joined #minetest
06:12 hare_hare_yukai joined #minetest
06:17 basxto joined #minetest
06:19 s20 joined #minetest
06:57 s20_ joined #minetest
07:18 hare_hare_yukai joined #minetest
07:44 rod_tout_court joined #minetest
07:53 s20 joined #minetest
07:55 erle why exactly does the string <@276418762561814539> lead to MTMatrix getting kicked?
07:57 Lesha_Vel joined #minetest
08:01 MTDiscord <mnh48> 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:29 calcul0n joined #minetest
08:36 MTDiscord <mnh48> it's a Discord mention for benrob
08:37 jaca122 joined #minetest
09:19 gxt joined #minetest
09:23 hare_hare_yukai ah, the things pixel cuboid games will make people do!
09:39 isAAAc joined #minetest
09:46 hare_hare_yukai joined #minetest
09:51 appguru joined #minetest
10:05 MTDiscord <luatic> 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 <luatic> luk3yx, erle: They were mentioning Benrob0329
10:06 luk3yx Ah
10:14 Thelie joined #minetest
10:20 imi joined #minetest
10:49 Lesha_Vel joined #minetest
10:59 Lesha_Vel joined #minetest
11:06 MTDiscord <greenxenith> Honestly, we should probably disable hash mentions
11:07 MTDiscord <greenxenith> (Discord will interpret various hashes inside <tags> 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:14 Swift110-mobile joined #minetest
11:17 luk3yx Oh
11:19 sy_ joined #minetest
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 <mistere_123> 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 <wsor4035> (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 Thelie joined #minetest
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 hare_hare_yukai joined #minetest
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:20 s20 joined #minetest
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:23 appguru joined #minetest
13:24 alex_ joined #minetest
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 jaca122 joined #minetest
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.
13:49 Desour joined #minetest
14:00 celeron55 what do you mean by "how sth should be structured"?
14:02 rod_tout_court joined #minetest
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:50 kamdard joined #minetest
14:53 fluxionary joined #minetest
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:55 Sobinec joined #minetest
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:12 mrkubax10 joined #minetest
15:16 definitelya joined #minetest
15:18 isAAAc left #minetest
15:18 isAAAc joined #minetest
15:25 erle celeron55, thanks. i'll try to do better next time. punchier. headline-grabbing!
15:42 v-rob joined #minetest
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 <luatic> 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 <luatic> this should definitely work; what is the implementation of "do thing"?
15:55 MTDiscord <luatic> (also please use a pastebin)
15:55 hare_hare_yukai yeah i do erle
15:55 MTDiscord <luatic> 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 <luatic> what
15:56 hare_hare_yukai ll try that and see if my computer doesnt almost explode again
15:56 MTDiscord <luatic> 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 <luatic> 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 <hare_hare_yukai> 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 <luatic> 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 <luatic> 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 <luatic> 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 <luatic> 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 <luatic> 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 <luatic> lmao
16:07 MTDiscord <luatic> 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 <luatic> 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 <luatic> 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 <luatic> 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 <luatic> 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 <luatic> 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 <luatic> 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 <luatic> 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 <luatic> 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 <luatic> 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 <luatic> 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 sparky4 joined #minetest
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:19 rod_tout_court joined #minetest
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 <luatic> 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 <luatic> ("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:08 qqq joined #minetest
17:18 MTDiscord <luatic> windows nt venom
17:20 appguru joined #minetest
17:21 illwieckz joined #minetest
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!
17:25 Kilroy joined #minetest
17:36 mrkubax10 joined #minetest
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 <luatic> 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 <luatic> 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 <luatic> 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 <luatic> 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 <luatic> 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 <luatic> 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 <luatic> erle: my nickname on discord is nein, but i think you're seeing me as luatic ;)
18:26 definitelya joined #minetest
18:26 MTDiscord <luatic> (my nickname in the Minetest Discord)
18:27 MTDiscord <luatic> 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 <luatic> 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 <luatic> 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 <luatic> 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 <luatic> 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 <luatic> muurkha: proper immutable tables being impossible is indeed frustrating, best we can do is proxies or userdata
18:34 MTDiscord <luatic> 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 <luatic> 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 <luatic> 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 <luatic> :P
18:37 MTDiscord <luatic> it's "stink" that is unfortunately hard to avoid considering Lua's philosophy
18:38 MTDiscord <luatic> 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 <luatic> users*
18:38 dabbill joined #minetest
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 <luatic> 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 <luatic> (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:52 jaca122 joined #minetest
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 <luatic> i don't feel insulted
18:56 MTDiscord <luatic> 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 <luatic> 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:04 appguru joined #minetest
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 <luatic> 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 <luatic> "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 <luatic> 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 <luatic> 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 <luatic> "there is something sketchy going on, i have this screenshot where someone vaguely claims that they can trigger a bug"
19:18 MTDiscord <luatic> 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 <luatic> note also that this server could be running an outdated MCl2 etc.
19:20 MTDiscord <luatic> 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 sparky4 joined #minetest
19:21 MTDiscord <luatic> "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 <luatic> heh yeah
19:25 MTDiscord <luatic> often you can prevent dupes by first taking, then giving
19:26 MTDiscord <luatic> ofc this means that in the event of a crash stuff may be lost
19:26 erle antidupe
19:26 MTDiscord <luatic> the sad thing is that these are, in principle, solved problems
19:26 MTDiscord <luatic> 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 <luatic> 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 <luatic> 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 <luatic> 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 <luatic> which code
19:40 MTDiscord <luatic> 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 <luatic> well
19:41 MTDiscord <luatic> 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 <luatic> erle: that is a good idea though
19:42 MTDiscord <luatic> 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 <luatic> 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 <luatic> 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 <luatic> pretty much the only correct usage pattern is privs = get privs; privs.x = nil; privs.y = true; set privs
19:44 MTDiscord <luatic> 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 <luatic> 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:48 rod_tout_court joined #minetest
19:49 muurkha (large projects, many contributors)
19:54 MTDiscord <luatic> elisp is emacs lisp? not familiar with that
19:54 MTDiscord <luatic> but i would assume elisp to at least theoretically have the advantage of better metaprogrammability?
20:00 kamdard joined #minetest
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:06 sparky4 joined #minetest
20:14 mrkubax10 elisp is short for Emacs Lisp
20:25 smk joined #minetest
20:30 v-rob joined #minetest
20:50 Talkless joined #minetest
21:07 fling joined #minetest
21:12 Trifton joined #minetest
22:02 sparky4 joined #minetest
22:28 Megaf joined #minetest
22:32 panwolfram joined #minetest
22:53 Lesha_Vel joined #minetest
23:00 rod_tout_court joined #minetest
23:33 fridolin joined #minetest
23:34 fridolin Moin :>

| Channels | #minetest index | Today | | Google Search | Plaintext