Pushpin: Trayendo ideas de la granja

Creado en 6 nov. 2019  ·  4Comentarios  ·  Fuente: automerge/pushpin

Jugando un poco con la chincheta #310 y #316 he llegado a reconocer que lo que realmente me gustaría lograr es más o menos lo que quería con mi experimento dat://code.gozala.io/ (que no es demasiado diferente de https://observablehq.com/) que es una forma de escribir un poco de código que me permite tomar datos y crear un widget único o uno reutilizable. Supongo que lo he estado usando de alguna manera en la línea de las hojas de cálculo, excepto con una interfaz a medida adaptada a una tarea específica.

De hecho, la granja era exactamente eso, mucho mejor en realidad, ya que creo que el tablero es una superficie mucho mejor para este tipo de interacciones que un bloc de notas en el que tienes que desplazarte hacia arriba y hacia abajo o una hoja de cálculo para el caso.

Así que me he estado preguntando si podríamos resucitar lo que hace que Farm sea tan convincente. De mi conversación con @pvh , tengo la sensación de que, si bien Elm es un lenguaje realmente bueno, resultó ser muy limitante en la práctica 😢 (que me temo que hace eco de las experiencias que tuve con él en mis intentos de usarlo para https:// github.com/browserhtml/browserhtml o incluso en https://observablehq.com/ mencionado). Sin embargo, creo que el elemento más convincente de la granja fue la idea de que todo en la pantalla se representó usando (doc, lens) donde lens en sí mismo era un fragmento de código también almacenado en algún documento.

Me gustaría recuperar esto pero omitiendo (al menos inicialmente) el compilador Elm. También da la casualidad de que he estado usando la biblioteca https://github.com/mozilla/reflex/ , que es más o menos la arquitectura Elm en JS, que no requiere ningún paso de compilación (aunque el verificador de tipos sería bueno) .

Entonces, juntando todo esto, esto es lo que me gustaría probar:

  1. Grow #310 para convertirse en un componente de "edición de lentes", que esencialmente permite escribir un poco de JS que luego podría remitirse y cargarse a través de la URL. Desafortunadamente, parece que las URL hypermerge:/ no se pueden cargar, solo hyperfile:/... podría cargarse, pero tal vez eso podría solucionarse o, en el peor de los casos, el componente podría crear nuevas URL hyperfile:/ después de los cambios.

  2. Cree otro componente de "canalización" que incruste el componente de "creación de lentes" o, más bien, un selector para lentes existentes y un selector de "doc" de datos para proyectar uno con el otro. _Me gustaría que la canalización no se limite solo a (datos, lentes) donde se ve el proyecto de lente (HTML), sino que permita datos a proyecciones de datos para que las cosas puedan encadenarse en canalizaciones más grandes, pero eso podría ser un poco exagerado en este momento) _. La lente predeterminada podría ser inspector (ver #316) para que solo el documento renderizara algo y desde allí uno podría elegir usar otro o crear uno.

Tenga en cuenta que con algo como esto podría recrear fácilmente la herramienta que uso con frecuencia https://hackmd.io/ donde podría usar el componente "editor de código" para escribir Markdown y el componente "pipeline" para representar su vista previa uno al lado del otro o lo que sea que tenga sentido.

PD: Todavía estoy pensando en esta idea, pero la compartiría para recibir comentarios y tratar de documentarla.

Comentario más útil

cc @pfrazee parece similar a lo que está haciendo con "ver archivos" en Beaker.

Todos 4 comentarios

cc @pfrazee parece similar a lo que está haciendo con "ver archivos" en Beaker.

Esto también es muy similar a lo que Wireline está tratando de hacer, creo.

Otra cosa que sigue dando vueltas en mi cabeza es cuando pienso en data -> view y data -> data , de alguna manera siempre es el salto del primero al segundo. Recuerdo que en una de las discusiones en http://offlinefirst.org/camp/ hubo una idea de adjuntar enlaces a los bloques de datos (doc en el contexto de chincheta) para "vistas renderizadas" y enlaces a "código fuente" para renderizando esas vistas.

¿Qué pasa si generalizamos data -> view a data -> data donde la salida resulta ser un documento html (que de hecho tal vez valga la pena incluso persistir como tal documento). De esa manera, Pushpin podría representar documentos que resultan ser HTML directamente y los que no lo son como data inspector .

A partir de los widgets existentes, podrían pensarse como Note : data -> html , Thread: data -> html , etc...

El principal problema con la persistencia y restauración de html son los detectores de eventos, sin embargo, ese también es el problema con el que he tratado al intentar sacar toda la lógica de la aplicación del hilo principal y creo que tengo algunas ideas sobre cómo abordar eso.

Para ser específico, hacer que funcione con la solución del subproceso principal en la que me decidí fue usar una biblioteca decoder.flow inspirada en la biblioteca JSON Decoder de Elm, donde los decodificadores son comibantores de analizadores declarativos que se pueden serializar, cargar en el subproceso principal y usar para extraer/codificar información relevante del evento y devolverla al hilo donde se está ejecutando el programa.

En este caso de uso específico, estoy pensando que los codificadores compuestos podrían guardarse en el mismo documento que la salida html procesada y hacer referencia en hash usando su dirección (probablemente es hash de contenido).

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

Gozala picture Gozala  ·  13Comentarios

edrex picture edrex  ·  7Comentarios

pvh picture pvh  ·  4Comentarios

canadaduane picture canadaduane  ·  9Comentarios

Gozala picture Gozala  ·  9Comentarios