aebletrae [she/her]

  • 1 Post
  • 11 Comments
Joined 1 year ago
cake
Cake day: July 23rd, 2023

help-circle

  • “Instance” seems too jargon-y to me as well, and “proxy” is even worse. “Server” and “host” are probably a little more familiar, but are still technical language.

    Confusion doesn’t stem from individual words; people need explanations and examples, but, as an alternative to “instance”, if you want to extend the “communities” metaphor, then “society” as a cluster of communities is a natural option, particularly since it relates to the widely understood concept of social media. Since most people using the Internet also know what a web “site” is, you could use the sibilant linguistic association to help cement the notion:—

    Each society has its own web site, such as:

    • aussie.zone, where the communities relate to Australia;
    • programming.dev, where the communities discuss software development;
    • and lemmy.film, where the communites are about movies.

    You can choose which society you want to join, although some will ask you to fill out an application. Most societies have connections to others, meaning that you can discuss things with people who are part of different societies. Often, you’ll recognise them by their username saying that they’re at (@) another site. Not all societies get along with one another, so which one you join will also affect who you can talk with.

    Each society has its own rules it expects you to follow, whether you are a member of that society or just visiting.

    This kind of language seems more intuitive to me anyway, although when I’ve tried describing instances and federation before now, I’ve likened instances to countries:—

    You choose somewhere to live (and you can move later if you want). If there’s a cross-border agreement, then you can send messages back and forth between people in each place.

    but this has also meant stressing that your instance “country” doesn’t have to match where you physically live, so a more general term probably would have been more useful.








  • I saw The Wrath of Khan as a kid, quite possibly before seeing any of the series, so there’s never been any question of it not being representative of Star Trek for me, though I can see how someone approaching chronologically might see more of a disparity.

    However, TOS had plenty of deaths, including destruction of starships, as did V’Ger’s, uh, collection of data, so does TWoK really stand apart in that regard? Chekov and Terrell kick off the plot while surveying planets, encountering a strange alien creature, and Kirk and co. find an underground paradise; I see that as fitting the explorative aspects of the show, at least somewhat. The villain is defeated with teamwork, deception, and by outplaying him, common to the original series. And the story raises some ethical questions regarding cheating, playing god, and marooning, again in the tradition of the show. I see the differences as more stylistic than substantial, but as I said, personal history affects my perspective.

    As far as general movie principles go, music can be a strong influence on audiences, and Wrath of Khan has a great score.


  • Having thought about this some more with practicality and clarity thrown out the window in favour of abstractions, how about this?

    A game is a sequence of moves. Past moves are immutable, future moves unknowable; a singly linked list fits the bill here.

    Each move consists of a player token and a position. The position might ordinarily be thought of as a grid index but, as you point out, it could just as well be membership in one of the potentially winning lines. Either a move is part of one of these lines or it isn’t. This makes the position equivalent to a bit field. If each potential win line is distinct, they could indeed be held sparsely in a set.

    Checking for a win then consists of counting player tokens for each potential win line and checking for crossing the necessary threshold. Filter, sum, max, greater than?, any?

    I think this scheme would be applicable to arbitrary game boards, with none of it requiring mutation. Is that the kind of thing you were after? The reflection/rotation equivalence isn’t present here, but I still think that’s more an artefact of analysis, rather than a property of gameplay.


    1. The ordering of each row should not matter.

    This is true for your abstracted rows, but is maintaining eight sets of three square states, two or three of which must be updated with every move, really a better model than a single sequence of nine, where only one needs to change at a time? It’s more complex to think about, and is less efficient to update. When you throw in steps to canonicalize the rotation and reflection, which may produce different transformations from the input/output grid on the first three moves, you may need to change even more set items with each move.

    It’s true that, mathematically, the mapping from grid to sequence is arbitrary and the only thing that matters is consistency, but if you view programming languages as a way to communicate with humans, then clarity of purpose, rather than mathematical idealism, should be your goal. Use a nine-item array or a three-by-three nested array for the underlying storage and treat your eight win-checking sets as views into that more ordered structure. These views could well be functions that return a set and are themselves held in a set to be applied in any order. Similarly, treat canonicalization as another way to view the underlying board.

    You could sidestep the mutable borrowing by not mutating individual squares. Take a leaf from the functional-programming books and use a function that takes a board and a move and returns an entirely new board. Or takes a board and returns one of the abstracted row sets. There are only nine squares and nine moves. The win-checking views aren’t needed before move six. A bit of copying isn’t going be a problem.