Declaración de Independencia del Ciberespacio

John Perry Barlow, fundador de la Electronic Frontier Foundation, ha fallecido hoy, 7 de febrero de 2018. En su memoria, reproduzco la traducción de su Declaration of the Independence of Cyberspace que realicé hace unos 20 años.

Declaración de Independencia del Ciberespacio

Gobiernos del Mundo Industrial, desgastados gigantes de carne y acero: vengo del Ciberespacio, el nuevo hogar de la Mente. En nombre del futuro os pido que nos dejéis en paz en el pasado. No sois bienvenidos entre nosotros. No tenéis ninguna soberanía sobre el lugar donde nos reunimos.

No hemos elegido ningún gobierno, ni pretendemos tenerlo, así que me dirijo a vosotros sin más autoridad que aquélla con la que la libertad siempre habla. Declaro al espacio social global que estamos construyendo independiente por naturaleza de las tiranías que estáis buscando imponernos. No tenéis ningún derecho moral a gobernarnos, ni tenéis ningún método para someternos que debamos temer verdaderamente.

Los gobiernos obtienen su poder del consentimiento de los gobernados. No habéis pedido ni recibido el nuestro. No os hemos invitado. No nos conocéis, ni conocéis nuestro mundo. El Ciberespacio no se halla dentro de vuestras fronteras. No penséis que podéis construirlo, como si fuera un proyecto público de construcción. No podéis. Es un acto natural que crece por medio de nuestras acciones colectivas.

No os habéis unido a nuestra gran conversación colectiva, ni creasteis la riqueza de nuestros mercados. No conocéis nuestra cultura, nuestra ética, o los códigos no escritos que ya proporcionan a nuestra sociedad más orden que el que podría obtenerse por cualquiera de vuestras imposiciones.

Proclamáis que hay problemas entre nosotros que necesitáis resolver. Usáis esto como una excusa para invadir nuestros límites. Muchos de estos problemas no existen. Donde haya verdaderos conflictos, donde haya errores, los identificaremos y resolveremos por nuestros propios medios. Estamos creando nuestro propio Contrato Social. Esta forma de gobierno se creará según las condiciones de nuestro mundo, no del vuestro. Nuestro mundo es diferente.

El Ciberespacio está formado por transacciones, relaciones, y pensamiento en sí mismo, que se extiende como una onda estacionaria en la telaraña de nuestras comunicaciones. El nuestro es un mundo que está a la vez en todas partes y en ninguna, pero no está donde viven los cuerpos físicos.

Estamos creando un mundo en el que todos pueden entrar, sin privilegios o prejuicios debidos a la raza, el poder económico, la fuerza militar, o el lugar de nacimiento.

Estamos creando un mundo donde cualquiera, en cualquier sitio, puede expresar sus creencias, sin importar lo singulares que sean, sin miedo a ser coaccionado mediante el silencio o el conformismo.

Vuestros conceptos legales sobre propiedad, expresión, identidad, movimiento y contexto no se aplican a nosotros. Se basan en la materia. Aquí no hay materia.

Nuestras identidades no tienen cuerpo, así que, a diferencia de vosotros, no podemos conseguir orden por coacción física. Creemos que nuestra autoridad emanará de la moral, de un progresista interés propio, y del bien común. Nuestras identidades pueden distribuirse a través de muchas de vuestras jurisdicciones. La única ley que todas nuestras culturas reconocerían es la Regla Dorada. Esperamos ser capaces de construir nuestras soluciones particulares sobre esa base. Pero no podemos aceptar las soluciones que estáis tratando de imponer.

En Estados Unidos hoy habéis creado una ley, el Acta de Reforma de las Telecomunicaciones, que repudia vuestra propia Constitución e insulta los sueños de Jefferson, Washington, Mill, Madison, De Tocqueville y Brandeis. Estos sueños deben renacer ahora en nosotros.

Os atemorizan vuestros propios hijos, ya que ellos son nativos en un mundo donde vosotros siempre seréis inmigrantes. Como les teméis, encomendáis a vuestras burocracias las responsabilidades paternas a las que sois demasiado cobardes para enfrentaros por vosotros mismos. En nuestro mundo, todos los sentimientos y expresiones de humanidad, desde las más viles a las más angelicales, son parte de un todo único, la conversación global de bits. No podemos separar el aire que asfixia del aire sobre el que se baten las alas.

En China, Alemania, Francia, Rusia, Singapur, Italia y los Estados Unidos estáis intentando rechazar el virus de la libertad erigiendo puestos de guardia en las fronteras del Ciberespacio. Éstos podrán impedir el contagio durante un corto tiempo, pero no funcionarán en un mundo que pronto estará cubierto por los medios de transmisión de bits.

Vuestras cada vez más obsoletas industrias de la información se perpetuarían a sí mismas proponiendo leyes, en América y en cualquier parte, que asegurarían poseer la facultad de la expresión en sí misma por todo el mundo. Estas leyes declararían que las ideas son otro producto industrial, no más noble que el hierro oxidado. En nuestro mundo, sea lo que sea lo que la mente humana pueda crear, puede ser reproducido y distribuido infinitamente sin ningún coste. El trasvase global de pensamiento ya no necesita de vuestras fábricas para ser realizado.

Estas medidas, cada vez más hostiles y colonialistas, nos colocan en la misma situación en la que estuvieron aquellos amantes de la libertad y la autodeterminación que tuvieron que luchar contra la autoridad de un poder lejano e ignorante. Debemos declarar nuestros «yos» virtuales inmunes a vuestra soberanía, aunque continuemos consintiendo vuestro poder sobre nuestros cuerpos. Nos extenderemos a través del planeta para que nadie pueda encarcelar nuestros pensamientos.

Vamos a crear una civilización de la Mente en el Ciberespacio. Que sea más humana y hermosa que el mundo que vuestros gobiernos han creado hasta ahora.

Davos, Suiza.
8 de Febrero de 1996

Robert M. Pirsig, autor de Zen y el arte del mantenimiento de la motocicleta, fallece a los 88 años

Robert M. Pirsig, que inspiró a generaciones a viajar a través de los Estatdos Unidos con su autobiografía novelística Zen y el arte del mantenimiento de la motocicleta, falleció el lunes a la edad de 88 años.

Su editorial William Morrow & Company dijo en una declaración que Pirsig falleció en su casa en South Berwick, Maine, «después de un período de salud delicada».

Pirsig escribió sólo dos libros: Zen y el arte del mantenimiento de la motocicleta (subtitulado «Una indagación sobre los valores») y Lila: Una indagación sobre la moral.

Zen se publicó en 1974, después de ser rechazado por 121 editoriales. El libro es increíblemente brillante, escribió el editor de Morrow James Landis antes de su publicación. Probablemente sea la obra de un genio, y apuesto a que conseguirá alcanzar el estatus de «clásico».

De hecho, el libro rápidamente se convirtió en un best-seller, y ha demostrado ser duradero como una obra de la filosofía popular.  Está inspirado en un viaje en moto a través del oeste con su hijo Christopher en 1968.

Christopher Lehmann-Haupt reseñó Zen para el New York Times en 1974. Por impresionantes que sean los poderes de seducción con los que el Sr. Pirsig nos engancha a su viaje en moto, no son nada comparados con la habilidad con la que nos interesa en su viaje filosófico, escribió. El Sr. Pirsig puede parecer a veces un predicador por una América más verde, con su barba y sus viajes en moto y su discurso sobre aprender a amar la tecnología. Pero cuando lucha a brazo partido con los duros problemas filosóficos creados en los años 60, puede ser electrizante.

Pirsig nació en Minneapolis, hijo de un profesor de derecho de la Universidad de Minnesota. Se graduó en la escuela secundaria a los 15 años y se alistó en el ejército después de la Segunda Guerra Mundial. Mientras estaba en Corea del Sur, se encontró con las filosofías asiáticas que sostienen su trabajo. Pasó a estudiar filosofía hindú en la Universidad de Benarés, India, y durante un tiempo estuvo matriculado en un programa de doctorado en filosofía de la Universidad de Chicago. Fue hospitalizado por enfermedad mental y regresó a Minneapolis, donde trabajó como escritor técnico y comenzó a escribir su primer libro.

Su hijo Chris, coprotagonista del libro, murió apuñalado en un atraco en San Francisco. Posteriormente tuvo otra hija, Nell, con su segunda mujer, Wendy.

Pirsig también ayudó a fundar el Centro de Meditación Zen de Minnesota, y posteriormente vivió de modo solitario y trabajó en Lila durante 17 años antes de su publicación en 1991. Un mecánico experto, realizaba las reparaciones en su taller de casa, escribe el editor. «Aprendió a orientarse antes de que existiera el GPS, y cruzó dos veces el Atlántico en su pequeño velero, Aretê».

El protagonista de Zen intenta resolver los conflictos entre los valores «clásicos» que crean maquinaria como la motocicleta, y los valores «románticos» como la belleza de una carretera rural. Descubre que todos los valores encuentran su raíz en lo que Pirsig llamó Calidad:

Calidad… sabes lo que es, pero no sabes lo que es. Pero eso es contradictorio en sí mismo. Pero algunas cosas son mejores que otras, es decir, tienen más calidad. Pero cuando intentas decir qué es la calidad, aparte de las cosas que la tienen, todo hace ¡puf! No hay nada de que hablar. Pero si no puedes decir qué es la calidad, ¿cómo sabes lo que es, o cómo sabes siquiera si existe? Si nadie sabe lo que es, entonces para todos los propósitos prácticos no existe en absoluto. Pero para todos los propósitos prácticos realmente existe.

Fuentes: The Guardian, New York Times, Independent

El camino no tomado

James Gosling, el creador de Java, anunció hace un par de días que había empezado a trabajar en Google. En dicho anuncio incluía una referencia a The Road Not Taken, un poema de Robert Lee Frost (1874-1963) publicado en Mountain Interval (1916).

El poema me ha gustado, no así las traducciones al castellano que he encontrado. Tanto es así, que me he atrevido a realizar mi propia traducción:

El camino no tomado

Dos caminos divergían en un bosque amarillo,
y triste por no poder tomar ambos
y ser un único viajero, me quedé largo tiempo parado
y miré uno de ellos tan lejos como me era posible
hasta donde se perdía en la maleza.

Después tomé el otro, que siendo igual de bueno,
quizás tenía más derecho,
porque estaba cubierto de hierba y quería ser usado;
aunque en cuanto a eso, en realidad en ese punto el tránsito
los había gastado más o menos lo mismo.

Y ambos se extendían por igual aquella mañana,
cubiertos de hojas que ninguna pisada había ennegrecido.
¡Dejé el primero para otro día!
Pero sabiendo cómo un camino lleva a otro,
dudé si volvería alguna vez.

Contaré esto con un suspiro
en algún lugar, dentro de muchísimo tiempo:
dos caminos divergían en un bosque, y yo…
yo tomé el menos transitado,
y eso marcó la diferencia.

En la Wikipedia se puede encontrar más información sobre este poema.

Mapas libres con OpenStreetMap

OSM es un proyecto que supone una alternativa libre a Google Maps. Al estilo de la Wikipedia, son los propios usuarios los crean el contenido a partir de datos recogidos con un GPS, fotos de satélite que lo permitan, etc. Para introducir los datos se pueden usar distintos programas, desde el sencillo Potlach, hecho en Flash, al potente JOSM, escrito en Java. Merkaartor parece interesante, pero quizás esté todavía un poco verde.

Tras descargar JOSM, y lanzarlo en Debian sid con java -jar josm-tested, me he encontrado con que la red no funcionaba desde dentro de la aplicación (java.net.NoRouteToHostException: Network is unreachable). Se trata del bug #560044/#560056 de Debian. Para solucionarlo, sólo hay que ejecutar como root sysctl net.ipv6.bindv6only=0, pero lo cierto es que nunca lo habría averiguado por mí mismo.

Una vez arrancado, vamos a Editar -> Preferencias… -> Complementos, descargamos la lista, e instalamos al menos wmsplugin y validator. En «Configuración del servidor OSM» introducimos nuestro usuario y contraseña, que previamente habremos creado desde la web de OSM. Y a partir de este momento, a familiarizarse con el programa y empezar a cartografiar 🙂

Empiezo a aprender Qt

Los últimos capítulos de Accelerated C++ los he leído un poco por encima, porque tratan de temas complejos (gestión de memoria, etc) que creo que de momento no voy a necesitar. Siempre podré volver a ellos en caso de que lo necesite.

Así que ya he empezado a aprender Qt. Como sabréis, Qt son unas bibliotecas multiplataforma de Nokia (que adquirió la noruega TrollTech a principios 2008). No es un simple conjunto de widgets (window gadgets, es decir elementos gráficos como botones, deslizadores, menús, etc), sino que aporta muchas otras funcionalidades, haciendo innecesaria la STL (Standard Template Library). Probablemente sea más comparable a Boost que a GTK+.

Hay unos cuantos libros sobre Qt, entre los que destacan:

El primero es el libro oficial, el más moderno, y sus autores conocen Qt 4 como la palma de su mano. Pero por los comentarios de Amazon, parece que podría ser más pedagógico.

El último es una introducción a patrones de diseño usando C++ y Qt que sobre Qt en sí, así que no es realmente lo que necesito.

Entre los dos restantes, el de Thelin abarca un poco más que el de Molketin (CMake, unit testing, plugins), así que es el que he elegido.

En C/C++, argc puede ser 0

Esta semana he continuado leyendo Accelerated C++. Intento seguir un ritmo de un capítulo diario, habiendo llegado ya al capítulo 10 (aproximadamente dos tercios del libro). Confío en acabarlo a lo largo de esta semana.

Hoy he descubierto una cosa curiosa. La mayoría de los programas en C/C++ incluye una línea similar a int main(int argc, char **argv) o su equivalente int main(int argc, char* argv[]) para permitir pasarle argumentos.

argv es un puntero a un array de punteros, uno para cada argumento, y argc es el número de punteros del array. El elemento inicial del array, argv[0], representa el nombre con el que se ha llamado al programa, y argv[argc] es siempre un puntero nulo. Los argumentos -si los hay- ocupan los restantes elementos del array, de argv[1] a argv[argc - 1].

Así pues, aparentemente argc debe siempre ser mayor o igual que 1. Sin embargo, resulta que como explican en stackoverflow y alt.comp.c, el estándar dice explícitamente que argc puede ser cero. Y es que por medio de las llamadas al sistema exec() de POSIX, argv[0] puede ser NULL.

Cómo borrar todos los ficheros de hace más de x días

Un usuario no ha descargado su correo electrónico en 9 meses, y me pide que le borre todos los mensajes que tengan más de 15 días. Es muy fácil de hacer, y en How-to Geek lo explican a la perfección, así que me limitaré a traducirlo.

La herramienta find de Unix (así como GNU/Linux, etc) permite que se le pasen varios argumentos interesantes, incluyendo uno para ejecutar otra orden sobre cada uno de los ficheros. Usaremos esto para averiguar qué ficheros tienen más de un cierto número de días, y entonces usar la orden rm para borrarlos.

Sintaxis de la orden

find /home/fulano/Maildir/cur -mtime +15 -exec rm {} ;

Obsérvese que hay espacios entre rm, {}, y ;.

Explicación

  • El primer argumento es la ruta a los ficheros. Puede ser una ruta, un directorio o un comodín. Recomiendo usar la ruta completa, y ejecutar la orden sin el exec rm para estar seguros de que se va a conseguir los resultados deseados.
  • El segundo argumento, -mtime, se usa para indicar el número días que tiene el fichero. Si introducimos +15, buscará ficheros que tengan más de 15 días.
  • El tercer argumento, -exec, permite pasar una orden como rm. El {} ; al final es necesario para terminar la orden.

Otra forma de hacerlo sería:
find /home/usuario/Maildir/cur -mtime +15 | xargs rm

Estas órdenes deberían funcionar en cualquier versión de Unix o distribución de GNU/Linux o *BSD.

Resucitando un scanner USB Suvil del siglo pasado

Desde hace 10 u 11 años tengo un scanner Suvil ColorBrush Family II criando polvo. Lo cierto es que rara vez tengo necesidad de digitalizar ninguna imagen. Al intentar ponerlo en marcha, me he encontrado que en Internet prácticamente no hay ninguna referencia a este aparato, y mucho menos drivers (ni Windows ni Mac OS X lo reconocen).

Sin embargo, he conseguido hacerlo funcionar con SANE en GNU/Linux. Tras conectarlo, he ejecutado # sane-find-scanner, que me ha revelado su ubicación: found USB scanner (vendor=0x055f, product=0x0002, chip=MA-1017) at libusb:004:003.  Compruebo que efectivamente el programa reconoce el escáner:
# scanimage --list-devices
device `mustek_usb:libusb:004:003' is a Mustek 600 CU flatbed scanner

Y escaneo una imagen con # scanimage –format tiff > foo.tif. Sale en blanco y negro (cosa de las opciones predeterminadas), pero funciona.

Sin embargo, cuando con mi usuario intento lanzar xsane o skanlite me dice que no hay dispositivos disponibles. ¿Será que no tengo los permisos necesarios? Efectivamente, al intentar ejecutar la orden anterior, me dice
% scanimage --format tiff > blah.tif
scanimage: no SANE devices found

La solución es sencilla:
# addgroup quique scanner
Añadiendo al usuario `quique' al grupo `scanner' ...
Adding user quique to group scanner
Hecho.

Tras iniciar una nueva sesión, todo va a la perfección. Gracias a Debian, he recuparado un dispositivo que de otra manera probablemente habría ido a parar a la basura. Hora de probar retr0bright, supongo.

Accelerated C++: capitulos 3-4

Este fin de semana lo he pasado en Zaragoza, pero no obstante he sacado un poco de tiempo para estudiar.

El capítulo 3 da entrada a los vectores, almacenando en ellos con el método push_back series de datos leídos desde el teclado, para después operar con ellos. Introduce también el operador condicional (? :).

En el capítulo 4 aprendemos a lanzar y capturar excepciones, la diferencia entre pasar argumentos por valor y pasar argumentos por referencia (sean o no const).  También aprendemos a crear nuestras propias estructuras de datos con struct, y a usar los ficheros de cabecera (headers), la directiva ifndef y las funciones inline. Un capítulo muy interesante.

Accelerated C++: capítulos 0-2

Accelerated C++ se compone de 17 capítulos numerados del 0 al 16. Ya me he leído los 3 primeros. Esto no significa que me vaya a merendar el libro en menos de una semana, claro. El contenido de estos tres capítulos es sencillo, y además ya los había leído anteriormente.

El libro empieza (como no) con un Hello, world!. Eso sí, escrito usando output streams. Aprovecha este ejemplo para explicar la sintaxis de C++ y su estructura (includes, espacios de nombres, tipos de datos, etc).

El capítulo 1 está dedicado a las cadenas de texto. Presenta además la inicialización/construcción de variables, los flujos de entrada, el tipo carácter, la concatenación y un par de métodos de las cadenas.

El capítulo 2 trata de los bucles, los conocidos while y for, para lo que introduce también las condiciones (if), los operadores lógicos, el tipo boolean y varios tipos numéricos.

Hasta aquí, facilito.