Time Nick Message
01:53 muurkha erle: I will take a look!
01:53 muurkha erle: my gut reaction is "minetest/minetest/pull, oh dear, this is going to result in people arguing" :)
01:54 muurkha PCHs can generally save a lot of time for C++
01:55 erle muurkha the problem with PCHs is that they do introduce unnecessary dependencies
01:55 muurkha they certainly do!
01:55 erle for example, i stupidly put the generated header that contains the git revision in it
01:56 muurkha heh
01:56 erle i have fixed that, but it was not pretty ;)
01:56 erle anyways, i am looking for simplification and optimizations rn
01:56 erle i think it can be cut down in size quite a bit
01:58 erle muurkha also i'd like to know which build systems have comparable graphviz capabilities.
01:59 muurkha I would too
01:59 erle and, in case you know how cmake works, i would like to know how to generate a single file. it seems to me that this is often not a supported use case, rather you build a module or so and the files fall out as a side effect.
02:00 erle which i guess is useful in terms of business logic and a view from 100 miles above
02:00 erle but not in terms of “i want to optimize building this single file”
02:01 erle i would also suggest to try this with apenwarr redo. i think it *should* work, but i am not entirely sure.
02:01 erle i mean, i can construct cases where it does not, but those are like “start a compile and then change branches mid-compile” or so :P
02:02 erle there is no good solution in that case
02:03 erle muurkha also, given you know different build systems, maybe you can give different (possibly more useful) answers than me to the question “how do people typically solve these kinds of problems without it turning into a mess of custom perl scripts”.
02:04 muurkha I don't know how cmake works
02:04 erle oh okay
02:04 muurkha what do you mean by "generate a single file"? isn't that what each build step normally does?
02:05 erle the question is “what is the equivalent of this command? redo $TARGET“
02:06 muurkha oh, yeah, I don't know what the equivalent of make foo.o is in cmake
02:06 erle it is definitely not ”make $TARGET”
02:06 erle cmake is a build system configuration generator
02:06 muurkha make $TARGET is the equivalent of redo $TARGET
02:06 erle make is the second step
02:06 erle not necessarily true
02:07 erle for example, because redo always rebuilds the target unconditionally if you give it a single target to rebuild
02:07 erle i am not sure, but i think with make the top-level target you specify can also not be rebuilt
02:07 erle so you have to touch(1) it or so
02:07 erle anyways, i'm curious about your feedback
02:07 erle or your questions
02:08 erle or whatever you think this should be instead
02:08 muurkha yes, make foo will not rebuild foo if it is up to date
02:08 muurkha if you want to force it to rebuild foo, you can rm foo first
02:10 erle no, “make foo” will not rebuild foo if it *thinks* it is up to date
02:10 erle huge difference
02:10 erle my opinion on make is ”you had ONE job …”
02:10 erle it's like PHP, good enough to get very far
02:11 erle but bad enough to be constantly frustrated
02:11 muurkha yeah, I love PHP, but not enough to actually use it
02:11 erle friend of mine once wrote a scheduler in PHP for his wiki
02:11 erle because page generation was taking too long
02:12 muurkha heh
02:12 erle my approach instead was to ask my hoster to install git and generate my pages in a post-receive hook (i think)
02:12 muurkha yeah, I think that's a reasonable approach
02:12 erle and also i may have taken a bit more care to not go accidentally quadratic
02:12 erle the best thing about that approach is that i can build locally first
02:12 erle to see how it looks
02:13 muurkha for Dercuano I generate my pages with https://gitlab.com/kragen/dercuano/blob/master/dercuano.py
02:13 muurkha *generated
02:13 muurkha which does extremely simple-minded and inaccurate make-like dependency checking
02:13 erle oh, i should read that
02:13 muurkha or rather go.py
02:14 muurkha yeah, you'd probably enjoy a lot of Dercuano
02:14 muurkha or do you mean the Python that does the processing? you'll retch ;)
02:14 erle not dependencies, you have liabilities?
02:14 erle haha
02:15 muurkha right, for some reasons the hipster web people call their files "assets"
02:15 muurkha I think that's counting them on the wrong side of the ledger, so I call them "liabilities"
02:15 erle it is probably way too late, but i hereby want to tell you that markdown is a tarpit for people who did not use any of the better options (restructured text, asciidoc)
02:16 erle > Beware, this is (almost) all wrong
02:16 erle great
02:17 muurkha yeah, I think I might switch to CommonMark
02:17 muurkha why are ReST and asciidoc better than CommonMark?
02:17 erle markdown or any of its incompatible dialects are based on a simple search-replace-mapping that exports HTML
02:18 erle but they are not only littered with parsing weirdnesses, but also not generally round-trip-able or extensible
02:18 erle for example, what does “---” mean in markdown?
02:19 erle the answer is that the syntax is ambiguous enough that i have yet to see a rigid formal grammar
02:19 erle maybe it exists! i mean at some point someone made a grammar for the organically grown programming language better known as ruby
02:20 erle muurkha, i can't guarantee this is correct, but something like this https://roopc.net/posts/2014/markdown-cfg/
02:20 muurkha what's wrong with that?
02:21 erle https://roopc.net/posts/2014/eval-stmd/ ;)
02:21 erle well, do you know RST?
02:21 erle you write python, so maybe you do, but have you ever used sphinx?
02:22 muurkha I've occasionally written things in ReST, but I've never used Sphinx (the documentation generator, rather than CMU Sphinx, which I have used)
02:22 erle restructured text has more features, is actually standardized, and – that is important – has built-in support for extensions
02:22 erle i mean the documentation generator
02:22 erle sphinx-doc
02:23 erle i don't know how you write complex things in markdown, but i would end up just doing HTML or latex inline
02:23 erle which is by definition spaghetti code
02:23 muurkha a lot of times I write the complex part in HTML
02:23 erle spaghetti code is when you have more than 1 grammar in a file :P
02:23 erle yes
02:24 muurkha the dodgy nature of Markdown standardization has occasionally been annoying to me
02:24 erle oh, it gets worse
02:24 muurkha like when people try to tell me that ``` fenced code blocks ``` are part of Markdown
02:24 muurkha nice thing about fenced code blocks, though, they're extensible
02:24 erle if you write it as HTML, you can not necessarily do most of the cool things that you can do processing-wise with things that have a proper abstract document model
02:24 muurkha no, I write the document as Markdown, and the complex part in HTML
02:25 erle yes, but what if you want to export it as a man page?
02:25 erle (something that sphinx can do)
02:25 muurkha I don't, I want to export it as HTML and PDF
02:25 muurkha I'd like to have reasonable table syntax though
02:25 muurkha with editor support
02:25 erle well, anyways, you can't really do stuff like the little warning boxes or notes or so that you have in other languages that are more well-designed, because you are limited to html semantics
02:26 muurkha I've also written way too much math in HTML. x2n blech
02:26 muurkha Markdown helps a little with that
02:26 erle hehehe
02:26 erle mathml when
02:26 muurkha LaTeX is a lot beter than mathml
02:26 erle does unicode help with that?
02:26 muurkha no
02:26 muurkha I mean I've written x²ⁿ pretty often too
02:27 muurkha but it only helps in the simple cases
02:27 erle in chat messages
02:27 muurkha Jupyter supports embedded LaTeX in its fake Markdown, which helps a lot
02:27 erle hehe
02:27 erle btw, the HTML smell is all over
02:27 muurkha like this thing I wrote in Jupyter the other day: https://nbviewer.org/url/canonical.org/~kragen/sw/dev3/pole-zero-cancellation.ipynb
02:27 erle why markdown only supports 6 levels of headings?
to
02:28 muurkha because HTML does
02:28 muurkha I like HTML
02:28 erle well, nowadays html suggests to use and sectioning elements
02:28 muurkha but I don't like its formula support, and its table support is at best clumsy
02:28 erle makes composition easier
02:29 erle and parsing tbh
02:29 erle i see “ $$b_i = x_{i-1} + b_{i-1}$$$$c_i = b_{i-1} + c_{i-1}$$” in this page
02:29 erle this some js solution ig?
02:29 muurkha yeah, you have to turn on JS if you want the LaTeX
02:29 muurkha Wikipedia's solution works better, this is MathJax
02:30 erle i usually do web interactivity, animations, etc. without js, but i do not know very well about math, i just thought mathml + css was enough for simple things (so i may be wrong)
02:31 muurkha well, you can easily imagine that it's a lot easier to type b_{i-1} + c_{i-1} than to type bᵢ₋₁ + cᵢ₋₁ or the MathML equivalent
02:32 muurkha and Unicode subscripts crap out on that page around $$h_i = g_i - g_{i - 2nl_3}$$
02:32 muurkha which is something you *can* write in MathML, but you will regret having done so
02:32 erle i do in fact think the latter might be easier, but that is because i am using the compose key too much and do not know what unicode might be missing
02:32 muurkha no, _{i-1} is a lot easier to type than compose _ i compose _ - compose _ 1
02:33 erle maybe. what i enjoy about compose is something that i rarely see in computing, i can make up something and it kinda works often enough.
02:33 muurkha and at the point where you have nested subscripts, or limits of summation and integration, you just have to give up
02:34 erle like o / becoming ø
02:34 muurkha yeah
02:34 erle you are correct though
02:34 muurkha I don't know if you've seen my compose keybindings repo: https://github.com/kragen/xcompose
02:34 erle i simply do not have the needs, so i do not know the tools
02:34 erle i am curious
02:34 erle thanks
02:35 erle muurkha, which minetest games or servers do you enjoy btw?
02:35 muurkha ★⌘∈ ∫₀ⁿn²dn
02:36 muurkha I've mostly been playing Minetest Game on servers my girlfriend, her brother, and I have been running in the house
02:36 erle ah, i know these kind of servers
02:36 muurkha she wrote a mod that made raspberry bushes from which you can make a Raspberry Pi
02:36 erle he
02:37 muurkha with some copper lumps and an oven IIRC. unfortunately she lost it due to poor source control practices
02:37 erle on a private server i used to frequent there is a house of a player who broke up with some other player. she never returned.
02:37 erle we left it as-is.
02:37 muurkha we built some houses on some of the islands from the cloud islands mod
02:37 erle cloud islands are funny
02:38 muurkha she's also been playing with creating different kinds of portals
02:38 erle do you enjoy glitching or finding bugs?
02:38 muurkha usually I find it annoying ;)
02:38 erle well, anyway, here is an example of finding dupes using semgrep: https://git.minetest.land/Mineclonia/Mineclonia/issues/292
02:39 muurkha she and her brother built a rather extensive railway system through the cloud islands
02:40 erle btw, in case you have a simple shell script job server, please show
02:40 muurkha what's a shell script job server? like, where you have a job queue made out of shell scripts, and various workers connect and pop shell scripts off the queue?
02:41 erle the thing i use in my redo implementation to parallelize the build
02:41 erle you have a number of job slots to fill
02:41 erle like 4, because someone gave ”-j 4”
02:42 muurkha aha, I see
02:42 erle and want to make sure they a) use the slots b) do not deadlock ever
02:42 muurkha I think that's a more general statement of the problem I was describing
02:42 muurkha that is, I was describing a particular solution strategy, and you're describing the problem it solves
02:43 erle well, i was asking for a solution, so it is appropriate to ask “a solution? like [insert description]?”
02:46 erle muurkha, regarding https://dercuano.github.io/notes/clickable-terminal-patterns.html – try “ls --hyperlink” some time in GNOME terminal on a GNU system
02:46 erle the capability exists nowadays
02:47 erle and is woven into a bunch of things cleverly
02:48 erle https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda
02:48 erle i am telling you this because as far as i am aware, the implementation predates your article
02:48 erle thus you might not have known
02:49 erle muurkha where can i find your “bin” directory with useful scripts to steal?
02:55 erle muurkha, you might like this. i am going to sleep soon. good night! http://daten.dieweltistgarnichtso.net/tmp/docs/collaborative-decision-making.html
03:21 MTDiscord For those who might miss it: new Nodecast Episode is live: https://exevirus.github.io/nodecast/ep4
03:27 muurkha interesting!
03:27 muurkha I had no idea, no
15:54 erle schwarzwald[m], could you help me solving this PCH problem? https://github.com/minetest/minetest/pull/12592#issuecomment-1195647101
16:02 schwarzwald[m] Please remind me later if I forget. I'm currently trying to get Minetest to compile with my CMake build.
16:37 greeter Is this the right place to ask for mod help? Trying to run a server with the plantlife modpack, but it won't start. I get several errors that I've pasted to https://pastebin.com/wrgCj2DH
16:40 erle yes this is the right place
16:40 erle i believe you can also ask on the forums if no one can help here
16:41 erle schwarzwald[m] i thought minetest already compiles using cmake ;)
16:41 schwarzwald[m] I'm starting basically from scratch.
16:42 sfan5 greeter: did you install up-to-date versions of all mods
16:42 erle 2022-07-26 13:35:57: ERROR[Main]: ...minetest/mods/plantlife_modpack/woodsoils/generating.lua:76: attempt to call field 'register_on_generate' (a nil value)
16:42 erle greeter, post that file
16:42 greeter sfan5: i believe so
16:42 erle and which minetest version you use
16:42 greeter erle: that file can be seen at https://github.com/mt-mods/plantlife_modpack/blob/master/woodsoils/generating.lua
16:42 erle is it exactly the same on your computer?
16:43 greeter yes
16:43 greeter Minetest 5.6.0-dev-7e78c0171 (Linux)
16:44 erle greeter does this work on 5.5.0?
16:44 greeter i don't know. i can try compiling it and see
16:45 sfan5 I would strongly suspect something is wrong with your biome_lib
16:45 erle well, i am asking because i think mod loading code has changed since then
16:45 erle but yes, is biome_lib even loaded?
16:45 sfan5 or a dependency on it is missing/incorrect
16:45 greeter i was starting to think it might be an issue with biome_lib too
16:48 erle well if it works with a known-good version, it may still be the modpacks fault.
16:48 erle but if it does not work with an earlier version, i'd assume it's definitely the modpacks fault
16:49 greeter i decided to get a fresh copy of biome_lib. getting a different error now lol. i feel like i'm on the right track at least :-) thank you
16:49 erle what's the different error though?
16:50 greeter this time it's an issue with moretrees: https://pastebin.com/Z3xwNQc7
16:55 greeter fresh copy of moretrees fixed that though. hmm i got all these mods within the last day or two. wish i know how i managed to garble them like that. all is working now though in terms of starting the server :-D thank you
17:20 erle schwarzwald[m] it seems to me that precompiled headers are not worth it, unless you can present a strategy to minimize the dependency bullshit they cause
17:21 erle i mean yes, they can reduce the compile time for a full rebuild. but after the first full build, i am not particularly interested in that.
17:23 erle so i'll make them optional
18:09 muurkha erle: in most projects it's a lot more common to change the implementation of something (in a .cpp) rather than its interface
18:09 muurkha which makes PCHs a win
18:11 schwarzwald[m] I was planning to precompile only a couple headers at first, such as the headers with various irrlicht types, and maybe the util headers.
18:11 schwarzwald[m] The irrlicht types are included practically everywhere.
18:11 schwarzwald[m] They will almost never change, either.
18:11 erle the problem is the dependency checking complexity it introduces. say i use a single header in an implementation (c++ code). as soon as i depend on the precompile.h.gch header, which includes everything, i have a shit ton of dependencies that are entirely superfluous.
18:12 erle the combinatorial explosion is so big that it changes the checking time for the ”nothing needs to be rebuild” scenario on my machine from 1 minute 30 seconds to over 6 minutes.
18:13 erle so maybe it is worth it for a few headers that are included a lot
18:13 erle but the way i am doing it is not helpful
18:13 erle well not exactly my machine. the fastest machine i have access to.
18:13 erle (i do not own it)
18:13 erle i'd rather cut down dependencies than introduce new ones
18:14 erle especially if the new ones are bogus
18:14 schwarzwald[m] I've discovered that CMake compiles object targets even if they're not used anywhere.
18:14 erle haha
18:14 erle fun times
18:15 erle if a commonly used dependency itself depends on a lot of things and none of them changed meaningfully, that is the worst case for a dependency check.
18:17 erle because if any of them were out of date
18:17 erle i can stop checking ;)
18:18 erle muurkha, did you try my thing out btw?
18:19 erle schwarzwald[m] where can i see your progress?
18:20 muurkha no
18:20 erle btw, when i build with cmake, my computer becomes extremely laggy and hot. not so with redo! do cmake builds have some “make -j 8” hidden somewhere maybe?
18:21 schwarzwald[m] If you use Makefiles it will use 1 core. If you use Ninja it will use all of them by default.
18:21 erle that's a stupid ninja default
18:22 erle like, people want to do other stuff onh their computer too?
18:22 erle like, play minetest or so
18:23 schwarzwald[m] I'm glad you asked, because that gives me the idea that if we update the README.md to recommend Ninja, we should mention something about the threads and that you may want to set a lower number.
18:25 schwarzwald[m] My computer seems to do alright somehow. I'm compiling Minetest with 3 threads on 2 cores and my Matrix client is working fine alongside it. My computer fan isn't loud either.
18:25 erle lol matrix
18:25 erle matrix has *much* more requirements than minetest
18:26 sfan5 matrix is a protocol
18:26 erle yes, and it is an abomination
18:27 erle you have to maintain a gigantic amount of state and do an order or two of magnitude more network activity than in any other comparable protocol i know
18:27 erle look into it, if you want to be amused
18:27 erle the spec even has human-readable descriptions, grammars and examples … that do not match with each other
18:28 erle i have no idea what kind of process can produce a documente where *right* under the grammar an example is that does not match the grammar
18:28 erle also from time to time when the matrix devs find a hard-to-fix bug in synapse (default server) or element (default client) they change the spec instead of polishing their turd sandwich software
18:28 schwarzwald[m] Writing build scripts on a slow computer is a nightmare. I've spent hours compiling to a couple minutes making changes.
18:29 erle which kinda leads to other server and client implementations suddenly being incompatible
18:29 schwarzwald[m] e.g. I just switched one library from PRIVATE to PUBLIC and now it's recompiling 234 sources.
18:29 erle schwarzwald[m] that means you are probably doing something right. or overcounting dependencies. hard to say.
18:30 schwarzwald[m] It's always been this way I think. Modifying the build pretty much causes a full recompilation.
18:31 schwarzwald[m] I can't separate any of the source groups into their own object libraries because they all depend on each other.
18:31 schwarzwald[m] It's so messy that I had to put practically everything in src/CMakeLists.txt and I have literal hundreds of source files listed.
18:31 erle i think introducing hash-based dependency checks (like redo) would do wonders
18:31 erle can you do that?
18:32 erle i mean there is a version of ninja out there that can do that, but ninja devs don't want it. maybe you can try that.
18:32 muurkha erle: what's wrong with matrix?
18:32 schwarzwald[m] I mean, we could write a generator for redo or whatnot. :joy:
18:32 schwarzwald[m] * I mean, we could write a generator for redo or whatnot.
18:32 muurkha schwarzwald[m]: btw on IRC we just see your edit as a (mostly) repeated line with an asterisk before it
18:33 schwarzwald[m] Ouch, I forgot that again. I'm sorry.
18:33 erle schwarzwald[m] you have obviously not looked into redo. redo (and every similar system) does not need a generator. a bottom-up approach needs two stages: divide the problem into parts and then do them in order, like make. a recursive top-down approach can do everything in a single pass.
18:33 schwarzwald[m] Well, I could test the variant of Ninja that does hashes, but it's really irrelevant to what I'm doing.
18:34 erle although avery pennarun has already written a dofile generator, for the case of “make it work across different OS and architectures”
18:34 schwarzwald[m] That's all CMake is supposed to do really, as I understand it.
18:34 erle it is called redoconf and i have never used it, but it basically simplifies the ”let me depend on openssl” use case by letting redoconf figure out how to do that across different environments
18:35 erle yes, but cmake not only does it badly, it can not do it on principle
18:35 schwarzwald[m] Yeah, that's just CRedo.
18:35 erle no, credo is something else lol
18:35 schwarzwald[m] CMake is turing complete so if someone can implement redoconf I can implement redoconf in CMake.
18:36 erle schwarzwald[m] have you read “build systems a la carte?”
18:36 erle nope, because of the thing that cmake does. cmake generates build rules for a second stage to execute.
18:36 schwarzwald[m] I glanced over it once or twice. It's too academic for me to make sense of it.
18:36 erle this implies that you can know the build rules at that point.
18:37 erle i assert that not only can you not, the tracing approach (what more modern build systems often do) is far better because you can not have a differential between what you determined and what was used
18:38 erle muurkha matrix is an eventally-consistent distributed event processing protocol where fundamentallly everything is JSON over HTTP.
18:39 erle muurkha which leads to funny issues like “someone could gain admin rights in a matrix chat room by sending a message from their server to another server that led to a world state where the server administrating the room believed that the person had joined early enough to get admin rights in the room, before it was locked down”
18:40 erle also every matrix client i know uses more resources than minetest
18:41 schwarzwald[m] Nheko runs a lot smoother than Minetest on my computer. Quaternion was slow, though, and I don't even dare to try Element.
18:41 erle but since they are not carbon-copies of each other and the protocol has a hilarious amount of complexity, i have come to the conclusion that it may not be possible to do that stuff
18:41 erle schwarzwald[m] nheko did run best so far on my computer too, but it was still laggy. minetest is not laggy.
18:42 schwarzwald[m] Huh. Minetest doesn't even run playably on my computer.
18:42 erle what
18:42 schwarzwald[m] Even with the view range turned down really far I don't get more than 15 FPS on singleplayer and about 2 FPS on multiplayer.
18:42 erle i suggest to shut off shaders, reduce view range, opaque leaves and maybe even undersampling=4
18:42 erle give me the hardware info and i give you performance tips
18:43 schwarzwald[m] Ok. I'll wait for this compilation to finish though, because it's demanding my resources.
18:43 erle btw, end-to-end-encryption in matrix is a big fat joke. basically everyone has to use the same client – element. meanwhile in xmpp land you can use whatever client can speak OMEMO and it just works.
18:44 schwarzwald[m] E2E encryption works across different clients last I checked.
18:44 schwarzwald[m] It works between Nheko and Element for example.
18:44 erle with fingerprint verification?
18:45 erle last time i checked nheko did not support it fully and you could chat, but like, non-MITM-proof
18:45 schwarzwald[m] Hmm, I don't know enough about it.
18:49 schwarzwald[m] I have an AMD Athalon Dual Core with 3 GB RAM, and an NVIDIA GeForce 6150SE GPU.
18:50 schwarzwald[m] Also, I just found out to my horror that Minetest is broken with the xmonad window manager.
18:50 schwarzwald[m] Broken bigtime.
18:50 erle regarding matrix usage, i am not sure, but i believe if you enter a room, you need to make at least 2 × participants HTTP requests to get all the json and avatars for the users
18:50 erle i am not sure on that, maybe that is only the stupidest possible implementation
18:50 * schwarzwald[m] uploaded an image: (52KiB) < https://libera.ems.host/_matrix/media/r0/download/matrix.org/GhTyzzUjfodGfNkAKctjQaNp/2022-07-26-135028_1022x372_scrot.png >
18:50 erle are you sure this is a minetest problem?
18:51 schwarzwald[m] Not necessarily, but all the other applications I've used so far work fine.
18:51 sfan5 erle: I hope you don't think IRC is any better in this regard
18:51 sfan5 well I guess this situation works actually
18:52 sfan5 nvm
18:52 erle sfan5 let me say it like this: an IRC server will never peg its CPU for several hours when a user *leaves* a channel/room
18:52 erle but in matrix land, that's a perfectly cromulent bug
18:52 sfan5 IRC is just a protocol
18:53 erle yes, but protocols have computational power minimum requirements. IRC can be parsed with a minimum of state, line-wise. matrix needs A LOT of state and a lot of state transitions.
18:54 sfan5 I can tell you're not really interested in making any accurate statement since your examples and arguments switch every two minutes
18:54 erle really, i suggest you look into it yourself. it is exceedingly funny.
18:55 schwarzwald[m] 2022-07-26 13:54:42: ERROR[Main]: In thread 7f2950d19b40:
18:55 schwarzwald[m] 2022-07-26 13:54:42: ERROR[Main]: ../src/script/cpp_api/s_base.cpp:9b: static int ScriptApiBase::luaPanic(lua_State*): A fatal error occurred: LUA PANIC: unprotected error in call to Lua API (bad argument #3 to '?' (string expected, got table))
18:55 ShadowBot https://github.com/minetest/minetest/issues/3 -- Furnace segfault
18:55 erle schwarzwald[m], what's that
18:55 schwarzwald[m] I somehow broke my existing binary.
18:55 sfan5 you switched revisions without rebuilding
18:55 schwarzwald[m] Thank you ShadowBot, but this is not the furnace segfault.
18:56 schwarzwald[m] erle: I can't join a world.
18:56 schwarzwald[m] Yeah, I switched revisions without rebuilding, why is that a problem?
18:56 erle what sfan5 said
18:56 muurkha heh, bad argument #3
18:56 ShadowBot https://github.com/minetest/minetest/issues/3 -- Furnace segfault
18:56 erle the problem is the builtin code
18:56 erle it will not work across revisions
18:56 erle or is not guaranteed to work
18:56 erle just rebuild
18:56 erle or switch to the previous revision
18:57 schwarzwald[m] Ah, maybe because it was RUN_IN_PLACE in had files in the build directory.
18:57 erle coincidentally this means i should probably depend on builtin in my redo build hehe
18:57 schwarzwald[m] Now that my build directory has changed I doubt it's fixable by anything other than a rebuild.
18:57 erle so thank you for doing it, i totally forgot about it
18:57 sfan5 I thought you wanted to reduce dependencies, not add more
18:57 schwarzwald[m] Switching git revisions won't do anything, because I don't have my build checked in to git.
18:58 erle i wonder if minetest should maybe just have a safety function that says YOU MODIFIED THE THING, I AM QUITTING
18:58 erle i want to reduce useless dependencies, i.e. the ones that are not strictly necessary
18:58 erle builtin evidently is
18:59 schwarzwald[m] Maybe a bit offtopic, but I'm curious why and how you guys learned programming.
18:59 sfan5 if you make an incompatible change in builtin then rebuilding the engine is not going to help
19:00 sfan5 and adding a dependency also won't help if the user doesn't run the build script
19:00 erle nah but if you switch to an earlier revision, like in bisect, you need to rebuild
19:00 sfan5 so yes you are adding useless dependencies
19:00 erle hmm
19:00 erle seems to be correct
19:00 erle i was in error indeed
19:00 erle thanks!
19:01 erle btw, a coworker read through my issues and told me the problem is that i start with outlandish claims and then put the example with which to verify it (by running the code) at the very end.
19:01 erle i noticed that he is right, i do this every time.
19:01 erle he says i have to do exactly the reverse. give a LOT of examples and then build up to the conclusion.
19:02 erle and i apologize for it
19:02 erle it must be really annoying
19:02 muurkha it's a good idea to explain things with examples first
19:02 schwarzwald[m] Thanks for sharing! That's an insightful point!
19:02 erle like, having to read 3 screenfuls of “this is why the current thing is bad in theory”, you are never going to scroll down to the constructive proof
19:03 erle or to the exploit or so
19:04 erle so i guess i'll lead with examples in the future. makes it easier to re-assure myself that i am not bullshitting, too!
19:04 muurkha by the same token conference talks that begin with a demo are more fun
19:04 erle ha, i did this in my tech talks too
19:05 erle 30 to 45 minutes of theory, then 10 minutes of demo
19:05 schwarzwald[m] I think part of open source is communicating with people, and I would not communicate with sfan5 the way I would communicate with archfan or my dad for example.
19:05 erle muurkha do you have any public talks on video maybe that you can suggest to learn from?
19:06 schwarzwald[m] I generally get the impression that the Minetest dev community knows how they want it done and they don't want other people interferring.
19:08 muurkha erle: no, and I'm not sure the talks I've given are exemplary
19:09 muurkha they were all before the advent of ubiquitous video recording of conferences
19:09 erle schwarzwald[m] so far i have seen more unity on what is not wanted than what is wanted ;)
19:10 schwarzwald[m] There's a talk from cppcon where the entire thing is a demo of someone implementing pong in C++ with increasing abstraction, while comparing the assembly to see how much overhead is added at each step. It's on YouTube and I found it really fun and informative.
19:12 erle schwarzwald[m] you might like drew devaults “hello world”
19:12 schwarzwald[m] I'll check it out later!
19:13 erle schwarzwald[m] first https://drewdevault.com/2020/01/04/Slow.html then https://drewdevault.com/2020/01/08/Re-Slow.html
19:13 erle “This is a follow-up to my last article, Hello world, which is easily the most negatively received article I’ve written — a remarkable feat for someone who’s written as much flame bait as me. Naturally, the fault lies with the readers.”
19:13 erle :D
19:21 erle on the purpose of leading with examples: this part of the matrix spec says in human-readable terms that the response is required to have a key “devices”. but the example response is lacking that key: https://spec.matrix.org/v1.1/server-server-api/#get_matrixfederationv1userdevicesuserid
19:30 erle schwarzwald[m] so what about your slow minetest? your build still not done?
19:33 schwarzwald[m] You must've missed my earlier post. I have an AMD Athalon Core Duo processor, 3 GB of RAM, and an Nvidia GeForce graphics card.
19:34 erle my longest build was 2 hours 17 minutes hehe
19:35 muurkha of Minetest, you mean?
19:35 muurkha presumably you've built other things that took orders of magnitude longer than that
19:36 erle nope
19:36 muurkha you must be younger than I thought
19:36 erle this was just today, when i did something horribly wrong with the dofiles
19:48 Krock Minetest takes 30 minutes to build from scratch on a crappy Celeron D CPU
21:23 kilbith I like the Hitman 2 mainmenu: https://i.imgur.com/U8fvWta.png
21:23 kilbith could be an inspiration for MT
21:27 erle kilbith IMO this is exceedingly bad design for a main menu. there is no clear call-to-action, some click targets have no clear outline and the font sizes vary so much that if this was a poster, you'd tell the intern to please read a book about prioritizing information in other ways than making it tiny
21:27 erle it looks good, but i wouldn't wish such a thing for my worst enemy
21:28 erle kilbith, i gather you know how it works, but i would have no idea where to even click to start to play
21:30 erle compare this to the battle for wesnoth main menu, which wastes a lot of space, but has very clearly labeled buttons https://commons.wikimedia.org/wiki/File:Wesnoth-1.6.1-menu-gl.png
21:30 erle or quake III. main menus never exceeded this utilitarian beauty https://www.mobygames.com/images/shots/l/252271-quake-iii-arena-windows-screenshot-main-menu.jpg
21:31 erle software sohuld be brutalist
21:32 erle kilbith, out of curiousity, is the shopping cart in the top right border clickable? what does it do?
21:32 erle s/border/corner/
21:34 rubenwardy looks like it's designed for console with gamepads. The top row are tabs
21:35 erle rubenwardy is this a “people who have the console would know what it is because the entire user interface is implemented in terms of this paradigm” thing?
21:35 rubenwardy yeah, this sort of design is pretty common
21:35 erle well, then it explains why it translates poorly to other platforms
21:36 kilbith imagine the lower row listing games, each of them associated with a background like this
21:37 erle kilbith i am sure that whatever you imagine is both more utilitarian and appropriate to minetest. are you working on minetest menu redesign too?
21:38 erle muurkha i just tried the old “strace the build” thing, but my build rules use strace, and apparently you can not strace the strace. you know a way to solve this? “i have no tools, because i destroyed my tools with my tools!”
21:40 erle rubenwardy say, does the console gamepad thing also mean there are no click targets?
21:40 erle just like press left on gamepad or so?
21:41 rubenwardy depends on how good the port is. There may be click targets, or it may be keyboard only
22:42 erle schwarzwald[m] so how are you dealing with the branch switch scenario?
22:43 schwarzwald[m] I'm not.
22:45 erle well
22:47 erle schwarzwald[m], can it be handled in principle or not at all?
22:48 schwarzwald[m] I don't know enough to say.
22:48 erle it's one of the most annoying things
22:53 schwarzwald[m] I'm not really trying to fix any particular issue at this point, I'm just rewriting the build as an exercise for myself.
22:53 schwarzwald[m] It's going to be structured much differently. xD
22:59 erle schwarzwald[m] that sounds entirely unlike what i am doing lol
22:59 erle i think i am at the point where i can use this for bisect. or, well anyone else can, too.
22:59 schwarzwald[m] It is. I don't want to redo the work you're doing anyway.
23:00 erle i thought you had maybe some ideas how to make cmake smarter
23:00 schwarzwald[m] You seem to be doing a lot better on that aspect than I could.
23:00 schwarzwald[m] My thought is that if the build is just cleaner overall, then it'll be a whole lot easier to reason about it.
23:01 erle that would be an advantage, yeah
23:01 erle btw, if you have any speed hacks for me, show and tell
23:01 erle maybe i should only precompile system headers?
23:01 schwarzwald[m] As I've been saying though, it's mostly a personal thing to see what I can do with it.
23:02 schwarzwald[m] It's unlikely the devs will want to merge such massive changes to the build, which I can't test fully.
23:02 erle well you could check if it works in the CI
23:02 erle github probably would do that automatically once you create a PR
23:04 schwarzwald[m] I'm planning on it!
23:04 schwarzwald[m] Our CI doesn't fully cover all the nuances in the build though, I think!
23:04 erle also if you ever manage to figure out how to get proper graphviz output out of cmake, please tell me
23:05 schwarzwald[m] I'm afraid it just doesn't show source file dependencies.
23:05 erle but those are the important parts
23:05 schwarzwald[m] CMake only really thinks in terms of targets, so it doesn't care about source files.
23:05 erle like, i modify them and they trigger a rebuild or not
23:05 erle targets depend on targets
23:05 erle but targets also depepnd on source files
23:06 schwarzwald[m] I might technically be able to make it work by wrapping every source file in an object library, but it'd be terryfing and only show direct source file dependencies.
23:06 erle lol
23:06 erle i mean any source file can be seen as a dependency of a rule that outputs a single file and has no dependencies ;)
23:06 erle or something like that
23:06 erle i need to sleep
23:06 schwarzwald[m] Exactly! :)
23:08 erle need for sleep: under covers
23:08 erle a sleepy video game by EA
23:11 erle über wachen und schlafen
23:18 greeter Is there any way to figure out what an unknown node is supposed to be? I tried looking at it in debug mode to get the node name but that didn't work
23:21 erle schwarzwald[m] btw, regarding the amount of speed hacks i would like: a non-PCH tracing build that hashes all build outputs takes 20 minutes and 24 seconds with redo on a single core. a cmake build takes about 9 minutes. i can beat the 9 minute build time by using more cores, but that's obviously cheating.
23:39 erle avery pennaruns redo implementation seems to be indeed able to buld minetest as well using my dofiles
23:40 erle it is not too surprising
23:40 erle but good to know