IRC logs for #openttd on OFTC at 2023-05-14
⏴ go to previous day
00:02:48 *** HerzogDeXtEr has quit IRC (Read error: Connection reset by peer)
01:21:14 *** gelignite has quit IRC (Ping timeout: 480 seconds)
01:25:46 *** geli has quit IRC (Quit: Stay safe!)
02:01:52 *** herms has quit IRC (Quit: bye)
02:23:45 *** Wormnest has quit IRC (Quit: Leaving)
02:59:01 *** debdog has quit IRC (Ping timeout: 480 seconds)
03:56:49 *** D-HUND is now known as debdog
05:32:33 *** HerzogDeXtEr has joined #openttd
06:55:15 *** birdjj has quit IRC (Read error: Connection reset by peer)
06:59:55 *** birdjj has quit IRC (Read error: Connection reset by peer)
07:10:22 <GeorgeVB> glx[d]: And is there anybody here who can do it?
07:32:23 *** nielsm has quit IRC (Remote host closed the connection)
07:48:16 <petern> Huh, my clone of nml says that upstream/master is from 2019...
07:49:26 <petern> Oh whoops, I set both remotes to PeterN, not one to OpenTTD.
07:51:46 <petern> Those checks are a bit faster than OpenTTD's 😄
08:00:24 *** nielsm has quit IRC (Ping timeout: 480 seconds)
08:00:52 <TrueBrain> and same question in company_gui.cpp ofc 🙂
08:01:41 <TrueBrain> won't work, or won't help? 😄
08:02:12 <petern> ../src/group_gui.cpp:141:21: error: reference to type 'const Group' could not bind to an lvalue of type 'const Group *'
08:02:12 <petern> for (const Group &g : source) {
08:02:50 <petern> I could (const auto &g : source)
08:02:56 <TrueBrain> one thing I dislike about these kind of things, that it is not always visible what is behind a variable 😛
08:03:00 <petern> But then I'd need to derefernce it.
08:03:42 <petern> So the rest stays the same, but it becomes `const auto &g` instead of `const Group *g`.
08:04:31 <TrueBrain> I don't care 😛 I just saw more pointers that could be nullptr and weren't checked for it! 😄
08:04:44 <petern> Yeah, technically yes.
08:04:46 <TrueBrain> making it `auto &` doesn't resolve that 😄
08:05:00 <petern> Sadly vectors of references are not possible 😭
08:06:19 <petern> There is std::reference_wrapper but...
08:14:07 <petern> That can still be null.
08:14:37 <petern> It may be possible to use std::reference_wrapper, but the pool iterators still return pointers.
08:14:53 <TrueBrain> more work to be done! 😛
08:16:33 <petern> And of course a pool can contain objects of different types.
08:16:55 <TrueBrain> hmm ... this is a bit surprising .... "uint + TypeDef" compiles
08:17:13 <TrueBrain> I expected an error, hmm
08:21:42 <TrueBrain> ah, so the uint is first upgraded to TypeDef; interesting 🙂
08:23:57 <TrueBrain> I could make the ctor explicit, but .. that really asks for a new literal to make that usable 😛 Seems silly 🙂
08:25:58 *** gelignite has joined #openttd
08:26:45 <TrueBrain> meh; weird balance .. sometimes it is useful, sometimes it isn't 🙂
08:28:04 <andythenorth> lol these are in a depot somewhere with no engine attached
08:28:13 <andythenorth> but I have maybe 100 depots on this map 😛
08:29:59 <andythenorth> I'd need to find them 😛
08:30:06 <andythenorth> to click the force button
08:36:46 <TrueBrain> lol, in C++20 you can make `explicit` conditional by doing `explicit(expression)` .. funny 🙂
08:41:55 <TrueBrain> more scroll-related issues? 😄
08:42:08 <TrueBrain> good we have a tester 😄
08:44:20 <petern> This one is different to the last one.
08:45:33 <petern> But, good job I added that assert.
08:47:37 <petern> Takes longer to compile and test than write 😄
08:47:46 <TrueBrain> 😄 Which is a good thing 🙂
08:47:53 <TrueBrain> means there is a trivial fix incoming 😛
08:49:15 <TrueBrain> sounds like a duplicate of 10819, that one
08:49:59 <TrueBrain> lol, can't test atm as I broke my build reaaaalll goood 😄
08:54:41 <TrueBrain> meh; making StrongTypedef constructors explicit for their base value type helps in many places, and ruins it completely in other 😄 I need to think about this ..
08:58:29 <petern> Actually I was wrong. It's just the assert itself is wrong :p
11:00:59 <glx[d]> Releases are broken (need a review)
11:01:39 <glx[d]> And I still can't merge {FORCE}
11:27:42 <TrueBrain> One thing that makes Rust compiler better than most C++ compilers ... the errors are understandable and mostly short
11:27:47 <TrueBrain> C++ errors .. can be ..... LONG
11:35:38 <TrueBrain> right, now with less typos .. I think 😄
11:40:12 *** birdjj has quit IRC (Read error: Connection reset by peer)
11:53:45 <TrueBrain> yippie, all compilers are happy now 🙂
11:55:24 *** Flygon has quit IRC (Quit: A toaster's basically a soldering iron designed to toast bread)
11:55:31 <TrueBrain> it is funny .. most of the code when changing Date to Year divides by 366 .. but most places that take a Year to a Date multiply by 365 🙂
11:59:38 <TrueBrain> hmm .. do we already add some custom fmt formaterrs somewhere in the code ..
12:03:18 <TrueBrain> we do not; let's make it happen! 😄
12:11:52 <TrueBrain> well, sleep well in that case 🙂
12:16:52 <petern> That's an understatement
12:17:19 <TrueBrain> I just hope he had fun 😄
12:17:44 <petern> Oh probably to start with
12:23:15 <TrueBrain> `struct fmt::formatter<T, std::enable_if_t<std::is_base_of<StrongTypedefBase, T>::value, char>> : formatter<typename T::Type> {`
12:23:20 <TrueBrain> these constructs .... 😄
12:44:03 <frosch> hmm, gh pull ran fine 5 minutes ago, now their host key changed...
12:44:27 <TrueBrain> `infinite recursion detected [-Winfinite-recursion]` .. lol .. on a template specialization .. mingw is weird 😛
12:44:33 <TrueBrain> frosch: eeuuuhhh .. sounds fishy?
12:45:00 <frosch> yes, let's wait for hn 🙂
12:45:21 <TrueBrain> not long ago they rotated their keys because of an incident ..
12:45:33 <frosch> yes, i accepted the key back then
12:46:18 <TrueBrain> but okay, I use https on my local dev, so I won't notice when they change key 😄
12:47:04 <frosch> hmm, otoh, it complains about the key for the ip, not for the domain, so maybe i got balanced to a different node than usual
12:47:35 <TrueBrain> would be more plausible
12:48:24 <TrueBrain> okay, the PR is getting smaller and smaller, by doing things properly 😄 Still a bit to go .. and some cleanup to go
12:49:22 <TrueBrain> wth, people still need migrations? Lol 😄
12:49:26 <TrueBrain> thought we would be done by now 😛
12:49:34 *** NGC3982 has quit IRC (Ping timeout: 480 seconds)
12:49:43 <frosch> well, this particular person has not been active since 2010
12:49:55 <frosch> their only forum posts is about difficulties uploading their heightmaps to bananas :p
12:49:58 <TrueBrain> and still knows how to login to tt-forums .. nice 😄
12:52:17 <TrueBrain> okay, time to take on the battle of the settings .. will be fun ..
12:58:21 <TrueBrain> lol; it was not what I expected 😄 Hihi 🙂
12:58:54 <TrueBrain> `int32 def, int32 min, uint32 max, int32 interval`
12:58:56 <TrueBrain> one is not like the others
12:59:53 <glx[d]> hehe max can be twice over real max 🙂
13:00:10 <TrueBrain> it seems intentional; but it took me a while to realise what went wrong 🙂
13:00:18 <TrueBrain> (in my change; not in this code :P)
13:02:56 *** NGC3982 has joined #openttd
13:04:59 <TrueBrain> would this be enough? Who knows!
13:07:25 <TrueBrain> approve and go-go-go! 🙂
13:07:45 <glx[d]> hmm and set-output everywher
13:07:47 <TrueBrain> and it does NOT make me a Jekyll expert; just want to highlight that 😛
13:08:00 <TrueBrain> yeah, it needs proper maintenance .. but I can't be arshed
13:08:04 <TrueBrain> feel free, if you like to 🙂
13:08:13 <glx[d]> looks like someone needs to check the workflows yes 🙂
13:08:27 <TrueBrain> but that is not the reason it fails; so that PR is unrelated 🙂
13:14:22 <glx[d]> oh website uses the old docker actions
13:14:26 <TrueBrain> `friend constexpr TType &operator -=(TType &lhs, const TType &rhs) { lhs.value += rhs.value; return lhs; }` .. and I was wondering why regression kept failing 😄
13:14:37 <glx[d]> they have been removed since
13:14:58 <TrueBrain> yeah ... and most of those actions can be removed anyway .. as we don't serve the website via AWS anymore ..
13:15:12 <TrueBrain> but I guess the tests etc can just be updated
13:17:16 <andythenorth> `[2023-05-14 14:17:01] dbg: [misc] Too many NewGRF string parameters.`
13:17:32 <andythenorth> got a lot of these, thought I had max debug level, there's no easy way to see the string?
13:19:56 <TrueBrain> hmm .. so now only GCC complains about some memset .. who does memset these days .. so silly
13:21:54 <glx[d]> hmm trying to understand how to replace docker stuff
13:22:17 <TrueBrain> check survey-web .. that is the better way of doing this 🙂
13:22:57 <TrueBrain> but that also requires changes on Cloudflare's side
13:23:18 <TrueBrain> you can see this is a very old workflow .. manually doing deployments and environments 😄
13:23:26 <TrueBrain> GitHub improved that a lot over the last .. 4? years 🙂
13:23:46 <TrueBrain> but yeah, I appreciate the help glx[d], but this might be a bit much to tackle without also understanding Cloudflare etc
13:26:53 <glx[d]> yeah this one is too much for me
13:27:26 <TrueBrain> I plan on using Pulumi to deploy the infrastructure to Cloudflare .. when I have that setup, it becomes easier to understand
13:27:41 <TrueBrain> but basically, instead of making a docker and deploying that on AWS, we build HTML and send that to Cloudflare Pages
13:27:51 <TrueBrain> they run it serverless
13:28:02 <TrueBrain> saves a lot of money, and a lot of effort 😄
13:28:17 <TrueBrain> works perfectly for static pages, like the website
13:28:17 <andythenorth> pff I can only find that string warning triggered for two cargo formatters
13:28:20 <andythenorth> SCC_NEWGRF_PRINT_WORD_CARGO_TINY and similar
13:28:22 <glx[d]> oh eints also needs an upgrade
13:28:30 <andythenorth> but Horse isn't using those
13:28:45 <glx[d]> it's using the same old way as website
13:29:16 <glx[d]> I guess all websites could share a common workflow
13:29:33 <TrueBrain> they kinda do, in a sense; they all use common actions 🙂
13:29:42 <TrueBrain> the amount of reusing workflow to use is not that big
13:29:49 <TrueBrain> (as they are all different enough 😛 )
13:29:54 <TrueBrain> but there is some room for improvement for sure
13:30:21 <TrueBrain> we also need to get ride of AWS CloudFormation .. and I am not sure yet how to do that
13:30:37 <TrueBrain> which is why I have been postponing the docker stuff, as it hooks into that 🙂
13:30:40 <glx[d]> "We are monitoring telemetry for the usage of these commands and plan to fully disable them on 31st May 2023."
13:31:05 <andythenorth> hmm string errors disappeared on a reload
13:31:49 <TrueBrain> glx[d]: we are not receiving emails yet that we have to migrate 😛
13:32:08 <TrueBrain> but I guess that forces looking into it next week ... too many open projects!
13:32:18 <TrueBrain> if someone could review survey stuff, at least I could close that one up 😄
13:35:14 <andythenorth> is there any point naming the single-colour wagons?
13:35:28 <andythenorth> just adds noise?
13:44:37 <TrueBrain> yippie, green checkmarks!
13:47:04 <TrueBrain> `(gdb) print TimerGameCalendar::year`
13:47:04 <TrueBrain> `$2 = {<StrongTypedefBase> = {<No data fields>}, <StrongType::Explicit::mixin<StrongType::Typedef<int, YearTag, StrongType::Explicit, StrongType::Compare, StrongType::Integer>, int>> = {<No data fields>}, <StrongType::Compare::mixin<StrongType::Typedef<int, YearTag, StrongType::Explicit, StrongType::Compare, StrongType::Integer>, int>> = {<No data fields>},
13:47:04 <TrueBrain> <StrongType::Integer::mixin<StrongType::Typedef<int, YearTag, StrongType::Explicit, StrongType::Compare, StrongType::Integer>, int>> = {<No data fields>}, value = 2051}`
13:47:26 <TrueBrain> gdb is a bit weird .. it likes repeating itself or something 😄
13:47:43 <TrueBrain> (these are the mixins you see; bit annoying :P)
13:51:47 <TrueBrain> lol, you can extend gdb with Python to make that print nicer 😄 How sweet 🙂
13:59:20 <TrueBrain> lol, with C++20 an `u8"bla"` is no longer castable to a `char *` 🙂
13:59:26 <TrueBrain> it now has to be a `char8_t` 😄
14:12:17 <TrueBrain> well, that `char8_t` will be "fun" when we want to migrate .. bah 😛
14:12:17 <petern> Argh, no point extending NWidgetMatrix, because that is not WWT_MATRIX :p
14:13:31 <petern> I wonder if that distinction could/should be removed.
14:19:24 <glx[d]> hmm seems we have SetStringParameters() but nothing for tooltips
14:20:54 <glx[d]> but that's full manual tooltip
14:21:08 <petern> Rather than setting parameters, the function has to either say "do the default thing" or popup a tooltip itself.
14:21:46 <petern> Mainly so that it can show different tooltips depending on where in the widget the pointer is.
14:24:32 <petern> In general a tooltip should display info about the widget, rather than the info about the content of the widget.
14:25:50 <glx[d]> here I wanted a mechanism to include a raw string inside the normal tooltip (the survey privacy URI), it's already not matching the actual link 🙂
14:26:09 <glx[d]> and that might be worse with translations
14:27:39 <glx[d]> so yeah, manual tooltip seems the way to go
14:28:39 <andythenorth> pfff Horse compile now 22.5s
14:28:53 <andythenorth> adding hundreds more vehicles makes it slow, who knew? 😛
14:29:17 <Eddi|zuHause> think of the wasted lifetime of all the people watching their computer do automatic stuff
14:35:09 <andythenorth> think of things we don't have to wait for
14:36:19 <andythenorth> oh I can save 1s with my nml patch
14:36:41 <andythenorth> nml really doesn't need to validate palette
14:37:32 <andythenorth> petern: don't think I'm going to get anywhere near the high score on vehicle IDs 😦
14:37:32 <andythenorth> ` nmlc info: Train items: 2763/65420`
14:38:12 <andythenorth> I've cut string use down from over 700 also 😦
14:38:12 <andythenorth> ` nmlc info: D0xx strings: 312/1024`
14:41:32 <petern> Huh, where's the "suggest a change" button gone.
14:42:17 <Citizen_Kane_23> Into the void
14:42:22 <glx[d]> but only for modified lines
14:43:36 <TrueBrain> that didn't actually work when I tried that .. let me try again 😄
14:43:39 <petern> Yeah, it wasn't appearing. But typing three backticks and suggestion does the job.
14:44:12 <petern> DIdn't work? Hmm, odd.
14:44:20 <TrueBrain> could be that I was being silly 😛
14:44:28 <TrueBrain> never rule out stupidity!
14:45:03 <TrueBrain> I think it was because it uses then the old width
14:47:15 <TrueBrain> no, it was stupidity 😛
14:47:15 <petern> You get the string dimensions, then add padding, then get the height again with that padding added on top. That seems wrong.
14:47:31 <TrueBrain> I am sure I tested it; and it was showing weirdness
14:47:39 <TrueBrain> I mgiht have done `=` instead of `+=`? Who knows!
14:48:35 <petern> So anyway, basically fix the padding which is clearly wrong right now.
14:49:37 <TrueBrain> ugh, full recompile, w00p! 😛
14:49:44 <TrueBrain> luckily only 3 minutes now ... but still
14:52:49 <Eddi|zuHause> you've talked to andy too much, you're now also developing an obsession about compile times :p
14:53:08 <andythenorth> it's related to making progress
14:53:12 <glx[d]> we're not on the same time scale
14:53:24 <andythenorth> it's important when actually writing code 🙂
14:54:34 <Eddi|zuHause> last time i checked CETS compile it was 5 minutes, or 2 minutes running parallel jobs
14:55:23 <Eddi|zuHause> one minute of that was spent on the unparallelizable grfcodec step
14:59:37 <TrueBrain> I still wonder if I should add "available memory" to the survey results
15:02:43 <Eddi|zuHause> for which definition of "available"?
15:08:28 <TrueBrain> had to guess how it looks for MacOS .. let's see how good my guessing is 🙂
15:10:01 <TrueBrain> it is like really exact 😄
15:10:35 <TrueBrain> (but it is just below 16GB, so dividing by 1024 ** 3 gives 15 .. which isn't ideal either :P)
15:17:19 <TrueBrain> w00p, MacOS just compiled!
15:17:39 <TrueBrain> andythenorth: if you have some time, mind building 10719 and checking in `Preview survey results` what is under `os -> memory` (at the bottom)
15:17:44 <TrueBrain> would be appreciated 🙂
15:28:08 <andythenorth> oh this is nice, unrelated to survey
15:28:12 <andythenorth> feels more retro
15:29:30 <TrueBrain> but if you tried to build my branch, you don't have nlohmann installed 😄
15:30:20 <andythenorth> I am installing it
15:31:04 <andythenorth> pff already installed
15:31:18 <andythenorth> I need to do something?
15:31:32 <TrueBrain> build my branch, run it, and in the screen you just showed should be something about survey
15:31:40 <TrueBrain> tell me if it shows memory 😄
15:31:57 <andythenorth> yeah I can't build
15:32:09 <andythenorth> I need to do something with vcpkg
15:32:46 <andythenorth> ```vcpkg install nlohmann-json
15:32:46 <andythenorth> Computing installation plan...
15:32:46 <andythenorth> The following packages are already installed:
15:32:46 <andythenorth> nlohmann-json[core]:arm64-osx -> 3.11.2
15:32:46 <andythenorth> nlohmann-json:arm64-osx is already installed```
15:32:59 <andythenorth> ```CMake Warning at cmake/LinkPackage.cmake:21 (message):
15:32:59 <andythenorth> nlohmann_json not found; compiling OpenTTD without nlohmann_json is
15:32:59 <andythenorth> strongly discouraged```
15:33:21 <andythenorth> build was working but I rm-ed the build dir
15:33:59 <Eddi|zuHause> why would that be a problem? just make a new build dir
15:34:12 <glx[d]> forgot -DCMAKE_TOOLCHAIN_FILE ?
15:34:17 <andythenorth> yes, and that is why we are here talking about it Eddi
15:34:27 <andythenorth> ```cmake .. -DCMAKE_TOOLCHAIN_FILE=../../vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_OSX_ARCHITECTURES=arm64```
15:34:31 <andythenorth> is the command I use
15:34:48 <glx[d]> better use a full path
15:34:56 <andythenorth> rm-ed build again, re-ran it
15:35:44 <andythenorth> it will be a mistake somewhere, but I'm not reading scrollback to find my fuck up 😛
15:36:38 <andythenorth> os dict has a 'memory' key and an int value
15:36:54 <TrueBrain> does the value look correct too?
15:37:11 <andythenorth> that's about 16GB approx, depending on how we count GB today?
15:37:34 <TrueBrain> it is never exactly what you have installed
15:37:38 <TrueBrain> some bytes go to things like VRAM etc
15:37:58 <petern> That is exactly 16GB, though 🙂
15:38:06 <TrueBrain> it is? Wauw .. that is unusual
15:38:13 <TrueBrain> guess MacOS does that better than all other OSes 😄
15:38:15 <petern> 17179869184/1024/1024/1024
15:38:42 <TrueBrain> owh bah, my survey-key-create-bash-script isn't working .. weird
15:38:59 <andythenorth> oops fucked my savegame
15:39:07 <andythenorth> I had been playing on the old branch of 10719
15:39:15 <andythenorth> guess that's gone 🙂
15:39:17 <TrueBrain> yeah .... there were some bumps in between 😦
15:39:24 <TrueBrain> it kinda is .. we could recover .. but not trivial
15:42:27 <TrueBrain> right, first dinner, after that: checking what goes wrong with encrypt/decrypt .. always fun, private/public keys 😄
15:47:31 <TrueBrain> okay, before dinner. I never actually tested this part of the script after refactoring it .. so silly 😄
15:48:26 *** gelignite has quit IRC (Quit: Stay safe!)
15:55:43 <TrueBrain> there, now it gives out a valid survey-key 😄
15:56:22 <TrueBrain> also building a release of 10719, to make sure that actually works as expected too 🙂
15:57:24 <Eddi|zuHause> "memory": 12545507328
15:57:45 <Eddi|zuHause> @calc 12545507328/1024/1024/1024
15:57:45 <DorpsGek> Eddi|zuHause: 11.683914184570312
15:58:04 <Eddi|zuHause> @calc 12545507328/1024/1024
15:58:04 <DorpsGek> Eddi|zuHause: 11964.328125
15:58:11 <Eddi|zuHause> @calc 12545507328/1024
15:58:11 <DorpsGek> Eddi|zuHause: 12251472
16:05:42 <petern> Hmm, I guess counting a filtered pool iterator is not fast...
16:17:57 <TrueBrain> Or, just say: one iterator, and done
16:26:02 <Eddi|zuHause> why do i have to think of "count the shadows" now?
16:39:07 *** Wormnest has joined #openttd
16:41:42 *** gelignite has joined #openttd
17:24:15 <TrueBrain> Look at that, all green checks, w00p!
18:34:19 <TrueBrain> `it - this->bridges.begin()` .. lol 😄
18:34:51 <petern> Yeah. Brainfart. It's a pattern used elsewhere but it's dumb here.
18:35:55 <TrueBrain> we are getting there 😉
18:35:58 <TrueBrain> more and more type-safe 🙂
18:38:04 <TrueBrain> okay, storage bucket of old survey results emptied .. ready to make new ones 😄
18:39:36 <TrueBrain> still can't believe what C++20 did with utf-8 .. it is so weird
18:39:41 <TrueBrain> also a lot of complaints about it
18:39:46 <TrueBrain> makes you wonder how that got in the specs ..
18:40:53 <DorpsGek> - Update: Translations from eints (by translators)
18:42:21 <TrueBrain> not using u8 has another issue
18:42:30 <TrueBrain> it is undefined in what codepage a string is encoded
18:42:38 <TrueBrain> which is why we have the u8 prefix
18:42:52 <TrueBrain> as some compilers store it in some random other codepage
18:42:58 <TrueBrain> u8 force it to be UTF-8
18:43:19 <TrueBrain> but .. yeah .. people advise to make a user-literal, like `C`, which auto-casts it to a `char *`
18:43:25 <TrueBrain> so you get `u8"bla"_C`
18:43:43 <TrueBrain> where `_C` is a user-literal doing the cast to `char *` ofc 🙂
18:44:57 <petern> Is u8 needed for \u to work at all?
18:52:03 <Rubidium_> it looks like a hackish typedef for unsigned char to me because someone long ago thought it would be useful for char to have undefined signedness
18:52:09 <TrueBrain> \u works fine. Just you can't be sure of the codepage used to store that in memory :d
18:52:51 <petern> Well, utf-8 doesn't have codepages, but...
18:53:26 <petern> Surprise, I've lost a stash/branch/patch
18:54:11 <TrueBrain> of course we are talking about MSVC here, just to be clear
18:54:15 <TrueBrain> the rest all is sane 😛
18:54:46 <TrueBrain> and utf-8 is one of the codepages Windows might pick .. if you tell it to 😛
18:54:56 <TrueBrain> by default it does this 1251 (?) shit
18:55:00 <petern> Yeah, so I guess for some reason it happily converts the \u to utf-8 byte sequence,and then decides to convert that depending on codepage for some stupid reason...
18:55:12 <TrueBrain> no, the \u says it is unicode
18:55:20 <TrueBrain> doesn't say how to store it
18:55:26 <TrueBrain> you could do `u16"\u1234"`
18:55:27 <petern> Although maybe not, because that is so broken it wouldn't ever be a thing.
18:55:42 <TrueBrain> just without a prefix it is .. what-ever the compiler wants
18:56:01 <michi_cc[d]> That reddit rant is just about the fact that the default MSVC source file encoding isn't utf-8.
18:56:27 <michi_cc[d]> Everything else like console encoding might ususally be utf-8 and Linux, but there's no guarantee about it either.
18:56:37 <TrueBrain> so in OpenTTD we tried to be nice, and added `u8`, to make sure the undefined behaviour becomes defined
18:56:42 <TrueBrain> but ... C++20 is like: fuck you guys
18:57:19 <TrueBrain> that reddit rant is one of many I read today; it is kinda funny, how C++20 derailed here a bit 😄
18:57:32 <TrueBrain> to be clear, you also have a `char16_t`
18:57:34 <petern> `/execution-charset:utf-8` pom-te-pom?
18:57:57 <TrueBrain> `"\u1234"` is, by spec, undefined in what codepage to use
18:58:05 <TrueBrain> so even if we tell every compiler we use to use the right one
18:58:07 <TrueBrain> it is still undefined
18:58:20 <TrueBrain> so I think the proper solution really is `u8"\u1234"_C`
18:58:32 <Rubidium_> if they want to break old hardware with Windows 11, why not ditch all code pages as well? :D
18:58:35 <TrueBrain> (if we implement the user literal `C` ofc :D)
18:58:53 <TrueBrain> switch Windows from UTF-16 to UTF-8? Sounds great 😄
18:59:27 <TrueBrain> is it even UTF-16? Or some self-made fantasy? I can never remember 😛
18:59:39 <petern> Windows users should use just WSL, of course.
18:59:50 <TrueBrain> no, let's start with mingw users
18:59:54 <Rubidium_> sorry... s/old hardware/all but the newest hardware/
18:59:55 <TrueBrain> lets force them to use WSL 😛
19:00:57 <michi_cc[d]> Well, after all the std::string PRs, isn't it just `s/std::string/std::u8string/` ? 😛
19:01:15 <TrueBrain> it is funny to read the rants about `std::u8string`. The tldr is: DO NOT USE
19:01:42 <TrueBrain> the other thing C++20 will annoy us with, is that it is deprecated to use enums as bitfields 🙂
19:01:45 <TrueBrain> guess what we do A LOT 😛
19:03:11 <Rubidium_> well... there are still some std::string PRs awaiting approval :D And one draft that could use some input whether I'm going in the right direction
19:04:07 <petern> Doesn't that not really work with enums anyway, as we have the `DECLARE_ENUM_AS_BIT_SET` gubbins?
19:04:26 <TrueBrain> still it complaints ... like there is no tomorrow 😛
19:04:30 <TrueBrain> but warnings, not errors 😄
19:04:40 <TrueBrain> guess we should just make it `constexpr` or something
19:07:10 <petern> So the patch that I've lost. Basically, we have a nice class-inheritance-based system for widgets, where widgets get their own class and custom code depending on what they do.
19:07:34 <petern> And then with void NWidgetLeaf, we gave up. NWidgetLeaf::Draw(const Window *w) has its massive switch block...
19:07:49 <TrueBrain> lost lost? Or "somewhere in the reflog" lost?
19:08:00 <petern> I remember starting something but I can't find anything 😄
19:08:22 <petern> reflog would require me to have an appropriately named commit.
19:10:35 <TrueBrain> Rubidium: I assume you tested 10769?
19:10:46 <TrueBrain> (more than: it compiles :P)
19:12:05 <Rubidium_> ran an AI for a bit with valgrind, and ofcourse regression
19:13:19 <TrueBrain> cool; as it is impossible to judge from the PR if it actually works
19:13:34 <TrueBrain> in general, these PRs are too big to review properly 😦 I know there is little you can do about it, but it is hard
19:16:48 <Rubidium_> going through the commits might help a bit for the AI stuff. Gamelog is just essentially impossible to split :(
19:17:55 <TrueBrain> what makes it a bit though is that the PRs are not pure about one thing or the other .. often also small bits and pieces
19:18:54 <TrueBrain> (I often notice I doze off after commit N, and don't continue the review :D)
19:18:59 <TrueBrain> again, not saying it can be done differently 🙂
19:25:27 <TrueBrain> hopefully updating the date of the blog-post 😛
19:48:48 <petern> Hm, where's a good place for a template to extend iterators, so that it can be used throughout. Don't really fancy a new header :p
19:49:39 <glx[d]> generic extension or specific ?
19:51:06 <petern> Specific function but generic use.
19:59:05 <petern> Actually it's probably not worth it.
20:14:57 <andythenorth> lol iron-horse.nml is now 30.7 MB
20:15:09 <andythenorth> nmlc info: Train items: 3112/65420
20:16:12 <Eddi|zuHause> 32bpp? extra zoom?
20:22:11 <TrueBrain> tnx glx[d] ; now hopeing Rubidium wants to give me PR another look 😉
20:25:11 <petern> `if (auto item = std::find(_touchbar_buttons.cbegin(), _touchbar_buttons.cend(), (NSTouchBarItemIdentifier)btn.identifier); item != _touchbar_buttons.cend()) {` That was briefly confusing...
20:25:40 <TrueBrain> and the ironic part is that they removed the freaking touchbar from their latest models
20:25:47 <TrueBrain> we might as well remove it from our codebase again 😛
20:25:54 <TrueBrain> do you know how many bugs those lines of code produced?! 😄
20:27:45 *** urdh has quit IRC (Quit: Boom!)
20:34:28 <petern> ``` summary->emplace_back();
20:34:28 <petern> item = summary->end() - 1;```
20:35:57 <TrueBrain> is `end() - 1` valid? 😄
20:36:31 <glx[d]> but all that is pre-c++17
20:36:41 <petern> back() isn't an iterator.
20:37:11 <petern> (`item` is actually an iterator here, and that's why I was confused)
20:37:27 <TrueBrain> `item` as iterator name is just perfect 😄
20:38:30 <TrueBrain> hmm, the blog posts says 14.0, so I can just publish the blog already 🙂
20:39:04 <TrueBrain> need to make a release anyway to publish the fix of earlier
20:39:06 <TrueBrain> forgot about that 😄
20:39:45 <petern> I think that would be a different iterator type, so incompatible?
20:39:57 <petern> Anyway, that's not why I'm here. Rabbit holes 🙂
20:40:06 <TrueBrain> if it works, just continue walking 😄
20:40:37 <Eddi|zuHause> if it explodes, also continue walking :p
20:43:31 <glx[d]> oh I see the code, I'd say it's all abuse when you could just get the item from the find iterator or emplace_back if not found
20:46:06 <TrueBrain> let petern sit in this rabbit hole; I don't want to join him!
20:48:20 <glx[d]> also wondering why not push_back(new_item)
20:49:47 <TrueBrain> the "why" I ask myself a lot when reading our code-base
20:49:49 <TrueBrain> mostly code I wrote
20:51:26 <Eddi|zuHause> that's always the worst code... what was that idiot 5 years ago thinking :p
20:51:46 <petern> Oops, not ready yet :p
20:51:56 <TrueBrain> compile before push! 😛
20:52:28 <TrueBrain> did not know `none_of` existed 😄
20:53:39 <petern> It was compiling but that window got hidden. So the finished compile I saw was a different one. Sigh.
20:53:45 <petern> I think this is all wrong 😄
20:54:16 <petern> Yup, needs to be a predicate.
20:54:39 <petern> Which is dumb and makes the ==/!= end() test shorter in most cases.
20:56:10 <petern> That explains why it was left as a stash somewhere.
20:56:19 <petern> There is ONE instance that can be converted...
20:56:29 <TrueBrain> `[](auto v) { return v == <compare>; }` .. yeah, that is a lot of letters .. 😦
20:58:33 <petern> Well that is a miserable PR now, lol
20:59:05 <TrueBrain> but a lot more readable 😛
20:59:55 <Rubidium_> and I broke my PR a second time...
21:00:29 <TrueBrain> tnx for the review Rubidium! One large job done ...
21:00:33 <TrueBrain> now to wait for data 😄
21:01:08 <TrueBrain> but first, I have been kindly reminded I need to put effort in maintaining our infra 😛 BORING
21:02:24 <glx[d]> too many repos using too many workflows 😉
21:03:18 <glx[d]> and some are rarely ran so every time there's something to fix due to github updates
21:03:34 *** keikoz has quit IRC (Ping timeout: 480 seconds)
21:05:16 <TrueBrain> what is more an issue, is that this was designed 4 years ago
21:05:24 <TrueBrain> so there are cracks everywhere
21:05:43 <glx[d]> yeah and now the time frame is reduced
21:05:56 <TrueBrain> yeah, not too worried about that
21:06:04 <TrueBrain> enough tools in the toolbox to temporary keep everything going
21:06:16 <TrueBrain> but it is just a good reminder to finally fix the shit 😄
21:24:59 <TrueBrain> BAM. So ... that happened. Party? 😄
21:28:32 <Eddi|zuHause> you organizing a location?
21:33:23 <petern> I guess I can stop looking at that one then.
21:39:32 <TrueBrain> You are still free :p
21:43:31 <Eddi|zuHause> i'm confused by that title
21:45:04 <Eddi|zuHause> ah i see what you mean
21:45:07 *** gelignite has quit IRC (Quit: Stay safe!)
21:45:27 <Eddi|zuHause> removing the road or rail piece needs to trigger a recalculation of the adjacent level crossings
21:46:03 <Eddi|zuHause> it's fun how this was unnoticed for like 10 years...
21:48:32 <Eddi|zuHause> i made that patch in 2011 or so
21:48:54 <Eddi|zuHause> it was basically unchanged since then
21:51:15 <Eddi|zuHause> the only part that was ever controversial was loading old savegames
21:51:31 <andythenorth> petern: "probably fine" yes?
21:52:41 <andythenorth> bloated Horse grf is now 23.6 MB
21:53:08 <Eddi|zuHause> combinatorial explosion of colours?
21:53:39 <Eddi|zuHause> do more than 3 people care?
21:54:06 <Eddi|zuHause> i mean, people could just assign company colours to groups...
21:54:25 <JGR> Andy cares, and that is all that is required
21:55:58 <andythenorth> at this point, it's about keeping going until some absolute limit is breached
21:56:38 <andythenorth> at some level Horse will become unusable
21:56:45 <andythenorth> but survey says it's the most popular train grf
21:56:50 <andythenorth> according to survey respondents
21:57:11 <Eddi|zuHause> quite possibly that has a serious selection bias :p
21:57:34 <andythenorth> well the opt-in telemetry might be more reliable
21:57:42 <andythenorth> still selection bias, but wider pool
22:00:42 <andythenorth> maybe I should revive FIRS chemical economy
22:00:46 <andythenorth> to use all these tankers
22:01:55 *** Wolf01 has quit IRC (Quit: Once again the world is quick to bury me.)
22:03:03 *** tokai|noir has joined #openttd
22:03:04 *** ChanServ sets mode: +v tokai|noir
22:05:41 <Eddi|zuHause> you're using the recolour callback, i presume?
22:07:21 <andythenorth> it's relatively cheap on compile size
22:08:15 <andythenorth> should probably be using cargo subtypes?
22:10:04 *** tokai has quit IRC (Ping timeout: 480 seconds)
22:10:26 <Eddi|zuHause> if it were up to me, we should deprecate the refit stuff, and wagon overrides
22:11:41 <andythenorth> I believe the new convention is to combine all of them with variants
22:21:20 <petern> Those exist because TTDPatch only had 116 rail engine types 🙂
22:21:27 *** HerzogDeXtEr has quit IRC (Read error: Connection reset by peer)
22:25:45 <andythenorth> I think I have 116 acid tanker variants 😛
22:26:46 <Eddi|zuHause> that's what you get when you throw out limitation
22:27:46 <petern> Hmm, our span_type.hpp is a partial copy of gsl-lite.hpp. So... why can't we just include gsl-lite properly?
22:28:02 <andythenorth> also I read that as gas-light.hpp
22:28:09 <andythenorth> have you changed it and aren't telling me?
22:28:46 <petern> Maybe you should try previewing your liveries.
22:29:20 <andythenorth> in the subtype menu?
22:30:14 <petern> In the sub sub sub type menu.
22:31:45 <Eddi|zuHause> best way to ensure it's never finished :p
22:32:07 <petern> Code that detects wagon overrides and makes separate engine types of them instead.
22:32:17 <petern> And the same for cargo subtypes!
22:33:33 <Eddi|zuHause> there may be a thing where availability of subtypes depends on engine/wagon combinations
22:34:39 *** m3henry has quit IRC (Quit: m3henry)
continue to next day ⏵