Christine's Computing Snarks ============================ I'm not sure how much knowledge you will gain from those snarks, but it will probably not be zero knowledge. The safest way to use computers is abstinence. The second safest way to use computers is object capability security. Privacy is an unwinnable war that must be fought anyway. Vocabulary is an unwinnable war that must be fought anyway. Don't pretend we can prevent what we cannot. (This is a retooling of an old ocap phrase: "Only Prohibit What You Can Prevent". Similar, but different.) Functional programmers see side effects as toxic, object capability security programmers see identity as toxic. But computers aren't very useful without keyboards and monitors and computing isn't very useful without being able to talk about anyone. Functional programmers provide an entry/exit with monads; ocap people provide an entry/exit with Horton. "Confused deputy" is a confusing term; it's even more confusing that none of the terms proposed in the following three decades were any better. Naming is the ultimate bikeshed; you can never seem to put enough coats of paint on it. Noncommercial licenses don't compose and never will. "Worse is better" won, and now we're suffering the worst of it. The only syntax worse than Lisp's is all the other ones. In the 20XXs you had a lot of people criticizing hipsters, but there was nothing more hipster than criticizing hipsters. Thus even this conversation is a three-layer-deep form of hipster recursion. The world has mostly moved past "hipsters", but the pattern underlying "hipster recursion" is forever (see also "virtue signaling" being a virtue signal). "Decentralized convergence" and "decentralized autonomous cooperating agents" are two useful and necessary patterns. But the former makes it too easy to build decentralized centralization. Start with local and intentional contexts; only add global contexts when you really need them, and then try to figure out why you didn't. Every time I play the board game Risk with friends, my friends leave angry. Every time we play Pandemic, we leave with a hug. But imagine how different it would feel if the manual had a rule stating "mandatory hugs"? Sometimes what we want is an emergent behavior that is lost when we try to force it. Become architects of emergent behavior. Advancements come not from looking at what ideas are hot and popular but from searching the bargain bin of computer science history for the solutions that were forgotten. But beware: dust is a common allergen. The persuit of money above all ends might be evil, but you can't escape money. Money is reinvented eveywhere: board game players will always move to the most general resource at the table. You can't even outlaw it: prisoners will trade cigarettes or ramen. Currency as an abstraction over resources usually isn't the problem, but something adjacent to it probably is. Dynamic scope is ambient authority; lexical scope is object capability security. Petnames are lexical scope too; the approach that ocap people take to naming can be seen by examining "let". The only thing that's usually worse than an established computer science term is its suggested replacement. Program confinement is a best-effort game. Prisoners will always find new pipes to bang on. (Thanks to Mark S. Miller for the "banging on the pipes" metaphor.) Lojban is a good indicator of what pronouns are. Lojban's pronouns generally lack gender or quantity information by default, but such information can be appended, but so can all sorts of other information. Pronouns are just local temporary variables to bind information to. What is the consequence of the information-prioritization of your language design? Conlangs are probably hopeless for human communication. But they're fairly useful for learning about human communication. Present is a function that consumes a stream of future and outputs a stream of past. Unfortunately, most of us are stuck with the imperative implementation. Privacy is your local scope where you perform your local reasoning. Without privacy, agents don't have the space to be themselves. Inheritance diamonds taught people to fear class-based object-oriented-programming for the same reason that order-of-operations teaches math students to fear math. If you're trying to design a clever infix notation, you're going to design something too clever to be correctly used or read. The only thing worse than a get-rich-quick-scheme is a get-rich-quick-programming-paradigm. Being snarky isn't an indicator that the speaker is smart, but it's a good way to trick the reader into feeling that way. That includes this document. Criticism is important, and so is work stemming from critical thinking. But self righteous poke-in-the-eyes types are a dime a dozen. Learn to distinguish between criticisms to build up society vs criticisms to build the speaker up. And don't let them kill your constructive energy. Borrowed Snarks =============== Language is a continuous reverse engineering effort between the parties involved. -- Jonathan Rees If we ever show a decentralized identifier to a user, we have failed. -- Mark S. Miller Only make bets where if you lose, civilization has already collapsed, that way you don't have to pay it back. -- Kate Sills 3-D is an attribute, like the color blue. Any time you read or hear about how great 3-D is, substitute the word blue for 3-D. -- F. Randall Farmer Bonus bonus snark (aka, something you've said without saying it): If you put your thoughts in a text file on a web server, you don't need to install a blogging platform. -- Anton https://icosahedron.website/@anton/107662101037099680 -------------------- (If you like this kind of thing, you might like:) https://www.cs.yale.edu/homes/perlis-alan/quotes.html