02:53 <+bridge> [ddnet] i think it would be cool if we could defer some skins to lazyload 02:53 <+bridge> [ddnet] that way players can still download a bunch of skins but not affect load time 02:53 <+bridge> [ddnet] maybe if we create a subdirectory in skins called "lazyload" those can be deferred 02:54 <+bridge> [ddnet] that way the client could still block to load common skins into memory 02:54 <+bridge> [ddnet] let me know what you guys think about this 02:55 <+bridge> [ddnet] or the subdirectory can be simply called "defer" 02:56 <+bridge> [ddnet] if we want to not be too technical for anyone digging around, it could also be called something like "extra" or "user" but i think it's nice to be transparent like this despite being a bit technical 02:58 <+bridge> [ddnet] OR big brain idea, new directory entirely called downloadedskins but i think that is too correlated with downloadedmaps and not the same thing 02:58 <+bridge> [ddnet] OR big brain idea, new directory entirely called downloadedskins but i think that is too correlated with downloadedmaps and not the same process 02:59 <+bridge> [ddnet] and you could browse the skin db in-game and download them that way, and then the name of the folder is more correct + helpful 03:55 <+bridge> [ddnet] downloaded skins is already the place for the auto skin downloader 03:55 <+bridge> [ddnet] downloadedskins is already the place for the auto skin downloader 04:15 <+bridge> [ddnet] ppl keep talking about the auto downloader but i swear ive never seen it 04:16 <+bridge> [ddnet] probably a good indication of bad UX xd 04:16 <+bridge> [ddnet] tee -> download skins 04:18 <+bridge> [ddnet] im not sure, is it supposed to show here? 04:19 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/869765853296611368/unknown.png 04:19 <+bridge> [ddnet] i already checked cl_download_skins to make sure it's 1 and 04:19 <+bridge> [ddnet] cl_skin_download_url is https://skins.ddnet.tw/skin/ 04:19 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/869766061891919902/unknown.png 04:20 <+bridge> [ddnet] oh the checkmark 04:20 <+bridge> [ddnet] so that's supposed to sync my skins with the db? 04:20 <+bridge> [ddnet] does that happen every launch? 04:20 <+bridge> [ddnet] every time someone on ur server changes skin i think 04:20 <+bridge> [ddnet] no its just when someone uses the skin 04:20 <+bridge> [ddnet] what happened to the bottom of ur skins page 04:20 <+bridge> [ddnet] ohh okay i understand 04:20 <+bridge> [ddnet] it's a bug with ui_scale 04:20 <+bridge> [ddnet] basically dont use anything larger than 1 04:21 <+bridge> [ddnet] cus nothing works for it lol 04:21 <+bridge> [ddnet] rip anyone with bad vision like me i guess 04:21 <+bridge> [ddnet] use irl zooz 04:21 <+bridge> [ddnet] i do use irl zooz but my eyes are still bad and prefer large text 04:21 <+bridge> [ddnet] imo these should be grouped differently 04:21 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/869766566575759391/unknown.png 04:21 <+bridge> [ddnet] the order at least is pretty confusing 04:22 <+bridge> [ddnet] maybe download skins should be in its own column 04:22 <+bridge> [ddnet] or dummy settings actually in its own column 04:22 <+bridge> [ddnet] since it's not an option it's a toggle 04:22 <+bridge> [ddnet] Colo-Colo: 04:22 <+bridge> [ddnet] abcqwerty: 09:59 <+bridge> [ddnet] when does one delete passwort reset tokens from the database? 10:00 <+bridge> [ddnet] I mean yea when they are used. But I feel like every coding tutorial out there leaves unused tokens dangeling forever 10:00 <+bridge> [ddnet] what is recommended a cron job that wipes old tokens? Or on a new request clear all old tokens. 10:02 <+bridge> [ddnet] chillerdragon 10:02 <+bridge> [ddnet] if u use something like uuids for tokens 10:02 <+bridge> [ddnet] or the token is long enough 10:02 <+bridge> [ddnet] its rly hard to get a token like this 10:02 <+bridge> [ddnet] again 10:02 <+bridge> [ddnet] so it doesnt matter 10:02 <+bridge> [ddnet] and u can keep it for auditing 10:02 <+bridge> [ddnet] ah no its not about security more about housekeeping 10:02 <+bridge> [ddnet] auditing i guess 10:02 <+bridge> [ddnet] i feel like my database gets spammed when people mess with it 10:03 <+bridge> [ddnet] xd 10:03 <+bridge> [ddnet] so its a audit feature to keep it forever? 10:03 <+bridge> [ddnet] not a DoS bug 10:03 <+bridge> [ddnet] eh 10:03 <+bridge> [ddnet] you can build ur app logic to allow reset after x days of resetting i guess 10:03 <+bridge> [ddnet] or just delete it 10:03 <+bridge> [ddnet] idk 10:04 <+bridge> [ddnet] i dont think a db row with a token and a timestamp uses much space 10:05 <+bridge> [ddnet] space is probably fine i am just too noob with databases to understand lookup times 10:05 <+bridge> [ddnet] when and how tho? 10:05 <+bridge> [ddnet] (@Ryozuki) 10:07 <+bridge> [ddnet] delete it when its used? 10:07 <+bridge> [ddnet] and the unused ones? 10:07 <+bridge> [ddnet] ah 10:07 <+bridge> [ddnet] lets say one dude spam creates tokens and never uses them 10:07 <+bridge> [ddnet] then after some time i guess 10:07 <+bridge> [ddnet] and who runs the code? 10:07 <+bridge> [ddnet] you 10:08 <+bridge> [ddnet] a cronjob or on a request? 10:08 <+bridge> [ddnet] on my app i have a thread 10:08 <+bridge> [ddnet] so a sidejob 10:08 <+bridge> [ddnet] ye 10:08 <+bridge> [ddnet] in the app is cool yea 10:08 <+bridge> [ddnet] Extremely fast, way faster than needed unless you host a very large site 10:08 <+bridge> [ddnet] yea thought so 10:08 <+bridge> [ddnet] i mean nobody aint gonna never reset any no passwords on mi site anyways 10:08 <+bridge> [ddnet] ur table is pros user_id token and timestamp, just add a index to token 10:08 <+bridge> [ddnet] and ur good to go 10:09 <+bridge> [ddnet] im just wondering what the good style is 10:09 <+bridge> [ddnet] probs* 10:09 <+bridge> [ddnet] You can also have a hash column in mysql to get o(1) lookups 10:09 <+bridge> [ddnet] same in sqlite? 10:09 <+bridge> [ddnet] too lazy to run a mysql server 10:09 <+bridge> [ddnet] postgres best 10:10 <+bridge> [ddnet] Idk if sqlite has hash columns but it can definitely have indexes which will give you o(logn) lookup. Definitely good enough until very large n 10:10 <+bridge> [ddnet] o(1) lookup sounds unrealisitic tbh \:D 10:10 <+bridge> [ddnet] i know database coders are wizards but how 10:12 <+bridge> [ddnet] does something speak against redis? 10:12 <+bridge> [ddnet] chillerdragon wants to optimize for millions of users when he is the only one using it :feelsbadman: 10:12 <+bridge> [ddnet] Well it is O(n/k) on average where k is the average bucket size 10:12 <+bridge> [ddnet] i think redis is for distributed caching right 10:12 <+bridge> [ddnet] i prefer having caching inside ur app if ur not gonna make it distributed 10:12 <+bridge> [ddnet] i have no clue what redis is for 10:12 <+bridge> [ddnet] redis should have similar performance to a mysql hash column but its in memory so that should help 10:12 <+bridge> [ddnet] its a in memory db 10:12 <+bridge> [ddnet] but i have it in my codebase already 10:12 <+bridge> [ddnet] what r u doing btw? 10:12 <+bridge> [ddnet] Redis is an in memory blazing fast key value store 10:13 <+bridge> [ddnet] passwort reset for teewoods game server accounts 10:14 <+bridge> [ddnet] teewoods 10:14 <+bridge> [ddnet] wat dat 10:14 <+bridge> [ddnet] Redis is good for caching stuff too 10:14 <+bridge> [ddnet] https://www.urbandictionary.com/define.php?term=teewoods 10:14 <+bridge> [ddnet] i use redis for authed sessions 10:15 <+bridge> [ddnet] followed some soydev nodejs tut \:D 10:15 <+bridge> [ddnet] i think using redis is a overkill 10:15 <+bridge> [ddnet] what lang are u using 10:15 <+bridge> [ddnet] it werks 10:15 <+bridge> [ddnet] i should rewrite in bash 10:15 <+bridge> [ddnet] nodejs is bloat 10:15 <+bridge> [ddnet] use rust 10:16 <+bridge> [ddnet] rust too hard 10:16 <+bridge> [ddnet] i wonder 10:16 <+bridge> [ddnet] but if redis is only key and value i feel like i miss a column 10:16 <+bridge> [ddnet] userid, token, expiredate 10:17 <+bridge> [ddnet] eh 10:17 <+bridge> [ddnet] key can be ur token 10:17 <+bridge> [ddnet] or do i abuse the value to store multiple values 10:17 <+bridge> [ddnet] then a json object with userid and expiredate 10:17 <+bridge> [ddnet] thats how i would do it 10:17 <+bridge> [ddnet] i see 10:17 <+bridge> [ddnet] hack 10:17 <+bridge> [ddnet] no 10:17 <+bridge> [ddnet] its the most logical way 10:17 <+bridge> [ddnet] nobo 10:17 <+bridge> [ddnet] sorry 5head 10:18 <+bridge> [ddnet] but will u rly store 10:18 <+bridge> [ddnet] that in redis? 10:18 <+bridge> [ddnet] does ur redis persist 10:18 <+bridge> [ddnet] data 10:18 <+bridge> [ddnet] tbh i have no clue wat my redis does 10:19 <+bridge> [ddnet] redis is a database 10:19 <+bridge> [ddnet] but only in memory 10:19 <+bridge> [ddnet] once u shutdown redis 10:19 <+bridge> [ddnet] u lose all 10:19 <+bridge> [ddnet] but since i went through the trouble of apt install redis-server and redis-server & i might as well use it 10:19 <+bridge> [ddnet] thats why its good for caching stuff 10:19 <+bridge> [ddnet] its an actual server running 10:19 <+bridge> [ddnet] but not for storing data meant for long time 10:21 <+bridge> [ddnet] yea those tokens are not meant for long time right? \:D 10:21 <+bridge> [ddnet] Why are JWTs so popular... 10:22 <+bridge> [ddnet] some tut mentiont JWT i never heard of it 10:22 <+bridge> [ddnet] Why would you want to store outdated data on the users browser even if you can trust that it's not fake? 10:23 <+bridge> [ddnet] ?xd 10:24 <+bridge> [ddnet] JWTs are signed cookies basically. They contain user information. The user sends them instead of some short random token and you can use the data inside the token 10:24 <+bridge> [ddnet] Which sounds like a good idea, until you want to ban people 10:25 <+bridge> [ddnet] so when the user changes browser tokens get invalid 10:37 <+bridge> [ddnet] oh yikes so redis fills my ram 10:37 <+bridge> [ddnet] i got 86 session tokens already from a unused site 10:37 <+bridge> [ddnet] that seems wrong 10:41 <+bridge> [ddnet] ? 10:41 <+bridge> [ddnet] its not a bad idea, u just dont store the is banned info in the token 10:42 <+bridge> [ddnet] i have more diskspace than ram 10:42 <+bridge> [ddnet] ah u on JWT 10:42 <+bridge> [ddnet] chillerdragon im using jwt, i use a long lived token called "refresh token" its stored in a http only cookie, which means js cant access it, when you login the server sets this http only cookie 10:42 <+bridge> [ddnet] then the client calls a refresh endpoint and gets a session token 10:42 <+bridge> [ddnet] which lasts e.g 15 mins 10:43 <+bridge> [ddnet] this token can be read by javascript 10:43 <+bridge> [ddnet] and u need to use it on api calls 10:43 <+bridge> [ddnet] http only cookie sounds neat so no js code can steal it 10:43 <+bridge> [ddnet] never heard of that either 10:43 <+bridge> [ddnet] yeah 10:43 <+bridge> [ddnet] gosh my web knowledge is so little 10:43 <+bridge> [ddnet] :D 10:53 <+bridge> [ddnet] Which means you need a roundtrip to the db anyway. Might aswell get the entire user object 10:53 <+bridge> [ddnet] yeah 10:53 <+bridge> [ddnet] i only store the id 10:53 <+bridge> [ddnet] u can cache it 10:53 <+bridge> [ddnet] I guess just the id would work. One less mapping to look up 13:42 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/869907717903495168/ComicCode.png 13:43 <+bridge> [ddnet] https://realdougwilson.com/writing/coding-with-character 13:46 <+bridge> [ddnet] i actually dont hate comic code 13:48 <+bridge> [ddnet] cascadia code is one of my favorite fonts 13:49 <+bridge> [ddnet] but i use fira code bolded right now 13:49 <+bridge> [ddnet] i use jetbrains mono 13:50 <+bridge> [ddnet] dejavu sans mono or bust 13:53 <+bridge> [ddnet] i like jetbrains mono but it feels too squishy to me 13:53 <+bridge> [ddnet] dejavu sans mono is pretty nice 13:55 <+bridge> [ddnet] my eyes are just so used to fira lol 13:55 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/869910933894467594/unknown.png 14:11 <+bridge> [ddnet] rsync over a 1g connection is so much more pleasant 14:16 <+bridge> [ddnet] I should have been born in south korea where 1g home connections are common 😦 14:25 <+bridge> [ddnet] (Just observing the terminal where the rsync is happening I transferred about a gigabyte of logs over ssh 😄 ) 14:30 <+bridge> [ddnet] I have a bit of a playful font as well 14:30 <+bridge> [ddnet] image.png 14:30 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/869919715773022298/image.png 14:43 <+bridge> [ddnet] looks like operator mono but idk 15:12 <+bridge> [ddnet] Pff you all mainstream with your fixed with fonts and IDE's and vim 15:12 <+bridge> [ddnet] image.png 15:12 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/869930373948276746/image.png 15:12 <+bridge> [ddnet] I use LibreOffice Writer like real OGs do 15:16 <+bridge> [ddnet] [Edit](https://discord.com/channels/252358080522747904/293493549758939136/869930302825443328): Pff you all mainstream with your fixed width fonts and IDE's and vim 15:19 <+bridge> [ddnet] nice edit xd 15:20 <+bridge> [ddnet] as i know it possible to edit webhook messages 15:20 <+bridge> [ddnet] Here on out you are banned from contributing to ddnet 15:20 <+bridge> [ddnet] strange bridge bot 17:50 <+bridge> [ddnet] @Learath2 https://docs.hetzner.com/general/others/ipv4-pricing/ 17:50 <+bridge> [ddnet] ipv4 gg 17:50 <+bridge> [ddnet] > We have tried hard to avoid passing on these higher prices to our customers, and have acceped the economic loss until now. However, the prices have increased so dramatically that we can no longer do this. We unfortunately must increase our prices. 17:51 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/869970294738149476/unknown.png 17:52 <+bridge> [ddnet] 152€ setup fee, damn 17:52 <+bridge> [ddnet] and my isp still has no ipv6 support 17:53 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/869970750382153732/unknown.png 17:55 <+bridge> [ddnet] im sure this can increase to 80% with major isps getting it 17:55 <+bridge> [ddnet] since in most countries nearly everyone uses 2-3 isps 17:55 <+bridge> [ddnet] different* 20:09 <+bridge> [ddnet] chillerdragon: this is the most cursed shit i have seen 20:09 <+bridge> [ddnet] and it' 20:09 <+bridge> [ddnet] it's not even monospace 20:10 <+bridge> [ddnet] can the bridge handle edits and replies yet? 20:10 <+bridge> [ddnet] or is that not a thing 20:10 <+bridge> [ddnet] i think xfinity has had it for a while, so my ipv4 is kinda generated on a need basis 20:10 <+bridge> [ddnet] or calculated somehow, i really cant remember how it works 23:48 <+bridge> [ddnet] I can reply, edit and see your edits but I can sadly not see your replys \:( 23:48 <+bridge> [ddnet] (@lynn) 23:59 <+bridge> [ddnet] ohh okay thx