9 Matching Annotations
  1. Last 7 days
    1. Applying it to the design of the web we aim to create a system where we can do everything offline and in local networks and the connection to the internet is optional. This will help the neuronal groups be more resilient and fast. We invite others to join as co-creators to build a local first version of the Internet together.

      Para Cardumem el enfoque, como he dicho en otros lados es diferente, eligiendo una arquitectura federada, que incluye los servidores ejecutándose localmente y con menores complejidades arquitectónicas.

    2. The problem is that the modern Internet relies strongly on cloud technologies, where client applications communicate with each other only via servers. It is akin to having a server between any two neurons in the nervous system, or each neuron being inside a box that decides if the signal from this neuron can go through.

      A menos que cada uno tuviera su propio servidor y los servidores centralizados fueran usados sólo para coordinar comunicaciones, como ocurre con Fossil y ocurrirá con Cardumem. Así, la centralización ofrece conveniencia pero no usa asimetría fundamental de capacidad o poder, como ocurre actualmente y servicios/protocolos de descubrimiento de servidores podrían ser implementados sobre la infraestructura cliente servidor actual, en caso de que algún servidor sea dado de baja.

    1. We’re bringing a social experience to Anytype by making spaces more interactive. We start with the concept of one space = one group = one chat. Then we’ll expand to include discussions on objects, enabling forum-like use cases. It will significantly improve collaborative use cases. You’ll chat and discuss your pages and files in the same end-to-end encrypted and local-first way.

      Acá hay transiciones en los siguientes cuadrantes:

      Cardumem toma una ruta alterna y más sencilla para explorar transiciones similares.

      1. Inicia por el wiki, como software documental asíncrono.
      2. Se conectará con HedgeDoc como software documetal síncrono.
      3. Se conectará con Hypothesis como software dialógico asíncrono.
      4. Implementará progresivamente funcionalidades síncronas vía sistemas hipermedia en tiempo real.

      La idea de local primero ocurrirá debido a que el servidor puede correr de manera local o remota.

    2. We saw block-based editors as the future, not just for productivity but for social interactions. We centered Anytype on unique and extendable primitives: objects, types and relations. Why couldn’t a page be a blog post, a forum thread or some other object? Why not connect everything in a unified graph database, viewable as sets and collections? We were thrilled with the possibilities, though the complexity was immense.

      Es interesante esta generalidad desde los bloques (objetos, tipos y relaciones, que se juntan en un grafo). Los Dumems en Cardumem son otra forma de generalización desde el hipertexto programable (gracias al scripting en YueScript) y los metadatos personalizables que permiten las tablas de Lua.

      Sin embargo, para disminuir la complejidad y aumentar la practicidad, en Cardumem no apuntamos a tecnologías de la llamada web 3.0, sino que usamos las buenas y confliables web 2.0 con algo de retrofuturismo en los sistemas hipermedia.

  2. Dec 2025
    1. Why examples? What are example methods good for? As we have seen, examples make dependencies between tests explicit by reusing examples as setups for other examples, thus forming a hierarchy of examples. Best practice in test design supposedly should avoid dependencies between tests, but studies have shown that this practice instead leads to implicit dependencies due to duplicated code in test setups. This in turn leads to cascading failures due to the same setups being repeated in numerous tests. By factoring out the commonalities as examples, the duplication is removed, and cascading failures are avoided. A further benefit is that examples can be used in live documentation, and, as we shall see, examples support an exploratory approach to test-driven development, that we call example-driven development, or EDD.
    2. Start from an object Instead of starting by imagining and writing a test case as an example method, we start by creating an instance of the class we need. We first simply ask how we want to create our concrete instance of a price, and we write that code in a snippet. Neither the class nor the constructor exist, so we create them as fixit operations.

      Con ADD también empezamos con la instancia del objeto que queremos manipular.

    3. With TDD, you develop code by incrementally adding a test for a new feature, which fails. Then you write the “simplest code” that passes the new test. You add new tests, refactoring as needed, until you have fully covered everything that the new feature should fulfil, as specified by the tests. But: Where do tests come from? When you write a test, you actually have to “guess first” to imagine what objects to create, exercise and test. How do we write the simplest code that passes? A test that fails gives you a debugger context, but then you have to go somewhere else to add some new classes and methods. What use is a green test? Green tests can be used to detect regressions, but otherwise they don't help you much to create new tests or explore the running system. With Example-Driven Development we try to answer these questions.

      Desde que me lo presentaron, siempre me ha desagradado el Test Driven Design (TDD), pues me parecía absurdamente burocrático y contra flujo. Afortunadamente, gracias al podcast de Book Overflow, encontré un autor reconocido, John Ousterhout, creador de Tcl/Tk y "A Philosophy of software design", que comparte mi opinón respecto a escribir los test antes de escribir el código y dice que en el TDD no se hace diseño, sino que se depura el software hasta su existencia.

      Mi enfoque, que podría llamarse Argumentative Driven Design o ADD es uno en el que el código se desarrolla para mostrar un argumento en favor de una hipótesis, y las pruebas de código se van creando en la medida en que uno necesita inspeccionar y manipular los objetos que dicho código produce.

      En palabras práctica, esto quiere decir que los test y su configuración deberían hacerse cuando uno necesita hacer un "print" (para probar/inspeccionar/manipular un estado/elemento del sistema) y no antes, lo cual aumenta la utilidad, no interrumpe el flujo y responde preguntas similares a las de este apartado, respecto a de dónde provienen las pruebas y qué hacer con los resultados exitosos.

  3. Jul 2025
    1. Simply stated, Luhmann’s Zettelkasten structure was not dynamic or fluid in nature. Yet, it was not rigid, either. Examples of a rigid structure are classification systems like the Dewey Decimal Classification System or Paul Otlet’s massive notecard world museum known as, The Mundaneum. These types of systems are helpful for interpersonal knowledge systems; however, they’re not illustrative of what Niklas Luhmann’s system was: an intrapersonal communication system. Luhmann’s notebox system was not logically and neatly organized to allow for the convenience of the public to access. Nor was it meant to be. It seemed chaotic to those who perused its contents other than its creator, Niklas Luhmann.

      Nuestros wikis interpersonales son pensados para ser utilizados por otras personas. Sin embargo, los identificadores únicos vía NanoID, podrían tener también una jerarquía de contadores arborecentes, similares a los de Luhmann.

      Había pensado en esos contadores únicos en cada wiki para TiddlyWiki por si queríamos algún tipo de enlace corto local de ese wiki y el NanoID para los indicadores únicos entre wikis, dadas las bajas probabilidades de colisión. Son ideas que se pueden combinar con otras como el control de versiones.

      El carácter dinámico del wiki no tiene por qué sacrificar la trazabilidad histórica y una cierta memoria visual de los enlaces y sus conexiones. Lo clave es que el wiki sea programable con curvas progresivas entre creación de contenido y de funcionalidad, como lo hace TiddlyWiki y lo propone Cardumem

    1. Take Wikis as an example. Most of them have two different modes: The reading mode. The editing mode. The reading mode is the default. But most of the time you should create, edit and re-edit the content. This default, this separation of reading and editing, is a small but significant barrier on producing content. You will behave differently. This is one reason I don’t like wikis for knowledge work. They are clumsy and work better for different purposes.

      Los blikis (blogs + wikis) son formas de pensar en público y tener modos de lectura y escritura está bien, pues no todos los que se aproximan al wiki lo van a editar y la mayoría de internautas sólo lo va leer.

      Además sistemas tipo TiddlyWiki (y en el futuro Cardumem) alientan en buena medida la reedición de unidades de contenido (wiki refactoring). Lo clave es que las unidades sean pequeñas y se puedan usar para organizar otras unidades (es decir usarlos como etiquetas).