limpia de archivos generados

This commit is contained in:
sejo 2021-05-21 22:24:11 -05:00
parent 670c38f8ed
commit 0c5cb10aad
77 changed files with 0 additions and 7334 deletions

View File

@ -1,51 +0,0 @@
# acerca
¿qué pasa por aquí?
# del sitio
este sitio existe simultáneamente en la web y en el protocolo gemini
=> https://quesomango.neocities.org queso mango en la web
=> gemini://caracolito.mooo.com/~sejo/ queso mango gemelo
las páginas son construidas con ayuda de unos programas escritos en awk
## meta
=> ./indice.gmi {índice}
=> ./actualizaciones.gmi {actualizaciones}
# de mí
me interesan las computadoras a escala y velocidad humana, y practico pedagogías alternativas de ciencias computacionales y tecnologías digitales.
me pregunto qué rol puede tener la computación en un mundo en colapso y/o post-colapso. ¿no sería mejor enfocarse en otra cosa?
en ocasiones hay {textos} que son canalizados a través de mí.
=> ./textos.gmi {textos}
además, disfruto el {running} como forma de conocerme y de conocer al mundo.
=> ./running.gmi {running}
llevo una dieta vegana; aquí algunas {recetas} que solemos preparar.
=> ./recetas.gmi {recetas}
siempre recordando que el {tiempo} vuela...
=> ./tiempo.gmi {tiempo}
## contact(o)
=> https://merveilles.town/@chirrolafupa mastodon account
=> ./tw.txt [twtxt feed]
e-mail: sejo en posteo.net
irc: sejo en ~chat y espernet
página actualizada en: sejmana-1660, día 2 (12021-05-21)
=> ./index.gmi {🥭}

View File

@ -1,32 +0,0 @@
# updates en el sitio
reiniciando la cuenta por el nuevo generador del sitio...
=> ./actualizaciones.xml [atom feed]
## sjm-1660d2
varias páginas nuevas:
=> ./apuntes.gmi {apuntes}
=> ./ciclo_de_memoria.gmi {ciclo de memoria}
=> ./compuertas.gmi {compuertas}
=> ./danzas_compuertas.gmi {danzas compuertas}
=> ./non_e-computers.gmi {non e-computers}
=> ./terranova.gmi {terranova}
=> ./textos.gmi {textos}
=> ./the_rite_of_computing.gmi {the rite of computing}
## sjm-1660d1
* mudanza al nuevo generador: texto fuente en algo parecido a gemtext; salida a html para web, y gemtext para gemini
## llega(n) aquí
=> ./acerca.gmi {acerca}
página actualizada en: sejmana-1660, día 2 (12021-05-21)
=> ./index.gmi {🥭}

View File

@ -1,19 +0,0 @@
# apuntes
recordatorios de procesos
## no computacionales
=> ./recetas.gmi {recetas}
## computacionales
### cli
comandos de línea (de comandos)
=> ./imagemagick.gmi {imagemagick}
=> ./ffmpeg.gmi {ffmpeg}
página actualizada en: sejmana-1660, día 2 (12021-05-21)
=> ./index.gmi {🥭}

View File

@ -1,329 +0,0 @@
# avr-asm
explorando programación de microcontroladores avr a través de asm, en attiny85. {s-camino}
=> ./s-camino.gmi {s-camino}
# attiny85
## diagrama de pines
```diagrama de pines
┌──────┐
PB5 │1 8│ VCC
PB3 │2 7│ PB2
PB4 │3 6│ PB1
GND │4 5│ PB0
└──────┘
```
además, cada pin es:
* 1: PB5 / PCINT5 / ~RESET / ADC0 / dW
* 2: PB3 / PCINT3 / XTAL1 / CLKI / ~OC1B / ADC3
* 3: PB4 / PCINT4 / XTAL2 / CLKO / OC1B / ADC2
* 5: PB0 / MOSI / DI / SDA / AIN0 / OC0A / ~OC1A / AREF / PCINT0
* 6: PB1 / MISO / DO / AIN1 / OC0B / OC1A / PCINT1
* 7: PB2 / SCK / USCK / SCL / ADC1 / T0 / INT0 / PCINT2
para flashear nos interesan los pines desde el punto de vista de SPI:
```pines spi
┌──────┐
~RESET │1 8│ VCC
│2 7│ SCK
│3 6│ MISO
GND │4 5│ MOSI
└──────┘
```
## programador
=> https://www.fischl.de/usbasp/ USBasp - USB programmer for Atmel AVR controllers (web)
## makefile
para ensamblar y flashear
```makefile
# Makefile
# nombre del programa sin .S :
PROG = test
# config hardware
BOARD = attiny85
PROGRAMMER = usbasp
# ensambla programa a .hex
hex:
avr-gcc -Os -DF_CPU=8000000 -mmcu=$(BOARD) -c $(PROG).S
avr-ld -o $(PROG).elf $(PROG).o
avr-objcopy $(PROG).elf -O ihex $(PROG).hex
rm $(PROG).o $(PROG).elf
# flashea
flash:
avrdude -c $(PROGRAMMER) -p $(BOARD) -U flash:w:$(PROG).hex:i
# lee la memoria flash a read.hex
read:
avrdude -c $(PROGRAMMER) -p $(BOARD) -U flash:r:read.hex:i
# prueba conexión con programador y micro
test:
avrdude -c $(PROGRAMMER) -p $(BOARD)
```
# programas
software experimental, compartido como referencia y sin garantía de ningún tipo :)
## test.S
enciende un el pin PB0 — conecta un led
```
; test.S
; enciende un pin
#include <avr/io.h>
.org 0x0000
ldi r17, (1<<DDB0) ; configura al PB0 como salida
sts DDRB, r17
ldi r16, (1<<PB0) ; enciende el bit correspondiente al PB0
sts PORTB, r16 ; actualiza el puerto
sleep ; duerme por siempre (?)
```
## blink.S
parpadea el pin PB0 usando el timer/counter0 — conecta un led
```
; blink.S
; parpadea el pin PB0 (OC0A)!
; r16 y r17 se usan como registros auxiliares
; el programa usa el timer/counter 0 con:
; * waveform generation mode (WGM0): 2, que es CTC (clear timer on compare match)
; * compare match output A mode (COM0A): 1, que es toggle en compare match
; * clock select (CS0): 5, que utiliza el reloj i/o dividido entre 1024
; notas sobre el reloj:
; por default el attiny85 va a 8MHz, y el reloj i/o va a 1MHz
; 1MHz/1024 ~= 967 Hz
#include <avr/io.h>
; ***********************
; vectores de interrupts:
; ***********************
; Reset
.org 0x0000
rjmp main
; ***********************
; Main
; ***********************
.org 0x0010
main:
; pin PB0 (OC0A) como pin de salida
ldi r16, (1<<DDB0) ; pin de salida
sts DDRB, r16
; togglea OC0A en Compare match (1 en COM0A[1:0])
; y usa modo Clear Timer on Compare Match (2 en WGM0[2:0])
ldi r16, (0<<COM0A1) | (1<<COM0A0) | (1<<WGM01) | (0<<WGM00)
sts TCCR0A, r16
; completa el modo WGM (waveform generaton mode, bit 2)
; establece el tipo de reloj: 0b101 en CS0 es clk/1024
ldi r16, (0<<WGM02) | (1<<CS02) | (0<<CS01) | (1<<CS00)
sts TCCR0B, r16
; el TOP es el valor en OCR0A
ldi r16, 0x80
sts OCR0A, r16
loop:
sleep
rjmp loop
```
## buzz.S
zumba el pin PB0 — conecta un buzzer
```
; buzz.S
; haz zumbar el pin PB0 (OC0A)!
; el código es igual a blink.S, pero con diferentes frecuencias
; r16 y r17 se usan como registros auxiliares
; el programa usa el timer/counter 0 con:
; * waveform generation mode (WGM0): 2, que es CTC (clear timer on compare match)
; * compare match output A mode (COM0A): 1, que es toggle en compare match
; * clock select (CS0): 4, que utiliza el reloj i/o dividido entre 256
; notas sobre el reloj:
; por default el attiny85 va a 8MHz, y el reloj i/o va a 1MHz
; 1MHz/256 ~= 3906 Hz (/2 para el periodo completo ~=1953Hz)
#include <avr/io.h>
; ***********************
; vectores de interrupts:
; ***********************
; Reset
.org 0x0000
rjmp main
; ***********************
; Main
; ***********************
.org 0x0010
main:
; pin PB0 (OC0A) como pin de salida
ldi r16, (1<<DDB0) ; pin de salida
sts DDRB, r16
; togglea OC0A en Compare match (1 en COM0A[1:0])
; y usa modo Clear Timer on Compare Match (2 en WGM0[2:0])
ldi r16, (0<<COM0A1) | (1<<COM0A0) | (1<<WGM01) | (0<<WGM00)
sts TCCR0A, r16
; completa el modo WGM (waveform generaton mode, bit 2)
; establece el tipo de reloj: 0b100 en CS0 es clk/256
ldi r16, (0<<WGM02) | (1<<CS02) | (0<<CS01) | (0<<CS00)
sts TCCR0B, r16
; el TOP es el valor en OCR0A
ldi r16, 0x02
sts OCR0A, r16
loop:
sleep
rjmp loop
```
## alarm.S
zumbido intermitente en el pin PB0 — conecta un buzzer
```
; alarm.S
; zumbido intermitente en el pin PB0 (OC0A)!
; r16 y r17 se usan como registros auxiliares
; r20 tiene el valor de TCCR0A para apagar sonido
; r21 tiene el valor de TCCR0A para encenderlo
; el programa usa el timer/counter 0 con:
; * waveform generation mode (WGM0): 2, que es CTC (clear timer on compare match)
; * compare match output A mode (COM0A): 1, que es toggle en compare match
; * clock select (CS0): 3, que utiliza el reloj i/o dividido entre 64
; y el timer/counter 1 con:
; * clock select (CS1): 0b1010, que es clk/512
; * interrupciones de overflow y de compare match A:
; - en compare match A el zumbido se apaga
; - en overflow el zumbido inicia
; notas sobre el reloj:
; por default el attiny85 va a 8MHz, y el reloj i/o va a 1MHz
; 1MHz/256 ~= 3906 Hz (/2 para el periodo completo ~=1953Hz)
#include <avr/io.h>
; ***********************
; vectores de interrupts:
; ***********************
; Reset
.org 0x0000
rjmp main
; dirección 0x0003 * 2
.org 0x0006
rjmp timer1compareA_isr
; dirección 0x0004 * 2
.org 0x0008
rjmp timer1overflow_isr
; ***********************
; Main
; ***********************
.org 0x001E
main:
;----------------------------------
; configuración general
;----------------------------------
; habilita interrupciones
sei
; pin PB0 (OC0A) como pin de salida
ldi r16, (1<<DDB0) ; pin de salida
sts DDRB, r16
; valores de TCCR0A para encender o apagar sonido
ldi r20, (0<<COM0A1) | (0<<COM0A0) | (1<<WGM01) | (0<<WGM00)
ldi r21, (0<<COM0A1) | (1<<COM0A0) | (1<<WGM01) | (0<<WGM00)
;----------------------------------
; configuración TIMER0 para buzzer
;----------------------------------
; togglea OC0A en Compare match (1 en COM0A[1:0])
; y usa modo Clear Timer on Compare Match (2 en WGM0[2:0])
sts TCCR0A, r21
; completa el modo WGM (waveform generaton mode, bit 2)
; establece el tipo de reloj: 0b011 en CS0 es clk/64
ldi r16, (0<<WGM02) | (0<<CS02) | (1<<CS01) | (1<<CS00)
sts TCCR0B, r16
; el TOP es el valor en OCR0A
; más pequeño es más agudo
ldi r16, 0x06
sts OCR0A, r16
;----------------------------------
; configuración TIMER1 para alternar entre sonido on/off
;----------------------------------
; CS1 en 0b1010 es CK/512
ldi r16, (1<<CS13) | (0<<CS12) | (1<<CS11) | (0<<CS10)
sts TCCR1, r16
; establece el valor A al que cuenta el timer1 antes de apagar sonido
; menor valor, menor tiempo de sonido (duty cycle)
ldi r16, 0x30
sts OCR1A, r16
; set Timer overflow interrupt enable 1
; y timer output compare A interrupt enable 1
ldi r16, (1<<TOIE1) | (1<<OCIE1A)
sts TIMSK, r16
loop:
sleep
rjmp loop
timer1compareA_isr:
; apaga la salida
sts TCCR0A, r20
reti
timer1overflow_isr:
; enciende la salida
sts TCCR0A, r21
; regresa de la interrupción
reti
```
## llega(n) aquí
=> ./s-camino.gmi {s-camino}
página actualizada en: sejmana-1660, día 1 (12021-05-20)
=> ./index.gmi {🥭}

View File

@ -1,59 +0,0 @@
# ciclo de memoria
imaginemos la construcción de una memoria que existe en función el tiempo, como las antiguas líneas de retardo de mercurio, pero en el campo; un juego; un grupo de personas en {compudanzas}.
=> ./compudanzas.gmi {compudanzas}
un "dispositivo"-danza que almacena información binaria, con capacidad de ser escrita y leída.
=> ./img/ilustracion_ciclo-de-memoria.png pequeña ilustración del ciclo de memoria
# guía
cada persona ve a alguien más, y es vista por otra distinta.
para iniciar, podemos acomodarnos en círculo. nuestra red es un ciclo.
cada persona ve a alguien más, poniendo atención en cuál de las tres señales / movimientos realiza:
* corte
* alto
* bajo
hay música con pulso.
en cada beat, la persona replica la señal que vio adelante.
así, poco a poco, un dato palabra, número, o lo que sea, se recorre, circula, da vueltas.
# la lectura
para leer el dato almacenado, una persona-lectora fuera del ciclo se sintoniza a la frecuencia de pulsos.
la persona-lectora se enfoca en observar a una sola persona dentro, que se convierte en la persona-salida.
al observar la señal de corte, la persona-lectora empieza a anotar, repetir, transmitir, las señales de alto o bajo que vengan después.
así continúa hasta observar de nuevo el corte: el dato habrá sido leído, y se mantiene en circulación.
# la escritura
ya sea que se decida de antemano la persona-entrada al ciclo, o todas las personas estén atentas para poder serlo, para escribir en la memoria hace falta una persona afuera, la persona-escritora.
ella se sincroniza con los pulsos, y le avisa a la persona-entrada que viene a escribir.
la persona-entrada espera a recibir y replicar la señal de corte de la persona a la que estaba siguiendo.
justo cuando eso sucede, la persona-entrada empezará a ver y seguir a la persona-escritora.
la persona-escritora, paso a paso, pulso a pulso, da las señales de alto o bajo a escribir, hasta llegar al corte.
y así, paso a paso, pulso a pulso, poco a poco, el ciclo ahora tendrá un nuevo dato.
## llega(n) aquí
=> ./compudanzas.gmi {compudanzas}
página actualizada en: sejmana-1660, día 2 (12021-05-21)
=> ./index.gmi {🥭}

View File

@ -1,58 +0,0 @@
# coloring computers
non-electronic computers that work when you color them according to a simple set of rules.
an exploration of computation without electricity and semiconductors, an attempt to reinvent digital systems away from efficiency and productivity, and hopeful prototypes to expose the inner workings of computers.
=> ./non_e-computers.gmi {non e-computers}
# 4-bits to 7-segment display hexadecimal decoder (12020)
=> ./img/foto_20201130_hex7segdecoder_01.png the coloring computer/decoder, waiting to be activated
=> ./img/foto_20201130_hex7segdecoder_02.png a human coloring the wires according to the logic rules
=> ./img/foto_20201130_hex7segdecoder_03.png the coloring computer/decoder, with an input of 0011, and an output that can be read as 3
a coloring decoder built with NOT (triangle), AND (semicircle), and OR (the other shape (?)) gates, based on a manual design.
=> ./img/dibujo_20201207_hex7segdecoder_small.png the complete decoder
=> https://opguides.info/engineering/digitallogic/ colored and animated version by Vega
=> https://ipfs.io/ipfs/QmZv53hr7QEzxrPaRNpiyU9VUNHw9UgyaTUqYD9x9iFpNA/dibujo_20201207_hex7segdecoder.png download the decoder in full size 1487x3057 (png, ~446KB)
# computadora no(r)pal (12019)
=> ./img/dibujo_20190715-norpalera-fulladder_blanco_small.png logic circuit in the shape of nopal
a full-adder built with nor gates (see {logiteca}) in the shape of no(r)pales
=> ./logiteca.gmi {logiteca}
=> https://ipfs.io/ipfs/QmPz2D3bZRYFi1HnfiNJB8o9TZZvH8atuYpFixMKccYCYP/dibujo_20190715-norpalera-fulladder_blanco.png download computadora no(r)pal in full size 1200x1600 (png, ~429KB)
# coloring computers (12018)
the original ones
=> ./img/foto_coloring-computers_cover-lee.png photo of the cover of the zine, colored
=> ./img/foto_coloring-computers_7seg-lee.png photo of a pair of colored pages of the zine, with a 7 segment display showing the digits 2 and 3
=> ./img/foto_coloring-computers_pcd2019.png photo of a pair of colored pages of the zine, showing a digital circuit answering if two colors are the same
the booklet contains three series of computers: computers that compare, computers that count, and computers that play. they are all NOR-based logic circuits designed by using truth tables, karnaugh maps, and maxterm expansions.
=> https://ipfs.io/ipfs/QmYz7DPRWypGQcbAHr7Mi8EKB6ntSPsEnUsCXbAhBiHQZP/ original site and resources
=> https://ipfs.io/ipfs/QmYz7DPRWypGQcbAHr7Mi8EKB6ntSPsEnUsCXbAhBiHQZP/coloringcomputers_pages.pdf download the page-by-page zine (pdf, ~1.5MB)
=> https://ipfs.io/ipfs/QmYz7DPRWypGQcbAHr7Mi8EKB6ntSPsEnUsCXbAhBiHQZP/coloringcomputers.pdf download the ready-to-print-and-cut zine (pdf, ~1.4MB)
CC-BY-SA 4.0
for the print and cut zine: print double-sided, cut in half, fold the pages and assemble
presented as a workshop in the
=> https://processing.nyc/2019/#workshops processing community day nyc 2019
## llega(n) aquí
=> ./non_e-computers.gmi {non e-computers}
página actualizada en: sejmana-1660, día 2 (12021-05-21)
=> ./index.gmi {🥭}

View File

@ -1,175 +0,0 @@
# compudanzas
materializando ciencias computacionales en cuerpxs humanxs y coreografía
# las danzas
sección en construcción
## ciclo de memoria
un dispositivo-danza que almacena información binaria, con capacidad de ser escrita y leída.
nos volvemos un registro de corrimiento (shift register) síncrono para almacenar de manera activa una secuencia de símbolos.
=> ./ciclo_de_memoria.gmi {ciclo de memoria}
## danzas compuertas
en la que nos convertimos en red de compuertas lógicas para resolver en conjunto operaciones aritméticas o lógicas.
comportamiento asíncrono, que podemos sincronizar para procesos más complejos.
=> ./danzas_compuertas.gmi {danzas compuertas}
## reglas de wolfram
danzas en las que nuestro nuevo estado individual depende de nuestro estado propio y del de dos personas más.
## danzasistemas-tag
“batallas” en las que respondemos procesando elementos de la secuencia anterior.
=> ./danzasistemas-tag.gmi {danzasistemas-tag}
## d. turing
en donde bailamos con y a partir de una fila / tira / cinta de objetos / símbolos y una tabla específica de estados.
## máquina universal bailable
en donde bailamos con y a partir de una fila / tira / cinta de objetos y una tabla específica de estados, en un acomodo tal que nos permite simularnos bailando con y a partir de una fila / tira / cinta de objetos y cualquier tabla específica de estados
## pequeña persona computadora
en donde nuestras acciones toman la forma de las operaciones de una computadora organizada casi como las que conocemos.
# el taller
## abstract
el taller de compudanzas materializa ciencias computacionales en cuerpxs humanxs y coreografía.
¿qué es una computadora? ¿cómo es tan poderosa y hace lo que hace, si “solo” consiste en minerales super ordenados a través de procesos complejos?
¿qué pasa si la alentamos? ¿y si incrementamos su tamaño? ¿y si le quitamos todo rastro de eficiencia para que la podamos bailar?
en este taller nos insertaremos entre el mundo abstracto de las ciencias computacionales y el mundo de su materialización industrial, para darle cuerpo humano, social, coreográfico, a algunos de sus conceptos fundamentales: máquinas de turing, compuertas lógicas, autómatas celulares, arquitectura von neumann, y más.
lo que queremos es construir y programar computadoras relativamente lentas, grandes e ineficientes, a partir de personas en movimiento siguiendo/jugando instrucciones. así, nos podremos reapropiar de las maneras computacionales de entender el mundo, para usarlas a nuestro gusto con el fin de proponer otras posibles computadoras, danzas, y/o vidas.
## justificación
la miniaturización y aceleración de los circuitos de semiconductores, además de tener un gran costo ambiental, social y económico, dificulta el conocer y entender qué pasa en su interior, y cómo es que logran hacer emerger todas las capacidades que entendemos inherentes al cómputo.
por otro lado, la configuración social actual genera e incrementa una brecha de conocimientos y posibilidades entre unos cuantos que tienen el poder de desarrollar las tecnologías digitales, y el resto de la población al que se le asigna únicamente un rol de consumidor y de fuente de datos a extraer.
por si fuera poco, lo abstracto y ofuscado de las ciencias computacionales y de la forma en que suelen ser compartidas, se oponen a sanar esta brecha de acceso.
es por esto que el taller busca experimentar con otros acercamientos y estrategias para abordar estos temas, tratando no de hablarlos y racionalizarlos sino de bailarlos, sentirlos y recontextualizarlos.
partimos de que todo el cuerpo de conocimientos sobre la computación fue desarrollado por personas con pasiones así como cualquier otra, por lo que las nociones de lo "frío" y "cuadrado" de lo "maquínico" y digital pueden ser entendidas desde una perspectiva que las acerca a lo orgánico, lo fluido, y a nosotras como personas vivas.
dadas las crisis climáticas, ecológicas y sociales actuales, consideramos que el taller es un importante ejercicio de imaginación donde nos preguntamos: ¿qué pasaría si las computadoras fueran bailes y no cajas de metal y semiconductor?
## objetivos
* introducir y difundir conceptos fundamentales de la computación a través de estrategias pedagógicas inspiradas en la danza.
* visibilizar procesos e ideas que rigen las realidades digitales actuales pero que suelen ser accesibles solo para un grupo reducido de personas.
* instigar la reapropriación de dichos conceptos con el objetivo de imaginar y realizar mundos donde sirven a intereses alternos, como los de la danza, la vida y la liberación.
* promover el pensar y sentir con el cuerpo, con énfasis en lo computacional por ser algo considerado abstracto y cerebral a pesar de sus múltiples impactos materiales.
## temario
los siguientes temas son puntos de partida para los bailes y actividades corporales propuestos, así como para los proyectos creativos de les participantes.
se abordarán los principios teóricos, pero sin ahondar en discusiones abstractas que se alejen mucho del cuerpo
* ciencias computacionales, coreografía, ¿cyborgs?
* el universo discreto: estados finitos y tiempos discontinuos
* operaciones lógicas / digitales
* memoria básica con registro de corrimiento
* mundo binario: operaciones y compuertas lógicas
* autómatas celulares y complejidad emergente
* computación formal
* sistemas de "tag"
* máquinas de turing
* máquina universal de turing
* organización computacional
* arquitectura de von neumann
* código máquina y programación
## agenda
el taller consiste en 6 sesiones de 2 horas de duración cada una
* danzas compuertas
* autómatas celulares
* computación formal
* máquina universal de turing
* organización computacional
* integración
## bibliografía y referencias
### historia de la computación
* archeology of algorithmics artefacts - david link 2016
* turing's cathedral - george dyson 2012
=> http://web.stanford.edu/class/history34q/readings/Kittler/There_is_No_Software.html there is no software - friedrich kittler
### máquinas de turing, teoría, máquinas universales
=> https://www.cs.virginia.edu/~robins/Turing_Paper_1936.pdf on computable numbers, with an application to the entscheidungsproblem - alan turing 1936
=> https://www.codeproject.com/Articles/1179819/A-Simulator-of-a-Universal-Turing-Machine a simulator of a universal turing machine - jorge luis orejel, 2017
=> https://www.gwern.net/Turing-complete surprisingly turing complete - gwern branwen 2012
* computation: finite and infinite machines - marvin minsky 1967
* feynman lectures on computation - richard feynman 1996
### computadoras no electrónicas
=> ./non_e-computers.gmi {non e-computers}
=> https://xkcd.com/505 - randall munroe, xkcd
=> http://www.blikstein.com/paulo/projects/project_water.html programmable water - paulo blikstein 2003
=> https://wiki.xxiivv.com/site/papier.html wdr papier computer
=> https://wiki.xxiivv.com/site/paper_computing.html paper computing
=> https://yip.pe/analog.html analogue computing.
### modelos simples de computadora
=> https://teachcomputerscience.com/little-man-computer/ little man computer
=> https://www.peterhigginson.co.uk/lmc/ little man computer - cpu simulator
=> https://wiki.xxiivv.com/site/gyo.html gyo register machine
=> https://wiki.xxiivv.com/site/uxn.html uxn virtual stack machine
### más sobre computación
=> https://suricrasia.online/iceberg/ the cursed computer iceberg meme
### filosofía
* philosophy after nature - edited by rosi braidotti and rick dolphijn 2017
* chapter 2: information and thinking - michel serres (todo emite, recibe, almacena y procesa información)
* chapter 5: the resonance of disparates: spinoza, damasio, deleuze, and the ecology of form - rick dolphijn (cerebros y vida no antropocéntrica)
## llegan aquí:
=> ./danzasistemas-tag.gmi {danzasistemas-tag}
=> ./danzas_compuertas.gmi {danzas compuertas}
=> ./logiteca.gmi {logiteca}
=> ./non_e-computers.gmi {non e-computers}
página actualizada en: sejmana-1660, día 2 (12021-05-21)
=> ./index.gmi {🥭}

View File

@ -1,106 +0,0 @@
# compuertas lógicas
las bases de los circuitos digitales.
estos incluyen, claro está, a las {danzas compuertas}
=> ./danzas compuertas.gmi {danzas compuertas}
usamos la convención de utilizar dos valores posibles: 1 para denominar arriba, o verdadero, y 0 para denominar abajo, o falso.
# una entrada
## buffer
la salida es igual a la entrada
## NOT
la salida es lo opuesto a la entrada.
también podríamos decir que la salida es lo que no es la entrada.
# dos entradas
con dos entradas binarias, hay cuatro posibles combinaciones.
## AND
la salida es verdadera únicamente cuando todas sus entradas son verdaderas.
en cualquier otro caso, la salida es falsa.
## OR
la salida es verdadera cuando aunque sea una de sus entradas sea verdadera.
únicamente cuando todas las entradas son falsas, su salida es falsa.
## XOR
la salida es verdadera cuando una y solo una de sus entradas sea verdadera.
en cualquier otro caso, la salida es falsa.
también la podemos describir así: la salida es verdadera cuando las entradas son diferentes, y es falsa cuando las entradas son iguales.
## NOR
la salida es verdadera cuando ninguna de sus entradas es verdadera.
que es lo mismo que decir que su salida es verdadera cuando todas sus entradas son falsas.
en cualquier otro caso, su salida es falsa.
NOR es una de las compuertas universales: con ella se puede construir a todas las demás.
esto se debe en parte a que NOR se convierte en NOT si sus dos entradas están conectadas como una sola.
por otro lado, NOR es equivalente a negar con NOT la salida de una compuerta OR.
por cómo funciona, también la podemos considerar como un AND que funciona con 0 en vez de con 1.
## NAND
la salida es verdadera cuando aunque sea una de sus entrada es falsa.
únicamente cuando todas sus entradas son verdaderas, su salida es falsa.
NAND es la otra compuerta universal. esto se debe en parte a que se convierte en NOT si sus dos entradas están conectadas como una sola.
por otro lado, NAND es equivalente a negar con NOT la salida de una compuerta AND.
por cómo funciona, también la podemos considerar como un OR que funciona con 0 en vez de con 1.
# más entradas
todas las compuertas funcionan igual para más de dos entradas, excepto XOR.
importante: AND y OR poseen la propiedad distributiva.
por ejemplo, un AND de tres entradas (a, b, c) es equivalente a un AND de dos entradas (a, b), con su salida (x) conectada a la entrada de otro AND de dos entradas (x, c)
esto no sucede así ni en NOR ni en NAND. en su caso, hay que agregar un NOT entre las dos compuertas.
# demorgan
una compuerta AND es equivalente a una compuerta NOR con sus entradas negadas.
una compuerta OR es equivalente a una compuerta NAND con sus entradas negadas.
## llega(n) aquí
=> ./danzas_compuertas.gmo {danzas compuertas}
=> ./logiteca.gmi {logiteca}
página actualizada en: sejmana-1660, día 2 (12021-05-21)
=> ./index.gmi {🥭}

View File

@ -1,50 +0,0 @@
# danzas compuertas
antiguas historias hablaban de computar en conjunto, en comunidad. ¿{compudanzas}?
=> ./compudanzas.gmi {compudanzas}
tareas sencillas y divertidas (requeridas de atención y presencia) que combinadas dan paso a complejidad, a olas, a cambios.
# guía
o se está de pie o se está en descanso.
a cada quien se le asigna un rol:
* simplemente decidir en qué posición colocarse
* colocarse siempre en oposición a tal persona
* o ponerse de pie solo cuando ni tal persona ni cual persona están de pie.
(o alguna otra de las {compuertas} lógicas)
=> ./compuertas.gmi {compuertas}
la complejidad surge de quién ve a quién, quién depende de quién.
cinco personas para multiplicar dos dígitos binarios... nada mal.
más circuitos posibles, en la {logiteca}
=> ./logiteca.gmi {logiteca}
# posibilidades
qué tal un sumador completo, aprovechando la idea de {ciclo de memoria}
=> ./ciclo de memoria.gmi {ciclo de memoria}
aquí un diagrama animado que muestra un par de ciclos de memoria como entrada a un full-adder.
el resultado del full-adder está conectado a otro ciclo de memoria. todos los componentes conformados por personas.
=> https://ipfs.io/ipfs/QmSKnbCUGj3FR5hRG5UAgfXxjyp7aTQoRCeJ9G4MENxNNG/20190718-sumadanza_600.gif suma danza (gif, 187KB )
## llega(n) aquí
=> ./compudanzas.gmi {compudanzas}
=> ./compuertas.gmi {compuertas}
=> ./logiteca.gmi {logiteca}
página actualizada en: sejmana-1660, día 2 (12021-05-21)
=> ./index.gmi {🥭}

View File

@ -1,81 +0,0 @@
# danzasistemas-tag
una compudanza basada en máquina abstracta (tag systems, o bien, máquina de post)
=> ./compudanzas.gmi {compudanzas}
# descripción
las danzasistemas-tag consisten en "batallas" de baile en las que alternamos recibiendo y respondiendo secuencias de movimiento.
las secuencias que respondemos son producto de procesar elementos de la secuencia que recibimos.
# indicaciones
necesitamos los siguientes elementos:
* A: alfabeto finito de símbolos/movimientos identificables y replicables
* P: las reglas de producción: qué símbolos/movimientos hay que agregar al final de la nueva secuencia, de acuerdo al primer símbolo/movimiento de la secuencia recibida.
* m: número de eliminación: cuántos símbolos/movimientos hay que eliminar del inicio de la secuencia recibida.
al recibir una secuencia de movimiento, hemos de poner atención y realizar lo siguiente para construir nuestra respuesta:
* notar el primer símbolo/movimiento, que nos indica qué regla de producción seguir al final de la secuencia.
* descartar la cantidad de símbolos/movimientos del inicio de la secuencia de acuerdo al número de eliminación. (esto incluye al primer símbolo/movimiento).
* memorizar y replicar la secuencia recibida a partir de ese punto, en orden y hasta el final.
* agregar el o los símbolos/movimientos al final de la secuencia, de acuerdo a la regla de producción.
según la danzasistema-tag, la dinámica de respuestas continúa hasta llegar al símbolo/movimiento que indique detenerse, o hasta que la secuencia de movimiento quede vacía.
# ejemplo
cómputo de secuencias de collatz, tomado de wikipedia
=> https://en.wikipedia.org/wiki/Tag_system#Example:_Computation_of_Collatz_sequences Tag system - Example: Computation of Collatz sequences (web)
los elementos de nuestra danzasistema-tag serían los siguientes:
## A: alfabeto finito de símbolos/movimientos
tres símbolos/movimientos: a, b, c
## P: reglas de producción
si primer símbolo/movimiento es 'a', agrega 'bc' al final.
si primer símbolo/movimiento es 'b', agrega 'a' al final.
si primer símbolo/movimiento es 'c', agrega 'aaa' al final.
nota cómo cada regla de producción agrega una cantidad distinta de símbolos/movimientos al final.
## m: número de eliminación
en este caso, siempre descartaremos 2 símbolos/movimientos del inicio de la secuencia.
## desarrollo
partiendo de una secuencia inicial 'aaa'...
```
inicio: aaa
respuesta: abc
respuesta: cbc
respuesta: caaa
respuesta: aaaaa
respuesta: aaabc
respuesta: abcbc
respuesta: cbcbc
etc...
```
siempre se descartan los 2 símbolos/movimientos del inicio, pero la cantidad de símbolos/movimientos que se agregan al final cambian de acuerdo a la regla de producción.
esta dinámica de respuestas a partir de esa secuencia inicial, eventualmente termina descartando a la secuencia completa.
## llega(n) aquí
=> ./compudanzas.gmi {compudanzas}
página actualizada en: sejmana-1660, día 1 (12021-05-20)
=> ./index.gmi {🥭}

View File

@ -1,610 +0,0 @@
# darena
an open-ended game of rocks and sand
the sandy space contains a bunch of rocks in either one of two possible colors, and yourself.
push and arrange the rocks to prototype and build your own computer, cellular automata, 1-bit art, etc.
=> ./img/screenshot_darena.png screenshot of the game. it shows a square clear space inside a textured world. inside the square there are several round rocks of two possible colors. there is a small platform, and a person.
what will you do with the sand?
# about
darena was developed as an exercise to learn about the
=> https://wiki.xxiivv.com/site/uxn.html uxn virtual machine and assembly language
as part of the {s-camino} practice.
=> ./s-camino.gmi {s-camino}
# features
* a character that moves in all four cardinal directions
* rocks that can be pushed around, unless they are colliding with other rocks or the borders of the "arena"
* a toggling station where rocks can be switched to the other color
* realistic animation: the character slows down when pushing rocks, recovering their original speed when walking
# controls
use the arrow keys for cartesian movement within the space
# possible "improvements"
* add an "official" pulling option (you can pull rocks right now, but in a hacky way)
* save rocks state (position and color) to file
* optimize the use of memory for rock colors, using one bit per rock instead of one byte
# the code
this iteration has 31 rocks and a single toggling station where one can switch their color/state.
last updated: sjm-1659d3 (changed JNZ to JCN)
you can also find the code in the
=> https://git.sr.ht/~rabbits/uxn/log/master/item/projects/demos/darena.usm uxn repo
```darena.usm
( darena.usm )
( an open-ended game of rocks and sand )
( cc0 sejo 12021 )
%DEBUG { .Console/byte DEO #0a .Console/char DEO }
%DEBUG2 { .Console/short DEO2 #0a .Console/char DEO }
( parameters )
%nrocks { #1f }
%nrocks-1 { #1e }
%nrocks_mask { #1f }
%minposx { #0f }
%minposy { #0f }
%maxposx { #f1 }
%maxposy { #f1 }
%anispeedmask_normal { #03 }
%anispeedmask_slow { #07 }
%c_color_normal { #33 }
%c_color_flipx { #73 }
%index_norock { #ff }
( output macros )
%out_screen_x { LDA #00 SWP .Screen/x DEO2 } ( ;addr )
%out_screen_y { LDA #00 SWP .Screen/y DEO2 } ( ;addr )
( helper macros )
%get_bit_n { SFT #01 AND }
%get_nibble_h { #04 SFT #0f AND }
%get_nibble_l { #0f AND }
%is_bit_n_set { get_bit_n #01 EQU }
%set_animate { #01 ;c_state LDA ORA ;c_state STA }
%rst_animate { #00 ;c_state STA }
( devices )
|00 @System [ &vector $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 ]
|10 @Console [ &pad $8 &char $1 &byte $1 &short $2 &string $2 ]
|20 @Screen [ &vector $2 &width $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &color $1 ]
|80 @Controller [ &vector $2 &button $1 &key $1 ]
( variables )
|0000
@c_pos [ &x $1 &y $1 ] ( character position )
@c_speed [ &x $1 &y $1 ] ( character speed )
@c_color [ $1 ] ( character color )
@c_sprite [ $2 ] ( character sprite addr )
@c_state [ $1 ] ( high_nibble: animation pointer, bit0: is_animated )
@f_count [ $1 ] ( frame counter )
@ani_speedmask [ $1 ] ( animation speed mask )
@r_speed_x [ $f ]
@r_speed_y [ $f ]
@tog [ &x $1 &y $1 &state $1 ] ( toggle station state )
( program )
|0100 @reset ( -> )
#f396 .System/r DEO2
#e263 .System/g DEO2
#9030 .System/b DEO2
;on_frame .Screen/vector DEO2
( init character )
#50 ;c_pos/x STA
#10 ;c_pos/y STA
#00 ;c_speed/x STA
#00 ;c_speed/y STA
c_color_normal ;c_color STA
;s_monitx_stepfront0 ;c_sprite STA2
rst_animate
anispeedmask_normal ;ani_speedmask STA
( init toggler )
#27 ;tog/x STA
#27 ;tog/y STA
#00 ;tog/state STA
( init background )
;init_bg JSR2
BRK
@on_frame ( -> )
;f_count LDA #01 ADD DUP ;f_count STA ( increase frame counter )
;ani_speedmask LDA ( mask with animation speed mask )
AND #00 EQU ,update_frame JCN ( jump to update if it's time )
BRK
@update_frame
( check keyboard )
;check_keys JSR2
( animate character sprite )
;animate_c JSR2
( clear sprites )
;clear JSR2
( update character vars )
;update_c/run JSR2
( update rocks + stand )
;update_r/run JSR2
( draw )
;draw JSR2
BRK
@clear
( clear rocks )
;s_clear .Screen/addr DEO2
nrocks #00
&rocks_loop
DUP ( get rocks_x[i] )
;rocks_x ROT #00 SWP ADD2 out_screen_x
DUP ( get rocks_y[i] )
;rocks_y ROT #00 SWP ADD2 out_screen_y
#30 .Screen/color DEO
#01 ADD
DUP2
NEQ ,&rocks_loop JCN
POP2
( clear character )
;clear_c JSR2
JMP2r
@draw
( draw toggler )
;tog/x out_screen_x
;tog/x out_screen_y
;s_stand .Screen/addr DEO2
#23 .Screen/color DEO
( draw rocks )
;s_bola .Screen/addr DEO2
nrocks #00
&rocks_loop
DUP ( get rocks_x[i] )
;rocks_x ROT #00 SWP ADD2 out_screen_x
DUP ( get rocks_y[i] )
;rocks_y ROT #00 SWP ADD2 out_screen_y
( DUP ( get color bitwise ) )
( ;r_color LDA SWP get_bit_n #31 ADD .Screen/color DEO )
DUP
;r_color ROT #00 SWP ADD2 LDA #31 ADD .Screen/color DEO
#01 ADD
DUP2
NEQ ,&rocks_loop JCN
POP2
( draw character )
;draw_c JSR2
JMP2r
@check_keys
#00 ;c_speed/x STA
#00 ;c_speed/y STA
.Controller/button DEI #07 is_bit_n_set ,&der JCN
.Controller/button DEI #06 is_bit_n_set ,&izq JCN
.Controller/button DEI #05 is_bit_n_set ,&aba JCN
.Controller/button DEI #04 is_bit_n_set ,&arr JCN
rst_animate
JMP2r
&der
#01 ;c_speed/x STA
set_animate
c_color_normal ;c_color STA
;s_monitx_stepside0 ;c_sprite STA2
JMP2r
&izq
#ff ;c_speed/x STA
set_animate
c_color_flipx ;c_color STA
;s_monitx_stepside0 ;c_sprite STA2
JMP2r
&aba
#01 ;c_speed/y STA
set_animate
c_color_normal ;c_color STA
;s_monitx_stepfront0 ;c_sprite STA2
JMP2r
&arr
#ff ;c_speed/y STA
set_animate
c_color_normal ;c_color STA
;s_monitx_stepback0 ;c_sprite STA2
JMP2r
&end
JMP2r
( sub-routines )
( in: sourcex, source y, index, rangex, rangey )
( puts in the stack the index of rock collisioned with )
@collision_rocks
&range_y $1
&range_x $1
&src_i $1
&src_x $1
&src_y $1
&rock_x $1
&rock_y $1
&run
,&range_y STR
,&range_x STR
,&src_i STR
,&src_y STR
,&src_x STR
( check collision with rocks )
( nrocks #00 )
,&src_i LDR nrocks_mask AND DUP #01 ADD nrocks_mask AND
&rocks_loop
DUP ( get rocks_x[i] )
;rocks_x ROT #00 SWP ADD2 LDA ,&rock_x STR
DUP ( get rocks_y[i] )
;rocks_y ROT #00 SWP ADD2 LDA ,&rock_y STR
,&src_x LDR ,&rock_x LDR ,&range_x LDR SUB GTH ( if sx > rx - 8 )
,&src_x LDR ,&rock_x LDR ,&range_x LDR ADD LTH ( if sx < rx + 8 )
,&src_y LDR ,&rock_y LDR ,&range_y LDR SUB GTH ( if sy > ry - 8 )
,&src_y LDR ,&rock_y LDR ,&range_y LDR ADD LTH ( if sy < ry + 8 )
ADD ADD ADD #04 EQU ,&found JCN
#01 ADD nrocks_mask AND
DUP2
NEQ ,&rocks_loop JCN
POP2
#ff
JMP2r
&found
SWP POP ( remove loop limit )
DUP ;&src_i LDA NEQ ,&end JCN ( check if result is the same as index )
POP #ff
JMP2r
&end
JMP2r
@update_c ( update character position )
&new_x $1
&new_y $1
&rock_i $1
&rock_x $1
&rock_y $1
&run
;c_speed/x LDA ;c_pos/x LDA ADD
,&new_x STR
;c_speed/y LDA ;c_pos/y LDA ADD
,&new_y STR
anispeedmask_normal ;ani_speedmask STA
&check_x
( check collision with borders )
,&new_x LDR minposx EQU ;&noup_x JCN2
,&new_x LDR maxposx EQU ;&noup_x JCN2
( check collision with rocks )
,&new_x LDR ,&new_y LDR index_norock #09 #06
;collision_rocks/run JSR2
( if it is colliding with rock, check further )
DUP #ff NEQ ,&check_x_collision JCN
POP
,&update_x JMP
&check_x_collision
( DUP DEBUG )
( slow down and save rock index )
anispeedmask_slow ;ani_speedmask STA
,&rock_i STR
( check if rock collides with others )
;rocks_x #00 ,&rock_i LDR ADD2 LDA ,&rock_x STR
;rocks_y #00 ,&rock_i LDR ADD2 LDA ,&rock_y STR
,&rock_x LDR ,&rock_y LDR ,&rock_i LDR #09 #06
;collision_rocks/run JSR2
( DUP DEBUG )
( if it is colliding, then skip adding x )
DUP #ff NEQ ,&check_y JCN
POP
( if not, check for borders )
;&rock_x LDA minposx EQU ;&noup_x JCN2
;&rock_x LDA maxposx EQU ;&noup_x JCN2
( move rock with same speed as c )
;&rock_x LDA ;c_speed/x LDA ADD
;rocks_x #00 ;&rock_i LDA ADD2
STA
&update_x
;&new_x LDA ;c_pos/x STA
,&check_y JMP
&noup_x
&check_y
( check collision with borders )
;&new_y LDA minposy EQU ;&noup_y JCN2
;&new_y LDA maxposy EQU ;&noup_y JCN2
( check collision with rocks )
;&new_x LDA ;&new_y LDA index_norock #06 #09
;collision_rocks/run JSR2
( if it is colliding with rock, check further )
DUP #ff NEQ ,&check_y_collision JCN
POP
,&update_y JMP
&check_y_collision
( DUP DEBUG )
anispeedmask_slow ;ani_speedmask STA
;&rock_i STA
( check if rock collides with others )
;rocks_x #00 ;&rock_i LDA ADD2 LDA ;&rock_x STA
;rocks_y #00 ;&rock_i LDA ADD2 LDA ;&rock_y STA
;&rock_x LDA ;&rock_y LDA ;&rock_i LDA #06 #09
;collision_rocks/run JSR2
( DUP DEBUG )
( if it is colliding, then skip adding y )
DUP #ff NEQ ,&noup_y JCN
POP
( if not, check for borders )
;&rock_y LDA minposx EQU ;&noup_y JCN2
;&rock_y LDA maxposx EQU ;&noup_y JCN2
( if not colliding, then move rock with same speed as c )
;&rock_y LDA ;c_speed/y LDA ADD
;rocks_y #00 ;&rock_i LDA ADD2
STA
&update_y
;&new_y LDA ;c_pos/y STA
JMP2r
&noup_y
JMP2r
@update_r
&rock_i $1
&run
( check collision with rocks )
;tog/x LDA ;tog/y LDA index_norock #02 #02
;collision_rocks/run JSR2
( if it is colliding with rock, check if it needs to change state )
DUP #ff NEQ ,&change_state JCN
( DUP DEBUG )
( if there's no collision, reset toggler )
POP
#00 ;tog/state STA
JMP2r
&change_state
( DUP DEBUG )
,&rock_i STR
;tog/state LDA ,&done JCN ( don't toggle if state is active )
;r_color #00 ,&rock_i LDR ADD2 DUP2 STH2
LDA #01 EOR STH2r STA
#01 ;tog/state STA
&done
JMP2r
@animate_c
( is bit0 -animate- on? )
;c_state LDA DUP #00 get_bit_n #01 NEQ ,&s_no_animate JCN
( increment and save animation pointer )
&s_animate
DUP
get_nibble_h #01 ADD #03 AND #40 SFT
SWP get_nibble_l ORA
;c_state STA
JMP2r
&s_no_animate
get_nibble_h #0f AND ;c_state STA
JMP2r
@draw_c ( draw character )
#00 ;c_state LDA get_nibble_h #08 MUL
;c_sprite LDA2 ADD2 .Screen/addr DEO2
;c_pos/x out_screen_x
;c_pos/y out_screen_y
;c_color LDA .Screen/color DEO
JMP2r
@clear_c ( clear character )
;s_clear .Screen/addr DEO2
;c_pos/x out_screen_x
;c_pos/y out_screen_y
#30 .Screen/color DEO
JMP2r
@init_bg
( init bg )
;s_border .Screen/addr DEO2
.Screen/height DEI2 #0000 STH2
&vertical0loop
DUP2
STH2r
DUP2 .Screen/y DEO2
.Screen/width DEI2 #0000 STH2
&horizontal0loop
DUP2
STH2r
DUP2 .Screen/x DEO2
#23 .Screen/color DEO
#0008 ADD2 DUP2 STH2
GTH2 ,&horizontal0loop JCN
STH2r POP2 POP2
#0008 ADD2 DUP2 STH2
GTH2 ,&vertical0loop JCN
STH2r
POP2 POP2
( arena )
;s_clear .Screen/addr DEO2
#00 maxposy #00 minposy STH2
&vertical0loop_clear
DUP2
STH2r
DUP2 .Screen/y DEO2
#00 maxposx #00 minposx STH2
&horizontal0loop_clear
DUP2
STH2r
DUP2 .Screen/x DEO2
#20 .Screen/color DEO
#0008 ADD2 DUP2 STH2
GTH2 ,&horizontal0loop_clear JCN
STH2r POP2 POP2
#0008 ADD2 DUP2 STH2 GTH2 ,&vertical0loop_clear JCN
STH2r
POP2 POP2
JMP2r
( rocks )
@rocks_x [ 25 30 42 50 67 90 98 e8 20 43 43 57 5a 7f bc a5
e5 dd a2 20 b7 9b 38 e8 33 43 63 b7 aa cf bc ]
@rocks_y [ 60 48 34 56 23 65 65 65 ba e9 24 22 72 91 22 c5
25 30 42 50 67 90 98 e8 20 43 43 57 5a 7f bc ]
@r_color [ 00 01 01 00 00 00 01 01 01 01 00 00 01 01 00 00
01 00 01 00 00 01 00 01 01 01 01 01 00 00 00 ]
( sprites )
@s_clear [ 0000 0000 0000 0000 ]
@s_border [ 3288 7e83 780d e013 ]
@s_bola [ 3c4e 9ffd f962 3c00 ]
@s_stand [ 0000 0000 0024 7eff ]
@s_stand_original [ 0000 0000 0000 3c7e ]
@s_monitx [ 3c7e 5a7f 1b3c 5a18 ]
@s_monitx_back [ 3c7e 7efe d83c 5a18 ]
@s_monitx_stepfront0 [ 3c7e 5a7f 1b3c 5a18 ]
@s_monitx_stepfront1 [ 3c7e 5a7f 1b3c 5a10 ]
@s_monitx_stepfront2 [ 3c7e 5a7f 1b3c 5a18 ]
@s_monitx_stepfront3 [ 3c7e 5a7f 1b3c 5a08 ]
@s_monitx_stepback0 [ 3c7e 7efe d83c 5a18 ]
@s_monitx_stepback1 [ 3c7e 7efe d83c 5a10 ]
@s_monitx_stepback2 [ 3c7e 7efe d83c 5a18 ]
@s_monitx_stepback3 [ 3c7e 7efe d83c 5a08 ]
@s_monitx_stepside0 [ 1c3c 7afc d81c 1818 ]
@s_monitx_stepside1 [ 1c3c 7afc d81c 1828 ]
@s_monitx_stepside2 [ 1c3c 7afc d81c 3810 ]
@s_monitx_stepside3 [ 1c3c 7afc d81c 1814 ]
```
## llega(n) aquí
=> ./s-camino.gmi {s-camino}
página actualizada en: sejmana-1660, día 1 (12021-05-20)
=> ./index.gmi {🥭}

View File

@ -1,118 +0,0 @@
# apuntes de ffmpeg
notas de usos comunes que le doy a ffmpeg
# "trim" / cortar
```
ffmpeg -i input.video -ss 5 -t 20 output.video
```
donde:
-ss es el tiempo inicial
-t es la duracion total del nuevo video
# escalar
```
ffmpeg -i input.video -vf scale=640:480 output.video
```
y para reducir el tamaño del archivo, suele ser útil recomprimir con crf (constant rate factor)
```
ffmpeg -i input.video -crf 24 output.video
```
en teoría 24 es una compresión difícil de percibir. números mayores comprimen más.
# cambio de framerate
```
ffmpeg -i input.video -r 30 output.video
```
o
```
ffmpeg -i input.video -filter:v fps=fps=30 output.video
```
# cambio de "velocidad"
obtiene un video a 2x de velocidad:
```
ffmpeg -i input.video -filter:v "setpts=0.5*PTS" output.video
```
para hacer 60x (por ejemplo, convertir minutos a segundos):
```
ffmpeg -i input.video -filter:v "setpts=0.016*PTS" output.video
```
# concatenar
hacer lista de videos con el formato:
```
file 'archivo1'
file 'archivo2'
file 'archivo3'
```
y luego:
```
ffmpeg -f concat -i lista.txt -c copy output.video
```
# generar video desde serie de img
```
ffmpeg -framerate 30 -i frame-%04d.tif -pix_fmt yuv420p -c:v libx264 <output.mp4>
```
# crop (y exportar desde recordmydesktop)
```
ffmpeg -i out.ogv -filter:v "crop=1280:720:0:0" -codec:v libx264 -codec:a libmp3lame output.mp4
```
# video a partir de una imagen
```
# video de una imagen,
# 10 segundos, 30 frames por segundo
ffmpeg -loop 1 \
-i imagen_verde.png \
-t 00:00:10 -r 30 \
video_verde.ogv
```
# video a partir de serie de imágenes
```
# cambia entre imágenes a 2fps,
# video final a 30fps
ffmpeg -framerate 2 \
-i "%02d.png" \
-pix_fmt yuv420p \
-c:v libx264 \
-r 30 salida.mp4
```
# overlay de imagen sobre video
```
ffmpeg -i input.mp4 -i imagen.png -filter_complex "overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2" output.mp4
```
## llega(n) aquí
=> ./apuntes.gmi {apuntes}
página actualizada en: sejmana-1660, día 2 (12021-05-21)
=> ./index.gmi {🥭}

View File

@ -1,121 +0,0 @@
# apuntes de imagemagick
# redimensiona imagen
```
convert imagen.png -resize 100x100 imagen100.png
```
o con -scale, para no interpolar y mantener la apariencia de pixeles
```
convert imagen.png -scale 200% imagenx2.png
```
# reemplaza color por otro
reemplaza azul por blanco:
```
convert imagen.png -fill white -opaque blue salida.png
```
se puede agregar fuzz factor:
```
convert imagen.png -fuzz 45% -fill white -opaque blue salida.png
```
y para convertir a transparente:
```
convert imagen.png -fuzz 45% -transparent blue salida.png
```
# elimina metadatos exif
para imágenes jpg
```
convert foto.jpg -strip fotolimpia.jpg
```
esto re-comprime la imagen, pero puede usarse al mismo tiempo que se redimensiona
```
convert foto.jpg -strip -resize 640x480 fotolimpia_480p.jpg
```
# convierte pdf
por default la conversión sucede en baja calidad, esto la mejora:
```
convert imagen.png -quality 100 -units PixelsPerInch -density 300x300 imagen.pdf
```
y para el caso opuesto:
```
convert -quality 100 -units PixelsPerInch -density 300x300 imagen.pdf imagen.png
```
# reduce la cantidad de colores
deja que imagemagick elija qué colores utilizar:
```
convert imagen.png -colors 8 imagen_8.png
```
o con dithering:
```
convert imagen.png -dither FloydSteinberg -colors 8 imagen_8.png
```
en -dither se puede usar None, Riemersma, o FloydSteinberg
# genera mapas de bits
con color plano:
```
convert -size 100x100 xc:'rgb(0,255,0)' imagen_verde.png
```
con ruido:
```
convert -size 100x100 xc: +noise Random imagen_ruido.png
```
# compone/encima imágenes
para componer una imagen con fondo transparente sobre otra que se convertirá en su fondo
```
composite -gravity center imagen_con_alpha.png fondo.png resultado.png
```
# corta
para cortar una imagen a ciertas dimensiones (wxh) y cierto offset en x,y
```
convert imagen.png -crop 300x300+100+50 +repage recorte.png
```
para quitarte el borde de color constante a una imagen
```
convert imagen.png -trim +repage sinborde.png
```
## llega(n) aquí
=> ./apuntes.gmi {apuntes}
página actualizada en: sejmana-1660, día 2 (12021-05-21)
=> ./index.gmi {🥭}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -1,12 +0,0 @@
# queso mango
=> ./compudanzas.gmi {compudanzas}
=> ./coloring_computers.gmi {coloring computers}
=> ./tiempo.gmi {tiempo}
=> ./textos.gmi {textos}
=> ./apuntes.gmi {apuntes}
=> ./acerca.gmi {acerca}
=> ./linkroll.gmi {linkroll}
página actualizada en: sejmana-1660, día 2 (12021-05-21)
=> ./index.gmi {🥭}

View File

@ -1,28 +0,0 @@
# índice de páginas
=> ./acerca.gmi {acerca}
=> ./actualizaciones.gmi {actualizaciones}
=> ./apuntes.gmi {apuntes}
=> ./avr-asm.gmi {avr-asm}
=> ./ciclo_de_memoria.gmi {ciclo de memoria}
=> ./coloring_computers.gmi {coloring computers}
=> ./compudanzas.gmi {compudanzas}
=> ./compuertas.gmi {compuertas}
=> ./danzas_compuertas.gmi {danzas compuertas}
=> ./danzasistemas-tag.gmi {danzasistemas-tag}
=> ./darena.gmi {darena}
=> ./ffmpeg.gmi {ffmpeg}
=> ./imagemagick.gmi {imagemagick}
=> ./linkroll.gmi {linkroll}
=> ./logiteca.gmi {logiteca}
=> ./non_e-computers.gmi {non e-computers}
=> ./recetas.gmi {recetas}
=> ./running.gmi {running}
=> ./s-camino.gmi {s-camino}
=> ./terranova.gmi {terranova}
=> ./textos.gmi {textos}
=> ./the_rite_of_computing.gmi {the rite of computing}
=> ./tiempo.gmi {tiempo}
página actualizada en: sejmana-1660, día 2 (12021-05-21)
=> ./index.gmi {🥭}

View File

@ -1,25 +0,0 @@
# linkroll
me alegra mucho que estos sitios existan
# en la web
=> https://melmuvz.neocities.org/ melmuvz.neocities.org
=> https://xxiivv.com/ xxiivv.com
=> https://kokorobot.ca/ kokorobot.ca
=> https://copiona.com/ copiona.com
=> https://100r.co/ 100r.co
=> https://xj-ix.luxe/ xj-ix.luxe
=> https://leetusman.com/ leetusman.com
=> https://marijn.uk/ marijn.uk
=> https://maya.land/ maya.land
=> https://simone.computer/ simone.computer
=> https://sophieleetmaa.com/ sophieleetmaa.com
=> https://sixey.es/ sixey.es
=> https://u2764.com/ u2764.com
=> https://ellugar.co/ ellugar.co
=> https://ritualdust.com/ ritualdust.com
=> https://now.lectronice.com/ now.lectronice.com
página actualizada en: sejmana-1660, día 2 (12021-05-21)
=> ./index.gmi {🥭}

View File

@ -1,299 +0,0 @@
# logiteca
compendio de circuitos lógicos que pueden implementarse en las {danzas compuertas}.
=> ./danzas compuertas.gmi {danzas compuertas}
material de referencia para las {compudanzas}
=> ./compudanzas.gmi {compudanzas}
# acerca de
este es un compendio de circuitos lógicos que pueden implementarse en las {danzas compuertas}.
=> ./danzas compuertas.gmi {danzas compuertas}
están descritos en *verilog*, un lenguaje descriptor de hardware. esto con la idea de estandarizarlos, de facilitar simularlos e implementarlos en otros materiales, y de indicar su cualidad de *red abstracta*.
utilizamos el lenguaje a nivel de {compuertas} lógicas solamente: cada compuerta se expresa como una función (`and()`, `not()`, `or()`, `nor()`, `nand()`, etc) donde el primer argumento es el nombre de la *salida* de la compuerta, y el o los otros argumentos son los nombres de las *entradas*.
=> ./compuertas.gmi {compuertas}
el número de participantes asignado por circuito está contado como el *número de entradas* más el *número de compuertas*, donde alguna(s) de ella(s) incluyen las compuertas cuyas salidas son también la(s) del circuito. si se tienen más participantes, se pueden agregar el *número de salidas*: persona(s) que copien el resultado de la compuerta correspondiente.
# multiplicador de 1 bit
circuito que multiplica a dos números de 1 bit y da el resultado en 1 bit.
## multiplicador de 1 bit con compuertas habituales (3 o 4 participantes)
```
// multiplicador construido con compuertas habituales
// entradas (2): a,b
// salidas (1): r (resultado)
// compuertas (1): 1 de 2 entradas
module multiplicador( a, b, r);
input wire a, b;
output wire r;
and C1(r, a, b);
endmodule
```
## multiplicador de 1 bit con nor (5 o 6 participantes)
```
// multiplicador construido con nor's
// entradas (2): a,b
// salidas (1): r (resultado)
// compuertas (3): 2 de 1 y 1 de 2 entradas
module multiplicador( a, b, r);
input wire a, b;
output wire r;
wire p1,p2;
// negadas
nor C1(p1, a);
nor C2(p2, b);
// resultado
nor C3(r, p1, p2);
endmodule
```
# contadores
circuitos que incrementan 1 al número binario colocado en la entrada, con el mismo número de bits a la entrada que a la salida.
si la salida se "conecta" a la entrada, entonces con cada paso se obtiene el
número siguiente en la secuencia, es decir se "cuenta".
al llegar al último número, se regresa a 0.
## contador de 2 bits con compuertas habituales (4 o 6 participantes)
```
// contador de 2 bits con compuertas habituales
// entradas (2): a, b
// salidas (2): x, y
// compuertas (2): 1 de 1 y 1 de 2 entradas
module contador(a, b, x, y);
input wire a,b;
output wire x,y;
not C1(y, b);
xor C2(x, a,b);
endmodule
```
## contador de 2 bits con nor (7 o 9 participantes)
```
// contador de 2 bits con nor
// entradas (2): a, b
// salidas (2): x, y
// compuertas (5): 2 de 1 y 3 de 2 entradas
module contador(a, b, x, y);
input wire a,b;
output wire x,y;
wire p1, p2, p3;
// negaciones
nor C1(y, b);
nor C2(p1, a);
// para x
nor C3(p2, a,b);
nor C4(p3, y,p1);
nor C5(x, p2,p3);
endmodule
```
## contador de 3 bits con nor (13 o 16 participantes)
```
// contador de 3 bits con compuertas habituales
// entradas (3): a, b, c
// salidas (3): x, y, z
// compuertas (10): 3 de 1, 4 de 2, 3 de 3 entradas
module contador(a, b, c, x, y, z);
input wire a,b,c;
output wire x,y,z;
wire p1, p2, p3, p4, p5, p6, p7;
// negaciones
nor C1(p1, a);
nor C2(p2, b);
nor C3(z, c);
// para y
nor C4(p3, b,c);
nor C5(p4, p2,z);
nor C6(y, p3,p4);
// para x
nor C7(p5, a,b);
nor C8(p6, p1, p2, z);
nor C9(p7, a, p2, c);
nor C10(x, p5, p6, p7);
endmodule
```
# half adder
circuito que suma dos bits y da el resultado en dos bits (resultado y *carry*)
## half adder con compuertas habituales (4 o 6 participantes)
```
// half adder construido con compuertas habituales
// entradas (2): a,b
// salidas (2): r, c (resultado, carry)
// compuertas (2): 2 de 2 entradas
module halfadder( a, b, r, c);
input wire a, b;
output wire r,c;
// carry
and C1(c, a, b);
// resultado
xor C2(r, a, b);
endmodule
```
## half adder usando nor (7 o 9 participantes)
```
// half adder construido usando nor's
// entradas (2): a,b
// salidas (2): r, c (resultado, carry)
// compuertas (5): 2 de 1 y 3 de 2 entradas
module halfadder( a, b, r, c);
input wire a, b;
output wire r,c;
wire p1,p2,p3;
// negadas
nor C1(p1, a);
nor C2(p2, b);
// carry
nor C3(c, p1, p2);
// resultado
nor C4(p3, a, b);
nor C5(r, c, p3);
endmodule
```
# full adder
circuito que suma tres bits y da el resultado en dos bits (resultado y *carry*).
## full adder con compuertas habituales (14 o 16 participantes)
```
// full adder construido con compuertas habituales
// entradas (3): a, b, c
// salidas (2): carry, r (resultado)
// compuertas (11): 2 de 1 y 9 de 2 entradas
module fulladder( a, b, c, r, carry);
input wire a, b, c;
output wire r, carry;
wire p1, p2, p3, p4, p5, p6, p7, p8, p9;
// negadas
not C1(p1, a);
not C2(p3, p2);
// diferencias b,c
xor C3(p2, b, c);
or C4(p4, b, c);
and C5(p5, b, c);
// armado de resultado
and C6(p6, p1, p2);
and C7(p7, a, p3);
or C8(r, p6, p7);
// armado de carry
and C9(p8, p1, p5);
and C10(p9, a, p4);
or C11(carry, p8, p9);
endmodule
```
## full adder usando nor (15 o 17 participantes)
```
// full adder construido usando nor's
// entradas (3): a, b, c
// salidas (2): carry, r (resultado)
// compuertas (12): 3 de 1, 3 de 2, 4 de 3 y 1 de 4 entradas
module fulladder( a, b, c, r, carry);
input wire a, b, c;
output wire r, carry;
wire p1, p2, p3, p4, p5, p6, p7, p8, p9, p10;
// negadas
nor C1(p1, a);
nor C2(p2, b);
nor C3(p3, c);
// pa'l carry
nor C4(p4, a, b);
nor C5(p5, a, c);
nor C6(p6, b, c);
// pa resultado
nor C7(p7, a, b , c);
nor C8(p8, p1, b, p3);
nor C9(p9, a, p2, p3);
nor C10(p10, p1, p2, c);
// salidas
nor C11(carry, p4, p5, p6);
nor C12(r, p7, p8, p9, p10);
endmodule
```
## llegan aquí
=> ./danzas_compuertas.gmi {danzas compuertas}
=> ./coloring_computers.gmi {coloring computers}
página actualizada en: sejmana-1660, día 2 (12021-05-21)
=> ./index.gmi {🥭}

View File

@ -1,24 +0,0 @@
# non e-computers / computadoras no electrónicas
computación sin semiconductores
# enlaces internos
=> ./compudanzas.gmi {compudanzas}
=> ./coloring_computers.gmi {coloring computers}
=> ./the_rite_of_computing.gmi {the rite of computing}
# enlaces externos
=> https://xkcd.com/505 a bunch of rocks - randall munroe, xkcd
=> http://www.blikstein.com/paulo/projects/project_water.html programmable water - paulo blikstein 2003
=> https://wiki.xxiivv.com/site/papier.html wdr papier computer
=> https://wiki.xxiivv.com/site/paper_computing.html paper computing
=> https://yip.pe/analog.html analogue computing
## llega(n) aquí
=> ./coloring_computers.gmi {coloring computers}
=> ./compudanzas.gmi {compudanzas}
página actualizada en: sejmana-1660, día 2 (12021-05-21)
=> ./index.gmi {🥭}

View File

@ -1,202 +0,0 @@
# recetas veganas
recetas que solemos preparar, en remix constante
# hotcakes de chocolate
~35 min
~10-12 piezas
(remix de la receta en pag 46 del libro "cocinar vegano vol.1" de francesca carpinelli cocinavegano.com)
## ingredientes
* 2 tazas avena (hojuela de grano entero, "old-fashioned")
* 1.5 tazas leche de soya
* 1 cdita polvo para hornear
* 1 cdita bicarbonato de sodio
* 1 cdita canela en polvo
* 1/2 cdita sal de mar
* 3 cdas azucar mascabado
* 2 cdas cocoa en polvo
* 1 cda extracto de vainilla
* 1 cdita aceite de coco (u otro)
* 1/2 taza chocolate amargo en trozos (opcional)
## instrucciones
* muele la avena hasta hacerla harina
* agrega el polvo para hornear, bicarbonato de sodio, sal, canela, cocoa y azucar
* mezcla bien
* poco a poco agrega leche de soya y bate hasta incorporar los ingredientes
* agrega el extracto de vainilla y bate de nuevo
* coloca sarten a fuego medio
* cuando se caliente, aceita y sirve la mezcla en partes iguales
* cuando se hagan burbujas en la superficie, agrega trozos de chocolate y voltea
* retira cuando tengan la consistencia que te agrade
(recuerda que no hay ingredientes crudos en la receta por lo que no hay riesgos por si parece que algo falta de cocerse)
## sugerencia
sirve con frutos rojos, moras, platano, mermeladas, mantequilla de cacahuate y/o de almendra.
# "leche" y "queso" de soya
preparar "leche" de soya resulta en restos llamados "okara", que puede usarse entre otras cosas para preparar un "queso"
~60 min
~1 lt de leche y
un queso de ~120 gr
## ingredientes
solo para la "leche":
* 1/2 taza frijol de soya seco
* 4 tazas agua
para el queso:
* 2 cditas levadura nutricional
* 1/2 cdita sal
* 1/2 limón
* 1 chorrito aceite de oliva
* 3 tazas agua
necesitas alguna herramienta para licuar/moler, y otra para colar finamente (e.g. manta de cielo)
dos ollas y algunos recipientes, y un colador ayuda
## instrucciones
### previo:
* deja remojando el frijol de soya por unas 8 horas
### durante:
para el queso:
* empieza a hervir 3 tazas de agua
para la leche:
* escurre el frijol de soya - al remojarse crece como hasta 1.5 tazas
* muele en la licuadora el frijol con 3 tazas de agua
* usa la manta de cielo para filtrar y exprimir el resultado dentro de una olla
(el liquido se vuelve la leche, y lo solido es la okara)
* pon la olla de la leche a hervir, cuidando de quitarle la espuma y nata
* cuando hierva, cambia a fuego medio y espera ~20 minutos, quitando espuma y
revolviendo en ocasiones
* deja enfriar y bebe!
para el queso:
* tan pronto el agua hierva, y ya tengas la okara, ponla en esa olla
* deja cocer a fuego medio durante 15-20 minutos
* usa el colador y la manta de cielo para filtrar el resultado (el liquido ya no
lo usaremos, y el solido es la okara cocida)
* deja enfriar un rato
* cuando te sea posible, exprime para quitar todo el liquido que puedas
* coloca la okara cocida y "seca" en un recipiente
* sirve encima la levadura nutricional, sal, limon y aceite de oliva
* mezcla muy bien con tus manos
* compacta la mezcla para que sea "queso"
* aparentemente conviene refrigerar un rato antes de comerlo
## referencias
remix de estas recetas:
=> https://simpleveganblog.com/homemade-soy-milk/ leche de soya
=> https://youtube.com/watch?v=BU2LEYHb_qk tofu casero (youtube)
# pastel de garbanzo
remix de "falafel al horno"
(receta en proceso de afinarse porque la hago de manera intuitiva (?))
~60 min
~2 "pasteles"
## ingredientes
### para la masa
* 1 taza garbanzo seco
* 2 jitomates medianos
* 1/2 cebolla
* 2 dientes ajo
* 1 cucharada sal
* 1 cucharadita pimienta
* 1 cucharada comino
* 1.5 tazas agua
* 1 cucharadita aceite
* al gusto cilantro
* al gusto chiles serranos
### extras:
* 1 cucharadita ajonjoli
* 1 pimiento
* 1/2 taza setas
* 1/2 taza espinaca
necesitas horno y alguna herramienta para moler/licuar
## instrucciones
### previo:
* deja remojando los garbanzos entre 8 y 12 horas (crecen como a 2.25 tazas)
### durante:
* escurre y enjuaga los garbanzos
* muele en la licuadora los garbanzos con el agua, cebolla, jitomates, ajo, sal,
pimienta, comino, cilantro y chile(s)
* aceita un par de moldes para pan y sirve la mezcla en ellos
* opcional: deja reposar en el refrigerador por ~30 minutos
* parte los pimientos y setas en rebanaditas, coloca junto con la espinaca y
ajonjoli en la superficie de la masa
* coloca los moldes en el horno, enciende a ~300 grados C
* espera unos 40-50 minutos, o hasta que adquieran la consistencia que desees
* apaga el horno y aprovecha el calor para seguir cociendo
* deja enfriar y sirve!
queda bien junto con limon, aguacate, y alguna salsa (en proceso de definirla)
# kombucha
(notas que uso para cada ronda)
~1 lt de kombucha
## ingredientes
* 1/2 taza liquido iniciador + scoby
* 1 taza agua caliente
* 1 cucharadita te negro (o 2 sobres)
* 1/4 taza azucar mascabado (4 cucharadas)
* 3 tazas agua fria
## instrucciones
* prepara el te con el agua caliente
* cuela las hojas del te
* disuelve la azucar en el te
* diluye el te con el agua fria
* agrega la mezcla al liquido iniciador + scoby
* tapa con tela / filtros de cafe, y espera al menos un par de semanas
## llega(n) aquí
=> ./acerca.gmi {acerca}
=> ./apuntes.gmi {apuntes}
página actualizada en: sejmana-1660, día 2 (12021-05-21)
=> ./index.gmi {🥭}

View File

@ -1,19 +0,0 @@
# running
volando con los pies
* 1km en 2:52 - sjm-1648, d-1
* 2km en 7:12 - sjm-1641, d-6
* 5km en 19:12 - sjm-1425, d-4
* 10km en 39:38 - sjm-1451, d-3
* 21.1km en 1:27:31 - sjm-1649, d-4
* 42.192km en 3:24:14 - sjm-1649, d-4
## llega(n) aquí
=> ./acerca.gmi {acerca}
página actualizada en: sejmana-1660, día 1 (12021-05-20)
=> ./index.gmi {🥭}

View File

@ -1,38 +0,0 @@
# s-camino... el camino del ensamblador (?)
veo razones varias, múltiples, para el estudio poético y contemplativo de la computación a bajo nivel.
específicamente aquí me refiero al programar en el llamado lenguaje ensamblador (¿o idioma ensamblador?)
en otros contextos se puede hablar de que conviene hacerlo buscando eficiencia, velocidad, haciendo el sacrificio de descender por las escaleras para mover los fierros; ensuciarse las manos mientras se observa la complejidad del dispositivo... pero todo sea por la productividad y el resultado óptimo que se encontrará a final del tunel.
aquí no estamos en ese contexto, claramente. pero justo esa impracticidad, esa mugre, esa manualidad o artesanalidad, la imagen de que a fin de cuentas (solo) estamos moviendo bits de aquí para allá (conectados de tal manera que algo más sucede) es la que llama la atención.
¿qué tal si acompañamos a la máquina en un nivel cercano al que será su propósito (¿o condena?) de vida?
tomamos conciencia de cada uno de los pasos por la que la haremos pasar sin otra opción más que seguir, seguir, seguir…
y sí, al escribir y programar en ensamblador vamos con lentitud, porque las convenciones son extrañas (todo un dialecto que tal vez busca alejar a quien no tiene cierto perfil), porque es un mundo que contrasta con la costumbre de la eficiencia, de los resultados inmediatos.
además, ¿cuál es la prisa, por qué querer hacer tanto?
hacer un programa se puede convertir en un ritual; la invocación del libro de instrucciones y conexiones, la planeación y reflexión antes de escribir la primera letra; tardarse horas en algo que aquellas estructuras de facilidad, practicidad, te permiten hacer en minutos, segundos (¿pero te quitan toda la magia, todo el asombro y confrontación con lo que realmente está pasando?)
la no portabilidad del código está a nuestro favor, porque implica rehacerlo cada vez (o cuando sea necesario), re-contemplar, ir lento. de nuevo, ¿cuál es la prisa?
estoy de acuerdo, es un mundo inaccesible (¿similar a cualquier otro tipo de hechicería?), pero parte de la labor que me autoasigno es hacerle puertas (o grietas, hoyos, y adentro madrigueras) para poderlo compartir.
no cualquiera tiene el tiempo... igual aquí andaremos, con paciencia, y un paso a la vez.
(escrito el 12019-07-05)
## llegan aquí
=> ./avr-asm.gmi {avr-asm}
=> ./darena.gmi {darena}
=> ./textos.gmi {textos}
página actualizada en: sejmana-1660, día 1 (12021-05-20)
=> ./index.gmi {🥭}

View File

@ -1,127 +0,0 @@
# terranova
relato en proceso. escrito a inicios del 12021.
# Terranova
Nos encontramos aquí, al lado del risco. Poco a poco abrimos los ojos, despertamos.
No importa mucho dónde nos encontrábamos antes; el recuerdo por el momento se percibe nebuloso. ¿Aquí es cuando notamos que previamente no existíamos? No lo sé, no lo sé...
Somos dos personas, sentadas en una roca. Observamos el cielo estrellado con más claridad que nunca. ¿Será debido a que no hay atmósfera? De cualquier forma, este traje protector nos aleja un poco de lo que sería la experiencia completa: recepción lumínica estelar, con casi ninguna interferencia.
Alrededor, más rocas, y relieves profundos. Parecería inhóspito, frío. Como sea, de algún modo sabemos, y/o sabemos que de algún modo, tenemos compañía.
Por ahora, es mi turno relatar. Pero no hay que fiarse mucho de estas u otras palabras. La mimesis ha sido tan profunda que puede no quedar claro (a ti, a nosotras, a nadie) quién es quien habla, y quién no.
En otros tiempos me han llamado Terranova. La persona a mi lado tuvo el nombre de AnaTrevor. Ahora, poco de eso importa. El tiempo parece fluir distinto, y no nos dedicamos a tanto.
Todo parece indicar que la sobrevivencia está resuelta. Nada de nuestro contexto lo contradice. Al fin y al cabo, aquí estamos; al fin y al cabo, nos escuchas.
Después de una pequeña pausa, notamos un pequeño cambio de luz en el horizonte. Nos da la oportunidad de observar, contemplar, respirar. Alcanzamos a percibir una vibración, ¿es viento?
Algunas superficies oscilan en resonancia: frecuencias que se logran transmitir y como sonido interpretar; con todo y sonsonete extraño. Expresiones torcidas, pero posibles.
"¿Por qué no aprovechar?", hubiera dicho aquel ser. ¿Ditto, se llamaba? ¿Qué más decía? "Si el camino es infinito, entonces no hay prisa."
Ah, sí. Recuerdo los condicionales. El barandal, y la propuesta de amistad. Me pregunto dónde se encuentra ese lugar en relación a donde estamos. El salto al jardín con una pequeña pared volcánica. En principio no se ve, o siente, cerca.
Asumo que nuestra ubicación es otra, a dimensiones estelares, y en constante cambio. De ser así, haría falta rehacer las observaciones a lo largo de los años. Y esto, solo para tal vez encontrar la dirección, y con más paciencia, la distancia. No sé si sería fructífero. ¿Mejor apuntar hacia dónde iremos? ¿Iríamos? Ya veremos.
Quiero comentarle a Ana, pero ahora duerme sobre mi hombro. Lo bueno es que ya estamos aquí, y hay tiempo.
# Portada
La imagen de la portada de este dispositivo de almacenamiento, consiste en una representación de una pareja de astronautas que se toman de la mano mientras corren, saltan, vuelan en lo que parece que es "la superficie lunar".
Al menos, eso es lo que logramos identificar; el material de origen orgánico se ha desintegrado un tanto, y el método de impresión utilizado no da indicios de haber sido de la más alta calidad.
¿Es una representación de nosotras? No sé si considerar que el traje que portamos es "de astronauta", pues hace tiempo no navegamos o viajamos hacia las estrellas, los astros. ¿Estamos en "un astro", o es nuestro planeta? ("nuestro" y "planeta" entre comillas, claro)
Sin querer notamos que así como nuestro movimiento (a nivel personal, a nivel planetario) es relativo, también lo es todo este asunto de nomenclatura. Sí, estamos en las estrellas, y sí, estamos en una estructura rocosa que vagabundea.
De cualquier forma, la imagen nos hace sonreír. Eso de tomarse las manos no sería tan común en una representación de ese tipo, al menos no en épocas previas. Y bueno, sí podemos identificarnos con ella: Estamos aquí, en modalidad "planeta", y contentas, sobre otro "planeta".
# Primera caminata
El día de hoy tuvimos una caminata hacia el primer risco. Quisiera hablar de puntos cardinales (oh, las bendiciones pseudo-cartesianas) pero no nos ha quedado claro cómo tener ese tipo de referencias absolutas en este lugar.
Por el momento hemos realizado unas marcas en el suelo para ubicarnos, "hasta cierto punto". No hemos logrado alinearlas con algún cuerpo en el cielo que se mantenga estable durante un periodo que haga sentido. ¿En qué sistema complejo estamos? Difícil recordarlo.
El trayecto de hoy nos permitió sentir qué tan apropiada es nuestra vestimenta para el ambiente. Tenemos movilidad, ligereza. Después de unos minutos (si es que esa medida todavía significa algo) la temperatura se ajusta, el aire parece que se libera.
Es extraño estar sobre esta superficie rocosa, previa (¿o posterior?) a la vida. Me pregunto hasta qué punto no somos también rocas, rocosas, minerales. Autopercibimos, y no sabemos si ellas también.
"La no linealidad de la materia viva", nos dijo un maestro alguna vez, mediado por múltiples redes de intercomunicación. Observas a la materia en condiciones no estables, y entonces todo cuadra (en cuanto a que no hace sentido.)
¿Esta superficie no cambia, o más bien vamos muy rápido como para notarlo?
¿O ambas?
Curiosa situación, más al compararla con la bóveda celeste, o lo que alcanzamos a percibir de ella. ¿Vamos muy lento como para empezar a inferir sus patrones? ¿O necesitaremos bastante tiempo? Nada que un tanto de paciencia no nos pueda proveer.
Podríamos decir que la caminata no nos llevó muy lejos. La emoción y estrés por la incertidumbre, el terreno desconocido aunque sin muchas macrovariaciones, el no tener muy claro qué es lo que estamos haciendo; todo esto se acumula, nos deja nerviosas, sudorosas, ¿en plena vida, dirían algunas?
Queremos imaginar que la iteración constante hará que nuestros cuerpos reconozcan el terreno. Y bueno, alguno que otro sendero se marcará. Asumo ciertas condiciones lineales, constantes; es la costumbre, ¿o no?
Ya veremos qué hacer de no ser así. "La respuesta está en el relámpago en tu memoria", nos dice el generador de frases.
# Siesta
Durante un sueño en común, tuvimos algunas visiones y reflexiones, refracciones tal vez (y no refacciones), respecto a la curvatura del espacio-tiempo, la superficie rocosa en la que dormimos, y la posibilidad de transmitir caracteres a través de esos campos, gradientes energéticos.
No me quedó claro si el puente mencionado por Terranova en esos momentos, realmente es una ubicación de este lugar o más bien algún tipo de "proyecto" (para no decir "proyección") de cuestiones que llevamos en lo profundo (para no decir "en el más allá"). ¿Podríamos estar seguras de la existencia de dicha edificación aunque la tuviéramos registrado en mapas?
Sucedió que nos impresionó poder apreciar (es decir, poder ver con nuestros ojos) cómo las ondas electromagnéticas eran emitidas y se trasladaban en grandes bucles que solo existían al capturarse desde cierta perspectiva. Tal vez se debió a una breve ventana, la oportunidad de participar de un punto de vista más allá de las dimensiones en las que solemos movernos.
Al observar desde otro lado, las ondas apenas se distinguían, y más bien parecían líneas rectas.
¿A dónde llega aquello que transmitimos? ¿Alguien lo recibe? ¿Alguien lo decodifica? O antes que eso, ¿alguien nota que se trata de mensajes? ¿Y qué es lo que decimos?
Reflexionamos también en dirección contraria: ¿Desde dónde sintonizamos aquello que hemos soñado?
Comemos unos trozos de pan que nos recuerdan a historias épicas. No las extrañamos demasiado, menos ahora que estamos en nuestra propia búsqueda.
Como sea, no está de más darse el gusto, permitirse recordar.
# Percepciones
El día de hoy fue día de contemplación: Observamos los cielos que cambian de tonalidad de manera sutil y súbita. Así cambian, y así les vemos.
Me doy cuenta que no estaría mal llevar un registro de "cuándo" es que transmito estas notas. Sé que los protocolos de comunicación en los que se basan estas entregas, si bien son robustos, pueden cambiar el orden de llegada de los mensajes. Agregar algún tipo de marca de tiempo en el texto podría funcionar.
A veces nos preguntamos si, a escala de años, siglos, milenios, una diferencia de "días" u "horas" es significativa.
De cualquier forma, el problema es que nada más no nos ubicamos, y nuestras referencias artificiales, que en principio serían o parecerían "absolutas", no nos funcionan: no hay certeza en las marcas de tiempo que nos indican. Combinamos eso con que hacemos nuestras transmisiones solamente en ¿días? ¿momentos? de poca actividad física, y entonces nos confundimos todavía más.
No tenemos claro cómo es que este dispositivo logra comunicarse. Hemos observado sus circuitos, osciladores que se supone tienen una frecuencia constante, con un rango de error imperceptible para seres como nosotras, y nada: en ocasiones podemos percibirlos a escala sonora, otras veces les sentimos como vibraciones, y en algunas otras vemos emisiones lumínicas.
Podría parecer que esta falta de referencia nos causaría mucho conflicto: ¿somos nosotras quienes están pasando por las variaciones de temporalidad? ¿es el mundo en el que nos encontramos? ¿todas, ninguna de las anteriores? ¿tal vez ni siquiera se trata de tiempo?
Pero estamos bien, al menos por el momento. Sí, un pequeño juego, nada que temer. De alguna manera, estos "cambios constantes" nos permiten sentir un flujo vital, y estar más alertas.
Algo vamos encontrando con estas no-repeticiones. No importa que desde fuera parezca lo ¿contrario?: una serie de no-cambios; o vaya, lo mismo.
# Espirales en pantalla
Hoy pasamos un rato en recepción e intento de interpretación de señales electromagnéticas. Los fenómenos que hemos descrito en otros mensajes hacen la tarea más complicada: ¿realmente sintonizamos las frecuencias que el dispositivo nos indica?
Ahí estábamos, dos personas sobre una roca, viendo a una pequeña pantalla de osciloscopio. Este último también sobre una roca, otra roca. Cables en extensión por el espacio de la superficie, montados de alguna forma sí, sobre más rocas.
Hubiera convenido saber (y conocer) que conocer (y saber) sobre antenas iba a tener sentido y aplicación en un futuro próximo. Ahora nos encontramos aquí, tal vez con suficiente tiempo pero no con suficientes ganas de calcular con aquellas famosas ecuaciones.
Como sea, el proceso de prueba y error no ha estado tan mal. De manera tangible podemos notar los resultados del acomodo de nuestra configuración receptora. Notamos lo que parecerían frecuencias base, restos y/o ecos de eventos que en principio sucedieron cerca del inicio.
Ninguna novedad, en apariencia. Todo bien.
En algún momento la pantalla del osciloscopio perdió su linealidad, e interrumpió lo que se estaba convirtiendo en trance de contemplación: empezamos a ver una espiral y cómo se formaba y deformada. Al modificar los controles pudimos apreciar su aspecto fractal. ¿Sería una emisión especialmente diseñada para afectar los circuitos digitales de aparatos como este, a pesar de la interferencia y el ruido cósmico?
Las pequeñas luces de colores mostraban patrones similares a otros que hace ¿tiempo? no teníamos la oportunidad de ver. Estos cielos impredecibles han consumido, de manera muy merecida, casi toda nuestra capacidad de atención visual.
Pero ahora, aquí estamos, estuvimos, ¿estaremos? en observación. Espirales que rompen la convención de la "función": más de un valor para cada unidad de lo que se supone es tiempo.
Como era de esperarse de acuerdo a toda esta situación que nos contextualiza y que no terminamos de entender, no pudimos capturar de manera digital aquello que se veía. Solo nos quedó el recuerdo, y bueno, este mensaje.
Regresamos a oscilaciones que parecen ser convencionales. Seguiremos en la búsqueda.
## llega(n) aquí
=> ./textos.gmi {textos}
página actualizada en: sejmana-1660, día 2 (12021-05-21)
=> ./index.gmi {🥭}

View File

@ -1,13 +0,0 @@
# textos
en proceso de traer por acá a textos (¿ficci-o-poéticos?) que he escrito
=> ./s-camino.gmi {s-camino}
=> ./the_rite_of_computing.gmi {the rite of computing}
=> ./terranova.gmi {terranova}
## llega(n) aquí
=> ./acerca.gmi {acerca}
página actualizada en: sejmana-1660, día 2 (12021-05-21)
=> ./index.gmi {🥭}

View File

@ -1,292 +0,0 @@
# the rite of computing
we saw the tipping points being crossed, and yet the same behavior
destruction was all around, even in the use of our tools of creation
what could we do? how could we engage? how could we disengage?
we thought of reinventing computers
homegrown, homemade…
a game, a party, a dance
maybe in that way we would understand?
maybe in that way we would know if we want to keep them?
the following are some of our notes, thoughts, conversations, actions…
# r
i wonder what happens when you remove efficiency, speed
the machine doesnt seem to complain
it comes with a great cost
some beings at the service of others, is that the natural order?
you thought and asked, until you realized you put yourself on fire
the higher one gets, and the more one on others depends…
how bad you think the fall will be?
how long will the internet live once the humans are gone?
# u
the person is given a ruleset
a table
current configuration
encountered symbol
what to put instead
where to move
next configuration
the floor is prepared
a row of symbols
mosaic of colors
in a spiral
around the fire
the person enters the space
drums start playing
the person starts moving
repeating
a configuration becomes a state of being
a sequence of movements
the mosaics are replaced
(make sure you dont lose track)
transitions from a state to another
the spiral becomes another
we expect the process
we expect the result
after hours of a body
becoming a body
emulating a body
who moves and sweats
losing (but not really) breath
the iteration is complete
# w
can we talk about rewilding computers?
were they wild to start with?
how wild or not is a division
of time and space in slots
ever-decreasing measures
changes of state?
the revolution, the transcription, life
no boundaries, really, but in our self
and that one, really, also emerges
maybe you mean getting rid of the rigid cover
curving the interconnections
the differences are fluid
with or without extremes?
i lost you
destroying the shiny, embracing the earth
a cracked screen carried away by the sea?
that would probably kill us
with emergence we understand we cant understand
is it a useful model?
model? useful? it?
number of processors versus grains of sand?
and if we become just a probe?
i dissolve, the computer
the transformation carries on
# n
think about the apparently unnatural…
creating vacuum…
manipulating beams of charge and light…
wiring thousands, cooling their surrounding air…
later inserting billions in a little block of sand
why not just chill and enjoy the beach?
there was a war
and then the promise of productivity
why not just chill and enjoy the beach?
# t
a tape in the form of a series of objects in some kind of slots
each object a symbol
maybe pieces of cloth in a clothesline
or pieces of paper on the floor
soft and flexible
an object signals the current position of the head
maybe a stool to reach above
or a long stick that rests and points
a group of people is engaged
each one of them with a different command:
if you encounter the short object in the tape
replace it with the thin
move the head to the left
and get the long-haired person to continue
different combinations
fragments of behavior
nobody knows what is really happening
and yet, the computation occurs
# i
can you tell me again about your project?
project, ceremony, dance, choreography… computer!
i wonder how can someone end up there
its just about imagining alternatives, trying to reinvent…
is this a solution to a problem? what if everybody does as you?
they originated with war in body and mind
and they have very good uses despite that; they saved me!
what about realizing they are made through destruction?
it might be practical: destroying the old and the weak
and we will drown by powering them
i hope we can upload our consciousness by then?
you might emulate yourself in rocks
# c
a group of people arrives to the floor that suddenly becomes a stage
bare feet, skin in the air with no layers in between
they move without the code that you would expect
(but with a different set of rules, what do they encode?)
eye contact, spatial awareness, flow
a self-generated oscillation
one of them observes other two
based on the three states, this one responds
repeat the same for each body
a cell made of cells
the pulse that reminds of a distant past
sweat that would short-circuit your board
yet information travels, proceeds, evolves
unpredictable behavior except by simulation
the bodies stomp, they clap, they sing
becoming another
above? (where?) below? (where?)
its there!
no need to channel the earth
# e
i like computers
why? they make more sense?
maybe. complex but fabricated with heavy logic constraints…
do you know how they work?
thats the question, do they work or do they just exist…
following a hardwired behavior, filtering out noise
only a fixed amount of values in space and time
and yet embedded in an apparently continuous world
where to put them in the organic-inorganic spectrum
extracting minerals, sculpting them…
marks are left, one at a time
… modulating the electromagnetic spectrum all around
wait! why are you talking about electricity, semiconductors?
do you want to develop further?
id prefer to do a backwards somersault and take a non-violent path
# x
the idea is that you, as an individual, follow a simple set of rules
these rules make me depend to some extent on other individuals
your state of being based on my state of being
we feel a pulse arriving, and we change
how predictable you would think a system like that is?
i wouldnt expect it to be completely chaotic…
complexity… how can you think about it if it was not for it?
each component can be part of the whole without knowing about it
“it” being the whole or the component?
or any of them?
then can only one of these pieces bring the whole system down?
the state of that answer depends on the state of your purpose
i guess an undirected, chaotic behavior will always be alright
the order, the function, the control are the ones that you can break
why would we want a math-machine that doesnt do the math right?
theres the poetry!
but what about the rigor? the experience of following constraints?
you think that is important?
maybe its part of my identity
we dont have to do right math right
less about me, more about the connections?
in any case, it would be arbitrary and not too easy to get
# d
im having trouble putting the finger in the point
is your self-protective awareness in action?
maybe. who will want to question electronic computers.
or productive computers, for that matter.
# s
i dont know whats a computer
dont worry, neither do i
but you see it…
i see it and i marvel
it is only a machine
i see how arithmetic can be done mechanically
no need to learn, no need to understand?
isnt that amazing? doing something without knowing you are doing it
small components contributing with small actions to a whole that no one knows?
only the designer?
and what if there is no one?
what if they also emerged as a whole?
and what kind of whole emerges from us?
or where does that whole exist?
if simple models acquire complexity so quickly…
yes, say hi to the chaos of nature
# p
has lightning been captured twice, so far?
fire, electricity, what are they?
probably its the same here with computing
one thing is to describe them working…
visualizations, metaphors… leading to understanding what i cant see?
but you dont have to, to use them
how convenient!
in many ways, knowing about computer architecture is completely useless
digital circuit design as some kind of poetry?
unless you are in one of the few companies, of course
forcing the rocks until they cant hold it anymore?
the magic doesnt disappear even if you know how to combine transistors
magic? the mystery of computation?
how can dead matter appear to be alive?
and how can it replicate and build new versions of itself?
# l
a group of people walk in the space
you see one person:
if they rise you fall
if they fall you rise
respond immediately
(as fast as your body can)
they in turn see two,
not including you
they rise only if both fall
otherwise they fall
some others see them
some others see you
every once and then
a new change occurs in the beginning
people rise
people fall
the wave propagates
there is an end
no more people rise
no more people fall
and there is a result
they take note
someone in the audience remembers
and then,
after a pause
the beginning feeds from the end
a change again
the machine is counting
originally published in adjacent, issue 5, as lengua partida (2019)
CC BY-SA 4.0
=> https://itp.nyu.edu/adjacent/issue-5/the-rite-of-computing/ the rite of computing (la consagración de la computadora) - ADJACENT Issue 5 (web)
## llega(n) aquí
=> ./non_e-computers.gmi {non e-computers}
=> ./textos.gmi {textos}
página actualizada en: sejmana-1660, día 2 (12021-05-21)
=> ./index.gmi {🥭}

View File

@ -1,146 +0,0 @@
# tiempo
se(j)mana a se(j)mana, documentando tiempos “libres” y no...
van 1659 — estamos en 1660 — quedan ~2240
=> ./tiempo.xml [atom feed]
# sejmanas...
## sjm-1660
de lo habitual, estuve:
* impartiendo clases de código creativo
* corriendo
* cocinando comida vegana
además, estuve:
* finalizando el generador de este sitio
* planeando, preparando y presentando un proyecto de experiencia inmersiva en web.
* algo conflictuado con las razones de hacer arte digital
leí (de nuevo), y recomiendo:
=> https://everestpipkin.medium.com/but-the-environmental-issues-with-cryptoart-1128ef72e6a3 the environmental issues with cryptoart will be solved soon, right? - everest pipkin
## sjm-1659
de lo habitual, estuve:
* impartiendo clases de código creativo
* corriendo
* cocinando comida vegana
* experimentando con hydra para escenario en vivo y a la distancia
además, estuve:
* planeando y preparando una experiencia inmersiva en web.
* agregando y manteniendo páginas del sitio
* “moviendo” / difundiendo el proyecto de compudanzas, llegando a contemplar colocarlo en su propio sitio sin tantos cambios de estilo visual (?)
* preparando talleres a impartir próximamente :)
* creando el generador de sitio para esta web
leí y recomiendo:
=> https://lipu.dgold.eu/original-sin the original sin of free software - daniel goldsmith
=> https://www.boringcactus.com/2021/02/11/not-any-purpose.html not "any purpose" - boringcactus
=> https://www.baldurbjarnason.com/2021/the-oss-bubble-and-the-blogging-bubble/ the open-source software bubble that is and the blogging bubble that was - baldur bjarnason
## sjm-1658
de lo habitual, estuve:
* impartiendo clases de código creativo
* corriendo
* cocinando comida vegana
* experimentando con hydra para escenario en vivo y a la distancia
además, estuve:
* siguiendo el aprendizaje con uxn, desarrollando darena, juego de rocas en el desierto.
* participando en el “reto plancha”, llegando a 5 minutos!
* visitando un gran parque cercano, y considerando ser “guardabosques” (?)
* platicando, planeando y preparando una experiencia inmersiva en web.
* viendo el documental seaspiracy, confirmando y reforzando el pacto vegano
* agregando páginas al sitio
* creando imágenes generativas a partir de video, con fines comerciales.
leí y recomiendo
=> https://www.resilience.org/stories/2019-05-10/loving-a-vanishing-world/ loving a vanishing world - emily johnston
=> https://jembendell.com/2021/05/09/jem-bendell-presents-to-extinction-rebellion-on-honesty-about-disruptions-ahead/ jem bendell presents to extinction rebellion on honesty about disruptions ahead
=> https://ar.al/2021/05/10/hell-site/ hell site - aral balkan
## sjm-1657
de lo habitual, estuve:
* impartiendo clases de código creativo
* corriendo
* cocinando comida vegana
* experimentando con hydra para escenario en vivo y a la distancia
además, estuve:
* aprendiendo a programar con uxn, desarrollando entre otras pequeñas cosas, una calculadora rpn (reverse polish notation) de 8 bits, y un prototipo de juego de rocas (¿y computadoras?) en el desierto.
* aplicando a convocatorias relacionadas con compudanzas y con experiencias inmersivas en web.
* diseñando y agregando páginas a este sitio web.
* creando imágenes generativas a partir de video, con fines comerciales.
* participando en el “reto plancha”
* viendo nausicaä of the valley of the wind, disfrutándola mucho
## sjm-1656
de lo habitual, estuve:
* impartiendo clases de código creativo
* corriendo
* cocinando comida vegana
* experimentando con hydra para escenario en vivo y a la distancia
además, estuve:
* decidiendo mantener este sitio en neocities en vez de hospedarlo por mi cuenta
* materializando planes de ahorro
* recordando salir para sentir el viento en el exterior
* evaluando qué es lo que sí quiero hacer, partiendo de lo efímero / finito de la vida
* proyecteando una experiencia inmersiva web
* creando imágenes generativas a partir de video
* evaluando crear un sitio web de compudanzas, pero decidiendo dejar/crear los materiales en este sitio.
* participando en el “reto plancha”
## sjm-1655
de lo habitual, estuve:
* impartiendo clases de código creativo
* corriendo
* cocinando comida vegana
* embotellando y preparando kombucha
además, estuve:
* experimentando de nuevo con mumble para transmisión de voz con fines de streaming
* continuando la exploración con hydra para visuales + movimiento en vivo: sin atascar lo primero para dejar ver lo segundo
* ¡trayendo este sitio web a la vida!
* aplicando para impartir en conjunto un taller de escena en red
* participando en el “reto plancha”
* conversando emprendedurismo
* planeando ahorros
* cocinando pan en colaboración con robot eléctrico panero
## llega(n) aquí
=> ./acerca.gmi {acerca}
página actualizada en: sejmana-1660, día 2 (12021-05-21)
=> ./index.gmi {🥭}

View File

@ -1,30 +0,0 @@
#
# nick = sejo
# url = https://quesomango.neocities.org/tw.txt
#
2021-05-21T18:00:00-05:00 adding some content from "the archive": more compudanzas, textos, etc
2021-05-20T18:00:00-05:00 about to finish the "migration" of my site to my awk-based static site generator...
2021-05-17T21:30:00-05:00 cleaned up the main page, inviting for more exploration (?)
2021-05-17T21:00:00-05:00 made myself a small template for html-based slideshows, {quepresente}
2021-05-14T19:00:00-05:00 decided to create some illustrations/textures for the compudanzas page
2021-05-14T17:00:00-05:00 feeling a little bit #fried. taking it easy today
2021-05-12T20:00:00-05:00 after some conversation about the coloring computers, i created the page for them :)
2021-05-11T20:00:00-05:00 got inspired and created the danzasistemas-tag page!
2021-05-10T22:00:00-05:00 #watched seaspiracy
2021-05-10T16:00:00-05:00 created the darena page :)
2021-05-07T16:00:00-05:00 darena, a virtual bunch-of-rocks machine running in uxn, now seems to be ready to be operated
2021-05-04T18:00:00-05:00 the rocks of "darena" (new name?) are using too much of my bandwidth. good thing i finished my tasks already.
2021-05-02T21:00:00-05:00 set up a configuration to use my electronic computer(s) sitting in the floor: one for my teaching and other for my "day to day"
2021-05-01T22:00:00-05:00 #watched nausicaä of the valley of the wind for the first time. i loved it! i feel it's my favorite movie now - would have to rewatch :)
2021-05-01T18:00:00-05:00 i can confirm: writing html by hand is not bad at all
2021-04-30T14:00:00-05:00 a lot of fun to figure out how to program with uxn!
2021-04-28T17:00:00-05:00 looking for a "works with lynx browser" 88x31 button…
2021-04-27T19:00:00-05:00 adding my imagemagick notes to the site...
2021-04-27T18:00:00-05:00 it was fun to re-find the logos i've made!
2021-04-27T13:00:00-05:00 i was about to fall in the trap of creating a "thematic" website instead of letting those materials coexist with the others here
2021-04-23T20:00:00-05:00 yes, more time outside, feeling the cold wind
2021-04-22T13:00:00-05:00 given that my time on earth is finite, i'll keep this website in neocities and stop thinking about hosting it by myself
2021-04-19T10:00:00-05:00 setting up the neocities CLI tooling. remember to 'gem install rake' beforehand.
2021-04-18T10:00:00-05:00 #kombucha day! batch A, 8lt going in!
2021-04-17T22:00:00-05:00 styling the 'compudanzas' page...
2021-04-16T20:00:00-05:00 just realized i can "twtxt" by hand (!)

View File

@ -1,74 +0,0 @@
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' lang='es-MX,en'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta content='initial-scale=1.0, maximum-scale=1.0, user-scalable=yes' name='viewport'/>
<link rel='stylesheet' href='./static/estilo.css'>
<title>🥭 &mdash; acerca</title>
</head>
<body>
<header>
<p><a href='./index.html'>{🥭}</a></p>
<h1>acerca</h1>
</header>
<nav><ul><li><a href='#del sitio'>del sitio</a></li>
<li><a href='#de mí'>de mí</a></li>
</ul></nav>
<main><section><p>
¿qué pasa por aquí?
</p>
</section><section>
<h1 id='del sitio'>del sitio</h1>
<p>
este sitio existe simultáneamente en la web y en el protocolo gemini
</p>
<p><a href='https://quesomango.neocities.org' rel=external target=_blank>queso mango en la web</a></p>
<p><a href='gemini://caracolito.mooo.com/~sejo/' rel=external target=_blank>queso mango gemelo</a></p>
<p>
las páginas son construidas con ayuda de unos programas escritos en awk
</p>
<h2 id='meta'>meta</h2>
<p><a href='./indice.html'>{índice}</a></p>
<p><a href='./actualizaciones.html'>{actualizaciones}</a></p>
</section><section>
<h1 id='de mí'>de mí</h1>
<p>
me interesan las computadoras a escala y velocidad humana, y practico pedagogías alternativas de ciencias computacionales y tecnologías digitales.
</p>
<p>
me pregunto qué rol puede tener la computación en un mundo en colapso y/o post-colapso. ¿no sería mejor enfocarse en otra cosa?
</p>
<p>
en ocasiones hay <a href='./textos.html'>{textos}</a> que son canalizados a través de mí.
</p>
<p>
además, disfruto el <a href='./running.html'>{running}</a> como forma de conocerme y de conocer al mundo.
</p>
<p>
llevo una dieta vegana; aquí algunas <a href='./recetas.html'>{recetas}</a> que solemos preparar.
</p>
<p>
siempre recordando que el <a href='./tiempo.html'>{tiempo}</a> vuela...
</p>
<h2 id='contact(o)'>contact(o)</h2>
<p><a href='https://merveilles.town/@chirrolafupa' rel=external target=_blank>mastodon account</a></p>
<p><a href='./tw.txt'>[twtxt feed]</a></p>
<p>
e-mail: sejo en posteo.net
<br/>
irc: sejo en ~chat y espernet
</p>
</section>
</main>
<footer>
<p><a href='./index.html'>{🥭}</a></p>
<p>página actualizada en:
<time datetime='2021-05-21'>sejmana-1660, día 2</time>
(12021-05-21)
</p>
<a href='https://endefensadelsl.org/ppl_es.html' rel=external target=_blank>ppl: licencia de producción de pares</a></p>
</footer>
</body>
</html>

View File

@ -1,48 +0,0 @@
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' lang='es-MX,en'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta content='initial-scale=1.0, maximum-scale=1.0, user-scalable=yes' name='viewport'/>
<link rel='stylesheet' href='./static/estilo.css'>
<title>🥭 &mdash; updates en el sitio</title>
</head>
<body>
<header>
<p><a href='./index.html'>{🥭}</a></p>
<h1>updates en el sitio</h1>
</header>
<main><section><p>
reiniciando la cuenta por el nuevo generador del sitio...
</p>
<p><a href='./actualizaciones.xml'>[atom feed]</a></p>
<h2 id='sjm-1660d2'>sjm-1660d2</h2>
<p>
varias páginas nuevas:
</p>
<p><a href='./apuntes.html'>{apuntes}</a></p>
<p><a href='./ciclo_de_memoria.html'>{ciclo de memoria}</a></p>
<p><a href='./compuertas.html'>{compuertas}</a></p>
<p><a href='./danzas_compuertas.html'>{danzas compuertas}</a></p>
<p><a href='./non_e-computers.html'>{non e-computers}</a></p>
<p><a href='./terranova.html'>{terranova}</a></p>
<p><a href='./textos.html'>{textos}</a></p>
<p><a href='./the_rite_of_computing.html'>{the rite of computing}</a></p>
<h2 id='sjm-1660d1'>sjm-1660d1</h2>
<ul>
<li>mudanza al nuevo generador: texto fuente en algo parecido a gemtext; salida a html para web, y gemtext para gemini</li>
</ul>
<h2 id='llega(n) aquí'>llega(n) aquí</h2>
<p><a href='./acerca.html'>{acerca}</a></p>
</section>
</main>
<footer>
<p><a href='./index.html'>{🥭}</a></p>
<p>página actualizada en:
<time datetime='2021-05-21'>sejmana-1660, día 2</time>
(12021-05-21)
</p>
<a href='https://endefensadelsl.org/ppl_es.html' rel=external target=_blank>ppl: licencia de producción de pares</a></p>
</footer>
</body>
</html>

View File

@ -1,33 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns='http://www.w3.org/2005/Atom'>
<id>https://quesomango.neocities.org/actualizaciones.html</id>
<title>🥭 queso mango: updates en el sitio</title>
<author><name>queso mango</name></author>
<generator>a mano</generator>
<updated>2021-05-21T12:00:00Z</updated>
<link href='https://quesomango.neocities.org/actualizaciones.xml' rel='self'/>
<link href='https://quesomango.neocities.org/actualizaciones.html' rel='alternate'/>
<entry>
<id>https://quesomango.neocities.org/actualizaciones.html#sjm-660d2</id>
<title>sejmana-1660, día 2</title>
<updated>2021-05-21T12:00:00Z</updated>
<link href='https://quesomango.neocities.org/actualizaciones.html#sjm-660d2' rel='alternate'/>
<summary>
varias páginas nuevas: apuntes, ciclo de memoria, compuertas, danzas compuertas, non e-computers, terranova, textos, the rite of computing
</summary>
</entry>
<entry>
<id>https://quesomango.neocities.org/actualizaciones.html#sjm-660d1</id>
<title>sejmana-1660, día 1</title>
<updated>2021-05-20T12:00:00Z</updated>
<link href='https://quesomango.neocities.org/actualizaciones.html#sjm-660d1' rel='alternate'/>
<summary>
nueva configuración del sitio, a partir de generador a .gmi y .html
</summary>
</entry>
</feed>

View File

@ -1,38 +0,0 @@
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' lang='es-MX,en'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta content='initial-scale=1.0, maximum-scale=1.0, user-scalable=yes' name='viewport'/>
<link rel='stylesheet' href='./static/estilo.css'>
<title>🥭 &mdash; apuntes</title>
</head>
<body>
<header>
<p><a href='./index.html'>{🥭}</a></p>
<h1>apuntes</h1>
</header>
<main><section><p>
recordatorios de procesos
</p>
<h2 id='no computacionales'>no computacionales</h2>
<p><a href='./recetas.html'>{recetas}</a></p>
<h2 id='computacionales'>computacionales</h2>
<h3 id='cli'>cli</h3>
<p>
comandos de línea (de comandos)
</p>
<p><a href='./imagemagick.html'>{imagemagick}</a></p>
<p><a href='./ffmpeg.html'>{ffmpeg}</a></p>
</section>
</main>
<footer>
<p><a href='./index.html'>{🥭}</a></p>
<p>página actualizada en:
<time datetime='2021-05-21'>sejmana-1660, día 2</time>
(12021-05-21)
</p>
<a href='https://endefensadelsl.org/ppl_es.html' rel=external target=_blank>ppl: licencia de producción de pares</a></p>
</footer>
</body>
</html>

View File

@ -1,342 +0,0 @@
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' lang='es-MX,en'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta content='initial-scale=1.0, maximum-scale=1.0, user-scalable=yes' name='viewport'/>
<link rel='stylesheet' href='./static/estilo.css'>
<title>🥭 &mdash; avr-asm</title>
</head>
<body>
<header>
<p><a href='./index.html'>{🥭}</a></p>
<h1>avr-asm</h1>
</header>
<nav><ul><li><a href='#attiny85'>attiny85</a></li>
<li><a href='#programas'>programas</a></li>
</ul></nav>
<main><section><p>
explorando programación de microcontroladores avr a través de asm, en attiny85. <a href='./s-camino.html'>{s-camino}</a>
</p>
</section><section>
<h1 id='attiny85'>attiny85</h1>
<h2 id='diagrama de pines'>diagrama de pines</h2>
<pre>
┌──────┐
PB5 │1 8│ VCC
PB3 │2 7│ PB2
PB4 │3 6│ PB1
GND │4 5│ PB0
└──────┘
</pre>
<p>
además, cada pin es:
</p>
<ul>
<li>1: PB5 / PCINT5 / ~RESET / ADC0 / dW</li>
<li>2: PB3 / PCINT3 / XTAL1 / CLKI / ~OC1B / ADC3</li>
<li>3: PB4 / PCINT4 / XTAL2 / CLKO / OC1B / ADC2</li>
<li>5: PB0 / MOSI / DI / SDA / AIN0 / OC0A / ~OC1A / AREF / PCINT0</li>
<li>6: PB1 / MISO / DO / AIN1 / OC0B / OC1A / PCINT1</li>
<li>7: PB2 / SCK / USCK / SCL / ADC1 / T0 / INT0 / PCINT2</li>
</ul>
<p>
para flashear nos interesan los pines desde el punto de vista de SPI:
</p>
<pre>
┌──────┐
~RESET │1 8│ VCC
│2 7│ SCK
│3 6│ MISO
GND │4 5│ MOSI
└──────┘
</pre>
<h2 id='programador'>programador</h2>
<p><a href='https://www.fischl.de/usbasp/' rel=external target=_blank>USBasp - USB programmer for Atmel AVR controllers (web)</a></p>
<h2 id='makefile'>makefile</h2>
<p>
para ensamblar y flashear
</p>
<pre>
# Makefile
# nombre del programa sin .S :
PROG = test
# config hardware
BOARD = attiny85
PROGRAMMER = usbasp
# ensambla programa a .hex
hex:
avr-gcc -Os -DF_CPU=8000000 -mmcu=$(BOARD) -c $(PROG).S
avr-ld -o $(PROG).elf $(PROG).o
avr-objcopy $(PROG).elf -O ihex $(PROG).hex
rm $(PROG).o $(PROG).elf
# flashea
flash:
avrdude -c $(PROGRAMMER) -p $(BOARD) -U flash:w:$(PROG).hex:i
# lee la memoria flash a read.hex
read:
avrdude -c $(PROGRAMMER) -p $(BOARD) -U flash:r:read.hex:i
# prueba conexión con programador y micro
test:
avrdude -c $(PROGRAMMER) -p $(BOARD)
</pre>
</section><section>
<h1 id='programas'>programas</h1>
<p>
software experimental, compartido como referencia y sin garantía de ningún tipo :)
</p>
<h2 id='test.S'>test.S</h2>
<p>
enciende un el pin PB0 — conecta un led
</p>
<pre>
; test.S
; enciende un pin
#include &lt;avr/io.h&gt;
.org 0x0000
ldi r17, (1&lt;&lt;DDB0) ; configura al PB0 como salida
sts DDRB, r17
ldi r16, (1&lt;&lt;PB0) ; enciende el bit correspondiente al PB0
sts PORTB, r16 ; actualiza el puerto
sleep ; duerme por siempre (?)
</pre>
<h2 id='blink.S'>blink.S</h2>
<p>
parpadea el pin PB0 usando el timer/counter0 — conecta un led
</p>
<pre>
; blink.S
; parpadea el pin PB0 (OC0A)!
; r16 y r17 se usan como registros auxiliares
; el programa usa el timer/counter 0 con:
; * waveform generation mode (WGM0): 2, que es CTC (clear timer on compare match)
; * compare match output A mode (COM0A): 1, que es toggle en compare match
; * clock select (CS0): 5, que utiliza el reloj i/o dividido entre 1024
; notas sobre el reloj:
; por default el attiny85 va a 8MHz, y el reloj i/o va a 1MHz
; 1MHz/1024 ~= 967 Hz
#include &lt;avr/io.h&gt;
; ***********************
; vectores de interrupts:
; ***********************
; Reset
.org 0x0000
rjmp main
; ***********************
; Main
; ***********************
.org 0x0010
main:
; pin PB0 (OC0A) como pin de salida
ldi r16, (1&lt;&lt;DDB0) ; pin de salida
sts DDRB, r16
; togglea OC0A en Compare match (1 en COM0A[1:0])
; y usa modo Clear Timer on Compare Match (2 en WGM0[2:0])
ldi r16, (0&lt;&lt;COM0A1) | (1&lt;&lt;COM0A0) | (1&lt;&lt;WGM01) | (0&lt;&lt;WGM00)
sts TCCR0A, r16
; completa el modo WGM (waveform generaton mode, bit 2)
; establece el tipo de reloj: 0b101 en CS0 es clk/1024
ldi r16, (0&lt;&lt;WGM02) | (1&lt;&lt;CS02) | (0&lt;&lt;CS01) | (1&lt;&lt;CS00)
sts TCCR0B, r16
; el TOP es el valor en OCR0A
ldi r16, 0x80
sts OCR0A, r16
loop:
sleep
rjmp loop
</pre>
<h2 id='buzz.S'>buzz.S</h2>
<p>
zumba el pin PB0 — conecta un buzzer
</p>
<pre>
; buzz.S
; haz zumbar el pin PB0 (OC0A)!
; el código es igual a blink.S, pero con diferentes frecuencias
; r16 y r17 se usan como registros auxiliares
; el programa usa el timer/counter 0 con:
; * waveform generation mode (WGM0): 2, que es CTC (clear timer on compare match)
; * compare match output A mode (COM0A): 1, que es toggle en compare match
; * clock select (CS0): 4, que utiliza el reloj i/o dividido entre 256
; notas sobre el reloj:
; por default el attiny85 va a 8MHz, y el reloj i/o va a 1MHz
; 1MHz/256 ~= 3906 Hz (/2 para el periodo completo ~=1953Hz)
#include &lt;avr/io.h&gt;
; ***********************
; vectores de interrupts:
; ***********************
; Reset
.org 0x0000
rjmp main
; ***********************
; Main
; ***********************
.org 0x0010
main:
; pin PB0 (OC0A) como pin de salida
ldi r16, (1&lt;&lt;DDB0) ; pin de salida
sts DDRB, r16
; togglea OC0A en Compare match (1 en COM0A[1:0])
; y usa modo Clear Timer on Compare Match (2 en WGM0[2:0])
ldi r16, (0&lt;&lt;COM0A1) | (1&lt;&lt;COM0A0) | (1&lt;&lt;WGM01) | (0&lt;&lt;WGM00)
sts TCCR0A, r16
; completa el modo WGM (waveform generaton mode, bit 2)
; establece el tipo de reloj: 0b100 en CS0 es clk/256
ldi r16, (0&lt;&lt;WGM02) | (1&lt;&lt;CS02) | (0&lt;&lt;CS01) | (0&lt;&lt;CS00)
sts TCCR0B, r16
; el TOP es el valor en OCR0A
ldi r16, 0x02
sts OCR0A, r16
loop:
sleep
rjmp loop
</pre>
<h2 id='alarm.S'>alarm.S</h2>
<p>
zumbido intermitente en el pin PB0 — conecta un buzzer
</p>
<pre>
; alarm.S
; zumbido intermitente en el pin PB0 (OC0A)!
; r16 y r17 se usan como registros auxiliares
; r20 tiene el valor de TCCR0A para apagar sonido
; r21 tiene el valor de TCCR0A para encenderlo
; el programa usa el timer/counter 0 con:
; * waveform generation mode (WGM0): 2, que es CTC (clear timer on compare match)
; * compare match output A mode (COM0A): 1, que es toggle en compare match
; * clock select (CS0): 3, que utiliza el reloj i/o dividido entre 64
; y el timer/counter 1 con:
; * clock select (CS1): 0b1010, que es clk/512
; * interrupciones de overflow y de compare match A:
; - en compare match A el zumbido se apaga
; - en overflow el zumbido inicia
; notas sobre el reloj:
; por default el attiny85 va a 8MHz, y el reloj i/o va a 1MHz
; 1MHz/256 ~= 3906 Hz (/2 para el periodo completo ~=1953Hz)
#include &lt;avr/io.h&gt;
; ***********************
; vectores de interrupts:
; ***********************
; Reset
.org 0x0000
rjmp main
; dirección 0x0003 * 2
.org 0x0006
rjmp timer1compareA_isr
; dirección 0x0004 * 2
.org 0x0008
rjmp timer1overflow_isr
; ***********************
; Main
; ***********************
.org 0x001E
main:
;----------------------------------
; configuración general
;----------------------------------
; habilita interrupciones
sei
; pin PB0 (OC0A) como pin de salida
ldi r16, (1&lt;&lt;DDB0) ; pin de salida
sts DDRB, r16
; valores de TCCR0A para encender o apagar sonido
ldi r20, (0&lt;&lt;COM0A1) | (0&lt;&lt;COM0A0) | (1&lt;&lt;WGM01) | (0&lt;&lt;WGM00)
ldi r21, (0&lt;&lt;COM0A1) | (1&lt;&lt;COM0A0) | (1&lt;&lt;WGM01) | (0&lt;&lt;WGM00)
;----------------------------------
; configuración TIMER0 para buzzer
;----------------------------------
; togglea OC0A en Compare match (1 en COM0A[1:0])
; y usa modo Clear Timer on Compare Match (2 en WGM0[2:0])
sts TCCR0A, r21
; completa el modo WGM (waveform generaton mode, bit 2)
; establece el tipo de reloj: 0b011 en CS0 es clk/64
ldi r16, (0&lt;&lt;WGM02) | (0&lt;&lt;CS02) | (1&lt;&lt;CS01) | (1&lt;&lt;CS00)
sts TCCR0B, r16
; el TOP es el valor en OCR0A
; más pequeño es más agudo
ldi r16, 0x06
sts OCR0A, r16
;----------------------------------
; configuración TIMER1 para alternar entre sonido on/off
;----------------------------------
; CS1 en 0b1010 es CK/512
ldi r16, (1&lt;&lt;CS13) | (0&lt;&lt;CS12) | (1&lt;&lt;CS11) | (0&lt;&lt;CS10)
sts TCCR1, r16
; establece el valor A al que cuenta el timer1 antes de apagar sonido
; menor valor, menor tiempo de sonido (duty cycle)
ldi r16, 0x30
sts OCR1A, r16
; set Timer overflow interrupt enable 1
; y timer output compare A interrupt enable 1
ldi r16, (1&lt;&lt;TOIE1) | (1&lt;&lt;OCIE1A)
sts TIMSK, r16
loop:
sleep
rjmp loop
timer1compareA_isr:
; apaga la salida
sts TCCR0A, r20
reti
timer1overflow_isr:
; enciende la salida
sts TCCR0A, r21
; regresa de la interrupción
reti
</pre>
<h2 id='llega(n) aquí'>llega(n) aquí</h2>
<p><a href='./s-camino.html'>{s-camino}</a></p>
</section>
</main>
<footer>
<p><a href='./index.html'>{🥭}</a></p>
<p>página actualizada en:
<time datetime='2021-05-20'>sejmana-1660, día 1</time>
(12021-05-20)
</p>
<a href='https://endefensadelsl.org/ppl_es.html' rel=external target=_blank>ppl: licencia de producción de pares</a></p>
</footer>
</body>
</html>

View File

@ -1,101 +0,0 @@
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' lang='es-MX,en'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta content='initial-scale=1.0, maximum-scale=1.0, user-scalable=yes' name='viewport'/>
<link rel='stylesheet' href='./static/estilo.css'>
<title>🥭 &mdash; ciclo de memoria</title>
</head>
<body>
<header>
<p><a href='./index.html'>{🥭}</a></p>
<h1>ciclo de memoria</h1>
</header>
<nav><ul><li><a href='#guía'>guía</a></li>
<li><a href='#la lectura'>la lectura</a></li>
<li><a href='#la escritura'>la escritura</a></li>
</ul></nav>
<main><section><p>
imaginemos la construcción de una memoria que existe en función el tiempo, como las antiguas líneas de retardo de mercurio, pero en el campo; un juego; un grupo de personas en <a href='./compudanzas.html'>{compudanzas}</a>.
</p>
<p>
un "dispositivo"-danza que almacena información binaria, con capacidad de ser escrita y leída.
</p>
<gallery>
<img src='./img/ilustracion_ciclo-de-memoria.png' alt='pequeña ilustración del ciclo de memoria' loading='lazy'/>
</gallery>
</section><section>
<h1 id='guía'>guía</h1>
<p>
cada persona ve a alguien más, y es vista por otra distinta.
</p>
<p>
para iniciar, podemos acomodarnos en círculo. nuestra red es un ciclo.
</p>
<p>
cada persona ve a alguien más, poniendo atención en cuál de las tres señales / movimientos realiza:
</p>
<ul>
<li>corte</li>
<li>alto</li>
<li>bajo</li>
</ul>
<p>
hay música con pulso.
</p>
<p>
en cada beat, la persona replica la señal que vio adelante.
</p>
<p>
así, poco a poco, un dato palabra, número, o lo que sea, se recorre, circula, da vueltas.
</p>
</section><section>
<h1 id='la lectura'>la lectura</h1>
<p>
para leer el dato almacenado, una persona-lectora fuera del ciclo se sintoniza a la frecuencia de pulsos.
</p>
<p>
la persona-lectora se enfoca en observar a una sola persona dentro, que se convierte en la persona-salida.
</p>
<p>
al observar la señal de corte, la persona-lectora empieza a anotar, repetir, transmitir, las señales de alto o bajo que vengan después.
</p>
<p>
así continúa hasta observar de nuevo el corte: el dato habrá sido leído, y se mantiene en circulación.
</p>
</section><section>
<h1 id='la escritura'>la escritura</h1>
<p>
ya sea que se decida de antemano la persona-entrada al ciclo, o todas las personas estén atentas para poder serlo, para escribir en la memoria hace falta una persona afuera, la persona-escritora.
</p>
<p>
ella se sincroniza con los pulsos, y le avisa a la persona-entrada que viene a escribir.
</p>
<p>
la persona-entrada espera a recibir y replicar la señal de corte de la persona a la que estaba siguiendo.
</p>
<p>
justo cuando eso sucede, la persona-entrada empezará a ver y seguir a la persona-escritora.
</p>
<p>
la persona-escritora, paso a paso, pulso a pulso, da las señales de alto o bajo a escribir, hasta llegar al corte.
</p>
<p>
y así, paso a paso, pulso a pulso, poco a poco, el ciclo ahora tendrá un nuevo dato.
</p>
<h2 id='llega(n) aquí'>llega(n) aquí</h2>
<p><a href='./compudanzas.html'>{compudanzas}</a></p>
</section>
</main>
<footer>
<p><a href='./index.html'>{🥭}</a></p>
<p>página actualizada en:
<time datetime='2021-05-21'>sejmana-1660, día 2</time>
(12021-05-21)
</p>
<a href='https://endefensadelsl.org/ppl_es.html' rel=external target=_blank>ppl: licencia de producción de pares</a></p>
</footer>
</body>
</html>

View File

@ -1,90 +0,0 @@
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' lang='es-MX,en'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta content='initial-scale=1.0, maximum-scale=1.0, user-scalable=yes' name='viewport'/>
<link rel='stylesheet' href='./static/estilo.css'>
<title>🥭 &mdash; coloring computers</title>
</head>
<body>
<header>
<p><a href='./index.html'>{🥭}</a></p>
<h1>coloring computers</h1>
</header>
<nav><ul><li><a href='#4-bits to 7-segment display hexadecimal decoder (12020)'>4-bits to 7-segment display hexadecimal decoder (12020)</a></li>
<li><a href='#computadora no(r)pal (12019)'>computadora no(r)pal (12019)</a></li>
<li><a href='#coloring computers (12018)'>coloring computers (12018)</a></li>
</ul></nav>
<main><section><p>
non-electronic computers that work when you color them according to a simple set of rules.
</p>
<p>
an exploration of computation without electricity and semiconductors, an attempt to reinvent digital systems away from efficiency and productivity, and hopeful prototypes to expose the inner workings of computers.
</p>
<p><a href='./non_e-computers.html'>{non e-computers}</a></p>
</section><section>
<h1 id='4-bits to 7-segment display hexadecimal decoder (12020)'>4-bits to 7-segment display hexadecimal decoder (12020)</h1>
<gallery>
<img src='./img/foto_20201130_hex7segdecoder_01.png' alt='the coloring computer/decoder, waiting to be activated' loading='lazy'/>
<img src='./img/foto_20201130_hex7segdecoder_02.png' alt='a human coloring the wires according to the logic rules' loading='lazy'/>
<img src='./img/foto_20201130_hex7segdecoder_03.png' alt='the coloring computer/decoder, with an input of 0011, and an output that can be read as 3' loading='lazy'/>
</gallery>
<p>
a coloring decoder built with NOT (triangle), AND (semicircle), and OR (the other shape (?)) gates, based on a manual design.
</p>
<gallery>
<img src='./img/dibujo_20201207_hex7segdecoder_small.png' alt='the complete decoder' loading='lazy'/>
</gallery>
<p><a href='https://opguides.info/engineering/digitallogic/' rel=external target=_blank>colored and animated version by Vega</a></p>
<p><a href='https://ipfs.io/ipfs/QmZv53hr7QEzxrPaRNpiyU9VUNHw9UgyaTUqYD9x9iFpNA/dibujo_20201207_hex7segdecoder.png' rel=external target=_blank>download the decoder in full size 1487x3057 (png, ~446KB)</a></p>
</section><section>
<h1 id='computadora no(r)pal (12019)'>computadora no(r)pal (12019)</h1>
<gallery>
<img src='./img/dibujo_20190715-norpalera-fulladder_blanco_small.png' alt='logic circuit in the shape of nopal' loading='lazy'/>
</gallery>
<p>
a full-adder built with nor gates (see <a href='./logiteca.html'>{logiteca}</a>) in the shape of no(r)pales
</p>
<p><a href='https://ipfs.io/ipfs/QmPz2D3bZRYFi1HnfiNJB8o9TZZvH8atuYpFixMKccYCYP/dibujo_20190715-norpalera-fulladder_blanco.png' rel=external target=_blank>download computadora no(r)pal in full size 1200x1600 (png, ~429KB)</a></p>
</section><section>
<h1 id='coloring computers (12018)'>coloring computers (12018)</h1>
<p>
the original ones
</p>
<gallery>
<img src='./img/foto_coloring-computers_cover-lee.png' alt='photo of the cover of the zine, colored' loading='lazy'/>
<img src='./img/foto_coloring-computers_7seg-lee.png' alt='photo of a pair of colored pages of the zine, with a 7 segment display showing the digits 2 and 3' loading='lazy'/>
<img src='./img/foto_coloring-computers_pcd2019.png' alt='photo of a pair of colored pages of the zine, showing a digital circuit answering if two colors are the same' loading='lazy'/>
</gallery>
<p>
the booklet contains three series of computers: computers that compare, computers that count, and computers that play. they are all NOR-based logic circuits designed by using truth tables, karnaugh maps, and maxterm expansions.
</p>
<p><a href='https://ipfs.io/ipfs/QmYz7DPRWypGQcbAHr7Mi8EKB6ntSPsEnUsCXbAhBiHQZP/' rel=external target=_blank>original site and resources</a></p>
<p><a href='https://ipfs.io/ipfs/QmYz7DPRWypGQcbAHr7Mi8EKB6ntSPsEnUsCXbAhBiHQZP/coloringcomputers_pages.pdf' rel=external target=_blank>download the page-by-page zine (pdf, ~1.5MB)</a></p>
<p><a href='https://ipfs.io/ipfs/QmYz7DPRWypGQcbAHr7Mi8EKB6ntSPsEnUsCXbAhBiHQZP/coloringcomputers.pdf' rel=external target=_blank>download the ready-to-print-and-cut zine (pdf, ~1.4MB)</a></p>
<p>
CC-BY-SA 4.0
</p>
<p>
for the print and cut zine: print double-sided, cut in half, fold the pages and assemble
</p>
<p>
presented as a workshop in the
</p>
<p><a href='https://processing.nyc/2019/#workshops' rel=external target=_blank>processing community day nyc 2019</a></p>
<h2 id='llega(n) aquí'>llega(n) aquí</h2>
<p><a href='./non_e-computers.html'>{non e-computers}</a></p>
</section>
</main>
<footer>
<p><a href='./index.html'>{🥭}</a></p>
<p>página actualizada en:
<time datetime='2021-05-21'>sejmana-1660, día 2</time>
(12021-05-21)
</p>
<a href='https://endefensadelsl.org/ppl_es.html' rel=external target=_blank>ppl: licencia de producción de pares</a></p>
</footer>
</body>
</html>

View File

@ -1,193 +0,0 @@
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' lang='es-MX,en'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta content='initial-scale=1.0, maximum-scale=1.0, user-scalable=yes' name='viewport'/>
<link rel='stylesheet' href='./static/estilo.css'>
<title>🥭 &mdash; compudanzas</title>
</head>
<body>
<header>
<p><a href='./index.html'>{🥭}</a></p>
<h1>compudanzas</h1>
</header>
<nav><ul><li><a href='#las danzas'>las danzas</a></li>
<li><a href='#el taller'>el taller</a></li>
</ul></nav>
<main><section><p>
materializando ciencias computacionales en cuerpxs humanxs y coreografía
</p>
</section><section>
<h1 id='las danzas'>las danzas</h1>
<p>
sección en construcción
</p>
<h2 id='ciclo de memoria'>ciclo de memoria</h2>
<p>
un dispositivo-danza que almacena información binaria, con capacidad de ser escrita y leída.
</p>
<p>
nos volvemos un registro de corrimiento (shift register) síncrono para almacenar de manera activa una secuencia de símbolos.
</p>
<p><a href='./ciclo_de_memoria.html'>{ciclo de memoria}</a></p>
<h2 id='danzas compuertas'>danzas compuertas</h2>
<p>
en la que nos convertimos en red de compuertas lógicas para resolver en conjunto operaciones aritméticas o lógicas.
</p>
<p>
comportamiento asíncrono, que podemos sincronizar para procesos más complejos.
</p>
<p><a href='./danzas_compuertas.html'>{danzas compuertas}</a></p>
<h2 id='reglas de wolfram'>reglas de wolfram</h2>
<p>
danzas en las que nuestro nuevo estado individual depende de nuestro estado propio y del de dos personas más.
</p>
<h2 id='danzasistemas-tag'>danzasistemas-tag</h2>
<p>
“batallas” en las que respondemos procesando elementos de la secuencia anterior.
</p>
<p><a href='./danzasistemas-tag.html'>{danzasistemas-tag}</a></p>
<h2 id='d. turing'>d. turing</h2>
<p>
en donde bailamos con y a partir de una fila / tira / cinta de objetos / símbolos y una tabla específica de estados.
</p>
<h2 id='máquina universal bailable'>máquina universal bailable</h2>
<p>
en donde bailamos con y a partir de una fila / tira / cinta de objetos y una tabla específica de estados, en un acomodo tal que nos permite simularnos bailando con y a partir de una fila / tira / cinta de objetos y cualquier tabla específica de estados
</p>
<h2 id='pequeña persona computadora'>pequeña persona computadora</h2>
<p>
en donde nuestras acciones toman la forma de las operaciones de una computadora organizada casi como las que conocemos.
</p>
</section><section>
<h1 id='el taller'>el taller</h1>
<h2 id='abstract'>abstract</h2>
<p>
el taller de compudanzas materializa ciencias computacionales en cuerpxs humanxs y coreografía.
</p>
<p>
¿qué es una computadora? ¿cómo es tan poderosa y hace lo que hace, si “solo” consiste en minerales super ordenados a través de procesos complejos?
</p>
<p>
¿qué pasa si la alentamos? ¿y si incrementamos su tamaño? ¿y si le quitamos todo rastro de eficiencia para que la podamos bailar?
</p>
<p>
en este taller nos insertaremos entre el mundo abstracto de las ciencias computacionales y el mundo de su materialización industrial, para darle cuerpo humano, social, coreográfico, a algunos de sus conceptos fundamentales: máquinas de turing, compuertas lógicas, autómatas celulares, arquitectura von neumann, y más.
</p>
<p>
lo que queremos es construir y programar computadoras relativamente lentas, grandes e ineficientes, a partir de personas en movimiento siguiendo/jugando instrucciones. así, nos podremos reapropiar de las maneras computacionales de entender el mundo, para usarlas a nuestro gusto con el fin de proponer otras posibles computadoras, danzas, y/o vidas.
</p>
<h2 id='justificación'>justificación</h2>
<p>
la miniaturización y aceleración de los circuitos de semiconductores, además de tener un gran costo ambiental, social y económico, dificulta el conocer y entender qué pasa en su interior, y cómo es que logran hacer emerger todas las capacidades que entendemos inherentes al cómputo.
</p>
<p>
por otro lado, la configuración social actual genera e incrementa una brecha de conocimientos y posibilidades entre unos cuantos que tienen el poder de desarrollar las tecnologías digitales, y el resto de la población al que se le asigna únicamente un rol de consumidor y de fuente de datos a extraer.
</p>
<p>
por si fuera poco, lo abstracto y ofuscado de las ciencias computacionales y de la forma en que suelen ser compartidas, se oponen a sanar esta brecha de acceso.
</p>
<p>
es por esto que el taller busca experimentar con otros acercamientos y estrategias para abordar estos temas, tratando no de hablarlos y racionalizarlos sino de bailarlos, sentirlos y recontextualizarlos.
</p>
<p>
partimos de que todo el cuerpo de conocimientos sobre la computación fue desarrollado por personas con pasiones así como cualquier otra, por lo que las nociones de lo "frío" y "cuadrado" de lo "maquínico" y digital pueden ser entendidas desde una perspectiva que las acerca a lo orgánico, lo fluido, y a nosotras como personas vivas.
</p>
<p>
dadas las crisis climáticas, ecológicas y sociales actuales, consideramos que el taller es un importante ejercicio de imaginación donde nos preguntamos: ¿qué pasaría si las computadoras fueran bailes y no cajas de metal y semiconductor?
</p>
<h2 id='objetivos'>objetivos</h2>
<ul>
<li>introducir y difundir conceptos fundamentales de la computación a través de estrategias pedagógicas inspiradas en la danza.</li>
<li>visibilizar procesos e ideas que rigen las realidades digitales actuales pero que suelen ser accesibles solo para un grupo reducido de personas.</li>
<li>instigar la reapropriación de dichos conceptos con el objetivo de imaginar y realizar mundos donde sirven a intereses alternos, como los de la danza, la vida y la liberación.</li>
<li>promover el pensar y sentir con el cuerpo, con énfasis en lo computacional por ser algo considerado abstracto y cerebral a pesar de sus múltiples impactos materiales.</li>
</ul>
<h2 id='temario'>temario</h2>
<p>
los siguientes temas son puntos de partida para los bailes y actividades corporales propuestos, así como para los proyectos creativos de les participantes.
</p>
<p>
se abordarán los principios teóricos, pero sin ahondar en discusiones abstractas que se alejen mucho del cuerpo
</p>
<ul>
<li>ciencias computacionales, coreografía, ¿cyborgs?</li>
<li>el universo discreto: estados finitos y tiempos discontinuos</li>
<li>operaciones lógicas / digitales</li>
<li>memoria básica con registro de corrimiento</li>
<li>mundo binario: operaciones y compuertas lógicas</li>
<li>autómatas celulares y complejidad emergente</li>
<li>computación formal</li>
<li>sistemas de "tag"</li>
<li>máquinas de turing</li>
<li>máquina universal de turing</li>
<li>organización computacional</li>
<li>arquitectura de von neumann</li>
<li>código máquina y programación</li>
</ul>
<h2 id='agenda'>agenda</h2>
<p>
el taller consiste en 6 sesiones de 2 horas de duración cada una
</p>
<ul>
<li>danzas compuertas</li>
<li>autómatas celulares</li>
<li>computación formal</li>
<li>máquina universal de turing</li>
<li>organización computacional</li>
<li>integración</li>
</ul>
<h2 id='bibliografía y referencias'>bibliografía y referencias</h2>
<h3 id='historia de la computación'>historia de la computación</h3>
<ul>
<li>archeology of algorithmics artefacts - david link 2016</li>
<li>turing's cathedral - george dyson 2012</li>
</ul>
<p><a href='http://web.stanford.edu/class/history34q/readings/Kittler/There_is_No_Software.html' rel=external target=_blank>there is no software - friedrich kittler</a></p>
<h3 id='máquinas de turing, teoría, máquinas universales'>máquinas de turing, teoría, máquinas universales</h3>
<p><a href='https://www.cs.virginia.edu/~robins/Turing_Paper_1936.pdf' rel=external target=_blank>on computable numbers, with an application to the entscheidungsproblem - alan turing 1936</a></p>
<p><a href='https://www.codeproject.com/Articles/1179819/A-Simulator-of-a-Universal-Turing-Machine' rel=external target=_blank>a simulator of a universal turing machine - jorge luis orejel, 2017</a></p>
<p><a href='https://www.gwern.net/Turing-complete' rel=external target=_blank>surprisingly turing complete - gwern branwen 2012</a></p>
<ul>
<li>computation: finite and infinite machines - marvin minsky 1967</li>
<li>feynman lectures on computation - richard feynman 1996</li>
</ul>
<h3 id='computadoras no electrónicas'>computadoras no electrónicas</h3>
<p><a href='./non_e-computers.html'>{non e-computers}</a></p>
<p><a href='https://xkcd.com/505' rel=external target=_blank>- randall munroe, xkcd</a></p>
<p><a href='http://www.blikstein.com/paulo/projects/project_water.html' rel=external target=_blank>programmable water - paulo blikstein 2003</a></p>
<p><a href='https://wiki.xxiivv.com/site/papier.html' rel=external target=_blank>wdr papier computer</a></p>
<p><a href='https://wiki.xxiivv.com/site/paper_computing.html' rel=external target=_blank>paper computing</a></p>
<p><a href='https://yip.pe/analog.html' rel=external target=_blank>analogue computing.</a></p>
<h3 id='modelos simples de computadora'>modelos simples de computadora</h3>
<p><a href='https://teachcomputerscience.com/little-man-computer/' rel=external target=_blank>little man computer</a></p>
<p><a href='https://www.peterhigginson.co.uk/lmc/' rel=external target=_blank>little man computer - cpu simulator</a></p>
<p><a href='https://wiki.xxiivv.com/site/gyo.html' rel=external target=_blank>gyo register machine</a></p>
<p><a href='https://wiki.xxiivv.com/site/uxn.html' rel=external target=_blank>uxn virtual stack machine</a></p>
<h3 id='más sobre computación'>más sobre computación</h3>
<p><a href='https://suricrasia.online/iceberg/' rel=external target=_blank>the cursed computer iceberg meme</a></p>
<h3 id='filosofía'>filosofía</h3>
<ul>
<li>philosophy after nature - edited by rosi braidotti and rick dolphijn 2017</li>
<li>chapter 2: information and thinking - michel serres (todo emite, recibe, almacena y procesa información)</li>
<li>chapter 5: the resonance of disparates: spinoza, damasio, deleuze, and the ecology of form - rick dolphijn (cerebros y vida no antropocéntrica)</li>
</ul>
<h2 id='llegan aquí: '>llegan aquí: </h2>
<p><a href='./danzasistemas-tag.html'>{danzasistemas-tag}</a></p>
<p><a href='./danzas_compuertas.html'>{danzas compuertas}</a></p>
<p><a href='./logiteca.html'>{logiteca}</a></p>
<p><a href='./non_e-computers.html'>{non e-computers}</a></p>
</section>
</main>
<footer>
<p><a href='./index.html'>{🥭}</a></p>
<p>página actualizada en:
<time datetime='2021-05-21'>sejmana-1660, día 2</time>
(12021-05-21)
</p>
<a href='https://endefensadelsl.org/ppl_es.html' rel=external target=_blank>ppl: licencia de producción de pares</a></p>
</footer>
</body>
</html>

View File

@ -1,146 +0,0 @@
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' lang='es-MX,en'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta content='initial-scale=1.0, maximum-scale=1.0, user-scalable=yes' name='viewport'/>
<link rel='stylesheet' href='./static/estilo.css'>
<title>🥭 &mdash; compuertas lógicas</title>
</head>
<body>
<header>
<p><a href='./index.html'>{🥭}</a></p>
<h1>compuertas lógicas</h1>
</header>
<nav><ul><li><a href='#una entrada'>una entrada</a></li>
<li><a href='#dos entradas'>dos entradas</a></li>
<li><a href='#más entradas'>más entradas</a></li>
<li><a href='#demorgan'>demorgan</a></li>
</ul></nav>
<main><section><p>
las bases de los circuitos digitales.
</p>
<p>
estos incluyen, claro está, a las <a href='./danzas_compuertas.html'>{danzas compuertas}</a>
</p>
<p>
usamos la convención de utilizar dos valores posibles: 1 para denominar arriba, o verdadero, y 0 para denominar abajo, o falso.
</p>
</section><section>
<h1 id='una entrada'>una entrada</h1>
<h2 id='buffer'>buffer</h2>
<p>
la salida es igual a la entrada
</p>
<h2 id='NOT'>NOT</h2>
<p>
la salida es lo opuesto a la entrada.
</p>
<p>
también podríamos decir que la salida es lo que no es la entrada.
</p>
</section><section>
<h1 id='dos entradas'>dos entradas</h1>
<p>
con dos entradas binarias, hay cuatro posibles combinaciones.
</p>
<h2 id='AND'>AND</h2>
<p>
la salida es verdadera únicamente cuando todas sus entradas son verdaderas.
</p>
<p>
en cualquier otro caso, la salida es falsa.
</p>
<h2 id='OR'>OR</h2>
<p>
la salida es verdadera cuando aunque sea una de sus entradas sea verdadera.
</p>
<p>
únicamente cuando todas las entradas son falsas, su salida es falsa.
</p>
<h2 id='XOR'>XOR</h2>
<p>
la salida es verdadera cuando una y solo una de sus entradas sea verdadera.
</p>
<p>
en cualquier otro caso, la salida es falsa.
</p>
<p>
también la podemos describir así: la salida es verdadera cuando las entradas son diferentes, y es falsa cuando las entradas son iguales.
</p>
<h2 id='NOR '>NOR </h2>
<p>
la salida es verdadera cuando ninguna de sus entradas es verdadera.
</p>
<p>
que es lo mismo que decir que su salida es verdadera cuando todas sus entradas son falsas.
</p>
<p>
en cualquier otro caso, su salida es falsa.
</p>
<p>
NOR es una de las compuertas universales: con ella se puede construir a todas las demás.
</p>
<p>
esto se debe en parte a que NOR se convierte en NOT si sus dos entradas están conectadas como una sola.
</p>
<p>
por otro lado, NOR es equivalente a negar con NOT la salida de una compuerta OR.
</p>
<p>
por cómo funciona, también la podemos considerar como un AND que funciona con 0 en vez de con 1.
</p>
<h2 id='NAND'>NAND</h2>
<p>
la salida es verdadera cuando aunque sea una de sus entrada es falsa.
</p>
<p>
únicamente cuando todas sus entradas son verdaderas, su salida es falsa.
</p>
<p>
NAND es la otra compuerta universal. esto se debe en parte a que se convierte en NOT si sus dos entradas están conectadas como una sola.
</p>
<p>
por otro lado, NAND es equivalente a negar con NOT la salida de una compuerta AND.
</p>
<p>
por cómo funciona, también la podemos considerar como un OR que funciona con 0 en vez de con 1.
</p>
</section><section>
<h1 id='más entradas'>más entradas</h1>
<p>
todas las compuertas funcionan igual para más de dos entradas, excepto XOR.
</p>
<p>
importante: AND y OR poseen la propiedad distributiva.
</p>
<p>
por ejemplo, un AND de tres entradas (a, b, c) es equivalente a un AND de dos entradas (a, b), con su salida (x) conectada a la entrada de otro AND de dos entradas (x, c)
</p>
<p>
esto no sucede así ni en NOR ni en NAND. en su caso, hay que agregar un NOT entre las dos compuertas.
</p>
</section><section>
<h1 id='demorgan'>demorgan</h1>
<p>
una compuerta AND es equivalente a una compuerta NOR con sus entradas negadas.
</p>
<p>
una compuerta OR es equivalente a una compuerta NAND con sus entradas negadas.
</p>
<h2 id='llega(n) aquí'>llega(n) aquí</h2>
<p><a href='./danzas_compuertas.gmo'>{danzas compuertas}</a></p>
<p><a href='./logiteca.html'>{logiteca}</a></p>
</section>
</main>
<footer>
<p><a href='./index.html'>{🥭}</a></p>
<p>página actualizada en:
<time datetime='2021-05-21'>sejmana-1660, día 2</time>
(12021-05-21)
</p>
<a href='https://endefensadelsl.org/ppl_es.html' rel=external target=_blank>ppl: licencia de producción de pares</a></p>
</footer>
</body>
</html>

View File

@ -1,77 +0,0 @@
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' lang='es-MX,en'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta content='initial-scale=1.0, maximum-scale=1.0, user-scalable=yes' name='viewport'/>
<link rel='stylesheet' href='./static/estilo.css'>
<title>🥭 &mdash; danzas compuertas</title>
</head>
<body>
<header>
<p><a href='./index.html'>{🥭}</a></p>
<h1>danzas compuertas</h1>
</header>
<nav><ul><li><a href='#guía'>guía</a></li>
<li><a href='#posibilidades'>posibilidades</a></li>
</ul></nav>
<main><section><p>
antiguas historias hablaban de computar en conjunto, en comunidad. ¿<a href='./compudanzas.html'>{compudanzas}</a>?
</p>
<p>
tareas sencillas y divertidas (requeridas de atención y presencia) que combinadas dan paso a complejidad, a olas, a cambios.
</p>
</section><section>
<h1 id='guía'>guía</h1>
<p>
o se está de pie o se está en descanso.
</p>
<p>
a cada quien se le asigna un rol:
</p>
<ul>
<li>simplemente decidir en qué posición colocarse</li>
<li>colocarse siempre en oposición a tal persona</li>
<li>o ponerse de pie solo cuando ni tal persona ni cual persona están de pie.</li>
</ul>
<p>
(o alguna otra de las <a href='./compuertas.html'>{compuertas}</a> lógicas)
</p>
<p>
la complejidad surge de quién ve a quién, quién depende de quién.
</p>
<p>
cinco personas para multiplicar dos dígitos binarios... nada mal.
</p>
<p>
más circuitos posibles, en la <a href='./logiteca.html'>{logiteca}</a>
</p>
</section><section>
<h1 id='posibilidades'>posibilidades</h1>
<p>
qué tal un sumador completo, aprovechando la idea de <a href='./ciclo_de_memoria.html'>{ciclo de memoria}</a>
</p>
<p>
aquí un diagrama animado que muestra un par de ciclos de memoria como entrada a un full-adder.
</p>
<p>
el resultado del full-adder está conectado a otro ciclo de memoria. todos los componentes conformados por personas.
</p>
<p><a href='https://ipfs.io/ipfs/QmSKnbCUGj3FR5hRG5UAgfXxjyp7aTQoRCeJ9G4MENxNNG/20190718-sumadanza_600.gif' rel=external target=_blank>suma danza (gif, 187KB )</a></p>
<h2 id='llega(n) aquí'>llega(n) aquí</h2>
<p><a href='./compudanzas.html'>{compudanzas}</a></p>
<p><a href='./compuertas.html'>{compuertas}</a></p>
<p><a href='./logiteca.html'>{logiteca}</a></p>
</section>
</main>
<footer>
<p><a href='./index.html'>{🥭}</a></p>
<p>página actualizada en:
<time datetime='2021-05-21'>sejmana-1660, día 2</time>
(12021-05-21)
</p>
<a href='https://endefensadelsl.org/ppl_es.html' rel=external target=_blank>ppl: licencia de producción de pares</a></p>
</footer>
</body>
</html>

View File

@ -1,118 +0,0 @@
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' lang='es-MX,en'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta content='initial-scale=1.0, maximum-scale=1.0, user-scalable=yes' name='viewport'/>
<link rel='stylesheet' href='./static/estilo.css'>
<title>🥭 &mdash; danzasistemas-tag</title>
</head>
<body>
<header>
<p><a href='./index.html'>{🥭}</a></p>
<h1>danzasistemas-tag</h1>
</header>
<nav><ul><li><a href='#descripción'>descripción</a></li>
<li><a href='#indicaciones'>indicaciones</a></li>
<li><a href='#ejemplo'>ejemplo</a></li>
</ul></nav>
<main><section><p>
una compudanza basada en máquina abstracta (tag systems, o bien, máquina de post)
</p>
<p><a href='./compudanzas.html'>{compudanzas}</a></p>
</section><section>
<h1 id='descripción'>descripción</h1>
<p>
las danzasistemas-tag consisten en "batallas" de baile en las que alternamos recibiendo y respondiendo secuencias de movimiento.
</p>
<p>
las secuencias que respondemos son producto de procesar elementos de la secuencia que recibimos.
</p>
</section><section>
<h1 id='indicaciones'>indicaciones</h1>
<p>
necesitamos los siguientes elementos:
</p>
<ul>
<li>A: alfabeto finito de símbolos/movimientos identificables y replicables</li>
<li>P: las reglas de producción: qué símbolos/movimientos hay que agregar al final de la nueva secuencia, de acuerdo al primer símbolo/movimiento de la secuencia recibida.</li>
<li>m: número de eliminación: cuántos símbolos/movimientos hay que eliminar del inicio de la secuencia recibida.</li>
</ul>
<p>
al recibir una secuencia de movimiento, hemos de poner atención y realizar lo siguiente para construir nuestra respuesta:
</p>
<ul>
<li>notar el primer símbolo/movimiento, que nos indica qué regla de producción seguir al final de la secuencia.</li>
<li>descartar la cantidad de símbolos/movimientos del inicio de la secuencia de acuerdo al número de eliminación. (esto incluye al primer símbolo/movimiento).</li>
<li>memorizar y replicar la secuencia recibida a partir de ese punto, en orden y hasta el final.</li>
<li>agregar el o los símbolos/movimientos al final de la secuencia, de acuerdo a la regla de producción.</li>
</ul>
<p>
según la danzasistema-tag, la dinámica de respuestas continúa hasta llegar al símbolo/movimiento que indique detenerse, o hasta que la secuencia de movimiento quede vacía.
</p>
</section><section>
<h1 id='ejemplo'>ejemplo</h1>
<p>
cómputo de secuencias de collatz, tomado de wikipedia
</p>
<p><a href='https://en.wikipedia.org/wiki/Tag_system#Example:_Computation_of_Collatz_sequences' rel=external target=_blank>Tag system - Example: Computation of Collatz sequences (web)</a></p>
<p>
los elementos de nuestra danzasistema-tag serían los siguientes:
</p>
<h2 id='A: alfabeto finito de símbolos/movimientos'>A: alfabeto finito de símbolos/movimientos</h2>
<p>
tres símbolos/movimientos: a, b, c
</p>
<h2 id='P: reglas de producción'>P: reglas de producción</h2>
<p>
si primer símbolo/movimiento es 'a', agrega 'bc' al final.
</p>
<p>
si primer símbolo/movimiento es 'b', agrega 'a' al final.
</p>
<p>
si primer símbolo/movimiento es 'c', agrega 'aaa' al final.
</p>
<p>
nota cómo cada regla de producción agrega una cantidad distinta de símbolos/movimientos al final.
</p>
<h2 id='m: número de eliminación'>m: número de eliminación</h2>
<p>
en este caso, siempre descartaremos 2 símbolos/movimientos del inicio de la secuencia.
</p>
<h2 id='desarrollo '>desarrollo </h2>
<p>
partiendo de una secuencia inicial 'aaa'...
</p>
<pre>
inicio: aaa
respuesta: abc
respuesta: cbc
respuesta: caaa
respuesta: aaaaa
respuesta: aaabc
respuesta: abcbc
respuesta: cbcbc
etc...
</pre>
<p>
siempre se descartan los 2 símbolos/movimientos del inicio, pero la cantidad de símbolos/movimientos que se agregan al final cambian de acuerdo a la regla de producción.
</p>
<p>
esta dinámica de respuestas a partir de esa secuencia inicial, eventualmente termina descartando a la secuencia completa.
</p>
<h2 id='llega(n) aquí'>llega(n) aquí</h2>
<p><a href='./compudanzas.html'>{compudanzas}</a></p>
</section>
</main>
<footer>
<p><a href='./index.html'>{🥭}</a></p>
<p>página actualizada en:
<time datetime='2021-05-20'>sejmana-1660, día 1</time>
(12021-05-20)
</p>
<a href='https://endefensadelsl.org/ppl_es.html' rel=external target=_blank>ppl: licencia de producción de pares</a></p>
</footer>
</body>
</html>

View File

@ -1,643 +0,0 @@
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' lang='es-MX,en'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta content='initial-scale=1.0, maximum-scale=1.0, user-scalable=yes' name='viewport'/>
<link rel='stylesheet' href='./static/estilo.css'>
<title>🥭 &mdash; darena</title>
</head>
<body>
<header>
<p><a href='./index.html'>{🥭}</a></p>
<h1>darena</h1>
</header>
<nav><ul><li><a href='#about'>about</a></li>
<li><a href='#features'>features</a></li>
<li><a href='#controls'>controls</a></li>
<li><a href='#possible "improvements"'>possible "improvements"</a></li>
<li><a href='#the code'>the code</a></li>
</ul></nav>
<main><section><p>
an open-ended game of rocks and sand
</p>
<p>
the sandy space contains a bunch of rocks in either one of two possible colors, and yourself.
</p>
<p>
push and arrange the rocks to prototype and build your own computer, cellular automata, 1-bit art, etc.
</p>
<gallery>
<img src='./img/screenshot_darena.png' alt='screenshot of the game. it shows a square clear space inside a textured world. inside the square there are several round rocks of two possible colors. there is a small platform, and a person.' loading='lazy'/>
</gallery>
<p>
what will you do with the sand?
</p>
</section><section>
<h1 id='about'>about</h1>
<p>
darena was developed as an exercise to learn about the
</p>
<p><a href='https://wiki.xxiivv.com/site/uxn.html' rel=external target=_blank>uxn virtual machine and assembly language</a></p>
<p>
as part of the <a href='./s-camino.html'>{s-camino}</a> practice.
</p>
</section><section>
<h1 id='features'>features</h1>
<ul>
<li>a character that moves in all four cardinal directions</li>
<li>rocks that can be pushed around, unless they are colliding with other rocks or the borders of the "arena"</li>
<li>a toggling station where rocks can be switched to the other color</li>
<li>realistic animation: the character slows down when pushing rocks, recovering their original speed when walking</li>
</ul>
</section><section>
<h1 id='controls'>controls</h1>
<p>
use the arrow keys for cartesian movement within the space
</p>
</section><section>
<h1 id='possible "improvements"'>possible "improvements"</h1>
<ul>
<li>add an "official" pulling option (you can pull rocks right now, but in a hacky way)</li>
<li>save rocks state (position and color) to file</li>
<li>optimize the use of memory for rock colors, using one bit per rock instead of one byte</li>
</ul>
</section><section>
<h1 id='the code'>the code</h1>
<p>
this iteration has 31 rocks and a single toggling station where one can switch their color/state.
</p>
<p>
last updated: sjm-1659d3 (changed JNZ to JCN)
</p>
<p>
you can also find the code in the
</p>
<p><a href='https://git.sr.ht/~rabbits/uxn/log/master/item/projects/demos/darena.usm' rel=external target=_blank>uxn repo</a></p>
<pre>
( darena.usm )
( an open-ended game of rocks and sand )
( cc0 sejo 12021 )
%DEBUG { .Console/byte DEO #0a .Console/char DEO }
%DEBUG2 { .Console/short DEO2 #0a .Console/char DEO }
( parameters )
%nrocks { #1f }
%nrocks-1 { #1e }
%nrocks_mask { #1f }
%minposx { #0f }
%minposy { #0f }
%maxposx { #f1 }
%maxposy { #f1 }
%anispeedmask_normal { #03 }
%anispeedmask_slow { #07 }
%c_color_normal { #33 }
%c_color_flipx { #73 }
%index_norock { #ff }
( output macros )
%out_screen_x { LDA #00 SWP .Screen/x DEO2 } ( ;addr )
%out_screen_y { LDA #00 SWP .Screen/y DEO2 } ( ;addr )
( helper macros )
%get_bit_n { SFT #01 AND }
%get_nibble_h { #04 SFT #0f AND }
%get_nibble_l { #0f AND }
%is_bit_n_set { get_bit_n #01 EQU }
%set_animate { #01 ;c_state LDA ORA ;c_state STA }
%rst_animate { #00 ;c_state STA }
( devices )
|00 @System [ &vector $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 ]
|10 @Console [ &pad $8 &char $1 &byte $1 &short $2 &string $2 ]
|20 @Screen [ &vector $2 &width $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &color $1 ]
|80 @Controller [ &vector $2 &button $1 &key $1 ]
( variables )
|0000
@c_pos [ &x $1 &y $1 ] ( character position )
@c_speed [ &x $1 &y $1 ] ( character speed )
@c_color [ $1 ] ( character color )
@c_sprite [ $2 ] ( character sprite addr )
@c_state [ $1 ] ( high_nibble: animation pointer, bit0: is_animated )
@f_count [ $1 ] ( frame counter )
@ani_speedmask [ $1 ] ( animation speed mask )
@r_speed_x [ $f ]
@r_speed_y [ $f ]
@tog [ &x $1 &y $1 &state $1 ] ( toggle station state )
( program )
|0100 @reset ( -&gt; )
#f396 .System/r DEO2
#e263 .System/g DEO2
#9030 .System/b DEO2
;on_frame .Screen/vector DEO2
( init character )
#50 ;c_pos/x STA
#10 ;c_pos/y STA
#00 ;c_speed/x STA
#00 ;c_speed/y STA
c_color_normal ;c_color STA
;s_monitx_stepfront0 ;c_sprite STA2
rst_animate
anispeedmask_normal ;ani_speedmask STA
( init toggler )
#27 ;tog/x STA
#27 ;tog/y STA
#00 ;tog/state STA
( init background )
;init_bg JSR2
BRK
@on_frame ( -&gt; )
;f_count LDA #01 ADD DUP ;f_count STA ( increase frame counter )
;ani_speedmask LDA ( mask with animation speed mask )
AND #00 EQU ,update_frame JCN ( jump to update if it's time )
BRK
@update_frame
( check keyboard )
;check_keys JSR2
( animate character sprite )
;animate_c JSR2
( clear sprites )
;clear JSR2
( update character vars )
;update_c/run JSR2
( update rocks + stand )
;update_r/run JSR2
( draw )
;draw JSR2
BRK
@clear
( clear rocks )
;s_clear .Screen/addr DEO2
nrocks #00
&rocks_loop
DUP ( get rocks_x[i] )
;rocks_x ROT #00 SWP ADD2 out_screen_x
DUP ( get rocks_y[i] )
;rocks_y ROT #00 SWP ADD2 out_screen_y
#30 .Screen/color DEO
#01 ADD
DUP2
NEQ ,&rocks_loop JCN
POP2
( clear character )
;clear_c JSR2
JMP2r
@draw
( draw toggler )
;tog/x out_screen_x
;tog/x out_screen_y
;s_stand .Screen/addr DEO2
#23 .Screen/color DEO
( draw rocks )
;s_bola .Screen/addr DEO2
nrocks #00
&rocks_loop
DUP ( get rocks_x[i] )
;rocks_x ROT #00 SWP ADD2 out_screen_x
DUP ( get rocks_y[i] )
;rocks_y ROT #00 SWP ADD2 out_screen_y
( DUP ( get color bitwise ) )
( ;r_color LDA SWP get_bit_n #31 ADD .Screen/color DEO )
DUP
;r_color ROT #00 SWP ADD2 LDA #31 ADD .Screen/color DEO
#01 ADD
DUP2
NEQ ,&rocks_loop JCN
POP2
( draw character )
;draw_c JSR2
JMP2r
@check_keys
#00 ;c_speed/x STA
#00 ;c_speed/y STA
.Controller/button DEI #07 is_bit_n_set ,&der JCN
.Controller/button DEI #06 is_bit_n_set ,&izq JCN
.Controller/button DEI #05 is_bit_n_set ,&aba JCN
.Controller/button DEI #04 is_bit_n_set ,&arr JCN
rst_animate
JMP2r
&der
#01 ;c_speed/x STA
set_animate
c_color_normal ;c_color STA
;s_monitx_stepside0 ;c_sprite STA2
JMP2r
&izq
#ff ;c_speed/x STA
set_animate
c_color_flipx ;c_color STA
;s_monitx_stepside0 ;c_sprite STA2
JMP2r
&aba
#01 ;c_speed/y STA
set_animate
c_color_normal ;c_color STA
;s_monitx_stepfront0 ;c_sprite STA2
JMP2r
&arr
#ff ;c_speed/y STA
set_animate
c_color_normal ;c_color STA
;s_monitx_stepback0 ;c_sprite STA2
JMP2r
&end
JMP2r
( sub-routines )
( in: sourcex, source y, index, rangex, rangey )
( puts in the stack the index of rock collisioned with )
@collision_rocks
&range_y $1
&range_x $1
&src_i $1
&src_x $1
&src_y $1
&rock_x $1
&rock_y $1
&run
,&range_y STR
,&range_x STR
,&src_i STR
,&src_y STR
,&src_x STR
( check collision with rocks )
( nrocks #00 )
,&src_i LDR nrocks_mask AND DUP #01 ADD nrocks_mask AND
&rocks_loop
DUP ( get rocks_x[i] )
;rocks_x ROT #00 SWP ADD2 LDA ,&rock_x STR
DUP ( get rocks_y[i] )
;rocks_y ROT #00 SWP ADD2 LDA ,&rock_y STR
,&src_x LDR ,&rock_x LDR ,&range_x LDR SUB GTH ( if sx &gt; rx - 8 )
,&src_x LDR ,&rock_x LDR ,&range_x LDR ADD LTH ( if sx &lt; rx + 8 )
,&src_y LDR ,&rock_y LDR ,&range_y LDR SUB GTH ( if sy &gt; ry - 8 )
,&src_y LDR ,&rock_y LDR ,&range_y LDR ADD LTH ( if sy &lt; ry + 8 )
ADD ADD ADD #04 EQU ,&found JCN
#01 ADD nrocks_mask AND
DUP2
NEQ ,&rocks_loop JCN
POP2
#ff
JMP2r
&found
SWP POP ( remove loop limit )
DUP ;&src_i LDA NEQ ,&end JCN ( check if result is the same as index )
POP #ff
JMP2r
&end
JMP2r
@update_c ( update character position )
&new_x $1
&new_y $1
&rock_i $1
&rock_x $1
&rock_y $1
&run
;c_speed/x LDA ;c_pos/x LDA ADD
,&new_x STR
;c_speed/y LDA ;c_pos/y LDA ADD
,&new_y STR
anispeedmask_normal ;ani_speedmask STA
&check_x
( check collision with borders )
,&new_x LDR minposx EQU ;&noup_x JCN2
,&new_x LDR maxposx EQU ;&noup_x JCN2
( check collision with rocks )
,&new_x LDR ,&new_y LDR index_norock #09 #06
;collision_rocks/run JSR2
( if it is colliding with rock, check further )
DUP #ff NEQ ,&check_x_collision JCN
POP
,&update_x JMP
&check_x_collision
( DUP DEBUG )
( slow down and save rock index )
anispeedmask_slow ;ani_speedmask STA
,&rock_i STR
( check if rock collides with others )
;rocks_x #00 ,&rock_i LDR ADD2 LDA ,&rock_x STR
;rocks_y #00 ,&rock_i LDR ADD2 LDA ,&rock_y STR
,&rock_x LDR ,&rock_y LDR ,&rock_i LDR #09 #06
;collision_rocks/run JSR2
( DUP DEBUG )
( if it is colliding, then skip adding x )
DUP #ff NEQ ,&check_y JCN
POP
( if not, check for borders )
;&rock_x LDA minposx EQU ;&noup_x JCN2
;&rock_x LDA maxposx EQU ;&noup_x JCN2
( move rock with same speed as c )
;&rock_x LDA ;c_speed/x LDA ADD
;rocks_x #00 ;&rock_i LDA ADD2
STA
&update_x
;&new_x LDA ;c_pos/x STA
,&check_y JMP
&noup_x
&check_y
( check collision with borders )
;&new_y LDA minposy EQU ;&noup_y JCN2
;&new_y LDA maxposy EQU ;&noup_y JCN2
( check collision with rocks )
;&new_x LDA ;&new_y LDA index_norock #06 #09
;collision_rocks/run JSR2
( if it is colliding with rock, check further )
DUP #ff NEQ ,&check_y_collision JCN
POP
,&update_y JMP
&check_y_collision
( DUP DEBUG )
anispeedmask_slow ;ani_speedmask STA
;&rock_i STA
( check if rock collides with others )
;rocks_x #00 ;&rock_i LDA ADD2 LDA ;&rock_x STA
;rocks_y #00 ;&rock_i LDA ADD2 LDA ;&rock_y STA
;&rock_x LDA ;&rock_y LDA ;&rock_i LDA #06 #09
;collision_rocks/run JSR2
( DUP DEBUG )
( if it is colliding, then skip adding y )
DUP #ff NEQ ,&noup_y JCN
POP
( if not, check for borders )
;&rock_y LDA minposx EQU ;&noup_y JCN2
;&rock_y LDA maxposx EQU ;&noup_y JCN2
( if not colliding, then move rock with same speed as c )
;&rock_y LDA ;c_speed/y LDA ADD
;rocks_y #00 ;&rock_i LDA ADD2
STA
&update_y
;&new_y LDA ;c_pos/y STA
JMP2r
&noup_y
JMP2r
@update_r
&rock_i $1
&run
( check collision with rocks )
;tog/x LDA ;tog/y LDA index_norock #02 #02
;collision_rocks/run JSR2
( if it is colliding with rock, check if it needs to change state )
DUP #ff NEQ ,&change_state JCN
( DUP DEBUG )
( if there's no collision, reset toggler )
POP
#00 ;tog/state STA
JMP2r
&change_state
( DUP DEBUG )
,&rock_i STR
;tog/state LDA ,&done JCN ( don't toggle if state is active )
;r_color #00 ,&rock_i LDR ADD2 DUP2 STH2
LDA #01 EOR STH2r STA
#01 ;tog/state STA
&done
JMP2r
@animate_c
( is bit0 -animate- on? )
;c_state LDA DUP #00 get_bit_n #01 NEQ ,&s_no_animate JCN
( increment and save animation pointer )
&s_animate
DUP
get_nibble_h #01 ADD #03 AND #40 SFT
SWP get_nibble_l ORA
;c_state STA
JMP2r
&s_no_animate
get_nibble_h #0f AND ;c_state STA
JMP2r
@draw_c ( draw character )
#00 ;c_state LDA get_nibble_h #08 MUL
;c_sprite LDA2 ADD2 .Screen/addr DEO2
;c_pos/x out_screen_x
;c_pos/y out_screen_y
;c_color LDA .Screen/color DEO
JMP2r
@clear_c ( clear character )
;s_clear .Screen/addr DEO2
;c_pos/x out_screen_x
;c_pos/y out_screen_y
#30 .Screen/color DEO
JMP2r
@init_bg
( init bg )
;s_border .Screen/addr DEO2
.Screen/height DEI2 #0000 STH2
&vertical0loop
DUP2
STH2r
DUP2 .Screen/y DEO2
.Screen/width DEI2 #0000 STH2
&horizontal0loop
DUP2
STH2r
DUP2 .Screen/x DEO2
#23 .Screen/color DEO
#0008 ADD2 DUP2 STH2
GTH2 ,&horizontal0loop JCN
STH2r POP2 POP2
#0008 ADD2 DUP2 STH2
GTH2 ,&vertical0loop JCN
STH2r
POP2 POP2
( arena )
;s_clear .Screen/addr DEO2
#00 maxposy #00 minposy STH2
&vertical0loop_clear
DUP2
STH2r
DUP2 .Screen/y DEO2
#00 maxposx #00 minposx STH2
&horizontal0loop_clear
DUP2
STH2r
DUP2 .Screen/x DEO2
#20 .Screen/color DEO
#0008 ADD2 DUP2 STH2
GTH2 ,&horizontal0loop_clear JCN
STH2r POP2 POP2
#0008 ADD2 DUP2 STH2 GTH2 ,&vertical0loop_clear JCN
STH2r
POP2 POP2
JMP2r
( rocks )
@rocks_x [ 25 30 42 50 67 90 98 e8 20 43 43 57 5a 7f bc a5
e5 dd a2 20 b7 9b 38 e8 33 43 63 b7 aa cf bc ]
@rocks_y [ 60 48 34 56 23 65 65 65 ba e9 24 22 72 91 22 c5
25 30 42 50 67 90 98 e8 20 43 43 57 5a 7f bc ]
@r_color [ 00 01 01 00 00 00 01 01 01 01 00 00 01 01 00 00
01 00 01 00 00 01 00 01 01 01 01 01 00 00 00 ]
( sprites )
@s_clear [ 0000 0000 0000 0000 ]
@s_border [ 3288 7e83 780d e013 ]
@s_bola [ 3c4e 9ffd f962 3c00 ]
@s_stand [ 0000 0000 0024 7eff ]
@s_stand_original [ 0000 0000 0000 3c7e ]
@s_monitx [ 3c7e 5a7f 1b3c 5a18 ]
@s_monitx_back [ 3c7e 7efe d83c 5a18 ]
@s_monitx_stepfront0 [ 3c7e 5a7f 1b3c 5a18 ]
@s_monitx_stepfront1 [ 3c7e 5a7f 1b3c 5a10 ]
@s_monitx_stepfront2 [ 3c7e 5a7f 1b3c 5a18 ]
@s_monitx_stepfront3 [ 3c7e 5a7f 1b3c 5a08 ]
@s_monitx_stepback0 [ 3c7e 7efe d83c 5a18 ]
@s_monitx_stepback1 [ 3c7e 7efe d83c 5a10 ]
@s_monitx_stepback2 [ 3c7e 7efe d83c 5a18 ]
@s_monitx_stepback3 [ 3c7e 7efe d83c 5a08 ]
@s_monitx_stepside0 [ 1c3c 7afc d81c 1818 ]
@s_monitx_stepside1 [ 1c3c 7afc d81c 1828 ]
@s_monitx_stepside2 [ 1c3c 7afc d81c 3810 ]
@s_monitx_stepside3 [ 1c3c 7afc d81c 1814 ]
</pre>
<h2 id='llega(n) aquí'>llega(n) aquí</h2>
<p><a href='./s-camino.html'>{s-camino}</a></p>
</section>
</main>
<footer>
<p><a href='./index.html'>{🥭}</a></p>
<p>página actualizada en:
<time datetime='2021-05-20'>sejmana-1660, día 1</time>
(12021-05-20)
</p>
<a href='https://endefensadelsl.org/ppl_es.html' rel=external target=_blank>ppl: licencia de producción de pares</a></p>
</footer>
</body>
</html>

View File

@ -1,146 +0,0 @@
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' lang='es-MX,en'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta content='initial-scale=1.0, maximum-scale=1.0, user-scalable=yes' name='viewport'/>
<link rel='stylesheet' href='./static/estilo.css'>
<title>🥭 &mdash; apuntes de ffmpeg</title>
</head>
<body>
<header>
<p><a href='./index.html'>{🥭}</a></p>
<h1>apuntes de ffmpeg</h1>
</header>
<nav><ul><li><a href='#"trim" / cortar'>"trim" / cortar</a></li>
<li><a href='#escalar'>escalar</a></li>
<li><a href='#cambio de framerate'>cambio de framerate</a></li>
<li><a href='#cambio de "velocidad"'>cambio de "velocidad"</a></li>
<li><a href='#concatenar'>concatenar</a></li>
<li><a href='#generar video desde serie de img'>generar video desde serie de img</a></li>
<li><a href='#crop (y exportar desde recordmydesktop)'>crop (y exportar desde recordmydesktop)</a></li>
<li><a href='#video a partir de una imagen'>video a partir de una imagen</a></li>
<li><a href='#video a partir de serie de imágenes'>video a partir de serie de imágenes</a></li>
<li><a href='#overlay de imagen sobre video'>overlay de imagen sobre video</a></li>
</ul></nav>
<main><section><p>
notas de usos comunes que le doy a ffmpeg
</p>
</section><section>
<h1 id='"trim" / cortar'>"trim" / cortar</h1>
<pre>
ffmpeg -i input.video -ss 5 -t 20 output.video
</pre>
<p>
donde:
<br/>
-ss es el tiempo inicial
<br/>
-t es la duracion total del nuevo video
</p>
</section><section>
<h1 id='escalar'>escalar</h1>
<pre>
ffmpeg -i input.video -vf scale=640:480 output.video
</pre>
<p>
y para reducir el tamaño del archivo, suele ser útil recomprimir con crf (constant rate factor)
</p>
<pre>
ffmpeg -i input.video -crf 24 output.video
</pre>
<p>
en teoría 24 es una compresión difícil de percibir. números mayores comprimen más.
</p>
</section><section>
<h1 id='cambio de framerate'>cambio de framerate</h1>
<pre>
ffmpeg -i input.video -r 30 output.video
</pre>
<p>
o
</p>
<pre>
ffmpeg -i input.video -filter:v fps=fps=30 output.video
</pre>
</section><section>
<h1 id='cambio de "velocidad"'>cambio de "velocidad"</h1>
<p>
obtiene un video a 2x de velocidad:
</p>
<pre>
ffmpeg -i input.video -filter:v "setpts=0.5*PTS" output.video
</pre>
<p>
para hacer 60x (por ejemplo, convertir minutos a segundos):
</p>
<pre>
ffmpeg -i input.video -filter:v "setpts=0.016*PTS" output.video
</pre>
</section><section>
<h1 id='concatenar'>concatenar</h1>
<p>
hacer lista de videos con el formato:
</p>
<pre>
file 'archivo1'
file 'archivo2'
file 'archivo3'
</pre>
<p>
y luego:
</p>
<pre>
ffmpeg -f concat -i lista.txt -c copy output.video
</pre>
</section><section>
<h1 id='generar video desde serie de img'>generar video desde serie de img</h1>
<pre>
ffmpeg -framerate 30 -i frame-%04d.tif -pix_fmt yuv420p -c:v libx264 &lt;output.mp4&gt;
</pre>
</section><section>
<h1 id='crop (y exportar desde recordmydesktop)'>crop (y exportar desde recordmydesktop)</h1>
<pre>
ffmpeg -i out.ogv -filter:v "crop=1280:720:0:0" -codec:v libx264 -codec:a libmp3lame output.mp4
</pre>
</section><section>
<h1 id='video a partir de una imagen'>video a partir de una imagen</h1>
<pre>
# video de una imagen,
# 10 segundos, 30 frames por segundo
ffmpeg -loop 1 \
-i imagen_verde.png \
-t 00:00:10 -r 30 \
video_verde.ogv
</pre>
</section><section>
<h1 id='video a partir de serie de imágenes'>video a partir de serie de imágenes</h1>
<pre>
# cambia entre imágenes a 2fps,
# video final a 30fps
ffmpeg -framerate 2 \
-i "%02d.png" \
-pix_fmt yuv420p \
-c:v libx264 \
-r 30 salida.mp4
</pre>
</section><section>
<h1 id='overlay de imagen sobre video'>overlay de imagen sobre video</h1>
<pre>
ffmpeg -i input.mp4 -i imagen.png -filter_complex "overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2" output.mp4
</pre>
<h2 id='llega(n) aquí'>llega(n) aquí</h2>
<p><a href='./apuntes.html'>{apuntes}</a></p>
</section>
</main>
<footer>
<p><a href='./index.html'>{🥭}</a></p>
<p>página actualizada en:
<time datetime='2021-05-21'>sejmana-1660, día 2</time>
(12021-05-21)
</p>
<a href='https://endefensadelsl.org/ppl_es.html' rel=external target=_blank>ppl: licencia de producción de pares</a></p>
</footer>
</body>
</html>

View File

@ -1,150 +0,0 @@
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' lang='es-MX,en'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta content='initial-scale=1.0, maximum-scale=1.0, user-scalable=yes' name='viewport'/>
<link rel='stylesheet' href='./static/estilo.css'>
<title>🥭 &mdash; apuntes de imagemagick</title>
</head>
<body>
<header>
<p><a href='./index.html'>{🥭}</a></p>
<h1>apuntes de imagemagick</h1>
</header>
<nav><ul><li><a href='#redimensiona imagen'>redimensiona imagen</a></li>
<li><a href='#reemplaza color por otro'>reemplaza color por otro</a></li>
<li><a href='#elimina metadatos exif'>elimina metadatos exif</a></li>
<li><a href='#convierte pdf'>convierte pdf</a></li>
<li><a href='#reduce la cantidad de colores'>reduce la cantidad de colores</a></li>
<li><a href='#genera mapas de bits'>genera mapas de bits</a></li>
<li><a href='#compone/encima imágenes'>compone/encima imágenes</a></li>
<li><a href='#corta'>corta</a></li>
</ul></nav>
<main><section></section><section>
<h1 id='redimensiona imagen'>redimensiona imagen</h1>
<pre>
convert imagen.png -resize 100x100 imagen100.png
</pre>
<p>
o con -scale, para no interpolar y mantener la apariencia de pixeles
</p>
<pre>
convert imagen.png -scale 200% imagenx2.png
</pre>
</section><section>
<h1 id='reemplaza color por otro'>reemplaza color por otro</h1>
<p>
reemplaza azul por blanco:
</p>
<pre>
convert imagen.png -fill white -opaque blue salida.png
</pre>
<p>
se puede agregar fuzz factor:
</p>
<pre>
convert imagen.png -fuzz 45% -fill white -opaque blue salida.png
</pre>
<p>
y para convertir a transparente:
</p>
<pre>
convert imagen.png -fuzz 45% -transparent blue salida.png
</pre>
</section><section>
<h1 id='elimina metadatos exif'>elimina metadatos exif</h1>
<p>
para imágenes jpg
</p>
<pre>
convert foto.jpg -strip fotolimpia.jpg
</pre>
<p>
esto re-comprime la imagen, pero puede usarse al mismo tiempo que se redimensiona
</p>
<pre>
convert foto.jpg -strip -resize 640x480 fotolimpia_480p.jpg
</pre>
</section><section>
<h1 id='convierte pdf'>convierte pdf</h1>
<p>
por default la conversión sucede en baja calidad, esto la mejora:
</p>
<pre>
convert imagen.png -quality 100 -units PixelsPerInch -density 300x300 imagen.pdf
</pre>
<p>
y para el caso opuesto:
</p>
<pre>
convert -quality 100 -units PixelsPerInch -density 300x300 imagen.pdf imagen.png
</pre>
</section><section>
<h1 id='reduce la cantidad de colores'>reduce la cantidad de colores</h1>
<p>
deja que imagemagick elija qué colores utilizar:
</p>
<pre>
convert imagen.png -colors 8 imagen_8.png
</pre>
<p>
o con dithering:
</p>
<pre>
convert imagen.png -dither FloydSteinberg -colors 8 imagen_8.png
</pre>
<p>
en -dither se puede usar None, Riemersma, o FloydSteinberg
</p>
</section><section>
<h1 id='genera mapas de bits'>genera mapas de bits</h1>
<p>
con color plano:
</p>
<pre>
convert -size 100x100 xc:'rgb(0,255,0)' imagen_verde.png
</pre>
<p>
con ruido:
</p>
<pre>
convert -size 100x100 xc: +noise Random imagen_ruido.png
</pre>
</section><section>
<h1 id='compone/encima imágenes'>compone/encima imágenes</h1>
<p>
para componer una imagen con fondo transparente sobre otra que se convertirá en su fondo
</p>
<pre>
composite -gravity center imagen_con_alpha.png fondo.png resultado.png
</pre>
</section><section>
<h1 id='corta'>corta</h1>
<p>
para cortar una imagen a ciertas dimensiones (wxh) y cierto offset en x,y
</p>
<pre>
convert imagen.png -crop 300x300+100+50 +repage recorte.png
</pre>
<p>
para quitarte el borde de color constante a una imagen
</p>
<pre>
convert imagen.png -trim +repage sinborde.png
</pre>
<h2 id='llega(n) aquí'>llega(n) aquí</h2>
<p><a href='./apuntes.html'>{apuntes}</a></p>
</section>
</main>
<footer>
<p><a href='./index.html'>{🥭}</a></p>
<p>página actualizada en:
<time datetime='2021-05-21'>sejmana-1660, día 2</time>
(12021-05-21)
</p>
<a href='https://endefensadelsl.org/ppl_es.html' rel=external target=_blank>ppl: licencia de producción de pares</a></p>
</footer>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -1,33 +0,0 @@
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' lang='es-MX,en'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta content='initial-scale=1.0, maximum-scale=1.0, user-scalable=yes' name='viewport'/>
<link rel='stylesheet' href='./static/estilo.css'>
<title>🥭 &mdash; queso mango</title>
</head>
<body>
<header>
<p><a href='./index.html'>{🥭}</a></p>
<h1>queso mango</h1>
</header>
<main><section><p><a href='./compudanzas.html'>{compudanzas}</a></p>
<p><a href='./coloring_computers.html'>{coloring computers}</a></p>
<p><a href='./tiempo.html'>{tiempo}</a></p>
<p><a href='./textos.html'>{textos}</a></p>
<p><a href='./apuntes.html'>{apuntes}</a></p>
<p><a href='./acerca.html'>{acerca}</a></p>
<p><a href='./linkroll.html'>{linkroll}</a></p>
</section>
</main>
<footer>
<p><a href='./index.html'>{🥭}</a></p>
<p>página actualizada en:
<time datetime='2021-05-21'>sejmana-1660, día 2</time>
(12021-05-21)
</p>
<a href='https://endefensadelsl.org/ppl_es.html' rel=external target=_blank>ppl: licencia de producción de pares</a></p>
</footer>
</body>
</html>

View File

@ -1,49 +0,0 @@
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' lang='es-MX,en'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta content='initial-scale=1.0, maximum-scale=1.0, user-scalable=yes' name='viewport'/>
<link rel='stylesheet' href='./static/estilo.css'>
<title>🥭 &mdash; índice de páginas</title>
</head>
<body>
<header>
<p><a href='./index.html'>{🥭}</a></p>
<h1>índice de páginas</h1>
</header>
<main><section><p><a href='./acerca.html'>{acerca}</a></p>
<p><a href='./actualizaciones.html'>{actualizaciones}</a></p>
<p><a href='./apuntes.html'>{apuntes}</a></p>
<p><a href='./avr-asm.html'>{avr-asm}</a></p>
<p><a href='./ciclo_de_memoria.html'>{ciclo de memoria}</a></p>
<p><a href='./coloring_computers.html'>{coloring computers}</a></p>
<p><a href='./compudanzas.html'>{compudanzas}</a></p>
<p><a href='./compuertas.html'>{compuertas}</a></p>
<p><a href='./danzas_compuertas.html'>{danzas compuertas}</a></p>
<p><a href='./danzasistemas-tag.html'>{danzasistemas-tag}</a></p>
<p><a href='./darena.html'>{darena}</a></p>
<p><a href='./ffmpeg.html'>{ffmpeg}</a></p>
<p><a href='./imagemagick.html'>{imagemagick}</a></p>
<p><a href='./linkroll.html'>{linkroll}</a></p>
<p><a href='./logiteca.html'>{logiteca}</a></p>
<p><a href='./non_e-computers.html'>{non e-computers}</a></p>
<p><a href='./recetas.html'>{recetas}</a></p>
<p><a href='./running.html'>{running}</a></p>
<p><a href='./s-camino.html'>{s-camino}</a></p>
<p><a href='./terranova.html'>{terranova}</a></p>
<p><a href='./textos.html'>{textos}</a></p>
<p><a href='./the_rite_of_computing.html'>{the rite of computing}</a></p>
<p><a href='./tiempo.html'>{tiempo}</a></p>
</section>
</main>
<footer>
<p><a href='./index.html'>{🥭}</a></p>
<p>página actualizada en:
<time datetime='2021-05-21'>sejmana-1660, día 2</time>
(12021-05-21)
</p>
<a href='https://endefensadelsl.org/ppl_es.html' rel=external target=_blank>ppl: licencia de producción de pares</a></p>
</footer>
</body>
</html>

View File

@ -1,50 +0,0 @@
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' lang='es-MX,en'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta content='initial-scale=1.0, maximum-scale=1.0, user-scalable=yes' name='viewport'/>
<link rel='stylesheet' href='./static/estilo.css'>
<title>🥭 &mdash; linkroll</title>
</head>
<body>
<header>
<p><a href='./index.html'>{🥭}</a></p>
<h1>linkroll</h1>
</header>
<nav><ul><li><a href='#en la web'>en la web</a></li>
</ul></nav>
<main><section><p>
me alegra mucho que estos sitios existan
</p>
</section><section>
<h1 id='en la web'>en la web</h1>
<p><a href='https://melmuvz.neocities.org/' rel=external target=_blank>melmuvz.neocities.org</a></p>
<p><a href='https://xxiivv.com/' rel=external target=_blank>xxiivv.com</a></p>
<p><a href='https://kokorobot.ca/' rel=external target=_blank>kokorobot.ca</a></p>
<p><a href='https://copiona.com/' rel=external target=_blank>copiona.com</a></p>
<p><a href='https://100r.co/' rel=external target=_blank>100r.co</a></p>
<p><a href='https://xj-ix.luxe/' rel=external target=_blank>xj-ix.luxe</a></p>
<p><a href='https://leetusman.com/' rel=external target=_blank>leetusman.com</a></p>
<p><a href='https://marijn.uk/' rel=external target=_blank>marijn.uk</a></p>
<p><a href='https://maya.land/' rel=external target=_blank>maya.land</a></p>
<p><a href='https://simone.computer/' rel=external target=_blank>simone.computer</a></p>
<p><a href='https://sophieleetmaa.com/' rel=external target=_blank>sophieleetmaa.com</a></p>
<p><a href='https://sixey.es/' rel=external target=_blank>sixey.es</a></p>
<p><a href='https://u2764.com/' rel=external target=_blank>u2764.com</a></p>
<p><a href='https://ellugar.co/' rel=external target=_blank>ellugar.co</a></p>
<p><a href='https://ritualdust.com/' rel=external target=_blank>ritualdust.com</a></p>
<p><a href='https://now.lectronice.com/' rel=external target=_blank>now.lectronice.com</a></p>
</section>
</main>
<footer>
<p><a href='./index.html'>{🥭}</a></p>
<p>página actualizada en:
<time datetime='2021-05-21'>sejmana-1660, día 2</time>
(12021-05-21)
</p>
<a href='https://endefensadelsl.org/ppl_es.html' rel=external target=_blank>ppl: licencia de producción de pares</a></p>
</footer>
</body>
</html>

View File

@ -1,309 +0,0 @@
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' lang='es-MX,en'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta content='initial-scale=1.0, maximum-scale=1.0, user-scalable=yes' name='viewport'/>
<link rel='stylesheet' href='./static/estilo.css'>
<title>🥭 &mdash; logiteca</title>
</head>
<body>
<header>
<p><a href='./index.html'>{🥭}</a></p>
<h1>logiteca</h1>
</header>
<nav><ul><li><a href='#acerca de'>acerca de</a></li>
<li><a href='#multiplicador de 1 bit'>multiplicador de 1 bit</a></li>
<li><a href='#contadores'>contadores</a></li>
<li><a href='#half adder'>half adder</a></li>
<li><a href='#full adder'>full adder</a></li>
</ul></nav>
<main><section><p>
compendio de circuitos lógicos que pueden implementarse en las <a href='./danzas_compuertas.html'>{danzas compuertas}</a>.
</p>
<p>
material de referencia para las <a href='./compudanzas.html'>{compudanzas}</a>
</p>
</section><section>
<h1 id='acerca de'>acerca de</h1>
<p>
este es un compendio de circuitos lógicos que pueden implementarse en las <a href='./danzas_compuertas.html'>{danzas compuertas}</a>.
</p>
<p>
están descritos en *verilog*, un lenguaje descriptor de hardware. esto con la idea de estandarizarlos, de facilitar simularlos e implementarlos en otros materiales, y de indicar su cualidad de *red abstracta*.
</p>
<p>
utilizamos el lenguaje a nivel de <a href='./compuertas.html'>{compuertas}</a> lógicas solamente: cada compuerta se expresa como una función (`and()`, `not()`, `or()`, `nor()`, `nand()`, etc) donde el primer argumento es el nombre de la *salida* de la compuerta, y el o los otros argumentos son los nombres de las *entradas*.
</p>
<p>
el número de participantes asignado por circuito está contado como el *número de entradas* más el *número de compuertas*, donde alguna(s) de ella(s) incluyen las compuertas cuyas salidas son también la(s) del circuito. si se tienen más participantes, se pueden agregar el *número de salidas*: persona(s) que copien el resultado de la compuerta correspondiente.
</p>
</section><section>
<h1 id='multiplicador de 1 bit'>multiplicador de 1 bit</h1>
<p>
circuito que multiplica a dos números de 1 bit y da el resultado en 1 bit.
</p>
<h2 id='multiplicador de 1 bit con compuertas habituales (3 o 4 participantes)'>multiplicador de 1 bit con compuertas habituales (3 o 4 participantes)</h2>
<pre>
// multiplicador construido con compuertas habituales
// entradas (2): a,b
// salidas (1): r (resultado)
// compuertas (1): 1 de 2 entradas
module multiplicador( a, b, r);
input wire a, b;
output wire r;
and C1(r, a, b);
endmodule
</pre>
<h2 id='multiplicador de 1 bit con nor (5 o 6 participantes)'>multiplicador de 1 bit con nor (5 o 6 participantes)</h2>
<pre>
// multiplicador construido con nor's
// entradas (2): a,b
// salidas (1): r (resultado)
// compuertas (3): 2 de 1 y 1 de 2 entradas
module multiplicador( a, b, r);
input wire a, b;
output wire r;
wire p1,p2;
// negadas
nor C1(p1, a);
nor C2(p2, b);
// resultado
nor C3(r, p1, p2);
endmodule
</pre>
</section><section>
<h1 id='contadores'>contadores</h1>
<p>
circuitos que incrementan 1 al número binario colocado en la entrada, con el mismo número de bits a la entrada que a la salida.
</p>
<p>
si la salida se "conecta" a la entrada, entonces con cada paso se obtiene el
<br/>
número siguiente en la secuencia, es decir se "cuenta".
</p>
<p>
al llegar al último número, se regresa a 0.
</p>
<h2 id='contador de 2 bits con compuertas habituales (4 o 6 participantes)'>contador de 2 bits con compuertas habituales (4 o 6 participantes)</h2>
<pre>
// contador de 2 bits con compuertas habituales
// entradas (2): a, b
// salidas (2): x, y
// compuertas (2): 1 de 1 y 1 de 2 entradas
module contador(a, b, x, y);
input wire a,b;
output wire x,y;
not C1(y, b);
xor C2(x, a,b);
endmodule
</pre>
<h2 id='contador de 2 bits con nor (7 o 9 participantes)'>contador de 2 bits con nor (7 o 9 participantes)</h2>
<pre>
// contador de 2 bits con nor
// entradas (2): a, b
// salidas (2): x, y
// compuertas (5): 2 de 1 y 3 de 2 entradas
module contador(a, b, x, y);
input wire a,b;
output wire x,y;
wire p1, p2, p3;
// negaciones
nor C1(y, b);
nor C2(p1, a);
// para x
nor C3(p2, a,b);
nor C4(p3, y,p1);
nor C5(x, p2,p3);
endmodule
</pre>
<h2 id='contador de 3 bits con nor (13 o 16 participantes)'>contador de 3 bits con nor (13 o 16 participantes)</h2>
<pre>
// contador de 3 bits con compuertas habituales
// entradas (3): a, b, c
// salidas (3): x, y, z
// compuertas (10): 3 de 1, 4 de 2, 3 de 3 entradas
module contador(a, b, c, x, y, z);
input wire a,b,c;
output wire x,y,z;
wire p1, p2, p3, p4, p5, p6, p7;
// negaciones
nor C1(p1, a);
nor C2(p2, b);
nor C3(z, c);
// para y
nor C4(p3, b,c);
nor C5(p4, p2,z);
nor C6(y, p3,p4);
// para x
nor C7(p5, a,b);
nor C8(p6, p1, p2, z);
nor C9(p7, a, p2, c);
nor C10(x, p5, p6, p7);
endmodule
</pre>
</section><section>
<h1 id='half adder'>half adder</h1>
<p>
circuito que suma dos bits y da el resultado en dos bits (resultado y *carry*)
</p>
<h2 id='half adder con compuertas habituales (4 o 6 participantes)'>half adder con compuertas habituales (4 o 6 participantes)</h2>
<pre>
// half adder construido con compuertas habituales
// entradas (2): a,b
// salidas (2): r, c (resultado, carry)
// compuertas (2): 2 de 2 entradas
module halfadder( a, b, r, c);
input wire a, b;
output wire r,c;
// carry
and C1(c, a, b);
// resultado
xor C2(r, a, b);
endmodule
</pre>
<h2 id='half adder usando nor (7 o 9 participantes)'>half adder usando nor (7 o 9 participantes)</h2>
<pre>
// half adder construido usando nor's
// entradas (2): a,b
// salidas (2): r, c (resultado, carry)
// compuertas (5): 2 de 1 y 3 de 2 entradas
module halfadder( a, b, r, c);
input wire a, b;
output wire r,c;
wire p1,p2,p3;
// negadas
nor C1(p1, a);
nor C2(p2, b);
// carry
nor C3(c, p1, p2);
// resultado
nor C4(p3, a, b);
nor C5(r, c, p3);
endmodule
</pre>
</section><section>
<h1 id='full adder'>full adder</h1>
<p>
circuito que suma tres bits y da el resultado en dos bits (resultado y *carry*).
</p>
<h2 id='full adder con compuertas habituales (14 o 16 participantes)'>full adder con compuertas habituales (14 o 16 participantes)</h2>
<pre>
// full adder construido con compuertas habituales
// entradas (3): a, b, c
// salidas (2): carry, r (resultado)
// compuertas (11): 2 de 1 y 9 de 2 entradas
module fulladder( a, b, c, r, carry);
input wire a, b, c;
output wire r, carry;
wire p1, p2, p3, p4, p5, p6, p7, p8, p9;
// negadas
not C1(p1, a);
not C2(p3, p2);
// diferencias b,c
xor C3(p2, b, c);
or C4(p4, b, c);
and C5(p5, b, c);
// armado de resultado
and C6(p6, p1, p2);
and C7(p7, a, p3);
or C8(r, p6, p7);
// armado de carry
and C9(p8, p1, p5);
and C10(p9, a, p4);
or C11(carry, p8, p9);
endmodule
</pre>
<h2 id='full adder usando nor (15 o 17 participantes)'>full adder usando nor (15 o 17 participantes)</h2>
<pre>
// full adder construido usando nor's
// entradas (3): a, b, c
// salidas (2): carry, r (resultado)
// compuertas (12): 3 de 1, 3 de 2, 4 de 3 y 1 de 4 entradas
module fulladder( a, b, c, r, carry);
input wire a, b, c;
output wire r, carry;
wire p1, p2, p3, p4, p5, p6, p7, p8, p9, p10;
// negadas
nor C1(p1, a);
nor C2(p2, b);
nor C3(p3, c);
// pa'l carry
nor C4(p4, a, b);
nor C5(p5, a, c);
nor C6(p6, b, c);
// pa resultado
nor C7(p7, a, b , c);
nor C8(p8, p1, b, p3);
nor C9(p9, a, p2, p3);
nor C10(p10, p1, p2, c);
// salidas
nor C11(carry, p4, p5, p6);
nor C12(r, p7, p8, p9, p10);
endmodule
</pre>
<h2 id='llegan aquí'>llegan aquí</h2>
<p><a href='./danzas_compuertas.html'>{danzas compuertas}</a></p>
<p><a href='./coloring_computers.html'>{coloring computers}</a></p>
</section>
</main>
<footer>
<p><a href='./index.html'>{🥭}</a></p>
<p>página actualizada en:
<time datetime='2021-05-21'>sejmana-1660, día 2</time>
(12021-05-21)
</p>
<a href='https://endefensadelsl.org/ppl_es.html' rel=external target=_blank>ppl: licencia de producción de pares</a></p>
</footer>
</body>
</html>

View File

@ -1,48 +0,0 @@
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' lang='es-MX,en'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta content='initial-scale=1.0, maximum-scale=1.0, user-scalable=yes' name='viewport'/>
<link rel='stylesheet' href='./static/estilo.css'>
<title>🥭 &mdash; non e-computers / computadoras no electrónicas</title>
</head>
<body>
<header>
<p><a href='./index.html'>{🥭}</a></p>
<h1>non e-computers / computadoras no electrónicas</h1>
</header>
<nav><ul><li><a href='#enlaces internos'>enlaces internos</a></li>
<li><a href='#enlaces externos'>enlaces externos</a></li>
</ul></nav>
<main><section><p>
computación sin semiconductores
</p>
</section><section>
<h1 id='enlaces internos'>enlaces internos</h1>
<p><a href='./compudanzas.html'>{compudanzas}</a></p>
<p><a href='./coloring_computers.html'>{coloring computers}</a></p>
<p><a href='./the_rite_of_computing.html'>{the rite of computing}</a></p>
</section><section>
<h1 id='enlaces externos'>enlaces externos</h1>
<p><a href='https://xkcd.com/505' rel=external target=_blank>a bunch of rocks - randall munroe, xkcd</a></p>
<p><a href='http://www.blikstein.com/paulo/projects/project_water.html' rel=external target=_blank>programmable water - paulo blikstein 2003</a></p>
<p><a href='https://wiki.xxiivv.com/site/papier.html' rel=external target=_blank>wdr papier computer</a></p>
<p><a href='https://wiki.xxiivv.com/site/paper_computing.html' rel=external target=_blank>paper computing</a></p>
<p><a href='https://yip.pe/analog.html' rel=external target=_blank>analogue computing</a></p>
<h2 id='llega(n) aquí'>llega(n) aquí</h2>
<p><a href='./coloring_computers.html'>{coloring computers}</a></p>
<p><a href='./compudanzas.html'>{compudanzas}</a></p>
</section>
</main>
<footer>
<p><a href='./index.html'>{🥭}</a></p>
<p>página actualizada en:
<time datetime='2021-05-21'>sejmana-1660, día 2</time>
(12021-05-21)
</p>
<a href='https://endefensadelsl.org/ppl_es.html' rel=external target=_blank>ppl: licencia de producción de pares</a></p>
</footer>
</body>
</html>

View File

@ -1,255 +0,0 @@
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' lang='es-MX,en'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta content='initial-scale=1.0, maximum-scale=1.0, user-scalable=yes' name='viewport'/>
<link rel='stylesheet' href='./static/estilo.css'>
<title>🥭 &mdash; recetas veganas</title>
</head>
<body>
<header>
<p><a href='./index.html'>{🥭}</a></p>
<h1>recetas veganas</h1>
</header>
<nav><ul><li><a href='#hotcakes de chocolate'>hotcakes de chocolate</a></li>
<li><a href='#"leche" y "queso" de soya'>"leche" y "queso" de soya</a></li>
<li><a href='#pastel de garbanzo'>pastel de garbanzo</a></li>
<li><a href='#kombucha'>kombucha</a></li>
</ul></nav>
<main><section><p>
recetas que solemos preparar, en remix constante
</p>
</section><section>
<h1 id='hotcakes de chocolate'>hotcakes de chocolate</h1>
<p>
~35 min
<br/>
~10-12 piezas
</p>
<p>
(remix de la receta en pag 46 del libro "cocinar vegano vol.1" de francesca carpinelli cocinavegano.com)
</p>
<h2 id='ingredientes'>ingredientes</h2>
<ul>
<li>2 tazas avena (hojuela de grano entero, "old-fashioned")</li>
<li>1.5 tazas leche de soya</li>
<li>1 cdita polvo para hornear</li>
<li>1 cdita bicarbonato de sodio</li>
<li>1 cdita canela en polvo</li>
<li>1/2 cdita sal de mar</li>
<li>3 cdas azucar mascabado</li>
<li>2 cdas cocoa en polvo</li>
<li>1 cda extracto de vainilla</li>
<li>1 cdita aceite de coco (u otro)</li>
<li>1/2 taza chocolate amargo en trozos (opcional)</li>
</ul>
<h2 id='instrucciones'>instrucciones</h2>
<ul>
<li>muele la avena hasta hacerla harina</li>
<li>agrega el polvo para hornear, bicarbonato de sodio, sal, canela, cocoa y azucar</li>
<li>mezcla bien</li>
<li>poco a poco agrega leche de soya y bate hasta incorporar los ingredientes</li>
<li>agrega el extracto de vainilla y bate de nuevo</li>
<li>coloca sarten a fuego medio</li>
<li>cuando se caliente, aceita y sirve la mezcla en partes iguales</li>
<li>cuando se hagan burbujas en la superficie, agrega trozos de chocolate y voltea</li>
<li>retira cuando tengan la consistencia que te agrade</li>
</ul>
<p>
(recuerda que no hay ingredientes crudos en la receta por lo que no hay riesgos por si parece que algo falta de cocerse)
</p>
<h2 id='sugerencia'>sugerencia</h2>
<p>
sirve con frutos rojos, moras, platano, mermeladas, mantequilla de cacahuate y/o de almendra.
</p>
</section><section>
<h1 id='"leche" y "queso" de soya'>"leche" y "queso" de soya</h1>
<p>
preparar "leche" de soya resulta en restos llamados "okara", que puede usarse entre otras cosas para preparar un "queso"
</p>
<p>
~60 min
<br/>
~1 lt de leche y
<br/>
un queso de ~120 gr
</p>
<h2 id='ingredientes'>ingredientes</h2>
<p>
solo para la "leche":
</p>
<ul>
<li>1/2 taza frijol de soya seco</li>
<li>4 tazas agua</li>
</ul>
<p>
para el queso:
</p>
<ul>
<li>2 cditas levadura nutricional</li>
<li>1/2 cdita sal</li>
<li>1/2 limón</li>
<li>1 chorrito aceite de oliva</li>
<li>3 tazas agua</li>
</ul>
<p>
necesitas alguna herramienta para licuar/moler, y otra para colar finamente (e.g. manta de cielo)
</p>
<p>
dos ollas y algunos recipientes, y un colador ayuda
</p>
<h2 id='instrucciones'>instrucciones</h2>
<h3 id='previo:'>previo:</h3>
<ul>
<li>deja remojando el frijol de soya por unas 8 horas</li>
</ul>
<h3 id='durante:'>durante:</h3>
<p>
para el queso:
</p>
<ul>
<li>empieza a hervir 3 tazas de agua </li>
</ul>
<p>
para la leche:
</p>
<ul>
<li>escurre el frijol de soya - al remojarse crece como hasta 1.5 tazas</li>
<li>muele en la licuadora el frijol con 3 tazas de agua</li>
<li>usa la manta de cielo para filtrar y exprimir el resultado dentro de una olla</li>
<p>
(el liquido se vuelve la leche, y lo solido es la okara)
<li>pon la olla de la leche a hervir, cuidando de quitarle la espuma y nata</li>
<li>cuando hierva, cambia a fuego medio y espera ~20 minutos, quitando espuma y</li>
<br/>
revolviendo en ocasiones
<li>deja enfriar y bebe!</li>
</ul>
<br/>
para el queso:
</p>
<ul>
<li>tan pronto el agua hierva, y ya tengas la okara, ponla en esa olla</li>
<li>deja cocer a fuego medio durante 15-20 minutos</li>
<li>usa el colador y la manta de cielo para filtrar el resultado (el liquido ya no</li>
<p>
lo usaremos, y el solido es la okara cocida)
<li>deja enfriar un rato</li>
<li>cuando te sea posible, exprime para quitar todo el liquido que puedas</li>
<li>coloca la okara cocida y "seca" en un recipiente</li>
<li>sirve encima la levadura nutricional, sal, limon y aceite de oliva</li>
<li>mezcla muy bien con tus manos</li>
<li>compacta la mezcla para que sea "queso"</li>
<li>aparentemente conviene refrigerar un rato antes de comerlo</li>
</ul>
</p>
<h2 id='referencias'>referencias</h2>
<p>
remix de estas recetas:
</p>
<p><a href='https://simpleveganblog.com/homemade-soy-milk/' rel=external target=_blank>leche de soya</a></p>
<p><a href='https://youtube.com/watch?v=BU2LEYHb_qk' rel=external target=_blank>tofu casero (youtube)</a></p>
</section><section>
<h1 id='pastel de garbanzo'>pastel de garbanzo</h1>
<p>
remix de "falafel al horno"
</p>
<p>
(receta en proceso de afinarse porque la hago de manera intuitiva (?))
</p>
<p>
~60 min
<br/>
~2 "pasteles"
</p>
<h2 id='ingredientes'>ingredientes</h2>
<h3 id='para la masa'>para la masa</h3>
<ul>
<li>1 taza garbanzo seco</li>
<li>2 jitomates medianos</li>
<li>1/2 cebolla</li>
<li>2 dientes ajo</li>
<li>1 cucharada sal</li>
<li>1 cucharadita pimienta</li>
<li>1 cucharada comino</li>
<li>1.5 tazas agua</li>
<li>1 cucharadita aceite</li>
<li>al gusto cilantro</li>
<li>al gusto chiles serranos</li>
</ul>
<h3 id='extras:'>extras:</h3>
<ul>
<li>1 cucharadita ajonjoli</li>
<li>1 pimiento</li>
<li>1/2 taza setas</li>
<li>1/2 taza espinaca</li>
</ul>
<p>
necesitas horno y alguna herramienta para moler/licuar
</p>
<h2 id='instrucciones'>instrucciones</h2>
<h3 id='previo:'>previo:</h3>
<ul>
<li>deja remojando los garbanzos entre 8 y 12 horas (crecen como a 2.25 tazas)</li>
</ul>
<h3 id='durante:'>durante:</h3>
<ul>
<li>escurre y enjuaga los garbanzos</li>
<li>muele en la licuadora los garbanzos con el agua, cebolla, jitomates, ajo, sal,</li>
<p>
pimienta, comino, cilantro y chile(s)
<li>aceita un par de moldes para pan y sirve la mezcla en ellos</li>
<li>opcional: deja reposar en el refrigerador por ~30 minutos</li>
<li>parte los pimientos y setas en rebanaditas, coloca junto con la espinaca y</li>
<br/>
ajonjoli en la superficie de la masa
<li>coloca los moldes en el horno, enciende a ~300 grados C</li>
<li>espera unos 40-50 minutos, o hasta que adquieran la consistencia que desees</li>
<li>apaga el horno y aprovecha el calor para seguir cociendo</li>
<li>deja enfriar y sirve!</li>
</ul>
<br/>
queda bien junto con limon, aguacate, y alguna salsa (en proceso de definirla)
</p>
</section><section>
<h1 id='kombucha'>kombucha</h1>
<p>
(notas que uso para cada ronda)
</p>
<p>
~1 lt de kombucha
</p>
<h2 id='ingredientes'>ingredientes</h2>
<ul>
<li>1/2 taza liquido iniciador + scoby</li>
<li>1 taza agua caliente</li>
<li>1 cucharadita te negro (o 2 sobres)</li>
<li>1/4 taza azucar mascabado (4 cucharadas)</li>
<li>3 tazas agua fria</li>
</ul>
<h2 id='instrucciones'>instrucciones</h2>
<ul>
<li>prepara el te con el agua caliente</li>
<li>cuela las hojas del te</li>
<li>disuelve la azucar en el te</li>
<li>diluye el te con el agua fria</li>
<li>agrega la mezcla al liquido iniciador + scoby</li>
<li>tapa con tela / filtros de cafe, y espera al menos un par de semanas</li>
</ul>
<h2 id='llega(n) aquí'>llega(n) aquí</h2>
<p><a href='./acerca.html'>{acerca}</a></p>
<p><a href='./apuntes.html'>{apuntes}</a></p>
</section>
</main>
<footer>
<p><a href='./index.html'>{🥭}</a></p>
<p>página actualizada en:
<time datetime='2021-05-21'>sejmana-1660, día 2</time>
(12021-05-21)
</p>
<a href='https://endefensadelsl.org/ppl_es.html' rel=external target=_blank>ppl: licencia de producción de pares</a></p>
</footer>
</body>
</html>

View File

@ -1,82 +0,0 @@
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' lang='es-MX,en'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta content='initial-scale=1.0, maximum-scale=1.0, user-scalable=yes' name='viewport'/>
<link rel='stylesheet' href='./static/estilo.css'>
<title>🥭 &mdash; running</title>
</head>
<body>
<header>
<p><a href='./index.html'>{🥭}</a></p>
<h1>running</h1>
</header>
<main><section><p>
volando con los pies
</p>
<table>
<tr>
<th>distancia</th>
<th>tiempo</th>
<th>fecha</th>
<th>lugar </th>
<th>nota(s)</th>
</tr>
<tr>
<td>1 km</td>
<td>2:52</td>
<td><time datetime="2021-02-25">sjm-1648, d-1</time></td>
<td>trc</td>
<td>chequeo</td>
</tr>
<tr>
<td>2 km</td>
<td>7:12</td>
<td><time datetime="2021-01-12">sjm-1641, d-6</time></td>
<td>cdmx</td>
<td>chequeo</td>
</tr>
<tr>
<td>5 km</td>
<td>19:12</td>
<td><time datetime="2017-05-20">sjm-1425, d-4</time></td>
<td>nyc</td>
<td>carrera cc</td>
</tr>
<tr>
<td>10 km</td>
<td>39:38</td>
<td><time datetime="2017-05-20">sjm-1451, d-3</time></td>
<td>nyc</td>
<td>parte de medio maratón</td>
</tr>
<tr>
<td>21.1 km</td>
<td>1:27:31</td>
<td><time datetime="2021-03-07">sjm-1649, d-4</time></td>
<td>trc</td>
<td>parte de maratón</td>
</tr>
<tr>
<td>42.192 km</td>
<td>3:24:14</td>
<td><time datetime="2021-03-07">sjm-1649, d-4</time></td>
<td>trc</td>
<td>carrera</td>
</tr>
</table>
<h2 id='llega(n) aquí'>llega(n) aquí</h2>
<p><a href='./acerca.html'>{acerca}</a></p>
</section>
</main>
<footer>
<p><a href='./index.html'>{🥭}</a></p>
<p>página actualizada en:
<time datetime='2021-05-20'>sejmana-1660, día 1</time>
(12021-05-20)
</p>
<a href='https://endefensadelsl.org/ppl_es.html' rel=external target=_blank>ppl: licencia de producción de pares</a></p>
</footer>
</body>
</html>

View File

@ -1,69 +0,0 @@
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' lang='es-MX,en'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta content='initial-scale=1.0, maximum-scale=1.0, user-scalable=yes' name='viewport'/>
<link rel='stylesheet' href='./static/estilo.css'>
<title>🥭 &mdash; s-camino... el camino del ensamblador (?)</title>
</head>
<body>
<header>
<p><a href='./index.html'>{🥭}</a></p>
<h1>s-camino... el camino del ensamblador (?)</h1>
</header>
<main><section><p>
veo razones varias, múltiples, para el estudio poético y contemplativo de la computación a bajo nivel.
</p>
<p>
específicamente aquí me refiero al programar en el llamado lenguaje ensamblador (¿o idioma ensamblador?)
</p>
<p>
en otros contextos se puede hablar de que conviene hacerlo buscando eficiencia, velocidad, haciendo el sacrificio de descender por las escaleras para mover los fierros; ensuciarse las manos mientras se observa la complejidad del dispositivo... pero todo sea por la productividad y el resultado óptimo que se encontrará a final del tunel.
</p>
<p>
aquí no estamos en ese contexto, claramente. pero justo esa impracticidad, esa mugre, esa manualidad o artesanalidad, la imagen de que a fin de cuentas (solo) estamos moviendo bits de aquí para allá (conectados de tal manera que algo más sucede) es la que llama la atención.
</p>
<p>
¿qué tal si acompañamos a la máquina en un nivel cercano al que será su propósito (¿o condena?) de vida?
</p>
<p>
tomamos conciencia de cada uno de los pasos por la que la haremos pasar sin otra opción más que seguir, seguir, seguir…
</p>
<p>
y sí, al escribir y programar en ensamblador vamos con lentitud, porque las convenciones son extrañas (todo un dialecto que tal vez busca alejar a quien no tiene cierto perfil), porque es un mundo que contrasta con la costumbre de la eficiencia, de los resultados inmediatos.
</p>
<p>
además, ¿cuál es la prisa, por qué querer hacer tanto?
</p>
<p>
hacer un programa se puede convertir en un ritual; la invocación del libro de instrucciones y conexiones, la planeación y reflexión antes de escribir la primera letra; tardarse horas en algo que aquellas estructuras de facilidad, practicidad, te permiten hacer en minutos, segundos (¿pero te quitan toda la magia, todo el asombro y confrontación con lo que realmente está pasando?)
</p>
<p>
la no portabilidad del código está a nuestro favor, porque implica rehacerlo cada vez (o cuando sea necesario), re-contemplar, ir lento. de nuevo, ¿cuál es la prisa?
</p>
<p>
estoy de acuerdo, es un mundo inaccesible (¿similar a cualquier otro tipo de hechicería?), pero parte de la labor que me autoasigno es hacerle puertas (o grietas, hoyos, y adentro madrigueras) para poderlo compartir.
</p>
<p>
no cualquiera tiene el tiempo... igual aquí andaremos, con paciencia, y un paso a la vez.
</p>
<p>
(escrito el 12019-07-05)
</p>
<h2 id='llegan aquí'>llegan aquí</h2>
<p><a href='./avr-asm.html'>{avr-asm}</a></p>
<p><a href='./darena.html'>{darena}</a></p>
<p><a href='./textos.html'>{textos}</a></p>
</section>
</main>
<footer>
<p><a href='./index.html'>{🥭}</a></p>
<p>página actualizada en:
<time datetime='2021-05-20'>sejmana-1660, día 1</time>
(12021-05-20)
</p>
<a href='https://endefensadelsl.org/ppl_es.html' rel=external target=_blank>ppl: licencia de producción de pares</a></p>
</footer>
</body>
</html>

View File

@ -1,95 +0,0 @@
/* links en el sitio */
a[href^="./"]{
text-decoration:none;
}
/* links externos */
a[rel=external]:after{
content:"↝";
}
a{
color: #963;
}
a:hover{
background-color: #963;
color: #fff;
border-radius:3px;
}
a:visited{
color: #630;
}
a:visited:hover{
background-color: #630;
color: #fff;
border-radius:3px;
}
body{
color: #100;
max-width:40em;
margin:0 auto;
font-size:18px;
padding: 1em;
}
nav,footer,section{
border-top: 3px dotted;
}
footer{
font-size: x-small;
text-align: center;
}
pre{
background-color: #fee;
color: #433;
padding:1em;
border-radius:5px;
overflow-x: auto;
}
main h1{
font-size: 30px;
}
main h2{
font-size: 25px;
border-top: 1px dotted;
padding-top: 0.5em;
}
main h3{
font-size: 20px;
}
gallery{
display:flex;
flex-direction:row;
flex-wrap:wrap;
justify-content:space-evenly;
align-content:center;
}
img{
margin:10px;
border-radius:5px;
}
nav{
font-size:smaller;
}
nav li{
list-style-type:square;
}
table,th,td{
border-style:inset;
border-width: 1px;
}
table{
margin:10px;
overflow-x: auto;
}
#count{ /* para tiempo */
word-wrap:break-word;
font-size:9px;
font-family:monospace;
}

View File

@ -1,215 +0,0 @@
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' lang='es-MX,en'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta content='initial-scale=1.0, maximum-scale=1.0, user-scalable=yes' name='viewport'/>
<link rel='stylesheet' href='./static/estilo.css'>
<title>🥭 &mdash; terranova</title>
</head>
<body>
<header>
<p><a href='./index.html'>{🥭}</a></p>
<h1>terranova</h1>
</header>
<nav><ul><li><a href='#Terranova'>Terranova</a></li>
<li><a href='#Portada'>Portada</a></li>
<li><a href='#Primera caminata'>Primera caminata</a></li>
<li><a href='#Siesta'>Siesta</a></li>
<li><a href='#Percepciones'>Percepciones</a></li>
<li><a href='#Espirales en pantalla'>Espirales en pantalla</a></li>
</ul></nav>
<main><section><p>
relato en proceso. escrito a inicios del 12021.
</p>
</section><section>
<h1 id='Terranova'>Terranova</h1>
<p>
Nos encontramos aquí, al lado del risco. Poco a poco abrimos los ojos, despertamos.
</p>
<p>
No importa mucho dónde nos encontrábamos antes; el recuerdo por el momento se percibe nebuloso. ¿Aquí es cuando notamos que previamente no existíamos? No lo sé, no lo sé...
</p>
<p>
Somos dos personas, sentadas en una roca. Observamos el cielo estrellado con más claridad que nunca. ¿Será debido a que no hay atmósfera? De cualquier forma, este traje protector nos aleja un poco de lo que sería la experiencia completa: recepción lumínica estelar, con casi ninguna interferencia.
</p>
<p>
Alrededor, más rocas, y relieves profundos. Parecería inhóspito, frío. Como sea, de algún modo sabemos, y/o sabemos que de algún modo, tenemos compañía.
</p>
<p>
Por ahora, es mi turno relatar. Pero no hay que fiarse mucho de estas u otras palabras. La mimesis ha sido tan profunda que puede no quedar claro (a ti, a nosotras, a nadie) quién es quien habla, y quién no.
</p>
<p>
En otros tiempos me han llamado Terranova. La persona a mi lado tuvo el nombre de AnaTrevor. Ahora, poco de eso importa. El tiempo parece fluir distinto, y no nos dedicamos a tanto.
</p>
<p>
Todo parece indicar que la sobrevivencia está resuelta. Nada de nuestro contexto lo contradice. Al fin y al cabo, aquí estamos; al fin y al cabo, nos escuchas.
</p>
<p>
Después de una pequeña pausa, notamos un pequeño cambio de luz en el horizonte. Nos da la oportunidad de observar, contemplar, respirar. Alcanzamos a percibir una vibración, ¿es viento?
</p>
<p>
Algunas superficies oscilan en resonancia: frecuencias que se logran transmitir y como sonido interpretar; con todo y sonsonete extraño. Expresiones torcidas, pero posibles.
</p>
<p>
"¿Por qué no aprovechar?", hubiera dicho aquel ser. ¿Ditto, se llamaba? ¿Qué más decía? "Si el camino es infinito, entonces no hay prisa."
</p>
<p>
Ah, sí. Recuerdo los condicionales. El barandal, y la propuesta de amistad. Me pregunto dónde se encuentra ese lugar en relación a donde estamos. El salto al jardín con una pequeña pared volcánica. En principio no se ve, o siente, cerca.
</p>
<p>
Asumo que nuestra ubicación es otra, a dimensiones estelares, y en constante cambio. De ser así, haría falta rehacer las observaciones a lo largo de los años. Y esto, solo para tal vez encontrar la dirección, y con más paciencia, la distancia. No sé si sería fructífero. ¿Mejor apuntar hacia dónde iremos? ¿Iríamos? Ya veremos.
</p>
<p>
Quiero comentarle a Ana, pero ahora duerme sobre mi hombro. Lo bueno es que ya estamos aquí, y hay tiempo.
</section><section>
<h1 id='Portada'>Portada</h1>
</p>
<p>
La imagen de la portada de este dispositivo de almacenamiento, consiste en una representación de una pareja de astronautas que se toman de la mano mientras corren, saltan, vuelan en lo que parece que es "la superficie lunar".
</p>
<p>
Al menos, eso es lo que logramos identificar; el material de origen orgánico se ha desintegrado un tanto, y el método de impresión utilizado no da indicios de haber sido de la más alta calidad.
</p>
<p>
¿Es una representación de nosotras? No sé si considerar que el traje que portamos es "de astronauta", pues hace tiempo no navegamos o viajamos hacia las estrellas, los astros. ¿Estamos en "un astro", o es nuestro planeta? ("nuestro" y "planeta" entre comillas, claro)
</p>
<p>
Sin querer notamos que así como nuestro movimiento (a nivel personal, a nivel planetario) es relativo, también lo es todo este asunto de nomenclatura. Sí, estamos en las estrellas, y sí, estamos en una estructura rocosa que vagabundea.
</p>
<p>
De cualquier forma, la imagen nos hace sonreír. Eso de tomarse las manos no sería tan común en una representación de ese tipo, al menos no en épocas previas. Y bueno, sí podemos identificarnos con ella: Estamos aquí, en modalidad "planeta", y contentas, sobre otro "planeta".
</section><section>
<h1 id='Primera caminata'>Primera caminata</h1>
</p>
<p>
El día de hoy tuvimos una caminata hacia el primer risco. Quisiera hablar de puntos cardinales (oh, las bendiciones pseudo-cartesianas) pero no nos ha quedado claro cómo tener ese tipo de referencias absolutas en este lugar.
</p>
<p>
Por el momento hemos realizado unas marcas en el suelo para ubicarnos, "hasta cierto punto". No hemos logrado alinearlas con algún cuerpo en el cielo que se mantenga estable durante un periodo que haga sentido. ¿En qué sistema complejo estamos? Difícil recordarlo.
</p>
<p>
El trayecto de hoy nos permitió sentir qué tan apropiada es nuestra vestimenta para el ambiente. Tenemos movilidad, ligereza. Después de unos minutos (si es que esa medida todavía significa algo) la temperatura se ajusta, el aire parece que se libera.
</p>
<p>
Es extraño estar sobre esta superficie rocosa, previa (¿o posterior?) a la vida. Me pregunto hasta qué punto no somos también rocas, rocosas, minerales. Autopercibimos, y no sabemos si ellas también.
</p>
<p>
"La no linealidad de la materia viva", nos dijo un maestro alguna vez, mediado por múltiples redes de intercomunicación. Observas a la materia en condiciones no estables, y entonces todo cuadra (en cuanto a que no hace sentido.)
</p>
<p>
¿Esta superficie no cambia, o más bien vamos muy rápido como para notarlo?
</p>
<p>
¿O ambas?
</p>
<p>
Curiosa situación, más al compararla con la bóveda celeste, o lo que alcanzamos a percibir de ella. ¿Vamos muy lento como para empezar a inferir sus patrones? ¿O necesitaremos bastante tiempo? Nada que un tanto de paciencia no nos pueda proveer.
</p>
<p>
Podríamos decir que la caminata no nos llevó muy lejos. La emoción y estrés por la incertidumbre, el terreno desconocido aunque sin muchas macrovariaciones, el no tener muy claro qué es lo que estamos haciendo; todo esto se acumula, nos deja nerviosas, sudorosas, ¿en plena vida, dirían algunas?
</p>
<p>
Queremos imaginar que la iteración constante hará que nuestros cuerpos reconozcan el terreno. Y bueno, alguno que otro sendero se marcará. Asumo ciertas condiciones lineales, constantes; es la costumbre, ¿o no?
</p>
<p>
Ya veremos qué hacer de no ser así. "La respuesta está en el relámpago en tu memoria", nos dice el generador de frases.
</section><section>
<h1 id='Siesta'>Siesta</h1>
</p>
<p>
Durante un sueño en común, tuvimos algunas visiones y reflexiones, refracciones tal vez (y no refacciones), respecto a la curvatura del espacio-tiempo, la superficie rocosa en la que dormimos, y la posibilidad de transmitir caracteres a través de esos campos, gradientes energéticos.
</p>
<p>
No me quedó claro si el puente mencionado por Terranova en esos momentos, realmente es una ubicación de este lugar o más bien algún tipo de "proyecto" (para no decir "proyección") de cuestiones que llevamos en lo profundo (para no decir "en el más allá"). ¿Podríamos estar seguras de la existencia de dicha edificación aunque la tuviéramos registrado en mapas?
</p>
<p>
Sucedió que nos impresionó poder apreciar (es decir, poder ver con nuestros ojos) cómo las ondas electromagnéticas eran emitidas y se trasladaban en grandes bucles que solo existían al capturarse desde cierta perspectiva. Tal vez se debió a una breve ventana, la oportunidad de participar de un punto de vista más allá de las dimensiones en las que solemos movernos.
</p>
<p>
Al observar desde otro lado, las ondas apenas se distinguían, y más bien parecían líneas rectas.
</p>
<p>
¿A dónde llega aquello que transmitimos? ¿Alguien lo recibe? ¿Alguien lo decodifica? O antes que eso, ¿alguien nota que se trata de mensajes? ¿Y qué es lo que decimos?
</p>
<p>
Reflexionamos también en dirección contraria: ¿Desde dónde sintonizamos aquello que hemos soñado?
</p>
<p>
Comemos unos trozos de pan que nos recuerdan a historias épicas. No las extrañamos demasiado, menos ahora que estamos en nuestra propia búsqueda.
</p>
<p>
Como sea, no está de más darse el gusto, permitirse recordar.
</section><section>
<h1 id='Percepciones'>Percepciones</h1>
</p>
<p>
El día de hoy fue día de contemplación: Observamos los cielos que cambian de tonalidad de manera sutil y súbita. Así cambian, y así les vemos.
</p>
<p>
Me doy cuenta que no estaría mal llevar un registro de "cuándo" es que transmito estas notas. Sé que los protocolos de comunicación en los que se basan estas entregas, si bien son robustos, pueden cambiar el orden de llegada de los mensajes. Agregar algún tipo de marca de tiempo en el texto podría funcionar.
</p>
<p>
A veces nos preguntamos si, a escala de años, siglos, milenios, una diferencia de "días" u "horas" es significativa.
</p>
<p>
De cualquier forma, el problema es que nada más no nos ubicamos, y nuestras referencias artificiales, que en principio serían o parecerían "absolutas", no nos funcionan: no hay certeza en las marcas de tiempo que nos indican. Combinamos eso con que hacemos nuestras transmisiones solamente en ¿días? ¿momentos? de poca actividad física, y entonces nos confundimos todavía más.
</p>
<p>
No tenemos claro cómo es que este dispositivo logra comunicarse. Hemos observado sus circuitos, osciladores que se supone tienen una frecuencia constante, con un rango de error imperceptible para seres como nosotras, y nada: en ocasiones podemos percibirlos a escala sonora, otras veces les sentimos como vibraciones, y en algunas otras vemos emisiones lumínicas.
</p>
<p>
Podría parecer que esta falta de referencia nos causaría mucho conflicto: ¿somos nosotras quienes están pasando por las variaciones de temporalidad? ¿es el mundo en el que nos encontramos? ¿todas, ninguna de las anteriores? ¿tal vez ni siquiera se trata de tiempo?
</p>
<p>
Pero estamos bien, al menos por el momento. Sí, un pequeño juego, nada que temer. De alguna manera, estos "cambios constantes" nos permiten sentir un flujo vital, y estar más alertas.
</p>
<p>
Algo vamos encontrando con estas no-repeticiones. No importa que desde fuera parezca lo ¿contrario?: una serie de no-cambios; o vaya, lo mismo.
</section><section>
<h1 id='Espirales en pantalla'>Espirales en pantalla</h1>
</p>
<p>
Hoy pasamos un rato en recepción e intento de interpretación de señales electromagnéticas. Los fenómenos que hemos descrito en otros mensajes hacen la tarea más complicada: ¿realmente sintonizamos las frecuencias que el dispositivo nos indica?
</p>
<p>
Ahí estábamos, dos personas sobre una roca, viendo a una pequeña pantalla de osciloscopio. Este último también sobre una roca, otra roca. Cables en extensión por el espacio de la superficie, montados de alguna forma sí, sobre más rocas.
</p>
<p>
Hubiera convenido saber (y conocer) que conocer (y saber) sobre antenas iba a tener sentido y aplicación en un futuro próximo. Ahora nos encontramos aquí, tal vez con suficiente tiempo pero no con suficientes ganas de calcular con aquellas famosas ecuaciones.
</p>
<p>
Como sea, el proceso de prueba y error no ha estado tan mal. De manera tangible podemos notar los resultados del acomodo de nuestra configuración receptora. Notamos lo que parecerían frecuencias base, restos y/o ecos de eventos que en principio sucedieron cerca del inicio.
<br/>
Ninguna novedad, en apariencia. Todo bien.
</p>
<p>
En algún momento la pantalla del osciloscopio perdió su linealidad, e interrumpió lo que se estaba convirtiendo en trance de contemplación: empezamos a ver una espiral y cómo se formaba y deformada. Al modificar los controles pudimos apreciar su aspecto fractal. ¿Sería una emisión especialmente diseñada para afectar los circuitos digitales de aparatos como este, a pesar de la interferencia y el ruido cósmico?
</p>
<p>
Las pequeñas luces de colores mostraban patrones similares a otros que hace ¿tiempo? no teníamos la oportunidad de ver. Estos cielos impredecibles han consumido, de manera muy merecida, casi toda nuestra capacidad de atención visual.
</p>
<p>
Pero ahora, aquí estamos, estuvimos, ¿estaremos? en observación. Espirales que rompen la convención de la "función": más de un valor para cada unidad de lo que se supone es tiempo.
</p>
<p>
Como era de esperarse de acuerdo a toda esta situación que nos contextualiza y que no terminamos de entender, no pudimos capturar de manera digital aquello que se veía. Solo nos quedó el recuerdo, y bueno, este mensaje.
</p>
<p>
Regresamos a oscilaciones que parecen ser convencionales. Seguiremos en la búsqueda.
</p>
<h2 id='llega(n) aquí'>llega(n) aquí</h2>
<p><a href='./textos.html'>{textos}</a></p>
</section>
</main>
<footer>
<p><a href='./index.html'>{🥭}</a></p>
<p>página actualizada en:
<time datetime='2021-05-21'>sejmana-1660, día 2</time>
(12021-05-21)
</p>
<a href='https://endefensadelsl.org/ppl_es.html' rel=external target=_blank>ppl: licencia de producción de pares</a></p>
</footer>
</body>
</html>

View File

@ -1,34 +0,0 @@
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' lang='es-MX,en'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta content='initial-scale=1.0, maximum-scale=1.0, user-scalable=yes' name='viewport'/>
<link rel='stylesheet' href='./static/estilo.css'>
<title>🥭 &mdash; textos</title>
</head>
<body>
<header>
<p><a href='./index.html'>{🥭}</a></p>
<h1>textos</h1>
</header>
<main><section><p>
en proceso de traer por acá a textos (¿ficci-o-poéticos?) que he escrito
</p>
<p><a href='./s-camino.html'>{s-camino}</a></p>
<p><a href='./the_rite_of_computing.html'>{the rite of computing}</a></p>
<p><a href='./terranova.html'>{terranova}</a></p>
<h2 id='llega(n) aquí'>llega(n) aquí</h2>
<p><a href='./acerca.html'>{acerca}</a></p>
</section>
</main>
<footer>
<p><a href='./index.html'>{🥭}</a></p>
<p>página actualizada en:
<time datetime='2021-05-21'>sejmana-1660, día 2</time>
(12021-05-21)
</p>
<a href='https://endefensadelsl.org/ppl_es.html' rel=external target=_blank>ppl: licencia de producción de pares</a></p>
</footer>
</body>
</html>

View File

@ -1,556 +0,0 @@
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' lang='es-MX,en'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta content='initial-scale=1.0, maximum-scale=1.0, user-scalable=yes' name='viewport'/>
<link rel='stylesheet' href='./static/estilo.css'>
<title>🥭 &mdash; the rite of computing</title>
</head>
<body>
<header>
<p><a href='./index.html'>{🥭}</a></p>
<h1>the rite of computing</h1>
</header>
<nav><ul><li><a href='#r'>r</a></li>
<li><a href='#u '>u </a></li>
<li><a href='#w '>w </a></li>
<li><a href='#n'>n</a></li>
<li><a href='#t'>t</a></li>
<li><a href='#i'>i</a></li>
<li><a href='#c'>c</a></li>
<li><a href='#e'>e</a></li>
<li><a href='#x'>x</a></li>
<li><a href='#d'>d</a></li>
<li><a href='#s'>s</a></li>
<li><a href='#p '>p </a></li>
<li><a href='#l'>l</a></li>
</ul></nav>
<main><section><p>
we saw the tipping points being crossed, and yet the same behavior
<br/>
destruction was all around, even in the use of our tools of creation
<br/>
what could we do? how could we engage? how could we disengage?
<br/>
we thought of reinventing computers
<br/>
homegrown, homemade…
<br/>
a game, a party, a dance
<br/>
maybe in that way we would understand?
<br/>
maybe in that way we would know if we want to keep them?
<br/>
the following are some of our notes, thoughts, conversations, actions…
</p>
</section><section>
<h1 id='r'>r</h1>
<p>
i wonder what happens when you remove efficiency, speed
<br/>
the machine doesnt seem to complain
<br/>
it comes with a great cost
<br/>
some beings at the service of others, is that the natural order?
<br/>
you thought and asked, until you realized you put yourself on fire
<br/>
the higher one gets, and the more one on others depends…
<br/>
how bad you think the fall will be?
<br/>
how long will the internet live once the humans are gone?
</p>
</section><section>
<h1 id='u '>u </h1>
<p>
the person is given a ruleset
<br/>
a table
<br/>
current configuration
<br/>
encountered symbol
<br/>
what to put instead
<br/>
where to move
<br/>
next configuration
</p>
<p>
the floor is prepared
<br/>
a row of symbols
<br/>
mosaic of colors
<br/>
in a spiral
<br/>
around the fire
</p>
<p>
the person enters the space
<br/>
drums start playing
<br/>
the person starts moving
<br/>
repeating
<br/>
a configuration becomes a state of being
<br/>
a sequence of movements
<br/>
the mosaics are replaced
<br/>
(make sure you dont lose track)
<br/>
transitions from a state to another
<br/>
the spiral becomes another
<br/>
we expect the process
<br/>
we expect the result
</p>
<p>
after hours of a body
<br/>
becoming a body
<br/>
emulating a body
<br/>
who moves and sweats
<br/>
losing (but not really) breath
<br/>
the iteration is complete
</p>
</section><section>
<h1 id='w '>w </h1>
<p>
can we talk about rewilding computers?
<br/>
were they wild to start with?
<br/>
how wild or not is a division
<br/>
of time and space in slots
<br/>
ever-decreasing measures
<br/>
changes of state?
<br/>
the revolution, the transcription, life
<br/>
no boundaries, really, but in our self
<br/>
and that one, really, also emerges
<br/>
maybe you mean getting rid of the rigid cover
<br/>
curving the interconnections
<br/>
the differences are fluid
<br/>
with or without extremes?
<br/>
i lost you
<br/>
destroying the shiny, embracing the earth
<br/>
a cracked screen carried away by the sea?
<br/>
that would probably kill us
<br/>
with emergence we understand we cant understand
<br/>
is it a useful model?
<br/>
model? useful? it?
<br/>
number of processors versus grains of sand?
<br/>
and if we become just a probe?
<br/>
i dissolve, the computer
<br/>
the transformation carries on
</p>
</section><section>
<h1 id='n'>n</h1>
<p>
think about the apparently unnatural…
<br/>
creating vacuum…
<br/>
manipulating beams of charge and light…
<br/>
wiring thousands, cooling their surrounding air…
<br/>
later inserting billions in a little block of sand
<br/>
why not just chill and enjoy the beach?
<br/>
there was a war
<br/>
and then the promise of productivity
<br/>
why not just chill and enjoy the beach?
</p>
</section><section>
<h1 id='t'>t</h1>
<p>
a tape in the form of a series of objects in some kind of slots
<br/>
each object a symbol
<br/>
maybe pieces of cloth in a clothesline
<br/>
or pieces of paper on the floor
<br/>
soft and flexible
<br/>
an object signals the current position of the head
<br/>
maybe a stool to reach above
<br/>
or a long stick that rests and points
</p>
<p>
a group of people is engaged
<br/>
each one of them with a different command:
<br/>
if you encounter the short object in the tape
<br/>
replace it with the thin
<br/>
move the head to the left
</p>
<p>
and get the long-haired person to continue
<br/>
different combinations
<br/>
fragments of behavior
<br/>
nobody knows what is really happening
<br/>
and yet, the computation occurs
</p>
</section><section>
<h1 id='i'>i</h1>
<p>
can you tell me again about your project?
<br/>
project, ceremony, dance, choreography… computer!
<br/>
i wonder how can someone end up there
<br/>
its just about imagining alternatives, trying to reinvent…
<br/>
is this a solution to a problem? what if everybody does as you?
<br/>
they originated with war in body and mind
<br/>
and they have very good uses despite that; they saved me!
<br/>
what about realizing they are made through destruction?
<br/>
it might be practical: destroying the old and the weak
<br/>
and we will drown by powering them
<br/>
i hope we can upload our consciousness by then?
<br/>
you might emulate yourself in rocks
</p>
</section><section>
<h1 id='c'>c</h1>
<p>
a group of people arrives to the floor that suddenly becomes a stage
<br/>
bare feet, skin in the air with no layers in between
<br/>
they move without the code that you would expect
<br/>
(but with a different set of rules, what do they encode?)
<br/>
eye contact, spatial awareness, flow
<br/>
a self-generated oscillation
<br/>
one of them observes other two
<br/>
based on the three states, this one responds
<br/>
repeat the same for each body
<br/>
a cell made of cells
<br/>
the pulse that reminds of a distant past
<br/>
sweat that would short-circuit your board
<br/>
yet information travels, proceeds, evolves
<br/>
unpredictable behavior except by simulation
<br/>
the bodies stomp, they clap, they sing
<br/>
becoming another
<br/>
above? (where?) below? (where?)
<br/>
its there!
<br/>
no need to channel the earth
</p>
</section><section>
<h1 id='e'>e</h1>
<p>
i like computers
<br/>
why? they make more sense?
<br/>
maybe. complex but fabricated with heavy logic constraints…
<br/>
do you know how they work?
<br/>
thats the question, do they work or do they just exist…
<br/>
following a hardwired behavior, filtering out noise
<br/>
only a fixed amount of values in space and time
<br/>
and yet embedded in an apparently continuous world
<br/>
where to put them in the organic-inorganic spectrum
<br/>
extracting minerals, sculpting them…
<br/>
marks are left, one at a time
<br/>
… modulating the electromagnetic spectrum all around
<br/>
wait! why are you talking about electricity, semiconductors?
<br/>
do you want to develop further?
<br/>
id prefer to do a backwards somersault and take a non-violent path
</p>
</section><section>
<h1 id='x'>x</h1>
<p>
the idea is that you, as an individual, follow a simple set of rules
<br/>
these rules make me depend to some extent on other individuals
<br/>
your state of being based on my state of being
<br/>
we feel a pulse arriving, and we change
<br/>
how predictable you would think a system like that is?
<br/>
i wouldnt expect it to be completely chaotic…
<br/>
complexity… how can you think about it if it was not for it?
</p>
<p>
each component can be part of the whole without knowing about it
<br/>
“it” being the whole or the component?
<br/>
or any of them?
<br/>
then can only one of these pieces bring the whole system down?
<br/>
the state of that answer depends on the state of your purpose
<br/>
i guess an undirected, chaotic behavior will always be alright
<br/>
the order, the function, the control are the ones that you can break
<br/>
why would we want a math-machine that doesnt do the math right?
<br/>
theres the poetry!
<br/>
but what about the rigor? the experience of following constraints?
<br/>
you think that is important?
<br/>
maybe its part of my identity
<br/>
we dont have to do right math right
<br/>
less about me, more about the connections?
<br/>
in any case, it would be arbitrary and not too easy to get
</p>
</section><section>
<h1 id='d'>d</h1>
<p>
im having trouble putting the finger in the point
<br/>
is your self-protective awareness in action?
<br/>
maybe. who will want to question electronic computers.
<br/>
or productive computers, for that matter.
</p>
</section><section>
<h1 id='s'>s</h1>
<p>
i dont know whats a computer
<br/>
dont worry, neither do i
<br/>
but you see it…
<br/>
i see it and i marvel
<br/>
it is only a machine
<br/>
i see how arithmetic can be done mechanically
<br/>
no need to learn, no need to understand?
<br/>
isnt that amazing? doing something without knowing you are doing it
<br/>
small components contributing with small actions to a whole that no one knows?
<br/>
only the designer?
<br/>
and what if there is no one?
<br/>
what if they also emerged as a whole?
<br/>
and what kind of whole emerges from us?
<br/>
or where does that whole exist?
<br/>
if simple models acquire complexity so quickly…
<br/>
yes, say hi to the chaos of nature
</p>
</section><section>
<h1 id='p '>p </h1>
<p>
has lightning been captured twice, so far?
<br/>
fire, electricity, what are they?
<br/>
probably its the same here with computing
<br/>
one thing is to describe them working…
<br/>
visualizations, metaphors… leading to understanding what i cant see?
<br/>
but you dont have to, to use them
<br/>
how convenient!
<br/>
in many ways, knowing about computer architecture is completely useless
<br/>
digital circuit design as some kind of poetry?
<br/>
unless you are in one of the few companies, of course
<br/>
forcing the rocks until they cant hold it anymore?
<br/>
the magic doesnt disappear even if you know how to combine transistors
<br/>
magic? the mystery of computation?
<br/>
how can dead matter appear to be alive?
<br/>
and how can it replicate and build new versions of itself?
</p>
</section><section>
<h1 id='l'>l</h1>
<p>
a group of people walk in the space
<br/>
you see one person:
<br/>
if they rise you fall
<br/>
if they fall you rise
<br/>
respond immediately
<br/>
(as fast as your body can)
<br/>
they in turn see two,
<br/>
not including you
<br/>
they rise only if both fall
<br/>
otherwise they fall
<br/>
some others see them
<br/>
some others see you
</p>
<p>
every once and then
<br/>
a new change occurs in the beginning
<br/>
people rise
<br/>
people fall
<br/>
the wave propagates
<br/>
there is an end
<br/>
no more people rise
<br/>
no more people fall
<br/>
and there is a result
</p>
<p>
they take note
<br/>
someone in the audience remembers
<br/>
and then,
<br/>
after a pause
<br/>
the beginning feeds from the end
<br/>
a change again
<br/>
the machine is counting
</p>
<p>
originally published in adjacent, issue 5, as lengua partida (2019)
<br/>
CC BY-SA 4.0
</p>
<p><a href='https://itp.nyu.edu/adjacent/issue-5/the-rite-of-computing/' rel=external target=_blank>the rite of computing (la consagración de la computadora) - ADJACENT Issue 5 (web)</a></p>
<h2 id='llega(n) aquí'>llega(n) aquí</h2>
<p><a href='./non_e-computers.html'>{non e-computers}</a></p>
<p><a href='./textos.html'>{textos}</a></p>
</section>
</main>
<footer>
<p><a href='./index.html'>{🥭}</a></p>
<p>página actualizada en:
<time datetime='2021-05-21'>sejmana-1660, día 2</time>
(12021-05-21)
</p>
<a href='https://endefensadelsl.org/ppl_es.html' rel=external target=_blank>ppl: licencia de producción de pares</a></p>
</footer>
</body>
</html>

View File

@ -1,185 +0,0 @@
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' lang='es-MX,en'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta content='initial-scale=1.0, maximum-scale=1.0, user-scalable=yes' name='viewport'/>
<link rel='stylesheet' href='./static/estilo.css'>
<title>🥭 &mdash; tiempo</title>
</head>
<body>
<header>
<p><a href='./index.html'>{🥭}</a></p>
<h1>tiempo</h1>
</header>
<nav><ul><li><a href='#sejmanas...'>sejmanas...</a></li>
</ul></nav>
<main><section><p>
se(j)mana a se(j)mana, documentando tiempos “libres” y no...
</p>
<p>
van 1659 — estamos en 1660 — quedan ~2240
</p>
<p id="count" aria-hidden="true">
......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................<a href="#sjm-1655" title="sjm-1655">.</a><a href="#sjm-1656" title="sjm-1656">.</a><a href="#sjm-1657" title="sjm-1657">.</a><a href="#sjm-1658" title="sjm-1658">.</a><a href="#sjm-1659" title="sjm-1659">.</a><a href="#sjm-1660" title="sjm-1660">.</a>*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
</p>
<p><a href='./tiempo.xml'>[atom feed]</a></p>
</section><section>
<h1 id='sejmanas...'>sejmanas...</h1>
<h2 id='sjm-1660'>sjm-1660</h2>
<p>
de lo habitual, estuve:
</p>
<ul>
<li>impartiendo clases de código creativo</li>
<li>corriendo</li>
<li>cocinando comida vegana</li>
</ul>
<p>
además, estuve:
</p>
<ul>
<li>finalizando el generador de este sitio</li>
<li>planeando, preparando y presentando un proyecto de experiencia inmersiva en web.</li>
<li>algo conflictuado con las razones de hacer arte digital</li>
</ul>
<p>
leí (de nuevo), y recomiendo:
</p>
<p><a href='https://everestpipkin.medium.com/but-the-environmental-issues-with-cryptoart-1128ef72e6a3' rel=external target=_blank>the environmental issues with cryptoart will be solved soon, right? - everest pipkin</a></p>
<h2 id='sjm-1659 '>sjm-1659 </h2>
<p>
de lo habitual, estuve:
</p>
<ul>
<li>impartiendo clases de código creativo</li>
<li>corriendo</li>
<li>cocinando comida vegana</li>
<li>experimentando con hydra para escenario en vivo y a la distancia</li>
</ul>
<p>
además, estuve:
</p>
<ul>
<li>planeando y preparando una experiencia inmersiva en web.</li>
<li>agregando y manteniendo páginas del sitio</li>
<li>“moviendo” / difundiendo el proyecto de compudanzas, llegando a contemplar colocarlo en su propio sitio sin tantos cambios de estilo visual (?)</li>
<li>preparando talleres a impartir próximamente :)</li>
<li>creando el generador de sitio para esta web</li>
</ul>
<p>
leí y recomiendo:
</p>
<p><a href='https://lipu.dgold.eu/original-sin' rel=external target=_blank>the original sin of free software - daniel goldsmith</a></p>
<p><a href='https://www.boringcactus.com/2021/02/11/not-any-purpose.html' rel=external target=_blank>not "any purpose" - boringcactus</a></p>
<p><a href='https://www.baldurbjarnason.com/2021/the-oss-bubble-and-the-blogging-bubble/' rel=external target=_blank>the open-source software bubble that is and the blogging bubble that was - baldur bjarnason</a></p>
<h2 id='sjm-1658'>sjm-1658</h2>
<p>
de lo habitual, estuve:
</p>
<ul>
<li>impartiendo clases de código creativo</li>
<li>corriendo</li>
<li>cocinando comida vegana</li>
<li>experimentando con hydra para escenario en vivo y a la distancia</li>
</ul>
<p>
además, estuve:
</p>
<ul>
<li>siguiendo el aprendizaje con uxn, desarrollando darena, juego de rocas en el desierto.</li>
<li>participando en el “reto plancha”, llegando a 5 minutos!</li>
<li>visitando un gran parque cercano, y considerando ser “guardabosques” (?)</li>
<li>platicando, planeando y preparando una experiencia inmersiva en web.</li>
<li>viendo el documental seaspiracy, confirmando y reforzando el pacto vegano</li>
<li>agregando páginas al sitio</li>
<li>creando imágenes generativas a partir de video, con fines comerciales.</li>
</ul>
<p>
leí y recomiendo
</p>
<p><a href='https://www.resilience.org/stories/2019-05-10/loving-a-vanishing-world/' rel=external target=_blank>loving a vanishing world - emily johnston</a></p>
<p><a href='https://jembendell.com/2021/05/09/jem-bendell-presents-to-extinction-rebellion-on-honesty-about-disruptions-ahead/' rel=external target=_blank>jem bendell presents to extinction rebellion on honesty about disruptions ahead</a></p>
<p><a href='https://ar.al/2021/05/10/hell-site/' rel=external target=_blank>hell site - aral balkan</a></p>
<h2 id='sjm-1657'>sjm-1657</h2>
<p>
de lo habitual, estuve:
</p>
<ul>
<li>impartiendo clases de código creativo</li>
<li>corriendo</li>
<li>cocinando comida vegana</li>
<li>experimentando con hydra para escenario en vivo y a la distancia</li>
</ul>
<p>
además, estuve:
</p>
<ul>
<li>aprendiendo a programar con uxn, desarrollando entre otras pequeñas cosas, una calculadora rpn (reverse polish notation) de 8 bits, y un prototipo de juego de rocas (¿y computadoras?) en el desierto.</li>
<li>aplicando a convocatorias relacionadas con compudanzas y con experiencias inmersivas en web.</li>
<li>diseñando y agregando páginas a este sitio web.</li>
<li>creando imágenes generativas a partir de video, con fines comerciales.</li>
<li>participando en el “reto plancha”</li>
<li>viendo nausicaä of the valley of the wind, disfrutándola mucho</li>
</ul>
<h2 id='sjm-1656'>sjm-1656</h2>
<p>
de lo habitual, estuve:
</p>
<ul>
<li>impartiendo clases de código creativo</li>
<li>corriendo</li>
<li>cocinando comida vegana</li>
<li>experimentando con hydra para escenario en vivo y a la distancia</li>
</ul>
<p>
además, estuve:
</p>
<ul>
<li>decidiendo mantener este sitio en neocities en vez de hospedarlo por mi cuenta</li>
<li>materializando planes de ahorro</li>
<li>recordando salir para sentir el viento en el exterior</li>
<li>evaluando qué es lo que sí quiero hacer, partiendo de lo efímero / finito de la vida</li>
<li>proyecteando una experiencia inmersiva web</li>
<li>creando imágenes generativas a partir de video</li>
<li>evaluando crear un sitio web de compudanzas, pero decidiendo dejar/crear los materiales en este sitio.</li>
<li>participando en el “reto plancha”</li>
</ul>
<h2 id='sjm-1655'>sjm-1655</h2>
<p>
de lo habitual, estuve:
</p>
<ul>
<li>impartiendo clases de código creativo</li>
<li>corriendo</li>
<li>cocinando comida vegana</li>
<li>embotellando y preparando kombucha</li>
</ul>
<p>
además, estuve:
</p>
<ul>
<li>experimentando de nuevo con mumble para transmisión de voz con fines de streaming</li>
<li>continuando la exploración con hydra para visuales + movimiento en vivo: sin atascar lo primero para dejar ver lo segundo</li>
<li>¡trayendo este sitio web a la vida!</li>
<li>aplicando para impartir en conjunto un taller de escena en red</li>
<li>participando en el “reto plancha”</li>
<li>conversando emprendedurismo</li>
<li>planeando ahorros</li>
<li>cocinando pan en colaboración con robot eléctrico panero</li>
</ul>
<h2 id='llega(n) aquí'>llega(n) aquí</h2>
<p><a href='./acerca.html'>{acerca}</a></p>
</section>
</main>
<footer>
<p><a href='./index.html'>{🥭}</a></p>
<p>página actualizada en:
<time datetime='2021-05-21'>sejmana-1660, día 2</time>
(12021-05-21)
</p>
<a href='https://endefensadelsl.org/ppl_es.html' rel=external target=_blank>ppl: licencia de producción de pares</a></p>
</footer>
</body>
</html>

View File

@ -1,61 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns='http://www.w3.org/2005/Atom'>
<id>https://quesomango.neocities.org/tiempo.html</id>
<title>🥭 - tiempo</title>
<author><name>queso mango</name></author>
<generator>a mano</generator>
<updated>2021-05-20T12:00:00Z</updated>
<link href='https://quesomango.neocities.org/tiempo.xml' rel='self'/>
<link href='https://quesomango.neocities.org/tiempo.html' rel='alternate'/>
<entry>
<id>https://quesomango.neocities.org/tiempo.html#sjm-1659</id>
<title>sejmana-1659</title>
<updated>2021-05-20T12:00:00Z</updated>
<link href='https://quesomango.neocities.org/tiempo.html#sjm-1659' rel='alternate'/>
<summary>
clases de código creativo, correr, cocinar, hydra, inmersión web, páginas del sitio, generador del sitio, talleres</summary>
</entry>
<entry>
<id>https://quesomango.neocities.org/tiempo.html#sjm-1658</id>
<title>sejmana-1658</title>
<updated>2021-05-12T12:00:00Z</updated>
<link href='https://quesomango.neocities.org/tiempo.html#sjm-1658' rel='alternate'/>
<summary>
clases de código creativo, correr, cocinar, hydra, uxn y darena, reto plancha, parque/bosque, seaspiracy, páginas del sitio
</summary>
</entry>
<entry>
<id>https://quesomango.neocities.org/tiempo.html#sjm-1657</id>
<title>sejmana-1657</title>
<updated>2021-05-06T12:00:00Z</updated>
<link href='https://quesomango.neocities.org/tiempo.html#sjm-1657' rel='alternate'/>
<summary>
clases de código creativo, correr, cocinar, hydra, uxn: calculadora rpn y juego de rocas y arena, convocatorias, páginas de queso mango, imágenes generativas, reto plancha
</summary>
</entry>
<entry>
<id>https://quesomango.neocities.org/tiempo.html#sjm-1656</id>
<title>sejmana-1656</title>
<updated>2021-04-27T12:00:00Z</updated>
<link href='https://quesomango.neocities.org/tiempo.html#sjm-1656' rel='alternate'/>
<summary>
clases de código creativo, correr, cocinar, hydra, quedarse en neocities, ahorros, viento, decisiones, imágenes generativas, proyecto inmersivo web, compudanzas
</summary>
</entry>
<entry>
<id>https://quesomango.neocities.org/tiempo.html#sjm-1655</id>
<title>sejmana-1655</title>
<updated>2021-04-21T12:00:00Z</updated>
<link href='https://quesomango.neocities.org/tiempo.html#sjm-1655' rel='alternate'/>
<summary>
clases de código creativo, correr, cocinar, kombucha, mumble, hydra, sitio web, convocatoria taller, reto plancha, entrepreneurship, ahorros, pan de robot
</summary>
</entry>
</feed>

View File

@ -1,30 +0,0 @@
#
# nick = sejo
# url = https://quesomango.neocities.org/tw.txt
#
2021-05-21T18:00:00-05:00 adding some content from "the archive": more compudanzas, textos, etc
2021-05-20T18:00:00-05:00 about to finish the "migration" of my site to my awk-based static site generator...
2021-05-17T21:30:00-05:00 cleaned up the main page, inviting for more exploration (?)
2021-05-17T21:00:00-05:00 made myself a small template for html-based slideshows, {quepresente}
2021-05-14T19:00:00-05:00 decided to create some illustrations/textures for the compudanzas page
2021-05-14T17:00:00-05:00 feeling a little bit #fried. taking it easy today
2021-05-12T20:00:00-05:00 after some conversation about the coloring computers, i created the page for them :)
2021-05-11T20:00:00-05:00 got inspired and created the danzasistemas-tag page!
2021-05-10T22:00:00-05:00 #watched seaspiracy
2021-05-10T16:00:00-05:00 created the darena page :)
2021-05-07T16:00:00-05:00 darena, a virtual bunch-of-rocks machine running in uxn, now seems to be ready to be operated
2021-05-04T18:00:00-05:00 the rocks of "darena" (new name?) are using too much of my bandwidth. good thing i finished my tasks already.
2021-05-02T21:00:00-05:00 set up a configuration to use my electronic computer(s) sitting in the floor: one for my teaching and other for my "day to day"
2021-05-01T22:00:00-05:00 #watched nausicaä of the valley of the wind for the first time. i loved it! i feel it's my favorite movie now - would have to rewatch :)
2021-05-01T18:00:00-05:00 i can confirm: writing html by hand is not bad at all
2021-04-30T14:00:00-05:00 a lot of fun to figure out how to program with uxn!
2021-04-28T17:00:00-05:00 looking for a "works with lynx browser" 88x31 button…
2021-04-27T19:00:00-05:00 adding my imagemagick notes to the site...
2021-04-27T18:00:00-05:00 it was fun to re-find the logos i've made!
2021-04-27T13:00:00-05:00 i was about to fall in the trap of creating a "thematic" website instead of letting those materials coexist with the others here
2021-04-23T20:00:00-05:00 yes, more time outside, feeling the cold wind
2021-04-22T13:00:00-05:00 given that my time on earth is finite, i'll keep this website in neocities and stop thinking about hosting it by myself
2021-04-19T10:00:00-05:00 setting up the neocities CLI tooling. remember to 'gem install rake' beforehand.
2021-04-18T10:00:00-05:00 #kombucha day! batch A, 8lt going in!
2021-04-17T22:00:00-05:00 styling the 'compudanzas' page...
2021-04-16T20:00:00-05:00 just realized i can "twtxt" by hand (!)