Guild icon
DDraceNetwork
Development / developer
Development discussion. Logged to https://ddnet.org/irclogs/ Connected with DDNet's IRC channel, Matrix room and GitHub repositories — IRC: #ddnet on Quakenet | Matrix: #ddnet-developer:matrix.org GitHub: https://github.com/ddnet
Between 2024-07-22 00:00 and 2024-07-23 00:00
Avatar
ws-client BOT 2024-07-22 00:19
<ChillerDragon> For someone big on compatibility I sometimes have the feeling you want to break teeworlds compatibility just for the sake of it @heinrich5991
00:19
<ChillerDragon> Every time I mention doing something the same way as teeworlds you shutdown and argue against me.
00:20
<ChillerDragon> When I proposed to switch to standardized json for auto mappers like teeworlds does it you declined the proposal.
00:20
<ChillerDragon> When I proposed the colored broadcast format from 0.7 you requested to not do it like teeworlds but use something more standardized like html.
Avatar
Agreed, too biased
Avatar
based
Avatar
whats the benefit of json for automappers btw
02:08
why was it changed
Avatar
chillerdragon BOT 2024-07-22 02:10
idk why it was changed but the benefit is that json is a standardized format. So you can work on it with existing tooling. Parse it with code using existing libraries. Have syntax highlight in your editor. Lint it with json checkers.
Avatar
A date-time library for Rust that encourages you to jump into the pit of success. - BurntSushi/jiff
Avatar
Avatar
heinrich5991
cool. ty ❤️
Jupstar ✪ 2024-07-22 06:09
but tbh the bench look sus, last time i did them they didnt optimize the loops away, seems like rust/llvm also improved in the last 1.5 years ^^ (should try playing around with black_box) (edited)
Avatar
Jupstar ✪ 2024-07-22 06:11
using something else than UTC except for UI display always sucks change my mind 😬
06:12
it's just always trouble to think about timezones and shit xD
06:12
and on UI display u can often simply do "to_system_time"
Avatar
MilkeeyCat 2024-07-22 06:14
storing time in future is pain pepeW
Avatar
Avatar
MilkeeyCat
storing time in future is pain pepeW
Jupstar ✪ 2024-07-22 06:15
when do you work on std::time module for your language
Avatar
Avatar
Jupstar ✪
when do you work on std::time module for your language
MilkeeyCat 2024-07-22 06:15
we don't need time 😬
Avatar
Avatar
MilkeeyCat
we don't need time 😬
Jupstar ✪ 2024-07-22 06:15
tru
Avatar
Jupstar ✪ 2024-07-22 07:20
@Ryozuki have you ever seriously worked with the black_box function?
Avatar
hi jupstar
Avatar
Jupstar ✪ 2024-07-22 07:23
i have to say i find it bit hard to directly understand wtf it is doing: e.g. let _ = std::hint::black_box(v); vs let a = v; std::hint::black_box(a); already produces significantly different results xD (ran it a few times only tho) #iterate indexmap took 131ns: vec took 120ns: hashmap took 340ns: linked-hashmap took 230ns: fx hashmap took 310ns: indexmap (values only) took 150ns: linked-hashmap (with view) took 200ns: linked-hashmap (values only) took 200ns: fx hashmap (values only) took 321ns: vs #iterate indexmap took 61ns: vec took 80ns: hashmap took 251ns: linked-hashmap took 141ns: fx hashmap took 240ns: indexmap (values only) took 80ns: linked-hashmap (with view) took 130ns: linked-hashmap (values only) took 120ns: fx hashmap (values only) took 190ns: (edited)
Avatar
Avatar
Ewan
hi jupstar
Jupstar ✪ 2024-07-22 07:24
hello pro
Avatar
how are u pro
Avatar
Jupstar ✪ 2024-07-22 07:26
I'm fine and you pro
Avatar
alright
07:27
about to set up windows manager some more
Avatar
gm pros
Avatar
Avatar
Jupstar ✪
i have to say i find it bit hard to directly understand wtf it is doing: e.g. let _ = std::hint::black_box(v); vs let a = v; std::hint::black_box(a); already produces significantly different results xD (ran it a few times only tho) #iterate indexmap took 131ns: vec took 120ns: hashmap took 340ns: linked-hashmap took 230ns: fx hashmap took 310ns: indexmap (values only) took 150ns: linked-hashmap (with view) took 200ns: linked-hashmap (values only) took 200ns: fx hashmap (values only) took 321ns: vs #iterate indexmap took 61ns: vec took 80ns: hashmap took 251ns: linked-hashmap took 141ns: fx hashmap took 240ns: indexmap (values only) took 80ns: linked-hashmap (with view) took 130ns: linked-hashmap (values only) took 120ns: fx hashmap (values only) took 190ns: (edited)
Is it atleast consistent that one is significantly slower? You probably should run this in a loop and take the mean until the mean stabilizes
Avatar
Avatar
Learath2
Is it atleast consistent that one is significantly slower? You probably should run this in a loop and take the mean until the mean stabilizes
Jupstar ✪ 2024-07-22 07:51
i ran it few times and the times are always similar, so yes one was slower
07:51
and actually i'd have thought the second should be slower if at all
07:52
that confuses me additionally... but maybe it's about that the second is not used as a result and stays unused or smth xd
07:53
epyc
Avatar
Jupstar ✪ 2024-07-22 07:53
@Learath2 have u ever analyzed cache misses and got any information out of it?
Avatar
i now know tablegen
Avatar
Avatar
Jupstar ✪
@Learath2 have u ever analyzed cache misses and got any information out of it?
Jupstar ✪ 2024-07-22 07:53
like actually improved stuff with the knowledge
Avatar
Avatar
Jupstar ✪
@Learath2 have u ever analyzed cache misses and got any information out of it?
Only once while messing around with trying to optimize ban lookups
07:55
I didn’t exactly get better code but it made me understand why a certain idea that seemed promising performed like shit 😄
kek 1
Avatar
Avatar
Jupstar ✪
that confuses me additionally... but maybe it's about that the second is not used as a result and stays unused or smth xd
Ah, the second one is completely wrong that’s why. You need to use a value that is blackboxed. In the second one you just black box sth then you do nothing with it
Avatar
Avatar
Learath2
Ah, the second one is completely wrong that’s why. You need to use a value that is blackboxed. In the second one you just black box sth then you do nothing with it
Jupstar ✪ 2024-07-22 08:00
sure but shouldnt black box still return the var volatile?
Avatar
Avatar
Jupstar ✪
sure but shouldnt black box still return the var volatile?
You just discard what it returns
Avatar
Jupstar ✪ 2024-07-22 08:00
in the first i also don't do anything with the result xD
08:00
let _ = is easily a discard
Avatar
The assignment has to be done for the first one because the compiler probably can’t assume anything about _ even though it’s a discard label
Avatar
heinrich5991 2024-07-22 08:38
I don't know why they don't perform the same
08:38
the first one drops v
08:38
the second one moves v into a and then drops a
08:39
I woulld have thought that it optimizes to the same code
Avatar
Avatar
heinrich5991
the first one drops v
I'm guessing it simply can't drop v immediately because of some quirk of black_box that's not exactly intuitive
09:24
To test my hypothesis I would just copy paste that line over and over. It should get worse and worse
Avatar
Jupstar ✪ 2024-07-22 09:29
i'll leave it for now anyway. I have to focus on other things than micro benchmarks for now. But someday i want to watch a stream of @Learath2 showing all tricks to find bottlenecks on linux. Be it over sampling for a certain amount of time, or benching the whole app or finding cache misses xdd I tried so many tools but never really found something insanely useful and often they are not really intuitive or easy to use 😄
Avatar
Avatar
Jupstar ✪
i'll leave it for now anyway. I have to focus on other things than micro benchmarks for now. But someday i want to watch a stream of @Learath2 showing all tricks to find bottlenecks on linux. Be it over sampling for a certain amount of time, or benching the whole app or finding cache misses xdd I tried so many tools but never really found something insanely useful and often they are not really intuitive or easy to use 😄
Perf is my beloved
Avatar
Avatar
Jupstar ✪
i have to say i find it bit hard to directly understand wtf it is doing: e.g. let _ = std::hint::black_box(v); vs let a = v; std::hint::black_box(a); already produces significantly different results xD (ran it a few times only tho) #iterate indexmap took 131ns: vec took 120ns: hashmap took 340ns: linked-hashmap took 230ns: fx hashmap took 310ns: indexmap (values only) took 150ns: linked-hashmap (with view) took 200ns: linked-hashmap (values only) took 200ns: fx hashmap (values only) took 321ns: vs #iterate indexmap took 61ns: vec took 80ns: hashmap took 251ns: linked-hashmap took 141ns: fx hashmap took 240ns: indexmap (values only) took 80ns: linked-hashmap (with view) took 130ns: linked-hashmap (values only) took 120ns: fx hashmap (values only) took 190ns: (edited)
show code
09:42
of how u use it
09:42
more context
09:42
black box is mainly to not let compiler inline and const propagate
Avatar
Jupstar ✪ 2024-07-22 09:42
it just inside a iter().for_each
Avatar
why dont u put it in godbolt
Avatar
Jupstar ✪ 2024-07-22 09:43
i am too lazy for now xd
Avatar
but ultimately, as the path says, its a hint
Avatar
Jupstar ✪ 2024-07-22 09:43
yeah
09:43
was just surprised
09:44
maybe llvm dev ryo would be like: that is expected
09:44
pew pew
Avatar
Avatar
Jupstar ✪
i have to say i find it bit hard to directly understand wtf it is doing: e.g. let _ = std::hint::black_box(v); vs let a = v; std::hint::black_box(a); already produces significantly different results xD (ran it a few times only tho) #iterate indexmap took 131ns: vec took 120ns: hashmap took 340ns: linked-hashmap took 230ns: fx hashmap took 310ns: indexmap (values only) took 150ns: linked-hashmap (with view) took 200ns: linked-hashmap (values only) took 200ns: fx hashmap (values only) took 321ns: vs #iterate indexmap took 61ns: vec took 80ns: hashmap took 251ns: linked-hashmap took 141ns: fx hashmap took 240ns: indexmap (values only) took 80ns: linked-hashmap (with view) took 130ns: linked-hashmap (values only) took 120ns: fx hashmap (values only) took 190ns: (edited)
v is not copy right?
Avatar
Jupstar ✪ 2024-07-22 09:44
yeah it's a reference
Avatar
Compiler Explorer is an interactive online compiler which shows the assembly output of compiled C++, Rust, Go (and many more) code.
09:49
am i doing it correct?
09:49
looks the same xd
09:49
missing context
Avatar
Jupstar ✪ 2024-07-22 09:49
yes
Avatar
heinrich5991 2024-07-22 09:56
@Jupstar ✪ can you try black_box(&result) instead?
Avatar
Jupstar ✪ 2024-07-22 10:05
it doesnt do a copy refering the ghost code in my editor if that is your assumption
Avatar
Avatar
Jupstar ✪
it doesnt do a copy refering the ghost code in my editor if that is your assumption
heinrich5991 2024-07-22 10:06
not sure if I understand you. black_box(result) has to move result around
10:06
black_box(&result) doesn't have to do that
Avatar
Jupstar ✪ 2024-07-22 10:07
but what is result in your example
10:07
iter().for_each() gives a ref
Avatar
heinrich5991 2024-07-22 10:07
let _ = hint::black_box(&v);
Avatar
Jupstar ✪ 2024-07-22 10:07
i never deref it
Avatar
heinrich5991 2024-07-22 10:08
ah
Avatar
Jupstar ✪ 2024-07-22 10:08
but in any case, maybe i got simply unlucky and got a bad cpu core
10:08
the bench results alter too heavily
10:08
dont want to do science rn xd
10:09
i keep fx hashmap in mind if i ever have a bottleneck in std hashmap
10:09
and vec whenever possible
10:10
and linked hashmap when i need OG data structure
Avatar
heinrich5991 2024-07-22 10:10
there's a difference between std hashmap and fx hashmap
Avatar
Jupstar ✪ 2024-07-22 10:10
only thing i really hate about hashmaps is that their order is random
Avatar
heinrich5991 2024-07-22 10:10
std hashmap is resilient against evil data
10:10
fx hashmap can suffer catastrophic slowdowns on evil data
10:10
AFAIK
10:11
not sure about linked hashmap
Avatar
Jupstar ✪ 2024-07-22 10:11
and std hashmap does it by using some kind of RNG?
10:11
i once read about that
10:12
also the reason the order is never constant for a std hashmap
Avatar
heinrich5991 2024-07-22 10:12
it uses an RNG and a hash function that is resistant
Avatar
Jupstar ✪ 2024-07-22 10:13
@heinrich5991 by the way, how is quic doin?
Avatar
heinrich5991 2024-07-22 10:13
got sidetracked into backcompat stuff 😦
Avatar
Jupstar ✪ 2024-07-22 10:13
i see
Avatar
heinrich5991 2024-07-22 10:13
currently improving libtw2 support for extended items in snapshots
10:13
hopefully that's the last thing necessary (edited)
Avatar
Jupstar ✪ 2024-07-22 10:14
already thought about master server integration?
Avatar
heinrich5991 2024-07-22 10:15
of quic? yes
Avatar
Jupstar ✪ 2024-07-22 10:15
i wonder if we could also create certificates by the master server for quic servers somehow. it's at least partially a problem that you have to be part of the server list rn 😄
10:16
but i also don't want to have servers to require certbots and stuff just to run
Avatar
heinrich5991 2024-07-22 10:16
yes, me too
10:16
but requiring the public key of the server to connect sounds sane to me
10:16
you can either get it from the mastersrv, or from your server hoster directly
10:17
(it's printed in the server console)
Avatar
Jupstar ✪ 2024-07-22 10:17
server hoster directly
over https or what
Avatar
heinrich5991 2024-07-22 10:17
e.g. ddnet-17+quic://127.0.0.1:8303#serverpublickeygoeshere (edited)
Avatar
127.0.0.1:8303 is not a DDraceNetwork or Community server. (edited)
Avatar
heinrich5991 2024-07-22 10:17
it's just part of the address
Avatar
Jupstar ✪ 2024-07-22 10:17
i dunno if i like that
10:18
that sounds to easy to alter
Avatar
heinrich5991 2024-07-22 10:18
altered by who?
Avatar
Jupstar ✪ 2024-07-22 10:18
well by an attacker
10:19
if he sends it to you
Avatar
heinrich5991 2024-07-22 10:19
what can the attacker do? they can send you an arbitrary IP address and an arbitrary public key
Avatar
Jupstar ✪ 2024-07-22 10:19
server hoster directly
^ talking about this way
Avatar
heinrich5991 2024-07-22 10:19
previously, they person could already send you to an arbitrary IP address
10:20
so the new thing is that they could change the key
10:20
if they're on your network path, then they could pretend to be a server with a known IP address but with the wrong public key (edited)
Avatar
Jupstar ✪ 2024-07-22 10:20
yep
10:20
on public wifi they could do MITM i'd say
10:21
or some internet they control
Avatar
heinrich5991 2024-07-22 10:21
if the victim verifies the IP address to be legitimate (edited)
10:21
otherwise the attacker could just send a wrong IP address
Avatar
Jupstar ✪ 2024-07-22 10:22
but how does he verify that?
10:22
if the attacker controls the routing
Avatar
heinrich5991 2024-07-22 10:22
yeye, I mean this is only an attack if the victim verifies the IP address to be legitimate
Avatar
Jupstar ✪ 2024-07-22 10:23
ah ok
Avatar
heinrich5991 2024-07-22 10:23
otherwise the attacker could have just sent the victim to another IP address that the attacker controls directly, with no network access necessary
Avatar
Jupstar ✪ 2024-07-22 10:36
i defs wonder how secure servers, that for example are not part of a community, are anyway
10:37
the master server also only uses the IP of the https connection i guess
10:38
or even without registering, maybe ppl still get scammed for connecting to a fake ddnet server
10:40
but my idea kinda was the master server creates certificates for any server that wants one (by ip and the request's public key) then the client could verify that the server is real without requiring it in the URL
10:45
reinventing the cert bot lmao
10:45
just unsafer and no domains
Avatar
I found something cool, git worktree add you can check out any branch you want as a separate folder without disturbing your current work
Avatar
Avatar
Learath2
I found something cool, git worktree add you can check out any branch you want as a separate folder without disturbing your current work
heinrich5991 2024-07-22 11:01
yea, I often use this
Avatar
Avatar
Jupstar ✪
but my idea kinda was the master server creates certificates for any server that wants one (by ip and the request's public key) then the client could verify that the server is real without requiring it in the URL
idk what this adds, if the attacker owns the ip, he can get a certificate for it, if the attacker doesn't own the ip, what good is getting a client to route to it traffic that it can't even decrypt?
Avatar
heinrich5991 2024-07-22 11:02
it'd allow the client to connect to bare IPs
11:03
this is assuming the masterserver's internet connction is more securer than the client's
11:03
which isn't entirely unreasonable, but we currently use proxies for the masterserver which could intercept these requests
Avatar
Oh wait, I did not know quic would come with no connecting to bare ips anymore clause 😄
Avatar
Jupstar ✪ 2024-07-22 11:09
the only problem is to verify that the server's public key belongs to it
Avatar
Avatar
Learath2
Oh wait, I did not know quic would come with no connecting to bare ips anymore clause 😄
heinrich5991 2024-07-22 11:10
you can connect to bare IPs together with a pubkey in my impl (edited)
Avatar
Well ips I can type, pubkeys would be pretty challenging
Avatar
heinrich5991 2024-07-22 11:11
where do you get the IP address from?
11:11
can you also copy-paste the pubkey from there?
Avatar
Jupstar ✪ 2024-07-22 11:11
you could at least not say them out loud in teamspeak/dc anymore 😂
Avatar
heinrich5991 2024-07-22 11:11
^^
Avatar
Avatar
Learath2
Well ips I can type, pubkeys would be pretty challenging
heinrich5991 2024-07-22 11:12
I was planning to make the client fetch the public key from the mastersrv if the server is in the list
11:12
but wouldn't work for local servers
11:12
the LAN tab is also an open challenge
Avatar
Avatar
heinrich5991
but wouldn't work for local servers
How is this handled in the wild with other QUIC stuff?
Avatar
Avatar
Learath2
How is this handled in the wild with other QUIC stuff?
heinrich5991 2024-07-22 11:13
certificates
11:13
publicly trusted certificates
Avatar
Avatar
heinrich5991
the LAN tab is also an open challenge
Jupstar ✪ 2024-07-22 11:13
the server could be part of the client's process
Avatar
Local servers and LAN I would honestly just allow to be insecure, but I don't even know if QUIC is allowed to not be secure
Avatar
Jupstar ✪ 2024-07-22 11:13
ok only for a local server
Avatar
Avatar
Learath2
Local servers and LAN I would honestly just allow to be insecure, but I don't even know if QUIC is allowed to not be secure
heinrich5991 2024-07-22 11:14
the problem is that a local attacker could fake an online server into the server list ^^
Avatar
Jupstar ✪ 2024-07-22 11:14
the question is how secure our traffic must be anyway
Avatar
heinrich5991 2024-07-22 11:14
I'd try to make it as secure as possible, without compromising on usability too much
11:14
e.g. it's very nice that chat will become encrypted using this
Avatar
Jupstar ✪ 2024-07-22 11:14
client auth is defs neat for making sure rcon and stuff is secure
Avatar
Avatar
heinrich5991
the problem is that a local attacker could fake an online server into the server list ^^
How? I assume local servers would be in a reserved ip range. How could one register a server that appears to be from one of those?
Avatar
Avatar
Learath2
How? I assume local servers would be in a reserved ip range. How could one register a server that appears to be from one of those?
heinrich5991 2024-07-22 11:16
I guess the client could try to figure out the local network range and only allow servers from there
11:16
sounds kinda tricky though
Avatar
Avatar
heinrich5991
I guess the client could try to figure out the local network range and only allow servers from there
Why is the masterserver allowing any reserved range to register? How is this attacker passing the challenge with a reserved ip?
Avatar
heinrich5991 2024-07-22 11:20
the victim sends a broadcast on the LAN. the attacker sends a packet back from 176.9.114.238 (ger2.ddnet.org) with their own public key. the client connects to 176.9.114.238 but with the wrong public key
Avatar
How is his packet even making it to us? I thought we were using the ip from the https connection
Avatar
heinrich5991 2024-07-22 11:20
the attacker intercepts the packets and has their own server
Avatar
Avatar
heinrich5991
the victim sends a broadcast on the LAN. the attacker sends a packet back from 176.9.114.238 (ger2.ddnet.org) with their own public key. the client connects to 176.9.114.238 but with the wrong public key
I see
Avatar
ChillerDragon: have you ever tried https://github.com/Nheko-Reborn/nheko ? (edited)
Desktop client for Matrix using Qt and C++20. Contribute to Nheko-Reborn/nheko development by creating an account on GitHub.
Avatar
Jupstar ✪ 2024-07-22 11:31
i have it installed
Avatar
Is it good? :o
Avatar
Jupstar ✪ 2024-07-22 11:31
it's fast
11:31
looks similar to telegram
Avatar
oki thx
Avatar
Jupstar ✪ 2024-07-22 11:32
if u want to use the search function in matrix, this client gives it to you at good speed
11:32
all other clients take ages to decrypt older messages
11:32
horrible experience xd
Avatar
today im getting my car
12:53
owo
Avatar
gg
12:53
whic
Avatar
i already said before but its volkswagen tcross
12:54
inb4 critics
12:54
xd
12:54
from 2019
Avatar
das auto
Avatar
german engineering kek
Avatar
best engineering kek
Avatar
it has 46km
12:54
i got it for 20k€
Avatar
k
12:54
?
Avatar
second hand
Avatar
46k or literally 46
Avatar
46k km
12:55
sorry
12:55
xd
Avatar
ah
Avatar
im dumb
Avatar
xd
Avatar
heinrich5991 2024-07-22 12:55
46 Mm :p
Avatar
that's very good tho
12:55
its also fully equiped
Avatar
seat heating?
Avatar
ok idk about that
12:55
xd
Avatar
it's so op in winter
12:55
but
Avatar
i didnt know that existed
Avatar
what i really want for the first 5 minutes of driving in winter: steering wheel heater xdxd
Avatar
it exsists
12:56
especially on motorcycles
12:56
this video shows this
Avatar
Avatar
Ryozuki
i didnt know that existed
never had seat heating
12:56
???
Avatar
so it probs has
Avatar
Avatar
Ryozuki
so it probs has
ye (edited)
Avatar
i never had cars bro
12:56
xd
Avatar
aaaa
Avatar
my first
Avatar
bro
Avatar
Jupstar ✪ 2024-07-22 12:56
@Ryozuki isnt barcelona super cool bcs it closes roads to let ppl play there instead of cars driving around
Avatar
bruder
Avatar
seat heating is OP
Avatar
Jupstar ✪ 2024-07-22 12:56
boomer
Avatar
bruder
Avatar
Avatar
Jupstar ✪
@Ryozuki isnt barcelona super cool bcs it closes roads to let ppl play there instead of cars driving around
ye on weekends in some places
12:57
but main roads are open
Avatar
bruder matthäus
Avatar
i also think this car can drive in center barcelona
12:57
because there is a law that high emission cars cant
Avatar
:o
12:58
yea german car from 2019 should be fine
12:58
General information The vehicle categories affected by this restriction will be light vehicles including motorcycles and mopeds (L), cars (M1) without an environmental label: Pre-Euro 3 standard petrol cars (M1) (usually with pre-2000 license plates) and pre-Euro 4 standard diesel cars (with pre-2005 or 2006 license plates). Pre-Euro 2 motorcycles and mopeds (category L) (usually with pre-2003 license plates). From the 1 April 2021, pre-Euro 3 standard petrol vans (category N1) (usually with pre-2000 license plates) and pre-Euro 4 standard diesel vans (with pre-2005 or 2006 license plates). From the 1 January 2022, pre-Euro 4 standard lorries (category N2 and N3) and light buses (M2) (usually with pre-2006 or 2007 license plates). From the 1 July 2022, pre-Euro 4 standard heavier buses and coaches (M3) (usually with pre-2006 or 2007 license plates).
Avatar
yea
12:58
even my 2011 audi has euro 4 or 5
Avatar
heinrich5991 2024-07-22 12:58
german cars are great at emission tests https://en.wikipedia.org/wiki/Volkswagen_emissions_scandal
The Volkswagen emissions scandal, sometimes known as Dieselgate or Emissionsgate, began in September 2015, when the United States Environmental Protection Agency (EPA) issued a notice of violation of the Clean Air Act to German automaker Volkswagen Group. The agency had found that Volkswagen had intentionally programmed turbocharged direct injec...
Avatar
wait
Avatar
Jupstar ✪ 2024-07-22 12:58
😬
Avatar
XD
12:59
was just about to say "ur not referring to the scandal right?" (edited)
Avatar
Jupstar ✪ 2024-07-22 12:59
my parents have an EV, which i drove a few times. but i'd say generally you dont need a car if you only drive inside your city
Avatar
apparently it has 115 g/km co2
Avatar
Jupstar ✪ 2024-07-22 13:00
tja
Avatar
"tja"
Avatar
Jupstar ✪ 2024-07-22 13:01
tja tja
13:02
the world is burning hard
Avatar
Avatar
MilkeeyCat
thonk
Jupstar ✪ 2024-07-22 13:02
yes
13:02
that sums it up perfectly
13:02
bcs i literally use it like that xD
Avatar
heinrich5991 2024-07-22 13:03
dictionary says "oh well" or "well"
Avatar
Avatar
fokkonaut
Click to see attachment 🖼️
Jupstar ✪ 2024-07-22 13:03
epyc meme moment
Avatar
What about naja?
Avatar
how do u pronounce tja?
13:03
it sounds hard in spanish
Avatar
Avatar
Teero
What about naja?
Jupstar ✪ 2024-07-22 13:03
that is, when you think you are more clever than someone else
Avatar
like ja with a t
Avatar
but ja like a german says it right? XD
Avatar
ja
Avatar
Avatar
Ryozuki
how do u pronounce tja?
Jupstar ✪ 2024-07-22 13:04
Mit diesem kostenlosen Google-Dienst lassen sich Wörter, Sätze und Webseiten sofort zwischen Deutsch und über 100 Sprachen übersetzen.
Avatar
Avatar
Ryozuki
how do u pronounce tja?
heinrich5991 2024-07-22 13:04
t-i-a, with a very short i
Avatar
ia
Avatar
Avatar
Jupstar ✪
that is, when you think you are more clever than someone else
naja, nicht wirklich
kek 2
13:04
a little bit
13:05
Naja, or na ja can be translated to “well” and is an interjection, which means it's used to express a feeling. In the case of na ja, it's used to express either agreement or doubt.
13:05
often u use it in the beginning to express disagreement
Avatar
heinrich5991 2024-07-22 13:06
doesn't have to be disagreement, can also just be "I'm thinking"
13:06
like "couldn't we just"
13:06
how do you do this? couldn't we just do xy
Avatar
naja, that's why i said "often"
Avatar
Jupstar ✪ 2024-07-22 13:06
i'd always interpret it as passive aggressiveness
Avatar
default mode 💀
Avatar
Jupstar ✪ 2024-07-22 13:06
these girls in my school, that suddenly started "naja du opfer"
kek 1
13:06
blablbal
13:06
xd
Avatar
what about "eigentlich"?
Avatar
so ur interpreting naja as passive aggressiveness but not "du opfer"?
😂 1
13:07
sounds like a broken compass to me
Avatar
Avatar
fokkonaut
so ur interpreting naja as passive aggressiveness but not "du opfer"?
Jupstar ✪ 2024-07-22 13:07
no that is true at least
13:07
🫠
Avatar
naja is not true?
Avatar
Avatar
Teero
what about "eigentlich"?
eigentlich has multiple meanings, kinda
13:07
but it's like
Avatar
Avatar
Jupstar ✪
these girls in my school, that suddenly started "naja du opfer"
I can't imagine this in a conversation. Please give an example with context xd
Avatar
Avatar
fokkonaut
eigentlich has multiple meanings, kinda
Eigentlich is eigentlich unnötig
Avatar
ye
Avatar
Ah I got it it's "actually" right?
Avatar
Avatar
Teero
I can't imagine this in a conversation. Please give an example with context xd
Jupstar ✪ 2024-07-22 13:09
u sit in school.. normal class. You say something in a discussion. Perfect girl number 1, with only best marks: "Naja, also meine Quellen sagen da was ganz anderes, NICHT WAHR HERR LEHRER, DAFÜR BEKOMME ICH EINE 1+*"
13:09
good enough?
Avatar
perfect
Avatar
Avatar
Jupstar ✪
u sit in school.. normal class. You say something in a discussion. Perfect girl number 1, with only best marks: "Naja, also meine Quellen sagen da was ganz anderes, NICHT WAHR HERR LEHRER, DAFÜR BEKOMME ICH EINE 1+*"
Poor melon. He has to go through this
Avatar
Jupstar ✪ 2024-07-22 13:10
but isnt he only teaching adults
Avatar
Avatar
Jupstar ✪
but isnt he only teaching adults
Not sure. They can be asses too
Avatar
Teero
13:10
Say eichhörnchen
Avatar
Although they are there because they want to
Avatar
Avatar
Teero
Although they are there because they want to
Jupstar ✪ 2024-07-22 13:11
yeah.. i mean we only had like 2 girls that were like that anyway
13:12
but they literally were like that xD
Avatar
Avatar
fokkonaut
Say eichhörnchen
lol 1
Avatar
r u german
Avatar
Jupstar ✪ 2024-07-22 13:12
he is as german as you
Avatar
i am from portugal
Avatar
Avatar
Teero
Click to see attachment 🖼️
"eichhörnchen"
Avatar
Jupstar ✪ 2024-07-22 13:13
portegal
Avatar
scheiß egal senegal
Avatar
Avatar
Teero
Click to see attachment 🖼️
MilkeeyCat 2024-07-22 13:14
from the whole word I just heard last letter n 😬
Avatar
Avatar
MilkeeyCat
from the whole word I just heard last letter n 😬
Turn up your volume
13:14
Ai has to speak up fr (edited)
Avatar
Jupstar ✪ 2024-07-22 13:14
i'd say teeros pronounciation was really good
13:14
many ppl cant say ch very clear
13:14
they say SCH instead
Avatar
eitsch earntschen
Avatar
Avatar
Jupstar ✪
they say SCH instead
tsch
Avatar
Jupstar ✪ 2024-07-22 13:15
manschmal
13:15
xD
13:16
we all know that person
Avatar
sadly
Avatar
Jupstar ✪ 2024-07-22 13:16
also funny are the "ebend" ppl
13:16
  • i agree
  • EBEND
Avatar
wat
13:17
wat in the saarbrücken
Avatar
Yea, i just didnt get the way jupeyy told it
Avatar
Never heard ebent before
13:18
Only eben
Avatar
Haribo macht Kinder froh und Erwachsene ebend so
lol 2
Avatar
Avatar
fokkonaut
Haribo macht Kinder froh und Erwachsene ebend so
please no
13:19
Okay I remember
Avatar
Avatar
fokkonaut
Haribo macht Kinder froh und Erwachsene ebend so
Jupstar ✪ 2024-07-22 13:19
now i have to watch ads
Avatar
Avatar
fokkonaut
Haribo macht Kinder froh und Erwachsene ebend so
You Fake portugeese
13:20
thanks youtube
Avatar
???????
13:20
wtf xD
Avatar
Jupstar ✪ 2024-07-22 13:20
who trained this AI
13:21
we
Avatar
sue google
Avatar
Avatar
Teero
You Fake portugeese
u
Avatar
Avatar
fokkonaut
Haribo macht Kinder froh und Erwachsene ebend so
can someone or some ai translate ty
Avatar
heinrich5991 2024-07-22 13:31
haribo (german brand for sweets) makes children happy, and adults, too
13:31
it's the slogan of the haribo company
13:31
Haribo GmbH & Co. KG, doing business as Haribo (German pronunciation: [ˈhaːʁiːboː], English: HARR-i-boh), is a German confectionery company founded by Hans Riegel Sr. It began in Kessenich, Bonn, Germany. The name "Haribo" is a syllabic abbreviation formed from Hans Riegel Bonn. The company created the first gummy candy in 1922 in the form of l...
Avatar
ohh
13:32
i dont like sweets
13:32
@Jupstar ✪ ddnet should strive to be like llvm, 600 prs merged in 1 week
13:32
kek
Avatar
Avatar
Ryozuki
@Jupstar ✪ ddnet should strive to be like llvm, 600 prs merged in 1 week
Jupstar ✪ 2024-07-22 13:33
wtf
Avatar
llvm is massive
13:33
also its a mono repo xd
Avatar
Jupstar ✪ 2024-07-22 13:33
i always wonder why such projects magically work
13:33
the testing infra must be really on point
Avatar
lots of tests
13:33
ye
13:34
lit - LLVM Integrated Tester
Avatar
heinrich5991 2024-07-22 13:35
the rust repo itself also has amazing testing
Avatar
soon llvm 19 rc releases
Avatar
Jupstar ✪ 2024-07-22 13:35
my tests often turn into benchmarks, bcs i dunno what to test xdd
Avatar
it has more code of mine owo brownbear
Avatar
Jupstar ✪ 2024-07-22 13:36
but writing shit tests still isnt that bad actually. you still have to design your code to be modular enough to test it like that
Avatar
Avatar
Jupstar ✪
my tests often turn into benchmarks, bcs i dunno what to test xdd
test that it works, test some edge cases you may know, and when u find a bug add a regression test so it doesnt happen
13:36
if u feel fancy u can also do property based testing
Avatar
Avatar
Ryozuki
test that it works, test some edge cases you may know, and when u find a bug add a regression test so it doesnt happen
Jupstar ✪ 2024-07-22 13:36
yeah but often it's not that easy
Avatar
Usage documentation for the proptest and proptest-derive crates
Avatar
heinrich5991 2024-07-22 13:37
e.g. test that your client can connect to your server
Avatar
Jupstar ✪ 2024-07-22 13:37
for a single algorithm it's easy ofc
Avatar
heinrich5991 2024-07-22 13:37
I don't know how to do UI tests, but e.g. firefox manages, so it must be possible
Avatar
Jupstar ✪ 2024-07-22 13:37
i mean it's defs possible
13:37
html is a clear standard
13:37
but it kinda sounds annoying
Avatar
heinrich5991 2024-07-22 13:38
that's the thing. if you have a proper test setup, then it's not annoying
Avatar
Jupstar ✪ 2024-07-22 13:38
i wonder if they "proof" the math
Avatar
heinrich5991 2024-07-22 13:38
so the question becomes how you get there
Avatar
Jupstar ✪ 2024-07-22 13:38
or do tests like in different resolutions etc.
Avatar
heinrich5991 2024-07-22 13:38
because once you have the proper test setup, then writing tests is almost as easy as testing it manually, which is what you'd have to do anyway
13:39
and this way, you don't have to test it manually over and over again
Avatar
Avatar
heinrich5991
that's the thing. if you have a proper test setup, then it's not annoying
Jupstar ✪ 2024-07-22 13:39
yeah i dunno, if it would be so good, then firefox wouldnt still render stuff often different to chromium i guess xdd
Avatar
heinrich5991 2024-07-22 13:39
hm? that seems unrelated to the test suite
13:40
you still need to fix bugs and implement features
13:40
but tests give you a clear way to see where you are
Avatar
Avatar
heinrich5991
you still need to fix bugs and implement features
Jupstar ✪ 2024-07-22 13:40
sure but that is the question, what do you actually test. you could test by taking screenshots (stupidly said) or actually test the "math"
Avatar
they also give u some level of confidence in that ur changes dont break stuff
13:40
imho the most important feature xd
Avatar
Avatar
Jupstar ✪
sure but that is the question, what do you actually test. you could test by taking screenshots (stupidly said) or actually test the "math"
heinrich5991 2024-07-22 13:40
you definitely also want to do screenshot-like testing in something like firefox
13:41
and I'm sure firefox does that
13:41
like testing an svg renderer
13:41
The Rust package manager. Contribute to rust-lang/cargo development by creating an account on GitHub.
Avatar
Avatar
Ryozuki
imho the most important feature xd
Jupstar ✪ 2024-07-22 13:41
yep
Avatar
Physics tests for ddnet would be nice to have. To actually know if any physics are changed by a pr
Avatar
there was a try for that
Avatar
heinrich5991 2024-07-22 13:41
it tests that the colored(!) output of cargo --help doesn't change
13:42
they test with a screenshot? XD
13:42
lol
13:42
xd
Avatar
Jupstar ✪ 2024-07-22 13:42
interesting
Avatar
Avatar
Teero
Physics tests for ddnet would be nice to have. To actually know if any physics are changed by a pr
heinrich5991 2024-07-22 13:42
@Zwelf is working on that
Avatar
Jupstar ✪ 2024-07-22 13:44
but anyway, the more complex your app gets the harder it is to test stuff that isnt clearly separated (e.g. code that combines all your tested components)
Avatar
Avatar
Jupstar ✪
they test with a screenshot? XD
heinrich5991 2024-07-22 13:44
they can render cargo's output to SVG, and then you can see in pull requests how cargo's output changes
Avatar
Jupstar ✪ 2024-07-22 13:44
so testing always hard task
Avatar
heinrich5991 2024-07-22 13:45
ideally, it's only the setup of the test framework that is hard
13:45
not testing individual changes
Avatar
Avatar
heinrich5991
they can render cargo's output to SVG, and then you can see in pull requests how cargo's output changes
Jupstar ✪ 2024-07-22 13:45
sure, but i'd assume that could work also with analyzing the output letters directly
Avatar
Avatar
Jupstar ✪
sure, but i'd assume that could work also with analyzing the output letters directly
heinrich5991 2024-07-22 13:45
but it looks worse in PRs ^^
Avatar
Avatar
heinrich5991
but it looks worse in PRs ^^
Jupstar ✪ 2024-07-22 13:45
XD
Avatar
heinrich5991 2024-07-22 13:46
I mean it. it lets the reviewer quickly see whether the change was bad
Avatar
Jupstar ✪ 2024-07-22 13:46
sure
Avatar
heinrich5991 2024-07-22 13:46
you might not spot this in a garbled output file
Avatar
Jupstar ✪ 2024-07-22 13:46
sounds cool for sure
13:46
i dunno if i'd have the motivation to proof our map rendering
13:46
sounds very time consuming
Avatar
ws-client BOT 2024-07-22 13:48
<ChillerDragon> @Teero I have seen it dont remember trying it
13:50
<ChillerDragon> @Jupstar ✪
13:50
<ChillerDragon> > these girls in my school, that suddenly started "naja du opfer"
13:50
<ChillerDragon> xxxxxxxxxxD
Avatar
https://ddnet.org/ranks/ Is this data available in json format?
Avatar
heinrich5991 2024-07-22 14:02
the front page? currently no
14:02
(I think) (edited)
Avatar
does anyone know a physical terminal that I can find cheap second hand?
Avatar
No, but It's available as a msgpack, http://ddnet.org/players.msgpack
Replying to @Matodor https://ddnet.org/ranks/ Is this data available in json format?
Avatar
furo: ddstats.tw only server side rendering?
14:11
the s of https was missing
Avatar
Jupstar ✪ 2024-07-22 14:12
oh wow, didnt know we had that information available
14:12
but msgpack is uff
Avatar
Yep
Replying to @Matodor furo: ddstats.tw only server side rendering?
Avatar
heinrich5991 2024-07-22 14:13
just another serialization format. rust probably has support for it
Avatar
iirc there is a serde "adapter" for it too
Avatar
Avatar
Learath2
iirc there is a serde "adapter" for it too
Yep it's in that same repo
Avatar
heinrich5991 2024-07-22 14:16
how do I convert the msgpack to json to look at it?
Avatar
Avatar
heinrich5991
how do I convert the msgpack to json to look at it?
Well idk if there is a standard tool for it, but with the crate you linked it should be trivial to deserialize then serialize again to json
Avatar
I have the following Rust code to parse the msgpack file, but it kinda sucks. https://github.com/ddstats-tw/ddstats-web/blob/eef91a9be933f161b853fc923fcd5385c2ad8246/src/points.rs
A website showing various statistics related to DDNet. - ddstats-tw/ddstats-web
Avatar
like 10 lines of rust
Avatar
heinrich5991 2024-07-22 14:19
want a command line tool. apparently there's https://aur.archlinux.org/packages/msgpack-tools, but it doesn't work for me
Avatar
Avatar
heinrich5991
just another serialization format. rust probably has support for it
Jupstar ✪ 2024-07-22 14:19
imo if you do binary formats... you don't print field names
Avatar
Avatar
Jupstar ✪
imo if you do binary formats... you don't print field names
msgpack is a slightly easier to parse binary json, it's nothing more
Avatar
Avatar
Jupstar ✪
imo if you do binary formats... you don't print field names
heinrich5991 2024-07-22 14:19
I agree that this use of non-json seems suspect
14:19
because if you're going to include the field names, you might as well just use JSON
Avatar
Avatar
heinrich5991
because if you're going to include the field names, you might as well just use JSON
Especially if you are not going to ship it over the wire
Avatar
heinrich5991 2024-07-22 14:20
well, this is kinda shipped over the wire
Avatar
Where? I think we only write it to a file then just use it from there no?
Avatar
heinrich5991 2024-07-22 14:20
well, furo uses it
14:20
.cache/yay/msgpack-tools/src/msgpack-tools-0.6/contrib/rapidjson-99ba17bd66a85ec64a2f322b68c2b9c3b77a4391/include/rapidjson/document.h:319:82: error: assignment of read-only member ‘rapidjson::GenericStringRef<CharType>::length’ 319 | GenericStringRef& operator=(const GenericStringRef& rhs) { s = rhs.s; length = rhs.length; } | ~~~~~~~^~~~~~~~~~~~
Avatar
Avatar
heinrich5991
well, furo uses it
heinrich5991 2024-07-22 14:21
presumably by downloading it
Avatar
Ah tbf the msgpack file we probably just exposed when people asked for it. IIRC it was never supposed to be external
14:21
Idk who decided that would be the format for our internal cache though
Avatar
The DDNet discord bot also uses it.
Avatar
heinrich5991 2024-07-22 14:21
probably no one, deen just did it
Avatar
Avatar
furo
The DDNet discord bot also uses it.
I don't believe it does. I remember distinctly that it calculated it's own cache tables, but maybe murpi changed that recently so not sure
14:24
could you maybe pass in a Reader instead of using the vector?
14:24
wait. you're parsing the data multiple times
14:25
why? ^^
Avatar
Replying to @Learath2 I don't believe it does. I remember distinctly that it calculated it's o…
14:25
There is multiple msgpacks in the same file. It's really annoying to parse :(
Replying to @heinrich5991 wait. you're parsing the data multiple times
Avatar
heinrich5991 2024-07-22 14:25
furo: also check out https://doc.rust-lang.org/std/fs/fn.read.html. you manually implement that operation
Avatar
Msgpacks only advantage over json imo is that everything is length prefixed. Which we really don't use here. Perhaps we could stop using it but idk if the engineering effort to touch dozens of scripts that none of us know of the top of our heads is worth it (edited)
Avatar
heinrich5991 2024-07-22 14:26
furo: you should probably just a) always parse all of it or b) split the file after downloading it
Avatar
if its between rust i would use bincode but i guess its smth ddnet provides right
14:30
im missing context
Avatar
Avatar
Ryozuki
if its between rust i would use bincode but i guess its smth ddnet provides right
yes, it's our internal cache file of all ranks "ranked"
Avatar
heinrich5991 2024-07-22 14:30
it's supposed to be an interoperable format
14:30
so language specific ones are kinda out already
Avatar
If I were to migrate it to something different I would probably go for sqlite or json
14:31
It's well structured data, so it'd fit well in sqlite. Everyone and their mothers use json for everything, so json is also a good candidate
Avatar
heinrich5991 2024-07-22 14:31
sqlite3 probably has very bad write performance
Avatar
i rly want ddnet on psql
14:32
i have a psql instance with 40gb of ram 😬
Avatar
Avatar
Ryozuki
i rly want ddnet on psql
heinrich5991 2024-07-22 14:32
completely unrelated
14:32
we're talking about a data interchange format
Avatar
Avatar
Ryozuki
i rly want ddnet on psql
I really want to abstract away all SQL out of the ddnet source code, but yes unrelated
Avatar
yeah it was a side thought
14:32
also deen wants it too
14:32
for materialize
Avatar
wasn't materialize discarded before because it wouldn't really work out without MASSIVE changes?
Avatar
are we rly doing things okay if our queries take so much we need to cache so much?
14:33
ddnet datasette is rly resource intensive
14:33
and its basically ddnet in sqlite
Avatar
This is veering very very off-topic, but I guess the original discussion is kinda settled, we all agree that it probably shouldn't be msgpack
oop 1
Avatar
Avatar
Ryozuki
i rly want ddnet on psql
Jupstar ✪ 2024-07-22 14:33
what advantage would that give? i currently use sqlx, so i can implement both. but i don't really see any super obvious reason.. Also i hate databases xd
Avatar
Jupstar ✪ 2024-07-22 14:33
i heard mysql is faster in read-only operations
Avatar
Avatar
Jupstar ✪
what advantage would that give? i currently use sqlx, so i can implement both. but i don't really see any super obvious reason.. Also i hate databases xd
for me psql is THE state of the art db
Avatar
Jupstar ✪ 2024-07-22 14:34
and mysql is less bloated
Avatar
and materialize works only with psql iirc
Avatar
Jupstar ✪ 2024-07-22 14:34
but as said i have no idea of databases
14:34
i only know what i need to know
Avatar
Avatar
meloƞ
wasn't materialize discarded before because it wouldn't really work out without MASSIVE changes?
it was discarded because deen imported our db and it required like 300gb of ram
KEKW 2
Avatar
Jupstar ✪ 2024-07-22 14:34
no nerd
Avatar
Avatar
Jupstar ✪
no nerd
we nerds
Avatar
Jupstar ✪ 2024-07-22 14:34
i am no db nerd
Avatar
casually throws in surrealDB
Avatar
Avatar
Jupstar ✪
i am no db nerd
your discord message is going to a db
14:35
get dbed
catxplosion 1
Avatar
Jupstar ✪ 2024-07-22 14:35
i know how to code SQL
14:35
and shit
Avatar
psql is also SQL
Avatar
Jupstar ✪ 2024-07-22 14:35
but the technical differences
Avatar
the only small change is the SERIAL type
Avatar
Avatar
Ryozuki
psql is also SQL
Jupstar ✪ 2024-07-22 14:35
yes most stuff seems easy to port
Avatar
sorry for interrupting! important question inc. if you have any kind of software - would you choose base (e.g gtk) or Qt? i really don't understand the difference other than Qt beeing a different Interface? - i'm asking because i've seen it quite a few times now that both option's are offered and i'm not sure which libreoffice to choose crythumbsup
Avatar
and it also has featurs like json dbs
Avatar
Jupstar ✪ 2024-07-22 14:35
and sqlx gives a general interface
Avatar
Avatar
Learath2
I really want to abstract away all SQL out of the ddnet source code, but yes unrelated
Ideally the ddnet server would just make an rpc call through some message queue rpc ranks.Insert .... Then the message routing system would take responsibility for making that happen. We'd have whatever consumer we want on ddnet.org it could be psql, mariadb or whatever newfangled bigquery magic you want
14:36
DDNet on ElasticSearch
Avatar
Jupstar ✪ 2024-07-22 14:36
so i wonder if postgresql is really worth it
14:36
like REALLY
14:36
like vulkan vs opengl
Avatar
Avatar
meloƞ
sorry for interrupting! important question inc. if you have any kind of software - would you choose base (e.g gtk) or Qt? i really don't understand the difference other than Qt beeing a different Interface? - i'm asking because i've seen it quite a few times now that both option's are offered and i'm not sure which libreoffice to choose crythumbsup
heinrich5991 2024-07-22 14:36
you probably want qt over gtk if you want good cross-platform support
Avatar
Avatar
meloƞ
sorry for interrupting! important question inc. if you have any kind of software - would you choose base (e.g gtk) or Qt? i really don't understand the difference other than Qt beeing a different Interface? - i'm asking because i've seen it quite a few times now that both option's are offered and i'm not sure which libreoffice to choose crythumbsup
gtk feels more linuxy for me but qt is ok (edited)
Avatar
Avatar
Jupstar ✪
like vulkan vs opengl
i would say yes
Avatar
Avatar
meloƞ
sorry for interrupting! important question inc. if you have any kind of software - would you choose base (e.g gtk) or Qt? i really don't understand the difference other than Qt beeing a different Interface? - i'm asking because i've seen it quite a few times now that both option's are offered and i'm not sure which libreoffice to choose crythumbsup
heinrich5991 2024-07-22 14:36
what are your requirements, anyway? what's the programming language you want to use?
Avatar
Avatar
meloƞ
sorry for interrupting! important question inc. if you have any kind of software - would you choose base (e.g gtk) or Qt? i really don't understand the difference other than Qt beeing a different Interface? - i'm asking because i've seen it quite a few times now that both option's are offered and i'm not sure which libreoffice to choose crythumbsup
I would probably go for qt
Avatar
Avatar
Ryozuki
i would say yes
Jupstar ✪ 2024-07-22 14:37
ok then please rewrite my sql to work with postgres 😬
Avatar
Performance: For most workloads, the performance of Postgres and MySQL is comparable, with at most a 30% difference. MySQL has an advantage over Postgres for extremely write-intensive workloads, while PostgreSQL is faster when handling massive datasets, complicated queries, and read-write operations
disclaimer: first entry ongoogle Kek
Avatar
Avatar
heinrich5991
what are your requirements, anyway? what's the programming language you want to use?
c++, rust, and go i guess :P
Avatar
Avatar
Ryozuki
Performance: For most workloads, the performance of Postgres and MySQL is comparable, with at most a 30% difference. MySQL has an advantage over Postgres for extremely write-intensive workloads, while PostgreSQL is faster when handling massive datasets, complicated queries, and read-write operations
disclaimer: first entry ongoogle Kek
Jupstar ✪ 2024-07-22 14:37
i read that write operations are faster in postgres and read-only faster in mysql xd
Avatar
heinrich5991 2024-07-22 14:37
c++ works well with qt
Avatar
Jupstar ✪ 2024-07-22 14:37
internet is such a good source
Avatar
ask claude
14:37
its the new HIP ai
14:38
chatgpt gone
Avatar
heinrich5991 2024-07-22 14:38
rust and go probably suck either way for anything you'd like to attempt
Avatar
yeah Ewan uses it afair and i've seen his Qt IDE of sorts be pretty decent
Avatar
heinrich5991 2024-07-22 14:38
(wrt native-looking UI)
Avatar
Avatar
Ryozuki
Performance: For most workloads, the performance of Postgres and MySQL is comparable, with at most a 30% difference. MySQL has an advantage over Postgres for extremely write-intensive workloads, while PostgreSQL is faster when handling massive datasets, complicated queries, and read-write operations
disclaimer: first entry ongoogle Kek
As a general rule, Postgres performs better for write-heavy workloads while MySQL performs better for read-heavy workloads...
3rd comment on a reddit post, so this is very hard to determine 😄
Avatar
heinrich5991 2024-07-22 14:38
we have read-heavy workloads
Avatar
@meloƞ with gtk u can do the UI design separated from code and language
Avatar
heinrich5991 2024-07-22 14:38
do you want cross-platform support? @meloƞ
14:38
or only linux
Avatar
Glade Interface Designer is a graphical user interface builder for GTK, with additional components for GNOME. In its third version, Glade is programming language–independent, and does not produce code for events, but rather an XML file that is then used with an appropriate binding (such as GtkAda for use with the Ada programming language). See L...
Avatar
Avatar
heinrich5991
do you want cross-platform support? @meloƞ
nah it's a choice i wanna make for my nixOS config split across 2 pc's and a laptop
Avatar
One thing I love about postgres is its documentation. So much better than mysql/mariadb imo (edited)
Avatar
heinrich5991 2024-07-22 14:39
setting up a mariadb server was a lot easier for me than setting up a postgresql server
14:39
the postgresql server also seemed to come with bad defaults
Avatar
@heinrich5991 when did u do that?
Avatar
heinrich5991 2024-07-22 14:40
idk, 5 years ago?
Avatar
i think things improved
Avatar
Avatar
heinrich5991
setting up a mariadb server was a lot easier for me than setting up a postgresql server
My experience was about completely identical last year
Avatar
Avatar
Ryozuki
i think things improved
heinrich5991 2024-07-22 14:40
hard to determine, easy to say
Avatar
if u fine tune psql i think its better
Avatar
it took furo 1 1/2 months to setup my DB access on ddstats.tw (psql) kek
Avatar
heinrich5991 2024-07-22 14:40
the V people always say that and the language sucks
Avatar
Avatar
Learath2
My experience was about completely identical last year
As in mariadb vs postgres was about the same amount of hassle
Avatar
psql and mariadb have bad defaults if ur server has more than 2gb of ram tbh
14:41
xd
Avatar
Have I shared this here before? https://neon.tech/ completely useless for this discussion but quite elegant
The database you love, on a serverless platform designed to help you build reliable and scalable applications faster.
Avatar
i dont trust serverless
14:41
the server is somewhere
Avatar
heinrich5991 2024-07-22 14:41
what the fuck
14:42
any local user can delete your whole DB by default
14:42
that sounds like a really bad default
Avatar
Avatar
heinrich5991
any local user can delete your whole DB by default
local unix user
Avatar
heinrich5991 2024-07-22 14:42
I said local user
Avatar
Avatar
Ryozuki
the server is somewhere
The nice part is that the server that is somewhere doesn't have to be up all the time spending resources
Avatar
heinrich5991 2024-07-22 14:42
what do you want?
Avatar
but users have passwords
Avatar
that sums up the casual psql experience in my opinion
Avatar
i never seen u say what the fuck before
14:42
i got shocked ngl xD (edited)
kek 4
Avatar
Avatar
Ryozuki
but users have passwords
heinrich5991 2024-07-22 14:42
wdym?
Avatar
to connect with the user
14:43
you need to use a password too
14:43
psql defined one
14:43
not unix
Avatar
heinrich5991 2024-07-22 14:43
the next section leads me to believe that passwords are optional by default (edited)
14:43
Require password for login
14:44
if this is actually the case, the defaults are insane
14:44
mariadb would not be able to get away with this
Avatar
I remember needing a password to access as the db superuser. Let me try
Avatar
i think they copied the example from the doc
Avatar
Jupstar ✪ 2024-07-22 14:48
only thing struggled with was to create a secure connection to mysql and that mostly bcs rustls requires cert v3 to work, which the tutorial i found did not do lmao
Avatar
the default installed uses "peer" iirc
Avatar
maybe debian injects saner defaults?
Avatar
i dont have one in hand
14:48
21.1. The pg_hba.conf File # Client authentication is controlled by a configuration file, which traditionally is named pg_hba.conf and is stored …
14:48
they just copiied the examples here
14:48
it doesnt mean they come by default
Avatar
heinrich5991 2024-07-22 14:49
what comes by default?
14:49
if you don't know, I hope the defaults are very good (edited)
Avatar
Idk where archlinux got their config file, but mine was shipped with method peer on that line, which is safe
14:56
(debian)
14:56
((pg 11)) (edited)
Avatar
damn u old
Avatar
Mirror of the official PostgreSQL GIT repository. Note that this is just a mirror - we don&#39;t work with pull requests on github. To contribute, please see https://wiki.postgresql.org/wiki/...
Avatar
heinrich5991 2024-07-22 15:01
I couldn't figure out what @remove-line-for-nolocal@ does
Avatar
https://github.com/postgres/postgres/blob/master/src/bin/initdb/initdb.c initdb handles those replacable tokens, so as long as your distro doesn't call it with insane arguments it should be fine
Mirror of the official PostgreSQL GIT repository. Note that this is just a mirror - we don&#39;t work with pull requests on github. To contribute, please see https://wiki.postgresql.org/wiki/...
15:03
Oh actually I see what went wrong there
Avatar
yet another beautiful day to run nix's garbage collector.. oh boy...
Avatar
Do not use trust unless you trust all local users on your system. trust is the default for ease of installation.
I'm guessing arch doesn't pass any -A but debian does. So I guess this default is indeed insane but fixed by debian
Avatar
Avatar
meloƞ
yet another beautiful day to run nix's garbage collector.. oh boy...
gentoo master race
Avatar
BlockShockyy 2024-07-22 15:13
.
Avatar
Avatar
Learath2
Do not use trust unless you trust all local users on your system. trust is the default for ease of installation.
I'm guessing arch doesn't pass any -A but debian does. So I guess this default is indeed insane but fixed by debian
I dug into it a bit debian uses a tool they made called pg_createcluster which calls initdb with a safe -A
Avatar
@Jupstar ✪ im cryptography noob so i have some questions
15:17
does a game server check the cert sent from user with just the account servers public key?
Avatar
Jupstar ✪ 2024-07-22 15:17
i am too xd
Avatar
Avatar
louis
does a game server check the cert sent from user with just the account servers public key?
Jupstar ✪ 2024-07-22 15:18
yes
15:18
well my current implementation actually lets a game server download a cert of the account server
15:18
heinrich wanted permanent keys.. i am not 100% sure about it
15:18
since permanent is a subset of temporary, we can still "downgrade" to that
15:18
so i just implemented it like that
Avatar
What sort of accounts did you end up making @Jupstar ✪? Any fancy features or did you just end up doing a central auth server with username-password?
Avatar
what exactly is the cert?
Avatar
Avatar
Learath2
What sort of accounts did you end up making @Jupstar ✪? Any fancy features or did you just end up doing a central auth server with username-password?
Jupstar ✪ 2024-07-22 15:19
Avatar
smth public?
Avatar
Avatar
Learath2
What sort of accounts did you end up making @Jupstar ✪? Any fancy features or did you just end up doing a central auth server with username-password?
Jupstar ✪ 2024-07-22 15:20
i basically did the idea heinrich proposed to me in a call
15:20
using certs by the account server to verify the account ownership
Avatar
Ah cool, certs are nice
Avatar
Avatar
louis
what exactly is the cert?
Jupstar ✪ 2024-07-22 15:21
simply speaking it certifies that someone owns something. so for example it can certify that you own a specific public key, additionally certs have extensions, so i can put the account_id into one and it certifies that you have the account id
Avatar
i mean like what private thing is stopping a game server from stealing a cert sent from user and using it on another server
Avatar
Did you finish btw?
Avatar
Avatar
Jupstar ✪
simply speaking it certifies that someone owns something. so for example it can certify that you own a specific public key, additionally certs have extensions, so i can put the account_id into one and it certifies that you have the account id
Jupstar ✪ 2024-07-22 15:21
well that you own the private key to the public key
Avatar
Avatar
Jupstar ✪
i basically did the idea heinrich proposed to me in a call
u were in a call? owoSmol
Avatar
Jupstar ✪ 2024-07-22 15:21
to be precise
Avatar
Avatar
Ryozuki
u were in a call? owoSmol
Jupstar ✪ 2024-07-22 15:21
yep xd
Avatar
Avatar
louis
i mean like what private thing is stopping a game server from stealing a cert sent from user and using it on another server
Asymmetric cryptography. You have the private key, the server has your public key and verifies that you own the private key using cryptoblackmagic
Avatar
Jupstar ✪ 2024-07-22 15:22
i actually wanted to talk mostly about quic.. but we ended up talking mostly about accounts
15:22
lmao
Avatar
i think last time i heard heinrich was in lexa teamspeak server playing dota
Avatar
heinrich5991 2024-07-22 15:22
laxa
Avatar
ye laxa
Avatar
ah ok
Avatar
i forgot the name justatest
Avatar
i remember learning abt the cryptoblackmagic mathematics itself but i just don't know how it's applied in actual scenarios thonk
Avatar
its just prime numbers
Avatar
ya ik
Avatar
Avatar
Jupstar ✪
using certs by the account server to verify the account ownership
The account server generates the certs? That sounds like the people with access to the account server would be able to steal accounts
Avatar
Avatar
Learath2
The account server generates the certs? That sounds like the people with access to the account server would be able to steal accounts
Jupstar ✪ 2024-07-22 15:23
they would, defs
Avatar
heinrich5991 2024-07-22 15:23
yes. we're hosting the accounts server
Avatar
Jupstar ✪ 2024-07-22 15:23
but it's controlled by ddnet
Avatar
i guess its all open source
Avatar
Jupstar ✪ 2024-07-22 15:24
a very early version i uploaded before my holidays is open source
15:24
the current lays on my pc, a VPS and my gitlab instance
Avatar
Could we perhaps have the client generate the private key? Why do we generate it on our side?
Avatar
Jupstar ✪ 2024-07-22 15:24
xd
Avatar
Avatar
Learath2
Could we perhaps have the client generate the private key? Why do we generate it on our side?
Jupstar ✪ 2024-07-22 15:24
the private key is generated on the client
Avatar
Avatar
Learath2
Could we perhaps have the client generate the private key? Why do we generate it on our side?
heinrich5991 2024-07-22 15:24
the cert doens't include the private key
15:24
but that doesn't help, because the account server could just generate a new private key and sign a certficate for it
Avatar
Oh okay, so like a traditional certificate signing request
Avatar
will u have blacklists for certs?
Avatar
Avatar
Ryozuki
will u have blacklists for certs?
Jupstar ✪ 2024-07-22 15:25
what does that mean?
Avatar
imagine u lost ur account and recover it by email, whats up with the old certs that still live
15:26
if thats a posibility
15:26
or u cant recover at all?
Avatar
Avatar
Jupstar ✪
what does that mean?
A means of disabling a stolen private key
Avatar
Avatar
Ryozuki
imagine u lost ur account and recover it by email, whats up with the old certs that still live
Jupstar ✪ 2024-07-22 15:26
they are only valid for a few hours
15:26
if nobody steals them they simply expire
Avatar
few hours is a lot
Avatar
heinrich5991 2024-07-22 15:26
we'll have to figure out good certificate life times
Avatar
Jupstar ✪ 2024-07-22 15:26
yes
Avatar
jwt is a good example of this
Avatar
Oh the certificates are ephemeral, hm
Avatar
Jupstar ✪ 2024-07-22 15:26
in my current impl it's 1h
Avatar
also if the old cert is still valid
15:27
the attack could theorically change the password or whathever?
15:27
or is that only yb email
15:27
by*
Avatar
Avatar
Ryozuki
the attack could theorically change the password or whathever?
Jupstar ✪ 2024-07-22 15:27
no passwords
Avatar
or what about changing email
Avatar
Avatar
Jupstar ✪
no passwords
how do you auth then
Avatar
Jupstar ✪ 2024-07-22 15:27
that requires to verify the code of the old email
Avatar
Avatar
Ryozuki
how do you auth then
Jupstar ✪ 2024-07-22 15:27
key-pair
Avatar
but how u get a key pair
Avatar
Jupstar ✪ 2024-07-22 15:27
a session has a key-pair. everytime you log in you get an email
15:28
by email
Avatar
Jupstar ✪ 2024-07-22 15:28
so email -> code -> code+ public key
15:28
smth like that
Avatar
I guess that's sane. So any downstream 3rd party can check that the clients presented certificate is signed by our account server and verify ownership?
Avatar
Avatar
Ryozuki
by email
Jupstar ✪ 2024-07-22 15:28
yeah or steam or whatever
Avatar
the client downloads the key pair?
Avatar
Avatar
Learath2
I guess that's sane. So any downstream 3rd party can check that the clients presented certificate is signed by our account server and verify ownership?
Jupstar ✪ 2024-07-22 15:28
yes
Avatar
Avatar
Ryozuki
the client downloads the key pair?
Jupstar ✪ 2024-07-22 15:28
no, it only uploads the public key
Avatar
so it makes the key pair?
Avatar
Jupstar ✪ 2024-07-22 15:28
yes
Avatar
what does the email have?
15:29
that lets u make a valid key pair?
Avatar
Did you end up doing any special format or are we using standard X.509 certificates?
Avatar
and how u make a good ux for it with the client? xD
Avatar
Jupstar ✪ 2024-07-22 15:29
the email sends a code, the code verifies you own the email, the public key is your session ticket
Avatar
Avatar
Ryozuki
and how u make a good ux for it with the client? xD
Jupstar ✪ 2024-07-22 15:29
i can quickly show a very first version in ddpg
15:29
it's not super fancy, but it works
Avatar
I have one concern, would there be a non-interactive way to refresh your certificate?
Avatar
i just fail to understand how u get from a email to a valid session in the client iself
Avatar
It would be super annoying to have to log in all the time
Avatar
u have to log in with email every hour?
Avatar
no you probs can refresh with the old pair
Avatar
Avatar
Learath2
I have one concern, would there be a non-interactive way to refresh your certificate?
Jupstar ✪ 2024-07-22 15:30
it is always non-interactive
15:30
or what do you mean
Avatar
Avatar
Jupstar ✪
it is always non-interactive
Not if you need the email code every time
15:31
Or can you use the expired certificate to get a new one?
Avatar
i guess the same email code can be used to make multiple certificates no
Avatar
Jupstar ✪ 2024-07-22 15:31
i currently thought about checking every time if either:
  • user presses refresh on server browser (and the cert is reasonable old)
  • connects to a game server (and cert is old)
Avatar
Avatar
Learath2
Or can you use the expired certificate to get a new one?
Jupstar ✪ 2024-07-22 15:31
no, it will always do a login by session, kinda
Avatar
So you connect to a game server, client notices the certificate is stale. What is the next step? From how I understood you so far it would need to get a new email code
Avatar
Jupstar ✪ 2024-07-22 15:33
step by step:
  • insert email
  • read code from email
  • insert code
  • be happy nothing more to do
15:33
the rest should™️ always be hidden for an end user, except maybe a name change on a game server
Avatar
I want to die. I spent 2 hours rebasing my PR. Some dude got a PR in before mine that changes a lot of stuff I touched. Now I need to rebase it again
Avatar
pair should refresh seamlessly
15:34
in web stuff they use a session token and a refresh token
Avatar
Avatar
Jupstar ✪
step by step:
  • insert email
  • read code from email
  • insert code
  • be happy nothing more to do
hmm i think 1 hour is far too short then xd
Avatar
Avatar
Learath2
So you connect to a game server, client notices the certificate is stale. What is the next step? From how I understood you so far it would need to get a new email code
Jupstar ✪ 2024-07-22 15:34
cert is old -> client asks for new cert using the active session (the session key-pair) -> gets new cert
Avatar
Avatar
Jupstar ✪
step by step:
  • insert email
  • read code from email
  • insert code
  • be happy nothing more to do
Rust fake ddnet client! Xd
Avatar
with the refresh u get the session token
15:34
which lasts not much
Avatar
Avatar
louis
hmm i think 1 hour is far too short then xd
Jupstar ✪ 2024-07-22 15:34
no no
Avatar
Avatar
Jupstar ✪
cert is old -> client asks for new cert using the active session (the session key-pair) -> gets new cert
There is a separate session keypair?
Avatar
Jupstar ✪ 2024-07-22 15:34
once you logged in, you stay logged in
15:34
it's a valid session
Avatar
i mean even then, what if ur hopping servers a lot
Avatar
Avatar
Learath2
There is a separate session keypair?
Jupstar ✪ 2024-07-22 15:34
there are only session key-pairs
15:34
nothing else
Avatar
Avatar
louis
i mean even then, what if ur hopping servers a lot
Jupstar ✪ 2024-07-22 15:34
the same cert can be used for ~1h
15:35
before creating a new one automcatically
Avatar
Okay now I don't follow you anymore. You have a cert proving you own the account associated to an email. It expired, how would you get a new one without interaction?
Avatar
Jupstar ✪ 2024-07-22 15:35
you have a session key-pair, which is basically your session token
Avatar
heinrich5991 2024-07-22 15:35
the account server remembers the keypair forever
Avatar
Jupstar ✪ 2024-07-22 15:35
it validates your account's session (edited)
Avatar
heinrich5991 2024-07-22 15:35
until you "log out" somehow
15:35
then it won't sign new certificates for you
Avatar
if it lasts forever u run into the problem of increasingly big blacklists right?
Avatar
Avatar
Ryozuki
if it lasts forever u run into the problem of increasingly big blacklists right?
Jupstar ✪ 2024-07-22 15:36
we can also last it for 1-2 years
15:36
that's an impl detail
15:36
point is, it wont just ask you every day
Avatar
i rly think it should rotate
Avatar
Avatar
Ryozuki
if it lasts forever u run into the problem of increasingly big blacklists right?
heinrich5991 2024-07-22 15:37
no. the accounts server maintains the mapping. revocation of that bit is instant (edited)
Avatar
ah ok i see
Avatar
Avatar
heinrich5991
the account server remembers the keypair forever
So only when associating a public key with an email you need the interactive bit?
Avatar
Avatar
Learath2
So only when associating a public key with an email you need the interactive bit?
heinrich5991 2024-07-22 15:37
yes
Avatar
Avatar
heinrich5991
no. the accounts server maintains the mapping. revocation of that bit is instant (edited)
ah
Avatar
Avatar
Ryozuki
i rly think it should rotate
Jupstar ✪ 2024-07-22 15:37
we can still think about that yes
Avatar
a lot of other games check for ip/location too
Avatar
So as long as I don't lose that private key, I can keep getting new certificates, ok. Why do the certificates expire? Why do we think they are more likely to be stolen than the private key itself?
Avatar
Avatar
Learath2
So as long as I don't lose that private key, I can keep getting new certificates, ok. Why do the certificates expire? Why do we think they are more likely to be stolen than the private key itself?
Jupstar ✪ 2024-07-22 15:38
i don't really think so
15:38
that's why i could also imagine it lasting longer
Avatar
heinrich5991 2024-07-22 15:38
so that you can tell the account server that you want to log out
Avatar
Avatar
heinrich5991
so that you can tell the account server that you want to log out
Jupstar ✪ 2024-07-22 15:38
yeah ok that too
Avatar
heinrich5991 2024-07-22 15:39
the certificates mostly make sure that DoSing the accounts server doesn't have as much impact
Avatar
Avatar
heinrich5991
so that you can tell the account server that you want to log out
Hm, isn't that just another command? Send a signed deassociate message and done
Avatar
Avatar
Learath2
Hm, isn't that just another command? Send a signed deassociate message and done
Jupstar ✪ 2024-07-22 15:39
that is super hard
15:39
to all game servers?
Avatar
Avatar
Learath2
Hm, isn't that just another command? Send a signed deassociate message and done
heinrich5991 2024-07-22 15:39
how would the game servers know?
Avatar
Ah are the gameservers caching this stuff?
Avatar
heinrich5991 2024-07-22 15:40
they don't need to cache anything with the certificates
15:40
because the certs are always up-to-date
Avatar
Jupstar ✪ 2024-07-22 15:40
i think it shouldnt last too long, but realistically the user might not directly notice the key loss, so a new cert for every game server connect would IMHO be overkill
15:40
would only slow down connecting
Avatar
heinrich5991 2024-07-22 15:40
plus DoS-ability of the accounts server
Avatar
one question, how does the key pair store some vital account info, or does it require to check with the server always? a.k.a it has no claims for offline info right?
15:41
in jwt its common for example to store claims, like the user id
15:41
xd
Avatar
Avatar
heinrich5991
because the certs are always up-to-date
Ok, I see how it solves the caching issue and the accounts server being down. Why the expiry though? Can't the client just discard the certificate? It's the one logging out afterall
Avatar
Avatar
Ryozuki
one question, how does the key pair store some vital account info, or does it require to check with the server always? a.k.a it has no claims for offline info right?
Jupstar ✪ 2024-07-22 15:41
sry i dont understand xd
Avatar
Avatar
Jupstar ✪
sry i dont understand xd
i also explained myself bad
Avatar
Avatar
Ryozuki
one question, how does the key pair store some vital account info, or does it require to check with the server always? a.k.a it has no claims for offline info right?
I'm guessing it's storing a unique userid given it's resistant to dos'ing of the account server
Avatar
Jupstar ✪ 2024-07-22 15:41
the key pair stores nothing
Avatar
and i think it doesnt apply here i guess
Avatar
Avatar
Jupstar ✪
the key pair stores nothing
the certificate itself
Avatar
u always need to contact the acc server for info
Avatar
heinrich5991 2024-07-22 15:42
you can put stuff into the certificate
15:42
no
Avatar
Jupstar ✪ 2024-07-22 15:42
the cert by the account server stores info in an extension
Avatar
so getting an og username really matters owo
Avatar
if the cert stores the id we can also separate authing to getting user info
Avatar
Nice, so just a standard x.509 extension?
Avatar
Avatar
louis
so getting an og username really matters owo
heinrich5991 2024-07-22 15:43
we haven't talked about user names at all yet
Avatar
which makes this more resistant to ddos
Avatar
Avatar
Learath2
Nice, so just a standard x.509 extension?
heinrich5991 2024-07-22 15:43
yes
Avatar
by separating the services right
Avatar
Avatar
Learath2
Ok, I see how it solves the caching issue and the accounts server being down. Why the expiry though? Can't the client just discard the certificate? It's the one logging out afterall
I think this is the one question I have remaining then. Other than that love it
Avatar
Avatar
Learath2
Ok, I see how it solves the caching issue and the accounts server being down. Why the expiry though? Can't the client just discard the certificate? It's the one logging out afterall
heinrich5991 2024-07-22 15:44
expiry so that we can think less about revocation
Avatar
Avatar
heinrich5991
we haven't talked about user names at all yet
what are the current options?
Avatar
heinrich5991 2024-07-22 15:44
user "loses" key, wants to log out
Avatar
ive seen normal usernames and user#0000
Avatar
and steam like names
Avatar
Avatar
louis
what are the current options?
heinrich5991 2024-07-22 15:44
we haven't talked about it. we're talking about some technical stuff regarding accounts right now
Avatar
steam has a id and allows all names
Avatar
heinrich5991 2024-07-22 15:44
let's finish the technical discussion first
Avatar
i dont have more questions
Avatar
Avatar
heinrich5991
expiry so that we can think less about revocation
If the certificate and the private key are equally likely to be stolen (assumption by me). The cert expiring doesn't matter, no?
Avatar
Avatar
Learath2
If the certificate and the private key are equally likely to be stolen (assumption by me). The cert expiring doesn't matter, no?
Jupstar ✪ 2024-07-22 15:45
if both are stolen but the cert is valid for ever, then u can fake it on any game server
Avatar
Avatar
Learath2
If the certificate and the private key are equally likely to be stolen (assumption by me). The cert expiring doesn't matter, no?
heinrich5991 2024-07-22 15:45
it matters. because the game server knows by the certificate that the private key is associated to an account (edited)
Avatar
Jupstar ✪ 2024-07-22 15:45
bcs the game server doesnt know about that the cert is invalid for this account
Avatar
I see I see, no online verification of the certificate is needed this way
Avatar
Avatar
heinrich5991
let's finish the technical discussion first
it seems more like a q&a
Avatar
heinrich5991 2024-07-22 15:46
yes, that's the very nice property of this system
Avatar
Avatar
louis
it seems more like a q&a
heinrich5991 2024-07-22 15:46
but it's a technical Q&A without any "open design questions"
15:46
you're starting an issue that people have very different opinions on. that will side-track any other discussion
Avatar
Avatar
heinrich5991
yes, that's the very nice property of this system
And I guess the validity duration is a balancing act between dos-proofness of the account server and the impact of a stolen cert
Avatar
Avatar
Learath2
And I guess the validity duration is a balancing act between dos-proofness of the account server and the impact of a stolen cert
heinrich5991 2024-07-22 15:47
correct
Avatar
Avatar
Learath2
And I guess the validity duration is a balancing act between dos-proofness of the account server and the impact of a stolen cert
Jupstar ✪ 2024-07-22 15:47
the good thing is, it can be a config var on the account server
15:47
so we can always change it
Avatar
heinrich5991 2024-07-22 15:48
yes
Avatar
Jupstar ✪ 2024-07-22 15:48
just don't accidentially set it to infinity lol
15:48
maybe i should clamp it to smth sane
Avatar
heinrich5991 2024-07-22 15:48
we can also have revocation lists, to make revocations instant in the optimal case of the acc server not being DoSed
15:48
but that's an addon already
Avatar
Jupstar ✪ 2024-07-22 15:49
yeah it's also IMHO harder in games that web service
Avatar
Yeah, not urgent. I doubt we'll have need for instant revocations that quickly
Avatar
heinrich5991 2024-07-22 15:49
it's also only "best effort", it doesn't really give us security guarantees
Avatar
sounds good, maybe ill live to see accounts in ddnet for real
Avatar
We can just put a large revoke list on cloudflare r2 or something
Avatar
Jupstar ✪ 2024-07-22 15:49
well depends i guess, but that list must be updated quite often, and maybe shouldnt block new connections too much
Avatar
heinrich5991 2024-07-22 15:49
the revocation list doesn't need to be large if the cert validity is short ^^
Avatar
another issue is registration in spam
15:50
i guess a timeout by ip or smth?
15:50
i can see sp someone making 100 accounts per second
Avatar
Avatar
Ryozuki
another issue is registration in spam
Jupstar ✪ 2024-07-22 15:50
yep, pretty hard one, but realistically you can probably also create 50 accounts on gmail this week
Avatar
Avatar
Ryozuki
i can see sp someone making 100 accounts per second
Jupstar ✪ 2024-07-22 15:50
that is maybe easy to rate limit
Avatar
Q: If the account server does die longer than the cert validity, is there any way we can have some contingency so we can still associate ranks later?
Avatar
Jupstar ✪ 2024-07-22 15:51
but generally creating lots of accounts in ~1 month is hard to prevent i guess
Avatar
Avatar
Learath2
Q: If the account server does die longer than the cert validity, is there any way we can have some contingency so we can still associate ranks later?
Q: can they beat cloudflare?
Avatar
Avatar
Learath2
Q: If the account server does die longer than the cert validity, is there any way we can have some contingency so we can still associate ranks later?
Jupstar ✪ 2024-07-22 15:51
it could fall back to the public key hash
15:51
which is also the sessions public key
Avatar
Avatar
Learath2
Q: If the account server does die longer than the cert validity, is there any way we can have some contingency so we can still associate ranks later?
heinrich5991 2024-07-22 15:51
yes. ask the account server for public-key associations in the past
Avatar
Jupstar ✪ 2024-07-22 15:52
but tbh even if all these ideas are cool
15:52
we should get some stuff done
Avatar
Avatar
Jupstar ✪
we should get some stuff done
well it seems you already have some stuff done, which is exciting
Avatar
Jupstar ✪ 2024-07-22 15:53
i have the account stuff done yes, connecting to game servers is done now it's about storing ranks
Avatar
гений 2024-07-22 15:53
п
Avatar
I'm guessing there only remains the very tough discussion about ranks and names 😄
Avatar
Jupstar ✪ 2024-07-22 15:53
since i dont have a ddnet implementation yet, this is bit trickier
Avatar
i went to the bathroom and back and got a question, can a game server fake you being someone else?
Avatar
Jupstar ✪ 2024-07-22 15:53
here my top3 questions
15:53
still open
Avatar
i guess it can fake u not being authed
Avatar
Jupstar ✪ 2024-07-22 15:53
oh wait
15:53
wrong post sry
Avatar
Avatar
Ryozuki
i went to the bathroom and back and got a question, can a game server fake you being someone else?
heinrich5991 2024-07-22 15:53
the clients don't authenticate against each other so far
Avatar
feel like thats a very heavy topic xd (edit nvm wrong message linked at first) (edited)
Avatar
Avatar
heinrich5991
the clients don't authenticate against each other so far
Is this something that can be implemented? Any ideas so far? It would be kinda nice if I could make sure you were you e.g.
Avatar
Avatar
Learath2
Is this something that can be implemented? Any ideas so far? It would be kinda nice if I could make sure you were you e.g.
heinrich5991 2024-07-22 15:54
can probably be implemented
15:54
but not right now
Avatar
Perhaps the gameserver can let clients advertise a small signed blob as extra client info?
Avatar
OTR? xd
Avatar
Avatar
Learath2
Is this something that can be implemented? Any ideas so far? It would be kinda nice if I could make sure you were you e.g.
Jupstar ✪ 2024-07-22 15:55
i thought it would be cool to have a community server, which handles friend lists, could initiate private communication etc.
15:55
BUT only ideas
Avatar
nvm otr is not this
15:55
hi deen
Avatar
heinrich5991 2024-07-22 15:55
let's skip that as out-of-scope except that we note that it'd be possible
Avatar
Avatar
heinrich5991
but not right now
I'm not saying it has to be right now, but the possibility of it would be quite important to me. So if the scheme doesn't allow this it might be the time to reconsider
Avatar
Avatar
Jupstar ✪
i thought it would be cool to have a community server, which handles friend lists, could initiate private communication etc.
thats nice
Avatar
Avatar
Learath2
Perhaps the gameserver can let clients advertise a small signed blob as extra client info?
doesnt that still depend on the game server being up to date
Avatar
heinrich5991 2024-07-22 15:56
yes, it's possible. you can sign something, and then it's fine
Avatar
its also important because users arent tech savvy and with accounts they might thing it gives them enough confidence to trust another is real?
Avatar
Avatar
heinrich5991
let's skip that as out-of-scope except that we note that it'd be possible
This is enough for me
15:56
bcbfa1b Version 18.4 - def- da2d6dd Update Ukrainian l10n (18.4) - EGYT5453 722257c Update brazilian_portuguese.txt - rffontenelle 37eaa1b Update russian.txt - gerdoe-jr bcc08ec Update Swedish translations for 18.4 - furo321 3ff9406 Fix assertion when rendering demo with updated ffmpeg library - Robyt3 e21dc9a Update Estonian translations (by Cammo) - def- fb8144e Update simplified_chinese.txt - By622 36825f5 Update traditional_chinese.txt - By622
Avatar
i think ur second question depends on how names are handled
15:58
if its unique ascii, then maybe a random username is better at first
Avatar
Jupstar ✪ 2024-07-22 16:02
my point about that is also mostly about the question if a user should actively register or passivly. In theory the account server could also take a username, but then it could never be changed, bcs it would require all game servers to sync with the account server to prevent unique violations
16:02
if they just join kog and have an account, so no rank is ever lost, they can still think about user names later
Avatar
heinrich5991 2024-07-22 16:03
the account server itself should probably deal with user IDs only
Avatar
Nameless tee 🥹 How are you gonna hanlde uniqueness? Can't you just do like previous dc account, with some id?
Avatar
heinrich5991 2024-07-22 16:03
account names can be some profile feature
16:03
we can still decide whether they should be unique or not
Avatar
Avatar
Jupstar ✪
my point about that is also mostly about the question if a user should actively register or passivly. In theory the account server could also take a username, but then it could never be changed, bcs it would require all game servers to sync with the account server to prevent unique violations
hm so its kind of similar to ur 3rd q as well no?
Avatar
i know this might not be the best approach, but Blockworlds handles account's the way old minecraft servers used to, you have your name you can freely pick (e.g nameless tee) and a way to auth yourself as a user (e.g /login mel mel123)
Avatar
Avatar
heinrich5991
account names can be some profile feature
ah true
16:05
i guess more profile information can be added later on as well ?
16:05
like cheater tags 👹
Avatar
heinrich5991 2024-07-22 16:07
yes
16:07
it's all orthogonal to the actual accounts implementation
Avatar
user id should definitly not be something user facing
16:15
a uuid v7
16:16
quick info: uuid v4 is what everyone used in dbs but v7 is better because its better time indexed
owo 1
16:16
owo
Avatar
Could someone implement #2640 please owo
Avatar
There are quite a lot of people getting banned by DNSBL actually. I can't imagine they are all evil. Do we really need to always run DNSBL and disallow joining server? I have disabled dnsbl ban...
Avatar
Avatar
Ryozuki
a uuid v7
Does it need to be a uuid? I can imagine just a normal id working fine, are we planning for other account providers?
Avatar
heinrich5991 2024-07-22 16:20
a normal ID might just work
16:20
maybe we could encrypt it so that user enumeration isn't a thing
Avatar
Bors Matyas 2024-07-22 16:36
why the dummy looks in different direction when you are paused than when you are not?
Avatar
heinrich5991 2024-07-22 16:38
it's a bug, I think
Avatar
identity federation, when?
Avatar
Avatar
jxsl13
identity federation, when?
Check iF' City servers troll
👀 1
Avatar
Avatar
heinrich5991
maybe we could encrypt it so that user enumeration isn't a thing
Is it a concern? Most that could be derived is the amount of registered accounts we have, right? I assume we'd make this public some other way anyway
Avatar
heinrich5991 2024-07-22 16:48
not sure. maybe it's of no concern
Avatar
uuids are great ._.
Avatar
heinrich5991 2024-07-22 16:48
opaque identifiers might make it easier on us, so that we don't have to care about a specific format
16:55
C++ finds out that void might be a good first-class type
Avatar
Avatar
meloƞ
i know this might not be the best approach, but Blockworlds handles account's the way old minecraft servers used to, you have your name you can freely pick (e.g nameless tee) and a way to auth yourself as a user (e.g /login mel mel123)
archimede67 2024-07-22 17:07
You mean you have to use that command every time you join the server? Ah hell no
Avatar
Avatar
heinrich5991
C++ finds out that void might be a good first-class type
I can't imagine any use of it except for using inside a union. Does the blogpost go into it? (edited)
Avatar
Avatar
archimede67
You mean you have to use that command every time you join the server? Ah hell no
No, Auto Login, that was an example
Avatar
Or perhaps as an extra SFINAE toy
Avatar
Avatar
Learath2
I can't imagine any use of it except for using inside a union. Does the blogpost go into it? (edited)
heinrich5991 2024-07-22 17:08
e.g. mapping the result of a future
Avatar
Avatar
meloƞ
No, Auto Login, that was an example
archimede67 2024-07-22 17:08
I see
Avatar
Avatar
Learath2
I can't imagine any use of it except for using inside a union. Does the blogpost go into it? (edited)
heinrich5991 2024-07-22 17:09
basically anything where you want to treat return types generically
Avatar
Ah, I see it's use now. The Regular Void proposal demonstrates it much better than the blog-post (though monostate can't fix this directly) https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0146r1.html
Avatar
heinrich5991 2024-07-22 17:14
yes, regular void would be amazing for C++
Avatar
Hello. We are developing bots for TeeSports servers and we want to use it as fng and colorcatch fight bots in future on our servers. What should we take into account to use them to avoid warnings and bans? Current bots you can see on 188.133.192.77:8303. FYI: 1. We can scale bots depending on the task. For example: we can use just 2 bots or scale them to 16. Same for colorcatch: 2→64. 2. We use k8s for hosting servers and other TeeSports infra, so bots can join servers using k8s network (10.244.0.0/16 in our cases). 3. We use Swarfey library to make bots 4. Bots can send messages and they can use weapon, move etc. 5. Bots listed on master servers now, so i deployed only 3 bots on our test server (join 188.133.182.77:8303 to see), but I can scale in easy (see 1st list item)
Avatar
188.133.192.77:8303 is an official TeeSports (DDNet, Region: 🇷🇺) server. TeeSports isn't affiliated with DDNet. Quick join: https://ddnet.org/connect-to/?addr=188.133.192.77:8303/
Avatar
Avatar
ninekeem
Hello. We are developing bots for TeeSports servers and we want to use it as fng and colorcatch fight bots in future on our servers. What should we take into account to use them to avoid warnings and bans? Current bots you can see on 188.133.192.77:8303. FYI: 1. We can scale bots depending on the task. For example: we can use just 2 bots or scale them to 16. Same for colorcatch: 2→64. 2. We use k8s for hosting servers and other TeeSports infra, so bots can join servers using k8s network (10.244.0.0/16 in our cases). 3. We use Swarfey library to make bots 4. Bots can send messages and they can use weapon, move etc. 5. Bots listed on master servers now, so i deployed only 3 bots on our test server (join 188.133.182.77:8303 to see), but I can scale in easy (see 1st list item)
heinrich5991 2024-07-22 17:25
don't list the bots in the masterserver
Avatar
Avatar
heinrich5991
don't list the bots in the masterserver
Good, but how we can do it?
Avatar
heinrich5991 2024-07-22 17:28
what's your server based on? ddnet or teeworlds 0.6?
Avatar
Avatar
heinrich5991
what's your server based on? ddnet or teeworlds 0.6?
fng — teeworlds 0.6 ccatch — 0.6 We have many modes. Some on 0.6, some on ddnet, some on old ddnet (S-DDRace, TeeWare), some — mixed (F-DDRace) (edited)
Avatar
heinrich5991 2024-07-22 17:31
change the server info you send to not include the bots
Avatar
wdym?
Avatar
heinrich5991 2024-07-22 17:31
make sure to decrease num players/num clients/max players/max client accordingly
Avatar
k i'll see (edited)
🐳 1
17:33
here, you'll also need to skip the bots, not only the empty player slots
17:33
for the counts
Avatar
Avatar
heinrich5991
for the counts
That's all what we should know? Maybe something else?
Avatar
heinrich5991 2024-07-22 17:35
that's all you need
Avatar
Big thanks.
Avatar
MilkeeyCat 2024-07-22 18:03
how to read dis? justatest
lol 3
Avatar
try from top to bottom
18:15
looks pretty evenly distributed
Avatar
MilkeeyCat 2024-07-22 18:15
but the performance is still ass
Avatar
check out the big chunks at the top
18:16
isn't that like ram usage?
18:17
everything is parse, wtf xD
Avatar
MilkeeyCat 2024-07-22 18:17
i clicked on allocs in pprof kek
Avatar
looks like go
Avatar
MilkeeyCat 2024-07-22 18:17
it is go
Avatar
might help to put less stuff into empty interfaces
Avatar
MilkeeyCat 2024-07-22 18:18
it's not my code lol
Avatar
if that's the case
Avatar
MilkeeyCat 2024-07-22 18:19
i just wanted to check mybe i can "fix" 1min file generation for library called "templ"
18:19
or tool, whatever it is
Avatar
link?
18:20
url
18:20
all files take ~0.05s while 1 file take 50s 😬
Avatar
hm, ._. big project
18:22
looks highly recursive at least from the flame graph
Avatar
Avatar
jxsl13
looks highly recursive at least from the flame graph
MilkeeyCat 2024-07-22 19:08
All I had to do to fix it is.... use formatter Before 55.97s user 1.43s system 112% cpu 50.871 total After 0.02s user 0.00s system 105% cpu 0.021 total
Avatar
heinrich5991 2024-07-22 19:10
hm?
Avatar
MilkeeyCat 2024-07-22 19:10
formated file takes 0.02s
19:10
unformatted 55.97
19:11
there's command templ fmt to format .templ files
Avatar
heinrich5991 2024-07-22 19:12
that sounds super cursed
Avatar
Jupstar ✪ 2024-07-22 19:12
how long does the formatting itself take? xd
Avatar
MilkeeyCat 2024-07-22 19:12
~50s lol
Avatar
Jupstar ✪ 2024-07-22 19:12
if it's under 55.95 seconds
19:12
would still be worth it xD
Avatar
the heck
19:21
looked at the code base a little bit, looks like someone's wet generics dream
Avatar
MilkeeyCat 2024-07-22 19:22
Don't look at my rust code justatest
justatest 2
Avatar
heinrich5991 2024-07-22 19:27
ah, it's your compiler
19:27
why does it take longer on unformatted code? oO
19:28
ah no, not your own compiler
Avatar
MilkeeyCat 2024-07-22 19:28
ill make an issue and ask there
19:28
or at least ask them to mention that somewhere xd
19:29
for last few days i was waiting 1 min after each time i saved templ file pepeW
Avatar
GitHub BOT 2024-07-22 19:38
Add new client component CTouchControls for playing the game with touch inputs. The touch controls can be enabled/disabled with the config variable cl_touch_controls, which defaults to 1 on Android and 0 on other platforms. The touch controls consist of various on-screen touch buttons. The buttons are only shown when they are usable depending on the context. Movement buttons for Left, Right and Jump actions are arranged in a -pattern similar to WASD controls. For the fire and hoo...
hype 1
Avatar
ima go off for today, see ya - nightynights
tip 3
Avatar
heinrich5991 2024-07-22 20:23
nightynight
Avatar
GitHub BOT 2024-07-22 20:32
!image

Steps to reproduce

dbg_dummies 17 set_team_ddr 0 1 set_team_ddr 63 1 set_team_ddr 62 1 set_team_ddr 61 1 set_team_ddr 60 1 set_team_ddr 59 1 set_team_ddr 58 1
Avatar
Avatar
MilkeeyCat
All I had to do to fix it is.... use formatter Before 55.97s user 1.43s system 112% cpu 50.871 total After 0.02s user 0.00s system 105% cpu 0.021 total
MilkeeyCat 2024-07-22 20:45
it was because my code had <br> tag and formatter was changing it to <br/>, so in unformatted version it was also trying to parse child of br tag, that's why it was taking so long
Avatar
heinrich5991 2024-07-22 20:56
sounds like a meh parser
20:56
<br> is a tag that doesn't need closing
Avatar
so someone can do support ddnet for steamdeck?
Avatar
Jupstar ✪ 2024-07-22 21:03
🧙‍♂️
21:03
done
21:03
it should normally just work
Avatar
Avatar
Jupstar ✪
it should normally just work
it's just doesnt shows in steam while search idk why, but it works if u open it via link
Avatar
Avatar
BlackHole
it's just doesnt shows in steam while search idk why, but it works if u open it via link
Jupstar ✪ 2024-07-22 21:07
did you search ddnet or ddracenetwork?
Avatar
Avatar
Jupstar ✪
did you search ddnet or ddracenetwork?
both ways
Avatar
Jupstar ✪ 2024-07-22 21:09
ok weird 😄
Avatar
it's just not certified to work, but it does
Avatar
getting certified, when?
Avatar
Jupstar ✪ 2024-07-22 21:20
21:21
very weird requirement xD
Avatar
Avatar
jxsl13
getting certified, when?
heinrich5991 2024-07-22 21:21
just a matter of flipping options. but we don't fulfill their conditiojs, I think
Avatar
hm, interesting 🙂
21:22
could be a big marketing boost
21:22
could(TM)
Avatar
Jupstar ✪ 2024-07-22 21:22
market share of steam deck is not significant enough i guess
Avatar
not significant in our player stats is probably significant
Avatar
Jupstar ✪ 2024-07-22 21:24
linux has a marketshare of 2% inside these 2% are steam deck users
Avatar
I would not approach it from a linux share perspective but from a how many people got a steam deck and what's the probability among other games that they find us and play the game.
Avatar
Jupstar ✪ 2024-07-22 21:26
i think ddnet sucks on controller xdd
21:26
i even finished a map on it
Avatar
Roby 4 the steam team
21:26
x)
Avatar
Jupstar ✪ 2024-07-22 21:26
do u have a steam deck?
21:27
playing with the thought but I'm too cheap for that currently.
Avatar
Avatar
GitHub
Click to see attachment 🖼️
maybe touch support improves the experience ._.
Avatar
Avatar
Jupstar ✪
do u have a steam deck?
when i start it just black screen XD
Avatar
Avatar
BlackHole
when i start it just black screen XD
Jupstar ✪ 2024-07-22 21:46
the native build?
Avatar
Avatar
Jupstar ✪
the native build?
yes
Avatar
Avatar
BlackHole
yes
Jupstar ✪ 2024-07-22 21:47
do you know how to change config?
Avatar
Avatar
Jupstar ✪
do you know how to change config?
nope
Avatar
Avatar
BlackHole
nope
Jupstar ✪ 2024-07-22 21:50
do you know how to add start arguments for a steam app?
Avatar
Avatar
Jupstar ✪
do you know how to add start arguments for a steam app?
yep
Avatar
Jupstar ✪ 2024-07-22 21:51
#8389 apparently known issue at least
Avatar
Reported by cheese0613, using SteamOS (works with Arch), not sure if the logs are related:
Avatar
Avatar
BlackHole
yep
Jupstar ✪ 2024-07-22 21:51
try "gfx_fullscreen 0" and make sure to include the quotes
21:53
afterwards try "gfx_backend OpenGL"
21:54
"Reported by cheese0613, using SteamOS (works with Arch)" maybe the steamos drivers are outdated/buggy?
Avatar
Avatar
Jupstar ✪
afterwards try "gfx_backend OpenGL"
ok it works now thank you
Avatar
Avatar
Jupstar ✪
afterwards try "gfx_backend OpenGL"
and we found new mini visual bug XD
22:25
when he(steamdeck) use hook collision i didnt see his hook colision if he dont touching his aim stick (edited)
Avatar
heinrich5991 2024-07-22 22:28
@Learath2 you don't like the idea of a basic xml parser that ignores every tag except <span style="color:#c00000"></span>? ^^
22:29
we could require a flag to be set so we interpret these tags, we could ignore the whole broadcast on parse error
22:29
it'd give us a clear, well-defined format that can also be extended should we ever feel the need to
22:30
I agree though that ANSI escape codes are also a good possibility
22:31
less typable though, maybe
Avatar
Avatar
heinrich5991
@Learath2 you don't like the idea of a basic xml parser that ignores every tag except <span style="color:#c00000"></span>? ^^
I don’t want to overcomplicate it, there is no hierarchy to broadcasts for us to benefit from something like xml in
Avatar
GitHub BOT 2024-07-22 22:37
Fixes: #8631

Checklist

  • [ ] Tested the change ingame
  • [ ] Provided screenshots if it is a visual change
  • [ ] Tested in combination with possibly related configuration options
  • [ ] Written a unit test (especially base/) or added coverage to integration test
  • [ ] Considered possible null pointers and out of bounds array indexing
  • [ ] Changed no physics that affect existing maps
  • [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#us...
Avatar
@isegrin @Headshot
Avatar
huh
Avatar
isegrin was interested in your ddnet ports
Avatar
ps3 port
Avatar
ohh
Avatar
i told him you did some, as he asked me to port it
Avatar
haii
Avatar
i'm currently working on the 3DS port so i'll still be posting here in the future
Avatar
i cant recall all the ports you did
22:41
which was it again ?
Avatar
ds, wii, ps2 and 3ds, in that order
Avatar
they're all on my github
23:00
4247cdc DDNet 18.4 - def- bbfefbb Merge pull request #295 from ddnet/pr-18.4 - def-
Avatar
GitHub BOT 2024-07-22 23:12
6dc0abf ci: Install Rust on macOS - def- 7e45b9b Merge pull request #8634 from def-/pr-rust - heinrich5991
Exported 1 063 message(s)
Timezone: UTC+0