profile
viewpoint
If you are wondering where the data of this site comes from, please visit https://api.github.com/users/erlehmann/events. GitMemory does not store any data, but only uses NGINX to cache data for a period of time. The idea behind GitMemory is simply to give users a better reading experience.
Nils Dagsson Moskopp erlehmann Berlin, Germany http://bin.dieweltistgarnichtso.net I use this account only to interact with Minetest development on Github. My own software can be found here: http://news.dieweltistgarnichtso.net/bin

erlehmann/algorithmic-symphonies 38

music written in the C programming language

erlehmann/blinkenworld 16

plots krautchan /int/ post locations on a worldmap

erlehmann/fickileaks 14

Whistleblowjobplattform

erlehmann/c-plus-equality 6

feminist programming language

erlehmann/dissociated-press 6

automated remixing of text fragments

erlehmann/buddleblag 4

A blog engine in Python, with html5lib and Git backend. Proudly made without PHP, Java, Perl, MySQL and Postgres.

erlehmann/guttenviz 4

Identifizierte Fragmente in Karl-Theodor Freiherr zu Guttenbergs Dissertation

erlehmann/ardrone-hacking 3

Mit dem Zweiten fliegt man besser!

erlehmann/cc-figure 3

Wordpress plugin that generates HTML5 Markup containing Creative Commons license information.

erlehmann/fefepress 3

Ein Wordpress-Theme im Stil von Fefes Blog

issue commentminetest/minetest

Remove (or preserve) non-TTF font support

@v-rob now that sounds cool!

sfan5

comment created time in 4 days

issue commentminetest/minetest

Remove (or preserve) non-TTF font support

@v-rob the difference is that the pixel font code actually exists, the hypothetical crisp rasterizer you just came up with does not.

sfan5

comment created time in 4 days

issue commentminetest/minetest

Make Unifont and OpenMoji the default fonts

As @hecktest showed in this thread, pixel fonts are simply not viable as TTFs.

I want to repeat here that I want to help integrate GNU Unifont. But for that to not look ugly non-TTF support needs to come back: https://github.com/minetest/minetest/issues/11611#issuecomment-921428980

GrimPixel

comment created time in 4 days

issue commentminetest/minetest

Remove (or preserve) non-TTF font support

@hecktest complained about a pixel font (GNU Unifont) scaling badly as a TTF: https://github.com/minetest/minetest/issues/11455#issuecomment-885303785

I now suspect the only way to get crisp pixel fonts is restoring non-TTF support. If you do that, I will work on integrating GNU Unifont as a pixel font into Minetest.

sfan5

comment created time in 4 days

pull request commentminetest/minetest

Night vision

@erlehmann

the set of machines that can run Minetest comfortably while not supporting at least OpenGL 2 is basically empty.

As mentioned on IRC some days back, this is false.

This one if possible.

IIRC, the IRC discussion was basically @sfan5 and @celeron55 explaining to me why people want to leave fixed pipeline behind and write shaders instead. I think I understand it now. I doubt anyone disputes that Minetest is – among other things – the block game engine that runs on computers that are not supported by Minecraft.

Something that is important to keep in mind: It is not enough to look at what the vendor advertises for a setup to figure out what is actually working in Minetest. For example, I got abysmal OGLES performance (5 to 7 frames) and bad rendering errors on a machine on which I also get 25 to 27 frames with OpenGL 1.4. Both are apparently “supported”, but one choice is unplayable.

x2048

comment created time in 4 days

issue commentminetest/minetest

set_pos silently fails for attached objects

Btw, you can get an idea of how many mods would break in hilarious ways if set_pos would do something here by testing what happens if a player manages to die while attached to an entity that they can control and respawns in the same area. Quite a few remote control opportunities there!

Wuzzy2

comment created time in 4 days

issue commentminetest/minetest

set_pos silently fails for attached objects

I think the only viable options are 1 or 2. I have no strong preferrence to either yet. Please discuss.

I want to remind everyone that existing gameplay relies on the existing behaviour, so it must not change to not break gameplay.

Simple example: In MineClone2 / Mineclonia / MineClone 5 there exists a teleporting mob called an “Enderman”. You can catch mobs using boats, as they enter a boat that you place near them automatically and can then not get out. Players rely on that to catch the Endermen.

Complex example: In MineClone2 / Mineclonia / MineClone 5 there exists a teleporting item called an “Enderpearl”. You can throw it and get teleported to the place where it lands. If the behaviour would actually change so the player position might be anywhere else while a player is attached to a mob or boat they can control, it is easy to get into some remote-control situation.

Wuzzy2

comment created time in 4 days

issue commentminetest/minetest

Possibility of an "early" 5.5 release

It's impossible for TGA to outperform PNG

Attached to this post is a file containing a 16×16 pixel graphic of a smiley I just drew.

  • The TGA file has 98 bytes (as saved by GIMP)
  • The PNG file has 99 bytes (saved wtih GIMP, then used pngcrush)

I wonder, what if there was some kind of game in which many textures were so small?

(Maybe you can make that PNG file smaller somehow? If so, please tell me about it.) smiley.zip

sfan5

comment created time in 4 days

issue commentminetest/minetest

Possibility of an "early" 5.5 release

In another thread you implied that my "low quality" PNG implementation is also inefficient. (Because it lacks predictors? Those only matter with gradients. )

Are you referring to https://github.com/minetest/minetest/issues/11613#issuecomment-919644496 maybe?

If you did, note that there I wrote “low-effort” and not “low quality”. So, are you referring to another thread?

The PNG implementation in https://github.com/minetest/minetest/issues/11613 is indeed quite inefficient. If you do not believe it: Open up the generated checkerboard texture in GIMP, save it & compare filesizes.

sfan5

comment created time in 4 days

issue commentminetest/minetest

Possibility of an "early" 5.5 release

TGA is a very inefficient format.

Yes, but a) in use b) stupidly easy to write without getting it wrong c) not so inefficient that it was even a noticeable source of lag.

It is easy to sucessfully convince yourself something is strictly better if you insist on ignoring how and why it is used right now.

sfan5

comment created time in 4 days

issue commentminetest/minetest

Possibility of an "early" 5.5 release

@hecktest breaking stuff other people actually use and then demanding that other devs change to whatever new stuff you came up with immediately and that all the users endure the ensuing breakage because the previous solution was stupid is something that I think can at best be described as careless or stupid … and we both know you are not stupid.

That you bring up the PNG encoder or that it is not literally illegal to remove features that worked for years in a minor release wtihout there being a discussion or deprecation shows that you still do not care about breakage. Other developers obviously do, which is why TGA has been re-added for the time, and will hopefully only ever be removed when it does not break stuff anymore.

From what I have experienced you behave like a “rockstar coder”, who follows “move fast and break things” and implicitly expects other people to fix whatever you broke. While it may feel like you personally get things done faster that way, usually projects that follow that idea either take way longer to achieve good quality or break all the time – hiding behind “all software has bugs”. I have seen it lead to persistent interpersonal conflict (i.e. drama) and making people so uncomfortable they either (usually silently) quit projects (which might be as simple as no longer reporting bugs) or start harassing whoever they see responsible for breakage.

There is a solution: Create your awesome APIs first and pull the plug on the old stuff when it is literally not bothering anyone.

sfan5

comment created time in 4 days

issue commentminetest/minetest

Allow custom interval in minetest.register_globalstep

I assume this is a MineClone2 / MineClone5 issue? If so, at least those two games could greatly benefit by doing less in globalstep, or not doing stuff at all. Mineclonia has demonstrated this is totally doable.

Emojigit

comment created time in 4 days

issue commentminetest/minetest

Signed integer overflow in src/noise.cpp (using valleys mapgen)

@SmallJoker are you sure that you expect a computer to claim that -2147483648 is bigger or equal than 1?

erlehmann

comment created time in 4 days

issue commentminetest/irrlicht

Corrupted model file hangs Minetest 5.4.1 client upon connection … b3d? more like bad3d!

<luatic> This is interesting. I had to try modlib's B3D reader (which is written in Lua) at it, and it crashed as expected. It seems the file contains a chunk of invalid type. I suppose Irrlicht doesn't handle this case.

erlehmann

comment created time in 4 days

issue commentminetest/irrlicht

Corrupted model file hangs Minetest 5.4.1 client upon connection … b3d? more like bad3d!

<sfan5> it indeed still happens on 5.5

erlehmann

comment created time in 4 days

issue commentminetest/minetest

Minetest does not start properly with memory sanitizer enabled (use of uninitialized-value)

@JosiahWI does this mean this is actually a false positive? If so, how to ignore this bug?

erlehmann

comment created time in 4 days

issue openedminetest/irrlicht

corrupted model file hangs Minetest 5.4.1 client forever upon connection (b3d? more like bad3d!)

Minetest version

5.4.1

OS / Hardware

Operating system: GNU/Linux

Summary

A corrupted B3D model found by using AFL on the Irrlicht hello world example code (example 1) in like 10 minutes or so of fuzzing is able to stall Minetest 5.4.1 forever upon connecting to a server that delivers it.

If you want to do this yourself, note that both the model ninja.b3d and the example code were removed recently from irrlichtmt by @hecktest, but they are still in the git history of course.

Steps to reproduce
  1. Download attached bad3d mod.
  2. Create a new world.
  3. Enable bad3d mod.
  4. Connect to server.
  5. Wait a long time.
  6. Send SIGTERM to Minetest, as it is very good at not dying while hanging.

bad3d.zip

created time in 4 days

issue commentminetest/minetest

corrupted model file hangs Minetest 5.4.1 client forever upon connection (b3d? more like bad3d!)

Note that the corruption is a single bitflip, so it could happen accidentally.

erlehmann

comment created time in 4 days

issue commentminetest/minetest

corrupted model file hangs Minetest 5.4.1 client forever upon connection (b3d? more like bad3d!)

I do not have the time right now to verify if it still happens on recent versions.

erlehmann

comment created time in 4 days

issue openedminetest/minetest

corrupted model file hangs Minetest 5.4.1 client forever upon connection (b3d? more like bad3d!)

Minetest version

5.4.1

OS / Hardware

Operating system: GNU/Linux

Summary

A corrupted B3D model found by using AFL on the Irrlicht hello world example code (example 1) in like 10 minutes or so of fuzzing is able to stall Minetest 5.4.1 forever upon connecting to a server that delivers it.

Both the model ninja.b3d and the example code were removed recently from irrlichtmt by @hecktest, but they are still in the git history of course.

Steps to reproduce
  1. Create a new world.
  2. Enable bad3d mod.
  3. Connect to server.
  4. Wait a long time.
  5. Send SIGTERM to Minetest, as it is very good at not dying while hanging.

bad3d.zip

created time in 4 days

issue commentClamityAnarchy/minetest

Acquire Clamity Anarchy backup

@StrychtenOfClamity if you do no longer want to run clamity, please could you give @corarona or someone else that can be trusted to not abuse it a backup of the clamity folder so they can bring back the server world on their own terms?

I am really sad right now, as Clamity was something special. A lot of people from the community put work into building things. I met people there who were really nice and built bases with my friends that I would like to visit again.

erlehmann

comment created time in 5 days

issue openedClamityAnarchy/minetest

Acquire Clamity Anarchy backup

Problem

Clamity servers are gone.

created time in 5 days

pull request commentminetest/minetest

Night vision

@x2048 which IRC discussion?

x2048

comment created time in 5 days

issue openedminetest/minetest

mapgen tries to fit negative float in unsigned long

Minetest version

Commit 719a12eca

OS / Hardware

Operating system: GNU/Linux CPU: x86_64 something Intel

Summary
src/mapgen/mg_biome.cpp:268:19: runtime error: -5.81409 is outside the range of representable values of type 'const unsigned long'
    #0 0x13bfae1 in BiomeGenOriginal::calcBiomeFromNoise(float, float, irr::core::vector3d<short>) const (bin/minetest+0x13bfae1)
    #1 0x13bec9e in BiomeGenOriginal::calcBiomeAtPoint(irr::core::vector3d<short>) const (bin/minetest+0x13bec9e)
    #2 0x15f562c in ModApiMapgen::l_get_biome_data(lua_State*) (bin/minetest+0x15f562c)
    #3 0x2175b03 in luaD_precall (bin/minetest+0x2175b03)
    #4 0x218aa7d in luaV_execute (bin/minetest+0x218aa7d)
    #5 0x2175daa in luaD_call (bin/minetest+0x2175daa)
    #6 0x216de7c in f_call (bin/minetest+0x216de7c)
    #7 0x2174e1e in luaD_rawrunprotected (bin/minetest+0x2174e1e)
    #8 0x21761a3 in luaD_pcall (bin/minetest+0x21761a3)
    #9 0x216df2b in lua_pcall (bin/minetest+0x216df2b)
    #10 0x1564612 in ScriptApiBase::runCallbacksRaw(int, RunCallbacksMode, char const*) (bin/minetest+0x1564612)
    #11 0x15735bf in ScriptApiEnv::environment_OnGenerated(irr::core::vector3d<short>, irr::core::vector3d<short>, unsigned int) (bin/minetest+0x15735bf)
    #12 0x195bc93 in EmergeThread::finishGen(irr::core::vector3d<short>, BlockMakeData*, std::map<irr::core::vector3d<short>, MapBlock*, std::less<irr::core::vector3d<short> >, std::allocator<std::pair<irr::core::vector3d<short> const, MapBlock*> > >*) (bin/minetest+0x195bc93)
    #13 0x195ce9c in EmergeThread::run() (bin/minetest+0x195ce9c)
    #14 0x16b1d65 in Thread::threadProc(Thread*) (bin/minetest+0x16b1d65)
    #15 0x16b4b82 in void std::__invoke_impl<void, void (*)(Thread*), Thread*>(std::__invoke_other, void (*&&)(Thread*), Thread*&&) (bin/minetest+0x16b4b82)
    #16 0x16b47b7 in std::__invoke_result<void (*)(Thread*), Thread*>::type std::__invoke<void (*)(Thread*), Thread*>(void (*&&)(Thread*), Thread*&&) (bin/minetest+0x16b47b7)
    #17 0x16b467f in decltype(std::__invoke(_S_declval<0ul>(), _S_declval<1ul>())) std::thread::_Invoker<std::tuple<void (*)(Thread*), Thread*> >::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) (bin/minetest+0x16b467f)
    #18 0x16b44a1 in std::thread::_Invoker<std::tuple<void (*)(Thread*), Thread*> >::operator()() (bin/minetest+0x16b44a1)
    #19 0x16b3985 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (*)(Thread*), Thread*> > >::_M_run() (bin/minetest+0x16b3985)
    #20 0x7f0e43b5eb2e  (/lib/x86_64-linux-gnu/libstdc++.so.6+0xbbb2e)
    #21 0x7f0e441abfa2 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x7fa2)
    #22 0x7f0e4383e4ce in clone (/lib/x86_64-linux-gnu/libc.so.6+0xf94ce)
Steps to reproduce

Not sure. I compiled minetest with ubsan, used mapgen v5 and walked around in Minetest game and got this trace.

created time in 5 days

issue commentminetest/minetest

Re-add support for the TGA image file format

The same could be said about the removal of .psd, yet we won't be readding that.

So .psd was removed without any knowledge if it was used too. But did it ever work?

erlehmann

comment created time in 5 days

issue commentminetest/minetest

Re-add support for the TGA image file format

It all hinges on whether the format is actually in use and that was assumed not to be the case. Ironically the results by appguru do not show TGA in use either, so even if we had done that prior TGA support would have been removed too.

In my opinion, the important question is not “How did this go wrong?”, but “Why could anyone ever think this would go right?”.

If the research would have been done before and there had been a ticket and people would have had a discussion etc. and the format had been properly deprecated, people would have had a chance to speak up before anything happened. @hecktest and others plan to change a lot of things and surely with noble goals – and I want that process to work better in the future, it is better for everyone involved.

"Think of the children" is a talking point used by politicians to push whatever terrible laws they can come up with. I don't think you really want to lower yourself to this level.

I only mentioned kids because most tend to have no idea why stuff is broken and are usually just sad about it when it breaks – but if they are not old enough, you can not expect them to do anything than upgrade, so they rely on proper compatibility. You are right though, it was a bad argument. Breaking stuff affects all users and there are probably a lot of adults who would also have no idea why some stuff in their world disappars and just be sad!

erlehmann

comment created time in 5 days

issue commentminetest/minetest

Re-add support for the TGA image file format

I managed to get the client into some weird state where die to dynamic_add_media the server crashes when TGA is not supported.

I can't really figure out what I did to get there though. Any ideas?

erlehmann

comment created time in 6 days

issue commentminetest/minetest

Re-add support for the TGA image file format

I'm not sure but can't the users just fish these maps out of the media cache as well?

I have no idea what this has to do with the issue at hand or what you even mean here.

erlehmann

comment created time in 6 days

issue commentminetest/minetest

Re-add support for the TGA image file format

@hecktest also stop making stuff up. If you do not know, say it like that. Others can figure whatever it is out for you afterwards.

We both now you never really tried to figure out what file formats are used; @appgurueu did that after your PR was merged.

We both also know that the number of computers that can run Minetest but do not have any usable OpenGL2 support is not the empty set.

erlehmann

comment created time in 6 days

issue commentminetest/minetest

Re-add support for the TGA image file format

I thought Mineclone's map preview case is easily (and more efficiently) covered by #11485?

Not at all, because TGA-encoded maps existed before Jul 29 2021, when that PR was merged.

No released version of Minetest has that new API – mods can not stay compatible with Minetest 5.3 & 5.4 when using it.

Know that TGA was never officially supported just like the myriad of other formats irrlicht accidentally happened to accept, lua_api.txt only mentions PNG and the engine assumes PNG files by filling in the missing .png extension where needed. The only argument in favor is that MT's code also internally enumerated TGA as a media asset - but whoever wrote that probably wasn't thinking of the consequences.

“Even though the Minetest code has explicitly whitelisted the format it for many years, it was totally not officially supported.” … come on, do you think everyone else is stupid? When stuff is not documented, people look into the source code: The Minetest wiki still lists TGA among the file formats that were hardcoded before you removed a bunch of them: https://wiki.minetest.net/Creating_texture_packs#Creating_Textures

TGA isn't very efficient even with RLE

Yeah and the low-effort PNG code from #11485 is also not very efficient at compression. I do not care much about that.

However, I do care about not randomly breaking user worlds. You seem to do not care at all about breakage you cause.

and you're probably doing yourself a big disservice by using this format in your server or game, even more so by pre-generating all these maps and sending them to every user regardless of whether they'll ever see the map. I'm not sure but can't the users just fish these maps out of the media cache as well? It really looks like something that should be handled by #11498.

Yes! You are not sure, that is it! You had no idea what the consequences of your actions were.

Please try to be a lot more careful next time you have the urge to remove something you personally dislike.

Preferably: Provide a solution before you cause problems and make sure that you do not cause problem that way.

Regardless of how talented you may be: A person who ruins some kids' game for selfish reasons is usually seen as the villain.

erlehmann

comment created time in 6 days