I will never not be salty about Linux winning the benchmark wars for years because it didn't care about data reliability. Who cares if fsync says data is on disk, and then it's not there after a power cycle?
So, you know how I was complaining about Ruby not being formally specified. I was very wrong. There's an ISO standard specifying the ruby language: https://www.iso.org/standard/59579.html
Now since it's behind a paywall (and I haven't spent time trying to access it via the various free ways), I don't know how good it's specified, but clearly someone did.
Of course probably a subset of real ruby, but at least it's close/starting point.
@danmcd I'm sorry. I've had a LOT of troubles reading ngtcp2 code because the indentation is to small, so when you have a 50+ line indented blocks, it's kinda hard to determine when various blocks end.
The problems I'm having w/ lldb and debugge is exactly WHY printf debugging continues to be king, because it shouldn't be this hard to do the basics.
Right now I'm spending multiple minutes because `list <function>` doesn't work in lldb, and none of the cheat sheets include this.
``` (lldb) list mem_default error: Could not find function named: "mem_default". (lldb) list libngtcp2.16.dylib`mem_default error: Could not find function named: "libngtcp2.16.dylib`mem_default". ```
Immediately before, I printed a struct that contains a pointer to this function. That it knows the function name, and lldb doesn't even recognize it's own NAME for the function is how the computer industry makes things so much harder than it needs to be: ``` (lldb) print *conn_ref (ngtcp2_crypto_conn_ref) { get_conn = 0x000000010162c0b0 (libngtcp2.16.dylib`mem_default) user_data = 0x0000000000000800 } ```
Ok, figured out why I couldn't print the function mem_default, is that because despite it's location being stored in a function pointer, it is a structure. Not to figure out what pointer BS is happening to cause this.
One of the thing that drives me nuts is when related code is separated from itself in a single function. E.g. ``` params.stateless_reset_token_present = 1; [unrelated settings and other code] if (ngtcp2_crypto_generate_stateless_reset_token( params.stateless_reset_token, config.static_secret.data(), config.static_secret.size(), &scid_) != 0) { return -1; } ```
Like set the reset_token_present value when you generate the reset token!
Slowly removing my xitter presence, so I keep control of my handle. Once it's done, likely in a week or so as I need to do it slowly to prevent rate limiting, I'll post more on how I did it for others.
Sorry to those that QT'd my posts and now will be broken, but should have archived it.
If you ask nicely, I can send you the tweet information if you provide me the tweet id.
Just a reminder, the IETF still has not figured out (published an RFC) on how to keep the servers that people visit private from their VPN or ISP provider. ESNI was scrapped in favor of ECH, but ECH is still in draft: https://datatracker.ietf.org/doc/draft-ietf-tls-esni/22/ .
This has been a known issue for decades, and even after the IETF pledged to take privacy and security seriously over a decade ago, this seriously privacy hole is still wide open.
(I hope ECH is beeter than ESNI in protecting privacy, will look.)
TFW an API is so fast, that you don't think it's calling an API.
Was getting one response from a program, did something on the internet, and got a changed response from the program confirming that it was actually making an API call.
Just remember that blindly replacing strncpy can (and has many times) result in info disclosure bugs. It is often used in the kernel to fill a fixed buffer with a string, but also to make sure that the slack space doesn't contain extra info.
He does say it can be used safely/properly, and in general, it usually should be replaced, but not without analysis first.
@feld@darth@RTheren I think that specific problem w/ Intel nics has since been fixed (the patch in the page doesn't apply as driver has changed dramatically since). At least the driver appears to support it, and my igb nic uses 4 RX and 4 TX queues. I think it does require MSI-X interrupt support, which may be a problem for lower end hardware.
And looking ng_pppoe doesn't set NG_NODE_FORCE_WRITER (confirmed looking at code) so it's multithreaded.
@feld@darth@RTheren Also, I was surprised at the CPU decrease by switching from a dual Intel gige nic to a Chelsio T520 10gige w/ a 1000base-t SFP module.
Really, it's likely a combination of those ethernet drivers being slow, the ethernet hardware itself being slow, and that there aren't "cheap" arm boards that have half decent CPU performance. (10gig cards can do multiple queues, which very few gige nics can do, or if they can, drivers don't support it, or support it poorly).
What specifically? That PPPoE is slow? Are people really running PPPoE at gigabit speeds? Are there actual fiber installs using PPPoE? or is this for VPN usage?
It does look like pppoed is using netgraph, so it should be resonably fast. I think it's more of a problem of networking/firewall just being slow on lower end arm boards, and why I switched to a SFF PC for my internet router: https://flyovercountry.social/@encthenet/110895206283732462
I will never connect a TV to the Internet. Use one of the dongles that are avail to stream to your TV. This also prevents spying on when you watch live TV
But in all seriousness, this is a good point. It could be solely based upon ping times. But then the algorithm to decide this will be pretty damn complicated, having to collect latencies.
FreeBSD developer, consultant. Documentation!crypto means cryptography.tech is inherently political.Do your part, encrypt the Net!if something is bullshit, spell it (bullshit) out, don't sugar coat it.Add alt text to images.All alt text posts are CC BY-NC-SA 4.0: https://creativecommons.org/licenses/by-nc-sa/4.0/For commercial use, license available upon request, $75/post (i.e. if the alt text takes 3 posts, it'll cost $225 to license), just send me a message w/ where I can send the invoice.