npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

iray

v0.0.2

Published

Iray is a _work in progress_ specification for a data storage solution that generalizes event sourcing.

Downloads

4

Readme

Iray

Iray is a work in progress specification for a data storage solution that generalizes event sourcing.

Format specification

Iray is a media agnostic syntax. It can very easily be formalized as a text or graphical syntax, but the format does not limit itself to any particular graphical or aural representation. The rules of syntax for an Iray log are:

  1. There is a special element which is the sentence separator. A sentence separator defines the end of a sentence and the beginning of the next sentence. Sentence separators connect the previous sentence with the next sentence. Separators needs not be characters. A line break in a physical paper can be a sentence separator. The start of a page can be a separator. Changing the color of the ink can be a separator. Separation might occur automatically after a certain number of characters. All of this and many more are valid separation mechanisms.

  2. The content between between separators is called a sentence. A sentence can be conformed by anything that can be hold between separators. Text between empty lines can be a sentence. A drawing in a page can be a sentence.

  3. There is a first sentence. If the representation of the data is cyclic (for example in a ring) then one sentence has to be defined as the first. How the first sentence is defined is related to what constitutes a separator. For example, in a piece of paper where a line break and the start and end of the page are considered sentence separators, the first sentence after the start of the page can defined as the first.

  4. The first and second sentence together form an atom. The third and the fourth sentences form another atom. And so on. The first sentence in an atom is called the top of the atom. The second sentence is called the bottom of the atom. The atom represents the relation of the top sentence with the bottom sentence. This relation does not need to be directed. Whether this relation is directed or not is up to the projector. This relation is defined paratacticaly, by juxtaposing the two sentences. No extra syntax is needed to form an atom: just the fact that two sentences are contiguous, and that they are in position 2n and 2n - 1, where n is a counting number. This definition assumes the counting numbers being used to label the sentences, so first sentence is number 1, and so on.

TODO Sentences could also be called something along the lines of "virtual atoms". The goal is to highlight that they cannot be taken on their own, because full existence requires articulation—that is, relation. Terms without relation collapse into unreality.

Maybe rename atom as node... Maybe rename sentence as term...

sentence -> atom -> fact -> claim term -> node -> leaf -> link

Linking and Projecting

Event Log -> Generalized Graph  -> State Tree
                                -> Directed Acyclic Graph
                                -> Merkle DAG
                                -> Directed Graph
                                -> Complete Graph
                                -> Connected Graph
                                -> [insert topology / geometry here]

Unorder thoughts

This section is just stream-of-consciousness type thoughts. I gather them here for the sake of illustrating the background that this will take.

  • Events are stored in a sequence that implies temporality
  • Juxtaposition (parataxis) creates local connectivity
  • The άτομο of knowledge is the relation.
  • A mutual relation is an isomorphism. Acyclic graphs are extracted of cyclic graphs by taking the cycles as isomorphisms and collapsing them
  • A self-relation is a self-isomorphism. A self relation is a tautology that simply asserts reflexivity. It is neither discouraged nor encouraged. Self-relations assert identity.
  • Relations can be represented beyond sequential parataxis by use of references. References require of a resolution mechanism. The simplest resolution mechanism is mapping of the sequence to the natural numbers, so a natural number can be taken as a reference to an atom.
  • Atoms can contain references or be simply declarative. Whether they contain references or not depends on the resolution mechanism.
  • Atoms that contain no references are called facts. Facts cannot be true or false. Facts are simply declarations. Truth value requires of a resolution mechanism.
  • Atoms that contain references are called claims. Claims can hold or not. Whether a claim holds or not depends on the resolution mechanism.
  • Resolution mechanisms have two parts. The first one is the one that collects the facts and related them by the claims made about them. This part is called the linker. The second one creates a view of the facts and the claims. This is called the projector. The projector imposes a topology / geometry on top of the linked graph. The restrictions embedded in this topology / geometry add degrees of freedom to the projection, and also create failure scenarios, where certain claims are asserted to be wrong.
  • The most general resolution mechanism accepts all claims. This is what the linker does.
  • Property addition is done in the guise of claims. A relation is constructed between the object and the property. Asserting that a claim defines a property of the object is something that is the prerrogative of the projector.

Furthermore:

  • The goal of data storage is data articulation. Unsorted data is indistinguishable from no data.
  • All knowledge acquisition is the creation of relations between elements in the existing corpus of knowledge and the elements of the new knowledge.
  • A new element being added is a akin to a phenomenon appearing to perception. This means that a kantian view of gnoseology is assumed by this mechanism of knowledge articulation. New elements that are added to the log appear to perception out of the noumenal world. This mechanism of data storage makes no assumptions about the nature or structure of that noumenal world.
  • The goal of data articulation is intelligibility. This means that the manner in which data is stored and articulated needs to be accessible to human intuition (and to intuition in general). Esoteric data articulation mechanisms are undesirable (although inevitable, as a function of complexity).
  • The a priori structure of reality provides a natural (that is, necessary) manner of articulating knowledge, as sequential and relational. Time as a category is represented in the necessary sequentiality of the resolution mechanism. Space as a category is represented in the metric emerging from the relations, as they grow in complexity. A thesis of this approach to data storage is that parataxis is the natural way of representing sequentiality, and an identification mechanism is the natural way of representing relations. This also means that assumed here is the fact that n-dimensional representations can be stored within a one dimensional structure. This shows parsimony with the holographic principle.
  • Because relations are themselves atoms and can be the target of other relations, there is a self-referential quality to the emerging structure. This means that the structure is capable of representing recursive structures, and structures of any dimensionality. This is taken as highly desirable.
  • Even facts are relations. Just local relations. This assumes that equality and identity are only meaningfully defined up to isomorphism, and that in order to be motion, there needs to be plurality. It also shows affinity with lambda calculus.

Finally:

  • This is an attempt to find an knowledge structure storage solution that is philosophically necessary, and in which nothing is invented or accidental. The necessity is that of being able to describe any constructable data structure and of not using any superfluous artifice while doing so. I don't claim the attempt to be successful; I only claim the attempt to be the best that I can do at the present time, and better (that is, more essential) than any other solution that I'm aware of.
  • A moral reason for minimizing the syntax is that every syntactical element introduces an assumption that the user needs to adopt to use the language. Because once languages turn from foreground into background (once our goal is to use them to communicate and we no longer focus on them as the subject of study), introducing assumptions in the guise of syntax has the equivalent effect to sneaking a premise in a judgement. This is because any judgement formulated in the language uses the premises of the language as starting point. Premises are inevitable: getting rid of them completely is not my goal. My goal is, instead, to minimize the amount of premises and shine the spotlight on the ones that need to be taken for granted in order to use this language. It's my belief at this time that stating the premises that are sneaked into the language clearly is a step towards honesty. Someone with more philosophical understanding might be able to justify extra premises being added, but I struggle to justify even the ones that I made here as necessary, so I prefer to err in the side of minimizing them.