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