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 :> |