IRC logs for #openttd on OFTC at 2024-06-25
β΄ go to previous day
02:26:20 *** Wormnest has quit IRC (Quit: Leaving)
02:47:54 *** gnu_jj_ has joined #openttd
02:51:27 *** gnu_jj has quit IRC (Ping timeout: 480 seconds)
03:02:36 *** debdog has quit IRC (Ping timeout: 480 seconds)
04:41:49 <DorpsGek> - Update: Translations from eints (by translators)
06:25:06 *** keikoz has quit IRC (Ping timeout: 480 seconds)
06:55:06 <andriydohniak> How does this look? I basically copied the cargo Industry Funding code
07:08:10 <andriydohniak> This is probably the best I can manage with current dimensions
07:12:55 <andriydohniak> wide separator:
07:35:15 <johnfranklin[d]> hmm. rain. rain. rain...
07:36:20 <johnfranklin[d]> End-less rain, fall on my heart, kokoro no kizu ni...
08:38:18 <peter1139> Proper festival weather.
08:39:40 <kuhnovic> That's summer in Europe
08:40:05 *** mindlesstux has joined #openttd
09:20:09 <peter1139> Heat = wake up early = hungry early = lunch is a long time away = sadface.
09:20:57 <pickpacket> I woke up at 6am... it's 11:20 now
09:21:05 <pickpacket> lunch here at the office is usually at 12
09:28:38 <andriydohniak> I just ate lunch, 11 am
09:29:10 <andriydohniak> I wake up ~7:40, and eat breakfest at ~8
09:35:29 <pickpacket> There's only three of us at the office today. Nice to wait for the others and eat together
10:21:50 *** mindlesstux has quit IRC (Ping timeout: 480 seconds)
10:23:35 <truebrain> Pfff, being social is totally overrated
10:26:07 *** mindlesstux has joined #openttd
10:31:59 <pickpacket> What? It's what I live for π
10:53:20 <johnfranklin[d]> swedish is stastically shy - is this true?
10:54:14 <pickpacket> not shy, no. But Swedes don't generally approach strangers or make contact when out and about
10:55:19 <pickpacket> I don't think it has to do with shyness as much as a tradition of letting people have their personal space.
10:57:47 <johnfranklin[d]> I think this may be related to modernisation and development? Here older generation are more outgoing, since they were poor in their childhood and had to share a lot of things/spaces with others (strangers)
11:02:29 <pickpacket> here it's the younger generations that are more social
11:03:17 <johnfranklin[d]> And - in that era there were no electronic devices, even TV was rare. Their childhood usually (had to) consist lots of outdoor activities, with friends
11:03:17 <johnfranklin[d]> Now three old persons sit together, they would probably start conversation. Three young persons sit together, only gazing at phones, maybe.
11:05:10 <johnfranklin[d]> (Disclaimer: I am shy and I don't attend lots of social activities, plenty of the descriptions of young generations are inference)
11:06:37 <Eddi|zuHause> well, that has been the same for at least 3000 years...
11:07:00 <Eddi|zuHause> "the youth has no manners/attention span/whatever/..."
11:10:30 <johnfranklin[d]> Not the same thing? I am young myself, and this is something usually happens on buses. If there were some conversation, the probability of old generation would be... 90%?
11:12:40 <pickpacket> People always talk to me on buses and trains. I don't know why, it's just always been that way
11:13:14 *** twpol has quit IRC (Ping timeout: 480 seconds)
11:13:31 <pickpacket> They just open up. A number of times conversations like that have ended with the other part saying "Wow... I've *never* told anyone about this before."
11:15:24 *** maverickfischer has quit IRC (Ping timeout: 480 seconds)
11:16:34 *** rightnut has quit IRC (Ping timeout: 480 seconds)
11:16:34 *** izhirahider has quit IRC (Ping timeout: 480 seconds)
11:22:23 *** rightnut has joined #openttd
11:22:25 *** izhirahider has joined #openttd
11:24:08 *** maverickfischer has joined #openttd
11:31:56 <peter1139> Also, finally lunch.
11:54:10 <andriydohniak> I NEED all the feedback I can get, pls
11:54:42 <talltyler> Assuming you mean cargo/company swatches and not buttons (as I wrote in my review), yes, those look fine to me
11:54:59 <andriydohniak> yes, that what I am asking about
11:55:08 <talltyler> I am not βeverybodyβ of course, so I cannot answer your question fully π
11:55:42 <andriydohniak> You did your part, so the current stats are
11:55:42 <andriydohniak> yay: 100%, 2 ppl (I count myself)
11:57:10 <peter1139> What does a row look like when it's hidden / selected?
11:57:44 <peter1139> The current keys show each item in a lowered state when not hidden.
11:58:17 <peter1139> Something went terribly wrong :D
11:58:31 <andriydohniak> the Mail is hidden
11:58:44 <andriydohniak> or should I reverse that
11:59:04 <andriydohniak> Alloy Steel is selected
11:59:25 <LordAro> yeah that's definitely confusing
11:59:46 <andriydohniak> Ok, I just thought this looks better, but I guess you are right
12:00:40 <andriydohniak> I still haven't figured out how to do hover, but I haven't really tried yet
12:01:34 <peter1139> It's funny, we have an OnHover 'event', but nothing implements it any more :)
12:01:34 <andriydohniak> Ok, I found the OnHover event handler
12:01:58 <peter1139> There's also OnMouseOver, which might be what you actually want.
12:02:07 <andythenorth> I had lunch without consulting
12:02:22 <andriydohniak> I don't want to do it either, but I guess it is more intuitive then double clicking
12:02:36 <peter1139> That's the only way, otherwise it's either too early, too late, or not the right sort of lunch.
12:03:18 <andythenorth> it was beef sandwiches, no shame
12:03:29 <andythenorth> I don't eat beef often for reasons
12:03:54 <peter1139> OnHover requires the cursor to be not moving for a short period. It's basically how custom tooltips were done until we added OnTooltip instead...
12:05:19 <andriydohniak> Yea, the hover event is for tooltips, I think it still gets called though
12:07:07 <_glx_> andriydohniak: For me hidden should be greyed out, and selected should apply to the full line
12:08:45 <andriydohniak> I also like hidden being greyed out, but it also gives "disabled" vibes
12:09:31 <andriydohniak> I like selected as just being the text thing, because its easy to handle selection on hidden
12:09:40 <andriydohniak> peter1138: Yes, but there is no selected
12:09:45 <andriydohniak> I need 1 more state
12:09:46 <peter1139> Lowered for displayed is how it currently works. I think it's best not to change that behaviour.
12:09:58 <andriydohniak> Ok, I will do that then
12:10:38 <peter1139> Try using all-black text, and white text if it's selected.
12:10:59 <peter1139> The cargo one is already always black, so no change there.
12:13:27 <andriydohniak> but I do think that the lowered ones look worse
12:13:48 <peter1138> Hmm, you're drawing the depressed state in the place. It needs to cover the original lines, not sit inside them.
12:15:41 <andriydohniak> This does look better! thanks!
12:16:02 *** pan_kura has joined #openttd
12:16:24 <andriydohniak> It actually starts to look good!
12:16:51 <pan_kura> Does anyone else have truble connecting to the jgrpp server?
13:03:36 <Eddi|zuHause> probably not the right place to ask that question...
13:24:42 <andriydohniak> I want to add a function pointer that may not be used, do I do it in C-style where null means unused, or C++ style with std::option<>?
13:30:17 <andriydohniak> More context: I want to add a OnSelectionChanged and OnVisibleChanged events to my selector "widget", and to access them, you just pass an event handler function pointer in there, and when the widget changes they get called if set. For example: When the selection changes I want to be able to Invalidate the graph window data, but I don't want to put that logic inside the selector widget, because It
13:30:17 <andriydohniak> is ment to be universal
13:31:30 <andriydohniak> Or mb I can just make all the functions that can change the selection when called have a return type that tells weather the selection / visibility were changed
13:32:11 <andriydohniak> Becasue its probably fine to redraw the graphs on every click, but probably not as good to do that on every OnMouseOver event
13:32:15 <andriydohniak> Hovers are hard
13:33:14 <_glx_> I think all graph window use the same class
13:33:19 <andriydohniak> It's not that I don't know which window to invalidate, its that I don't know wich window to invalidate inside the selector widget
13:34:17 <_glx_> just invalidate all these classes
13:34:31 <andriydohniak> _glx_: I think I didn't explain well enough what my issue is
13:36:59 <_glx_> it's simpler to invalidate all possibly affected windows
13:37:14 <_glx_> even if they are not open
13:43:38 <andriydohniak> I am not talking about what to invalidate, I am talking about when
13:43:39 <peter1139> In your OnMouseOver event, only invalidate it something changes.
13:44:32 <peter1139> That means you need to know if the last "hovered" item is the same as the current "hovered" item.
13:44:59 <andriydohniak> But here is the thing, I have a window that has a OnMouseOver (the legend window), but it does nothing inside, it just passes the event to the SelectorWidget that has the same method, and so only the widget knows if something changed or not, not the parrent window
13:45:03 <peter1139> You can use std::optional<> here, where nullopt means nothing was (or is) hovered.
13:45:19 <andriydohniak> and I don't want to put graph specific code inside the window
13:46:18 <andriydohniak> peter1139: Actually a good idea! making a pulblic bool, called `changed` or something like that, and setting it to true if something changed and resetting it in the parrent window when you do something with it
13:46:43 <andriydohniak> so No event handler crap, just apdate indicator
13:46:46 <peter1139> No, that seems like the wrong approach.
13:46:49 <_glx_> you can pass data to invalidate
13:47:14 <_glx_> and it doesn't always mean redraw
13:47:24 <andriydohniak> _glx_: But data is specific to a window, and the selector widget is supposed to be window agnostic
13:47:45 <peter1139> Your OnMouseOver event handler should know if something changed, and then send invalidate if it has.
13:47:57 <andriydohniak> peter1139: Send where?
13:48:14 <andriydohniak> It only knows it's parrent window
13:49:14 <peter1139> Well, call the invalidate window data function.
13:49:32 <andriydohniak> On its parrent or the graph window?
13:50:01 <andriydohniak> I don't want to call the graph window's invalidate function inside the selector widget, because it's universal
13:50:22 <_glx_> maybe all graph window should have the same class and a number per type
13:50:32 <andriydohniak> That will not change anything
13:51:27 <peter1139> InvalidateWindowData(parent->window_class, parent->window_number)
13:51:43 <andriydohniak> Yea, but the parrent window is not the graphs window
13:52:03 <andriydohniak> It's its own window that needs to also invalidate the graph window
13:52:10 <andriydohniak> so that is the issue
13:52:21 <peter1139> Okay, so where is your component keeping state?
13:52:40 <andriydohniak> In a legend window
13:52:46 <andriydohniak> but currently in a global
13:52:49 <andriydohniak> because of reasons
13:52:50 <peter1139> What happens if the legend window is closed?
13:53:07 <andriydohniak> The legend window has a pointer to it, it's actually a global
13:53:09 <peter1139> Does the graph close too, or does it somehow have no state any more?
13:54:10 <andriydohniak> It was a global when I came there, so I left it a global, as inter-window communication is not easy
13:54:12 <_glx_> is legend per graph or is it still common to all open graph ?
13:54:36 <andriydohniak> Common to all company graphs, and the cargo has it's own legend window
13:54:48 <andriydohniak> (same class, different window number)
13:55:00 <peter1139> static state is fine, it should be remembered anyway.
13:55:36 <_glx_> so for cargo you can easily link legend window and graph window
13:55:39 <peter1139> So in your component you need to update that state, and then invalidate the appropriate graphs.
13:56:20 <andriydohniak> _glx_: I don't want to, I started there, and I spend a lot of time separating them. It is much more usefull as a separate window as it takes up much less space
13:56:23 <peter1139> In the class that determines how to draw the legend, you can also have a function that invalidates the correct things.
13:56:26 <andriydohniak> and is easily resizable
13:57:32 <andriydohniak> peter1139: Well no, because it should be agnostic to the window that has the selector widget inside it, imagine I later add this widget to list towns for example, why would it invalidate graph windows?
13:58:02 <peter1139> That's why you have a function that invalidates the correct things.
13:58:32 <andriydohniak> Where and how is it changed when the selector widget is in different windows?
13:58:48 <andriydohniak> That is why I asked about function pointers
13:58:56 <peter1139> Same way as you select what drawing method is used.
13:59:15 <andriydohniak> Yea, with function pointers
13:59:29 <andriydohniak> but do I just make it nullable or an option?
13:59:35 <peter1139> But function pointers are very C-style. A C++ virtual class is better. Like with the pickers.
13:59:54 <peter1139> No make it always present.
14:00:02 <peter1139> There's always going to be something to invalidate.
14:00:05 <andriydohniak> I don't like virtual classes, you have to override a tonn of stuff, and you can't share logic between configurations
14:00:47 <andriydohniak> Then you have to make your functions be 3 lines long to be composable, and your stack trace gets tall AF
14:00:56 <peter1139> That seems entirely opposite to be honest.
14:01:33 <andriydohniak> I imagine ls command. Imagine having a class for every combination of ls flags
14:02:14 <andriydohniak> This is not very composable, because it's not a parrent - child relationship, they need to work together
14:03:18 <andriydohniak> That's why I like having a "profile" struct with all the flags and function pointers to make it customizable, then the logic gets a little more complex, but you can make different combinations of functionality work together without copy pasting a bunch of code every time
14:03:33 <peter1139> Sounds like your design is wonky if you think you need to compose things out of function pointers.
14:03:48 <peter1139> Function pointers are a relic from C, imho.
14:04:45 <andriydohniak> Function pointers are just for things that actually needs it, but flags for everything else. e.g imagine you don't need to hide / show anything, just a selector, you can easily do that with flags
14:05:06 <andriydohniak> peter1139: I get what you are saying, but it's much harder to combine virtual classes with flags
14:05:27 <andriydohniak> You might be right
14:05:44 <peter1139> I don't see why you need to combine anything, nor do I know what these "flags" are.
14:06:11 <andriydohniak> Ok, another example, background color of the widget
14:06:25 <andriydohniak> Or weather to disable hide/show functionality
14:06:32 <andriydohniak> or disable selection functionality
14:07:09 <andriydohniak> but I don't want to override the whole function, if an if statement can work fine
14:07:18 <peter1139> I do see why that functionality needs to be optinal.
14:07:45 <andriydohniak> because it's not always neccesary, not all things care about selection
14:09:09 <andriydohniak> for example this window would not need enable / disable functionality
14:09:18 <andriydohniak> It has only selection
14:14:02 <peter1139> Okay, so you have a base class that defines the virtual methods that need to be provided. Then you have a company key implementation of that which only does the drawing item. Then you have a performance-rating implementation class that inherits from that has methods that invalidates and/or sets state in the right places.
14:15:06 <_glx_> template parameters for enabling/disabling features is an option
14:15:13 <peter1139> You can't then mix up a cargo legend function pointer with a company legend function pointer, because it's defined as inheritance instead of a list of function pointers.
14:15:53 <peter1139> And yes, templates parameters could be used too. Templates doesn't mean overriding whole functions.
14:19:29 <andriydohniak> Hmm, but can you constraint templates to be a specific data type?
14:21:22 <peter1139> template <bool Tyes>
14:22:42 <andriydohniak> I am still not very comfortable with templates or get why would I choose a template over a parameter struct, but I see your point
14:36:55 <_glx_> hmm just quick looking at the PR, I see you use WindowDesc flag for some stuff
14:37:39 <andriydohniak> Yea, because the legend window is a single class, it just uses different backing selector widgets depending on how it is created
14:38:08 <_glx_> but using 1 might have unexpected side effects I think
14:38:27 <andriydohniak> they have different window numbers
14:40:17 <andriydohniak> _glx_: Oh, I see. I will use window numbers only then
14:43:04 <Eddi|zuHause> andriydohniak: doesn't change the number of words i actually understand in a song...
14:44:10 <andriydohniak> You will get there eventually, when learning a new language songs are usually the most difficult media to understand
14:44:34 <Eddi|zuHause> i've been learning english for 30 years now...
14:44:41 <andriydohniak> I would recommend watching a bunch of movies / tv shows / anime in english, and it will get you a long way there
14:44:49 <Eddi|zuHause> also, this applies to songs in any language, really, including my own
14:45:03 <andriydohniak> Ok, then i have no idea :)
14:45:26 <andriydohniak> What if you know the words for a song, do you automatically understand them then?
14:47:01 <andriydohniak> also, pick a song in a language you know well, and that you know has very clear wording, (even if you don't understand it) and try slowing it down bit by bit, and see at what point do you start making out words, and mb slowly increase the speed over time?
14:47:19 <andriydohniak> But those are just my ideas, no idea if it will work or no
14:47:48 <andriydohniak> You can set a custom playback speed on yt btw
14:49:02 <andriydohniak> But higher sample rate audio will work best, yt compresses audio, so if you slow it down there is not much clarity
14:49:44 <Eddi|zuHause> btw, you can easily generate made up words that sound like some language, by taking the letter frequencies
14:50:09 <Eddi|zuHause> these are quite unique for any language, like a fingerprint
14:50:48 <andriydohniak> Hmm, but I would suspect that just the frequensies would not be enough, it should be combination frequencies or something like that
14:52:35 <andriydohniak> LordAro: I think they took a normal conversation and changed every word a bit
14:52:45 <andriydohniak> that is cheating, I think I can make out the whole topics
14:53:40 <andriydohniak> And whole words like `what` `for` `that` are just there
14:54:19 <LordAro> i believe that's the point
14:54:48 <LordAro> almost, but not quite, English
14:55:22 <andriydohniak> About word generation: Even though `a` and `e` are very common in english, getting a word like `aeea` would not sound like an english word, so you need at least frequencies based on the previous letter or couple of letters
14:58:50 <andriydohniak> LordAro: Yea, this video has a different point, it goes as close to being english without making total sense as possible, and the song I linked just uses words that are not close to any existant english words, and just copies the manners of singing/speaking.
14:59:22 <andriydohniak> For example at 1:45 the dude just goes "Yea, sure!" with perfect clarity
15:07:46 <andriydohniak> peter1139: That one is also really cool, but again she picked a type of music that everybody just kind of tunes out the words of automatically
15:11:45 *** Wormnest has joined #openttd
15:43:46 <Eddi|zuHause> imagine "upgoer five", but instead of replacing uncommon words with common ones, you replace them with gibberish, and leave the common ones in
16:23:37 <andriydohniak> Eddi|zuHause: That would be funny !
16:31:27 <peter1139> Heh, it's okay to say "i would like" instead of "players would like" ;-)
16:36:00 <andriydohniak> Individualism ftw!
16:43:06 *** gelignite has joined #openttd
16:59:45 *** SigHunter has quit IRC (Remote host closed the connection)
17:00:48 *** SigHunter has joined #openttd
17:02:11 *** HerzogDeXtEr has joined #openttd
17:08:52 <andriydohniak> talltyler: I just got recommended a video from you! I wasn't even watching much openTTD :)
17:34:43 *** pan_kura has quit IRC (Quit: Page closed)
17:36:14 *** Wormnest has quit IRC (Ping timeout: 480 seconds)
17:51:34 <Eddi|zuHause> andriydohniak: google knows everything about you.
17:52:01 <andriydohniak> It probably knows more about me then I do
18:10:17 *** Wormnest has joined #openttd
18:18:41 <talltyler> andriydohniak: Thatβs funny, I did that in lockdown in 2020 but only made it public yesterday (it was previously uploaded elsewhere)
19:03:04 <LordAro> GH doesn't think cff48c0 is a commit
19:08:04 <peter1138> Probably clashes with something else.
19:08:43 <talltyler> Good catches on the old style casts, I totally missed them π
19:08:44 <peter1138> Such hot, many sweat
19:09:04 <_glx_> it was almost winter last week
19:09:18 <LordAro> can confirm, much hot
19:11:38 <Rubidium> is it really that hot in the UK? I don't have that feeling of hotness
19:12:21 <dwfreed> LordAro: my guess would be it doesn't run commit ID detection on titles
19:12:44 <LordAro> and the usual amount of "sweating out of my scalp and palms when sitting still" sort of humidity
19:12:49 <LordAro> dwfreed: it does normally
19:13:02 <LordAro> oh, perhaps not on titles, but it does on commit messages
19:14:31 <LordAro> i know it doesn't work like that, but that's a surprisingly recent commit to be conflicted
19:15:09 <Rubidium> it's been only 20C here, but then... being 10 km from the northern most point of England might skew the results ;)
19:15:43 <michi_cc> LordAro: Someone please tell SHA to move conflicts to the back of the hash π
19:18:04 <LordAro> goddess_ishtar: it's currently 80% humidity tho
19:18:39 <dwfreed> nah, 25 C with 80 % humidity is weak sauce
19:19:02 <goddess_ishtar> at least your winters are also mild
19:19:12 <Rubidium> it's not even conflicting with something in the actual repository it seems :(
19:19:37 <dwfreed> Rubidium: fun fact: github stores all forks in the same git repo
19:21:11 <dwfreed> LordAro: here it is 36.7 C, with a 45 % relative humidity, giving a heat index of 42.6 C
19:21:24 <LordAro> iirc someone (ab)used this fact to store the youtube-dl source in the github dmca requests repo when that was a thing
19:21:24 <dwfreed> in freedom units: 98 / 108.6
19:21:48 <Rubidium> funner fact... I now use a 9 digit one and GH visualises it as the conflicted 7 digit one... :(
19:22:53 <_glx_> phone says 28Β°C outside
19:24:00 <andriydohniak> same for me, I am +- lucky today
19:24:49 <LordAro> the usual retort at this point is that houses in the UK generally don't have aircon, and they're built to trap heat for the winter rather than the reverse
19:25:28 <_glx_> yeah heat is well kept by the roof here π
19:25:40 <_glx_> and I'm in the room under it
19:25:41 <andriydohniak> I have an air conditioner, but it is broken :(
19:26:07 <LordAro> _glx_: mm, 3rd storey here too
19:26:18 *** j0anjosep has joined #openttd
19:26:18 <j0anjosep> Why do road waypoints use bit 15 of m8 instead of using bit 5 of m7? Maybe it is better to keep the bits 12-15 of m8 free for new features and use the same bit for snow awareness as the other road tiles.
19:26:48 <j0anjosep> But maybe I amb missing something...
19:29:00 *** Wormnest has quit IRC (Ping timeout: 480 seconds)
19:35:32 *** nielsm has quit IRC (Ping timeout: 480 seconds)
19:42:57 *** Wormnest has joined #openttd
20:05:56 *** m1cr0man has quit IRC (Quit: G'luck)
20:06:14 *** m1cr0man has joined #openttd
20:06:40 <LordAro> those users must get notifications a lot
20:24:15 <andriydohniak> I have a subclass I want to share from the same header file as the base class, but put the definition in a cpp file, how would I do that
20:28:08 <peter1139> Yay for stun-locked Spider Masterminds.
20:29:42 <andriydohniak> Are you playing crazy doom levels again?
20:32:49 <andriydohniak> Hey, when a class is inherided from, do it's public members become private in the child?
20:33:45 <peter1139> Depends how you inherit it.
20:34:54 <andriydohniak> I changed all classes to structs and now it works, idk
20:35:30 <andriydohniak> like this `class CompanyGraphSelectorWidget: CompanySelectorWidget`
20:35:35 <peter1139> Yes, with `:`. Depends how you inherit it.
20:36:20 <andriydohniak> Do i have to add some `public` keyword or something?
20:36:26 <peter1139> `struct` defaults to `public`. `class` does not.
20:36:58 <andriydohniak> so like this? `class CompanySelectorWidget: public SelectorWidget {`
20:37:41 <peter1139> No, space before the `:`.
20:38:00 <peter1139> class BitmapTileArea : public TileArea {
20:38:09 <peter1139> Can't be that hard to find existing examples.
20:38:34 <andriydohniak> That is true, I am very lazy. Sorry for the extra bothering
20:39:10 *** HerzogDeXtEr1 has joined #openttd
20:45:31 *** HerzogDeXtEr has quit IRC (Ping timeout: 480 seconds)
20:56:53 *** HerzogDeXtEr1 has quit IRC (Read error: Connection reset by peer)
21:26:49 <goddess_ishtar> man I scroll to break out of follow mode all the time
21:28:08 <peter1139> Put comments on the PR.
21:29:01 <goddess_ishtar> I don't actually care enough to say anything lmao
21:29:26 <peter1139> Anyway, scrolling does break out. Zooming doesn't.
21:33:50 <peter1139> Zoomable mini vehicle viewports are weird and inconsistent too.
21:33:52 <talltyler> Oops, testing incomplete π
21:34:32 <talltyler> To me, scrolling = using the scrollwheel on my mouse (obviously OpenTTD disagrees)
21:35:26 <peter1139> Scrolling happens in non-viewport windows of course.
21:38:36 *** keikoz has quit IRC (Ping timeout: 480 seconds)
21:40:34 <peter1139> And yes, I do also habitually break out of follow mode by zooming.
21:40:53 <talltyler> I do too, but I am willing to relearn that habit
21:41:23 <peter1139> Right, I have other ways to heat things with my space-bar.
21:42:56 <peter1139> Speaking of which, apparently I clicked on a background window at some point, and Disney+ had carefully played an entire season of something, and marked it as watched, in the backgound.
21:43:22 <peter1139> So that was wasting my CPU cycles all day. And I have no idea where I actually was in the series.
21:43:25 *** ChanServ sets mode: +v tokai
21:49:14 <talltyler> I should play OpenTTD sometime
21:49:49 <talltyler> And then get frustrated by something and write code instead
21:50:12 *** tokai|noir has quit IRC (Ping timeout: 480 seconds)
21:50:14 <talltyler> I am still planning to take a stab at yellow signals π
21:59:20 *** Wolf01 has quit IRC (Quit: Once again the world is quick to bury me.)
22:53:53 *** gelignite has quit IRC (Quit: Stay safe!)
23:54:30 *** Wormnest has quit IRC (Ping timeout: 480 seconds)
continue to next day β΅