DNS caching and thus the load distribution is outside the control of the entity running the servers. You assume you get roughly same traffic on each of the published IP addresses, you even think you can advertise some address twice so that it gets twice the load vs other severs (if you just set up a server capable of serving twice the traffic), but the reality is one of these IP addresses might be used for 90% of the requests (as an example) due to caching and bad luck.
So no, you cannot reliably control load balancing using one domain name pointing to multiple IP addresses. (IP anycast is better suited, but much harder to implement)
This has a big upside: I can now MITM any Android app / IOT device without any suspicious set up on the device? (given it'll run on the unupdated OS and that cert revocation is not ON).
> And for computers, most people could probably make do with machines that are many years old and not feel a difference in their capabilities.
That would be true if not for 50MB-heavy JavaScript webpages.
Same goes for smartphone apps. Facebook app used to be a few megabytes in size and it was already very big compared to other apps you had on the phone.
I bought a refurbished Thinkpad from 2021 to be my daily driver. 32GB RAM. Paid a few hundred bucks for it. I didn't do it for environmental purposes, I just figured that the specs were more than good enough for general use and software development. Has the added benefit of not becoming e-waste.
Works like a charm, does everything I need, just not very good for more demanding games due to lack of a dedicated GPU.
I started wondering if there could be swap-aware GC, like first make the required page swapped in (not that there's any obvious API for that...) and only then pause the world?
You could do lots of interesting things with sufficiently deep inter-layer integration.
For example, why not swap out not by LRU page but by dense node clusters on the heap graph, maintaining in-memory summaries of inbound and outbound edges for liveness? If you do this, you don't have to swap the cluster in to do a GC involving it.
If the whole cluster becomes unreachable, you wouldn't even have to swap it back in to get rid of it: you'd just drop the swap reference and deem the swap space free.
I don't see anything this deeply integrated happening near-term, but it's fun to think about.
Probably more mlock (keep memory area in RAM), mincore just tells you what is or is not in RAM, and madvise is about access patterns.
You could MADV_WILLNEED the GC metadata when you start the GC process hoping they’ll have been paged in by the time you STW, but assuming that area is not massive it’s probably a better idea to just prevent it being paged out.
I was assuming they meant for the heap. Not even executable memory is locked though, so if you mlock too much memory the kernel will page out your executable instead. Something has to give, so it's better to schedule it.
On a lower level, the OCaml and cpython GCs use a prefetch buffer during marking to schedule around the cache.
One can just add APIs to the Linux kernel, and this would be a pretty straightforward one. (though it might be a little more difficult to avoid a syscall here)
I'm sure an agent can work on this and get some numbers with a day's worth of tokens.
I was biten by not understanding madvise(MADV_WILLNEED) semantics fully. It will prefetch, but it will not pre-fault. You still gonna pay minor page fault on every new page access. There is MADV_POPULATE_READ, but it is synchronous.
I think we are not realizing the paradigm shift here. A coding agent can implement this with a modest little day’s worth of tokens. This means that no one needs to read or know the APIs any more. We can just add them to the kernel as we need them. Then when we forget that we needed them we can just rediscover the API idea later and spend a day’s worth of tokens. (But let’s be real here. By then it will probably be just 1/3 worth of tokens with all the model improvements as well as the ample training material.)
Thankfully, we can now use AI to design a test that tests AI. And the AI company can use AI to detect the test and cheat. And we can then use AI to implement anti-cheat.
All that energy wasted... could just drive a big V8 instead and make less money for the big tech
For "this or any later version", I have always read this line as you get to choose which version you want to follow, not the one granting you the licence.
Yeah, but I think the main point is that the GPL 'at your option any later version' clause is a burden on the developer, not the user. Suppose that the software is under the GPLv2 (with the later version clause) and the FSF has a hostile takeover. If:
- The FSF makes a GPLv4 to remove all commercial use, it's not a problem for the user since they could stick with the GPLv2. It's not a problem for the developer either, since the extra requirement that they may not agree with is only optional (since the GPLv2 can still be used).
- The FSF makes a license that says: screw copyleft, GPLv4 is now the MIT license. Again, it's not a problem for the user, they can either continue to use the GPLv2 or make use of the additional liberties of the MIT license (e.g. using the code in close source work). But it is a problem for the developer. They chose to use a copyleft license and now everybody can grab their code and use it in closed source software, etc.
This is vastly different from the Dropbox changes, since every update of the terms affects the user.
Though even the "user" might be harmed, because you might get a device shipped to you with what-was-previously-copyleft software, and now you can't ask the vendor (also the "user") for copy of the source code since they can claim "we are using it under the terms of v4, sorry".
Good point. IANAL, but I think that is more murky terrain. Downstream redistributors like the vendor are not allowed to remove copyright notices, so I think the notice to get it under the GPLv2 or later is passed to the user as well. Not sure which one would weigh stronger then, the copyright notice or the claim of the vendor to ship under a newer version of the license.
Another question is whether a newer version would even apply if it was not in the same spirit as the included GPL version, since the license also states:
The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
Again, IANAL, but I always felt like many of the parts of the GPL are ambiguous and the interpretation would only become clear in a court case.
For the GPLv2 there is already a lot of malicious things a vendor can do anyway. In contrast to the GPLv3, GPLv2 does not have the 'anti-tivoization'-clause. So, even though the vendor may be required to provide source code, you may not be able to run the software with your modifications anyway, because the vendor uses a bootloader that will only run software that they sign.
* A German court process found that the GPLv2 does have an anti-tivoization clause
* If the FSF published something clearly against the spirit, like "Microsoft can take ownership of your IP", it is not clear a judge would allow this. If it's within the same spirit, like "you agree to allow forks that aren't substantially different to use your trademark", they probably would. Legal loopholes aren't like computer hacking, they are social engineering.
* If I can use it under GPLv2 and GPLv2 allows me to redistribute it under GPLv2, then I can redistribute it under GPLv2. "Or later" means that I can pick a version to comply with, not that I have to comply with all of them simultaneously. So I can always remove the "or later" clause. I can also change it to "GPLv3 or later" since I may choose to comply with any subset of the allowed licenses (here all of them except for GPLv2).
It is capitalism doing capitalism stuff, but more fundamentally technology is allowing for more centralized control of more things by fewer people. Regardless of ideology, increasing concentration of power has bad outcomes for people (except the ones in power).
So no, you cannot reliably control load balancing using one domain name pointing to multiple IP addresses. (IP anycast is better suited, but much harder to implement)
reply