Time |
Nick |
Message |
00:05 |
|
Lesha_Vel joined #minetest |
00:12 |
|
Lunatrius joined #minetest |
00:15 |
|
YuGiOhJCJ joined #minetest |
00:24 |
|
sys4 joined #minetest |
00:53 |
|
noodles[m] joined #minetest |
00:55 |
|
ronoaldo joined #minetest |
01:10 |
|
fling_ joined #minetest |
01:13 |
|
Alias joined #minetest |
01:50 |
|
YuGiOhJCJ joined #minetest |
01:50 |
|
Verticen joined #minetest |
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. <i>x</i><sup>2<i>n</i></sup> 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? <h1> to <h6> |
02:28 |
muurkha |
because HTML does |
02:28 |
muurkha |
I like HTML |
02:28 |
erle |
well, nowadays html suggests to use <h1> 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:33 |
|
fluxionary joined #minetest |
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:45 |
|
est31 joined #minetest |
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:04 |
|
est31 joined #minetest |
03:21 |
MTDiscord |
<exe_virus> 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 |
03:33 |
|
Guest4705 joined #minetest |
03:43 |
|
Guest3635 joined #minetest |
03:43 |
|
Guest3635 joined #minetest |
04:00 |
|
MTDiscord joined #minetest |
05:54 |
|
calcul0n joined #minetest |
05:58 |
|
calcul0n joined #minetest |
06:03 |
|
Lunatrius joined #minetest |
06:37 |
|
est31 joined #minetest |
06:58 |
|
Lunatrius joined #minetest |
07:16 |
|
hlqkj joined #minetest |
08:34 |
|
InFerNo_ joined #minetest |
09:00 |
|
specing_ joined #minetest |
09:26 |
|
appguru joined #minetest |
09:32 |
|
erle joined #minetest |
10:08 |
|
lemonzest joined #minetest |
10:25 |
|
appguru joined #minetest |
10:29 |
|
est31 joined #minetest |
10:30 |
|
fling joined #minetest |
11:03 |
|
olliy joined #minetest |
11:12 |
|
est31 joined #minetest |
11:12 |
|
fling joined #minetest |
11:16 |
|
orwell96 joined #minetest |
11:23 |
|
YuGiOhJCJ joined #minetest |
11:38 |
|
Noisytoot joined #minetest |
11:51 |
|
fling joined #minetest |
11:54 |
|
definitelya joined #minetest |
12:08 |
|
fling joined #minetest |
12:18 |
|
appguru joined #minetest |
12:33 |
|
fling joined #minetest |
12:42 |
|
wolfshappen joined #minetest |
12:51 |
|
fling joined #minetest |
12:55 |
|
behalebabo joined #minetest |
13:07 |
|
sodiel[m] joined #minetest |
13:17 |
|
Lunatrius joined #minetest |
13:21 |
|
Lunatrius joined #minetest |
13:27 |
|
nac[m] joined #minetest |
13:55 |
|
proller joined #minetest |
13:57 |
|
wallabra_ joined #minetest |
14:23 |
|
m42uko joined #minetest |
15:00 |
|
natewrench joined #minetest |
15:14 |
|
est joined #minetest |
15:16 |
|
fling_ joined #minetest |
15:18 |
|
wallabra_ joined #minetest |
15:31 |
|
definitelya_ joined #minetest |
15:49 |
|
Lunatrius joined #minetest |
15:54 |
erle |
schwarzwald[m], could you help me solving this PCH problem? https://github.com/minetest/minetest/pull/12592#issuecomment-1195647101 |
15:56 |
|
proller joined #minetest |
16:00 |
|
greeter joined #minetest |
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:13 |
|
Lunatrius joined #minetest |
16:27 |
|
wolfshappen joined #minetest |
16:33 |
|
wolfshappen joined #minetest |
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:43 |
|
wolfshappen joined #minetest |
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:46 |
|
vampirefrog joined #minetest |
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:02 |
|
wallabra_ joined #minetest |
17:09 |
|
vampirefrog joined #minetest |
17:14 |
|
___nick___ joined #minetest |
17:15 |
|
Markow joined #minetest |
17:16 |
|
___nick___ joined #minetest |
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 |
|
Talkless joined #minetest |
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 |
17:47 |
|
Yad joined #minetest |
18:08 |
|
sys4 joined #minetest |
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 |
|
sys4_ joined #minetest |
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 |
|
mannerism joined #minetest |
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 |
|
FreeFull joined #minetest |
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:14 |
|
YuGiOhJCJ joined #minetest |
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:23 |
|
YuGiOhJCJ joined #minetest |
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 |
19:50 |
|
Verticen joined #minetest |
20:06 |
|
appguru joined #minetest |
21:00 |
|
specing_ joined #minetest |
21:04 |
|
WhiskeyPotato joined #minetest |
21:22 |
|
Yad joined #minetest |
21:22 |
|
kilbith joined #minetest |
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 |
21:51 |
|
sys4 joined #minetest |
21:57 |
|
appguru1 joined #minetest |
22:18 |
|
fling joined #minetest |
22:34 |
|
panwolfram joined #minetest |
22:37 |
|
fling_ joined #minetest |
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:46 |
|
Lesha_Vel joined #minetest |
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:58 |
|
YuGiOhJCJ joined #minetest |
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:00 |
|
kilbith left #minetest |
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:33 |
|
sparky4 joined #minetest |
23:37 |
|
erle joined #minetest |
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 |