08:08 <+bridge_> [ddnet] imagine not having loop {} which is like a while(true) :BASED: 08:15 <+bridge_> [ddnet] meh most fixes are using booleans for places where bools are required 09:42 <+bridge_> [ddnet] o.O 09:42 <+bridge_> [ddnet] (@deen) 09:43 <+bridge_> [ddnet] lmao deen is such an professional \:D 09:43 <+bridge_> [ddnet] (@Ryozuki) 10:24 <+bridge_> [ddnet] :justatest: 10:35 <+bridge_> [ddnet] wtf xd 10:38 <+bridge_> [ddnet] can we somehow maybe get estimated number instead of what we currently have 10:38 <+bridge_> [ddnet] so that developer doesnt have to die 11:27 <+bridge_> [ddnet] the color indicates the estimated number 12:11 <+bridge_> [ddnet] f1: `leak_ip_address_to_all_servers` 12:12 <+bridge_> [ddnet] **estimated number** 12:12 <+bridge_> [ddnet] that command actually leaks ip 12:12 <+bridge_> [ddnet] real number > estimated 12:12 <+bridge_> [ddnet] of course, that does serverinfo requests the old way by pinging each one manually 12:12 <+bridge_> [ddnet] ye and that's not safe 12:13 <+bridge_> [ddnet] i doubt tho that vali or whoever still has fake servers on 0.6, due to the http master 12:13 <+bridge_> [ddnet] u wont die of it + just restart router or do it with a vpn 12:13 <+bridge_> [ddnet] your client caches the pings 12:13 <+bridge_> [ddnet] and saved them upon restart 12:13 <+bridge_> [ddnet] so do it once and u r fine until new servers come 12:13 <+bridge_> [ddnet] i will die 12:14 <+bridge_> [ddnet] stop troll, its hardcore unfunny ^^ 12:14 <+bridge_> [ddnet] and will not get funnier over time xd 12:15 <+bridge_> [ddnet] https://tenor.com/view/spunch-bop-spongebob-crying-cube-mr-krabs-gif-19973394 12:15 <+bridge_> [ddnet] #showroom 12:34 <+ChillerDragon> watfaka is this live freeze :D i somewhat saw it on github and now after a merge with upstream i get random freezes haha 12:34 <+ChillerDragon> is it used in some map already? 12:35 <+bridge_> [ddnet] not on official maps 12:35 <+ChillerDragon> hmk 12:35 <+ChillerDragon> do you have a tldr how it works? 12:35 <+bridge_> [ddnet] you can't do movement key inputs with it 12:36 <+ChillerDragon> when? 12:36 <+ChillerDragon> on tile touch? 12:36 <+bridge_> [ddnet] when you have the effect, one tile turns it on, one off 12:36 <+ChillerDragon> are you saying i drunk mapped that index somewhere? 12:36 <+bridge_> [ddnet] yea 12:36 <+ChillerDragon> lol 12:36 <+bridge_> [ddnet] I suppose ^^ 12:36 <+ChillerDragon> INDEEED 12:36 <+ChillerDragon> 144 12:37 <+ChillerDragon> HOW DAFAK DID THAT HAPPEN 12:37 <+ChillerDragon> Ok thanks bois 12:38 <+ChillerDragon> @bencie lmao i always thought ur name is benice 12:38 <+ChillerDragon> as in ben ice or be nice 12:38 <+bridge_> [ddnet] you just noticed? 12:38 <+bridge_> [ddnet] :D 12:38 <+ChillerDragon> but bencie is like so odd 12:38 <+ChillerDragon> i noticed when i loaded the save game 12:38 <+bridge_> [ddnet] Although I've heard that before ^^ it's my irl name with an i added 12:38 <+ChillerDragon> took me 10 mins 12:39 <+bridge_> [ddnet] hahahahah 12:39 <+ChillerDragon> had to go to ddnet.tw and typed benice 3 times and somehow the name had no points 12:40 <+ChillerDragon> was about to contact ddnet staff that your name was wiped from the database 12:40 <+bridge_> [ddnet] LOL 12:40 <+bridge_> [ddnet] that's funny 12:40 <+ChillerDragon> If I would try to fake you in game it won't be hard to identify me 13:50 <+bridge_> [ddnet] ben ice 14:06 <+bridge_> [ddnet] souli 14:21 <+bridge_> [ddnet] @Patiga @Learath2 what is the executable that is run on $optimize? Want to do it locally 14:22 <+bridge_> [ddnet] `edit_map`, let me check the options used 14:23 <+bridge_> [ddnet] `--remove-everything-unused --shrink-tiles-layers` 14:24 <+bridge_> [ddnet] why not --shrink-layers? 14:25 <+bridge_> [ddnet] because that would touch the game layers. that will change the position of the kill barrier and if the map is shrunk from the left or up it will move the map's floating point precision 14:26 <+bridge_> [ddnet] I first made it do `--shrink-layers`, but I think Ravie and maybe others were against that 14:26 <+bridge_> [ddnet] ok 14:27 <+bridge_> [ddnet] -> if you want to do it locally on a normal, map, `--shrink-layers` should be harmless 14:32 <+bridge_> [ddnet] @Not Keks @Learath2 here us caring about 2gb map when they require 12gb ram nowadays 14:32 <+bridge_> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/943137782203834419/unknown.png 14:32 <+bridge_> [ddnet] :PepeA: 14:33 <+bridge_> [ddnet] Minimum 12g memory :pepeW: 14:33 <+bridge_> [ddnet] We are so in the wrong timeline 14:33 <+bridge_> [ddnet] i wonder if the game is coded in java or something lmfao 14:36 <+bridge_> [ddnet] memory is simply the easiest hardware to scale 14:40 <+bridge_> [ddnet] bad memory usage apologists smh 14:41 <+bridge_> [ddnet] i understand that you are mad if memory is wasted 14:41 <+bridge_> [ddnet] and i agree in this case 14:41 <+bridge_> [ddnet] but gameengines probably simply try to not unload textures/vertices etc as much as possible 14:42 <+bridge_> [ddnet] its hard for me to comprenhend how they need so much ram 14:43 <+bridge_> [ddnet] is that an MMO or smth? 14:43 <+bridge_> [ddnet] open world? 14:43 <+bridge_> [ddnet] its elden ring 14:43 <+bridge_> [ddnet] yes open source 14:43 <+bridge_> [ddnet] souls like 14:43 <+bridge_> [ddnet] open world 14:43 <+bridge_> [ddnet] * 14:43 <+bridge_> [ddnet] lmao idk why i said open source 14:43 <+bridge_> [ddnet] xd 14:43 <+bridge_> [ddnet] that was ur desire xd 14:43 <+bridge_> [ddnet] xd 14:43 <+bridge_> [ddnet] imagine looking into the source code of a AAA game 14:43 <+bridge_> [ddnet] would be interesting 14:43 <+bridge_> [ddnet] or maybe disappointing 14:44 <+bridge_> [ddnet] its alot of scripting language 14:44 <+bridge_> [ddnet] for all events basically 14:44 <+bridge_> [ddnet] i expect some native fully optimized assembly here and there 14:44 <+bridge_> [ddnet] like crypto people 14:44 <+bridge_> [ddnet] only physics and other stuff that need high performance use lower level language mostly 14:44 <+bridge_> [ddnet] I mean if you are interested unreal engines source is available, it's a massive part of the source code 14:44 <+bridge_> [ddnet] ah 14:45 <+bridge_> [ddnet] i wanna know about the frostbite engine source code 14:45 <+bridge_> [ddnet] bf3 and bf4 look too good for their age 14:45 <+bridge_> [ddnet] must be some good engineeringf 14:45 <+bridge_> [ddnet] must be some good engineering 14:45 <+bridge_> [ddnet] the engines are often very good indeed 14:46 <+bridge_> [ddnet] I'm more interested in what rockstar has, their open world games have always been above the rest for me 14:46 <+bridge_> [ddnet] ah ye 14:46 <+bridge_> [ddnet] and they perform rly well 14:47 <+bridge_> [ddnet] gta 5 is a beast 14:47 <+bridge_> [ddnet] the amount of detail 14:47 <+bridge_> [ddnet] on a open world game 14:47 <+bridge_> [ddnet] it has no match 14:47 <+bridge_> [ddnet] RDR2 aswell, great performance for a game of that scale 14:47 <+bridge_> [ddnet] i'd say a lot of approximation for stuff that should look good but not be too realistic 14:48 <+bridge_> [ddnet] @Learath2 we are oficially in c++17 land 14:48 <+bridge_> [ddnet] \o/ 14:49 <+bridge_> [ddnet] I can remove that one ugly void_t hack 14:50 <+bridge_> [ddnet] i wonder if #4711 is fixed by using vulkan 14:50 <+bridge_> [ddnet] https://github.com/ddnet/ddnet/issues/4711 14:50 <+bridge_> [ddnet] directly used the automatic std::array auto template deduction 14:50 <+bridge_> [ddnet] https://github.com/ddnet/ddnet/blob/08a40740b38e9233619e83534fcb1cf59106468b/src/engine/client/backend/vulkan/backend_vulkan.cpp#L2049 14:50 <+bridge_> [ddnet] why is DOWNLOAD_GTEST on by default in windows 14:50 <+bridge_> [ddnet] yeah a bit annoying, but heinrich said he did it, because google said you should do it xD 14:51 <+bridge_> [ddnet] @Not Keks are u using the c++ vulkan api? 14:51 <+bridge_> [ddnet] i'd hope so πŸ˜› 14:51 <+bridge_> [ddnet] or the C one 14:51 <+bridge_> [ddnet] C 14:51 <+bridge_> [ddnet] there is a c++ one btw 14:51 <+bridge_> [ddnet] i know 14:51 <+bridge_> [ddnet] why not the c++? 14:51 <+bridge_> [ddnet] i dunno i just prefer to write my own wrappers 14:52 <+bridge_> [ddnet] β˜• 14:54 <+bridge_> [ddnet] Ryozuki, what are your feelings on this? 14:55 <+bridge_> [ddnet] :PES3_Flushed: 14:55 <+bridge_> [ddnet] Heinrich would have a spicy opinion about that too πŸ˜„ He is not a big fan of rolling your own almost anything 14:55 <+bridge_> [ddnet] i would use the c++ 14:55 <+bridge_> [ddnet] im sure its safer 14:55 <+bridge_> [ddnet] they actually use smart pointers iirc 14:55 <+bridge_> [ddnet] the problem is, you dont gain alot from it 14:56 <+bridge_> [ddnet] device->dosmth 14:56 <+bridge_> [ddnet] 14:56 <+bridge_> [ddnet] or 14:56 <+bridge_> [ddnet] 14:56 <+bridge_> [ddnet] dosmth(device) 14:56 <+bridge_> [ddnet] worst reason to do so 14:57 <+bridge_> [ddnet] i think i achieved rendering a triangle 14:57 <+bridge_> [ddnet] old code xd 14:58 <+bridge_> [ddnet] \o/ 14:58 <+bridge_> [ddnet] did you at least understand it? 14:58 <+bridge_> [ddnet] :PepeA: 14:58 <+bridge_> [ddnet] or just copy paste xd 14:58 <+bridge_> [ddnet] some stuff 14:58 <+bridge_> [ddnet] not everything 14:58 <+bridge_> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/943144300231934033/unknown.png 14:58 <+bridge_> [ddnet] i mean in the end vulkan still feels similar to OpenGL, its just that OpenGL hides synchronizations and allocations 14:58 <+bridge_> [ddnet] u rly have lot of control 14:58 <+bridge_> [ddnet] xdd 14:59 <+bridge_> [ddnet] and then you have 10000000000000 lines of code xd 14:59 <+bridge_> [ddnet] tho if u ask me now i dont remember much 15:00 <+bridge_> [ddnet] `vk::PipelineLayoutCreateInfo PipelineLayoutInfo = {};` 15:00 <+bridge_> [ddnet] 15:00 <+bridge_> [ddnet] for example is even more verbose than c version 15:00 <+bridge_> [ddnet] `vkPipelineLayoutCreateInfo PipelineLayoutInfo{};` 15:00 <+bridge_> [ddnet] xd 15:00 <+bridge_> [ddnet] this is from when i thought using only C and not c++ was the cool kids thing: 15:00 <+bridge_> [ddnet] (how i used in inside c++ code ofc) 15:01 <+bridge_> [ddnet] xd 15:01 <+bridge_> [ddnet] therefor you can code the compiler for you simplegame in 1 month 15:01 <+bridge_> [ddnet] while for rust and c++ you'll need years πŸ˜„ 15:01 <+bridge_> [ddnet] :weird: 15:02 <+bridge_> [ddnet] TIL I can't compile teeworlds in china 15:02 <+bridge_> [ddnet] do you own a pure chinese computer now, or what? xd 15:03 <+bridge_> [ddnet] Actually `vk::PipelineLayoutCreateInfo PipelineLayoutInfo{};` should be fine in C++ too, no? 15:03 <+bridge_> [ddnet] ah yeah, i only meant the scope 15:03 <+bridge_> [ddnet] oic 15:03 <+bridge_> [ddnet] but yeah dunno, i dont want to rewrite it now 15:03 <+bridge_> [ddnet] the documention is in c, so i use c 15:03 <+bridge_> [ddnet] namespaces are one of the few C++ things I actually enjoy 15:04 <+bridge_> [ddnet] its simply more accessable for me πŸ˜„ 15:04 <+bridge_> [ddnet] i like template programming with c++ most i think 15:04 <+bridge_> [ddnet] you can do so much bs with it, and that's what i like 15:04 <+bridge_> [ddnet] you never learn out what quirks are possible with it xD 15:05 <+bridge_> [ddnet] thats why i avoid c++ 15:05 <+bridge_> [ddnet] what if some quirk is UB 15:05 <+bridge_> [ddnet] :monkalaugh: 15:05 <+bridge_> [ddnet] its just a meta language 15:06 <+bridge_> [ddnet] https://stackoverflow.com/questions/56781981/c-variable-template-this-is-ub 15:06 <+bridge_> [ddnet] just bcs rust says something isnt UB by documenting it, doesnt mean that its intuitive 15:07 <+bridge_> [ddnet] are condition variables in rust FIFO? do they garantuee to exectue immediatly? 15:07 <+bridge_> [ddnet] ``` 15:07 <+bridge_> [ddnet] cond.notify_all(); 15:07 <+bridge_> [ddnet] cond.wait(mutex); 15:07 <+bridge_> [ddnet] ``` 15:07 <+bridge_> [ddnet] 15:07 <+bridge_> [ddnet] what happens here? 15:07 <+bridge_> [ddnet] do we wait, or do we notify ourself? 15:07 <+bridge_> [ddnet] xd 15:07 <+bridge_> [ddnet] I think that's well defined, you've missed that notification 15:08 <+bridge_> [ddnet] it's not well defined in a way that you think its intuitive 15:08 <+bridge_> [ddnet] you can signal yourself indeed 15:08 <+bridge_> [ddnet] (in c++) 15:08 <+bridge_> [ddnet] that's why i am asking 15:09 <+bridge_> [ddnet] > This method will ensure that any current waiters on the condition variable are awoken. Calls to notify_all() are not buffered in any way. 15:09 <+bridge_> [ddnet] yes it makes no garantue that it executes directly 15:10 <+bridge_> [ddnet] It has to execute directly if it's not buffered in any way 15:10 <+bridge_> [ddnet] Rust is lacking a standard that defines this terminology though, so who really knows πŸ˜› 15:11 <+bridge_> [ddnet] @Not Keks did u try rust yet 15:12 <+bridge_> [ddnet] i sometimes read a bit of code, but i still dont like the syntax, i want a c like rust xd 15:12 <+bridge_> [ddnet] i have nothing against the concept of rust, defs helps to not shoot yourself 15:12 <+bridge_> [ddnet] hmm 15:12 <+bridge_> [ddnet] i dont dislike the syntax 15:12 <+bridge_> [ddnet] sometimes it can get a bit weird 15:12 <+bridge_> [ddnet] tho, when i'd use it, i'd use safe only code, else it's useless xd 15:12 <+bridge_> [ddnet] when u have lot of types 15:13 <+bridge_> [ddnet] but that also happens in c++ 15:13 <+bridge_> [ddnet] i only used unsafe code to call C functions 15:13 <+bridge_> [ddnet] well i am ofc also fine with proven code 15:13 <+bridge_> [ddnet] @Not Keks are you sure that it's not ordered properly in C++? 15:13 <+bridge_> [ddnet] not everywhere safe code can be used ofc 15:14 <+bridge_> [ddnet] i feel like rust will look bad until u try it **and** get to intermediate level atleast 15:14 <+bridge_> [ddnet] gimme a second 15:15 <+bridge_> [ddnet] or atleast past the initial stage where u think the compiler trashes u for no reason 15:15 <+bridge_> [ddnet] C++11 30.5p4: 15:15 <+bridge_> [ddnet] > The implementation shall behave as if all executions of notify_one, notify_all, and each part of the wait, wait_for, and wait_until executions are executed in a single unspecified total order consistent with the "happens before" order. 15:15 <+bridge_> [ddnet] is "happens before" order defined? 15:16 <+bridge_> [ddnet] i never rly read a standard much 15:16 <+bridge_> [ddnet] i guess they are like legal texts 15:16 <+bridge_> [ddnet] u gotta define everything 15:17 <+bridge_> [ddnet] @Not Keks we have 343 issues 15:17 <+bridge_> [ddnet] the discussion stuff totally didnt work 15:17 <+bridge_> [ddnet] we have to make a purge 15:17 <+bridge_> [ddnet] Yep 1.10p12 15:19 <+bridge_> [ddnet] Basically if an evaluation is sequenced before another (due to a sequence point (like ;)) it happens before or if an evaluation inter-thread happens before another πŸ˜„ 15:20 <+bridge_> [ddnet] When you want to actually analyse whether there is a data race it gets very annoying very quick to figure out what "happens before" what 15:20 <+bridge_> [ddnet] just use rust 4head 15:21 <+bridge_> [ddnet] dont mind me im just here chatting cuz this endless queue 15:21 <+bridge_> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/943149952027226192/unknown.png 15:21 <+bridge_> [ddnet] :feelsbadman: 15:21 <+bridge_> [ddnet] https://github.com/teeworlds/teeworlds/pull/2891#issuecomment-877839655 here is a quick example 15:22 <+bridge_> [ddnet] everyone is perma stuck in queue, I wonder why amazon just wont run more servers with their bottomless wealth 15:22 <+bridge_> [ddnet] ye its weird 15:22 <+bridge_> [ddnet] @Learath2 i think its cuz the game design 15:22 <+bridge_> [ddnet] mayeb they didnt design it to scale that well 15:23 <+bridge_> [ddnet] hey i remember we removed volatiles too 15:23 <+bridge_> [ddnet] i did it actually xd 15:23 <+bridge_> [ddnet] Justifying removing them is not actually as trivial as one might initially think 15:24 <+bridge_> [ddnet] https://github.com/ddnet/ddnet/issues/4216 15:24 <+bridge_> [ddnet] It's easy to quote some folk tale "Volatile is never what you want" 15:25 <+bridge_> [ddnet] > Both the lock and the volatile can be avoided by just using an atomic here 15:26 <+bridge_> [ddnet] this was mostly our case too 15:26 <+bridge_> [ddnet] we just needed atomics instead of volatile 15:26 <+bridge_> [ddnet] (quoting u btw) 15:28 <+bridge_> [ddnet] @Learath2 i like how instead of agreeing with u he calls for mom 15:28 <+bridge_> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/943151668948787240/unknown.png 15:28 <+bridge_> [ddnet] well im joking obviously but it looks like t hat 15:28 <+bridge_> [ddnet] :monkalaugh: 15:30 <+bridge_> [ddnet] :PepeA: 15:30 <+bridge_> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/943152173330599946/unknown.png 15:30 <+bridge_> [ddnet] well its my time bye 15:30 <+bridge_> [ddnet] o/ 15:31 <+bridge_> [ddnet] Fwiw I did actually believe that volatile was necessary until I actually went through the steps of figuring out what happens 15:46 <+bridge_> [ddnet] I think queues can make something seem more popular and be used intentionally. (Not sure sure if this is the case here though) 15:47 <+bridge_> [ddnet] i doubt since its a f2p game and the only way to spend money is if ur past the queue inside the game 15:48 <+bridge_> [ddnet] @Learath2 ok sry 15:48 <+bridge_> [ddnet] my example only works with the wait that doesnt take a extra condition 15:48 <+bridge_> [ddnet] https://en.cppreference.com/w/cpp/thread/condition_variable/wait 15:51 <+bridge_> [ddnet] @Not Keks does it though? Which part of that page should I read? 15:51 <+bridge_> [ddnet] the first sentence 15:52 <+bridge_> [ddnet] "The effects of notify_one()/notify_all() and each of the three atomic parts of wait()/wait_for()/wait_until() (unlock+wait, wakeup, and lock) take place in a single total order that can be viewed as modification order of an atomic variable: the order is specific to this individual condition variable. This makes it impossible for notify_one() to, for example, be delayed and unblock a thread that started waiting just after the call to noti 15:52 <+bridge_> [ddnet] 15:52 <+bridge_> [ddnet] This note derived from the part of the standard I quoted seems to suggest that only a spurious wakeup is possible in that case 15:53 <+bridge_> [ddnet] But that has nothing to do with the notify_all imo, spurious wakeups just randomly happen πŸ˜„ 15:53 <+bridge_> [ddnet] mhh I'm not so sure about that 15:53 <+bridge_> [ddnet] Also, no need to be sorry, it is very annoying to figure out what all this means 15:53 <+bridge_> [ddnet] i could swear i had a bug with condition variables once, and it was bcs the wait returned for no reason 15:54 <+bridge_> [ddnet] and notify_one fixed it then xd 15:54 <+bridge_> [ddnet] Wait does return for no reason at all, called a spurious wakeup, you always have to check a condition when you wakeup 15:54 <+bridge_> [ddnet] but if people hear that others are waiting in the queue, they'll think "wow, that's a popular game, maybe I should check that out too". 15:55 <+bridge_> [ddnet] ok yeah, then i accept this too, but this is still unintuitive(i guess that was our starting point of the discussion) 15:57 <+bridge_> [ddnet] I actually read some ancient discussion on spurious wakeups once. I think the arguments were that 1) it allows for much higher performance and 2) when you wakeup you have to check a condition anyway, since a broadcast waking up someone else before you might have changed the condition 15:58 <+bridge_> [ddnet] Oh and 3) I think a POSIX guy argued that it forces people to have "correct" code if you threaten them with spurious wakeups πŸ˜„ 15:58 <+bridge_> [ddnet] xD 16:17 <+bridge_> [ddnet] @Learath2 would you say we should also guard the variables in our code, it's probably safer, i think i'll create a pr 16:17 <+bridge_> [ddnet] guard? 16:17 <+bridge_> [ddnet] check the conditions correctly 16:18 <+bridge_> [ddnet] If we are using a cond var anywhere, we definitely should be 16:18 <+bridge_> [ddnet] Either with wait + if or the predicate form, either is okay with me 16:28 <+bridge_> [ddnet] @Learath2 what does ` CAutoreleasePool AutoreleasePool; ` fix btw? 16:34 <+bridge_> [ddnet] I think SDL is internally creating some refcounted types and if we don't have an outer pool to catch and release those they leak 16:34 <+bridge_> [ddnet] Some obj-c refcounted types that is 16:35 <+bridge_> [ddnet] weird stuff xD 16:35 <+bridge_> [ddnet] i wonder if that's actually still needed 16:36 <+bridge_> [ddnet] idk what tool was used to find the initial leak, so idk how you'd check if removing it changes sth 16:36 <+bridge_> [ddnet] oh ok 16:37 <+bridge_> [ddnet] Each thread creates a thread-wide autorelease pool automatically, but it's not drained until the thread is dead, so the gfx thread having a local one makes sense 16:38 <+bridge_> [ddnet] i wonder why they even use such things, but anyway, thanks for explaination 16:44 <+bridge_> [ddnet] Well obj-c is implementing modern language with C aesthetics πŸ˜„ 16:44 <+bridge_> [ddnet] The staple of a modern language is the ability to just allocate stuff on the heap and then forget about it 16:49 <+bridge_> [ddnet] It does allow some very interesting things, obj-c is wild 16:49 <+bridge_> [ddnet] You can monkey-patch stuff, literally replacing running code with other compiled code at runtime 16:58 <+bridge_> [ddnet] I think we should consider the tutorial map and vulkan support as a major improvement and release that as 16.0 16:59 <+bridge_> [ddnet] and use that for the last Steam marketing round we have available (not sure if they have much of an effect anyway) 17:12 <+bridge_> [ddnet] is this rly it? or its sarcasm xd 17:14 <+bridge_> [ddnet] automatic memory management is definitely something that unites modern high level languages 17:15 <+bridge_> [ddnet] it cuts out a main cause of bugs and crashes at the cost of performance and memory usage 17:16 <+bridge_> [ddnet] (the original term "high level language" was for C, FORTRAN, Pascal, etc, so maybe should say https://en.wikipedia.org/wiki/Very_high-level_programming_language) 17:19 <+bridge_> [ddnet] is obj-c using a gc? 17:31 <+bridge_> [ddnet] It uses both approaches, it has autorelease pools that will deallocate everything in themselves when they go out of scope, and they have gc for some cases 19:25 <+bridge_> [ddnet] https://dkb.io/post/google-search-is-dying 19:25 <+bridge_> [ddnet] https://news.ycombinator.com/item?id=30347719 19:26 <+bridge_> [ddnet] i also always put "reddit" at the end of my queries 19:26 <+bridge_> [ddnet] specially for reviews 19:26 <+bridge_> [ddnet] real people usually give more honest opinions than stupid paid websites 19:26 <+bridge_> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/943211719143067659/unknown.png 19:27 <+bridge_> [ddnet] > So how can we regain authenticity? What if you want to know what a genuine real life human being thinks about the latest Lenovo laptop? 19:27 <+bridge_> [ddnet] > 19:27 <+bridge_> [ddnet] > You append β€œreddit" to your query (or hacker news, or stack overflow, or some other community you trust). 19:27 <+bridge_> [ddnet] > 19:28 <+bridge_> [ddnet] > Google is dead. 19:28 <+bridge_> [ddnet] > 19:28 <+bridge_> [ddnet] > Long live Google + β€œsite:reddit.com”. 19:28 <+bridge_> [ddnet] chillerdragon i found ur girlfriend https://sdomi.pl/weblog/15-witchcraft-minecraft-server-in-bash/ 19:56 <+bridge_> [ddnet] i more and more find stuff i want to know on reddit rather than stackoverflow xD 20:59 <+bridge_> [ddnet] same, depending on what I need site:reddit.com, or site:ycombinator.com, etc. but it's not necessarily google's fault, but of the people doing "seo" 21:15 <+bridge_> [ddnet] I've actually noticed that I don't really enjoy this new smart search stuff that's been getting more and more popular for the last 5 years 21:16 <+bridge_> [ddnet] you mean the sidebar? 21:17 <+bridge_> [ddnet] There were some funny stories about that too: https://hristo-georgiev.com/google-turned-me-into-a-serial-killer