Times are UTC Toggle Colours
00:00:37 *** Samu has joined #openttd 00:11:16 *** Samu has quit IRC 01:13:06 *** Flygon has joined #openttd 02:16:14 *** adikt- has joined #openttd 02:21:19 *** adikt has quit IRC 02:51:50 *** adikt- has quit IRC 02:51:57 *** adikt has joined #openttd 03:08:13 *** glx has quit IRC 03:34:03 *** debdog has joined #openttd 03:37:24 *** D-HUND has quit IRC 04:06:58 *** Wormnest__ has quit IRC 04:46:12 *** sla_ro|master has joined #openttd 04:47:20 *** sla_ro|master has quit IRC 04:48:46 <DorpsGek_III> [OpenTTD/OpenTTD] SoothedTau commented on issue #7644: Mysteriously poor performance on macOS https://git.io/fjii3 05:08:31 *** OsteHovel has quit IRC 05:14:54 *** OsteHovel has joined #openttd 05:33:22 *** tokai|noir has joined #openttd 05:33:22 *** ChanServ sets mode: +v tokai|noir 05:40:04 *** tokai has quit IRC 07:25:37 *** Etua has joined #openttd 07:36:40 *** ZirconiumX has quit IRC 07:44:27 *** ZirconiumX has joined #openttd 07:52:01 *** tokai has joined #openttd 07:52:01 *** ChanServ sets mode: +v tokai 07:58:48 *** tokai|noir has quit IRC 08:01:47 *** tokai|noir has joined #openttd 08:01:47 *** ChanServ sets mode: +v tokai|noir 08:08:36 *** Smedles has quit IRC 08:08:48 *** tokai has quit IRC 08:10:11 *** tokai has joined #openttd 08:10:11 *** ChanServ sets mode: +v tokai 08:10:53 *** Smedles has joined #openttd 08:17:03 *** tokai|noir has quit IRC 08:25:16 *** Etua has quit IRC 08:47:17 *** Smedles has quit IRC 08:50:34 *** Smedles has joined #openttd 09:42:59 *** tokai|noir has joined #openttd 09:42:59 *** ChanServ sets mode: +v tokai|noir 09:49:31 *** Samu has joined #openttd 09:50:03 *** tokai has quit IRC 10:00:06 *** Samu has quit IRC 10:07:54 *** tokai has joined #openttd 10:07:54 *** ChanServ sets mode: +v tokai 10:14:49 *** tokai|noir has quit IRC 10:56:51 *** nielsm has joined #openttd 11:01:38 *** tokai|noir has joined #openttd 11:01:38 *** ChanServ sets mode: +v tokai|noir 11:08:39 *** tokai has quit IRC 11:31:42 *** tokai has joined #openttd 11:31:42 *** ChanServ sets mode: +v tokai 11:38:24 *** tokai|noir has quit IRC 12:26:11 *** tokai|noir has joined #openttd 12:26:11 *** ChanServ sets mode: +v tokai|noir 12:33:19 *** tokai has quit IRC 12:59:01 *** Samu has joined #openttd 13:03:27 <Samu> hi 13:23:14 *** tokai has joined #openttd 13:23:14 *** ChanServ sets mode: +v tokai 13:28:46 *** spnda has joined #openttd 13:29:59 *** tokai|noir has quit IRC 13:42:28 *** Flygon has quit IRC 13:54:06 *** cHawk has joined #openttd 14:24:11 *** tokai|noir has joined #openttd 14:24:11 *** ChanServ sets mode: +v tokai|noir 14:31:09 *** tokai has quit IRC 15:21:39 <Samu> this comment is incredibly confusing https://github.com/OpenTTD/OpenTTD/blob/master/src/water_cmd.cpp#L1351 15:26:25 <Samu> but i finally got it 15:26:28 <Samu> took me 4 years 15:32:49 <Samu> does it matter the infrastructure counts of the company that bankrupts? you make it seem like it's important 15:33:04 <Samu> on change tile owner 15:34:26 <DorpsGek_III> [OpenTTD/OpenTTD] SamuXarick updated pull request #7937: Build on competitor canal https://git.io/JvUIQ 15:35:12 <Samu> I had a mistake in the counting, but since the company bankrupts, it wouldn't matter 15:35:41 *** tokai has joined #openttd 15:35:41 *** ChanServ sets mode: +v tokai 15:41:47 *** sla_ro|master has joined #openttd 15:42:59 *** tokai|noir has quit IRC 15:56:30 <DorpsGek_III> [OpenTTD/OpenTTD] SamuXarick updated pull request #7937: Build on competitor canal https://git.io/JvUIQ 16:00:14 *** Generalcamo has joined #openttd 16:01:39 *** Generalcamo has quit IRC 16:02:49 *** Generalcamo_ has joined #openttd 16:02:59 <Generalcamo_> Hello 16:03:21 *** Generalcamo_ is now known as Generalcamo 16:03:59 <Generalcamo> Just curious, is OpenMSX still an active project? 16:09:34 <Samu> it should be 16:11:11 <DorpsGek_III> [OpenTTD/OpenTTD] SamuXarick updated pull request #7937: Build on competitor canal https://git.io/JvUIQ 16:11:42 <Samu> hue 16:11:44 <Samu> https://github.com/OpenTTD/OpenTTD/pull/7937/commits 16:12:38 *** sla_ro|master has quit IRC 16:12:54 <Samu> ah snap, commit checker is lame at times 16:13:20 <Generalcamo> There's a pull request on the OpenMSX github that has been open for nearly a year now 16:13:31 <Generalcamo> It makes me worried that any contribution I make will be ignored 16:13:49 *** sla_ro|master has joined #openttd 16:13:54 <DorpsGek_III> [OpenTTD/OpenTTD] SamuXarick updated pull request #7937: Build on competitor canal https://git.io/JvUIQ 16:23:40 *** tokai|noir has joined #openttd 16:23:40 *** ChanServ sets mode: +v tokai|noir 16:25:10 *** bjarni has quit IRC 16:26:55 <LordAro> Generalcamo: things are in the process of getting cleaned up, it just takes a bit of time to do so 16:27:18 <LordAro> OpenMSX certainly isn't dead - any contribution won't be ignored intentionally 16:27:25 <LordAro> just might take a while for someone to notice it 16:28:55 *** Wormnest__ has joined #openttd 16:30:34 *** tokai has quit IRC 16:33:39 *** DecapitatedO has joined #openttd 16:41:04 <Generalcamo> Ahh 16:41:05 <Generalcamo> Alright 16:41:36 <Generalcamo> https://github.com/OpenTTD/OpenMSX/pull/1 16:41:40 <Generalcamo> This is the PR I was referring to 16:53:43 *** HerzogDeXtEr has joined #openttd 16:58:16 *** TrueBrain_ii has quit IRC 17:00:36 *** cHawk has quit IRC 17:02:32 *** TrueBrain_ii has joined #openttd 17:22:00 *** tokai has joined #openttd 17:22:00 *** ChanServ sets mode: +v tokai 17:29:04 *** tokai|noir has quit IRC 17:31:41 *** Arveen has quit IRC 17:37:28 <Samu> I typed some notes https://github.com/OpenTTD/OpenTTD/pull/7937#issuecomment-594780463 17:37:45 <Samu> sheding some light on that mysterious PR 17:40:55 <Samu> ChangeTileOwner functions are still a bit of a mystery 17:41:48 <Samu> they got teared due to simplicity 17:42:06 <Samu> and that may confuse a possible reviewr 17:44:52 <Samu> they're still hard as heck to follow 17:45:23 <Samu> but that's their nature 17:55:29 *** Arveen has joined #openttd 17:57:34 <DecapitatedO> Hey, I'd like to work on issue #7957 (https://github.com/OpenTTD/OpenTTD/issues/7957). Currently, there are two proposed solutions. 17:57:41 <DecapitatedO> 1) Have two console commands, banlist_read and banlist_write, that read a list of banned players from a local file, and write the list of banned players to a local file 17:57:55 <DecapitatedO> 2) Make banned players appear in log files, parse the log files, and generate a new openttd.cfg with the banned players, in case that openttd.cfg is mounted read-only, like in some Kubernetes configurations 17:58:03 <DecapitatedO> Do you have any opinions on which solution should be implemented? 17:58:33 <LordAro> nielsm: you had thoughts on this before ^ 17:58:40 <LordAro> i think i prefer the second solution though 17:58:56 *** Arveen2 has joined #openttd 18:00:51 <DecapitatedO> Alright 18:02:37 *** frosch123 has joined #openttd 18:04:09 *** Arveen has quit IRC 18:06:40 <nielsm> doesn't the second solution present the problem of syncing new bans into a server, without restarting? 18:07:19 <nielsm> you'd have to implement an admin port solution for that regardless, if you don't want servers to have regular restarts 18:08:20 *** Arveen2 has quit IRC 18:19:33 *** tokai|noir has joined #openttd 18:19:33 *** ChanServ sets mode: +v tokai|noir 18:23:18 <TrueBrain> frosch123: do you have a source for your height map conclusion? As I couldn't find the source:( 18:24:25 <TrueBrain> frosch123: and I will attach my test.c later, but the NewGRF really is flipped for me :p I am still so confused :( and tnx for looking into it :) 18:24:55 *** Progman has joined #openttd 18:26:09 <frosch123> TrueBrain: https://github.com/OpenTTD/OpenTTD/blob/master/src/network/core/tcp_content.cpp#L133 18:26:14 <frosch123> scenarios and heightmaps are the same thing 18:26:24 *** tokai has quit IRC 18:26:28 <frosch123> the scenaioscanner finds bots 18:26:31 <frosch123> *bth 18:26:33 <frosch123> *both 18:26:53 *** tokai has joined #openttd 18:26:53 *** ChanServ sets mode: +v tokai 18:27:52 <frosch123> TrueBrain: argueably ottd only compares the id, so it relies on heightmaps and scenarios having distinct ids 18:28:44 <frosch123> i guess that is important for new bananas :) scenario and heightmap ids are shared 18:29:04 <TrueBrain> Ah .. good to know, and sweet, you found it :D code only talks about scenarios :p silly :D 18:29:18 <TrueBrain> Yes, very important :D 18:31:50 <frosch123> added that as a comment, to make it complete 18:33:54 *** tokai|noir has quit IRC 18:34:46 <frosch123> TrueBrain: newgrf.py also reads the grfid the same as ottd 18:41:40 *** glx has joined #openttd 18:41:40 *** ChanServ sets mode: +v glx 18:41:52 *** Generalcamo has quit IRC 18:42:42 *** tokai|noir has joined #openttd 18:42:42 *** ChanServ sets mode: +v tokai|noir 18:49:44 *** tokai has quit IRC 19:09:44 <frosch123> TrueBrain: i think your confusion was about https://godbolt.org/z/kENC99 19:12:23 *** Wolf01 has joined #openttd 19:20:39 *** spnda has quit IRC 19:24:10 *** Progman has quit IRC 19:29:52 <TrueBrain> it is not a "was" 19:30:02 <TrueBrain> and I am not confused about that part :) 19:30:06 <TrueBrain> it is where the problem kinda starts 19:30:15 <TrueBrain> my gist I typed pretty explicit with ' and " :) 19:30:34 <TrueBrain> it is that the GRFID 'ABCD' and the AI short_name "ABCD" result in different unique_ids 19:30:41 <TrueBrain> from a user perspective, that is a bit of an issue, so to say 19:31:17 <TrueBrain> so the GRFID 'ABCD' is stored as 0x41424344 19:31:42 <TrueBrain> where the short_name "ABCD" is stored as 0x44434241 19:31:55 <TrueBrain> I guess the biggest issue I have, is that for some reason, BaNaNaS byte_swaps the GRFID 19:32:30 <TrueBrain> btw, you state that the GRFID 'ABCD' becomes 0x44434241 .. that is not what I find. 19:32:39 <frosch123> why did you even start with ' ? 19:32:49 <TrueBrain> '' as multichar, "" as string :D 19:33:06 <frosch123> yes, but why do you consider grfid a multichar? 19:33:15 <frosch123> and not a string 19:33:28 <TrueBrain> grfids are cast from char[4] to uint32, not? 19:33:44 <TrueBrain> short_names are read char-by-char into an uint32 19:33:53 <frosch123> yes, but char[4] is a string for this purpose 19:34:39 <TrueBrain> and there it seems to break; at least, for some reason the uint32s I receive from the OpenTTD client from AIs is in a different order than NewGRFs 19:35:07 <frosch123> that is because ottd sents them in network order, so ottd swaps them for the network 19:35:16 <TrueBrain> they are BOTH send in network order 19:35:24 <TrueBrain> so why are they byteswapped in comparison? 19:35:49 <TrueBrain> again, NewGRF 'ABCD' becomes 0x41424344 after reading, AI "ABCD" becomes 0x44434241 19:36:19 <TrueBrain> anyway, the problem I was trying to solve, is that when I use newgrf.py or "grfid" (the grfcodec tool), the unique_id I got was different from what BaNaNaS database returned to me 19:36:28 <TrueBrain> while for AIs and BaseSets it was correct 19:36:53 <TrueBrain> that in essence is what I am trying to understand, and where I fail misseribly :D 19:37:19 <frosch123> [20:35] <TrueBrain> again, NewGRF 'ABCD' becomes 0x41424344 after reading, AI "ABCD" becomes 0x44434241 <- that statement is wrong 19:37:41 <frosch123> where the hell do you start with 'ABCD'? newgrf are also just "ABCD" 19:38:01 <TrueBrain> no need to get hell involved :) I am just tryring to understand the world here :) 19:38:17 <TrueBrain> from what I understand, the grfid char[4] is cast to an uint32, right? 19:38:28 <frosch123> yes, but that is not 'ABCD' 19:38:30 <TrueBrain> so that char[4] = "ABCD" becomes 0x41424344, right? 19:38:46 <frosch123> no, see my godbold link 19:38:49 <TrueBrain> (well, you cannot assigned "ABCD" to a char[4], but not the point :) 19:39:13 <TrueBrain> ah, so that is what you meant with your link; did not pick that up :) 19:39:14 <frosch123> char[4] = "ABCD" becomes 0x44434241 19:39:54 <TrueBrain> okay, so there we misundrstood eachother; at least, I did not pick that up from your link 19:40:05 <TrueBrain> I was told grfids are assigned as multichars, you say as strings. k 19:40:35 <TrueBrain> so that makes it even more puzzling tbh 19:41:16 <TrueBrain> where do we write strings to in GRFs, just for my shake 19:42:17 <frosch123> what? 19:42:20 <TrueBrain> shake? sake, lol 19:42:53 <frosch123> a cast converts by LE, a multibyte constant is converted by the compilers as bE 19:43:11 <frosch123> so, multibyte only applies to constants in the source code 19:43:36 <frosch123> since newgrf are not compiled into ottd, it is pretty hard to define a grfid as multibyte constant 19:43:55 <TrueBrain> that I understand ;) I was wondering how something like NML writes it to the file 19:44:32 <TrueBrain> https://github.com/OpenTTD/grfcodec/blob/master/src/grfid.cpp#L150 19:44:51 <frosch123> file.print_string(self.grfid.value, False, True) <- nml prints it as string :) 19:44:56 <TrueBrain> okay, now I get why BaNaNaS is doing the swap too, it is this code written in Python :D 19:45:23 <TrueBrain> yeah, okay, so "ABCD" is written in the file as 41 42 43 44 19:45:28 <TrueBrain> which in LE is 0x44434241 19:45:31 <frosch123> grfid prints in for the user as swapped 19:45:31 <TrueBrain> k, good 19:45:53 <TrueBrain> so it is byteswapped to become 41 42 43 44 for the user perspective, which is fine ofc 19:46:07 <TrueBrain> the problem is .. this is stored in the BaNaNaS database :D 19:46:11 <TrueBrain> so there it went wrong, okay, that makes sense 19:46:26 <TrueBrain> BaNaNaS writes the byteswapped value in the database 19:46:41 <TrueBrain> (as uint32) 19:46:49 <TrueBrain> so it writes 0x41424344, instead of 0x44434241 19:47:02 <frosch123> so the content_server swaps it back? 19:47:14 <TrueBrain> was just checking that part 19:48:15 <TrueBrain> not that I can find. And this is why I am not understanding it 19:48:26 <TrueBrain> to be clear: this might just be me totally not understanding what the hell is going on 19:48:36 <TrueBrain> first let meupdate the gist 19:50:59 *** gelignite has joined #openttd 19:51:23 <TrueBrain> https://github.com/OpenTTD/OpenTTD/blob/master/src/network/core/tcp_content.cpp#L120 19:51:30 <TrueBrain> why ... is that BSWAP32 there? 19:52:19 <TrueBrain> Config 19:52:24 <TrueBrain> so .. that is for config.ini 19:52:24 <TrueBrain> k 19:53:05 <TrueBrain> no, it is not 19:53:05 <frosch123> ah, so it is indeed swapped by the ottd client, just for bananas 19:53:10 <TrueBrain> lol, oops, never believe a function-name :) 19:53:15 <TrueBrain> so I am not crazy \o/ 19:53:36 <TrueBrain> so BaNaNaS is storing it wrong, and the protocol fixesit, or the protocol was broken, and BaNaNaS fixes it, what-ever it might be 19:53:41 <TrueBrain> but ... finally :D That line of code makes sense :D 19:53:59 <frosch123> meh, so bananas stores it wrong in the db, and client fixes it :/ 19:54:11 <frosch123> that means we cant change it :/ 19:54:13 <TrueBrain> which ever came first, but yes 19:54:30 <TrueBrain> well, I am somewhat planning to bump the protocol version, because we found more shit to fix 19:54:37 <TrueBrain> but we need backwards compatibility ;) 19:54:55 <frosch123> ok, so the new content_server should swap it 19:55:01 <TrueBrain> yes 19:55:08 <TrueBrain> in the GitHub repo I will store it as you would expect 19:55:15 <TrueBrain> so 41424344 for ABCD GRFID 19:55:30 <TrueBrain> and content_server is going to fix this up 19:55:52 <TrueBrain> okay, this took waaayyyyy to long to find 1 line of code that makes a boo-boo :P 19:56:03 <frosch123> return reader.swap(reader.read_dword()) <- musa also swaps it :) 19:56:21 <TrueBrain> yeah, that is where my ?!?!?!?! started :P 19:56:39 <TrueBrain> but ofc musa also has to swap it :D So someone already should have had a mindfuck about this :P 19:56:40 <TrueBrain> possibly did 19:58:00 <TrueBrain> okay, it makes me really happy to found out what is going on, as I hate having code that "works but nobody knows why" 20:01:17 <TrueBrain> okay, so now NewGRFs from BaNaNaS can be converted with "%08x", and AIs etc first need to be byte-swapped .. yeah, that is correct 20:01:42 <LordAro> TrueBrain: pretty sure ?!?!?!?! is a trigraph 20:01:51 <TrueBrain> a what? 20:02:03 <frosch123> trigraphs are removed in c++17 or 20 20:02:59 <TrueBrain> ??= becomes # .. wtf is this? 20:03:17 <frosch123> it's for vim users 20:03:21 <TrueBrain> scary shit :P 20:03:24 <TrueBrain> nobody cares about vim users :D 20:03:55 <TrueBrain> okay, so now I have Scenarios and Heightmaps left to validate .. Scenario is written in the database as 1, 2, 3, etc 20:04:02 <TrueBrain> so "%08x" gives a folder-name that is as expected 20:04:37 <frosch123> i thought you wanted to treat all the same? 20:04:39 <TrueBrain> on OpenTTD's side it is read with scanf and %u, from 1, 2, 3, etc values too 20:04:47 <frosch123> so first scenario would have folder name "01000000" 20:05:01 <TrueBrain> well, that is what happened, but not what I would expect; do you? 20:05:09 <TrueBrain> in the GitHub repo it looks really weird :P 20:05:37 <frosch123> if you want to use different folder names for scenarios and heightmaps, then i would use %d instead of %x 20:06:01 <TrueBrain> that makes the content-server code a tiny bit more difficult, as that means special cases two content-types :) 20:06:14 <TrueBrain> I guess the bigger question is: do we want to allow people to self-assign values? 20:06:20 <frosch123> no :) 20:06:41 <TrueBrain> so auto-count .. means I need a file to tell the counter 20:06:48 <TrueBrain> but otherwise not a problem 20:06:49 <frosch123> i don't get your comment about "two types", if you only do the bswap for some types, you already have two types 20:07:01 <frosch123> if you treat all the same, then scenario beomces "01000000" 20:07:04 <TrueBrain> the bswap is done now on receive/send 20:07:11 <TrueBrain> so the internal code has no knowledge of this protocol glitch 20:07:38 <TrueBrain> yeah, that is what happened now, it became "01000000", and I was wondering if we wanted to keep that :D 20:07:47 <frosch123> i think it is fine 20:07:56 <TrueBrain> it looks a bit odd from a human perspective, that is mostly it 20:08:03 <frosch123> the id is not used anywhere else in that format, so it can be whatever 20:08:22 <TrueBrain> very true; but the eye also wants to be pleased :P 20:08:30 <TrueBrain> but I also really like less code 20:08:51 <TrueBrain> so I am VERY conflicted :P 20:09:49 *** andythenorth has joined #openttd 20:10:03 <TrueBrain> wait, I don't need an extra file to know "latest", as we never remove folders. Blacklist them, possibly, but never remove. 20:10:06 <TrueBrain> sweet 20:10:38 <andythenorth> yo 20:10:40 <TrueBrain> frosch123: https://gist.github.com/TrueBrain/513471b885c2005726787ed1b1d2ef1b <- it looks so uggglllyyyyy 20:10:41 <TrueBrain> hi andythenorth 20:10:52 <TrueBrain> frosch123: but okay, doing more things the same is better .... grrr :@ :) 20:11:44 <frosch123> TrueBrain: imagine we run out of uint32 ids. with the LE schema you can easily extend it to uint64 20:11:55 <TrueBrain> hahahaha :D 20:12:04 <TrueBrain> Kudos for effort :) 20:12:13 <frosch123> do you not believe in the longevity of ottd? :p 20:12:23 <TrueBrain> till the year 3020? Nah! 20:12:41 <frosch123> you mean year 30^20, right? 20:12:56 <TrueBrain> I expect that in the year 2938, many people start playing OpenTTD again 20:13:11 <TrueBrain> and given the many moons and planets we occupy, a lot of heightmaps are created 20:13:15 <frosch123> very specific :) 20:13:23 <TrueBrain> makes it feel more real 20:13:24 *** sla_ro|master has quit IRC 20:13:55 <frosch123> but good idea, we should ban city builder players to the moon 20:14:50 <TrueBrain> I really really cannot believe, grfids are bytewapped on the protocol .. 20:15:29 <TrueBrain> okay ... content server boots again, world seems to be sane 20:16:06 <TrueBrain> nobody can claim I did not give this enough attention :P 20:17:07 <TrueBrain> btw frosch123 , I found 1 AI where Zuu did his magic, and the parsing of the short_name indeed fails 20:17:18 <TrueBrain> so I need that Python-based .nut parser after all :P 20:17:55 <frosch123> i would not write a custom .nut parser. rather use the real squirrel 20:18:24 <TrueBrain> yeah, C API link it 20:18:25 <andythenorth> Elon is building his starship factory 20:18:33 <andythenorth> 1000 rockets, 150 ton payloads, reusable 20:18:34 <TrueBrain> well, C++, but what-ev 20:18:42 <andythenorth> thinks he needs to move about 1m tonnes of freight to mars 20:19:31 <DorpsGek_III> [OpenTTD/OpenTTD] SamuXarick updated pull request #7937: Build on competitor canal https://git.io/JvUIQ 20:19:40 <andythenorth> hmm nothing in forums 20:19:47 <andythenorth> :o frosch in reddit though 20:19:56 <TrueBrain> link or it didnt happen 20:20:02 <Samu> there was a bug with infrastructure countings and nobody told me anything :) 20:20:10 <Samu> fixed 20:20:36 <andythenorth> https://www.reddit.com/r/openttd/comments/fctebr/an_area_for_just_cool_pictures/ 20:21:19 <TrueBrain> nice :D 20:21:50 <andythenorth> also was the Feb blog post done yet? 20:21:58 <andythenorth> lots of things happened.... 20:22:24 <frosch123> andythenorth: that's already my 5th post on that reddit, or so 20:22:28 <andythenorth> Lo 20:22:31 <andythenorth> :o even 20:23:00 <frosch123> i never answer questions, i always link to external sites 20:23:10 <frosch123> if there were mods, they would hate me :) 20:24:12 <andythenorth> hmm 20:24:18 <andythenorth> is 2 small sausages enough? 20:24:25 * andythenorth generally eating less meat 20:24:31 <andythenorth> but this is the only meat today 20:24:39 <andythenorth> like 70g so far 20:25:20 <frosch123> i was down to 300g/week last year. this year i have access to a cafeteria, so i cannot track it 20:25:42 <TrueBrain> cannot, or don't want to? :P 20:25:55 <andythenorth> 300g / week is 2 servings? 20:26:09 <frosch123> i can track the number of meat and veggie meals per week, but i have no idea how much meat there actually is 20:27:01 <Samu> OpenTTD CI Expected — Waiting for status to be reported 20:27:06 <Samu> is it working? 20:27:20 <frosch123> andythenorth: it's multiple meals as cold cuts 20:27:21 <Samu> i waited 8 minutes already 20:27:44 <TrueBrain> Samu: I would write an angry letter if I were you 20:27:49 <andythenorth> if it's prosciutto or similar, 300g goes a long way :) 20:27:57 * andythenorth makes a ham sandwich 20:28:54 <Samu> doesn't seem to be working, it doesn't usually have to wait that much 20:29:33 <andythenorth> so shall I write the nfo / nml docs for diagonal rivers? :) 20:30:29 <frosch123> or write the maparray docs for tiles with river + rail 20:30:46 <frosch123> does river+river work? 20:30:57 <Samu> river/canal 20:31:00 <TrueBrain> river bridges?! :D 20:31:05 <TrueBrain> (aka aquaducts) 20:31:40 <frosch123> aquaducts are canal-bridges, river bridges are usally called tunnels 20:32:27 <Samu> i want to write an angry letter 20:32:42 <Samu> OpenTTD CI is not advancing :( 20:32:48 <TrueBrain> frosch123: you say tomato, I say tomato :P 20:33:19 <frosch123> i don't like the beatles 20:33:34 <TrueBrain> what did they ever do to you?! 20:34:43 <Samu> https://github.com/OpenTTD/OpenTTD/pull/7937 - Some checks haven't completed yet... it's been 15 minutes, it's taking too long 20:34:51 <Samu> angry mode 20:34:54 <Samu> j/k 20:36:25 * andythenorth considered writing docs first for next newgrf change :) 20:36:32 <TrueBrain> how mature! 20:36:50 <andythenorth> I've never seen it work, mind you 20:36:53 <andythenorth> but eh 20:37:01 <TrueBrain> funny enough, me neither :) 20:37:18 <andythenorth> my favourite is UI style guides 20:37:22 <TrueBrain> frosch123: 1 minor downside of the 01000000, folder sorting is odd as fuck :P 20:37:23 <andythenorth> then the docs are the test cases 20:37:32 <andythenorth> so have to be written at same time as UI styles 20:37:42 <TrueBrain> tdd 20:37:45 <TrueBrain> ddd 20:37:46 <andythenorth> innit 20:37:50 <TrueBrain> (documentation-driver-development) 20:38:04 <andythenorth> I thought ddd was despair-driven-development? 20:38:24 <TrueBrain> I only read that "ddd" is very insulting to women. the C and D language too 20:38:26 <TrueBrain> and now the F language 20:38:35 <frosch123> TrueBrain: https://github.com/OpenTTD/OpenTTD/commit/3a13b75e37b5642de3c1e89cf6ab3bf860b76375#diff-ac5f18db9673c1af6a0439091bc33598 <- the BSWAP has its origin in the gui code, so it probably was copy&paste from the user-fomatting 20:38:41 <TrueBrain> why are all the programming language so women-related :P 20:39:04 <TrueBrain> frosch123: I so much tried not to look into the why; so happy you did :D 20:39:47 <TrueBrain> 17th of Jan 2009 .. the day we started with BaNaNaS .. 20:39:51 <TrueBrain> 11 years old .. 20:39:53 <TrueBrain> lol 20:40:20 <TrueBrain> server went live a week before I believe, for some people to try out .. 20:40:31 <TrueBrain> and in a month we had many more uploads than Rb and me ever expected :P 20:41:07 <TrueBrain> but yeah, this seems like an honest mistake that slipped in ... 20:44:59 <frosch123> hmm, for me ddd means data-display-debugger. all entries on urbandictionary are rather men-related than women-related. and programming languages are mostly about coffee 20:45:22 <frosch123> 3 different off-topic things in one line, i guess that is no record :) 20:45:48 <frosch123> i blame you :) 20:46:05 <TrueBrain> yw :) 20:46:40 <TrueBrain> okay, all BaNaNaS files, minus the few errors in ob[gms] files, all validate now. Well, except for a GameScript (tnx Zuu) and a NewGRF (fuck PDF support) 20:46:47 <TrueBrain> that makes me very happy :) 20:46:56 <LordAro> :) 20:47:19 <frosch123> when bananas was created, ottd could not even show the txt files 20:47:40 <frosch123> so also allowing pdf was reasonable 20:47:52 <TrueBrain> it was. But only 1 upload has it :D 20:48:03 <TrueBrain> so I am going to drop any form of support for that now :P 20:48:25 <frosch123> it's my favorite grf, and andy's least favorite 20:49:07 <TrueBrain> it is a savegame-only grf 20:49:25 <TrueBrain> hmm ... we remapped a few scenarios, remember .. that would mean I have to recreate the tarballs .. 20:49:38 <TrueBrain> guess I don't remap for now :D 20:49:52 <andythenorth> I have a least favourite grf? :o 20:50:07 <andythenorth> does it change the crossing bells sound for something even worse? 20:50:30 <frosch123> i think you consider it a youthful folly, and don't want to be reminded about it 20:51:25 <Samu> https://dev.azure.com/openttd/OpenTTD/_build it did not trigger the most recent build, can someone start it for me? 20:51:28 <glx> Samu: CI just not started yet 20:51:36 <Samu> ya, that 20:53:28 <glx> just force push again 20:53:37 <TrueBrain> so I guess I now really have to start working on the Javascript part ... ugh ....... can someone else please do so? 20:53:41 <TrueBrain> glx: does it ever work on drafts? 20:54:37 <glx> last 5 CI runs were for this PR, so yes 20:55:00 <TrueBrain> cool :) 20:55:17 <Samu> is there a limit per day? 20:55:40 <frosch123> andythenorth: what are you using js for? only the upload part? or more? 20:56:01 <TrueBrain> guess that was for me? :) 20:56:13 <frosch123> oh, yes 20:56:19 <Samu> $ git push --force 20:56:19 <Samu> Everything up-to-date 20:56:19 <TrueBrain> upload part for sure has to be javascript, yes 20:56:22 <Samu> doesn't let me push 20:56:24 <TrueBrain> the rest, I am not sure about yet .. 20:56:27 *** WormnestAndroid has quit IRC 20:56:28 <glx> git commit --amend 20:56:30 <TrueBrain> I was considering making it a single-page thingy 20:56:34 <glx> then you can force push 20:56:56 <frosch123> i wondered, how many people have their content already online somewhere else? like dropbox or similar. would it make sense to just ask for a link? 20:56:59 <TrueBrain> but honestly, I have no clue what I want there .. haven't written HTML/js in ages 20:56:59 <Samu> but I have nothing to amend atm, hmm gonna try 20:57:20 <TrueBrain> frosch123: good question; I have no clue honestly :) 20:57:27 <glx> even if you don't change anything in the commit it will be a new one 20:57:28 <DorpsGek_III> [OpenTTD/OpenTTD] SamuXarick updated pull request #7937: Build on competitor canal https://git.io/JvUIQ 20:57:28 <Samu> nice, it works 20:57:34 <TrueBrain> we could use https://uppy.io/ 20:57:44 <TrueBrain> allows everything, basically 20:57:51 <TrueBrain> the uploading part is easy btw 20:57:51 *** WormnestAndroid has joined #openttd 20:58:03 <Samu> aha, it started! https://dev.azure.com/openttd/OpenTTD/_build/results?buildId=5558&view=results 20:58:06 <TrueBrain> it is giving good and clear feedback on what needs fixing, that is a bit an a dread 20:58:12 <Samu> thx glx 20:58:17 <TrueBrain> and it might be okay once I start doing it .. but .. I am just dreading it :P 20:58:23 <glx> maybe it was just because nobody logged into azure for a long time 20:58:56 <TrueBrain> "that is a bit an a dread", wtf was I smoking .. lol 20:59:18 <frosch123> TrueBrain: if you use flask or bottle, i can help 20:59:27 <frosch123> (prefer flask) 20:59:39 <glx> silly names :) 20:59:47 <TrueBrain> hmm .. I was thinking doing it like the rest of the projects, in asyncio 20:59:53 <TrueBrain> but the API part I guess is simple 20:59:59 <TrueBrain> (but I could surely use help, ofc) 21:00:20 <TrueBrain> I can setup that it can serve static files and have a simple API; after that it is easier to colleborate, I guess 21:01:11 <frosch123> glx: i am waiting for tub and barrel 21:02:24 <andythenorth> I can't javascript but I can html 21:02:37 <andythenorth> but only old html, that actually works in a wide range of browsers 21:02:43 <andythenorth> oof 21:03:20 <TrueBrain> I guess we should swagger the API ... 21:04:53 *** WormnestAndroid has quit IRC 21:05:06 *** WormnestAndroid has joined #openttd 21:09:06 <TrueBrain> frosch123: guess flask has better swagger integration :D 21:09:38 <TrueBrain> flask-restplus still a thing? 21:09:52 <TrueBrain> hmm, last version 2019-08-12 ... 21:11:47 <frosch123> https://gitlab.com/pgjones/quart <- that claims to incorporate flask with asyncio 21:12:13 <TrueBrain> not sure that is useful tbh. Flask on its own is fine for this project 21:12:14 <frosch123> but is it necessary to run the api and the webapp in the same process? 21:12:31 <TrueBrain> but all other projects currently use aiohttp 21:12:36 <TrueBrain> but using something else for this is fine 21:12:45 <TrueBrain> frosch123: no, API should be done by Python, static-files by nginx 21:13:13 <TrueBrain> flask-restx is the contiunation of flask-restplus, that is nice 21:13:30 <frosch123> what "other" are you thinking of? 21:14:00 <TrueBrain> DorpsGek, content-server, master-server 21:14:05 <TrueBrain> but it is fine, really 21:14:14 <TrueBrain> we need the tool that is most efficient :) 21:14:32 <TrueBrain> this will be content-api btw 21:14:51 <TrueBrain> (content-server also has a webserver, as OpenTTD client makes HTTP calls to it to get redirects for HTTP downloads) 21:15:25 <TrueBrain> https://flask-restx.readthedocs.io/en/latest/swagger.html 21:16:16 <TrueBrain> has input validation included; guess that is nice? 21:16:33 <TrueBrain> what did you use for eints? Homebrew REST API? 21:17:09 <frosch123> eints is simple single-threaded bottle 21:17:17 <frosch123> it blocks while it talks to github 21:17:21 <TrueBrain> ah :) 21:17:52 <frosch123> it assumes there are only few translators 21:18:25 <frosch123> i would also expect ther are few bananas-uploaders and editors, while there are many downloaders 21:18:37 <TrueBrain> downloads won't go via content-api 21:18:43 <frosch123> so aiohttp for the latter is certainly needed 21:18:44 <TrueBrain> only uploads and listing 21:19:05 <frosch123> "listing" can be statically generated, right? 21:19:09 *** cawal[m] has quit IRC 21:19:23 <TrueBrain> yes, but needs regenerating every update 21:19:28 <TrueBrain> but .. you are on to something there tbh 21:19:34 <TrueBrain> as we can do that like the website 21:19:37 <TrueBrain> or possibly in the website 21:19:42 <TrueBrain> and on GitHub commit, trigger a rebuild 21:20:09 <TrueBrain> so ... possibly we can make the whole HTML+JS in the website repo? Or is that weird? 21:20:18 <TrueBrain> and have content-api only do the API 21:22:21 * andythenorth uploads Horse to bananas 21:22:37 <frosch123> when the api stores the uploads, it can also update the listing and store it in the same go 21:22:57 <frosch123> creator-interface is different 21:23:47 <TrueBrain> yeah, so we have a few parts: API for "managers" (creators?), HTML+JS for "managers", HTML for public listing (ala https://bananas.openttd.org) 21:24:08 <TrueBrain> I guess we should bundle the first two in a single docker 21:24:19 <TrueBrain> as that is just more practical in creating it 21:24:31 <TrueBrain> the latter ... so many solutions :P 21:26:12 <frosch123> i am quite sure noone wants to code a js fat-client that talks directly to the api, and only the api 21:26:34 <TrueBrain> not sure I get what you mean 21:28:03 <frosch123> i suggested to use python-bases flask to provide html forms for uploaders and editing meta data. alternatively you can have a pure json api, and people download a js client that talks to the json api, and does all the forms in js 21:28:27 <andythenorth> electron! 21:28:38 <TrueBrain> I would like to avoid the first, as that gives us a situation we have now: BaNaNaS web via django, and musa via its own validation routines 21:28:45 <TrueBrain> I rather have a single API that can be used by both web and CLI 21:29:22 <TrueBrain> it is the 2020 way of web-development after all .. and it makes me a bit sad, as that means a js-based webclient .. which I am not looking forward to 21:29:30 <TrueBrain> but it is the right thing to do, I guess ..... 21:31:33 <frosch123> if you go for pure json api, then flask is not the best option, then stick with aiohttp 21:31:53 <TrueBrain> if you do an API, you should do swagger. And aiohttp has no real swagger support in existence :P 21:31:57 <TrueBrain> hence the flask-restx 21:32:08 <TrueBrain> I rather have you guys talk me out of the js-approach 21:32:12 <TrueBrain> as I freaking hate it 21:32:16 <TrueBrain> but .. it is the 2020 thing to do .. 21:32:21 <LordAro> TrueBrain: don't do it 21:32:32 * LordAro smacks andythenorth 21:32:39 <TrueBrain> make andythenorth do it you say? :D 21:32:47 <LordAro> andythenorth: wash your mouth out with soap 21:32:54 <frosch123> how about the middle way: have a python thingie host http-forms, but make it create server-server json calls to the other api 21:32:58 <TrueBrain> it shouldn't be hard to find people willing to write a modern HTML+JS shell around an API, would it? 21:33:02 <frosch123> so the real data is only touched by the real api 21:33:03 <andythenorth> also, what is electron? 21:33:11 <andythenorth> is it the new way to have local vulns? 21:33:32 <frosch123> TrueBrain: quite sure that is the hardest part. people to js for work, i do not know anyone who does it for fun 21:33:32 <TrueBrain> frosch123: works for me, honestly. Just as long as we accept we are doing it the 2015 way in that case :D 21:33:55 <TrueBrain> although I wonder how difficult it really is, doing it in js .. as there are like 10 API calls to do 21:34:00 <TrueBrain> it is not THAT complicated 21:34:20 *** Arveen has joined #openttd 21:34:29 <TrueBrain> but I notice you too don't really look forward doing it that way :P 21:34:33 <TrueBrain> guess we are getting old :D 21:34:33 <frosch123> well, you have to do sessions though 21:34:50 <TrueBrain> andythenorth: solve this for us plzzzzzzz 21:34:51 <frosch123> but maybe you have to do that anyway 21:35:19 <andythenorth> TrueBrain: sorry NFI :( 21:35:21 <DorpsGek_III> [OpenTTD/OpenTTD] SamuXarick updated pull request #7937: Build on competitor canal https://git.io/JvUIQ 21:35:34 <andythenorth> I only work with python apps that do post, and then I only write the UI 21:35:42 <TrueBrain> the UI in what? 21:35:45 <andythenorth> apps 21:35:49 <TrueBrain> lame 21:35:54 <TrueBrain> :P 21:36:05 <andythenorth> using the most rudimentary html 21:36:13 <Samu> just closed Visual Studio, no more updated pull requests 21:36:26 <andythenorth> we don't fuck around with javascript stuff, we have to actually work 21:36:34 <andythenorth> sorry :| 21:36:35 <TrueBrain> okay, I like your suggestion in that case frosch123 , as it allows someone to come along and do this properly :P 21:37:04 *** Progman has joined #openttd 21:37:18 <frosch123> TrueBrain: https://github.com/cr0hn/aiohttp-swagger 21:37:33 <TrueBrain> frosch123: yeah, have you read how they implemented it? 21:37:38 <TrueBrain> just one big blob of doc-string 21:37:40 <TrueBrain> it is horrible :P 21:37:40 <frosch123> oh, "looking for maintainers" 21:38:05 <TrueBrain> I like about things like flask-restx, that is can also validate based on the swagger info 21:38:20 <TrueBrain> input validation is GOOOODDDD :D 21:38:48 <frosch123> ok, so flask-based json api 21:38:58 *** cawal[m] has joined #openttd 21:39:11 <TrueBrain> okay, flask-restx for the API, flask for the html-form, tusd for uploads (has to be javascript, I like the uppy client) 21:39:41 <frosch123> oh, i thought you discarded tusd 21:39:51 <TrueBrain> I really hate the implementation, but there is not much better out there 21:40:01 <TrueBrain> so I wrapped it with some scripts, and it is somewhat behaving 21:40:12 <TrueBrain> you need a javascript uploader for bigger files 21:40:19 <TrueBrain> and I really like uppy :D 21:40:26 <TrueBrain> as it allows uploading via links :) 21:40:39 <TrueBrain> (and dropbox, and google drive, and one drive, and and and) 21:41:17 <TrueBrain> but just tus-js-client is fine by me too btw 21:41:33 <Samu> I revised the entire PR, it's getting closer to "Ready for review". There's just a few things waiting... like #7947 being merged or not 21:41:50 <frosch123> i am quite sure you know a lot more about js than me :) 21:42:09 <TrueBrain> that says more about your knowledge than mine :D 21:42:25 <frosch123> my js experience is from ns4/ie4 times 21:42:30 <TrueBrain> okay okay .. 21:42:33 <TrueBrain> I can write TypeScript 21:42:50 <TrueBrain> what killed it for me, is the amount of frameworks you can / have to use these days 21:42:51 <frosch123> is that the thing with |0 for integers ? 21:43:03 <TrueBrain> TypeScript is Javascript, but typed 21:43:07 <TrueBrain> it is "sane" javascript :P 21:43:19 <TrueBrain> no clue about |0 21:44:05 <frosch123> something adds " | 0" to all integer expressions, which annotates them as integers for browsers, so they can jit it as integer arithmetic 21:44:15 <TrueBrain> lol 21:44:25 <TrueBrain> okay, a lot more important question: do we want the manager-part to be in the OpenTTD website style? :D 21:44:28 <frosch123> i forgot what the float annotation was, but it was a similar nop 21:44:33 <TrueBrain> as otherwise LordAro really should remove the last few images there :P 21:44:47 <frosch123> TrueBrain: eints is not in that style either 21:44:50 <frosch123> so, no 21:44:56 <frosch123> css is andy's task 21:45:57 <andythenorth> I'm sure we have other contributors :P 21:46:07 <frosch123> anyway, we write the python and some simple templates, and leave the css to others 21:46:11 <andythenorth> hurrah 21:46:20 *** heffer has quit IRC 21:46:30 <TrueBrain> ack; first get it to work, improve after 21:46:35 <frosch123> we have many people in the "website" team :) 21:46:48 <TrueBrain> so we are going to make the most ugliest website possible 21:46:51 <TrueBrain> that will force people to do something :D 21:47:36 <TrueBrain> so we get a content-api, content-api-cli, content-api-web-forms content-api-web-js (if anyone ever wants to :P) 21:47:55 <LordAro> TrueBrain: https://motherfuckingwebsite.com/ 21:47:56 <TrueBrain> (not perse repositories btw, just for my ordering of thought) 21:48:21 *** heffer has joined #openttd 21:48:26 <frosch123> LordAro: not enough marquee 21:48:46 <TrueBrain> okay, so we need a workflow, to implement both sides 21:48:55 <TrueBrain> we need to figure out authentication, but you mostly did that for eints already 21:49:37 <TrueBrain> I can do the groundwork this weekend, and we can split up the work after that. Sounds good? 21:49:43 <frosch123> sure 21:49:47 <TrueBrain> awesome :) 21:49:54 <TrueBrain> really shouldn't be too complicated 21:50:01 <TrueBrain> mostly agreeing on what the MVP should be :) 21:50:31 <TrueBrain> upload files -> some choices like "new content" vs "new version" -> some more uploads (readme, license, ..) -> publish 21:50:49 <frosch123> about authentication: do we store ownership as github logins (readable, but user can actually change them), or github user ids (integers, persistent) 21:51:07 <TrueBrain> they can change logins? Damn ... 21:51:11 <TrueBrain> that is sad .. 21:51:18 <TrueBrain> so the uids I guess ... 21:51:22 <frosch123> not they, you 21:51:33 <frosch123> it has a long page of things that break if you do :) 21:51:35 <TrueBrain> yeah, we refer tothe same group :) 21:51:49 <TrueBrain> (they, our users :D) 21:51:52 <TrueBrain> hmm 21:52:09 <TrueBrain> I rather have logins, as that means we can understand that as humans 21:52:10 <frosch123> TrueBrain: https://github.com/settings/admin <- don'T press the top button, but read the link above it 21:52:50 <frosch123> TrueBrain: well, we can store both 21:52:53 <TrueBrain> okay, like: REALLY HORRIBLE IF YOU DO THIS, BUT OKAY 21:53:12 <frosch123> use the integer for access, and update the login name whenever the user updates something 21:53:16 <TrueBrain> store login at the content, and a big list of mapping, or something :) 21:53:39 <TrueBrain> well, no, my idea is stupid 21:53:46 <TrueBrain> just login:uid in authors.yml is fine 21:53:46 <frosch123> for eints it did not matter, since usernames do not persist past commit messages 21:54:02 <TrueBrain> login can be out-of-date, which is totally fine 21:54:09 <frosch123> yep, so we agree 21:54:36 <frosch123> though i would go for uid:login, just for paranoia that login may contain : 21:54:49 <TrueBrain> I like that all parts that are coming up we already did :) Github authentication, commit to GitHub, API, HTML :) 21:54:53 <frosch123> and i want to split on first :, not last : 21:55:16 <TrueBrain> frosch123: well, it is YAML, so: authors:\n- login: TrueBrain\n uid: 12312312312312312312 21:55:17 <TrueBrain> :D 21:55:30 <TrueBrain> owh, and quotes ofc 21:55:42 <TrueBrain> but that part will be fine :) 21:55:59 <frosch123> ok, so two nested levels 21:56:19 <TrueBrain> in YAML it is very normal to have dicts, which the above is :) 21:56:32 <TrueBrain> well, a list of dicts, I guess 21:56:37 <TrueBrain> to be more correct :) 21:57:04 <frosch123> i had trouble spotting the "-" 21:57:26 <TrueBrain> https://github.com/OpenTTD/OpenTTD/blob/master/.github/workflows/commit-checker.yml#L12 21:58:09 <TrueBrain> or better: 21:58:10 <TrueBrain> https://gist.github.com/TrueBrain/34cd8e135b080621284b27ed8249aa9c#file-authors-yaml-L4 21:58:18 <TrueBrain> I should have done that in the first place :) 22:00:29 <frosch123> LordAro: did you read the source? top and bottom? 22:01:13 <LordAro> frosch123: i prefer this one http://bettermotherfuckingwebsite.com/ 22:01:38 *** tokai has joined #openttd 22:01:38 *** ChanServ sets mode: +v tokai 22:01:39 <frosch123> TrueBrain: "uid" -> "github"? then we can add other authenticators later 22:02:03 <TrueBrain> or "authors" -> "github" ? 22:02:12 <TrueBrain> as the login might be tight to the authentication method 22:02:44 <TrueBrain> like this? 22:03:22 <frosch123> i would have used the login as displayname, so there should only be one per person 22:03:46 <frosch123> but, too much detail, can be changed later 22:03:58 <TrueBrain> no no, I like this fiddling late at night :) 22:04:32 <TrueBrain> updated 22:04:39 <TrueBrain> yeah, that looks better :) 22:05:32 <TrueBrain> and now with comments 22:07:26 <TrueBrain> so in listing we can use display-name, when someone logins via GitHub it can change, but only for new content he uploads 22:07:33 <TrueBrain> works-for-me 22:08:26 <frosch123> oh, right, i forgot about "openttd"... we already have another authentication method 22:08:29 *** tokai|noir has quit IRC 22:08:37 <TrueBrain> yeah, which is now solved nicely too :) 22:09:02 *** Wolf01 has quit IRC 22:09:43 <TrueBrain> okay, off to bed for me. But I am a bit more optimistic now, tnx frosch123 :) We can do this!!!! :D 22:10:05 <TrueBrain> possibly we should make a post about this in the weekend, to let people know what is coming 22:10:21 <TrueBrain> I guess andythenorth is now yelling: FEB DEV POST 22:10:29 <TrueBrain> and I guess he would be right, would be a perfect place for that :) 22:10:33 <andythenorth> perfecto 22:10:36 <andythenorth> just in time for April :) 22:10:44 <andythenorth> I would write blog posts, but meh 22:10:53 <TrueBrain> anyway, night 22:10:54 <andythenorth> is it bedtime? :) 22:10:57 * andythenorth should 22:11:04 <andythenorth> night 22:11:18 *** andythenorth has left #openttd 22:12:59 *** frosch123 has quit IRC 22:15:00 *** heffer has quit IRC 22:16:32 *** tokai|noir has joined #openttd 22:16:32 *** ChanServ sets mode: +v tokai|noir 22:20:04 *** heffer has joined #openttd 22:23:24 *** tokai has quit IRC 22:27:39 *** gelignite_ has joined #openttd 22:30:06 *** nielsm has quit IRC 22:31:32 *** Generalcamo has joined #openttd 22:37:11 *** HerzogDeXtEr has quit IRC 22:49:22 *** tokai has joined #openttd 22:49:22 *** ChanServ sets mode: +v tokai 22:52:14 *** Progman has quit IRC 22:56:24 *** tokai|noir has quit IRC 22:58:24 *** Samu has quit IRC 23:08:45 *** gelignite has quit IRC 23:18:35 *** Generalcamo has quit IRC 23:21:50 *** nielsm has joined #openttd 23:45:24 *** Flygon has joined #openttd 23:45:50 * LordAro finds planetmaker on unix.stackexchange 23:50:49 *** tokai|noir has joined #openttd 23:50:49 *** ChanServ sets mode: +v tokai|noir 23:57:39 *** tokai has quit IRC 23:59:14 *** tokai|noir has quit IRC