I have used both editors quite a bit and did like both of them.
509 karma · joined May 29, 2012
I have used both editors quite a bit and did like both of them.
If "modern" means complex, I don't think it fits Plan9.
I still remember the two gentlemen in their black, faux leather jackets who rang our doorbell and demanded to see our dinghy. (dinghies where registered products too) We showed them our dinghy, they said thank you and left.
Probably someone fled over the Baltic sea to Denmark in a dinghy. So the secret police went from door to door until they found someone who could no longer show it to them...
This was in the late 80s.
https://dl.acm.org/doi/10.1145/358438.349303
(this is not about x86 but PA-RISC, but the conclusions would likely be very similar...)
Completely agree that the presence of bikes and scooters on the sidewalk is annoying and dangerous. The city changed the rules a few months ago and now there is a 500€ fine if you use them on the sidewalk. That fixed the problem. They have to use the street or one of the many bike lanes.
No idea how it is in Paris, but there are places where living happily in a city without owning a car is perfectly possible, even if you have small kids.
Eventually I gave in and bought a car, not because it was necessary but rather to leave the city on weekends and get closer to nature.
They also control the OS and don't allow side-loading or other app stores (without putting absurd obstacles in the way) So in the end they completely control the devices they sell.
I have one question: Did you really implement this in Python? Why not C++ or Rust?
And last not least, unknown memory latency is not the only source of problems, branch (mis)predictions are another. And they have the same remedies as cache misses: multithreading and speculative execution.
So if you wanted to get rid of branch prediction as well, you could come up with something like the CRAY-1.
Crafting a protocol after the fact to match some class' interface (and then put an empty extension) seems just wrong.
I very much prefer to pass simple types around. (like two closures in this case) You don't need to remember any protocol name and don't need to define a ton of mock objects.