1,713 karma · joined October 28, 2021
I'd be interested to hear what those actually expert in the field make of the article.
There is an easier and far more elegant way to solve this than the solution given. Consider the circuit as two superimposed elements; one with a current being injected at the first point and flowing outward to a sink at infinity, and the second with current flowing in from a source at infinity and exiting at the second point. (For the sake of argument, say the current is 1 amp).
The current flow patterns in each case are easy to calculate because of the symmetry of each problem.
Now add the two superimposed elements together, and the sources and sinks at infinity cancel out, leaving only the point source and sink.
You now know the current through the overall circuit and the currents through each resistor, and because you know the values of the resistors, you also know the voltages across each resistor. Add up the voltages along any simple path between the two points to get the voltage between the points, and since you also know the overall current, you can now calculate the equivalent resistance.
My favourite track is "Ssssuuuuft".
At the same time, open source projects can be pretty nimble in chasing things like changing APIs, potentially frustrating the effectiveness of API pivoting by NVIDIA in a second way.
When you're #1, you can go all-in on your own proprietary stack, knowing that network effects will drive your market share higher and higher for you for free.
When you're #2, you need to follow de-facto standards and work on creating and following truly open ones, and try to compete on actual value, rather than rent-seeking. AMD of all companies should know this.
A similar level of cross-platform library support for ActivityPub would greatly ease its adoption across the universe of Internet applications.
Reading the Arduino firmware suggests a data rate of 40 bits/s on the actual spaghetti strand.
Allowing for a start and stop bit, that's 4 bytes/second. Given a typical ping packet length of 56 bytes, and a negligble SLIP encapsulation overhead, I'd expect the outbound ping request would take 14 seconds to transmit, and the ping reply would take another 14 seconds after that, making 28 seconds in total (plus the processing latency, which should be negligible). The only way I can see it taking twice that time would be if the ping packets had truly unfortunate content of bytes that SLIP would need to escape into byte pairs, which seems unlikely.
I'm surprised the author didn't go for direct transmission of a 9600 baud signal; it wouldn't be too hard to use a DIY voice coil actuator to drive sound waves down the spaghetti at that frequency, and not too much DSP processing to amplify and clean up the measured movement at the optical sensor into a clean digital signal.
I feel complaining about it as insufficient is not the ideal way to push things forward. Instead, let's treat the progress on memory safety policy as a first victory in that process, and build on it.
Part of the reason for this, I think, is that Hollywood and TV depicts ludicrous levels of acrobatic and athletic capability as the norm; apparently normal people in movies are depicted catching falling people one-handed, outrunning explosions, and so on.
Climbing, even at an enthusiastic amateur level, is much harder than non-climbers believe, and I think your suggestion that readers try top-roping a 5.9/5.10 to get some idea of even beginning climbing difficulty is an excellent idea.
I cannot even imagine the level of dedication and expertise it takes to do this sort of feat.
The problem with async Rust is that the async idiom is new, and its interactions with the rest of the software ecosystem not particularly well understood. This makes async support glaringly different from the rest of the language.
I'm glad the designers seem to be taking a step back and reconsidering how everything fits together.
But a far greater gain is that Rust is designed right from the start with tighter semantics which make it more suitable static analysis, and that it is, unlike C/C++, largely free of undefined behaviour.
Multiple implementations make it much easier to do fuzzing and generate automatic test suites that may be used to improve all the versions of this critical utility.
And you're certainly right about government-mandated traffic hijacking.
Now, there are CAA DNS records, which serve the purpose of restricting the CAs that can sign a particular domain, which would of course be ignored by the malicious actor, but _could_ be checked by the end user's browser. But to the best of my knowledge, no browser does that.
I think an IPv6-compliance logo scheme would be a good idea, but it should be driven by major commercial vendors like Apple, Microsoft, Google etc on the software side, and supported by industry forums like the WiFi Alliance and the GSM Association on the hardware side. I would love to be able to ditch IPv4 entirely for running large production networks.
I think Apple have already started to enforce IPv6 support on iOS apps. It would also be interesting to audit open source projects for IPv6 support; just the presence of the appropriate API calls would probably be sufficient for a first hack to tell the difference between IPv6-compliant and non-IPv6 compliant applications. This would allow influential distros like Debian to start the process of deprecating old software which is incapable of working properly with modern networks.