It's not an analogy. It's literally what is happening. This is apparent by your own admission that each pixel displayed is an average of the last eight frames of that pixel. That is the definition of a convolution filter. The display acts as a physical convolution filter, which is implementing a low-pass filter.
Pure lambda calculus does scratch a weird itch I never knew I had. Someone recently made a super tiny language runtime based on these concepts. https://justine.lol/lambda/
> There is a workaround called "internal mutability", an ability to mutate state pointed by a shared pointer. That is syntactically slightly messier, and generally frowned upon.
I don’t see why this would be frowned upon. It seems to be a runtime version of the borrow checker. For sufficiently dynamic code I don’t see how you can get around checking mutability access at runtime (or asserting that multiple blocks of code aren’t concurrently requesting a mutable reference).
As a comparison, there are many cases where the compiler can prove that a bounds check is unnecessary for accessing an element in a vector but there are also many useful cases where it’s simply not possible to do at compile time. It would be silly to frown upon runtime bounds checks when the requested index or the size of the vector is not known at compile time, a common occurrence in many interesting programs.
I get the motivation to make APIs as statically checkable as possible but it doesn’t seem to always be practical. Reusable UI components can be used in a variety of contexts, e.g. situations with multiple callbacks for different backends. The information is just not always there at compile time.
I cannot take this criticism seriously unless you are more specific than “yeesh.” If you aren’t willing to be specific then better to not say anything at all.
> you just have to put them on separate interfaces
I don’t have to do this with normal data link layers. That’s the point of the complaint. Wireguard is not a true data link layer. Manually configuring multiple interfaces for something I can do with just one interface with a normal data link layer at runtime is an extra inconvenience.
> This is for exactly the same reason that a routing table can only have one default entry. If you want two default entries, make two routing tables.
Using nftables I can specify different routers to use based on arbitrarily complex packet rules. Using just one interface. I can’t do this with wireguard, it will only allow me to to route arbitrary packets to a single peer on an interface. This is an inconvenience.
> is just a particular case of their general propensity to follow rules.
Fair enough but this just kicks the can down the road. Why does Japanese culture have a propensity to follow rules? How can we duplicate that in America?
Do sociologists yet understand why some cultures are strong in morality yet some aren’t? Surely if we understood the forces that drive macro behavior we could duplicate desirable attributes like high morality in other cultures. I would really like it if we had this high level of morality in America.
> Nobody is being banned for dissent, they're having incorrect claims challenged and removed from sources like Wikipedia
Dissent is disagreement. People are in fact and explicitly being banned for disagreeing with the official information on COVID vaccines. Science is always changing and dissent is necessary to advancing our understanding of the world, whether it ends up being correct or not. When you ban people for “misinformation” you are impeding the scientific process.
> Those things aren't "clean and simple" code and the team of 30-something 1337 guys that wrote wasn't imagining you when deciding how the program would work.
If those 1337 guys were tasked with writing software to accommodate those use cases, I’m certain it would be better than software today that accommodates those use cases
> Also it's not like these programs aren't still available. Did you write this comment using lynx? Do you do your finances with "gnome spreadsheet?" Do you listen to music with WinAmp 2.0?
I was referring to 80s software, not 90s software. In terms of architecture, 90s software is closer to the software of today than the software of the 80s.
Yet he admitted to deceiving a customer in that same anecdote