initial migration
|
@ -0,0 +1,341 @@
|
||||||
|
# gemtext2html
|
||||||
|
# convierte un archivo en gemtext a html de acuerdo a la spec
|
||||||
|
# excepción: enlaces a imagen (jpg, png, gif) se vuelven <img>
|
||||||
|
# TODO actualizar descripción
|
||||||
|
# TODO h2 en nav?
|
||||||
|
#
|
||||||
|
# importante: solo un {wikilink} (con o sin espacios) por línea
|
||||||
|
#
|
||||||
|
# modo de uso:
|
||||||
|
# awk -f gemtext2html.awk archivo.gmo > archivo.html
|
||||||
|
#
|
||||||
|
|
||||||
|
BEGIN{
|
||||||
|
sitio = "compudanzas"
|
||||||
|
# para poder abrir y cerrar <ul>, <pre>, <p>:
|
||||||
|
modo_lista = 0
|
||||||
|
modo_pre = 0
|
||||||
|
modo_parrafo = 0
|
||||||
|
modo_galeria = 0
|
||||||
|
|
||||||
|
en_section = 1 #empezamos abriendo una <section> sin h1
|
||||||
|
|
||||||
|
navcount = 0
|
||||||
|
|
||||||
|
bloque = 0 # para no agregar <br/> después de headers y blockquotes
|
||||||
|
|
||||||
|
print "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>"
|
||||||
|
print "<html xmlns='http://www.w3.org/1999/xhtml' lang='es-MX,en'>"
|
||||||
|
print "<head>"
|
||||||
|
print "<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />"
|
||||||
|
print "<meta content='initial-scale=1.0, maximum-scale=1.0, user-scalable=yes' name='viewport'/>"
|
||||||
|
# print "<meta http-equiv='onion-location' content='http://chhhqibec5pvmyxmdobfdx33xhhtbla5lvrs2fgn7knh7kaaz4kgylad.onion.onion' />"
|
||||||
|
print "<link rel='stylesheet' href='./static/estilo.css'>"
|
||||||
|
# print " <link rel='icon' href='./img/icon_bola.gif' type='image/gif' sizes='16x16'> "
|
||||||
|
|
||||||
|
contenido = "<main><section>"
|
||||||
|
nav = "<nav><ul>"
|
||||||
|
}
|
||||||
|
|
||||||
|
function appendContenido( t ){
|
||||||
|
contenido = contenido t "\n"
|
||||||
|
}
|
||||||
|
function appendNav( t ){
|
||||||
|
nav = nav t "\n"
|
||||||
|
navcount++
|
||||||
|
}
|
||||||
|
|
||||||
|
function wikiLink( t ){
|
||||||
|
i = match( t, /{.+}/)
|
||||||
|
if ( i ){
|
||||||
|
ifinal = index(t, "}") # índice del } final
|
||||||
|
|
||||||
|
prev = substr(t, 1, i-1) # string previa al link
|
||||||
|
link = substr(t, i, ifinal-i+1) # {link}
|
||||||
|
nombre = substr(t, i+1, ifinal-i-1) # link
|
||||||
|
nombre = nombre2Link( nombre, "_" )
|
||||||
|
|
||||||
|
post = substr(t, ifinal+1) # string posterior
|
||||||
|
|
||||||
|
return prev "<a href='./" nombre ".html'>" link "</a>" post
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
return t
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function nombre2Link( t, r ){ # convierte un nombre con espacios, a uno con r (e.g. "_"
|
||||||
|
gsub(" ",r,t);
|
||||||
|
return t
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
NR == 1{
|
||||||
|
titulo = $0
|
||||||
|
sub("#[[:blank:]]+","",titulo) #prefijo
|
||||||
|
print "<title>" sitio " — " titulo "</title>"
|
||||||
|
print "</head>"
|
||||||
|
print "<body>"
|
||||||
|
print "<header>"
|
||||||
|
# print "<p><a href='./index.html'>{" sitio "}</a></p>"
|
||||||
|
print "<p><a href='./index.html' title='compudanzas'>{<img src='./img/icon_bola.gif' style='margin:0' alt='icono de compudanzas'/>}</a></p>"
|
||||||
|
print "<h1>"titulo"</h1>"
|
||||||
|
print "</header>"
|
||||||
|
|
||||||
|
bloque = 1
|
||||||
|
|
||||||
|
next # lee la siguiente línea
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/^\+ /{ # include literal
|
||||||
|
sub(/^+ /,"",$0) # elimina el +
|
||||||
|
appendContenido( $0 )
|
||||||
|
next
|
||||||
|
}
|
||||||
|
|
||||||
|
/^&/{ # include literal gemtext
|
||||||
|
next
|
||||||
|
}
|
||||||
|
|
||||||
|
/^[[:blank:]]*$/ { # línea vacía
|
||||||
|
if( !modo_pre ) {
|
||||||
|
if( modo_lista ){ # cierra la lista
|
||||||
|
modo_lista = 0
|
||||||
|
appendContenido( "</ul>" )
|
||||||
|
}
|
||||||
|
else if( modo_parrafo ){ # cierra el párrafo
|
||||||
|
modo_parrafo = 0
|
||||||
|
appendContenido( "</p>" )
|
||||||
|
}
|
||||||
|
else if( modo_galeria ){
|
||||||
|
modo_galeria = 0
|
||||||
|
appendContenido( "</gallery>" )
|
||||||
|
}
|
||||||
|
# else
|
||||||
|
# appendContenido( "<br/>" )
|
||||||
|
if( bloque ) # si lo previo fue header o blockquote
|
||||||
|
bloque = 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
appendContenido( $0 )
|
||||||
|
next
|
||||||
|
}
|
||||||
|
|
||||||
|
/^=>/{ # link
|
||||||
|
if(!modo_pre){
|
||||||
|
if( modo_lista ){ # cierra la lista
|
||||||
|
modo_lista = 0
|
||||||
|
appendContenido( "</ul>" )
|
||||||
|
}
|
||||||
|
else if( modo_parrafo ){ # cierra el párrafo
|
||||||
|
modo_parrafo = 0
|
||||||
|
appendContenido( "</p>" )
|
||||||
|
}
|
||||||
|
|
||||||
|
bloque = 1 #empieza bloque porque es <p>
|
||||||
|
|
||||||
|
# borra flecha del inicio
|
||||||
|
sub("^=>","",$0)
|
||||||
|
# ahora $1 es el path, $2 a $NF el texto
|
||||||
|
|
||||||
|
# concatena todo el texto
|
||||||
|
texto = $2
|
||||||
|
for(i=3; i<=NF; i++){
|
||||||
|
texto = texto" "$i
|
||||||
|
}
|
||||||
|
|
||||||
|
if( match($1, /^\.\//)) { # si es link local
|
||||||
|
# si el path es imagen
|
||||||
|
if( match($1, /(png|jpg|gif)$/) ){
|
||||||
|
# crea imagen <img>
|
||||||
|
if( !modo_galeria ){
|
||||||
|
appendContenido("<gallery>")
|
||||||
|
modo_galeria = 1
|
||||||
|
}
|
||||||
|
appendContenido("<img src='"$1"' alt='"texto"' loading='lazy'/>")
|
||||||
|
}
|
||||||
|
# si el path no es imagen y es .gmi
|
||||||
|
else if( match($1, /gmi$/) ){
|
||||||
|
# convierte enlace de .gmi a .html !
|
||||||
|
sub(".gmi$",".html",$1)
|
||||||
|
|
||||||
|
# crea link <a>
|
||||||
|
appendContenido("<p><a href='"$1"'>"texto"</a></p>")
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
appendContenido("<p><a href='"$1"'>"texto"</a></p>")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{ # link externo
|
||||||
|
appendContenido("<p><a href='"$1"' rel=external target=_blank>"texto"</a></p>")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
appendContenido( $0 )
|
||||||
|
}
|
||||||
|
next
|
||||||
|
}
|
||||||
|
|
||||||
|
/^* /{ # lista
|
||||||
|
if(!modo_pre){
|
||||||
|
if(!modo_lista){ # inicia la lista
|
||||||
|
if(modo_parrafo){
|
||||||
|
modo_parrafo = 0
|
||||||
|
appendContenido( "</p>" )
|
||||||
|
}
|
||||||
|
modo_lista = 1
|
||||||
|
appendContenido( "<ul>" )
|
||||||
|
}
|
||||||
|
sub("*[[:blank:]]+","<li>",$0)
|
||||||
|
sub("$","</li>",$0)
|
||||||
|
appendContenido( wikiLink($0) )
|
||||||
|
}
|
||||||
|
else
|
||||||
|
appendContenido( $0 )
|
||||||
|
next
|
||||||
|
}
|
||||||
|
|
||||||
|
/^```/{ # preformatted
|
||||||
|
if(modo_pre){
|
||||||
|
# cierra preformatted
|
||||||
|
modo_pre = 0
|
||||||
|
appendContenido( "</pre>" )
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
if( modo_lista ){ # cierra la lista
|
||||||
|
modo_lista = 0
|
||||||
|
appendContenido( "</ul>" )
|
||||||
|
}
|
||||||
|
else if( modo_parrafo ){ # cierra el párrafo
|
||||||
|
modo_parrafo = 0
|
||||||
|
appendContenido( "</p>" )
|
||||||
|
}
|
||||||
|
|
||||||
|
# abre preformatted
|
||||||
|
modo_pre = 1
|
||||||
|
appendContenido( "<pre>" )
|
||||||
|
}
|
||||||
|
next
|
||||||
|
}
|
||||||
|
|
||||||
|
/^> /{ # blockquote
|
||||||
|
if(!modo_pre){
|
||||||
|
sub(">[[:blank:]]+","<blockquote>",$0)
|
||||||
|
sub("$","</blockquote>",$0)
|
||||||
|
bloque = 1
|
||||||
|
}
|
||||||
|
appendContenido( $0 )
|
||||||
|
next
|
||||||
|
}
|
||||||
|
|
||||||
|
/^# /{ # h1
|
||||||
|
if(!modo_pre){
|
||||||
|
sub("#[[:blank:]]+","",$0) #prefijo
|
||||||
|
sub("$","",$0) #sufijo
|
||||||
|
bloque = 1
|
||||||
|
|
||||||
|
if( !en_section ){ # si no se ha iniciado una sección antes
|
||||||
|
appendContenido( "<section>" )
|
||||||
|
en_section = 1
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
appendContenido( "</section><section>" )
|
||||||
|
}
|
||||||
|
|
||||||
|
# crea header con id
|
||||||
|
appendContenido( "<h1 id='"$0"'>"$0"</h1>" )
|
||||||
|
|
||||||
|
# agrega header a navegación
|
||||||
|
appendNav( "<li><a href='#"$0"'>"$0"</a></li>" )
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
appendContenido( $0 )
|
||||||
|
}
|
||||||
|
next
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/^## /{ # h2
|
||||||
|
if(!modo_pre){
|
||||||
|
sub("##[[:blank:]]+","",$0)
|
||||||
|
sub("$","",$0)
|
||||||
|
# crea header con id
|
||||||
|
appendContenido( "<h2 id='"$0"'>"$0"</h2>" )
|
||||||
|
bloque = 1
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
appendContenido( $0 )
|
||||||
|
}
|
||||||
|
next
|
||||||
|
}
|
||||||
|
|
||||||
|
/^### /{ # h3
|
||||||
|
if(!modo_pre){
|
||||||
|
sub("###[[:blank:]]+","",$0)
|
||||||
|
sub("$","",$0)
|
||||||
|
appendContenido( "<h3 id='"$0"'>"$0"</h3>" )
|
||||||
|
bloque = 1
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
appendContenido( $0 )
|
||||||
|
}
|
||||||
|
next
|
||||||
|
}
|
||||||
|
|
||||||
|
#$0 !~ /^(=>|```|#{1,3} |* |\+|>|[[:blank:]]*$)/{ # líneas de texto (no "especiales")
|
||||||
|
{ # cualquier otra línea de texto
|
||||||
|
if(!modo_pre){
|
||||||
|
if(!modo_parrafo){
|
||||||
|
modo_parrafo = 1
|
||||||
|
appendContenido( "<p>" )
|
||||||
|
}
|
||||||
|
else # nueva línea en el mismo párrafo
|
||||||
|
appendContenido( "<br/>" )
|
||||||
|
|
||||||
|
# busca y convierte wikiLink (máx uno por línea)
|
||||||
|
appendContenido( wikiLink($0) )
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
gsub("<","\\<",$0)
|
||||||
|
gsub(">","\\>",$0)
|
||||||
|
appendContenido( $0 )
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
END{
|
||||||
|
# imprime y cierra nav
|
||||||
|
if(navcount){
|
||||||
|
print nav
|
||||||
|
print "</ul></nav>"
|
||||||
|
}
|
||||||
|
|
||||||
|
# imprime contenido
|
||||||
|
print contenido
|
||||||
|
# cierra tags que pudieron haber quedado abiertas
|
||||||
|
if(modo_pre)
|
||||||
|
print "</pre>"
|
||||||
|
else if(modo_parrafo)
|
||||||
|
print "</p>"
|
||||||
|
else if(modo_lista)
|
||||||
|
print "</ul>"
|
||||||
|
|
||||||
|
# finaliza...
|
||||||
|
print "</section>"
|
||||||
|
print "</main>"
|
||||||
|
print "<footer>"
|
||||||
|
# print "<p><a href='./index.html'>{" sitio "}</a></p>"
|
||||||
|
print "<p>most recent update: "
|
||||||
|
print "<time datetime='"fecha"'>1" fecha"</time>"
|
||||||
|
print "</p>"
|
||||||
|
# fecha = system( "date -r " FILENAME " --rfc-3339=date" )
|
||||||
|
# print "</p>"
|
||||||
|
#
|
||||||
|
print "<p><a href='./index.html' title='compudanzas'>{compudanzas}</a> — "
|
||||||
|
print "<a href='./license.html'>{license}</a></p>"
|
||||||
|
print "</footer>"
|
||||||
|
print "</body>"
|
||||||
|
print "</html>"
|
||||||
|
}
|
|
@ -0,0 +1,68 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
mkdir -p web/static
|
||||||
|
mkdir -p gem
|
||||||
|
|
||||||
|
|
||||||
|
fecha=$(date +"%s")
|
||||||
|
|
||||||
|
echo "empezando conversión, estamos en ${fecha}"
|
||||||
|
|
||||||
|
echo "revisando y copiando imágenes..."
|
||||||
|
for f in $(find src/ -regextype awk -regex ".*(jpg|png|gif)")
|
||||||
|
do
|
||||||
|
path="web/${f#src/}" # quita el prefijo de src/ y agrega web/
|
||||||
|
gempath="gem/${f#src/}" # quita el prefijo de src/ y agrega gem/
|
||||||
|
mkdir -p $(dirname $path) # crea directorio si no existe
|
||||||
|
mkdir -p $(dirname $gempath) # crea directorio si no existe
|
||||||
|
cp -vu $f $path
|
||||||
|
cp -vu $f $gempath
|
||||||
|
done
|
||||||
|
|
||||||
|
#cp src/tw.txt web/
|
||||||
|
#cp src/tw.txt gem/
|
||||||
|
|
||||||
|
#cp src/llave_sejo.asc web/
|
||||||
|
#cp src/llave_sejo.asc gem/
|
||||||
|
|
||||||
|
cp src/estilo.css web/static/
|
||||||
|
|
||||||
|
# limpia
|
||||||
|
echo "limpiando archivos previos..."
|
||||||
|
|
||||||
|
rm web/*html
|
||||||
|
rm gem/*gmi
|
||||||
|
|
||||||
|
# crea índice
|
||||||
|
echo "generando índice..."
|
||||||
|
rm src/pages.gmo
|
||||||
|
ls -t src/*gmo | awk -f genindice.awk > src/pages.gmo
|
||||||
|
|
||||||
|
echo "revisando y convirtiendo archivimos gmo a html y gmi..."
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
i=0
|
||||||
|
# convierte y actualiza archivos gmi a html
|
||||||
|
for f in $(find src/ -iname *.gmo)
|
||||||
|
do
|
||||||
|
|
||||||
|
path=${f#src/} # quita el prefijo de "src/"
|
||||||
|
htmlpath="web/${path%gmo}html" # agrega "web/" y cambia el sufijo
|
||||||
|
gempath="gem/${path%gmo}gmi" # agrega "gem/"
|
||||||
|
|
||||||
|
fecha=$(date -r $f --rfc-3339=date)
|
||||||
|
|
||||||
|
|
||||||
|
# echo "${f}"
|
||||||
|
# echo "${f} -> ${htmlpath}"
|
||||||
|
# echo "${f} -> ${gempath}"
|
||||||
|
# haz la conversión
|
||||||
|
awk -v fecha=$fecha -f gemtext2html.awk $f > $htmlpath
|
||||||
|
awk -v fecha=$fecha -f gmo2gmi.awk $f > $gempath
|
||||||
|
|
||||||
|
(( i++ ))
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "convertidas ${i} páginas!"
|
|
@ -0,0 +1,23 @@
|
||||||
|
# ls src/*gmo | awk -f genindice.awk
|
||||||
|
|
||||||
|
function link2nombre( t ){ # convierte un nombre con "_" a uno con espacios
|
||||||
|
gsub("_"," ",t);
|
||||||
|
sub(".gmo", "", t)
|
||||||
|
return t
|
||||||
|
}
|
||||||
|
|
||||||
|
BEGIN{
|
||||||
|
print "# index of pages"
|
||||||
|
print
|
||||||
|
print "last modified, above:"
|
||||||
|
print
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
sub("src/","",$0)
|
||||||
|
nombre = link2nombre($0) # convierte _ a espacios
|
||||||
|
sub(".gmo",".gmi",$0)
|
||||||
|
|
||||||
|
if(nombre!="index") # no imprimas el índice
|
||||||
|
print "=> ./"$0" {"nombre"}"
|
||||||
|
}
|
|
@ -0,0 +1,43 @@
|
||||||
|
function nombre2Link( t, r ){ # convierte un nombre con espacios, a uno con r (e.g. "_"
|
||||||
|
gsub(" ",r,t);
|
||||||
|
return t
|
||||||
|
}
|
||||||
|
|
||||||
|
/^+ /{ # literal html
|
||||||
|
next # salta la línea
|
||||||
|
}
|
||||||
|
|
||||||
|
/^& /{ # literal gemtext
|
||||||
|
sub(/^& /,"",$0)
|
||||||
|
print $0
|
||||||
|
next
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
# imprime líneas normamlmente
|
||||||
|
|
||||||
|
{
|
||||||
|
print $0
|
||||||
|
}
|
||||||
|
|
||||||
|
# si tienen sintaxis de wikilink, y no son líneas de enlace, agrega el link
|
||||||
|
# (el % es por las líneas de uxn jaja)
|
||||||
|
/^[^=%].+{.+}/{
|
||||||
|
i = match( $0, /{.+}/)
|
||||||
|
ifinal = index($0, "}") # índice del } final
|
||||||
|
|
||||||
|
link = substr($0, i, ifinal-i+1) # {link}
|
||||||
|
nombre = substr($0, i+1, ifinal-i-1) # link
|
||||||
|
nombre = nombre2Link( nombre, "_" )
|
||||||
|
|
||||||
|
print "=> ./" nombre ".gmi " link
|
||||||
|
}
|
||||||
|
|
||||||
|
# agrega footer
|
||||||
|
|
||||||
|
END{
|
||||||
|
print ""
|
||||||
|
print "most recent update on: 1" fecha
|
||||||
|
print "=> ./index.gmi {compudanzas}"
|
||||||
|
print "=> ./license.gmi {license}"
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
# about
|
||||||
|
|
||||||
|
compudanzas is a research project aimed at the development of alternative modes of computation.
|
||||||
|
|
||||||
|
# mission
|
||||||
|
|
||||||
|
we enlarge to a human-scale and slow down to a human-speed the processes that give rise to what is understood as computing.
|
||||||
|
|
||||||
|
through our experiments we ask: what happens when computers are dances, rituals, games, instead of closed electronic boxes with a high environmental and social cost?
|
||||||
|
|
||||||
|
to what extent can we reappropriate these logics to inspire other ways of being in the world?
|
||||||
|
|
||||||
|
what can be the role of non-electronic, very slow, human-scale, and seemingly useless computers, in a world that seems to be in {collapse}?
|
||||||
|
|
||||||
|
are they alternative and empowering didactic materials? performances? puzzles? passtimes? magic tricks? marvelous pursuits?
|
||||||
|
|
||||||
|
# meta
|
||||||
|
|
||||||
|
read our updates in the {log}
|
||||||
|
|
||||||
|
visit the index of {pages} in the site
|
||||||
|
|
||||||
|
=> ./contact.gmi {contact}
|
|
@ -0,0 +1,54 @@
|
||||||
|
# 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 {las danzas}.
|
||||||
|
|
||||||
|
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í
|
||||||
|
=> ./las_danzas.gmi {las danzas}
|
|
@ -0,0 +1,44 @@
|
||||||
|
# collapse
|
||||||
|
|
||||||
|
how to live life when ecological and social collapse are coming in the short term?
|
||||||
|
|
||||||
|
# textos
|
||||||
|
|
||||||
|
que escribo para ir procesando, aprendiendo y compartiendo:
|
||||||
|
|
||||||
|
=> ./después_ahora.gmi {después ahora}
|
||||||
|
|
||||||
|
|
||||||
|
# notes
|
||||||
|
|
||||||
|
## deep adaptation
|
||||||
|
|
||||||
|
deep adaptation agenda, the 4 Rs:
|
||||||
|
|
||||||
|
* resilience: how do we keep what we really want to keep?
|
||||||
|
* relinquishment: what do we need to let go of in order to not make matters worse?
|
||||||
|
* restoration: what can we bring back to help us with the coming difficulties and tragedies?
|
||||||
|
* reconciliation: with what and whom can we make peace with as we face our mutual mortality?
|
||||||
|
|
||||||
|
=> https://jembendell.com/2019/05/15/deep-adaptation-versions/ versions of the deep adaptation paper - jem bendell
|
||||||
|
|
||||||
|
## how to live like the world is ending
|
||||||
|
|
||||||
|
* act like we’re about to die.
|
||||||
|
* act like we might not die right away.
|
||||||
|
* act like we might have a chance to stop this.
|
||||||
|
* act like everything will be okay.
|
||||||
|
|
||||||
|
=> http://birdsbeforethestorm.net/2019/12/how-to-live-like-the-world-is-ending/ how to live the world is ending - margaret killjoy
|
||||||
|
|
||||||
|
## more references
|
||||||
|
|
||||||
|
=> https://theanarchistlibrary.org/library/margaret-killjoy-take-what-you-need-and-compost-the-rest-an-introduction-to-post-civilized-theo take what you need and compost the rest: an introduction to post-civilized theory - margaret killjoy
|
||||||
|
=> https://www.resilience.org/stories/2019-05-10/loving-a-vanishing-world/ loving a vanishing world - emily johnston
|
||||||
|
=> https://deepgreenresistance.org/ deep green resistance
|
||||||
|
=> https://stopfossilfuels.org/ stop fossil fuels
|
||||||
|
=> http://viznut.fi/texts-en/permacomputing.html permacomputing | viznut
|
||||||
|
|
||||||
|
|
||||||
|
## incoming links
|
||||||
|
=> ./about.gmi {about}
|
|
@ -0,0 +1,48 @@
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
# 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 in the shape of no(r)pales
|
||||||
|
|
||||||
|
=> 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
|
||||||
|
|
||||||
|
|
||||||
|
## incoming links
|
||||||
|
=> ./talks_and_workshops.gmi {talks and workshops}
|
|
@ -0,0 +1,101 @@
|
||||||
|
# compuertas lógicas
|
||||||
|
|
||||||
|
las bases de los circuitos digitales.
|
||||||
|
|
||||||
|
estos incluyen, claro está, a las {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.gmi {danzas compuertas}
|
||||||
|
=> ./logiteca.gmi {logiteca}
|
|
@ -0,0 +1,7 @@
|
||||||
|
# contact
|
||||||
|
|
||||||
|
e-mail: sejo at posteo dot net
|
||||||
|
=> ./llave_sejo.asc [pgp key]
|
||||||
|
|
||||||
|
fediverse:
|
||||||
|
=> https://merveilles.town/@chirrolafupa chirrolafupa in merveilles.town
|
|
@ -0,0 +1,85 @@
|
||||||
|
# d-turing
|
||||||
|
|
||||||
|
bailando los inicios, una máquina de turing
|
||||||
|
|
||||||
|
parte de las {las danzas}
|
||||||
|
|
||||||
|
# componentes
|
||||||
|
|
||||||
|
## participantes
|
||||||
|
|
||||||
|
la siguiente descripción depende de tres personas / roles:
|
||||||
|
|
||||||
|
* cabeza en cinta
|
||||||
|
* semáforo de estado
|
||||||
|
* instructora
|
||||||
|
|
||||||
|
la dinámica podría adaptarse fácilmente para dos o una persona(s), pero es más divertido bailarla en grupo.
|
||||||
|
|
||||||
|
## materiales
|
||||||
|
|
||||||
|
como materiales tangibles se requiere lo siguiente:
|
||||||
|
|
||||||
|
* un conjunto de objetos flexibles para crear una fila con ellos: por ejemplo cordones, calcetines, bloques de madera...
|
||||||
|
* una tabla de reglas en papel o arcilla; al menos en lo que se memoriza
|
||||||
|
|
||||||
|
## elementos
|
||||||
|
|
||||||
|
una máquina en específico consiste de los siguientes elementos:
|
||||||
|
|
||||||
|
* un conjunto finito de símbolos posibles a colocar en la cinta, con un conjunto de movimientos que correspondan uno-a-uno.
|
||||||
|
* una cinta con dichos símbolos, acomodados en una configuración inicial según sea el caso.
|
||||||
|
* un conjunto finito de estados posibles, cada uno con un movimiento correspondiente.
|
||||||
|
* un estado inicial.
|
||||||
|
* un par de movimientos que indiquen dirección en un eje; por ejemplo izquierda y derecha.
|
||||||
|
* una tabla de reglas, que responde lo siguiente: dado un símbolo encontrado en la cinta, y un estado actual: ¿por cuál símbolo hay que reemplazarlo, a qué dirección hay que mover la cabeza, y cuál ha de ser el nuevo estado?
|
||||||
|
|
||||||
|
# guía
|
||||||
|
|
||||||
|
## preparación
|
||||||
|
|
||||||
|
es necesario que la cabeza en cinta conozca los símbolos posibles en la cinta, y sus movimientos correspondientes. además, ha de conocer los movimientos de dirección.
|
||||||
|
|
||||||
|
el semáforo ha de conocer los estados posibles y sus movimientos correspondientes.
|
||||||
|
|
||||||
|
la instructora tiene que conocer todos los movimientos nombrados arriba.
|
||||||
|
|
||||||
|
## inicialización
|
||||||
|
|
||||||
|
hay que acomodar la cinta de símbolos en una configuración inicial adecuada.
|
||||||
|
|
||||||
|
la cabeza en cinta se coloca al lado del primer símbolo.
|
||||||
|
|
||||||
|
el semáforo empieza a moverse con el estado inicial.
|
||||||
|
|
||||||
|
la instructora se prepara.
|
||||||
|
|
||||||
|
## el ciclo
|
||||||
|
|
||||||
|
la cabeza en cinta se empieza a mover transmitiendo en qué símbolo se encuentra.
|
||||||
|
|
||||||
|
la instructora observa el movimiento del semáforo y el movimiento de la cabeza en cinta, y busca en su tabla de reglas la entrada correspondiente:
|
||||||
|
|
||||||
|
¿qué acciones hay que tomar a partir del estado actual y del símbolo leído por la cabeza en cinta?
|
||||||
|
|
||||||
|
### con respuesta
|
||||||
|
|
||||||
|
si la tabla tiene una respuesta, la instructora empieza a moverse para transmitir las acciones a tomar:
|
||||||
|
|
||||||
|
* primero realiza un movimiento de símbolo: la cabeza en cinta lo recibe y lo usa para reemplazar al símbolo en el que se encuentra actualmente.
|
||||||
|
* cuando concluye la transformación, la instructora realiza un movimiento de dirección: la cabeza en cinta lo recibe y lo sigue para dirigirse al siguiente símbolo que se encuentra en esa dirección.
|
||||||
|
* finalmente, la instructora realiza un movimiento de estado: el semáforo lo recibe, y lo ha de empezar a realizar como indicación del estado actual.
|
||||||
|
|
||||||
|
terminando esas acciones, el ciclo vuelve a comenzar.
|
||||||
|
|
||||||
|
### sin respuesta
|
||||||
|
|
||||||
|
si la tabla no tiene una respuesta, entonces la máquina se detiene. el cómputo ha terminado.
|
||||||
|
|
||||||
|
# algunas máquinas
|
||||||
|
|
||||||
|
próximamente
|
||||||
|
|
||||||
|
|
||||||
|
## llega(n) aquí
|
||||||
|
=> ./las_danzas.gmi {las danzas}
|
|
@ -0,0 +1,199 @@
|
||||||
|
# danza papier
|
||||||
|
|
||||||
|
baile colaborativo que ejemplifica una arquitectura computacional común, basada en la wdr papiercomputer
|
||||||
|
|
||||||
|
=> https://wiki.xxiivv.com/site/papier.html papier computer
|
||||||
|
|
||||||
|
parte de las {las danzas}
|
||||||
|
|
||||||
|
|
||||||
|
# componentes
|
||||||
|
|
||||||
|
## participantes
|
||||||
|
|
||||||
|
la arquitectura base consta de al menos 6 personas:
|
||||||
|
|
||||||
|
* PC: apuntadora del programa (program counter)
|
||||||
|
* Memoria: quien administra la lista de números correspondiente al programa
|
||||||
|
* CU: la directora, unidad de control
|
||||||
|
* Rn: al menos dos registros, R0 y R1
|
||||||
|
* LU: la que responde preguntas lógicas
|
||||||
|
|
||||||
|
|
||||||
|
## materiales
|
||||||
|
|
||||||
|
como materiales tangibles solo se requiere la lista de números que administra la Memoria.
|
||||||
|
|
||||||
|
como sea, si el grupo cuenta con suficientes personas, cada uno de esos números puede ser cuerpeado por una persona distinta.
|
||||||
|
|
||||||
|
opcionalmente, puede existir una tabla en papel que sirva de recordatorio a la CU de las operaciones a seguir: el microcódigo.
|
||||||
|
|
||||||
|
|
||||||
|
## movimientos
|
||||||
|
|
||||||
|
se necesita contar con, y conocer, el siguiente conjunto de movimientos.
|
||||||
|
|
||||||
|
### todas las personas
|
||||||
|
|
||||||
|
* dígito-movimiento: un movimiento por cada digito en la base elegida (por ejemplo, del 0 al 9 para trabajar en base 10)
|
||||||
|
* posición: una forma de indicar si un dígito es el primero o el segundo
|
||||||
|
* finalización: un movimiento que indique que el cómputo ha terminado
|
||||||
|
|
||||||
|
será importante conocer cuál es el movimiento siguiente y anterior a cada dígito-movimiento.
|
||||||
|
|
||||||
|
### Registros y CU:
|
||||||
|
|
||||||
|
* indicación de incremento
|
||||||
|
* indicación de decremento
|
||||||
|
|
||||||
|
### LU y CU:
|
||||||
|
|
||||||
|
* pregunta: ¿el contenido del Registro es 0?
|
||||||
|
* respuestas: sí, no
|
||||||
|
|
||||||
|
### PC y CU:
|
||||||
|
|
||||||
|
* indicación de incremento sencillo
|
||||||
|
* indicación de incremento doble
|
||||||
|
|
||||||
|
|
||||||
|
## instrucciones
|
||||||
|
|
||||||
|
la computadora cuenta con los 5 siguientes códigos de operación (entre paréntesis su mnemónico)
|
||||||
|
|
||||||
|
* 0: Fin del programa (FIN)
|
||||||
|
* 1: Condicional (CND)
|
||||||
|
* 2: Salta a (SLT)
|
||||||
|
* 3: Incrementa (INC)
|
||||||
|
* 4: Decrementa (DEC)
|
||||||
|
|
||||||
|
una instrucción completa consiste de ese código de operación, acompañada de un dígito llamado argumento.
|
||||||
|
|
||||||
|
ese argumento tiene un significado distinto según la instrucción:
|
||||||
|
|
||||||
|
* FIN: argumento ignorado
|
||||||
|
* CND: el argumento es el número de Registro al cual preguntarle si es 0: si la respuesta es sí, hay que saltarse una instrucción, y si la respuesta es no, hay que continuar normalmente
|
||||||
|
* SLT: el argumento es el número de línea a la cual saltar a continuación
|
||||||
|
* INC: el argumento es el número de Registro que ha de incrementarse
|
||||||
|
* DEC: el argumento es el número de Registro que ha de decrementarse
|
||||||
|
|
||||||
|
|
||||||
|
# ciclo de instrucción
|
||||||
|
|
||||||
|
la máquina estará en el llamado ciclo de instrucción hasta encontrar a una instrucción FIN.
|
||||||
|
|
||||||
|
este ciclo consiste de dos partes, fetch (buscar) y execute (ejecutar).
|
||||||
|
|
||||||
|
antes de comenzar, hay que realizar una inicialización:
|
||||||
|
|
||||||
|
* PC toma el dígito-movimiento correspondiente a 0, y se mueve transmitiéndolo
|
||||||
|
* Registros toman el dígito-movimiento inicial que se les indique, y se mueven transmitiéndolo
|
||||||
|
|
||||||
|
## fetch (buscar)
|
||||||
|
|
||||||
|
* todes les Registros se mueven con una amplitud normal, transmitiendo sus dígitos-movimientos
|
||||||
|
* PC se mueve transmitiendo el dígito-movimiento que tiene almacenado
|
||||||
|
* Memoria recibe el dígito, y busca en su lista de números al par de dígitos que se encuentran en esa posición.
|
||||||
|
* Memoria se mueve transmitiendo esos dos dígitos-movimientos, con cuidad de indicar cuál es el primero y cuál es el segundo
|
||||||
|
* CU recibe esos dos dígitos
|
||||||
|
* la máquina pasa a la etapa execute
|
||||||
|
|
||||||
|
|
||||||
|
## execute (ejecutar)
|
||||||
|
|
||||||
|
* CU identifica al primer dígito recibido como código de operación, y al segundo como argumento
|
||||||
|
* de acuerdo al código de operación, suceden las siguientes operaciones:
|
||||||
|
|
||||||
|
### FIN: Fin del programa (0)
|
||||||
|
|
||||||
|
* CU se mueve indicando finalización
|
||||||
|
* todes se detienen excepto Registros que continúan con sus dígitos-movimientos
|
||||||
|
|
||||||
|
les Registros ahora pueden ser inspeccionados para leer los resultados del cómputo.
|
||||||
|
|
||||||
|
### CND: Condicional (1)
|
||||||
|
|
||||||
|
* CU se mueve dirigiéndose a les Registros, transmitiendo el dígito-movimiento que recibió como argumento
|
||||||
|
* Registros reciben el dígito
|
||||||
|
* Registro que tiene a ese dígito en su nombre, hace más evidente el dígito-movimiento que estaba realizando
|
||||||
|
* les demás Registros reducen la amplitud de su propio dígito-movimiento.
|
||||||
|
* CU se mueve preguntando a LU si el Registro es 0.
|
||||||
|
* LU recibe la pregunta, y observa al Registro con movimiento amplio
|
||||||
|
* LU se mueve respondiendo sí o no
|
||||||
|
* CU recibe la respuesta de LU
|
||||||
|
* CU se mueve dirigéndose a PC: si la respuesta que recibió de LU fue sí, entonces se mueve indicando un doble incremento; si la respuesta fue no, entonces se mueve indicando un incremento sencillo
|
||||||
|
* PC recibe la indicación, y pasa al siguiente dígito-movimiento, ya sea una o dos veces según lo recibido.
|
||||||
|
* la máquina pasa a la etapa fetch
|
||||||
|
|
||||||
|
|
||||||
|
### SLT: Salta a (2)
|
||||||
|
|
||||||
|
* CU se mueve dirigéndose a PC, transmitiendo el dígito-movimiento que recibió como argumento
|
||||||
|
* PC recibe el dígito y lo almacena, reemplazando al dígito-movimiento que estaba realizando antes.
|
||||||
|
* la máquina pasa a la etapa fetch
|
||||||
|
|
||||||
|
|
||||||
|
### INC: Incrementa (3)
|
||||||
|
|
||||||
|
* CU se mueve dirigiéndose a les Registros, transmitiendo el dígito-movimiento que recibió como argumento
|
||||||
|
* Registros reciben el dígito
|
||||||
|
* Registro que tiene a ese dígito en su nombre, hace más evidente el dígito-movimiento que estaba realizando
|
||||||
|
* les demás Registros reducen la amplitud de su propio dígito-movimiento.
|
||||||
|
* CU se mueve dirigiéndose a les Registros, transmitiendo la indicación de incremento
|
||||||
|
* Registro con el movimiento amplio, pasa al dígito-movimiento siguiente al que estaba realizando (incrementa en 1 al valor que estaba almacenando)
|
||||||
|
* les demás Registros hacen caso omiso
|
||||||
|
* CU se mueve dirigéndose a PC, indicando un incremento sencillo
|
||||||
|
* PC recibe la indicación, y pasa al siguiente dígito-movimiento
|
||||||
|
* la máquina pasa a la etapa fetch
|
||||||
|
|
||||||
|
|
||||||
|
### DEC: Decrementa (4)
|
||||||
|
|
||||||
|
* CU se mueve dirigiéndose a les Registros, transmitiendo el dígito-movimiento que recibió como argumento
|
||||||
|
* Registros reciben el dígito
|
||||||
|
* Registro que tiene a ese dígito en su nombre, hace más evidente el dígito-movimiento que estaba realizando
|
||||||
|
* les demás Registros reducen la amplitud de su propio dígito-movimiento.
|
||||||
|
* CU se mueve dirigiéndose a les Registros, transmitiendo la indicación de decremento
|
||||||
|
* Registro con el movimiento amplio, pasa al dígito-movimiento anterior al que estaba realizando (decrementa en 1 al valor que estaba almacenando)
|
||||||
|
* les demás Registros hacen caso omiso
|
||||||
|
* CU se mueve dirigéndose a PC, indicando un incremento sencillo
|
||||||
|
* PC recibe la indicación, y pasa al siguiente dígito-movimiento
|
||||||
|
* la máquina pasa a la etapa fetch
|
||||||
|
|
||||||
|
|
||||||
|
# ejemplo de programa
|
||||||
|
|
||||||
|
este programa suma los dígitos en R0 y R1, colocando el resultado en R0
|
||||||
|
|
||||||
|
## lista de números
|
||||||
|
|
||||||
|
este es el programa en formato de lista de números para que administre Memoria.
|
||||||
|
|
||||||
|
* 0: 2 3
|
||||||
|
* 1: 4 1
|
||||||
|
* 2: 3 0
|
||||||
|
* 3: 1 1
|
||||||
|
* 4: 2 1
|
||||||
|
* 5: 0 0
|
||||||
|
|
||||||
|
el primer dígito en la lista es el número de línea.
|
||||||
|
|
||||||
|
los dos dígitos siguientes son el primer y segundo dígitos de instrucción
|
||||||
|
|
||||||
|
|
||||||
|
## ensamblador
|
||||||
|
|
||||||
|
usando las palabras clave (mnemónicos) para indicar los códigos de operación, el programa se vería así:
|
||||||
|
|
||||||
|
* 0: SLT 3 (salta a la línea 3)
|
||||||
|
* 1: DEC 1 (decrementa R1)
|
||||||
|
* 2: INC 0 (incrementa R0)
|
||||||
|
* 3: CND 1 (¿R1 es 0? si sí, salta una instrucción, si no, continúa)
|
||||||
|
* 4: SLT 1 (salta a la línea 1)
|
||||||
|
* 5: FIN 0 (fin del programa)
|
||||||
|
|
||||||
|
(esta forma de programar es a la que se refiere la práctica de {s-camino})
|
||||||
|
|
||||||
|
|
||||||
|
## llega(n) aquí
|
||||||
|
=> ./las_danzas.gmi {las danzas}
|
|
@ -0,0 +1,39 @@
|
||||||
|
# danzas compuertas
|
||||||
|
|
||||||
|
antiguas historias hablaban de computar en conjunto, en comunidad. ¿{las danzas}?
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
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}
|
||||||
|
|
||||||
|
# posibilidades
|
||||||
|
|
||||||
|
qué tal un sumador completo, aprovechando la idea de {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í
|
||||||
|
=> ./las_danzas.gmi {las danzas}
|
||||||
|
=> ./compuertas.gmi {compuertas}
|
||||||
|
=> ./logiteca.gmi {logiteca}
|
|
@ -0,0 +1,78 @@
|
||||||
|
# danzasistemas-tag
|
||||||
|
|
||||||
|
una compudanza basada en máquina abstracta (tag systems, o bien, máquina de post)
|
||||||
|
|
||||||
|
=> ./las_danzas.gmi {las danzas}
|
||||||
|
|
||||||
|
# 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í
|
||||||
|
=> ./las_danzas.gmi {las danzas}
|
|
@ -0,0 +1,57 @@
|
||||||
|
# después ahora
|
||||||
|
|
||||||
|
textos hacia una práctica post-civilización.
|
||||||
|
|
||||||
|
# La invitación
|
||||||
|
|
||||||
|
Primero que nada, te invito, nos invito, a estar presentes.
|
||||||
|
|
||||||
|
Respirar profundo, y de ser posible, mirar por alguna ventana. Notar el espacio de posibilidades que nos presenta lo que llamamos cielo.
|
||||||
|
|
||||||
|
Espero que no fuera hace mucho la vez más reciente que le habías visto.
|
||||||
|
|
||||||
|
Ahora bien, en este texto, partimos de la noción de que algo grande se está terminando. No solo grande, sino enorme; tal vez inabarcable, tal vez inconcebible.
|
||||||
|
|
||||||
|
Partimos de la noción de que la civilización se está terminando.
|
||||||
|
|
||||||
|
O de que ya se terminó, según desde dónde le veamos.
|
||||||
|
|
||||||
|
Partimos de que vale la pena permitirse sentirlo y expresarlo. La intención es imaginar, encontrar, crear cómo queremos vivir mientras lo aceptamos.
|
||||||
|
|
||||||
|
Por un lado siento las ganas de argumentarlo, de convencerte. Pero por otro lado sé que ya lo sabes: no se ve salida al desastre exponencial que se ha (¿hemos? ¿han?) desencadenado.
|
||||||
|
|
||||||
|
Crecer por crecer y por siempre, dejando de lado los cuidados: probablemente no fue la mejor idea, forma de vivir impuesta. Hay y hubo quien se opuso, claro; pero ahí no se permiten alternativas.
|
||||||
|
|
||||||
|
La duda es si esperamos y dejamos que la civilización como la conocemos, eso que se está terminando, caiga, colapse por su propio peso. A mí, esa espera me parece muy riesgosa. ¿Qué tal si al dejarle continuar, antes cae, colapsa la biósfera y su capacidad para mantener vida?
|
||||||
|
|
||||||
|
¿Cuál de los dos finales nos resultará peor, el de la civilización o el de la vida en la Tierra? Los páneles solares y autos eléctricos no nos llevan a una tercera opción, realmente.
|
||||||
|
|
||||||
|
¿Y entonces? ¿La decisión es retirarse? ¿La decisión es tirarla? ¿Qué tal vivir como si ya no existiera?
|
||||||
|
|
||||||
|
Cualquier opción me suena incómoda, pero llena de energía vital.
|
||||||
|
|
||||||
|
Personalmente, prefiero dejármelo sentir. No me va eso de hacerme creer que no está pasando nada, de hacer como si todo fuera a seguir normal, bien, "sin problema".
|
||||||
|
|
||||||
|
Ya no me creo el cuento del progreso, de las soluciones tecnocéntricas.
|
||||||
|
|
||||||
|
Vivir como si la civilización ya no existiera es lo que mejor me suena. Requiere creatividad, curiosidad, disposición, compasión y paciencia. Es alcanzable. No hay una fórmula específica, homogénea.
|
||||||
|
|
||||||
|
Es plantar semillas de lo que pueda venir después: puede que no germinen, ¿pero realmente me veo haciendo otra cosa?
|
||||||
|
|
||||||
|
Me queda claro que no es fácil. Además, no tengo mucha idea de cómo.
|
||||||
|
|
||||||
|
Estas letras llegan a ti con miras a que exploremos, sintamos, conectemos, practiquemos.
|
||||||
|
|
||||||
|
Por el momento usamos internet, después ya veremos. Si los cables seguirán plantados, ¿qué decidiremos hacer con ellos?
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Te invito a respirar de nuevo. A moverte con cómo te sientes ahora.
|
||||||
|
|
||||||
|
Te invito a acompañarnos en esta búsqueda.
|
||||||
|
|
||||||
|
Está bien si todavía no es el momento. Ya sabes dónde me encuentro.
|
||||||
|
|
||||||
|
|
||||||
|
## incoming links
|
||||||
|
=> ./collapse.gmi {collapse}
|
|
@ -0,0 +1,100 @@
|
||||||
|
/* links en el sitio */
|
||||||
|
a[href^="./"]{
|
||||||
|
text-decoration:none;
|
||||||
|
}
|
||||||
|
/* links externos */
|
||||||
|
a[rel=external]:after{
|
||||||
|
/* content:"↝";*/
|
||||||
|
content: "↗";
|
||||||
|
}
|
||||||
|
a{
|
||||||
|
color: #575;
|
||||||
|
}
|
||||||
|
a:hover{
|
||||||
|
background-color: #575;
|
||||||
|
color: #fff;
|
||||||
|
border-radius:3px;
|
||||||
|
}
|
||||||
|
a:visited{
|
||||||
|
color: #552;
|
||||||
|
}
|
||||||
|
a:visited:hover{
|
||||||
|
background-color: #552;
|
||||||
|
color: #fff;
|
||||||
|
border-radius:3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
body{
|
||||||
|
color: #010;
|
||||||
|
max-width:40em;
|
||||||
|
margin:0 auto;
|
||||||
|
font-size:18px;
|
||||||
|
padding: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav,footer,section{
|
||||||
|
/* border-top: 2px solid;*/
|
||||||
|
}
|
||||||
|
footer{
|
||||||
|
font-size: x-small;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre{
|
||||||
|
background-color: #fee;
|
||||||
|
color: #433;
|
||||||
|
padding:1em;
|
||||||
|
border-radius:5px;
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
main h1{
|
||||||
|
padding-top: 2.0em;
|
||||||
|
font-size: 30px;
|
||||||
|
}
|
||||||
|
main h2{
|
||||||
|
font-size: 25px;
|
||||||
|
/* border-top: 1px dashed;*/
|
||||||
|
padding-top: 1em;
|
||||||
|
margin-left:0.3em;
|
||||||
|
}
|
||||||
|
main h3{
|
||||||
|
font-size: 18px;
|
||||||
|
padding-top: 1em;
|
||||||
|
margin-left:1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 9.9 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 9.4 KiB |
|
@ -0,0 +1,7 @@
|
||||||
|
# compudanzas
|
||||||
|
|
||||||
|
human-powered explorations of emergent complexity
|
||||||
|
|
||||||
|
=> ./about.gmi {about}
|
||||||
|
=> ./coloring_computers.gmi {coloring computers}
|
||||||
|
=> ./las_danzas.gmi {las danzas}
|
|
@ -0,0 +1,46 @@
|
||||||
|
# la consagración de la computadora
|
||||||
|
|
||||||
|
a dance that
|
||||||
|
becomes computer,
|
||||||
|
machine,
|
||||||
|
organism...
|
||||||
|
|
||||||
|
# archive
|
||||||
|
|
||||||
|
=> ./img/foto_laconsagracion-riley-11.gif foto: dos personas en el suelo manipulando piezas de madera
|
||||||
|
=> ./img/foto_laconsagracion-riley-14.gif foto: una persona le muestra a otra un símbolo en una pieza de cartón
|
||||||
|
|
||||||
|
danza que se convierte en
|
||||||
|
computadora,
|
||||||
|
máquina,
|
||||||
|
organismo...
|
||||||
|
|
||||||
|
=> ./img/foto_laconsagracion-riley-19.gif foto: tres personas en el suelo, manipulando piezas de cartón y rodeadas de piezas de madera
|
||||||
|
=> ./img/foto_laconsagracion-riley-3.gif foto: dos personas cerca del suelo, al lado una fila de símbolos conformados con piezas de madera
|
||||||
|
|
||||||
|
la consagración de la computadora es una ceremonia, colaboración y celebración entre elementos humanos y no-humanos: una máquina computacional lenta, sudorosa, orgánica, ineficiente, bailada, turing completa; realizando un proceso de vida potencialmente infinito...
|
||||||
|
|
||||||
|
=> ./img/foto_laconsagracion-riley-4.gif foto: una persona rueda por el suelo observando una pieza de cartón, al lado de la fila de símbolos de piezas de madera
|
||||||
|
|
||||||
|
the rite of computing is a ceremony, a collaboration and celebration between human and non-human elements: a slow, sweaty, organic, locally-grown, inefficient, danced, turing-complete, computational machine; performing a potentially endless process of life.
|
||||||
|
|
||||||
|
=> ./img/foto_laconsagracion-riley-6.gif foto: una persona en el suelo, cercana a la fila de símbolos de madera, en contraluz
|
||||||
|
|
||||||
|
photos: Riley Stenehjem
|
||||||
|
featuring: August Luhrs, Isa Vento, sejo
|
||||||
|
|
||||||
|
adapted page from the original at chsnec
|
||||||
|
=> https://ipfs.io/ipfs/QmYYqFXowEuak9NVNMHexrwZQkEnfH4J6weSPpv3kjFP94/mub/laconsagracion.html chsnec: la consagración de la computadora
|
||||||
|
|
||||||
|
premiere invite:
|
||||||
|
=> https://ipfs.io/ipfs/QmYYqFXowEuak9NVNMHexrwZQkEnfH4J6weSPpv3kjFP94/mub/show.html la consagración de la computadora (the rite of computing) - world premiere!
|
||||||
|
|
||||||
|
# and more
|
||||||
|
|
||||||
|
an implementation of the máquina universal bailable {mub}
|
||||||
|
|
||||||
|
dance accompanied by {the rite of computing}
|
||||||
|
|
||||||
|
|
||||||
|
## llega(n) aquí
|
||||||
|
=> ./the_rite_of_computing.gmi {the rite of computing}
|
|
@ -0,0 +1,54 @@
|
||||||
|
# las danzas
|
||||||
|
|
||||||
|
colección de actividades y planteamientos bailables
|
||||||
|
|
||||||
|
# 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}
|
||||||
|
|
||||||
|
# par y danza
|
||||||
|
|
||||||
|
estrategia básica para detectar posibles errores de transmisión / recepción de una secuencia binaria.
|
||||||
|
|
||||||
|
=> ./par_y_danza.gmi {par y danza}
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
=> ./d-turing.gmi {d-turing}
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
=> ./mub.gmi {mub}
|
||||||
|
|
||||||
|
# danza papier
|
||||||
|
|
||||||
|
en donde nuestras acciones toman la forma de las operaciones de una computadora con una arquitectura similar a la de las que conocemos.
|
||||||
|
|
||||||
|
=> ./danza_papier.gmi {danza papier}
|
|
@ -0,0 +1,5 @@
|
||||||
|
# license
|
||||||
|
|
||||||
|
unless otherwise noted, the compudanzas materials are shared under the
|
||||||
|
|
||||||
|
=> https://wiki.p2pfoundation.net/Peer_Production_License peer production license
|
|
@ -0,0 +1,65 @@
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
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
|
||||||
|
39c=
|
||||||
|
=I3+J
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
|
@ -0,0 +1,19 @@
|
||||||
|
# the log
|
||||||
|
|
||||||
|
what's happening with compudanzas
|
||||||
|
|
||||||
|
## 12021-06-14 the beginning or not
|
||||||
|
|
||||||
|
we started building this site, from previous blocks of executable and non-executable texts.
|
||||||
|
|
||||||
|
there's an upcoming talk in the weekend.
|
||||||
|
|
||||||
|
for a while it was seen as the closure of this project, and a recap of its history.
|
||||||
|
|
||||||
|
now it is seen as a new beginning.
|
||||||
|
|
||||||
|
=> ./talks_and_workshops.gmi {talks and workshops}
|
||||||
|
|
||||||
|
|
||||||
|
## incoming links
|
||||||
|
=> ./about.gmi {about}
|
|
@ -0,0 +1,288 @@
|
||||||
|
# logiteca
|
||||||
|
|
||||||
|
compendio de circuitos lógicos que pueden implementarse en las {danzas compuertas}.
|
||||||
|
|
||||||
|
material de referencia para las {las danzas}
|
||||||
|
|
||||||
|
# acerca de
|
||||||
|
|
||||||
|
este es un compendio de circuitos lógicos que pueden implementarse en las {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*.
|
||||||
|
|
||||||
|
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}
|
|
@ -0,0 +1,20 @@
|
||||||
|
# máquina universal bailable
|
||||||
|
|
||||||
|
una de las {las danzas} 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.
|
||||||
|
|
||||||
|
implementación especial de una máquina de turing {d-turing}, con la capacidad de simular, emular, ser, cualquier otra máquina de turing.
|
||||||
|
|
||||||
|
# la máquina
|
||||||
|
|
||||||
|
próximamente
|
||||||
|
|
||||||
|
# en escena
|
||||||
|
|
||||||
|
una versión de la máquina universal bailable se presentó como acto escénico
|
||||||
|
|
||||||
|
=> ./la_consagración.gmi {la consagración de la computadora}
|
||||||
|
|
||||||
|
|
||||||
|
## llega(n) aquí
|
||||||
|
=> ./las_danzas.gmi {las danzas}
|
||||||
|
=> ./la_consagración_de_la_computadora.gmi {la consagración de la computadora}
|
|
@ -0,0 +1,106 @@
|
||||||
|
# par y danza
|
||||||
|
|
||||||
|
estrategia básica para detectar posibles errores de transmisión / recepción de una secuencia binaria, en modalidad {las danzas}.
|
||||||
|
|
||||||
|
implementamos el cómputo y detección de la llamada paridad: dada una secuencia de dos tipos de símbolos, ¿la cantidad de símbolos de uno de esos tipos, es par o impar?
|
||||||
|
|
||||||
|
|
||||||
|
# componentes
|
||||||
|
|
||||||
|
usaremos el concepto de estados y tiempos discretos.
|
||||||
|
|
||||||
|
## participantes
|
||||||
|
|
||||||
|
necesitamos al menos dos personas:
|
||||||
|
|
||||||
|
* transmisora de secuencia
|
||||||
|
* calculadora de paridad
|
||||||
|
|
||||||
|
## movimientos
|
||||||
|
|
||||||
|
necesitamos un alfabeto de dos movimientos:
|
||||||
|
|
||||||
|
* un movimiento "alto"
|
||||||
|
* un movimiento "bajo"
|
||||||
|
|
||||||
|
y un conteo de tiempos discretos.
|
||||||
|
|
||||||
|
cada uno de esos tiempos que contiene a un movimiento, lo podemos considerar un "bit": unidad mínima de información.
|
||||||
|
|
||||||
|
para transmitir información más compleja, necesitamos varios "bits": una secuencia de tiempos con uno de estos dos movimientos.
|
||||||
|
|
||||||
|
|
||||||
|
## estados y transiciones
|
||||||
|
|
||||||
|
en cada unidad de tiempo, estamos ya sea en el estado que corresponde al movimiento alto, o en el que corresponde al movimiento bajo.
|
||||||
|
|
||||||
|
inicialmente estamos en el movimiento bajo.
|
||||||
|
|
||||||
|
tenemos dos tipos de transiciones:
|
||||||
|
|
||||||
|
* continúa: sigue en el mismo estado
|
||||||
|
* invierte: cambia al otro estado
|
||||||
|
|
||||||
|
|
||||||
|
# guía
|
||||||
|
|
||||||
|
## cálculo de paridad
|
||||||
|
|
||||||
|
de acuerdo al mensaje binario a transmitir, en cada tiempo la persona transmisora envía uno de los dos movimientos posibles.
|
||||||
|
|
||||||
|
cuando la cantidad de movimientos que envía en una transmisión son 8, estará enviando un "byte".
|
||||||
|
|
||||||
|
la persona calculadora inicialmente está en el movimiento bajo.
|
||||||
|
|
||||||
|
en cada tiempo de transmisión, la persona calculadora ha de actuar de la siguiente forma:
|
||||||
|
|
||||||
|
* si el movimiento transmitido es bajo, ella ha de continuar su movimiento.
|
||||||
|
* si el movimiento transmitido es alto, ella ha de invertir su movimiento.
|
||||||
|
|
||||||
|
al concluir la transmisión, la persona calculadora habrá terminado:
|
||||||
|
|
||||||
|
* en el movimiento alto si la cantidad de movimientos altos transmitidos fue impar.
|
||||||
|
* en el movimiento bajo si la cantidad de movimientos altos transmitidos fue par
|
||||||
|
|
||||||
|
comprobemos que sí sea así, con secuencias de diferente longitud y paridad.
|
||||||
|
|
||||||
|
|
||||||
|
## detección de error con paridad
|
||||||
|
|
||||||
|
### conceptos
|
||||||
|
|
||||||
|
el estado en el que terminó la persona calculadora puede llamarse el bit de paridad.
|
||||||
|
|
||||||
|
un aspecto interesante y no obvio de este sistema, es que si este bit de paridad se agrega a la secuencia original para formar una nueva secuencia completa, entonces la cantidad total de movimientos altos siempre será un número par:
|
||||||
|
|
||||||
|
* cuando la cantidad era impar (por ejemplo, 3), el bit de paridad es alto, y al sumarse da un total par (por ejemplo, 4)
|
||||||
|
* cuando la cantidad era par (por ejemplo, 2), el bit de paridad es bajo y no se suma al total, que queda par (por ejemplo, 2)
|
||||||
|
|
||||||
|
### actividad
|
||||||
|
|
||||||
|
después de calcular localmente la paridad de la secuencia a transmitir, podemos pasar a transmitir a mayor distancia la nueva secuencia con el bit de paridad al final:
|
||||||
|
|
||||||
|
en cada tiempo, la persona transmisora envía el movimiento correspondiente para transmitir la secuencia completa.
|
||||||
|
|
||||||
|
la persona calculadora inicialmente está en el movimiento bajo.
|
||||||
|
|
||||||
|
en cada tiempo de transmisión/recepción, la persona calculadora ha de actuar de la siguiente forma:
|
||||||
|
|
||||||
|
* si el movimiento recibido es bajo, ella ha de continuar su movimiento.
|
||||||
|
* si el movimiento recibido es alto, ella ha de invertir su movimiento.
|
||||||
|
|
||||||
|
al terminar la transmisión de la secuencia completa, revisamos el estado de la persona calculadora:
|
||||||
|
|
||||||
|
* si se encuentra en movimiento alto (paridad impar), hubo algún error en la comunicación
|
||||||
|
* si se encuentra en movimiento bajo (paridad par), probablemente no hubo error en la comunicación
|
||||||
|
|
||||||
|
probemos con secuencias de diferente longitud, a diferentes velocidades, y también a diferentes distancias.
|
||||||
|
|
||||||
|
¿llega a suceder que detectamos un error?
|
||||||
|
|
||||||
|
¿qué pasa cuando hay dos errores en la comunicación? ¿es posible que el sistema no lo detecte?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## llega aquí:
|
||||||
|
=> ./las_danzas.gmi {las danzas}
|
|
@ -0,0 +1,3 @@
|
||||||
|
# poetry
|
||||||
|
|
||||||
|
=> ./the_rite_of_computing.gmi {the rite of computing}
|
|
@ -0,0 +1,28 @@
|
||||||
|
# talks and workshops
|
||||||
|
|
||||||
|
public appearances of the project.
|
||||||
|
|
||||||
|
# upcoming
|
||||||
|
|
||||||
|
## june 12021
|
||||||
|
|
||||||
|
compudanzas talk and {coloring computers} workshop in processing community day quito, june 19th
|
||||||
|
|
||||||
|
=> http://pcdquito.com/ pcd quito 2021
|
||||||
|
|
||||||
|
|
||||||
|
compudanzas workshop in cuna school
|
||||||
|
|
||||||
|
=> https://www.cunamex.com/compudanzascursoonline compudanzas - cuna
|
||||||
|
|
||||||
|
# past
|
||||||
|
|
||||||
|
## 12019
|
||||||
|
|
||||||
|
{coloring computers} workshop in the processing community day nyc
|
||||||
|
|
||||||
|
=> https://processing.nyc/2019/#workshops processing community day nyc 2019
|
||||||
|
|
||||||
|
|
||||||
|
## incoming links
|
||||||
|
=> ./log.gmi {log}
|
|
@ -0,0 +1,291 @@
|
||||||
|
# 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 doesn’t 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 don’t 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 can’t 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
|
||||||
|
– it’s 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?)
|
||||||
|
it’s 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?
|
||||||
|
– that’s 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?
|
||||||
|
– i’d 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 wouldn’t 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 doesn’t do the math right?
|
||||||
|
– there’s the poetry!
|
||||||
|
– but what about the rigor? the experience of following constraints?
|
||||||
|
– you think that is important?
|
||||||
|
– maybe it’s part of my identity
|
||||||
|
– we don’t 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
|
||||||
|
|
||||||
|
– i’m 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 don’t know what’s a computer
|
||||||
|
– don’t 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?
|
||||||
|
– isn’t 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 it’s the same here with computing
|
||||||
|
– one thing is to describe them working…
|
||||||
|
– visualizations, metaphors… leading to understanding what i can’t see?
|
||||||
|
– but you don’t 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 can’t hold it anymore?
|
||||||
|
– the magic doesn’t 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)
|
||||||
|
|
||||||
|
text accompanied by {la consagración de la computadora}
|
||||||
|
|
||||||
|
|
||||||
|
## incoming links
|
||||||
|
=> ./poetry.gmi {poetry}
|
||||||
|
=> ./la_consagración_de_la_computadora.gmi {la consagración de la computadora}
|