00:48 <+bridge> [ddnet] i have a pretty strange feature request: i wont bother with github if no one likes this idea but 00:48 <+bridge> [ddnet] 00:48 <+bridge> [ddnet] imagine you join team and ur speedrunning a map with someone, and the map sucks so u have to reset a lot. wouldn't it be nice if you could set one tee to always have strong after they kill even if the other tee lived longer? that way any player can kill to reset the run and it wont change the order of strong/weak for runs that depend on a specific order 00:48 <+bridge> [ddnet] i hate having to make sure i or the other player kills, and then i have to wait for the other player to kill if the order is screwed up and i need strong 04:04 <+bridge> [ddnet] or just fix strong/weak bug :YEP: 04:36 <+bridge> [ddnet] player who kills gets strong 04:36 <+bridge> [ddnet] >that way any player can kill to reset the run and it wont change the order of strong/weak for runs that depend on a specific order 04:37 <+bridge> [ddnet] strong player always kill = no problem xd 04:37 <+bridge> [ddnet] like on dummy maps, the main always kills -> instant start 04:37 <+bridge> [ddnet] i rq idea 04:37 <+bridge> [ddnet] xd 04:37 <+bridge> [ddnet] would be nice to decide to reset as weak but w/e 04:38 <+bridge> [ddnet] well, its hard to do anyways since in > 2 player teams u have weak on some and strong on others 04:38 <+bridge> [ddnet] how would u handle such a case? 04:39 <+bridge> [ddnet] and i everyone explicitly tells on which player to have weak/strong, it might not work with the results of other players 04:40 <+bridge> [ddnet] i think such a command is neither very useful at all nor nice to implement 04:42 <+bridge> [ddnet] i say just remove weak 04:44 <+bridge> [ddnet] remove strong 04:46 <+bridge> [ddnet] Never, some maps rely on it + u know about physics change in tw 04:46 <+bridge> [ddnet] /ddrace 04:47 <+bridge> [ddnet] remove those map 04:47 <+bridge> [ddnet] problem solved 04:47 <+bridge> [ddnet] remove those maps 04:48 <+bridge> [ddnet] could still impact runs on other maps 04:48 <+bridge> [ddnet] well the some maps rely on it is bad argument cus u can easily just edit them 04:48 <+bridge> [ddnet] but the physics change ig 04:48 <+bridge> [ddnet] kinda sucks its like that especially for something that in my opinion is an annoying feature 04:48 <+bridge> [ddnet] We could of course add a map setting to give everyone strong 04:48 <+bridge> [ddnet] I have such a thing in my mod 04:49 <+bridge> [ddnet] Because such setting can only affect newly created maps 04:49 <+bridge> [ddnet] but still would suck for other maps and then everything is weird because it differs from map to map probably 04:50 <+bridge> [ddnet] i think a map setting with strong for everyone would be better than nothing 04:50 <+bridge> [ddnet] i feel the same, especially for driving 04:50 <+bridge> [ddnet] map setting for /spec enabled is also similar to it 04:50 <+bridge> [ddnet] just a little less straightforward 04:50 <+bridge> [ddnet] yea 04:51 <+bridge> [ddnet] if you'd like i can create a pr tomorrow 04:52 <+bridge> [ddnet] it would fuck up prediction tho, so probably that has to be taken care of first 04:52 <+bridge> [ddnet] annoying anyways, some servers use weak, some dont, the client doesnt know about that tho and assumes its always there 04:52 <+bridge> [ddnet] i dont get it why not every map has /spec 04:53 <+bridge> [ddnet] some concider it a cheat maybe 04:53 <+bridge> [ddnet] its already in the game 04:53 <+bridge> [ddnet] cheat or not 04:53 <+bridge> [ddnet] its already here 04:53 <+bridge> [ddnet] yea, but do u need it in every map? 04:53 <+bridge> [ddnet] u can do shotgun cheats on some maps 04:53 <+bridge> [ddnet] not sure 04:53 <+bridge> [ddnet] with /spec 04:53 <+bridge> [ddnet] also that 04:54 <+bridge> [ddnet] idk 04:54 <+bridge> [ddnet] its nice for when you need to hammerfly good 04:54 <+bridge> [ddnet] shotgun bug imo should be fixed too 04:54 <+bridge> [ddnet] ye since ranks with it got removed 04:55 <+bridge> [ddnet] someone should also fix that another shotgun bug that makes the sg fly annoying cuz the laser doesnt appear sometimes 04:56 <+bridge> [ddnet] just give everyone strong and add /weak 04:56 <+bridge> [ddnet] nice idea, but still affects other ranks 04:56 <+bridge> [ddnet] it will only make them faster right 04:57 <+bridge> [ddnet] unfair for old ranks, i mean 04:57 <+bridge> [ddnet] at this points we need ddnet 2 04:57 <+bridge> [ddnet] at this point we need ddnet 2 04:58 <+bridge> [ddnet] if the old ranks are not such a big problem, then a command to actually swap as you like would be the best solution i think 04:58 <+bridge> [ddnet] yeah probably 04:58 <+bridge> [ddnet] f4 04:58 <+bridge> [ddnet] weak best 04:59 <+bridge> [ddnet] Colo-Colo: 04:59 <+bridge> [ddnet] swap strong and weak still keeps weak nobo 04:59 <+bridge> [ddnet] Souly: 04:59 <+bridge> [ddnet] both strong sux 04:59 <+bridge> [ddnet] f3 04:59 <+bridge> [ddnet] what about both weak 04:59 <+bridge> [ddnet] not 04:59 <+bridge> [ddnet] both strong best 04:59 <+bridge> [ddnet] nobody cares about reverse speedfly 04:59 <+bridge> [ddnet] xD 04:59 <+bridge> [ddnet] do 2long without strong 04:59 <+bridge> [ddnet] impossible part 04:59 <+bridge> [ddnet] not 04:59 <+bridge> [ddnet] pirofly should be banned 04:59 <+bridge> [ddnet] u just have to hook a little later 05:00 <+bridge> [ddnet] ye but its impossible 05:00 <+bridge> [ddnet] way easier with weak 05:00 <+bridge> [ddnet] i want sv_weak as a setting 05:00 <+bridge> [ddnet] so new maps can disable it 05:00 <+bridge> [ddnet] like in fddrace :p 05:00 <+bridge> [ddnet] but yours is broken 05:00 <+bridge> [ddnet] not at all 05:01 <+bridge> [ddnet] idk on bombay it shows the stronghook icon on all tees 05:01 <+bridge> [ddnet] really? 05:01 <+bridge> [ddnet] ye 05:01 <+bridge> [ddnet] isnt that what it should do 05:01 <+bridge> [ddnet] at least last time i checked it was like that but cant confirm cuz im banned 05:01 <+bridge> [ddnet] i wonder how tho 05:01 <+bridge> [ddnet] because the client shouldnt know about all-strong 05:02 <+bridge> [ddnet] idk mybe send the ids below 05:02 <+bridge> [ddnet] but i think that all players had weakhook id 0 above heads too 05:02 <+bridge> [ddnet] :ww: 05:02 <+bridge> [ddnet] so its rather not that 05:02 <+bridge> [ddnet] yea, then its probably that, thought so too 05:04 <+bridge> [ddnet] @fokkonaut add /eyeemote to f-ddrace or i ban u 05:06 <+bridge> [ddnet] would it be a good idea to have an option to be able to display a selected amount of the shown debug hud elements at all times? 05:06 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/927774859734425650/unknown.png 06:59 <+bridge> [ddnet] raymond chen commented on a rust issue: https://github.com/rust-lang/rust/issues/37984#issuecomment-1004353754 😮 07:30 <+bridge> [ddnet] I'd love that feature 08:03 <+bridge> [ddnet] > Raymond T. Chen (born July 14, 1968) is a United States Circuit Judge of the United States Court of Appeals for the Federal Circuit. 08:05 <+bridge> [ddnet] dunno if that's the same raymond 08:05 <+bridge> [ddnet] xd 08:06 <+bridge> [ddnet] my raymond chen wrote books about winapi and has a nice blog about quirks in windows and how microsoft fixed broken software to work on newer versions on windows 08:06 <+bridge> [ddnet] blog post I have open in my browser rn: https://devblogs.microsoft.com/oldnewthing/20071203-00/?p=24323 08:06 <+bridge> [ddnet] ah ok 08:08 <+bridge> [ddnet] https://devblogs.microsoft.com/oldnewthing/20100311-00/?p=14643 08:09 <+bridge> [ddnet] https://devblogs.microsoft.com/oldnewthing/20050715-14/?p=34923 08:11 <+bridge> [ddnet] https://devblogs.microsoft.com/oldnewthing/20030822-00/?p=42823 08:15 <+bridge> [ddnet] https://devblogs.microsoft.com/oldnewthing/20031224-00/?p=41363 10:50 <+bridge> [ddnet] Hi there, I wanted to ask you if some of you would be down to code a amongus teeworlds, we got this idea with Pipou for couple of months now, but we basicly need some coders to make this easier. 10:50 <+bridge> [ddnet] If you are interested or want more informations, i invite you to PM me and Pipou 11:21 <+bridge> [ddnet] ``` 11:21 <+bridge> [ddnet] [----------] Global test environment tear-down 11:21 <+bridge> [ddnet] [==========] 150 tests from 34 test suites ran. (37 ms total) 11:21 <+bridge> [ddnet] [ PASSED ] 147 tests. 11:21 <+bridge> [ddnet] [ FAILED ] 3 tests, listed below: 11:21 <+bridge> [ddnet] [ FAILED ] Sql/MapInfo.ExactNoFinish/SQLite, where GetParam() = 0x562fcc9e02f0 11:21 <+bridge> [ddnet] [ FAILED ] Sql/MapInfo.ExactFinish/SQLite, where GetParam() = 0x562fcc9e02f0 11:22 <+bridge> [ddnet] [ FAILED ] Sql/MapInfo.Fuzzy/SQLite, where GetParam() = 0x562fcc9e02f0 11:22 <+bridge> [ddnet] ``` 11:22 <+bridge> [ddnet] @deen test fails when installing ddnet from aur 11:22 <+bridge> [ddnet] ``` 11:22 <+bridge> [ddnet] build() { 11:22 <+bridge> [ddnet] mkdir -p build 11:22 <+bridge> [ddnet] cd build 11:22 <+bridge> [ddnet] cmake ../DDNet-$pkgver \ 11:22 <+bridge> [ddnet] -DCMAKE_BUILD_TYPE=Release \ 11:22 <+bridge> [ddnet] -DCMAKE_INSTALL_PREFIX=/usr \ 11:22 <+bridge> [ddnet] -DAUTOUPDATE=OFF \ 11:22 <+bridge> [ddnet] -DANTIBOT=ON \ 11:22 <+bridge> [ddnet] -DVIDEORECORDER=ON \ 11:22 <+bridge> [ddnet] -DUPNP=ON \ 11:22 <+bridge> [ddnet] -DMYSQL=ON \ 11:22 <+bridge> [ddnet] -GNinja 11:22 <+bridge> [ddnet] ninja 11:22 <+bridge> [ddnet] } 11:22 <+bridge> [ddnet] ``` 11:22 <+bridge> [ddnet] build options 11:25 <+bridge> [ddnet] oh 11:25 <+bridge> [ddnet] maybe its cuz it requires mysql db 11:25 <+bridge> [ddnet] those look like sqlite tests, no? 11:26 <+bridge> [ddnet] ill try disabling -DTEST_MYSQL=OFF 11:26 <+bridge> [ddnet] ah ye it looks like sqlite 11:26 <+bridge> [ddnet] xd 12:26 <+bridge> [ddnet] I want to join the new year capture but it crashes my client 😦 12:28 <+bridge> [ddnet] @deen hm, I'm getting a crash in libapple_nghttp2 12:29 <+bridge> [ddnet] eh, that's weird, works for me 12:29 <+bridge> [ddnet] Only 15.8 or also 15.7 crashes? 12:30 <+bridge> [ddnet] Very latest master 12:30 <+bridge> [ddnet] Let me try an older version 12:31 <+bridge> [ddnet] but it links to system curl, not sure if that'll change anything 12:48 <+bridge> [ddnet] > Fixed and updated the md5sums/sha256sums. I hope no one was using them already. 12:48 <+bridge> [ddnet] ehm 12:48 <+bridge> [ddnet] xd 12:48 <+bridge> [ddnet] time to update 12:51 <+bridge> [ddnet] > CMake Error: The current CMakeCache.txt directory /home/ryozuki/Documents/aur/ddnet/src/DDNet-15.8.1/CMakeCache.txt is different than the directory /Users/deen/Downloads/DDNet-15.8.1 where CMakeCache.txt was created. This may result in binaries being created in the wrong place. If you are not sure, reedit the CMakeCache.txt 12:51 <+bridge> [ddnet] wtf 12:51 <+bridge> [ddnet] @deen why does deen appear here 12:51 <+bridge> [ddnet] xD 12:58 <+bridge> [ddnet] eh 12:58 <+bridge> [ddnet] my bad 13:14 <+bridge> [ddnet] fixed 13:22 <+bridge> [ddnet] eh 13:22 <+bridge> [ddnet] there are some mcake warnings about not all tools being present in cmake 13:22 <+bridge> [ddnet] but it builds now 13:29 <+bridge> [ddnet] which tools? 13:30 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/927901810528772126/log.txt 13:54 <+bridge> [ddnet] where can I change the framerate for rendering demos? 13:55 <+bridge> [ddnet] `cl_video_recorder_fps` 14:26 <+bridge> [ddnet] Ty 14:26 <+bridge> [ddnet] Sigh, macOS doing weird stuff... 14:26 <+bridge> [ddnet] have to do it on Linux, sorry 14:26 <+bridge> [ddnet] didn't know macOS will just insert files 14:27 <+bridge> [ddnet] 👀 14:27 <+bridge> [ddnet] linux is just too good :monkalaugh: 14:28 <+bridge> [ddnet] im doing a tool to generate all the images from the master server stats 14:28 <+bridge> [ddnet] cool 14:28 <+bridge> [ddnet] > OSError: [Errno 28] No space left on device 14:28 <+bridge> [ddnet] :monkaS: 14:28 <+bridge> [ddnet] yes, don't extract them 14:28 <+bridge> [ddnet] can you stream them out of the tar.zstd files directly? 14:29 <+bridge> [ddnet] i thought using the with open it closes the files right? 14:29 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/927916591377682492/unknown.png 14:29 <+bridge> [ddnet] the whole thing is a bit awkward with this huge number of json files 14:29 <+bridge> [ddnet] how much does one day even take 14:29 <+bridge> [ddnet] 10 MB compressed, 3 GB uncompressed? 14:30 <+bridge> [ddnet] tmpfs 7.9G 32M 7.8G 1% /tmp 14:30 <+bridge> [ddnet] oh 14:30 <+bridge> [ddnet] my tmp 14:30 <+bridge> [ddnet] is too small 14:30 <+bridge> [ddnet] cuz i never thought i would use too much when creating the partitions xd 14:31 <+bridge> [ddnet] i wonder if i can create a tempdir outside of /tmp 14:31 <+bridge> [ddnet] i should buy another ssd 14:32 <+bridge> [ddnet] Don't extract it to a filesystem at all if possible 14:32 <+bridge> [ddnet] I have updated 15.8.1 sources again, sorry 14:32 <+bridge> [ddnet] ok 14:32 <+bridge> [ddnet] it will be a bit weird for ppl that already updated 14:32 <+bridge> [ddnet] import tarfile 14:32 <+bridge> [ddnet] most aur helpers ask you if u want to clean build 14:33 <+bridge> [ddnet] and use zstdcat into tarfile I guess 14:39 <+bridge> [ddnet] my rust tool needs a folder with the json files 14:39 <+bridge> [ddnet] but i uses BytesIO for the rest 14:39 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/927919235575992360/unknown.png 14:39 <+bridge> [ddnet] used* 14:47 <+bridge> [ddnet] oh shit 14:47 <+bridge> [ddnet] my system started swapping 14:47 <+bridge> [ddnet] xdd 14:48 <+bridge> [ddnet] ill try to do it in pure rust 14:48 <+bridge> [ddnet] i dont know that much python 15:31 <+bridge> [ddnet] Hi, I don't know where to write any request but it would be great to have hats as accessories so hats wouldn't be part of the skin anymore and you could wear them with any skins at your convenience 15:32 <+bridge> [ddnet] You wouldn't have to remake every single skins to add a Christmas hat for example 15:35 <+bridge> [ddnet] not every hat fits on every skin tho xd 15:36 <+bridge> [ddnet] Most skins are standardized 15:36 <+bridge> [ddnet] So I think it wouldn't be a problem? D: 15:38 <+bridge> [ddnet] You could choose to wear one or not and people who possess the hat skin could see it just like skins 15:43 <+bridge> [ddnet] This would be nice, but we probably should do it in context of implementing 0.7 type of modular skins 15:43 <+bridge> [ddnet] Would 0.6 skins still work ? 15:44 <+bridge> [ddnet] Or will we have to dismantle them to pieces ? 15:44 <+bridge> [ddnet] We'd have to make 0.6 skins work aswell, it'd be an insane endeavour to chop up old skins 15:45 <+bridge> [ddnet] I like the idea of having body parts but I think 0.7 skins are terrible, ugly, doesn't even have the same shape anymore 15:45 <+bridge> [ddnet] But maybe that's only me 😄 15:46 <+bridge> [ddnet] Hm, I don't remember them being too disfigured 15:46 <+bridge> [ddnet] If you could put both tees side by side you'd see the gap in matter of styles 15:47 <+bridge> [ddnet] true 15:47 <+bridge> [ddnet] but that's a really cool idea 16:13 <+bridge> [ddnet] I've had tee hats as an idea in my head for a while. Like, one extra body layer over the eyes so that the eyes dont clip over them. It's make tee skins wearing helmets really cool as well. 16:16 <+bridge> [ddnet] I've had tee hats as an idea in my head for a while. Like, one extra body layer over the eyes so that the eyes dont clip over them. It'd make tee skins wearing helmets really cool as well. 17:20 <+bridge> [ddnet] 😄 17:21 <+bridge> [ddnet] I hope someone can and is devoted to code it 18:08 <+bridge> [ddnet] heyyo 18:08 <+bridge> [ddnet] where located ranks for servers? 18:09 <+bridge> [ddnet] I think France or Germany 18:14 <+bridge> [ddnet] this is ? 18:14 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/927973186396635196/unknown.png 18:37 <+bridge> [ddnet] there aren't really any i would ssy 18:37 <+bridge> [ddnet] just the feet placement makes it weird 18:37 <+bridge> [ddnet] and overally resolution is highier 18:43 <+bridge> [ddnet] colors are different 18:45 <+bridge> [ddnet] coala is actually a koala in 0.7 18:51 <+bridge> [ddnet] So i might not be able to code, but I sure know what I would do if I could change the current skin template. 18:51 <+bridge> [ddnet] I doubt this entire thing would become the new standard, but it gives nice dimensions for what *could* happen if we added onto tees. 18:51 <+bridge> [ddnet] Also yes the new emotion placement is purely just an idea but I would imagine it'd replace the :tear::zzzz::mmm: expression (which is simply squashing the face assets) 18:51 <+bridge> [ddnet] The theme of the emotion would be eyes closed, neutral expression 18:51 <+bridge> [ddnet] 18:51 <+bridge> [ddnet] i also added some concept sketches for how these would be implemented, and just a tiny idea for if everyone agrees to add this emotion idea 18:51 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/927982615624052736/unknown.png 18:51 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/927982615942803536/unknown.png 18:51 <+bridge> [ddnet] So i might not be able to code, but I sure know what I would do if I could change the current skin template. 18:51 <+bridge> [ddnet] I doubt this entire thing would become the new standard, but it gives nice dimensions for what *could* happen if we added onto tees, and used these ideas in separate templates. 18:51 <+bridge> [ddnet] Also yes the new emotion placement is purely just an idea but I would imagine it'd replace the :tear::zzzz::mmm: expression (which is simply squashing the face assets) 18:52 <+bridge> [ddnet] The theme of the emotion would be eyes closed, neutral expression 18:52 <+bridge> [ddnet] 18:52 <+bridge> [ddnet] i also added some concept sketches for how these would be implemented, and just a tiny idea for if everyone agrees to add this emotion idea 18:52 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/927982615624052736/unknown.png 18:52 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/927982615942803536/unknown.png 18:52 <+bridge> [ddnet] ah nice tail idea 😄 18:52 <+bridge> [ddnet] I think it shouldn't be included in the skin.png 18:53 <+bridge> [ddnet] So it can be used just like a skin 18:56 <+bridge> [ddnet] Yeah, that's true. 18:57 <+bridge> [ddnet] Though, there should be a way to pair certain hats and skins, since some designers would probably make a hat for a certain skin, whicb wouldn't work for any other. 18:57 <+bridge> [ddnet] Though, there should be a way to pair certain hats and skins, since some designers would probably make a hat for a certain skin, which wouldn't work for any other. 18:58 <+bridge> [ddnet] I think it would be cool to let people pick their hat not to worry if it fits or not 18:59 <+bridge> [ddnet] I guess. 19:46 <+bridge> [ddnet] @Learath2 perhaps a bug in http2/3 code in apple's curl? 19:47 <+bridge> [ddnet] can you force it to use http1.1? 19:53 <+bridge> [ddnet] @Ryozuki you can try the streaming API of https://docs.rs/tar/0.4.38/tar/ 19:53 <+bridge> [ddnet] it probably allows you to read the tar files without extracting them 19:53 <+bridge> [ddnet] :o 19:53 <+bridge> [ddnet] TIL about WTF-8 https://simonsapin.github.io/wtf-8/ 19:53 <+bridge> [ddnet] wobbly transformation format 😉 19:53 <+bridge> [ddnet] :monkalaugh: 19:53 <+bridge> [ddnet] sounds funny 19:55 <+bridge> [ddnet] ye i wanted to use tar and 19:55 <+bridge> [ddnet] ill continue tomorrow 19:55 <+bridge> [ddnet] sounds good 19:55 <+bridge> [ddnet] should be possible to do in a streaming way 19:55 <+bridge> [ddnet] streaming file by file or even streaming json? 19:56 <+bridge> [ddnet] i dont know if serde can do that 19:56 <+bridge> [ddnet] xd 19:56 <+bridge> [ddnet] file by file 19:56 <+bridge> [ddnet] a single file is ~400KB, you can load that into memory ^^ 19:56 <+bridge> [ddnet] ye xD 19:57 <+bridge> [ddnet] although loading the whole serverinfos just to count players is probably still wasteful and takes a lot longer than trying to extract the player count manually 19:57 <+bridge> [ddnet] true 19:57 <+bridge> [ddnet] but i wanted to expand it further with more data 19:57 <+bridge> [ddnet] tho idk what data to graph 19:57 <+bridge> [ddnet] ah yea 19:57 <+bridge> [ddnet] gametype distribution by player count 19:57 <+bridge> [ddnet] :o 19:58 <+bridge> [ddnet] if the http could report skins and more stuff would be cool 19:58 <+bridge> [ddnet] working on it ^^ 19:58 <+bridge> [ddnet] the most famouns skin on a given minute 19:58 <+bridge> [ddnet] haha 19:58 <+bridge> [ddnet] famous* 19:58 <+bridge> [ddnet] I actually have a POC https masterserver, but it still needs all the details ^^ 19:58 <+bridge> [ddnet] :o 20:46 <+bridge> [ddnet] Hi, idk if it is a bug in code or something but whenever i press mouse1 which may fire instantly, it has a few milisecs delay. Could you please check if you didnt do any mistake in coding for version on mac? It has been happening since last update 21:18 <+bridge> [ddnet] And it happens even on my own server and only with fire so it should not be high ping 21:33 <+bridge> [ddnet] About the dead eyes being replaced with the closed eyes, it's a nice touch and I would approve that change 21:33 <+bridge> [ddnet] About the whole concept, similar to 0.7, you should be able to pick them up separately, not including them in every single skin, that would require... too much time to rework. 21:34 <+bridge> [ddnet] :justatest: 23:06 <+bridge> [ddnet] what the fuck-8 23:19 <+bridge> [ddnet] maybe ddnet needs barrels? 😛 https://www.youtube.com/watch?v=LMYEE8lvlvA