Corbin

@Corbin@programming.dev

This profile is from a federated server and may be incomplete. For a complete list of posts, browse on the original instance.

Corbin ,

Direct rendering infrastructure in Linux predates widespread use of "digital rights management" as a term of art by about two or three years. "We were here first," as the saying goes. That said, the specific concept of direct rendering managers is a little newer, and probably was a mistake on its own merits, regardless of the name.

Corbin ,

Oracle Ruined America's Cup (Larry Ellison)

What do you call application modules that are responsible for business logic?

Somewhere between API resources, queue workers, repositories, clients and serializers there is a class of ... classes/modules that does the needful. Gun-to-my-head, I would call them "services" but I'm looking for a less overloaded term. Maybe capabilities? Controllers? Pick a term from the business domain? What do you call...

Corbin ,

At their most general, they are "data processors." In common parlance, they're often called "algorithms," although some folks insist that that is reserved for programs with trivial control flow. For disambiguation and comparison:

  • A service is an API surface and a contract promising that the surface has certain behaviors; data processing may be part of how the API is implemented. In practice, a service is e.g. an HTTPS endpoint and an OpenAPI specification.
  • A capability is a copyable token which simultaneously authorizes its holder to perform an action and designates the holder as having the authority to perform that action. This won't be part of your normal curriculum and training; see this post for an introduction, or this story for motivation.
  • A controller is a modulator for a (distributed) system. Typically a controller is anything which is actuated by a control loop, although sometimes a controller can sit outside of the system. Common examples include MVC patterns, k8s components, and video-game controllers.
Corbin ,

The biggest barrier is writing lots of formatted data to disk without a pre-existing filesystem structure. Look at nixos-anywhere for an example; the first thing it does is ensure that it's booted into Linux, because otherwise it can't trust that the disks are laid out properly.

Corbin ,

Steps 8, 9, and 11 assume that the filesystem is in a Linux-compatible state and Windows-compatible state simultaneously.

Predatory forcing of circular dependency?

I think ---DOCKER--- is doing this. I installed based, and userspace(7)-pilled liblxc and libvirt and then this asshole inserted a dependency when I tried to install from their Debian package with sudo dpkg -i. One of them was qemu-system, the other was docker-cli because they were forcing me to use Docker-Desktop, which I would...

Corbin ,

If you have the time and spare credits (and the cash to pay for tuition, of course) I'd recommend a basic humanities course or two. An intro to English literature is usually straightforward and easy. World history is great; history of the 20th century is also great, for different reasons. Personally, I recommend some sort of into to philosophy or epistemology; another mind-opening one is intro to anthropology or comparative values & beliefs. Ask your course counselor about this.

In general, if possible, I would recommend that you consider what it might be like to have a bachelor of arts instead of a bachelor of sciences. If your school offers it, it would be a much more balanced degree.

Corbin ,

Ah, no worries. There should be an introduction-to-literature course in your native language, covering the classics and important works of your native culture. I still stand by the rest of the recommendations. By "bachelor of arts" and "bachelor of sciences" I mean how your college/university accredits degrees; computer science and engineering are usually "science" degrees but many universities have an alternative "art" version that you can choose.

Corbin ,

Nah, even if there were one holistic/catholic/apostolic/ecumenical GNU/Linux distribution, it would not follow that it's "better than Windows" for many folks, let alone that "people would move". Folks are very slow to adopt new technologies, very hesitant to step outside of an established market duopoly, and generally not prepared to work with computers as they are.

Also, you'd have to switch to NixOS.

Corbin ,

A PDF is available here, and analysis from Colyer 2016 is good.

This paper is fascinating in terms of ethnography. Consider: the paper mentions "branch" or "branches" dozens of times, but only says "tree" four times, and every instance is in the phrase "working tree". The paper never mentions "blob" or "blobs", "DAG" or "graph" or "poset". The authors either chose to omit git's data model, or they don't know about it. The implication is that the UX and UI don't reflect the data model, I suppose, but it is a very curious omission.

Now, contrast this with Git's documentation. When sysadmins teach git, we focus on the data first. git is a kind of database which stores four different flavors of object, and the git UI is merely a collection of commands for programmatically manipulating the database. All of the various UX is purpose-built, on a per-command basis, for development workflows. New commands can be implemented as plain UINX-style executable scripts in any language.

In summary, this paper looks at git as a version-control product, while its developers and users look at git as a version-control framework.

There was a followup paper from a few years later, also with Colyer 2016 analysis; this paper has too many glaring defects to discuss here.

On a personal note, I saw this and am happy to note that science has marched along:

We plan to extend our notation to make it more expressive in the future, but are cognizant of the fact that diagrammatic syntaxes for first order logic have a long and troubled history.

Not long after this paper, ontology logs were figured out, which can be made as expressive as needed for the case of relations; see Patterson 2017.

Corbin ,

I agree that the UX of existing git commands is not great. They evolved in a particular insular environment -- Linux kernel development with heavy mailing-list usage and large multi-headed merges, with occasional pull requests and manual integration testing.

Check out my top-level comment for a link to git's data model. A data-first approach with blob, tree, commit, and tag can be enlightening. The on-disk format tries to balance integrity, easy manipulation, disk space, and incremental updates; it's also weakly monoidal, enabling distributed development. Look up the history of Bitkeeper and git; this is "a version control system [designed] from the ground up with documented architecture from the start"! And there are many non-C implementations as a result, like pure-Python dulwich.

Corbin ,

The original workflow, which is still in use today, is git-blame followed by git-show: look up candidate commits, then examine their history individually. This can be accelerated with a GUI; e.g. GitHub and GitLab support blame-style views.

Corbin , (edited )

The nix-shell advice is cogent enough that somebody might use it. Instead of a bare bash script, consider direnv, which scopes each shell session to a directory and has upstream builtin Nix support.

Edit: When laning with two mages in bot, focus on harassing enemy champions instead of farming. For Veigar, line up each Q to hit a minion and a champion, combining the farm and harass into a single action. Do not be aggressive in the early game; AP takes time to build. The deaths at 13min and 15min were due to aggression, and by 18min it looks like tilt. Ward more; at 22min, Veigar is alone in lane with no visibility into nearby bushes, and 4/5 enemy champions can burst him down if he misses his cage. Rod of Ages is a good call, but an Hourglass would be an even better call, as it can nullify damage from Ahri and Zed combos. Finally, don't do fadeaway ults at the end of Veigar combos; it feels satisfying, but isn't as much damage as carefully-timed Q.

Corbin ,

I've put ASTs directly into git repositories by encoding each leaf as a blob and each tree as a tree. Since git objects are content-addressed, this gives deduplication of ASTs for free, including CSE for sufficiently-pure ASTs.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • random
  • test
  • worldmews
  • mews
  • All magazines