IRC logs for #openttd on OFTC at 2025-09-29
⏴ go to previous day
00:24:35 *** Zathras_4 has joined #openttd
01:28:13 *** Wormnest has quit IRC (Quit: Leaving)
02:39:24 *** gnu_jj_ has quit IRC (Ping timeout: 480 seconds)
03:35:16 *** Zathras has joined #openttd
03:35:36 *** Zathras_1 has joined #openttd
03:38:51 *** Zathras_11 has quit IRC (Ping timeout: 480 seconds)
03:38:56 *** Zathras_4 has quit IRC (Ping timeout: 480 seconds)
04:39:10 <DorpsGek> - Update: Translations from eints (by translators)
06:54:11 *** SigHunter has joined #openttd
07:06:09 <DorpsGek> - Add: summary for week 39 of 2025 (by OpenTTD Survey)
08:02:26 *** lobster has quit IRC (Ping timeout: 480 seconds)
09:19:59 *** dh1 has quit IRC (Quit: My Mac has gone to sleep. ZZZzzz…)
10:45:28 <locosage> hm, wonder if there is any good ai that can do merging...
10:45:41 <locosage> doesn't require much thinking so they should be pretty good at it...
10:47:03 <rito12_51026> I've just lost commit while rebasing
10:53:49 <peter1138> Codium's merge editor is quite good, and doesn't involve fucking around with hallucination software.
10:54:31 <jessicathegunlady> locosage: ...An LLM?
10:55:25 <jessicathegunlady> I wouldn't entrust merging commits to my phone's autocorrect. I wouldn't entrust it to an LLM either.
10:58:40 <jessicathegunlady> ...I'm also pretty sure most of the cases where you even need to think regarding a merge are areas you'll *still* need to think about if an LLM does it, 'cause you still gotta check over the results.
11:00:32 <peter1138> It's okay, they can fuck up their own fork as they please.
11:01:15 <jessicathegunlady> Heheh, aye.
11:01:24 <jessicathegunlady> 'Long as I don't gotta deal with the consequences I suppose.
11:17:36 <locosage> sublime merge isn't bad either
11:18:27 <locosage> but most of the time I'm spending on adjusting my code after those massive refactorings
11:18:33 <locosage> and it's just a lot of dumb work
11:20:17 <locosage> and it goes very slow because I'm fixing it one-by-one addressing those compile errors buried in the loads of template junk
11:22:00 <jessicathegunlady> Aye, maybe you've had to do a lot more repetitive bullshit than I.
11:23:20 *** zbigniew_ziobro2137 has joined #openttd
11:23:21 <zbigniew_ziobro2137> thinking about llms in any context is a bad idea
11:24:06 <locosage> they are very good if used right
11:24:30 <jessicathegunlady> I wouldn't say LLMs are very good if used right broadly.
11:24:52 <locosage> well, good llms are good, whatever xD
11:25:20 <zbigniew_ziobro2137> zbigniew_ziobro2137: idk if this is a topic for Discord channel #openttd-development though
11:25:25 <jessicathegunlady> There are legitimate, practical purposes for LLMs. AFAIK VALVe had/has? an LLM for helping with anti-cheat, which was in development way before ChatGPT.
11:25:56 <jessicathegunlady> ~~someone quick, comment on the AI policy PR so that it technically becomes relevant~~
11:26:08 <rito12_51026> Knives are also good if used right
11:26:52 <locosage> it's more relevant than cycling :p
11:27:29 <jessicathegunlady> ~~little do you know, my next project is the cyclists patch~~
11:30:23 <andythenorth[d]> GPT last year wrote me a shell script that unfucked the Horse docs repo
11:30:51 <andythenorth[d]> notably, this had nothing to do with giving agentic AI direct access to my shell or anything else
11:31:09 <andythenorth[d]> and I was able to run it on a copy and verify results by inspection
11:31:56 <locosage> yeah, sometimes it's enough for llm just to point out the cause
11:32:37 <locosage> even if 9/10 times it's wrong I'm spending a minute to ask if 1/10 it saves me an hour
11:33:13 <jessicathegunlady> Aye. If it's more benefit than hassle, don't have much room to judge.
11:37:25 <peter1138> Come on bubble, fucking burst already.
11:39:01 <jessicathegunlady> LLMs are probably here to stay to some extent, but if companies can just shut the fuck up about them and stop forcing AI everything everywhere, especially where it doesn't make sense, *that would be nice.*
11:40:26 <jessicathegunlady> Had a friend who's been trying to get work for a while chance it with a place using an AI hiring thingamabob. Naturally it told them there was a job available at a store that literally doesn't exist.
11:44:50 <talltyler> After I quit a previous job developing training content for railway track maintenance workers, they started using an LLM and image generator to replace me. I’ve seen the results, it’s slop that nobody remaining has the content knowledge to identify as 90% hallucinations. 🤦
11:46:34 <peter1138> While upper management continue congratulating themselves.
11:46:43 <jessicathegunlady> Aye. Management doesn't gotta know what an AI is. They just gotta hear the name, know it's The Big New Thing™ in tech and that hooh boy it sure can save them a lot of money.
11:48:31 <jessicathegunlady> ...Then they reach the other end with a damaged reputation, needing to find competent staff to redo everything again because they paid a big licensing fee for a technology that isn't fit for what they're trying to do.
11:50:31 <talltyler> I very much doubt the company will survive, to be honest. But I shouldn’t say too much more as I’m easy to doxx. 🙂
11:50:59 <jessicathegunlady> Heheh, aye. I just mean more as a general process.
11:51:26 <andythenorth[d]> Reveals how many knowledge work jobs are actually nothing jobs
11:51:45 <andythenorth[d]> But some won’t be
11:52:14 <andythenorth[d]> It’s all a bit Hitchhikers GTG
11:52:56 <talltyler> It was definitely a something job when performed by a human 🙂
11:53:30 <talltyler> To me it reveals how many management jobs are nothing jobs
11:54:13 <andythenorth[d]> They’re not yet LLM replaceable
11:54:34 <andythenorth[d]> Managing upwards
11:54:54 <andythenorth[d]> Time sheets and rosters must be low hanging fruit eh
12:19:20 <pickpacket> strange. I get this compile error with 15.0-beta3: src/fontcache/../safeguards.h:64:19: error: ‘SAFEGUARD_DO_NOT_USE_THIS_METHOD’ has not been declared in ‘std’
12:19:49 <pickpacket> wrong version of my compiler?
12:22:19 <peter1138> Well, what compiler?
12:23:46 <peter1138> And what line is the actual error, rather than the safegaurds line.
12:26:42 <pickpacket> peter1138: I decided to upgrade the system before trying again. Makes sense
12:27:10 <pickpacket> especially because there's a new debian stable released now :)
12:27:28 <peter1138> I'm not on Debian 13 yet.
12:28:59 <pickpacket> me neither. That's the one I meant
12:29:56 <LordAro> peter1138: only 3 files it could be, based on that relative path :)
12:30:04 <LordAro> but yeah, don't make us guess
12:33:33 <peter1138> gcc 12.2 in Debian 12 is able to compile.
12:34:10 <LordAro> might depend on version of freetype/etc
12:34:18 <LordAro> (yay, still guessing)
12:35:47 <peter1138> Ah, safeguards.h might be in the wrong place I guess.
12:50:59 <pickpacket> relax guys. I'll make another attempt later
13:15:47 <_glx_> but compiler is expected to output more info about where the file is included
13:26:31 <audigex> zbigniew_ziobro2137: Hard disagree, they absolutely have real world uses
13:26:31 <audigex> I use one at work for parsing data from inconsistent-but-similar PDFs (invoices) into a consistent format. It's virtually impossible without an LLM, trivial with one
13:26:31 <audigex> I use one at home as my voice assistant - like Alexa but it's actually smart enough that I don't have to use precisely worded phrases and keywords. Eg for Alexa I have to say "Increase the office lamp brightness to 80%" with pretty much those exaxt words, whereas with this I can even just say "It's a bit dark in here" and it just figures out what I want
13:26:31 <audigex> I also use one to analyse a camera feed from my driveway so that it can trigger some zigbee chimes - couriers don't always press the doorbell and I can't hear them knock in the back of the house. The LLM also describes the person - eg if it's "a courier with a package" or "a woman with a small child" then I know if I'm getting a delivery or the missus is home
13:26:31 <audigex> Oh and I have a camera on the side of the house watching the gate.... but I get an LLM to look and see how many bins are visible so it can tell me whether I've forgotten to put them out
13:26:32 <audigex> I do think there's a "jam AI into EVERYTHING" bubble currently, like happens with all new tech. At some point there will be a new fad and it'll go the way of "cloud" and "internet of things" etc where it'll be used in sensible places rather than companies trying to shoehorn it into every single possible situation
13:49:57 *** Wormnest has joined #openttd
13:50:59 <mnhebi> Dunno, LLM and a senior coder together helped me improve my code heaps. I now understand how to use critical sections in C after that.
13:58:05 <jessicathegunlady> audigex: I mean, this is pretty much all pattern recognition.
13:58:07 <jessicathegunlady> Which is like...
13:58:12 <jessicathegunlady> That's what they're meant for.
13:58:32 <jessicathegunlady> ChatGPT is meant to interpret data and output a likely response based on what it's input is.
13:58:46 <jessicathegunlady> That's what LLMs are meant to be *broadly*.
13:59:17 <jessicathegunlady> So something like using it for a voice assistant *makes a lotta sense*.
13:59:24 <jessicathegunlady> There's limited potential outcomes there.
14:01:29 <_jgr_> Machine learning for things like object detection long predates LLMs
14:02:22 <jessicathegunlady> Aye, true, not LLMs but machine learning as a whole, yeah. Wires getting crossed there.
14:11:37 <locosage> hm, I think I figured commit-by-commit merging, now I only need to wait for it to build openttd about a thousand times 😅
14:12:19 <locosage> because I want to stop when it doesn't compile?
14:12:38 <LordAro> ...do you have a patch queue that contains 1000 commits?
14:13:19 <locosage> I'm updating from beta2 to beta3, there are about 1000 commits unless I checked it wrong
14:13:55 <LordAro> i'm pretty confident we already know all those compile
14:14:21 <locosage> yeah, but not when applied on my patchpack
14:15:20 <locosage> should probably say "fork" as it's not really a collection of patches anymore
14:15:32 <LordAro> i'm pretty confident you're Doing It Wrong
14:15:51 <jessicathegunlady> sounds wrong to me as well
14:15:55 <LordAro> if you want to merge beta3, then just a single merge commit (with appropriate fixes) is fine
14:16:00 <jessicathegunlady> I get the *idea* but like
14:16:04 <LordAro> if you want to find a commit that introduced a problem, then you want bisect
14:16:10 <jessicathegunlady> surely just merging the whole thing is still easier
14:16:14 <peter1138> I think the issue is the "appropriate fixes" is massive and unweidly.
14:16:19 <jessicathegunlady> and working it out from there
14:16:20 <locosage> if I do a single merge commit I'll have to deal with all the changes it brings at once
14:16:39 <LordAro> _jgr_ seems to manage
14:16:41 <peter1138> You do, but that can be less effort than doing it individually.
14:16:54 <locosage> JGR doesn't do massive merges
14:16:58 <peter1138> Less intermediate steps to worry about.
14:17:19 <jessicathegunlady> True, but JGR also doesn't merge everything in one chunk, AFAIK.
14:17:42 <LordAro> true, but that doesn't stop you from doing the same
14:17:55 <LordAro> pick one commit from each week/month or something
14:18:14 <peter1138> JGR doesn't merge one-by-one either.
14:18:48 <peter1138> I don't know what the "chunk" strategy is though.
14:19:09 <jessicathegunlady> I'm still pretty used to casual speak.
14:19:14 <peter1138> That's not what I meant.
14:19:33 <peter1138> I mean I don't know what strategy JGR uses to pick which commits to merge as a chunk.
14:19:52 <jessicathegunlady> Thank you for clarifying.
14:19:56 <rito12_51026> LordAro: pick every "Update: Translations from eints" commit
14:20:18 <peter1138> "Merge until it conflicts" :D
14:20:27 <jessicathegunlady> that's my strategy
14:20:29 <LordAro> might be too regular, depending on how active that particular week was
14:20:37 <_jgr_> Pretty much every time I merge something from vanilla there is a conflict
14:21:44 <locosage> well, I merge until it conflicts or stops compiling...
14:21:53 <jessicathegunlady> I guess working on my tree placer PR is just one step above that then.
14:21:54 <_jgr_> As for language updates, I changed strategy on that recently am not picking those individually either
14:33:47 <rito12_51026> How do you combine two EnumBitSets?
14:33:47 <rito12_51026> Does `a |= b;` work?
14:34:44 <_jgr_> Should do (try it and see)
14:35:43 <rito12_51026> I get this error:
14:35:43 <rito12_51026> `/home/cyprian/openTTD/OpenTTD_SourceCode/src/vehicle.cpp:1799:30: error: no match for ‘operator|=’ (operand types are ‘VehicleEnterTileStates’ {aka ‘EnumBitSet<VehicleEnterTileState, unsigned char>’} and ‘EnumBitSet<VehicleEnterTileState, unsigned char>’)`
14:36:02 <LordAro> that would suggest that it does in fact, not work
14:38:02 <jessicathegunlady> Hm... Question. Well, question about questions. Was wondering if it's alright for me to potentially ask some newbie-ish questions about some of the code? Have been hesitant since I've wanted to avoid being a bother to the professionals.
14:40:12 <DorpsGek> LordAro: Don't ask to ask, just ask
14:40:27 <LordAro> of course, discord people don't get that
14:42:48 <dwfreed> jessicathegunlady: I don't even *play* openttd, and they put up with my dumb questions
14:44:37 <peter1138> rito12_51026, `a.Set(b);`
14:44:45 <jessicathegunlady> Aye, it's kinda just drilled in to my nature that I check before asking things, feels very rude of me to assume people will be fine with it.
14:46:04 <rito12_51026> peter1138: Thanks
14:46:38 <peter1138> There is a reason for the madness :)
14:47:10 <peter1138> While `a |= b` is really simple for setting things, other operations are less obvious.
14:47:25 <peter1138> e.g. `a &= ~b` vs `a.Reset(b)`
14:47:53 <peter1138> Or `(a & b) == b` / `(a & b) != 0` vs `a.All(b)` / `a.Any(b)`
14:48:05 <peter1138> That and (theoretically) type-safety.
14:49:18 <Rubidium> Wait! What? You don't know that by heart?!?
14:49:50 <locosage> btw, what's the right way to create bitset that is all set?
14:49:54 <peter1138> Also `(a & (1U << b)) != 0` vs `a.Test(b)`
14:50:32 <peter1138> (With `to_underlying(b)` in some cases)
14:51:05 <locosage> I figured `CompanyMask{}.Set()` should work but looks kinda awkward
14:51:43 <peter1138> That is used in one place already.
14:53:10 <locosage> oh, indeed, guess I checked for some other enum when I was looking for it
14:54:13 <peter1138> Ideally something like `CompanyMask CompanyMask::ALL;` could exist, but you can't define the static constant within the class because the class isn't fully defined yet.
14:55:19 <locosage> `CompanyMask::AllSet()` then? like `::Invalid()`
14:55:34 <rito12_51026> void set_gene(const gene &p_value, size_t idx) {
14:55:34 <rito12_51026> if(idx < 0 || idx >= n_of_genes()) throw out_of_range{"Genetics::DNA::set_gene"};
14:55:34 <rito12_51026> TYPE g = (p_value.alleles[1] * 2 + p_value.alleles[0] * 1) << (idx*2); // Calculate new value this pair of alleles
14:55:34 <rito12_51026> value = value & ~(TYPE(3) << (idx*2)); // Remove old value from DNA
14:55:56 <rito12_51026> That's obvious, isn't it
14:56:04 <locosage> though I personally hate ::Invalid with passion 😅
14:56:24 <locosage> lost count to how many times I had to type it recently
15:01:56 <jessicathegunlady> LordAro: ...Oh my god that Stanford link is horrifying.
15:03:06 <jessicathegunlady> Probably makes a lot more sense to people who actually got *taught* programming.
15:03:24 <_jgr_> Many are these are obsolete, newer CPUs/instruction sets have fancy instructions for a lot of this
15:03:50 <LordAro> jessicathegunlady: it should make sense to anyone who knows the C bit operators
15:03:51 <jessicathegunlady> Aye, makes a lotta sense.
15:03:54 <LordAro> understanding it on the other hand...
15:04:12 <jessicathegunlady> *I do not know C bit operators.*
15:04:18 <jessicathegunlady> I know the slightest bit.
15:04:41 <jessicathegunlady> But a lot of stuff to do with bits is still pretty unreadable to me.
15:05:34 <jessicathegunlady> For reference, I have no formal education in terms of programming.
15:06:05 <jessicathegunlady> I've basically bumbled in to managing to figure out C++.
15:06:56 <jessicathegunlady> And I've never had to work with bits in C#.
15:07:01 <LordAro> you're saying these things as if a formal education is the only way to know about such things
15:07:26 <LordAro> my formal programming education occurred after i learned C++ :p
15:08:29 <jessicathegunlady> True. I guess I more just mean that I never had any form of "learning" C++, never done any tutorials, any books, any of that. Technically true for all of my programming experience.
15:09:01 <jessicathegunlady> I've pretty much got to the point I'm at by looking at existing work and tinkering around with it until it does what I want.
15:09:06 <jessicathegunlady> Makes sense.
15:09:06 <LordAro> i guess my point is, don't use it as an excuse :p
15:09:20 <jessicathegunlady> Oh, of course.
15:09:51 <jessicathegunlady> I'm just using it as some explanation as for why I'm still hazy on some aspects of the language, and some terms.
15:11:29 <jessicathegunlady> Though hey. The work I have done for JGRPP thus far hasn't been *completely* rewritten by someone more competent than me.
15:11:57 <peter1138> I never had formal programming education. (Clearly it shows.)
15:13:38 <peter1138> If your work has been rewritten that means that means someone thought your code and ideas were valuable enough to do so.
15:13:40 <jessicathegunlady> Experience always seems to help on that front.
15:13:52 <jessicathegunlady> Good point, honestly.
15:13:53 <peter1138> Experience is easy, just be an old fart.
15:15:13 <jessicathegunlady> To be fair, I'm happy being someone who kinda makes something *work well enough* that means it just needs improving rather than replacing.
15:15:41 <jessicathegunlady> It's also nice to see what someone who actually knows what they're doing a lot more change things.
15:16:36 *** Flygon has quit IRC (Read error: Connection reset by peer)
15:19:34 <rito12_51026> By the way I'm looking forward to modules feature from C++23
15:20:07 <LordAro> almost no chance of it being usable by then
15:20:30 <locosage> 102/1502 commit merged huh, slow but convenient
15:20:46 <locosage> knowing exact commit that broke things sure makes them easier to fix
15:57:42 <audigex> _jgr_: Sure, but instead of needing a specifically trained model that only identifies specific things, LLMs can be much more generalised
16:26:15 <mnhebi> LordAro: great, I only browsed that and my head already hurts
16:29:13 <mnhebi> okay I swear that page is just a screening test for an insane asylum.
16:41:56 <locosage> on a plus side non-stop compiling heats the room pretty well 🤣
16:42:34 <jessicathegunlady> Maybe using a 7600x has it's benefits.
16:43:04 <jessicathegunlady> Though... To be fair I'm also not doing big code changes that require me to recompile the entire thing.
17:42:55 *** gelignite has joined #openttd
18:05:41 *** tokai|noir has quit IRC (Ping timeout: 480 seconds)
18:09:46 *** ChanServ sets mode: +v tokai
18:16:43 <rito12_51026> LordAro: Can't it be used for the std at the beginning?
18:20:52 <rito12_51026> gcc already supported it in December 2024
18:24:33 <rito12_51026> rito12_51026: Wait they are from C++20 standard
18:27:10 <cu-kai> yeah, now there's no benefit of owning an android phone over an iPhone
18:27:14 <rito12_51026> 🙁 That will be painful
18:27:47 <cu-kai> supposedly you'll be able to bypass it still with `adb install`
19:14:40 *** tokai has quit IRC (Ping timeout: 480 seconds)
19:18:03 *** ChanServ sets mode: +v tokai
19:41:25 <peter1138> I think as I was writing the Screenshot stuff I thought there'd been some state used, but it turns out there is.
19:54:10 <andythenorth[d]> what other forms of creep are there?
19:54:24 <peter1138> Creepers gonna creep.
19:55:09 <andythenorth[d]> Solute Drag Creep
19:55:26 <andythenorth[d]> Creep by Radiohead
19:57:59 <peter1138> Lack of `const` is something that bugs me about C#.
19:58:57 <michi_cc> `readonly` everywhere 🙂 (but is of course to the same as C++ const)
19:59:31 <_jgr_> Lack of sensible const is one of my main gripes about golang
20:50:01 <locosage> LordAro: lol, apparently not all of them do 😜
21:30:04 *** keikoz has quit IRC (Ping timeout: 480 seconds)
21:52:23 *** Wolf01 has quit IRC (Quit: Once again the world is quick to bury me.)
22:03:37 *** lobstaroooo has quit IRC (Remote host closed the connection)
continue to next day ⏵