01:15 < bridge> it seems i can't access variable min/max/default values because CCommand (the implementation through which these variables are used within the console) is private 01:16 < bridge> sad 01:16 < bridge> i just have to make an assumption i guess 01:35 < bridge> idk wtf i did but when I was testing every font icon, I went into the editor, and then clicked on Load and then I got this: 01:35 < bridge> ``` 01:35 < bridge> Debug Assertion Failed! 01:35 < bridge> 01:35 < bridge> Program: ...os\DDNet Builds\fonticon_enum\out\build\x64-Release\DDNet.exe 01:35 < bridge> File: minkernel\crts\ucrt\src\appcrt\time\strftime.cpp 01:35 < bridge> Line: 135 01:35 < bridge> 01:35 < bridge> Expression: timeptr != nullptr``` 01:37 < bridge> looks totally unrelated 01:37 < bridge> but idk why it would do that when u change font stuff 01:37 < bridge> I dunno 01:37 < bridge> I tried reverting my change, and that wasn't the issue 01:47 < bridge> ``` ../src/engine/textrender.h:53:21: error: ‘FontIcons::FONT_ICON_HEART’ defined but not used [-Werror=unused-variable] 01:47 < bridge> 53 | static const char *FONT_ICON_HEART = "\xEF\x80\x84"; 01:47 < bridge> | ^~~~~~~~~~~~~~~ 01:47 < bridge> ../src/engine/textrender.h:52:21: error: ‘FontIcons::FONT_ICON_MAGNIFYING_GLASS’ defined but not used [-Werror=unused-variable] 01:47 < bridge> 52 | static const char *FONT_ICON_MAGNIFYING_GLASS = "\xEF\x80\x82"; 01:47 < bridge> | ^~~~~~~~~~~~~~~~~~~~~~~~~~ 01:47 < bridge> ../src/engine/textrender.h:51:21: error: ‘FontIcons::FONT_ICON_LOCK’ defined but not used [-Werror=unused-variable] 01:47 < bridge> 51 | static const char *FONT_ICON_LOCK = "\xEF\x80\xA3"; 01:47 < bridge> | ^~~~~~~~~~~~~~``` 01:47 < bridge> (they are used) 01:48 < bridge> why is that an error xd 01:49 < bridge> That's the -Werror flag isn't it? 01:49 < bridge> It just making the unused var warning into an error 01:49 < bridge> That's the -Werror flag isn't it? 01:49 < bridge> It's just making the unused var warning into an error 01:49 < bridge> And if they are used... may an issue in the linking? 01:49 < bridge> And if they are used... maybe an issue in the linking? 01:58 < bridge> wait wtf is the difference between a `char* TEXT` and a `char *TEXT` 02:00 < bridge> it's the same 02:00 < bridge> As far as I'm aware there's none 02:00 < bridge> First one seems uglier to me 02:00 < bridge> there is no difference 02:00 < bridge> it's just preference 02:02 < bridge> stroustrup thinks the former makes more sence in cpp because TEXT is a pointer to a char 02:02 < bridge> char *text in more used, but basically the same 02:02 < bridge> char *text is more used, but basically the same 02:03 < bridge> char *text is more used, but thats the same 02:07 < bridge> stroustrup thinks the former makes more sense in cpp because TEXT is a pointer to a char 02:56 < bridge> potentially silly question but pred is in ms right 👉 👈 03:27 < bridge> how to warn at runtime 06:57 < bridge> kinda almost there 06:57 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1092674263837855765/image.png 08:02 < bridge> can you use `CScrollRegion` in a horizontal orientation?? seems like it but not finding a flag or member to do so & a red flag i see is `m_ScrollbarWidth` in `CScrollRegionParams` 08:02 < bridge> can you use `CScrollRegion` in a horizontal orientation?? i would hope so but i'm not finding a flag or member to do so & a red flag i see is `m_ScrollbarWidth` in `CScrollRegionParams` 08:02 < bridge> can you use `CScrollRegion` in a horizontal orientation?? i would hope so but i'm not finding a flag or member to do so & a red flag i see is that there's only `m_ScrollbarWidth` in `CScrollRegionParams`, no height 08:14 < bridge> You probably cant since I don't remember any horizontal scroll regions in the code and we usually only implement whats used 08:15 < bridge> Dang 08:16 < bridge> That puts a wrench in things 08:41 < bridge> You'll have to take a detour and implement ScrollRegionH 08:43 < bridge> i went through & added conditionals to all x/y/w/h accesses & based it off a new flag from CScrollRegionParams 08:43 < bridge> should suffice 08:43 < bridge> if not i'll just rethink the UI 08:43 < bridge> 2 components doin the same thing is dumb 08:44 < bridge> I would probably have gone for some compile time variation just to avoid the branching 08:46 < bridge> caching can minimize the branching to init time 08:46 < bridge> but that'll only happen after a refactor 08:47 < bridge> which will only happen if this works 09:48 < bridge> got it working. i had some stupid and entirely foreseeable OOO issues 09:49 < bridge> i had 2 instances along the lines of this 09:49 < bridge> `m_ContentH <= m_ClipRect.h` 09:49 < bridge> that i changed to this 09:49 < bridge> `m_ContentSize <= m_Horizontal ? m_ClipRect.w : m_ClipRect.h` 09:49 < bridge> that evaluated as this 09:49 < bridge> `(m_ContentSize <= m_Horizontal) ? m_ClipRect.w : m_ClipRect.h` 09:49 < bridge> when it should have been like this 09:49 < bridge> `m_ContentSize <= (m_Horizontal ? m_ClipRect.w : m_ClipRect.h)` 09:51 < bridge> but i was blazing through on the first pass so i don't really blame myself 09:51 < bridge> this particular combination of operators is not something that gets me often 09:54 < bridge> but yeah when i refactor i'll probably just do like this 09:54 < bridge> ```cpp 09:54 < bridge> float *m_ClipRectSize = m_Horizontal ? &m_ClipRect.w : &m_ClipRect.h, 09:54 < bridge> *m_ClipRectPos = m_Horizontal ? &m_ClipRect.x : &m_ClipRect.y; 09:54 < bridge> 09:54 < bridge> ... 09:54 < bridge> // whatever 09:54 < bridge> m_ContentSize <= *m_ClipRectSize 09:54 < bridge> // instead of 09:54 < bridge> // m_ContentH <= m_ClipRect.h 09:54 < bridge> ``` 09:55 < bridge> so it's just as fast being a pointer deref instead of member access 09:55 < bridge> or if it isn't, it's not as expensive as checking each time 09:56 < bridge> doesn't make too much sense to optimize this kind of code, the compiler will rewrite it for you anyway if it isn't too complex 09:56 < bridge> there are dozens of these little `m_Horizontal ?` checks 09:57 < bridge> and they are not necessarily slow but it's better to optimize anyway if it ends up making the resulting code cleaner. which it will if done this way 09:57 < bridge> sooner or later it'll all be yanked anyway and replaced with a 2 axis scroll area 09:57 < bridge> code clarity is always a good argument though 🙂 09:58 < bridge> sooner or later it'll all be yanked anyway and replaced with a 2 axis scroll area, so i won't lose sleep over it 09:58 < bridge> yea i mean doing it like that from the start would have saved me 20 mins 09:58 < bridge> the rare objectively better approach 10:00 < bridge> still a bit weird to store a pointer to float, I would have just copied the float 10:00 < bridge> float is 4 bytes and a pointer is 4 or 8 bytes, so your pointer indirection is actually an additional cost 10:00 < bridge> it's across multiple functions whose timelines aren't entirely clear 10:00 < bridge> so they are prone to changing under my feet 10:00 < bridge> pointer is best 10:00 < bridge> I highly doubt the compiler is smart enough to know this is ui code and getting rid of all these branches by splitting it in two is the best. But it's fine, we can worry about performance later 10:01 < bridge> well yeah and this isn't ending up in ddnet upstream 10:01 < bridge> and if it is, it's in a very long time 10:01 < bridge> my fork of a fork of a fork of ddnet 10:01 < bridge> xd 10:01 < bridge> If it's not for upstream then you have even less reason to care 😄 10:02 < bridge> fork maintainer would probably like it if i took it seriously 10:02 < bridge> so i do 10:02 < bridge> and i'd be happy to patch for ddnet but when asked in here nobody was interested 10:02 < bridge> and i'd be happy to patch for ddnet but when i asked in here nobody was interested 10:02 < bridge> so whatever 10:36 < bridge> Ui performance doesn't matter anyway 10:37 < bridge> Not like u have to react quickly. Responsiveness should be given tho ofc 11:07 < bridge> what do u answer if ur offered senior level rust positions 11:07 < bridge> but u dont think ur senior 11:07 < bridge> im just 22 soon 23 lol 11:17 < bridge> Just say yes 11:17 < bridge> What do u have to loose 11:21 < bridge> if someone knows, can i make rifle-sg shots and doors to full transparent? 11:21 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1092740741039673406/image.png 11:22 < bridge> U can remove the textures 11:22 < bridge> where? 11:22 < bridge> i couldn't find :( 11:23 < bridge> SG is in game.png i think. Laser is particles.png 11:26 < bridge> all u called i've already made empty 11:26 < bridge> :pepePHONE: 11:27 < bridge> Mh then laser maybe not fully transparent xd 11:27 < bridge> :Ncry: 11:28 < bridge> Blame whoever thought that color values do not contain an alpha channel is a good idea xd 11:29 < bridge> yeah, weird 11:32 < bridge> LOL 11:33 < bridge> deleted assets in roaming if smth gonna change, open the game it automatically create a folder and my previous Deleted xDDD 11:33 < bridge> deleted assets in roaming to check if smth gonna change, open the game it automatically create a folder and my previous Deleted xDDD 11:33 < bridge> Yes but empty 11:34 < bridge> It's just so the buttons in-game work 11:35 < bridge> yeah but i mean it is just deleted all stuff i had before even from recycle bin 11:35 < bridge> xDDD 11:37 < bridge> i got offered a senior cpp position last week and turned it down for the same reason 11:37 < bridge> i just said something like "As much as I would love to humor it, I'm not there yet" 11:38 < bridge> if you're looking for work then you have time and effort to lose 11:39 < bridge> Mh, depends on what u think a senior dev has to do i guess 11:41 < bridge> yea 12:08 < bridge> igot a job already tho 12:09 < bridge> so its less that im looking more that they come to me 12:09 < bridge> :PES2_BasedGe: 12:21 < bridge> Ah thought same job xd 14:33 < bridge> Boss thinks ur senior, ur senior. That's how capitalism works 14:34 < bridge> its not my boss tho its another company 14:34 < bridge> im definitly not considered a junior 14:34 < bridge> i seen some juniors in the company 14:34 < bridge> some didnt even know what a trait is 14:48 < bridge> :HUH: 14:48 < bridge> And here I think I'm not qualified to be an intern even 15:19 < bridge> @Learath2 there are juniors and then "juniors" 15:19 < bridge> and then me 15:19 < bridge> someone that knows more than some seniors 15:20 < bridge> but well seniors are seniors cuz they are better at knowing how much x will take or how hard or idk 15:20 < bridge> im probably a med or idk 15:20 < bridge> I'd say a senior is someone who doesn't need to ask every 5 minutes 15:20 < bridge> a normal dev 15:21 < bridge> well idk if thats a metric 15:21 < bridge> i barely ask 15:21 < bridge> if i ask is because i dont know smth thats specific of the software 15:21 < bridge> Then u a senior.. at least if u make progress with whatever u do 15:22 < bridge> U can be a rust senior without being a senior in the field u are working on 15:22 < bridge> i guess thats it 15:23 < bridge> well i would say i lack the skill to manage people like others, altho i have no problem saying do x and i do y to someone 15:23 < bridge> actually i do that 15:23 < bridge> its more a exp based thing 15:23 < bridge> Well that's not directly the job of a senior 15:23 < bridge> true 15:23 < bridge> That's a manager 15:23 < bridge> project manager 15:23 < bridge> but it feels weird to call urself a senior 15:24 < bridge> Why 15:24 < bridge> im a rust developer thats it 15:24 < bridge> dont u always feel like ur less 15:24 < bridge> or not deserving 15:24 < bridge> i guess i have too high standards 15:24 < bridge> a senior for me is someone like deen 15:24 < bridge> learath would be my C senior 15:24 < bridge> if i have a c question i ask him 15:25 < bridge> kek 15:25 < bridge> I feel like the best I can do is stuff i like, because I'm motivated for them. Skill is not an excuse then. So I feel less if I don't make progress in this field 15:25 < bridge> yeah thats obs 15:25 < bridge> obv 15:25 < bridge> if u do smth u like u do it the best 15:25 < bridge> im sure my php code would be bad 15:26 < bridge> cuz i wouldnt be motivated for shit 15:26 < bridge> u r qualified dont joke urself 15:27 < bridge> the job market is not prepared for nerds like us 15:27 < bridge> Anyway. To me a senior is not equal to an expert. 15:27 < bridge> Learath probably knows more about c then most c senior 15:27 < bridge> they require us to go through the stupid ladder 15:27 < bridge> i guess thats a better view 15:27 < bridge> for me senior always meant expert 15:27 < bridge> but its prob not true xd 15:32 < bridge> @Jupeyy_Keks a good way to boost ur ego is to go to linkedin and see boomers posting screenshots of js code snippets saying "look this neat js feature totally you didnt know!" 15:32 < bridge> :BASEDDEPT: 15:34 < bridge> @Ryozuki a senior is someone who can write code that chatgpt can't write 😎 15:36 < bridge> Most ppl haven't created something revolutionary anyway. In fact as sad as it is. Most coders write lot of code and not so much high quality code. That's not bad, because that means progress for society. But the really hard stuff is probably often connected to math or physics 15:39 < bridge> @Ryozuki would u say u have to think a lot and hard about what u code? 15:40 < bridge> Or is it mixed? 15:40 < bridge> 15:40 < bridge> When I look at what I wrote during the years. The hardest stuff always was either related to a good multi threaded design, or math related 15:40 < bridge> lately yes, because im doing something i didnt before 15:40 < bridge> writing llvm 15:40 < bridge> its rly fun tho 15:41 < bridge> well it makes sense 15:41 < bridge> threading is one of the hardest if not hardest things in computing 15:41 < bridge> and saying otherwise is a lie 15:41 < bridge> hardware is racy 15:41 < bridge> Yep especially if it's a design that doesn't target a single algorithm 15:44 < bridge> The question will be if u will be much faster once you learned out. Or if what u learn in itself requires you to rethink everything.. so basically never ending learning.. that's usually where u have to be innovative and that costs time to think and trial and error ^^ 15:45 < bridge> i think learning is always good 15:45 < bridge> Otherwise 15:45 < bridge> and if the learning leads u to rethink 15:45 < bridge> its good 15:45 < bridge> Liar 15:45 < bridge> kek 15:46 < bridge> i mean threading involves all the complexity of hardware, but multiplied by X 15:46 < bridge> because u do X things in paralel 15:46 < bridge> It's actually extremely annoying to reason about any order of execution in modern architectures. So I do kinda agree that it's very hard 15:46 < bridge> @Learath2 whats another thing u thought? 15:46 < bridge> thats as hard or more 15:47 < bridge> tldr: why otherwise 15:47 < bridge> Use no globals anywhere xd 15:47 < bridge> use rust xd 15:47 < bridge> 👍 15:47 < bridge> I just said it as a meme 😄 15:47 < bridge> ah lmao 15:47 < bridge> xd 15:47 < bridge> Ryozuki 10 iq 15:47 < bridge> If I had to find anything as annoying it'd probably be proper benchmarking 15:47 < bridge> oh true 15:48 < bridge> It's actually deceptively hard to set up good benchmarks 15:48 < bridge> is counting cycles a valid deterministic way of benchmarking? 15:48 < bridge> i always wanted to have a realiable benchmark that can run in CI 15:48 < bridge> What is my algorithm has many cycles but good effective speed 15:48 < bridge> If 15:48 < bridge> yeah 15:48 < bridge> idk 15:49 < bridge> my question is 15:49 < bridge> is there a solution to have good benchmarks on machines with lot of noise 15:49 < bridge> Eg 15:49 < bridge> Because of multi threading xd 15:49 < bridge> Even at a higher level, you need to know what data sizes to bench with, what collection sizes to bench with, you need to know if there are any platform quirks ruining your performance 15:49 < bridge> the solution tbh is live production telemetry 15:50 < bridge> Just to it enoughmanytimes that the noise averages out I guess 15:50 < bridge> do it* 15:50 < bridge> So benchmarking for scalability.. yes that's very hard 15:50 < bridge> for example 15:50 < bridge> in my app i had a query that took 1 s 15:50 < bridge> i knew cuz telemetry 15:50 < bridge> so i fixed it 15:50 < bridge> down to half 15:50 < bridge> idk xd 15:51 < bridge> Yes. Almost always better than synthetic benchmarks 15:51 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1092808652940918844/image.png 15:51 < bridge> But a query is something specific. What if u run 10000 queries at once. What's the bottleneck then? ^^ 15:51 < bridge> When ddnet telemetry? 15:51 < bridge> :troll: 15:51 < bridge> rust has a rly good crate 15:51 < bridge> actually i could do that 15:51 < bridge> im motivated 15:52 < bridge> Heinrich would literally shoot you for privacy reasons 15:52 < bridge> the server just needs to offer a single http endpoint with prometheus formatted data 15:52 < bridge> the telemtry isnt smth personal 15:52 < bridge> more like 15:52 < bridge> Maybe opt in telemetry? 15:52 < bridge> Rust also static links. I could imagine that makes benchmarking easier if u want to inject it at compile time 15:52 < bridge> average duration of X thing 15:53 < bridge> m$$ rly stained the name of telemtry 15:53 < bridge> @Learath2 oh i meant server side only 15:53 < bridge> Oh that's boring 15:53 < bridge> The problem with telemetry is the name itself 15:53 < bridge> u think this telemtry is privacy related? xd 15:53 < bridge> If I hear it I think they steal private. Information 15:54 < bridge> We should make one of those profilers new engines have so we can track how much time we spend on what 15:54 < bridge> The client version is also a kind of telemetry we collect 15:54 < bridge> thats the telemtry i thought of 15:54 < bridge> but yeah 15:54 < bridge> it would be cool to have gpu telemtry 15:54 < bridge> detailed 15:54 < bridge> Xd 15:55 < bridge> legit for optimizing better 15:55 < bridge> e.g draw call info 15:55 < bridge> idk im talking bs 15:55 < bridge> Imagine we'd know what config are used how often and what hardware, what drivers 15:56 < bridge> And break backward compability lmao 15:57 < bridge> @Learath2 btw what do you use for benchmarking if that's a topic u investigated your thoughts in already? 15:58 < bridge> I only tried a couple libraries but havent used any in anything serious 15:59 < bridge> I think Celero was the one I enjoyed the most 16:01 < bridge> I was more talking about methodology than implementations though 16:02 < bridge> Yeah but they depend heavily on your software requirement anyway 16:04 < bridge> Googles attempt at is probably the best but it is as always rather heavy 16:05 < bridge> What about human intuition? 16:06 < bridge> I mean none of those help with the methodology, you still need to design the testcases. For which human intuition is indeed still the best we have 16:06 < bridge> with rust i use criterion 16:06 < bridge> If you can learn intuition, then maybe an ai can beat benchmarking software some day xd 16:06 < bridge> we need property testing in ddnet 16:06 < bridge> But it does occasionally fail you, so you need to make sure you explore all variables 16:06 < bridge> its cool 16:07 < bridge> https://altsysrq.github.io/proptest-book/intro.html 16:07 < bridge> > Proptest is a property testing framework (i.e., the QuickCheck family) inspired by the Hypothesis framework for Python. It allows to test that certain properties of your code hold for arbitrary inputs, and if a failure is found, automatically finds the minimal test case to reproduce the problem. Unlike QuickCheck, generation and shrinking is defined on a per-value basis instead of per-type, which makes it more flexible and simplifies composition. 16:07 < bridge> Modern cpus have some extremely unintuitive behaviours 16:08 < bridge> Javascript too xdd 16:08 < bridge> xddd 16:08 < bridge> man 16:08 < bridge> I think Ryozuki posted a very interesting one here once. Something with an array with a weird amount of elements performing better than a power of 8 16:08 < bridge> wasm needs to take off 16:08 < bridge> i know 16:10 < bridge> @Learath2 https://en.algorithmica.org/hpc/cpu-cache/associativity/ 16:11 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1092813658603671612/image.png 16:11 < bridge> > There is no vectorization or anything, and the two loops produce the same assembly except for the step size. This effect is due only to the memory system, in particular to a feature called cache associativity, which is a peculiar artifact of how CPU caches are implemented in hardware. 16:11 < bridge> why do i have such good memory 16:12 < bridge> amazed of myself 16:13 < bridge> that website itself is golden 16:13 < bridge> rly good resource 16:14 < bridge> lol I remember that 16:14 < bridge> u sent it here once 16:14 < bridge> ofc 16:14 < bridge> im the messenger 16:14 < bridge> Yep, so you really need to dig into your brain for anything you can think of. Almost everyone would use the nice even 256 there and might not even notice it is 10 times worse than 257 16:14 < bridge> im the messager 16:15 < bridge> Xd 16:15 < bridge> im the messager /(idk the word kek) 16:15 < bridge> well this is why most SO answers say "profile before doing anything" 16:15 < bridge> because its hard to determine 16:16 < bridge> It's really easy to miss that even in a benchmark you might think is rather well designed. Say I tested incrments of 32, 64, 128, 256. I'd totally have missed it 16:16 < bridge> That's where I'd say intuition is better.. just because this single loop is slower that doesn't mean your software must suck, if it overall has a good concept 16:17 < bridge> If u want to optimize for a single hardware maybe 16:17 < bridge> But usually only Learath do that in c 16:18 < bridge> I mean, depends on the goal of your software. If you need the absolute minimum latency e.g. this might not be an acceptable loss 16:18 < bridge> Yeah 16:18 < bridge> I optimize for an imaginary abstract machine in my head that isn't too hard to optimize for 16:18 < bridge> inb4: nasa using 257 stride instead of 256 in the moon software 16:18 < bridge> I mean I somehow actually like optimizations like these. But often u probably target a general purpose hardware 16:19 < bridge> They use javascript xd 16:19 < bridge> xd 16:19 < bridge> BCS fast enough xdd 16:19 < bridge> I target an old 16 bit cpu in my brain where ordered execution is still a thing 16:19 < bridge> Isn't x86 strongly ordered? 16:20 < bridge> ye 16:20 < bridge> i think risc is weakly 16:20 < bridge> But only the memory model. Dunno what Lea means 16:20 < bridge> lea is an instruction 16:20 < bridge> iirc 16:20 < bridge> Eeeh. I don't honestly even know anymore. It's guaranteed that it'll appear as such. But cpu pipelines do reorder your instructions as they see fit 16:21 < bridge> load effective address 16:21 < bridge> i just figured learath name meaning 16:21 < bridge> he was a assembly instruction all along 16:21 < bridge> and one of the most used 16:21 < bridge> Only the first 3 letters 16:21 < bridge> It's a common girl name 16:21 < bridge> :PES_Blush: 16:22 < bridge> That implies he wants girls in his life desperately 16:22 < bridge> Was I a catfish all along? 16:22 < bridge> ryozuki sounds girl too 16:22 < bridge> but i cant change it 16:22 < bridge> i just choose a japanese sounding name long ago 16:22 < bridge> and stuck 16:22 < bridge> it was cuz ryuzaki 16:22 < bridge> from death note 16:23 < bridge> Yours sounds more weeb than girl so that'll throw people off 16:23 < bridge> kek 16:26 < bridge> Oh I always wondered if it's that xd 16:47 < bridge> hmm Misuteryo Gosuto 16:50 < bridge> hmm Misutero Gosuto 16:50 < bridge> or Gosuto-san idk I like the Mister though xD 16:51 < bridge> Is that also anime? Xd 17:01 < bridge> no xD 17:10 < bridge> It'd be misutā (ミスター) not misutero 17:10 < bridge> oh thanks I was wondering xD 17:12 < bridge> ミスターゴースト 17:12 < bridge> today i had to download a goverment app to get a pin to do my taxes soon 17:13 < bridge> cyberpunk 2077 17:13 < bridge> probs can do without app but its way more complicated 17:13 < bridge> https://clave.gob.es/clave_Home/en/clave.html 17:13 < bridge> its this 17:14 < bridge> I find newer interfaces to these legacy processes are indeed much easier 17:14 < bridge> the gov doesnt even put a HD logo of spain there 17:14 < bridge> lmao 17:14 < bridge> Hd 17:14 < bridge> Svg 17:14 < bridge> Italy does the same. I keep thinking it's some scam 17:15 < bridge> Sad 17:15 < bridge> now my chinese phone has a spanish gov app 17:15 < bridge> what else 17:16 < bridge> Install anti virus 17:16 < bridge> it has one 17:16 < bridge> from the china phone 17:16 < bridge> kek 17:16 < bridge> it shows a ad after u install a app 17:16 < bridge> Lmao 17:16 < bridge> i wanted to install a custom rom but im 2 lazy 17:16 < bridge> i dont use the phone much besides reading memes 17:17 < bridge> MIUI 17:17 < bridge> I want to install lineageos on my old phone but it's not maintained so I need to build my own 😭 17:17 < bridge> I honestly can't stand miui 17:17 < bridge> https://en.wikipedia.org/wiki/MIUI 17:17 < bridge> it has this 17:18 < bridge> one day ill get a more open phone 17:18 < bridge> I use HavocOs 17:18 < bridge> I have that 17:18 < bridge> but i dont want to spend $$$ on a phone 17:18 < bridge> Huawei gang 17:18 < bridge> i dont use much 17:18 < bridge> or should I say, wawei 17:18 < bridge> This is one thing there will never be good open alternatives in 😭 17:19 < bridge> is pixel good? 17:19 < bridge> Oh if that is open enough for you yeah, it's decent 17:19 < bridge> I thought you meant something like a linux phone 17:21 < bridge> i know its hard that 17:21 < bridge> but yeah for me google is more open than china 17:21 < bridge> for now 17:21 < bridge> google atleast publishes the source code for the ROM iirc 17:21 < bridge> huawei violates GPL 17:21 < bridge> they dont publish it 17:21 < bridge> Yeah. It's good enough for me too. You usually like extremes of freedom, so I just assumed 😛 17:21 < bridge> https://github.com/MiCode/Xiaomi_Kernel_OpenSource/issues/2506 17:22 < bridge> https://github.com/MiCode/Xiaomi_Kernel_OpenSource/issues 17:22 < bridge> check all the issues 17:22 < bridge> is pixel 7 good 17:22 < bridge> 587€ is already enough 17:23 < bridge> i dont like paying 900 for a phone 17:24 < bridge> I haven't used a pixel in years. Idk if this generation is good or not, you'll have to research 17:25 < bridge> my requirements arent high anyway xd 17:25 < bridge> Yeah, I think this will be my last flagship phone. I'll downgrade next time I need to get a new phone 17:25 < bridge> The prices are just insane now :/ 17:26 < bridge> True. Phones sucks BCS no good os to write rust 17:36 < bridge> we don't say it "wawei" 17:37 < bridge> but that's how you spell it 17:37 < bridge> no 17:37 < bridge> the "hoo" is silent 17:37 < bridge> no, you have to spell it, they even do it 17:38 < bridge> https://www.google.com/search?q=huawei+how+to+pronounce 17:38 < bridge> hwaaway 17:38 < bridge> yes, not waway, the h is pronounced, you can hear it 17:40 < bridge> yea but I meant the "hoo" 17:40 < bridge> can't you read 17:40 < bridge> well u can kinda hear it too 17:40 < bridge> germans spell it "hooawei" 17:41 < bridge> while it gets pronounced more like wawei 17:41 < bridge> germans pronounce it "hooawei" 17:42 < bridge> and if you don't believe me, listen to google translate 17:42 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1092836691242389525/image.png 17:42 < bridge> it is accurate 17:43 < bridge> and if you don't believe me, listen to German google translate 17:43 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1092836691242389525/image.png 17:43 < bridge> I already know 19:25 < bridge> ^^ 22:30 < bridge> this has probably been talked about before but wouldn't it be cool if `cl_nameplates_strong 1` would work so if you spectate someone you can see who they have strong/weak on. It's like that with the weapons hud etc aswell :jaothinking: 22:33 < bridge> agreed 22:33 < bridge> would also be super easy 22:33 < bridge> and free view spec still showed who you have strong/weak on 22:51 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1092914438601965608/Screen_Shot_2023-04-04_at_3.50.44_PM.png 22:51 < bridge> ddnet 16.9 won't open 22:51 < bridge> 16.8 is ok 22:53 < bridge> damn 22:55 < bridge> lol