aboutsummaryrefslogtreecommitdiff
path: root/blog_experiment/content/2011
diff options
context:
space:
mode:
authoralex <alex@pdp7.net>2023-10-13 16:11:25 +0200
committeralex <alex@pdp7.net>2023-10-13 16:11:25 +0200
commit250201b433c0a99f6cabcb2596bfe43f1a5a3968 (patch)
tree8dc5de16ed4315b3ab4fcc001b7dbd74d475c4b3 /blog_experiment/content/2011
parent1a80ac63854ba4ea28f81194ad15314771e979d5 (diff)
Moving to prod!
Diffstat (limited to 'blog_experiment/content/2011')
-rw-r--r--blog_experiment/content/2011/01/capitan-obvio-y-sus-aliteraciones.gmi8
-rw-r--r--blog_experiment/content/2011/01/de-tal-palo-tal-astilla.gmi7
-rw-r--r--blog_experiment/content/2011/01/de-yuxtaposiciones-y-hombres.gmi7
-rw-r--r--blog_experiment/content/2011/01/django-o-la-fabrica-de-churros.gmi26
-rw-r--r--blog_experiment/content/2011/01/mas-palos-y-astillas.gmi8
-rw-r--r--blog_experiment/content/2011/01/reacciones-viscerales.gmi8
-rw-r--r--blog_experiment/content/2011/02/el-hombre-que-dirigia-demasiado.gmi7
-rw-r--r--blog_experiment/content/2011/02/maventuras.gmi42
-rw-r--r--blog_experiment/content/2011/02/rostros-familiares.gmi9
-rw-r--r--blog_experiment/content/2011/02/serias-y-caninas-afecciones.gmi6
-rw-r--r--blog_experiment/content/2011/02/sombrero-blanco.gmi10
-rw-r--r--blog_experiment/content/2011/03/geek-cuisine.gmi9
-rw-r--r--blog_experiment/content/2011/03/git-gitosis-gradle.gmi15
-rw-r--r--blog_experiment/content/2011/03/omniawesome.gmi8
-rw-r--r--blog_experiment/content/2011/03/oscar-pero-que-haces.gmi18
-rw-r--r--blog_experiment/content/2011/03/una-maquina-segun-turing.gmi7
-rw-r--r--blog_experiment/content/2011/04/alerces.gmi10
-rw-r--r--blog_experiment/content/2011/04/como-un-maldito-replicante.gmi21
-rw-r--r--blog_experiment/content/2011/04/hazanas-informaticas-i-internet.gmi30
-rw-r--r--blog_experiment/content/2011/04/hazanas-informaticas-ii-el-modelo-de-datos-relacional.gmi73
-rw-r--r--blog_experiment/content/2011/04/hazanas-informaticas-iii-la-criptografia-asimetrica.gmi32
-rw-r--r--blog_experiment/content/2011/04/holandeses-voladores-ciclos-y-tendencias.gmi36
-rw-r--r--blog_experiment/content/2011/04/moviolas-del-siglo-xxi.gmi8
-rw-r--r--blog_experiment/content/2011/05/hazanas-informaticas-iv-las-funciones-hash.gmi62
-rw-r--r--blog_experiment/content/2011/05/mas-emergencias.gmi21
-rw-r--r--blog_experiment/content/2011/06/atajo-atajo-al-infierno.gmi9
-rw-r--r--blog_experiment/content/2011/06/coctel-de-farmacos.gmi11
-rw-r--r--blog_experiment/content/2011/06/dinosaurios-que-rondan-la-tierra.gmi44
-rw-r--r--blog_experiment/content/2011/06/galletosquizofrenia.gmi4
-rw-r--r--blog_experiment/content/2011/06/tecnocracia-china.gmi6
-rw-r--r--blog_experiment/content/2011/06/tres-tristes-trucos.gmi27
-rw-r--r--blog_experiment/content/2011/07/consolacion-en-serie.gmi13
-rw-r--r--blog_experiment/content/2011/07/ie-sin-windows.gmi47
-rw-r--r--blog_experiment/content/2011/07/increpando.gmi11
-rw-r--r--blog_experiment/content/2011/10/apuntes-sobre-dart.gmi29
-rw-r--r--blog_experiment/content/2011/10/el-mito-de-la-escalabilidad.gmi63
-rw-r--r--blog_experiment/content/2011/10/hombros-de-gigantes.gmi10
-rw-r--r--blog_experiment/content/2011/10/notas-mentales.gmi8
-rw-r--r--blog_experiment/content/2011/10/superpoderes.gmi14
-rw-r--r--blog_experiment/content/2011/11/eje-de-payos.gmi17
-rw-r--r--blog_experiment/content/2011/11/hazanas-informaticas-v-las-maquinas-de-turing-y-von-neumann.gmi36
-rw-r--r--blog_experiment/content/2011/11/hazanas-informaticas-vi-el-sistema-unix.gmi27
-rw-r--r--blog_experiment/content/2011/12/abrir-links-en-nueva-ventana-en-infojobs-net.gmi29
-rw-r--r--blog_experiment/content/2011/12/construye-tu-guia-de-tv.gmi10
-rw-r--r--blog_experiment/content/2011/12/dilemas-en-la-ducha.gmi23
-rw-r--r--blog_experiment/content/2011/12/upserts.gmi11
46 files changed, 0 insertions, 937 deletions
diff --git a/blog_experiment/content/2011/01/capitan-obvio-y-sus-aliteraciones.gmi b/blog_experiment/content/2011/01/capitan-obvio-y-sus-aliteraciones.gmi
deleted file mode 100644
index 81fedfb9..00000000
--- a/blog_experiment/content/2011/01/capitan-obvio-y-sus-aliteraciones.gmi
+++ /dev/null
@@ -1,8 +0,0 @@
-# Capitán Obvio y sus aliteraciones
-2011-01-23
-
-> Scott directed an adaptation of Robin Hood titled Robin Hood, which starred Russell Crowe as Robin Hood
-(extraído de la Wikipedia[1])
-
-
-=> http://en.wikipedia.org/wiki/Ridley_Scott 1: http://en.wikipedia.org/wiki/Ridley_Scott \ No newline at end of file
diff --git a/blog_experiment/content/2011/01/de-tal-palo-tal-astilla.gmi b/blog_experiment/content/2011/01/de-tal-palo-tal-astilla.gmi
deleted file mode 100644
index ad1f52bc..00000000
--- a/blog_experiment/content/2011/01/de-tal-palo-tal-astilla.gmi
+++ /dev/null
@@ -1,7 +0,0 @@
-# De tal palo, tal astilla
-2011-01-22
-
-Un salvapantallas interesante o el diseñador del próximo Batmóvil[1]
-
-
-=> http://megaswf.com/serve/102223/ 1: http://megaswf.com/serve/102223/ \ No newline at end of file
diff --git a/blog_experiment/content/2011/01/de-yuxtaposiciones-y-hombres.gmi b/blog_experiment/content/2011/01/de-yuxtaposiciones-y-hombres.gmi
deleted file mode 100644
index 0be6f40e..00000000
--- a/blog_experiment/content/2011/01/de-yuxtaposiciones-y-hombres.gmi
+++ /dev/null
@@ -1,7 +0,0 @@
-# De yuxtaposiciones y hombres
-2011-01-28
-
-La 2 ha contraprogramado Destino Eurovisión (emitido por TVE1) con Historia de la frivolidad[1], de Chicho, en un alarde de despiporre.
-
-
-=> http://www.imdb.com/title/tt0212223/combined 1: http://www.imdb.com/title/tt0212223/combined \ No newline at end of file
diff --git a/blog_experiment/content/2011/01/django-o-la-fabrica-de-churros.gmi b/blog_experiment/content/2011/01/django-o-la-fabrica-de-churros.gmi
deleted file mode 100644
index 72e89059..00000000
--- a/blog_experiment/content/2011/01/django-o-la-fabrica-de-churros.gmi
+++ /dev/null
@@ -1,26 +0,0 @@
-# Django o la fábrica de churros
-2011-01-08
-
-Programar aburre, porque tendemos a programar lo mismo una y otra vez. Así, muchos caen en la tentación de buscar en exceso maneras de reducir el código. Dijo Wirth que algoritmos más estructuras de datos igual a programas; y cabe añadir que en la mayoría de programación web, poco algoritmo hay- así que con definir el esquema de datos, poco más deberíamos hacer, ¿no?
-
-Estos días me he encontrado frente a una web sencilla, pero que a mi juicio no era adecuada realizarla con un CMS (puede que en gran parte porque no he encontrado un CMS que me guste) y me he decidido a probar Django. Django es un framework Python cuyo lema es "batteries included"; alusión al hecho de que resuelve una gran parte de los problemas típicos de desarrollo web- cosa que certifico y a la que añado que los resuelve a mi gusto. El otro gran qué de Django es la interfaz administrativa que trae; mediante unas líneas declarativas, obtienes una web de gestión que permite añadir, editar, eliminar, etc. entidades del modelo de datos, reduciendo en una gran parte el trabajo que le queda a uno.
-
-¿A parte de esto, qué otras virtudes tiene Django?
-
-* Vistas genéricas. En particular, lista/detalle sobre los modelos de datos, resolviendo correctamente paginación, ordenación, filtrado, etc. Tiene también vistas y maquinaria para hacer CRUD, que supongo funcionan bien pero que no he usado
-* Usa HTML/HTTP "correcto" sin hacer cosas raras, añadir Javascripts innecesarios, serializaciones raras, etc. Todo muy limpio
-* Está documentado. No llega al nivel de Java o Spring, pero desde luego, comparado con Rails y otras estrellas de código libre...
-* No usa generación de código. Odiamos la generación de código.
-
-Pero también le encuentro algún que otro defecto:
-
-* Definimos los modelos en lenguaje "Django". Está bien, pero no es "SQL-completo". Hay modelos, restricciones, etc. que no podremos expresar en este modelo, como por ejemplo, claves primarias compuestas o "listas ordenadas" (relaciones 1-n con campo de ordenación). El lenguaje para consultas tiene las limitaciones típicas de todos los ORM.
-* No me gusta Python. Me gusta la sintaxis estilo C, y exijo grandes ventajas a los que la descartan. Me gusta el tipado estático, y no estoy seguro que haya mucha magia en Django que necesite realmente tipado dinámico. Me gusta que mi editor trabaje por mi.
-* El sistema de plantillas está muy bien, pero es "regular" y no "gramatical", con lo que no admite expresiones donde debería ni otras estructuras muy convenientes. JSP con fragmentos de tag es *muy* superior
-* Tengo la sospecha que el funcionamiento sobre JVM no será para tirar cohetes. Además, si nos interesa funcionar sobre JVM, nos tenemos que limitar a Django 1.1 y evitar 1.2 de momento.
-* En general el sistema de internacionalización está muy bien, pero no soporta internacionalización en el modelo de datos (i.e. campos multilingües en las entidades)
-* No viene con nada para hacer Javascript/AJAX, aunque seguramente no sería de mi agrado, claro
-
-A pesar de esto, creo que es el mejor "framework completo" que he visto. Como plataforma "básica", sigo prefiriendo Java + Spring + Servlets + JSP + JSTL, pero creo que Django puede tener un lugar bastante importante en el arsenal de un desarrollador web. La pregunta es, ¿cuál es ese lugar?
-
-En mi opinión, Django ofrece una velocidad de desarrollo elevadísima para proyectos pequeños y medianos (siempre que no nos topemos con alguno de sus problemas). Para cosas gordas y/o que no encajen bien en Django, es lo de siempre; ¿hacerlo de cero o partir de un framework? Hacerlo de cero lógicamente es más tiempo, pero uno acaba conociendo intimamente la plataforma que hace y está toda a su gusto; usar un framework nos puede ahorrar tiempo, pero al hurgar dentro, a saber qué nos encontramos. Sospecho que las entrañas de Django están muy bien, pero... la decisión sigue siendo difícil. Mi poco amor por Python hace que probablemente yo no vaya a a apostar por Django más que para proyectos rápidos, pero intuyo que para muchos será una decisión más que acertada. \ No newline at end of file
diff --git a/blog_experiment/content/2011/01/mas-palos-y-astillas.gmi b/blog_experiment/content/2011/01/mas-palos-y-astillas.gmi
deleted file mode 100644
index ed0fb77c..00000000
--- a/blog_experiment/content/2011/01/mas-palos-y-astillas.gmi
+++ /dev/null
@@ -1,8 +0,0 @@
-# Más palos y astillas
-2011-01-29
-
-Actualizando este post anterior[1], una versión evolucionada del evolucionador de vehículos[2].
-
-
-=> gemini://alex.corcoles.net/2011/01/de-tal-palo-tal-astilla/ 1: gemini://alex.corcoles.net/2011/01/de-tal-palo-tal-astilla/
-=> http://www.boxcar2d.com/ 2: http://www.boxcar2d.com/ \ No newline at end of file
diff --git a/blog_experiment/content/2011/01/reacciones-viscerales.gmi b/blog_experiment/content/2011/01/reacciones-viscerales.gmi
deleted file mode 100644
index 1fb29bd0..00000000
--- a/blog_experiment/content/2011/01/reacciones-viscerales.gmi
+++ /dev/null
@@ -1,8 +0,0 @@
-# Reacciones viscerales
-2011-01-22
-
-=> images/sensacion_estomago.png pinto se cae de la lista por problemas estomacales - revilla: "el barça es invencible salvo que haya comido mal" [IMG]
-[1]
-
-
-=> http://alex.corcoles.net/wp-content/uploads/2011/01/sensacion_estomago.png 1: http://alex.corcoles.net/wp-content/uploads/2011/01/sensacion_estomago.png \ No newline at end of file
diff --git a/blog_experiment/content/2011/02/el-hombre-que-dirigia-demasiado.gmi b/blog_experiment/content/2011/02/el-hombre-que-dirigia-demasiado.gmi
deleted file mode 100644
index 4fc43bd4..00000000
--- a/blog_experiment/content/2011/02/el-hombre-que-dirigia-demasiado.gmi
+++ /dev/null
@@ -1,7 +0,0 @@
-# El hombre que dirigía demasiado
-2011-02-26
-
-Vimos y criticamos Cisne Negro[1].
-
-
-=> /laspelis/1078 1: /laspelis/1078 \ No newline at end of file
diff --git a/blog_experiment/content/2011/02/maventuras.gmi b/blog_experiment/content/2011/02/maventuras.gmi
deleted file mode 100644
index c7c2dd91..00000000
--- a/blog_experiment/content/2011/02/maventuras.gmi
+++ /dev/null
@@ -1,42 +0,0 @@
-# Maventuras
-2011-02-08
-
-Los que me conozcan sabrán que éste es un momento de derrota. Tras casi 9 años participando en proyectos de desarrollo Java, hoy he commitado a Subversion un pom.xml.
-
-La versión larga: voy a usar Maven profesionalmente.
-
-¿Qué es Maven, a todo esto? (los no informáticos, ya deberíais haber apagado hace tres párrafos).
-
-Maven es el estándar de facto para compilar (en moderno, hacer build-management) proyectos Java. Existe Ant (y otras cosas más modernas de las que hablaré más tarde), pero Ant es make, es una fantástica herramienta que puede hacer de todo, pero que por defecto, hace muy poco y, especialmente, no resuelve dos de las mayores pérdidas de tiempo en desarrollo Java:
-
-* Gestión de dependencias de terceros. Quieres usar Hibernate. Hibernate tiene como unas 15 dependencias directas, y algunas de esas dependencias tienen otras dependencias... resultado final, un ratito muy divertido descargando y colocando jars. Y, sobre todo, unas enormes ganas de actualizarse a versiones nuevas...
-* Dependencias entre proyectos. Uno quiere ser bueno y reusar código y modularizar. Poner las clases de utilidad que uno escribe siempre en un módulo que usen todos los proyectos. Hacer librerías de utilidad temáticas. Partir proyectos gordos en módulos separados. Pues bien, hacer un montaje que haga que el proyecto se pueda compilar automáticamente [pongamos con Ant] *y* que se integre propiamente en tu entorno [pongamos Eclipse], no es nada trivial. Queremos que al modificar una clase en un subproyecto, nos la cojan los proyectos de lo que depende. Esto, de hecho, es muy facilito de hacer en Eclipse... pero si quieres tener builds automáticos (pongamos, para hacer integración continua o barbaridades semejantes)... se complica el tema.
-
-Los primeros en solucionar esto, fueron los sres. de Maven, con dos elementos:
-
-* Un sistema para describir proyectos *declarativo* (Ant es imperativo), que contempla especificar dependencias
-* Un repositorio de librerías Java que contiene todas las librerías relevantes, con sus dependencias especificadas
-
-Con esto, yo puedo declarar que mi proyecto depende de Hibernate y Maven se descargará automágicamente todos los jars necesarios y los meterá en mi proyecto.  Esto ya sería suficiente, pero Maven ofrece más cosas:
-
-* Arquetipos.  Son una especie de plantillas de proyectos que te permiten crear proyectos típicos fácilmente (Eclipse ofrece algo similar, claro, pero Maven tiene más). Estos reducen, junto a la resolución de dependencias, permiten reducir bastante el coste de montar el esqueleto de un proyecto (nota: ¿más de lo que cuesta hacer funcionar Maven? No.). Estos arquetipos suelen estar bastante bien pensados (i.e. un arquetipo de proyecto web normalmente te generará un .war automáticamente, etc.).
-* Plugins. Todos esos programitas de unit testing, cobertura, análisis estático, etc. se ven traducidos en un plugin de Maven, que con añadirlo al descriptor del proyecto, ya se encarga de hacerlos funcionar casi automáticamente. Uno de estos plugins, por ejemplo, es el que te genera una mini-web de proyecto con documentación, javadocs, descargas, etc. que habréis visto mil veces si habéis visto webs de proyectos Java.
-
-Yo hasta ahora había evitado usar Maven. La primera vez, porque estaban en un momento de transición (de Maven 1 a 2, si no recuerdo mal), había poca documentación, la integración con Eclipse no parecía muy boyante y, por qué no decirlo, bastante NIH[1]. Acabé montando un sistema faraónico basado en Ant que si bien funcionaba como a mi me gustaba, era un poco pesado. Las veces siguientes, acabé reinventando mi pirámide, puliéndola a cada paso, pero haciéndola más complicada y aún no perfecta.
-
-Y hasta hoy hemos llegado.  Se plantea la necesidad de compilar proyectos complejos. La diferencia esta vez es que hay menos libertad inventar cosas y poca voluntad de imponer el sistema a otros. Hora de jugar con Maven.
-
-El primer descubrimiento, parece que hay plugin de Eclipse como Dios manda. Como siempre, hay un inconveniente. Si queremos integración con sistemas de control de versiones, tenemos que instalar los extras, y hay una pequeña nota en la web que dice:
-
-> M2Eclipse extensions are available from separate "extras" update site, see Installing m2eclipse for more details. *Not all extensions are compatible with the latest M2Eclipse version.*
-Esto, lógicamente, hace que nos rompamos la cabeza hasta el infinito intentando instalar la compatibilidad con Subversive hasta leer este párrafo. La solución, instalar la versión 0.10.
-
-Hasta ahora, poco más. El descubrimiento es que la manera Maven de gestionar multiproyectos pasa por tener un repositorio propio, cuando opino que no sería estrictamente necesario (al menos en mi caso particular), así que probablemente tendremos que añadir al coste de aprendizaje y montaje de Maven el montar un repositorio (los hay desde muy simples- una carpeta compartida, a auténticos mastodontes).
-
-Para el futuro:
-
-* Ver si acierto pensando que el repositorio de Maven público es bastante caótico y problemático. Existe un repositorio de Maven de Springsource que tiene buena pinta, pero... ¿estará mucho mejor organizado? Probablemente, sí. ¿Estará todo lo que necesito allí? Probablemente no. ¿Será problemático mezclar el repositorio público y el de Spring? Seguramente.
-* Ver si la cosa funcionará como debe o si requerirá de cuidados.
-
-
-=> http://en.wikipedia.org/wiki/Not_Invented_Here 1: http://en.wikipedia.org/wiki/Not_Invented_Here \ No newline at end of file
diff --git a/blog_experiment/content/2011/02/rostros-familiares.gmi b/blog_experiment/content/2011/02/rostros-familiares.gmi
deleted file mode 100644
index 2886b23e..00000000
--- a/blog_experiment/content/2011/02/rostros-familiares.gmi
+++ /dev/null
@@ -1,9 +0,0 @@
-# Rostros familiares
-2011-02-06
-
-15 años más tarde de hacer de "Animal Mother" en La Chaqueta Metálica[1], Adam Baldwin[2] encarnó a Jayne en Firefly[3].
-
-
-=> http://www.imdb.com/title/tt0093058/ 1: http://www.imdb.com/title/tt0093058/
-=> http://www.imdb.com/name/nm0000284/ 2: http://www.imdb.com/name/nm0000284/
-=> http://www.imdb.com/title/tt0303461/ 3: http://www.imdb.com/title/tt0303461/ \ No newline at end of file
diff --git a/blog_experiment/content/2011/02/serias-y-caninas-afecciones.gmi b/blog_experiment/content/2011/02/serias-y-caninas-afecciones.gmi
deleted file mode 100644
index 0c81f0c1..00000000
--- a/blog_experiment/content/2011/02/serias-y-caninas-afecciones.gmi
+++ /dev/null
@@ -1,6 +0,0 @@
-# Serias y caninas afecciones
-2011-02-26
-
-¿Cuál es la enfermedad que hace que uno se convierta en un doctor judío neoyorquino?
-
-La fleischmaniosis. \ No newline at end of file
diff --git a/blog_experiment/content/2011/02/sombrero-blanco.gmi b/blog_experiment/content/2011/02/sombrero-blanco.gmi
deleted file mode 100644
index f1e8b5bc..00000000
--- a/blog_experiment/content/2011/02/sombrero-blanco.gmi
+++ /dev/null
@@ -1,10 +0,0 @@
-# Sombrero blanco
-2011-02-07
-
-Los que tengáis ADSL con Movistar o Jazztel que no hayáis cambiado la clave original de encriptación del router, quizás querráis comprobar aquí[1] si vuestra clave es fácil de adivinar. La fuente, ./[2]
-
-Nota, puedo constatar que se trata de un problema real y grave. ¿Quiere saber más?
-
-
-=> http://kz.ath.cx/wlan/ 1: http://kz.ath.cx/wlan/
-=> http://espana.barrapunto.com/article.pl?sid=11/02/07/0412230 2: http://espana.barrapunto.com/article.pl?sid=11/02/07/0412230 \ No newline at end of file
diff --git a/blog_experiment/content/2011/03/geek-cuisine.gmi b/blog_experiment/content/2011/03/geek-cuisine.gmi
deleted file mode 100644
index 30cccf22..00000000
--- a/blog_experiment/content/2011/03/geek-cuisine.gmi
+++ /dev/null
@@ -1,9 +0,0 @@
-# Geek cuisine
-2011-03-19
-
-¿Existen cocineros geek por referencia? ¿Quién anda detrás de los pastelitos con temática de videojuego?
-
-Sin duda inspirado por el brillante KatHack[1], creo que debería servirse en toda fiesta geek un plato cubierto de delicias pegajosas y unas albóndigas de superficie adherente. ¿Dónde está Ferran Adrià cuando se le necesita?
-
-
-=> http://kathack.com/ 1: http://kathack.com/ \ No newline at end of file
diff --git a/blog_experiment/content/2011/03/git-gitosis-gradle.gmi b/blog_experiment/content/2011/03/git-gitosis-gradle.gmi
deleted file mode 100644
index 90d146a1..00000000
--- a/blog_experiment/content/2011/03/git-gitosis-gradle.gmi
+++ /dev/null
@@ -1,15 +0,0 @@
-# Git, gitosis, gradle
-2011-03-13
-
-Dos apuntes rápidos.
-
-Uno. Los que se hayan visto atraídos por git, ese sistema de control de versiones distribuido tan molón se habrán dado cuenta que es un poco rollo montar un repositorio para que lo usen varias personas. Repositorios desnudos, autenticación UNIX, etc. ... son cosas que dan mucho palo. Resulta ser que existe una solución simple que es gitosis[1]. gitosis se instala fácilmente (está hasta en EPEL para los amigos de CentOS/RHEL) y resuelve muy rápidamente todos estos problemas.
-
-Dos. Pese a que admití que iba a usar Maven[2], como hobby me estoy mirando gradle[3]. Gradle es Ant[4], pero en Groovy[5] en vez de xml, añadiendo elementos de Maven como son la gestión de las dependencias (del famoso repositorio) y superándolo (al parecer) en asuntos como la gestión de proyectos interrelacionados. El defecto que le he visto hasta ahora es que no hay una integración obvia y potente con Eclipse como puede ser el soporte de Eclipse para Ant o ese callejon oscuro que es m2eclipse, pero por el momento parece proporcionar la potencia de Maven, pero con la sencillez de Ant y sin el cansancio del XML.
-
-
-=> http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way 1: http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way
-=> gemini://alex.corcoles.net/2011/02/maventuras/ 2: gemini://alex.corcoles.net/2011/02/maventuras/
-=> http://www.gradle.org/ 3: http://www.gradle.org/
-=> http://ant.apache.org/ 4: http://ant.apache.org/
-=> http://groovy.codehaus.org/ 5: http://groovy.codehaus.org/ \ No newline at end of file
diff --git a/blog_experiment/content/2011/03/omniawesome.gmi b/blog_experiment/content/2011/03/omniawesome.gmi
deleted file mode 100644
index 36f2521d..00000000
--- a/blog_experiment/content/2011/03/omniawesome.gmi
+++ /dev/null
@@ -1,8 +0,0 @@
-# Omniawesome
-2011-03-26
-
-Los que uséis Google Chrome y echéis en falta la *asombrosidad* de la Awesome Bar de Firefox[1], about:flags[2] y "Enable better omnibox history matching".
-
-
-=> http://blog.mozilla.com/blog/2008/04/21/a-little-something-awesome-about-firefox-3/ 1: http://blog.mozilla.com/blog/2008/04/21/a-little-something-awesome-about-firefox-3/
-=> about:flags 2: about:flags \ No newline at end of file
diff --git a/blog_experiment/content/2011/03/oscar-pero-que-haces.gmi b/blog_experiment/content/2011/03/oscar-pero-que-haces.gmi
deleted file mode 100644
index e82c693d..00000000
--- a/blog_experiment/content/2011/03/oscar-pero-que-haces.gmi
+++ /dev/null
@@ -1,18 +0,0 @@
-# Óscar, pero qué haces
-2011-03-25
-
-Hay gente que se sorprende que Pat Morita fuera nominado al Óscar al mejor actor de reparto en 1984 por su interpretación del sr. Miyagi en Karate Kid.
-
-La verdad, a mi me sorprende mucho más que Superdetective en Hollywood fuera nominada ese mismo año por mejor guión original.
-
-En general, por supuesto, suele sorprender mucho más mi ejemplo predilecto: las 10 nominaciones y 3 estatuillas para Rocky en 1976- incluyendo el premio a mejor película por delante de:
-
-* Taxi Driver
-* Todos los hombres del presidente
-* Network
-* Esta tierra es mi tierra
-
-... y una nominación que no llevó a victoria fue a mejor canción original por Gonna Fly Now[1], que perdió frente a Barbra Streisand.
-
-
-=> https://farside.link/invidious/watch?v=ioE_O7Lm0I4 1: https://farside.link/invidious/watch?v=ioE_O7Lm0I4 \ No newline at end of file
diff --git a/blog_experiment/content/2011/03/una-maquina-segun-turing.gmi b/blog_experiment/content/2011/03/una-maquina-segun-turing.gmi
deleted file mode 100644
index 1ac34429..00000000
--- a/blog_experiment/content/2011/03/una-maquina-segun-turing.gmi
+++ /dev/null
@@ -1,7 +0,0 @@
-# Una máquina según Turing
-2011-03-25
-
-Elbot[1], uno de los programas que más se ha acercado a pasar el test de Turing. Más que algunos humanos, diríase.
-
-
-=> http://www.elbot.com/ 1: http://www.elbot.com/ \ No newline at end of file
diff --git a/blog_experiment/content/2011/04/alerces.gmi b/blog_experiment/content/2011/04/alerces.gmi
deleted file mode 100644
index eff03fba..00000000
--- a/blog_experiment/content/2011/04/alerces.gmi
+++ /dev/null
@@ -1,10 +0,0 @@
-# Alerces
-2011-04-03
-
-Nota mental:
-
-* Si queremos copiar grandes cantidades de correo de un servidor IMAP a otro, Larch[1] es la respuesta
-* Si disponemos de aún el más cutre servidor compartido donde lo podamos instalar, este tendrá más ancho de banda que nuestra ADSL doméstica y Larch irá más rápido
-
-
-=> https://github.com/rgrove/larch 1: https://github.com/rgrove/larch \ No newline at end of file
diff --git a/blog_experiment/content/2011/04/como-un-maldito-replicante.gmi b/blog_experiment/content/2011/04/como-un-maldito-replicante.gmi
deleted file mode 100644
index a51a630c..00000000
--- a/blog_experiment/content/2011/04/como-un-maldito-replicante.gmi
+++ /dev/null
@@ -1,21 +0,0 @@
-# Como un maldito replicante
-2011-04-21
-
-Me hallo en la enésima reorganización de mi preciado correo electrónico. Nada, abrirme un Google Apps Standard bajo un dominio propio mío, para poder gozar de algunas de las cosas de Google Apps (¿cuáles? No estoy seguro). Por supuesto, estoy aprovechando para reclasificar y agrupar correo, de manera que todos los preciosos mensajes estén almacenados centralizadamente (y duplicados).
-
-Para ello, estoy recogiendo el correo de todas mis cuentas de correo activas- que sin incluir una o dos direcciones que desaparecieron en el olvido, son:
-
-* La cuenta de correo de mi universidad, de la cuál no soy alumno desde hace más de 5 años, pero ahí sigue abierta
-* Mi cuenta personal, alex-arroba-corcoles-punto-net, en un alojamiento familiar compartido
-* Mi cuenta "secundaria" en fastmail.fm, que recién fueron comprados por Opera y siguen siendo uno de los pocos proveedores que dan cuentas IMAP gratuitas- si no podéis usar GMail por algún motivo o queréis una cuenta IMAP menos especial, los recomiendo
-* Mi cuenta en mi compañía de móvil- la cuál prometía push al móvil, pero que nunca he conseguido hacer funcionar
-* Mi cuenta de GMail, que utilizo para muchos servicios de Google, pero curiosamente uso relativamente poco para correo (en realidad, tenía mi cuenta de correo personal redirigida a GMail como archivo y para usar GMail de webmail donde no tengo Thunderbird)
-* Una cuenta alternativa de GMail
-
-Es interesante comprobar cosas como que apostar por IMAP desde el principio fue complicado, pero me ha permitido conservar correo casi sin esfuerzo- he recuperado correo hasta del 99, unos 11.000 mensajes de correo totalizando 685 megas (63kb por email). Lamentablemente, he podido cuantificar bastante correo enviado perdido- sólo conservo 2400 correos escritos por mi mismo. Los números están aquí[1], pequeña gráfica:
-
-=> https://spreadsheets.google.com/a/pdp7.net/spreadsheet/oimg?key=0Atd_0Z9UHnqJdDhzOGQ1T09PeWozX1pnVkVhNm1DMEE&oid=2&zx=2o7nzs59hs8k Uso de email anual [IMG]
-Puede apreciarse que, tras conseguir mi cuenta de Gmail (el 15/4/2004)... conservo bastante más correo y recibo más correo, in crescendo hasta hoy donde estoy de media en 6 emails diarios. En cambio desde 2004, parece ser que escribo menos; de 1,2 al día en 2004 hasta 0,8 en 2010.
-
-
-=> https://spreadsheets.google.com/a/pdp7.net/spreadsheet/pub?hl=en&amp;hl=en&amp;key=0Atd_0Z9UHnqJdDhzOGQ1T09PeWozX1pnVkVhNm1DMEE&amp;single=true&amp;gid=0&amp;output=html 1: https://spreadsheets.google.com/a/pdp7.net/spreadsheet/pub?hl=en&amp;hl=en&amp;key=0Atd_0Z9UHnqJdDhzOGQ1T09PeWozX1pnVkVhNm1DMEE&amp;single=true&amp;gid=0&amp;output=html \ No newline at end of file
diff --git a/blog_experiment/content/2011/04/hazanas-informaticas-i-internet.gmi b/blog_experiment/content/2011/04/hazanas-informaticas-i-internet.gmi
deleted file mode 100644
index a56a1a5f..00000000
--- a/blog_experiment/content/2011/04/hazanas-informaticas-i-internet.gmi
+++ /dev/null
@@ -1,30 +0,0 @@
-# Hazañas informáticas I: Internet
-2011-04-21
-
-En los inicios, había muy poquitos ordenadores- grandes como habitaciones e increíblemente caros. Muchos de estos ordenadores tenían múltiples pantallas y teclados para que los pudiesen utilizar simultáneamente muchas personas y que se rentabilizasen mejor. Cada ordenador era un mundo en sí mismo. Algunos de estos ordenadores permitían la comunicación entre personas sentadas en diferentes terminales.
-
-Pronto, comenzaron a aparecer más y más ordenadores en el mundo. Algunos entes privilegiados podían disponer de varios ordenadores, y pronto surgió la necesidad de comunicarlos ente ellos; la capacidad de una máquina siempre nos es insuficiente y queremos realizar operaciones que aprovechen la capacidad de varios ordenadores.
-
-Éste es un problema de fácil solución; los ordenadores trabajan con impulsos eléctricos y con compartir un medio conductor (léase, un hilo de cobre conectado a dos ordenadores), estos pueden enviarse datos codificándolos como descargas eléctricas de una manera muy similar a como funciona un solo ordenador internamente.
-
-Este sistema ha funcionado perfectamente hasta el día de hoy- con no tantas evoluciones, existen hoy infinidad de redes con cientos de ordenadores comunicados a grandes velocidades entre sí mediante lo que es en esencia un hilo de cobre que pasa por todos ellos.
-
-El análogo humano es una habitación llena de personas hablando a viva voz. Todo el mundo puede oír a todo el mundo y se pueden realizar todo tipo de conversaciones- un profesor puede dar clase a cientos de alumnos que le escuchan; un montón de parejas pueden estar en una sala de baile hablando entre ellas y grupos de conversación pueden formarse y deshacerse fácilmente.
-
-Este esquema sencillo, lamentablemente, no funciona bien a gran escala. Intuitivamente vemos que compartir un solo cable de cobre entre una gran cantidad de ordenadores puede ser problemático. Nuestra sala con gente hablando deja de funcionar cuando las distancias son suficientes como para no oir- y si hay demasiada gente hablando, nace la confusión.
-
-Los genios de ARPANET no se aturullaron delante de estos problemas y encontraron una solución simple y efectiva para este problema. Las redes locales de unos cuantos ordenadores funcionan maravillosamente bien, dijeron; no hace falta abandonar ni complicar este modelo. Sencillamente, interconectemos las redes entre sí.
-
-Las comunicaciones locales pueden funcionar como hasta ahora. Lo único que tenemos que hacer es introducir unos dispositivos que tengan un pie en una red, y otro pie en otra. Cuando un ordenador en una red quiera comunicarse con otro ordenador en otra red, se dirigirá al dispositivo de su red que se comunica con otras redes y le entregará la información que quiere transmitir. Si el destinatario está en la otra red, el dispositivo no tiene más que entregárselo. Si no, lo único que tiene que buscar es otro dispositivo de este tipo que esté conectado con otra red que esté más cerca del destinatario y entregarle la información- así la información irá saltando de red en red hasta llegar a su destino.
-
-Esto, en esencia, es internet. El "inter" es de interconexión de redes. El modelo se completa con un sistema de direcciones universales, las famosas IP con las que se identifica a cada dispositivo que vive en Internet- y el sistema de puertos, que identifica en cada dispositivo varios puntos de envío y recepción de datos (un puerto para el correo electrónico, un puerto para el tráfico web, etc.). Encima de esto, el sistema DNS que hace que los humanos podamos usar nombres en vez de IPs numéricas para referirnos a los dispositivos que viven en Internet y los diferentes protocolos que rigen los diferentes servicios que funcionan sobre internet.
-
-Pese a que internet y su ecosistema asociado es infinitamente complejo, la gran virtud es que se basa en un modelo sencillo y elegante- simples redes locales interconectadas.
-
-Próximas entregas:
-
-* Hazañas informáticas II: el modelo de datos relacional
-* Hazañas informáticas III: La criptografía asimétrica
-* Hazañas informáticas IV: Las funciones hash
-* Hazañas informáticas V: Las máquinas de Turing y Von Neumann
-* Hazañas informáticas VI: el sistema UNIX \ No newline at end of file
diff --git a/blog_experiment/content/2011/04/hazanas-informaticas-ii-el-modelo-de-datos-relacional.gmi b/blog_experiment/content/2011/04/hazanas-informaticas-ii-el-modelo-de-datos-relacional.gmi
deleted file mode 100644
index 37d1d407..00000000
--- a/blog_experiment/content/2011/04/hazanas-informaticas-ii-el-modelo-de-datos-relacional.gmi
+++ /dev/null
@@ -1,73 +0,0 @@
-# Hazañas informáticas II: el modelo de datos relacional
-2011-04-24
-
-Los primeros ordenadores se destinaron a la introducción y proceso de datos- no en vano los orígenes de IBM se remontan a la gestión del censo de habitantes de los Estados Unidos. Naturalmente, hasta el más primitivo de los sistemas de programación provee de primitivas de almacenamiento de datos, mecanismos sencillos para almacenar, organizar y acceder a datos en la memoria volátil del sistema (es decir, que estos datos se pierden al finalizar la ejecución del programa).
-
-Rápidamente, los programadores se ocuparon de implementar funcionalidades que almacenaban estos datos en algún soporte persistente, de manera que los datos se conserven entre ejecución y ejecución del programa, y diseñaron maneras de organizar los datos de manera que las operaciones que se quieren realizar con ellos se hagan de una manera eficiente.
-
-E. F. Codd, allá por 1969, planteó un sistema generalizado de almacenamiento y proceso de datos basado en unos principios muy sencillos.
-
-Codd se dio cuenta que la información que típicamente se quería procesar se podía particionar en hechos simples, del siguiente estilo:
-
-* La factura #1 es a nombre de Javier Sánchez, a fecha 3/12/2007
-* La factura #2 es a nombre de Lucía Martínez, a fecha 5/12/2007
-* ...
-* La línea 1 de la factura #32 es para "Mano de obra", precio 300€
-* La línea 2 de la factura #32 es para "Materiales", precio 450€
-
-Podemos escribir estos hechos de una manera compacta empleando dos tablas:
-
-```table
-┌───────────────────┬────────────────┬───────────┐
-│ Número de factura │ Nombre │ Fecha │
-╞═══════════════════╪════════════════╪═══════════╡
-│ 1 │ Javier Sánchez │ 3/12/2007 │
-├───────────────────┼────────────────┼───────────┤
-│ 2 │ Lucía Martínez │ 5/12/2007 │
-├───────────────────┼────────────────┼───────────┤
-│ ... │ ... │ ... │
-└───────────────────┴────────────────┴───────────┘
-```
-```table
-┌───────────────────┬───────┬──────────────┬──────────┐
-│ Número de factura │ Línea │ Concepto │ Cantidad │
-╞═══════════════════╪═══════╪══════════════╪══════════╡
-│ 32 │ 1 │ Mano de obra │ 300€ │
-├───────────────────┼───────┼──────────────┼──────────┤
-│ 32 │ 2 │ Materiales │ 450€ │
-├───────────────────┼───────┼──────────────┼──────────┤
-│ ... │ ... │ ... │ ... │
-└───────────────────┴───────┴──────────────┴──────────┘
-```
-Cuando usemos el modelo relacional, definiremos las "tablas" (relaciones) que usaremos en nuestra aplicación, especificando qué "columnas" (atributos) tendrán y qué tipo de valores podrán ponerse en cada columna (en el ejemplo anterior, números de factura, números de línea, nombres, conceptos, fechas y cantidades).
-
-Los sistemas de bases de datos relacionales nos permiten definir con precisión estas tablas, insertar valores, actualizarlos y realizar consultas sobre ellos (e.g. ¿cuál es la fecha del último pedido de Miguel Hernández?), sin preocuparnos de la implementación real de esta estructura de datos, su almacenamiento persistente ni los algoritmos de búsqueda para las consultas.
-
-El trabajo con las bases de datos relacionales se realiza a través de un lenguaje específico adaptado a ellas; el lenguaje más común se conoce como SQL (Structured Query Language) mediante el cuál podemos expresar cosas como:
-
-create table facturas (   numero_factura          numero,   nombre                  texto,   fecha_factura           fecha );
-
-Que define la tabla facturas con las columnas que hemos visto anteriormente, o:
-
-insert into facturas(numero_factura, nombre, fecha_factura) values (1, 'Javier Sánchez', 3/12/2007);
-
-, que nos permite insertar uno de los hechos que hemos tabulado antes y consultas como:
-
-select max(fecha) from facturas where nombre = 'Miguel Hernández';
-
-a la que nos referíamos anteriormente.
-
-Fijémonos que estas consultas son "declarativas", es decir que no hablan de cómo se deben almacenar estos datos ni realizarse estas operaciones, sino que sólo dicen "qué se quiere hacer".
-
-Un siguiente paso interesante en el trabajo con estas relaciones es darnos cuenta que podemos trabajar con varias tablas simultáneamente que comparten información. Por ejemplo, podríamos preguntarnos cuánto se ha gastado Ana Jiménez en concepto de mano de obra entre todos sus pedidos; la tabla de pedidos nos dice qué facturas corresponden a Ana Jiménez y la tabla de líneas de facturas nos dice qué líneas de factura son de mano de obra y por qué cantidad- podemos asociar las dos tablas mediante la columna número de factura presente en ambas. Mediante una sencilla abstracción matemática, podemos realizar consultas y operaciones sobre varias tablas utilizando las posibles asociaciones que haya entre ellas.
-
-Como el modelo relacional es tremendamente abstracto, es apropiado para una gran cantidad de aplicaciones. Así pues, se han desarrollado implementaciones de bases de datos que utilizan el modelo relacional que podemos usar en nuestros programas en vez de tener que "reinventar la rueda" del almacenamiento de datos constantemente. Además, resulta que toda "mejora" que se introduzca en una de estas implementaciones se aprovecha inmediatamente por todas las aplicaciones que usen la implementación.  Por ejemplo, las operaciones entre varias tablas se pueden beneficiar de técnicas de optimización que hacen que las bases de datos sean muchísimo más rápidas que las implementaciones simples de estas operaciones.
-
-Adicionalmente, las aplicaciones se benefician de otras características de los sistemas de gestión de base de datos, como son:
-
-* Restricciones de integridad. Podemos definir en la base de datos restricciones que deben cumplir los datos para considerarse correctos. Por ejemplo, una factura para ser correcta debe incluir un número correcto, un nombre y una fecha válida, evitando que se puedan introducir datos inválidos. Más allá, podemos decir cosas más interesantes como que el número de factura de una línea de factura debe corresponder a un número de factura en la tabla de facturas.
-* Transacciones. Muchas veces una serie de operaciones sobre una base de datos deben realizarse en conjunto o no realizarse. Por ejemplo, una transferencia bancaria debe incluir un cargo en la cuenta origen y un ingreso en la cuenta destino; claramente si una de las dos operaciones falla, la otra no puede realizarse.
-
-Estas y otras facilidades que ofrecen las bases de datos no son triviales de implementar, y el hecho de poder aprovechar la implementación de la base de datos nos permite desarrollar nuestra aplicación más rápidamente sin tenernos que preocupar de estos complicados detalles.
-
-Hoy en día, tras más de 40 de años desde su invención, el modelo relacional es el estándar de facto para almacenamiento de datos en aplicaciones donde la integridad de los datos es vital- y es también inmensamente popular en aplicaciones menos críticas por su conveniencia, sencillez y velocidad. \ No newline at end of file
diff --git a/blog_experiment/content/2011/04/hazanas-informaticas-iii-la-criptografia-asimetrica.gmi b/blog_experiment/content/2011/04/hazanas-informaticas-iii-la-criptografia-asimetrica.gmi
deleted file mode 100644
index 2ff727ae..00000000
--- a/blog_experiment/content/2011/04/hazanas-informaticas-iii-la-criptografia-asimetrica.gmi
+++ /dev/null
@@ -1,32 +0,0 @@
-# Hazañas informáticas III: la criptografía asimétrica
-2011-04-25
-
-Desde el principio de los tiempos, los humanos han deseado en ocasiones mantener la privacidad de sus comunicaciones. En tiempos de los romanos ya se utilizaban técnicas de criptografía como el cifrado César para las comunicaciones militares.
-
-El cifrado César consiste en la sustitución simple de unas letras por otras, por ejemplo, sustituir la "a" por "c", "b" por "d", "c" por "e", etc. Con lo que por ejemplo, "cifrado cesar" se convertiría en "ekhtcfq eguct". Este sistema (y muchos otros) se basa en el secreto del sistema- sólo el emisor y receptor del mensaje conocen el método de cifrado y la manera en la que se realiza- en este caso, que cada letra se sustituye por la letra que existe a dos posiciones en el orden alfabético; lo que se conoce como clave secreta.
-
-A pesar de que el cifrado César no ofrece prácticamente ninguna seguridad (una persona que intercepte un mensaje puede fácilmente deducir el sistema usado y desencriptarlo), sí que existen mecanismos de encriptación muy potentes basados en el secreto de la clave (básicamente, un sistema de clave secreta fuerte es aquel en el que podemos hacer que los mensajes sean más difícilmente desencriptables escogiendo claves más complejas).
-
-Sin embargo, en muchas situaciones, los sistemas de claves secretas no son muy útiles. Para hacerlos funcionar, el emisor y el receptor deben poder compartir la clave de una manera segura antes de poder utilizarla.
-
-Pongamos por ejemplo el caso de que queramos realizar transacciones seguras por internet, por ejemplo compras online. Como internet no es un canal de comunicación seguro (es razonablemente sencillo espiar, interceptar y alterar comunicaciones), antes de realizar cualquier compra a un vendedor online, deberíamos poder quedar con el vendedor y acordar una clave secreta por un canal seguro- por ejemplo, quedando presencialmente e intercambiando la clave, algo que no parece nada práctico.
-
-Un investigador de una agencia de inteligencia británica dio en 1973 con un sistema tremendamente sencillo para resolver este problema. Lamentablemente, no lo pudo implementar ni publicar- ya que en ese momento no disponían de los sistemas informáticos suficientemente potentes como para hacerlo funcionar, y al formar parte de una agencia de inteligencia, se consideró un secreto de estado. En 1978, un trío de matemáticos- Rivest, Shamir y Adleman redescubrieron independientemente este sistema y lo publicaron con un nombre tomado de sus iniciales: RSA.
-
-El sistema se basa en un concepto sencillo. En los esquemas de clave secreta, se utiliza una única clave y dos funciones matemáticas de codificación y decodificación. Formalmente, sea un mensaje m, una clave k, y dos funciones E(m,k) y D(m,k), se cumple que D(E(m,k),k)=m; es decir, que las codificar y decodificar un mensaje con la misma clave, se obtiene de nuevo el mensaje original.
-
-El nuevo esquema RSA se basa en que las claves de codificación y decodificación son diferentes, y a pesar de que están íntimamente relacionadas, conocer una no implica conocer la otra. Con esto, yo puedo crear un par de claves; a una la llamaré clave pública y a la otra privada- siguiendo sus nombres, difundiré mi clave pública pero conservaré en secreto mi clave privada.
-
-Así, cualquiera que quiera enviarme un mensaje, podrá coger mi clave pública y codificar el mensaje con ella. Sólo yo, con mi clave privada, podré descifrarlo.
-
-Es decir, si pub es mi clave pública y prv mi clave privada, C la función de codificación y D la de decodificación, D(C(m,pub), prv)=m
-
-Una propiedad interesante de este sistema es que si las funciones se escogen de manera que este proceso funciona a la inversa (puedo "decodificar" con la clave privada primero y al "recodificar" con la clave pública recupero el mensaje original también), yo puedo coger un mensaje y codificarlo con mi clave privada. Si publico el mensaje y la versión codificada, cualquiera que conozca mi clave pública podrá decodificar el mensaje que he codificado y verificar que coincide con el mensaje original. Poder codificar el mensaje de esta manera para que la gente lo pueda verificar sólo lo puede hacer el conocedor de la clave privada- así pues esta operación permite demostrar que el mensaje proviene del propietario de la clave privada. A esta operación se la denomina firma digital y tiene todas las utilidades de una firma en papel tradicional (con la ventaja que es más difícil de falsificar).
-
-¿Cómo funciona este sistema? Pues tanto el investigador inglés como los señores RSA, tuvieron la brillante idea de realizar este esquema al ver el pequeño teorema de Fermat y/o el teorema de Euler. Estos teoremas sobre exponenciación, números primos y cocientes nos permiten encontrar una función de codificación y decodificación (exponenciación y cociente) usando como exponentes y cocientes unos números concretos basados en números primos que permiten que funcione todo esto. Las operaciones de codificación y decodificación son opuestas, y a pesar de que los números (claves) privados y públicos están profundamente relacionados, su relación no es fácilmente descubrible- para descubrirla hemos de factorizar en primos los números que lo componen, lo cuál es un problema complejo.
-
-Lo mejor de todo es que obtener claves muy muy grandes (que hacen que la descomposición sea lenta), es muy sencillo. Podemos generar números primos gigantescos con relativa facilidad, y al componerlos, obtener un número enorme cuya descomposición es infinitamente más costosa.
-
-El sistema RSA lo tiene todo: es muy, muy sencillo, podemos hacerlo tan difícilmente de romper como queramos (buscando primos mayores)... lo único que falla es que es relativamente lento; las operaciones de codificación son lentas. La solución aquí es sencilla- los esquemas de clave privada tienen a ser extremadamente veloces, así que normalmente lo que haremos es usar el sistema de criptografía asimétrica para intercambiar una clave para una codificación de clave privada; así el sistema de clave pública nos resuelve el problema de compartir la clave privada por un canal seguro: usamos la criptografía de clave pública para hacerlo, y a partir de entonces usamos los veloces algoritmos de clave privada para realizar el resto de comunicaciones.
-
-Este sistema es usado hoy en día en la mayoría de aplicaciones de seguridad informática. El criptosistema RSA basado en números primos sigue siendo la implementación más popular- existe un sistema alternativo basado en "curvas elípticas" que se considera más seguro, pero es mucho más complejo y, sobre todo, que algunas de estas curvas elípticas están patentadas y no está claro si se pueden realizar implementaciones de este sistema sin pagar a sus inventores (mientras que el sistema RSA es "libre"). \ No newline at end of file
diff --git a/blog_experiment/content/2011/04/holandeses-voladores-ciclos-y-tendencias.gmi b/blog_experiment/content/2011/04/holandeses-voladores-ciclos-y-tendencias.gmi
deleted file mode 100644
index 635b434e..00000000
--- a/blog_experiment/content/2011/04/holandeses-voladores-ciclos-y-tendencias.gmi
+++ /dev/null
@@ -1,36 +0,0 @@
-# Holandeses voladores, ciclos y tendencias
-2011-04-25
-
-La liga española de fútbol se fundó en 1929. El Real Madrid es el equipo que más veces la ha ganado, con 31 campeonatos, seguido del FC Barcelona con 20 y sólo en 28 ocasiones otro equipo se ha llevado el gato al agua- es decir, menos de un 40%.
-
-Desde la temporada de 1929 hasta la temporada 1952-53, el FC Barcelona llevaba una ligera ventaja al Real Madrid, 6-2; aunque la liga estaba bastante más disputada; el Athletic de Bilbao se la llevó en 5 ocasiones, el Atlético de Madrid/Atlético de Aviación 4 y el Valencia 3- un 60% de las ligas se las llevaba alguien que no era ni Barça ni Madrid.
-
-A partir de 1953-54, se da un cambio de tendencia. Hasta la temporada 87-88, el Madrid ganaría 21 ligas de 35 (el 60%), mientras que el Barça sólo ganó 4, empatado con el Atlético de Madrid y seguido del Athletic de Bilbao con 3.
-
-En 1988, sin embargo, hubo un hecho que cambió otra vez la tendencia. Un holandés llamado Johann Cruyff fichó como entrenador del FC Barcelona. No ganó la liga el primer año que estuvo, ni el segundo (las ganó el Madrid), pero ganó cuatro ligas seguidas desde la temporada 1990-91 a la 1993-94. Hasta que se marchó al final de la temporada 1995-96, con esas 4 ligas se impuso estrechamente a las 3 conseguidas por el Real Madrid- más la primera Copa de Europa conseguida por el FC Barcelona.
-
-A partir de entonces,  se han disputado 14 ligas más, en las que el FC Barcelona sigue ligeramente por delante del Real Madrid con 6 títulos ligueros contra 5 del Real Madrid.
-
-Está claro que desde los años 50 hay dos grandes periodos, separados por la llegada de Cruyff al Barcelona; tomando como punto de referencia la primera liga de Cruyff, los números cantan: 23-4 para el Real Madrid primero y 10-6 para el FC Barcelona luego. De un dominio aplastante del Real Madrid (mayoría absoluta [60%] de victorias) a una ligera superioridad culé (sólo si este año gana la liga llegará al 50%).
-
-Mientras tanto, en Europa... ¿qué pasó?
-
-Pues algo parecido, hasta la primera liga de Cruyff, el Real Madrid había ganado la Copa de Europa en 6 ocasiones; las 5 primeras ediciones de la competición más una más en el 65. El FC Barcelona, ninguna.
-
-A partir del 92, año donde Cruyff ganó su segunda liga, el Barça se ha llevado 3 copas de Europa, 1991-92 con Cruyff, 2005-06 con Rijkaard y 2008-09 con Guardiola. En el mismo periodo, el Real Madrid iguala esto con las 3 del 1997-98 (entrenados por Heynckes y gol en la final de Mijatovic), 1999-2000 y 2001-02 (las dos con del Bosque en el banquillo, la 2001-02 con Zidane y los galácticos).
-
-¿Existen ciclos de dominación?
-
-Yo creo que sólo existe uno, la hegemonía del Real Madrid hasta la segunda liga de Cruyff en el 91; 6 copas de Europa y el 60% de las ligas.
-
-Tras llegar Cruyff, tras sus 4 ligas, realmente hay una igualdad a 6 ligas y 3 copas de Europa. Si consideramos que de las 4 ligas de Cruyff, la mitad se ganaron en la última jornada por cataclismos merengues en Tenerife... tenemos más argumentos en favor de esta igualdad.
-
-A parte de esto, cabe apuntar que a partir del 91, el Madrid sólo ha conseguido dos ligas seguidas una vez; 2006-07 y 2007-08- curiosamente la primera con Capello, que fue cesado tras ganar para que llegase Bernd Schuster, yo no las consideraría una racha; eran dos equipos bastante diferentes. Si acaso la racha serían las dos copas de Europa seguidas mencionadas anteriormente conseguidas por Del Bosque.
-
-En el Barcelona, algo similar. Consiguió dos ligas seguidas en 1997-98 y 1998-99, la primera con Robson y la segunda con Van Gaal; 2004-05 y 2005-06; estas sí que ambas con Rijkaard y 2008-09/2009-10 con Guardiola.
-
-Es decir, que no ha habido prácticamente continuidad.
-
-Todo esto me lleva a pensar que sí, Cruyff entrenador cambió sustancialmente la dinámica de la liga Española. De la hegemonía del Madrid hemos pasado a una hegemonía de Barça **y** Real Madrid, con una ligera, ligerísima ventaja para el FC Barcelona conseguida en la mejor época cruyffista.
-
-Hasta que no pasen unos cuantos años más, creo que no podremos decir mucho más. \ No newline at end of file
diff --git a/blog_experiment/content/2011/04/moviolas-del-siglo-xxi.gmi b/blog_experiment/content/2011/04/moviolas-del-siglo-xxi.gmi
deleted file mode 100644
index 5a107165..00000000
--- a/blog_experiment/content/2011/04/moviolas-del-siglo-xxi.gmi
+++ /dev/null
@@ -1,8 +0,0 @@
-# Moviolas del siglo XXI
-2011-04-18
-
-Me pasan este acojonante reproductor de grandes premios[1]. No sólo es un gran ejemplo de visualización de datos (curioso, me pedí el Tufte[2] ayer), ni tampoco un gran ejemplo de lo que se puede hacer con eso de los estándares web, sino además un excelente recurso para enterarse a posteriori de lo que ha pasado en un GP.
-
-
-=> http://especiales.lainformacion.com/deportes/simulador-f1/?c=china 1: http://especiales.lainformacion.com/deportes/simulador-f1/?c=china
-=> http://www.amazon.co.uk/gp/product/0961392142 2: http://www.amazon.co.uk/gp/product/0961392142 \ No newline at end of file
diff --git a/blog_experiment/content/2011/05/hazanas-informaticas-iv-las-funciones-hash.gmi b/blog_experiment/content/2011/05/hazanas-informaticas-iv-las-funciones-hash.gmi
deleted file mode 100644
index 7399e52e..00000000
--- a/blog_experiment/content/2011/05/hazanas-informaticas-iv-las-funciones-hash.gmi
+++ /dev/null
@@ -1,62 +0,0 @@
-# Hazañas informáticas IV: Las funciones hash
-2011-05-14
-
-Los mayores problemas de rendimiento de un sistema informático vienen causados por tener que trabajar con volúmenes grandes de información. La mayoría de algoritmos tienen un tiempo de ejecución relacionado con el tamaño de la información que manejan. Por ejemplo, encontrar el valor máximo de un conjunto de valores es directamente proporcional al tamaño del conjunto- si duplicamos el tamaño del conjunto, tardamos el doble en encontrar el  máximo.
-
-También es obvio que el tamaño de los datos afecta también a la velocidad de las comunicaciones- bajarse un fichero de dos megas normalmente cuesta el doble que uno de un mega.
-
-Así pues, parece una obviedad que reduciendo el tamaño de los datos con los que trabajamos, normalmente incrementaremos la velocidad de nuestros cálculos y/o nuestras comunicaciones.
-
-Por ejemplo, si comprimimos archivos que queremos transferir, reduciendo su tamaño, los podremos comunicar más rápidamente. Existen algoritmos de compresión que permiten reducir el tamaño de los datos sin perder fidelidad, con lo cual la mayoría de veces nos interesa transmitir datos comprimidos (sobre todo en el caso común en el que la compresión es efectiva y más rápida que la transferencia en sí).
-
-Hay algoritmos de compresión que no conservan la fidelidad con el archivo original; el popular formato de imagen jpeg permite comprimir imágenes fotográficas muchísimo, pero sacrificando la calidad de la imagen- la gracia del algoritmo es que la calidad que se pierde a menudo es imperceptible o despreciable.
-
-Los algoritmos de compresión con pérdida son muy útiles- eliminando el requerimiento de conservar toda la información, se consiguen cotas de compresión muchísimo más elevadas de lo que se pueden conseguir mediante algoritmos que preservan todos los datos.
-
-Existe una cosa parecida pero que da un paso más, que son las funciones hash.
-
-Una función hash es en cierta manera una compresión- se coge unos datos de un tamaño arbitrario y se obtienen unos datos mucho más pequeños. Un hash típico da como resultado un puñado de bytes (16, 32, etc.) a partir de entradas de cualquier tamaño.
-
-Está claro que debe haber una pérdida sustancial de información al pasar de una cosa a otra. Cierto. Es más, la mayoría de funciones hash no permiten reconstrucción alguna de los datos originales a partir del hash.
-
-¿Para qué puede servir algo que supone esta pérdida de información?
-
-La utilidad de las funciones hash viene dada por una propiedad muy simple. Una función hash debe ser determinista. Es decir, que para el mismo dato, el resultado de la función hash siempre tiene que ser el mismo.
-
-Esto nos permite, por ejemplo, hacer una cosa muy interesante. Alicia se ha bajado de internet un fichero enorme y se encuentra que al intentar utilizarlo, no le funciona. ¿Se trata de que se ha bajado el fichero incorrectamente o de que su ordenador no funciona correctamente o el fichero original no era correcto?
-
-Si el fichero fuese pequeño, la solución sería muy sencilla; se lo puede bajar más veces- cuantas más veces se lo baje, más probable será que una de las descargas sea correcta. Si se lo baja 10 veces y no funciona nunca, es poco probable que haya habido un error en la transmisión, lo más probable es que el fichero sea incorrecto en origen o ella tenga un problema usándolo.
-
-Pero claro, si el fichero es grande y tarda mucho en descargarse, es impráctico bajarlo varias veces para asegurarse que está bien.
-
-¿Cómo pueden ayudar las funciones hash aquí?
-
-La persona que tiene el fichero original, puede calcular un hash del fichero y pasárselo a Alicia. Dado que el hash es pequeño, este es rápido de transferir y es más fácil comprobar su validez.
-
-Una vez Alicia tiene el fichero que se ha descargado y su hash, puede calcular ella el hash del fichero. Si el hash que calcula es diferente al hash del fichero original, está claro que su fichero no es idéntico al fichero original- si lo fuese, el hash debería ser igual ya que la función hash debe ser determinista.
-
-¿Ahora bien, y si los dos hashes son iguales?
-
-Pues lógicamente, no podemos garantizar que los ficheros sean iguales. En la práctica, si escogemos las funciones hash cuidadosamente (básicamente, que cumpla que dos entradas parecidas tengan hashes muy diferentes y que la distribución de hashes generados sea uniforme), la posibilidad de que dos ficheros tengan hashes idénticos son muy reducidas. Si una función hash puede dar como resultado 16 hashes diferentes, la probabilidad de que dos entradas tengan un hash idéntico es de 16^2 o 256.
-
-Lo bueno aquí es que si doblamos el tamaño de las salidas del hash, reducimos a una cuarta parte las posibilidades de error.
-
-Una función hash tipica que dé hashes de 16 bytes puede dar 2 elevado a 128 posibles hashes (o 340282366920938463463374607431768211456 valores diferentes), con lo que la probabilidad de que dos hashes coincidan es microscópica (de 1 entre 2 elevado a 256, o en concreto de 1 entre 115792089237316195423570985008687907853269984665640564039457584007913129639936), con lo cuál, simplemente escogiendo una buena función hash podemos hacer comprobaciones de integridad tan fiables como deseemos con hashes muy pequeñitos.
-
-¿Tienen las funciones hash más utilidades?
-
-Pues sí, infinidad más. Programando muchas veces queremos almacenar datos y acceder rápidamente a ellos por un concepto concreto. Por ejemplo, querríamos almacenar todos los datos de los habitantes de España y poder acceder a ellos por su nombre.
-
-Una solución sencilla sería guardar los datos de todos ellos en una lista y cada vez que tuviésemos un nombre, recorrer la lista hasta encontrar a la persona que buscamos.
-
-Si hay 40.000.000 de habitantes en España, de media necesitaremos leernos la mitad de la lista (20 millones de entradas) hasta encontrar los datos de la persona.
-
-¿Cómo podemos emplear un hash para acelerar esto?
-
-Buscaremos una función hash que a partir de un nombre, nos pueda dar n posibles hashes. Crearemos n listas, y en cada una, guardaremos los datos de las personas cuyo nombre tenga un hash concreto.
-
-Si escogemos una función hash que haga que cada valor hash sea más o menos equiprobable, cada lista contendrá 40.000.000/n personas.
-
-Así pues, para localizar los datos de una persona sabiendo su nombre, calcularemos el hash de su nombre, y eso nos llevará a la lista donde están sus datos. Dentro de eso tendremos que recorrerla para encontrar sus datos, pero en vez de recorrer una lista de 40.000.000 de personas, recorreremos una lista reducida tanto como queramos.
-
-Aquí hay un pequeño balance que hay que hacer; cuantas más listas diferentes tengamos, menos eficiente será su almacenamiento y acceso, con lo cual seguramente no será efectivo escoger una función hash con 40.000.000 dde valores hash posible (con lo cual, encontrar una persona sería prácticamente inmediato), pero seguramente con funciones hash más pequeñas, sí que consigamos un aumento sustancial del rendimiento. \ No newline at end of file
diff --git a/blog_experiment/content/2011/05/mas-emergencias.gmi b/blog_experiment/content/2011/05/mas-emergencias.gmi
deleted file mode 100644
index 6f6824df..00000000
--- a/blog_experiment/content/2011/05/mas-emergencias.gmi
+++ /dev/null
@@ -1,21 +0,0 @@
-# Más emergencias
-2011-05-04
-
-=> images/IMG_4463.jpg Libros nuevos que he comprado [IMG]
-[1]
-
-Las nuevas incorporaciones son The Data Model Resource Book: v.1: A Library of Universal Data Models for All Enterprises: Vol 1[2], 2[3] y 3[4]; Death March[5] y The Visual Display of Quantitative Information[6].
-
-Primeras impresiones:
-
-* Los Data Model están muy bien. El segundo un poco decepcionante, porque el modelo que me interesaba (E-Commerce), es un poco flojito- este segundo volumen se centra en áreas específicas (agencias de viajes, aseguradoras, etc.)... si a uno no le interesa particularmenten ninguna de estas áreas, sólo el coleccionismo justifica su compra.
-* Death March es brillante.
-* Visual Display está bien... pero yo me esperaba más
-
-
-=> http://alex.corcoles.net/wp-content/uploads/2011/05/IMG_4463.jpg 1: http://alex.corcoles.net/wp-content/uploads/2011/05/IMG_4463.jpg
-=> http://www.amazon.co.uk/Data-Model-Resource-Book-Enterprises/dp/0471380237/ref=sr_1_1?ie=UTF8&amp;qid=1304532338&amp;sr=8-1 2: http://www.amazon.co.uk/Data-Model-Resource-Book-Enterprises/dp/0471380237/ref=sr_1_1?ie=UTF8&amp;qid=1304532338&amp;sr=8-1
-=> http://www.amazon.co.uk/Data-Model-Resource-Book-Universal/dp/0471353485/ref=sr_1_3?ie=UTF8&amp;qid=1304532338&amp;sr=8-3 3: http://www.amazon.co.uk/Data-Model-Resource-Book-Universal/dp/0471353485/ref=sr_1_3?ie=UTF8&amp;qid=1304532338&amp;sr=8-3
-=> http://www.amazon.co.uk/Data-Model-Resource-Book-Universal/dp/0470178450/ref=sr_1_2?ie=UTF8&amp;qid=1304532338&amp;sr=8-2 4: http://www.amazon.co.uk/Data-Model-Resource-Book-Universal/dp/0470178450/ref=sr_1_2?ie=UTF8&amp;qid=1304532338&amp;sr=8-2
-=> http://www.amazon.co.uk/Death-March-Yourdon-Press-Edward/dp/013143635X/ref=sr_1_1?ie=UTF8&amp;qid=1304532434&amp;sr=8-1 5: http://www.amazon.co.uk/Death-March-Yourdon-Press-Edward/dp/013143635X/ref=sr_1_1?ie=UTF8&amp;qid=1304532434&amp;sr=8-1
-=> http://www.amazon.co.uk/Visual-Display-Quantitative-Information/dp/0961392142/ref=sr_1_1?ie=UTF8&amp;qid=1304532465&amp;sr=8-1 6: http://www.amazon.co.uk/Visual-Display-Quantitative-Information/dp/0961392142/ref=sr_1_1?ie=UTF8&amp;qid=1304532465&amp;sr=8-1 \ No newline at end of file
diff --git a/blog_experiment/content/2011/06/atajo-atajo-al-infierno.gmi b/blog_experiment/content/2011/06/atajo-atajo-al-infierno.gmi
deleted file mode 100644
index f19bc4c5..00000000
--- a/blog_experiment/content/2011/06/atajo-atajo-al-infierno.gmi
+++ /dev/null
@@ -1,9 +0,0 @@
-# Atajo al infierno
-2011-06-22
-
-Me falta uno de esos sesudos artículos de investigación que analicen el coste en productividad perdido por las siguientes dos combinaciones de teclas:
-
-* alt+mayúsculas: en un Windows español por defecto, alterna entre la disposición de teclado española y la americana. Resultado: los acentos y muchas otras teclas "no funcionan" y no es obvio averiguar por qué.
-* control+alt+cursor: con drivers de tarjeta gráfica de Intel, gira la pantalla. Resultado: el texto de la pantalla de lado o boca abajo, haciendo bastante complicado la lectura de la pantalla y el manejo del ratón, dificultando bastante deshacer el cambio
-
-¿Sería tan complicado que por defecto estas teclas no hicieran nada o pidieran confirmación la primera vez que se utilizan? Son completamente inútiles para la mayoría de los usuarios, sólo sirven para que el informático presuma... \ No newline at end of file
diff --git a/blog_experiment/content/2011/06/coctel-de-farmacos.gmi b/blog_experiment/content/2011/06/coctel-de-farmacos.gmi
deleted file mode 100644
index 0e08cf49..00000000
--- a/blog_experiment/content/2011/06/coctel-de-farmacos.gmi
+++ /dev/null
@@ -1,11 +0,0 @@
-# Cóctel de fármacos
-2011-06-18
-
-Apocalyptica + Rammstein + David Bowie = Helden[1]
-
-Jose González es cansino, pero Teardrop[2] y Smalltown Boy[3].
-
-
-=> https://farside.link/invidious/watch?v=Q6vsD2TgQaE 1: https://farside.link/invidious/watch?v=Q6vsD2TgQaE
-=> https://farside.link/invidious/watch?v=9B-h1EEsKDA 2: https://farside.link/invidious/watch?v=9B-h1EEsKDA
-=> https://farside.link/invidious/watch?v=ENzaEGktZpc 3: https://farside.link/invidious/watch?v=ENzaEGktZpc \ No newline at end of file
diff --git a/blog_experiment/content/2011/06/dinosaurios-que-rondan-la-tierra.gmi b/blog_experiment/content/2011/06/dinosaurios-que-rondan-la-tierra.gmi
deleted file mode 100644
index 51c808b3..00000000
--- a/blog_experiment/content/2011/06/dinosaurios-que-rondan-la-tierra.gmi
+++ /dev/null
@@ -1,44 +0,0 @@
-# Dinosaurios que rondan la tierra
-2011-06-15
-
-Acabo de poner un clavo más en el ataúd de una compañía canadiense de cuyo nombre nadie se acuerda.
-
-Sí, he decidido pasar a la única alternativa más moderna a mi Symbian S60 (Nokia C5, del que ya hablamos aquí[1]); una rompedora Blackberry Bold 9780 con el innovador Blackberry OS 6.
-
-¿Por qué?, que diría un sabio portugués...
-
-* No me gustan las pantallas táctiles
-* Me ha salido por 140€ + puntos del outlet Vodafone (ya están agotadas), vs. los 289€ + puntos que cuestan el Desire, el Optimus 2x, el Galaxy S, etc. o la misma Bold sin oferta de outlet
-* Me gusta ser retrógrado
-* Me gustan las baterías que duran y duran
-* Capricho
-* ... no me gustan las pantallas táctiles
-
-Ahora, con el olor aún a nuevo, es el momento de dar las primeras apreciaciones.
-
-La Blackberry me recuerda a mis Nokias. Usabilidad pulida a lo largo del tiempo. La interfaz de usuario podría calificarse de rudimentaria, pero está muy bien pensada, ejemplos:
-
-* El móvil es consciente de que está dentro de su funda. Podemos hacer cosas como cambiar las notificaciones según esté guardado o no, o configurar que nos muestre el último mensaje automáticamente al sacarlo de la funda
-* Led de aviso y dos botones estratégicamente situados para que no queden tapados por la funda
-* Muchos atajos de tecleo; por ejemplo doble espacio inserta punto-espacio y pone las mayúsculas. Podemos configurar sustitución de texto global para poder convertir "bb" en "BlackBerry" automáticamente en todas las aplicaciones. Alt+intro cambia el lenguaje de escritura.
-* Atajos lógicos de teclado por todos lados; tener un teclado físico hace que la mayoría de operaciones comunes estén a una pulsación
-* Aunque los sistemas de correo y mensajería instantánea (BlackBerry Messenger) están desactualizados en un par de aspectos, realmente son un ejemplo de libro de cómo deben implementarse estas dos funcionalidades- aunque por ejemplo, Whatsapp ya ha clonado lo más interesante de BBM (notificaciones de entrega). El resto de áreas, como calendario, contactos, etc. también son ejemplares.
-
-Respecto al teclado y trackpad, aún no me he adaptado 100%. El mecanismo de entrada de acentos (pulsar y aguantar la letra en cuestión, mover trackpad para escoger acento) no me convence del todo, y la escritura predictiva... no es perfecta (sobre todo porque al escribir "si", ¡"sí" está bastante abajo de la lista de sugerencias de completado!). Por tanto, escribir castellano y catalán "correcto" requiere un cierto esfuerzo. En mi opinión, el T9 es superior escribiendo a una mano- y siempre que no tengamos que alternar mucho de idioma. Comparado con las pantallas táctiles, sigo opinando que no hay color- en poco tiempo tecleo mucho mejor que tras bastantes intentos con un iPad, que debería tener una escritura táctil ejemplar y cuyo mayor tamaño debería hacerlo mejor que los móviles.
-
-El trackpad tiene sus incidencias, pero en general es un mecanismo muy práctico para según qué cosas (seleccionar texto, por ejemplo), pero que obviamente no es ideal para tareas como moverse por un navegador.
-
-El navegador, hablando del tema, sí, sigue siendo un problema. Se atasca bastante presentando páginas complejas, y se echa de menos la pantalla táctil, sí. Pese a ello, es perfectamente usable y las combinaciones de tecla (especialmente espacio y mayúsculas+espacio, que funcionan como en un navegador de escritorio convencional), compensan bastante la falta de uso "a dedo". Personalmente, dado que mi requisito de navegación móvil número es Google Reader y que la versión de iPhone (no la bazofia de versión web móvil eestándar) funciona de maravilla en el navegador de la BlackBerry, estoy bien contento.
-
-Más problemáticas:
-
-* Pese a que el interfaz es rápido en el 90% de las tareas, hay tareas específicas en las que sufre; instalar aplicaciones y el arrancado son particularmente sangrantes. Se nota que han optimizado todo lo optimizable, pero que el hardware no da más de sí
-* La cámara... es de 5 megapíxeles, pero poco más. Dado que yo soy incapaz de sacar una foto en condiciones con una buena cámara, flash y luz en abundancia... la verdad es que tampoco aprovecharía algo mejor
-* La batería no es fantástica... aguanta un día perfectamente, pero sospecho que no llega al segundo día de uso intenso sin cargar
-* La integración con GMail... de momento tiro con la estándar de BlackBerry para lectura de nuevos mensajes y la aplicación de Google para consultar mensajes antiguos. El problema es que con la función de correo estándar, los mensajes borrados fuera del móvil permanecen en el móvil, con lo que ocupan espacio si no los borramos una segunda vez. Aún tengo que encontrar la manera de trabajo idónea cuando estoy delante del ordenador.
-* Echo de menos una aplicación de mensajería instantánea como BBM o Whatsapp pero que pueda funcionar en el escritorio. Las notificaciones e integración con la agenda de ambos son muy útiles, pero no poder aprovechar el escritorio cuando está ahí... es un fallo
-
-Aún así, de momento estoy plenamente contento con el aparatito. Creo que se merece la fama de artefacto adictivo y a su vez productivo... y además encaja bien en las idiosincrasias de uno... pero ya les contaré.
-
-
-=> gemini://alex.corcoles.net/2010/07/resena-nokia-c5/ 1: gemini://alex.corcoles.net/2010/07/resena-nokia-c5/ \ No newline at end of file
diff --git a/blog_experiment/content/2011/06/galletosquizofrenia.gmi b/blog_experiment/content/2011/06/galletosquizofrenia.gmi
deleted file mode 100644
index f4d9a4a3..00000000
--- a/blog_experiment/content/2011/06/galletosquizofrenia.gmi
+++ /dev/null
@@ -1,4 +0,0 @@
-# Galletosquizofrenia
-2011-06-17
-
-Me complace anunciar que tras mi última actualización de la versión inestable de Google Chrome, la funcionalidad de utilizar varios perfiles simultáneamente está disponible en Linux. \ No newline at end of file
diff --git a/blog_experiment/content/2011/06/tecnocracia-china.gmi b/blog_experiment/content/2011/06/tecnocracia-china.gmi
deleted file mode 100644
index adcf9825..00000000
--- a/blog_experiment/content/2011/06/tecnocracia-china.gmi
+++ /dev/null
@@ -1,6 +0,0 @@
-# Tecnocracia china
-2011-06-28
-
-Tras más de 300.000 entradas de RSS leídas, he decidido migrar mis datos de Google Reader de @gmail.com a mi cuenta de Google Apps.
-
-A parte de sacrificar tan bonito número y perder un buen montón de datos, migrar las estrellas y elementos compartidos es duro (2500+ pulsaciones de shift+s, k lo atestiguan). \ No newline at end of file
diff --git a/blog_experiment/content/2011/06/tres-tristes-trucos.gmi b/blog_experiment/content/2011/06/tres-tristes-trucos.gmi
deleted file mode 100644
index fd1d472f..00000000
--- a/blog_experiment/content/2011/06/tres-tristes-trucos.gmi
+++ /dev/null
@@ -1,27 +0,0 @@
-# Tres tristes trucos
-2011-06-07
-
-1.
-
-screen es una de esas herramientas definitivas del mundo Unix. Parece ser que tmux es la alternativa moderna[1], pero uno es conservador. En todo caso, cualquiera que use un sistema Unix, debe conocer el uso de screen (principalmente, para lanzar procesos largos remotamente). El truco es meter lo siguiente en .screenrc:
-
-# http://gentoo-wiki.com/TIP%5C_Using%5C_screen#Tab-bar[2][3] hardstatus alwayslastline hardstatus string '%H %-w %{= bW}%n %t%{-} %+w'
-
-2.
-
-De aquí[4], un alias para meter en la máquina que usamos:
-
-asc() { autossh -x -a -t "$@" 'screen -RdU' }
-
-; usando entonces asc en vez de ssh, se usará screen combiando con autossh para conectarse al sistema remoto. Con esto, si se corta la conexión ssh, el sistema reconectará automáticamente y volverá justo donde lo dejamos... haciendo que por ejemplo, trabajar con ssh en una conexión 3G de cobertura irregular sea un pelín menos demencial.
-
-3.
-
-Y para nota, instalar zssh (e incorporarlo al asc anterior). Con esto, dentro de una sesión de ssh podemos transferir ficheros del sistema local al remoto sin tener que abrir otro terminal y usar scp. Esto es harto conveniente y además gana puntos por usar ZMODEM[5] para hacer la transferencia. Desgraciadamente, los usuarios de Gnome debemos envidiar a los de KDE (o incluso los de Windows), ya que al parecer Konsole y Putty tienen un interfaz fantabuloso para hacer esto, y gnome-terminal, no.
-
-
-=> http://tmux.sourceforge.net/ 1: http://tmux.sourceforge.net/
-=> http://gentoo-wiki.com/TIP%5C_Using%5C_screen#Tab-bar 2: http://gentoo-wiki.com/TIP%5C_Using%5C_screen#Tab-bar
-=> http://gentoo-wiki.com/TIP_Using_screen#Tab-bar 3: http://gentoo-wiki.com/TIP_Using_screen#Tab-bar
-=> http://noone.org/blog/English/Computer/Shell/Perfect%20Team:%20autossh%20and%20GNU%20Screen.html 4: http://noone.org/blog/English/Computer/Shell/Perfect%20Team:%20autossh%20and%20GNU%20Screen.html
-=> http://en.wikipedia.org/wiki/ZMODEM 5: http://en.wikipedia.org/wiki/ZMODEM \ No newline at end of file
diff --git a/blog_experiment/content/2011/07/consolacion-en-serie.gmi b/blog_experiment/content/2011/07/consolacion-en-serie.gmi
deleted file mode 100644
index 56f56c27..00000000
--- a/blog_experiment/content/2011/07/consolacion-en-serie.gmi
+++ /dev/null
@@ -1,13 +0,0 @@
-# Consolación en serie
-2011-07-29
-
-Con la triste excusa de que no me van muy finas las máquinas virtuales en mi servidor personal (la pantalla no se actualiza bien, con lo que es una lata crear una máquina virtual nueva), he investigado un poco cómo hacer instalaciones por consola de serie, es decir, sin teclado ni pantalla- ni siquiera virtual.
-
-El comando mágico es el siguiente
-
-> virt-install --name $VM_NAME --ram $RAM_MB --location http://ftp.es.debian.org/debian/dists/squeeze/main/installer-amd64/[1] --os-type=linux --os-variant=debiansqueeze --disk /var/lib/libvirt/images/$VM_NAME.img,size=$DISK_GB -w bridge=br0 --extra-args='console=tty0 console=ttyS0,115200n8'
-Esto nos instala Debian activando la consola de serie. Lo gracioso del método es que se baja el instalador por http, con lo que ni siquiera necesitamos una iso para poner en marcha el proceso. Eso sí, si lo queremos hacer varias veces y acelerarlo, podemos hacer algo así como...
-
-> rsync --progress -avz rsync://ftp.es.debian.org/debian/dists/squeeze/main/installer-amd64/ dists/squeeze/main/installer-amd64/
-
-=> http://ftp.es.debian.org/debian/dists/squeeze/main/installer-amd64/ 1: http://ftp.es.debian.org/debian/dists/squeeze/main/installer-amd64/ \ No newline at end of file
diff --git a/blog_experiment/content/2011/07/ie-sin-windows.gmi b/blog_experiment/content/2011/07/ie-sin-windows.gmi
deleted file mode 100644
index 0aff3574..00000000
--- a/blog_experiment/content/2011/07/ie-sin-windows.gmi
+++ /dev/null
@@ -1,47 +0,0 @@
-# IE sin Windows
-2011-07-20
-
-Algunas personas tienen en ocasiones el impulso de usar ese navegador vintage que es IE6, por oscuros motivos. Aquí explicamos cómo hacerlo gratis.
-
-Lo primero, descargar las imágenes de compatibilidad de Internet Explorer que Microsoft graciosamente proporciona[1] (incluyen versiones de Windows de XP hasta 7, y Internet Explorer 6 a 8). Si disponemos de una instalación de Windows cualquiera, ya estamos, podemos descargar gratuitamente Virtual PC[2] y utilizar las imágenes sin ningún problema.
-
-Desafortunadamente, Virtual PC sólo funciona sobre Windows, que cuesta dinero. Si no disponemos de Windows podemos usar VirtualBox[3], disponible para Linux, OS X y Solaris. Lamentablemente, no es tan sencillo, pero se puede hacer fácilmente.
-
-Lo primero, sacar la imagen .vhd del .exe que nos habremos descargado de la web de Microsoft. Esto lo podemos hacer con unrar, por ejemplo.
-
-Siguiente, debemos crear una máquina virtual con VirtualBox, utilizando el .vhd como imagen de disco. Como es harto probable que querramos que la máquina virtual se conecte a nuestra red, deberemos habilitar una tarjeta de red en la configuración de la máquina virtual.
-
-Veremos en la configuración que se pueden escoger diversas tarjetas de red. La versión de XP que lleva la imagen de Explorer 6 lamentablemente no incluye drivers para ninguna de las tarjetas de red que podemos escoger, por lo que tendremos que introducirlos en la instalación. Esto se puede hacer de diversas maneras, la más sencilla de las cuales consiste en escoger en este paso la tarjeta de red paravirtualizada.
-
-En este momento, y antes de arrancar la máquina, puede sernos conveniente crear un snapshot del disco.
-
-Arrancando la imagen, nos pedirá activar Windows. De momento saltémonos este paso. Cancelemos todas las peticiones de instalar hardware.
-
-Es un buen momento para instalar las "guest additions" de VirtualBox, que entre otras cosas mejoran la integración de teclado y ratón con la máquina virtual y nos permiten activar el "seamless mode", que hace que el fondo de escritorio de Windows desaparezca y las ventanas de aplicación queden integradas en nuestro escritorio nativo.
-
-Tras hacer esto, es el momento de instalar los drivers de la tarjeta de red. La tarjeta de red paravirtualizada (que no emula "tontamente" una tarjeta de red física real, simplemente utiliza un poco de magia en la máquina virtual para comunicarse con la red nativa) que usa Virtualbox está soportada por estos drivers convenientemente proporcionados en forma de .iso[4]. Simplemente podemos bajarnos la .iso y usarla para simular un CD virtual dentro de la máquina. Podemos entonces realizar la instalación de los drivers de la tarjeta de red utilizando el CD.
-
-En este momento, es conveniente reiniciar. Al reiniciar, se nos volverá a pedir activar Windows. Dado que ya tenemos la red funcionando, podremos realizar la activación por Internet sin ningún problema.
-
-El último paso es ir al administrador de dispositivos y deshabilitar todos los dispositivos que no funcionan, con lo que nos evitaremos las peticiones de instalar drivers.
-
-Bonus 1: si consultáis la EULA de Windows 7 Professional OEM, veréis que es legal utilizarlo para la máquina que se compró pero virtualizado
-
-Bonus 2: en la web de VirtualBox se puede 1) encontrar una fuente apt para Debian/Ubuntu que contiene las versiones más actualizadas para instalar automáticamente y 2), "descargar el VirtualBox 4.1 Oracle VM VirtualBox Extension Pack" que habilita funcionalidades como poder utilizar en la máquina virtual dispositivos USB conectados al ordenador que corre VirtualBox (lo que por ejemplo, permite utilizar iTunes para gestionar un iPhone/iPad desde dentro de una máquina virtual). Esto último sólo es legal si la persona que instala las extensiones es la misma persona que las va a usar (i.e. no se instalan automatizadamente) o se está en un entorno académico.
-
-actualización: la última imagen proporcionada por Microsoft el 16/8 no funciona. Puede seguirse la incidencia en los foros de VirtualBox[5].
-
-actualización II: en el foro de VirtualBox hay una solución. Simplemente hay que clonar la imagen .vhd a formato VDI y todo funciona. Nota, la imagen actualizada debe activarse antes de que la máquina arranque tres veces, si no no funciona, con lo que los pasos que recomiendo son:
-
-1. VBoxManage createhd --filename wxpie6.vdi --size 65536 # para crear la imagen de disco
-2. VBoxManage clonehd --existing ~/Downloads/Windows\ XP.vhd wxpie6.vdi # para convertir el .vhd al .vdi
-3. Configurar la máquina virtual en VirtualBox, muy importante poner la tarjeta de red paravirtualizada
-4. Arrancar la máquina, instalar la tarjeta de red paravirtualizada desde el CD y activar
-5. ... instalar Guest Additions, deshabilitar dispositivos hardware problemáticos, etc.
-
-
-=> http://www.microsoft.com/download/en/details.aspx?id=11575 1: http://www.microsoft.com/download/en/details.aspx?id=11575
-=> http://www.microsoft.com/windows/virtual-pc/default.aspx 2: http://www.microsoft.com/windows/virtual-pc/default.aspx
-=> http://www.virtualbox.org/ 3: http://www.virtualbox.org/
-=> http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/virtio-win-0.1-mm34.iso 4: http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/virtio-win-0.1-mm34.iso
-=> http://forums.virtualbox.org/viewtopic.php?f=2&amp;t=43940 5: http://forums.virtualbox.org/viewtopic.php?f=2&amp;t=43940 \ No newline at end of file
diff --git a/blog_experiment/content/2011/07/increpando.gmi b/blog_experiment/content/2011/07/increpando.gmi
deleted file mode 100644
index f462466b..00000000
--- a/blog_experiment/content/2011/07/increpando.gmi
+++ /dev/null
@@ -1,11 +0,0 @@
-# Increpando
-2011-07-05
-
-**intimar[1].**
-
-(Del lat. intimāre).
-
-*1*. tr. Requerir, exigir el cumplimiento de algo, especialmente con autoridad o fuerza para obligar a hacerlo.
-
-
-=> http://rae.es/intimar 1: http://rae.es/intimar \ No newline at end of file
diff --git a/blog_experiment/content/2011/10/apuntes-sobre-dart.gmi b/blog_experiment/content/2011/10/apuntes-sobre-dart.gmi
deleted file mode 100644
index 18f51190..00000000
--- a/blog_experiment/content/2011/10/apuntes-sobre-dart.gmi
+++ /dev/null
@@ -1,29 +0,0 @@
-# Apuntes sobre Dart
-2011-10-10
-
-Google ha sacado hoy Dart[1].
-
-El apunte rápido (que seguro que otros mejoran) es que es un verdadero **Java**script. Es un lenguaje muy muy Java que compila a Javascript. Las diferencias con Java van por dos lados:
-
-* Adecuaciones para funcionar bien cuando se compila a Javascript- i.e. no hay threads, hay "isolates", etc.
-* Esas mejoras puntuales de Java que llevamos pidiendo a gritos desde hace siglos
-
-Las mejoras de Java son de ovación cerrada:
-
-* Las clases en Dart generan un interfaz equivalente a su parte pública
-* Constructores con inicializadores concisos
-* Declaraciones anónimas y concisas de funciones
-* getters y setters transparentes. De bonus, se integran con los interfaces
-* Literales para listas y mapas
-* "==" es equals y "===" es "==". Ver "===" me produce grima por traumas varios, pero creo que es la solución correcta.
-
-Siendo realistas, cubre la mayoría de "defectos" "resolubles" de Java. No, no tiene inferencia de tipos, ni lambdas con excepciones chulas, ni "final" por defecto... y quizás no es todo como uno lo había soñado, pero es una solución práctica y disponible **hoy**.
-
-Eso es lo positivo. En lo negativo, el tipado opcional me escama- y me duele que signifique sacrificios (hay ahí una cosilla un poco rara con las funciones que no devuelven valor que me deja intranquilo). Me queda la curiosidad de estudiar los isolates para saber si aportan algo o si son sencillamente la manera correcta de montar concurrencia en código que será compilado a Javascript y ejecutado por los motores de Javascript existentes.
-
-He visto otras cosas que aún no me he mirado a fondo que no sé dónde colocar: soporte en el lenguaje para factorías, "const" el sistema de librerías y que null sea un objeto; es difícil saber si serán cosas buenas o malas.
-
-En fin, cosas interesantes. No parece, sin embargo, que Dart aspire de momento a ser algo más que un sustituto de Javascript (algo que no me interesa mucho- el principal problema de Javascript no es el lenguaje en sí, en mi opinión)... con lo que **para mi**, no es muy interesante de momento.  Si algún día se planta como una alternativa para desarrollo de aplicaciones y para programación, tiene  la oportunidad de ser Java++, pero sin añadir la complejidad y cerradez de C#... pero ni siquiera sé si Google pretende que lo sea (ese rol lo quieren para... ¿Go? ¿Dart? ¿Java? ¿Python?) .
-
-
-=> http://www.dartlang.org/ 1: http://www.dartlang.org/ \ No newline at end of file
diff --git a/blog_experiment/content/2011/10/el-mito-de-la-escalabilidad.gmi b/blog_experiment/content/2011/10/el-mito-de-la-escalabilidad.gmi
deleted file mode 100644
index be88fe87..00000000
--- a/blog_experiment/content/2011/10/el-mito-de-la-escalabilidad.gmi
+++ /dev/null
@@ -1,63 +0,0 @@
-# El mito de la escalabilidad
-2011-10-22
-
-Hace mucho mucho tiempo, en una galaxia muy muy lejana, existía una web de noticias informáticas llamada Slashdot[1]. Por motivos oscuros, Slashdot creció brutalmente en popularidad y por tanto, cada vez que aparecía una noticia en portada de Slashdot enlazando a una web, una cantidad elevada de personas hacía click en la noticia, dirigiendo a ésta ingentes cantidades de tráfico. En los inicios de Internet, no muchas webs estaban suficientemente bien preparadas para soportar carga como Slashdot, y por tanto este tráfico tendía a colapsar los sistemas que recibían enlaces de Slashdot- este efecto fue denominado "Slashdot Effect[2]".
-
-Avanzando un poco hacia el presente, el tráfico de internet se ha multiplicado. De los 70 millones de usuarios de Internet en el 97 (nacimiento de Slashdot), hemos pasado a los 2110 millones de usuarios actuales (fuente[3]); es decir, se ha multiplicado por 30 el número de usuarios, y muy probablemente, el uso de cada usuario de Internet también se ha intensificado- cada vez dedicamos más tiempo y hacemos más cosas en Internet.
-
-Hoy en día, sitios como Facebook presumen[4] de tener 400 millones de usuarios entrando cada día en sus servicios (¡5 veces el número de usuarios de toda Internet en el 97!) y se suben unos 250 millones de fotos diarias. En Twitter, coincidiendo con hechos como la muerte de Osama Bin Laden, llegan a escribirse más de 12 millones de tuits en una hora[5].
-
-Así pues, si en el 97 el volumen de uso podía ya suponer un problema para los servicios de Internet, con el enorme crecimiento de la red, ¿se acrecentan estos problemas?
-
-Sin duda alguna. A pesar de que la potencia de los ordenadores se ha acrecentado, esta no ha parecido contrarrestar el hecho de que cada vez queremos más datos, más rápidos y más inmediatos de la red. El mencionado Twitter ha sufrido a lo largo de su carrera para poder soportar el uso que se le da; su Fail Whale[6] ha sido enormemente popular y aún hoy se deja ver de cuando en cuando.
-
-¿Por qué es "difícil" tratar este problema?
-
-Comencemos por lo más básico. Un servidor normalito que podemos adquirir, si sabemos buscar, por 50€/mes, puede servir sin muchos problemas y sin grandes esfuerzos, unas 50 peticiones por segundo de una página dinámica sencilla que muestra información almacenada en una base de datos. Esto equivale a servir 4.320.000 peticiones en un día. Supongamos que cada usuario se pasa unos 10 minutos diarios en la página, y hace una petición nueva cada 10 segundos; eso son unas 60 peticiones. El servidor anterior podría atender a unos 72.000 usuarios/diarios, pudiendo llegar a atender a 3000 usuarios/hora.
-
-Estas cifras parecen respetables, y la buena noticia es que adquiriendo servidores más caros, obtenemos una mejor relación precio/peticiones/s, con lo que podemos fácilmente soportar más carga de este tipo simplemente echando un poco de dinero al problema.
-
-Lógicamente, nunca podríamos llegar a soportar una carga brutal- del orden de magnitud de Facebook, o incluso mucho menos buscando servidores más caros- no existen servidores de tal potencia. Pero seguimos teniendo opciones sencillas. Si en vez de coger un servidor, cogemos más de uno y copiamos toda la base de datos y todo el sistema en estos servidores, las carga se puede repartir en ellos prácticamente a la perfección; si compramos 7 servidores, multiplicaremos las peticiones que podemos atender casi por 7.
-
-Jugando con servidores más o menos costosos y en mayor o menor cantidad de ellos, podemos atender "tantas peticiones como queramos", a un coste usualmente bastante razonable.
-
-Adicionalmente, la mayor parte de "mostrar información almacenada" en la red hoy en día tiene una característica- es enormemente repetitiva; la página principal de un diario puede necesitar mostrarse a millones de usuarios, pero es esencialmente la misma para todos- así que por muy costoso que sea recuperar y formatear la información, es un trabajo que sólo tenemos que hacer la primera vez- luego podemos guardarnos el trabajo realizado y simplemente copiarlo para el resto de peticiones subsiguientes.
-
-Pero el problema es que no todo es mostrar información almacenada. El problema realmente duro es almacenar información.
-
-El primer problema es que nos surge es la persistencia. Normalmente querremos que la información que se guarde en nuestra web sea persistente; es decir, que no desaparezca. Eso nos obliga para cada escritura a realizar el trabajo duro, registrar esta información en un disco duro o un SSD. Esto es algo que no nos podemos ahorrar de ninguna manera y que de hecho, como veremos ahora, constituye un verdadero límite doloroso al rendimiento que podemos ofrecer.
-
-Un sistema básico puede perfectamente realizar 1500 transacciones de escritura por segundo. Como en el caso de las lecturas, simplemente gastándonos dinero podemos ampliar este número muy fácilmente.
-
-El problema, es que una vez alcanzado el límite del sistema, aplicar el mismo truco que antes (poner dos servidores en vez de uno)... no funciona excesivamente bien.
-
-En el caso de las lecturas, asumíamos que podíamos replicarlo todo a todos los servidores para que cualquiera de ellos pueda atender cualquier petición. Esto nos lleva a que cada escritura que realicemos se tendrá que replicar a todos los servidores, con lo que... ¡no ganamos nada! Como cada escritura tiene que "pagarse" en todos los servidores, nuestra velocidad de escritura haciendo esto nunca aumentará.
-
-Así pues, un replicado simple y obvio nos permite escalar la velocidad de lectura, pero no la de escritura. Si nos topamos con nuestro límite de velocidad de escritura... ¿cómo lo superaremos?
-
-Hay varias alternativas.
-
-Una bastante obvia es no replicar las escrituras a todos los servidores. Eso hará que cada servidor pueda escribir independientemente, con lo que combinaremos la velocidad de escritura de todos los servidores y aumentaremos nuestro rendimiento. Pero obviamente, no todos los datos estarán escritos en todos los servidores, y por tanto no podremos usar la estrategia para acelerar lecturas que comentábamos antes.
-
-Lo que podemos hacer entonces es, en vez de repartir todas las peticiones entre todos los servidores, las repartiremos de otra manera, "particionando" la información. Por ejemplo, pondremos a los usuarios de cada país en un servidor diferente. Esto obviamente nos incrementará el rendimiento, siempre y cuando podamos hallar una partición adecuada.
-
-El problema es que muchas veces, esto no es posible. Todos los usuarios de Twitter quieren acceder a los tuits de cualquier usuario, los usuarios están conectados entre sí de maneras arbitrarias, de manera que es imposible particionarlos de ninguna manera.
-
-Cuando nos hallamos en esta situación, tenemos un problema, obviamente. La solución menos costosa es sacrificar la calidad de nuestros datos. Escribamos los datos a no todos los servidores, y repliquémoslo al resto "cuando podamos". Aceptemos que algún servidor tendrá información desactualizada (pero que al menos podremos dar un servicio más o menos potable, pero rápido)... hagamos aproximaciones y aceptemos no dar datos 100% correctos e incluso aceptemos que algún dato puede perderse.
-
-Lógicamente, esto no es factible de aplicar para cosas que requieran exactitud, como compras y pagos y cosas de este tipo... ¿pero para tuits y mensajes en Facebook? Pues probablemente sí.
-
-En esto se fundamentan los sistemas NoSQL que prometen escalabilidad barata- una de las cosas en las que se fundamentan es en no proteger los datos con la paranoia habitual- hecho que debemos aceptar como sacrificio cuando los usamos como atajo a la escalabilidad.
-
-En conclusión- escalar un sistema tiene un coste razonable para las cargas de consultas y visualización de información... los sistemas cuyo punto crítico sea este se pueden escalar mucho de una manera relativamente económica. En cambio, los sistemas cuyo cuello de botella sea la escritura son mucho más complicados de escalar adecuadamente- y uno de los costes que podemos pagar es el de la integridad de esos datos.
-
-actualizado con los comentarios de mi editor habitual[7]
-
-
-=> http://en.wikipedia.org/wiki/Slashdot 1: http://en.wikipedia.org/wiki/Slashdot
-=> http://en.wikipedia.org/wiki/Slashdot_effect 2: http://en.wikipedia.org/wiki/Slashdot_effect
-=> http://www.internetworldstats.com/emarketing.htm 3: http://www.internetworldstats.com/emarketing.htm
-=> https://www.facebook.com/press/info.php?statistics 4: https://www.facebook.com/press/info.php?statistics
-=> http://mashable.com/2011/05/02/bin-laden-death-twitter/ 5: http://mashable.com/2011/05/02/bin-laden-death-twitter/
-=> http://en.wikipedia.org/wiki/Twitter#Outages 6: http://en.wikipedia.org/wiki/Twitter#Outages
-=> http://obm.corcoles.net/ 7: http://obm.corcoles.net/ \ No newline at end of file
diff --git a/blog_experiment/content/2011/10/hombros-de-gigantes.gmi b/blog_experiment/content/2011/10/hombros-de-gigantes.gmi
deleted file mode 100644
index 793dec5a..00000000
--- a/blog_experiment/content/2011/10/hombros-de-gigantes.gmi
+++ /dev/null
@@ -1,10 +0,0 @@
-# Hombros de gigantes
-2011-10-13
-
-Me he levantado con la triste noticia del fallecimiento de Dennis Ritchie. Es impactante como en un mundo tan cambiante y de evolución vertiginosa como el de la informática, dos de las creaciones de este hombre han cumplido ya más de 40 años y son fundamentales en la informática moderna.
-
-Me refiero al sistema operativo UNIX (padre directo de los actuales Linux [y Android], Mac OS X [y si hemos de creer a Apple, iOS] y Solaris), de Thompson, Ritchie, Kernighan, McIlroy y Ossanna y la verdadera criatura de Ritchie, el lenguaje de programación C, con el que se han implementado gran parte de los sistemas informáticos actuales y que está en los cimientos y raices de la mayor parte del resto.
-
-Pero para mi, Ritchie siempre será la R del K&R, *el* libro sobre C, cuya significancia va más allá de la monumental importancia del C, sino que además es uno de los textos sobre informática de referencia- es sin duda alguna un perfecto ejemplo de cómo debe ser la comunicación en ámbitos ingenieriles, cuyo estilo simple, directo y comprensible y su explicación de conceptos completa y precisa transciende su propósito y llega a inspirar pasión y vocación- al menos a un servidor así le sucedió.
-
-Gracias por todo, Dennis. Te echaremos de menos, pues tus creaciones e influencia nos sobrevivirán a todos. \ No newline at end of file
diff --git a/blog_experiment/content/2011/10/notas-mentales.gmi b/blog_experiment/content/2011/10/notas-mentales.gmi
deleted file mode 100644
index fd32d77d..00000000
--- a/blog_experiment/content/2011/10/notas-mentales.gmi
+++ /dev/null
@@ -1,8 +0,0 @@
-# Notas mentales
-2011-10-29
-
-1. Si tenemos un portátil que tenía Windows XP Media Center Edition 2005 preinstalado por el fabricante (en el caso que nos ocupa, un Acer Aspire 5050), reinstalar el sistema operativo de 0 no es posible mediante coger las isos del sistema operativo que da Microsoft y reinstalar. El instalador no aceptará la clave que viene en la pegatina de autenticidad (!). Intentad usar siempre la utilidad de restauración.
-2. En esta página pública de Microsoft[1] podemos obtener los checksums SHA-1 de las isos que proporciona Microsoft de sus sistemas operativos.
-
-
-=> http://msdn.microsoft.com/en-us/subscriptions/downloads/default.aspx 1: http://msdn.microsoft.com/en-us/subscriptions/downloads/default.aspx \ No newline at end of file
diff --git a/blog_experiment/content/2011/10/superpoderes.gmi b/blog_experiment/content/2011/10/superpoderes.gmi
deleted file mode 100644
index f451c33b..00000000
--- a/blog_experiment/content/2011/10/superpoderes.gmi
+++ /dev/null
@@ -1,14 +0,0 @@
-# Superpoderes
-2011-10-25
-
-Breve aviso público:
-
-* La palabra empoderamiento no está en el Diccionario.[1]
-* empoderar.[2] 1. tr. **desus.** apoderar. Era u. t. c. prnl.
-* Véase también apoderar[3], apoderamiento[4]
-
-
-=> http://rae.es/empoderamiento 1: http://rae.es/empoderamiento
-=> http://rae.es/empoderar 2: http://rae.es/empoderar
-=> http://rae.es/apoderar 3: http://rae.es/apoderar
-=> http://rae.es/apoderamiento 4: http://rae.es/apoderamiento \ No newline at end of file
diff --git a/blog_experiment/content/2011/11/eje-de-payos.gmi b/blog_experiment/content/2011/11/eje-de-payos.gmi
deleted file mode 100644
index 924d48bb..00000000
--- a/blog_experiment/content/2011/11/eje-de-payos.gmi
+++ /dev/null
@@ -1,17 +0,0 @@
-# ¿Eje de payos?
-2011-11-11
-
-Me he abierto una cuenta de GitHub[1]... De momento no hay nada útil, pero enumero:
-
-* https://github.com/alexpdp7/best-practices[2][3]: ejemplos de programación (de momento, creación de web service invocado mediante JSON-RPC en Java con Spring (variante Java Config, esto es, con muy poquitos XML)
-* https://github.com/alexpdp7/anoqa[4][5]: un proyecto en el que estoy experimentando (publicación de encuestas y extracción de estadísticas), de momento en pañales.
-* https://github.com/alexpdp7/f1.prediction[6][7]: código en pañales para automatizar las porras de Formula 1 al estilo del extinto F1 Wolf. De momento tiene un extractor de datos de la Wikipedia a una base de datos SQL.
-
-
-=> https://github.com/alexpdp7/ 1: https://github.com/alexpdp7/
-=> https://github.com/alexpdp7/best-practices 2: https://github.com/alexpdp7/best-practices
-=> https://github.com/alexpdp7/best-practices 3: https://github.com/alexpdp7/best-practices
-=> https://github.com/alexpdp7/anoqa 4: https://github.com/alexpdp7/anoqa
-=> https://github.com/alexpdp7/anoqa 5: https://github.com/alexpdp7/anoqa
-=> https://github.com/alexpdp7/f1.prediction 6: https://github.com/alexpdp7/f1.prediction
-=> https://github.com/alexpdp7/f1.prediction 7: https://github.com/alexpdp7/f1.prediction \ No newline at end of file
diff --git a/blog_experiment/content/2011/11/hazanas-informaticas-v-las-maquinas-de-turing-y-von-neumann.gmi b/blog_experiment/content/2011/11/hazanas-informaticas-v-las-maquinas-de-turing-y-von-neumann.gmi
deleted file mode 100644
index b26e150d..00000000
--- a/blog_experiment/content/2011/11/hazanas-informaticas-v-las-maquinas-de-turing-y-von-neumann.gmi
+++ /dev/null
@@ -1,36 +0,0 @@
-# Hazañas informáticas V: Las máquinas de Turing y Von Neumann
-2011-11-05
-
-¿Qué es un ordenador?
-
-A primera vista, esto parece una pregunta sencilla. ¿Es una cosa con pantalla y teclado? Si es eso, ¿es una calculadora de mesa convencional un ordenador? ¿Es una consola un ordenador? ¿Un móvil?
-
-Antes de 1936, existían bastantes máquinas bastante parecidas a ordenadores- existían calculadoras, máquinas de codificación como la Enigma, etc.; hasta los griegos construyeron máquinas que podían calcular la posición de las estrellas en el firmamento[1]. Sin embargo, ninguna de estas máquinas tenía la flexibilidad que tienen los ordenadores de hoy en día- las calculadoras pueden hacer operaciones matemáticas, Enigma podía codificar y decodificar textos, el mecanismo de Anticitera podía localizar los astros- pero ninguna de ellas podía hacer nada más que aquello para lo que estaban pensadas.
-
-En 1936, Turing[2], uno de los padres fundadores, describió una sencilla máquina teórica que consiste en un cabezal situado sobre una cinta (infinita) que contiene símbolos. El cabezal puede desplazarse por la cinta, leyendo y escribiendo símbolos. Esta máquina tiene un estado, y según lo que lee mediante el cabezal, puede alterar su estado, desplazarse y escribir.
-
-Esta construcción simple (la definición informal es de un par de líneas; la formal[3] no es mucho más larga) es sin embargo muy flexible. Dada una definición de estados y comportamientos adecuados, la máquina de Turing puede realizar, por ejemplo, cualquier cálculo que se nos ocurra; dada una cinta con símbolos que describan números, puede sumarlos, multiplicarlos, etc. y en general, realizar cualquier computación que pueda realizar un ordenador de hoy en día. Esto tiene un primer interés; la máquina de Turing puede modelizar cualquier proceso informatizable, y por tanto, nos puede servir como base teórica para analizarlos- podemos describir una máquina de Turing (sus comportamientos, símbolos, movimientos, estados, etc.) que realice cualquier cálculo.
-
-Sin embargo, podemos dar un paso más allá. Dado que podemos realizar cualquier operación computable con una máquina de Turing, esto nos lleva a decir que podríamos programar una máquina de Turing de manera que interprete los símbolos en su cinta como la descripción de una máquina de Turing- con los comportamientos del cabezal, sus estados, los símbolos etc.; y luego colocar más allá en la cinta los datos que queremos que procese. Es decir; podríamos describir el proceso de suma y luego colocarle unos números para que sume. Esta máquina de Turing podría, sin variar su programación y sólo cambiando los símbolos impresos en la cinta, realice cualquier cosa que pueda realizar una máquina de Turing- es decir, podemos obtener una máquina de Turing única "universal"- cuya programación le permite realizar cualquier cálculo computable.
-
-Este proceso mental teórico nos sugiere una cosa interesante- podemos construir una máquina que a partir de unos "datos" (en este caso, unos símbolos en una cinta) que describen el cálculo a realizar y los datos en sí, realice cualquier operación que podamos describir- en efecto, una máquina "programable".
-
-Una vez más, esto tiene un interés teórico considerable, pero obviamente una máquina que procese una cinta infinita, leyendo y escribiendo símbolos de ella no parece algo muy práctico (y de hecho no lo es).
-
-Paralelamente a las elucubraciones de Turing, otros científicos que trabajaban en máquinas de computación llegaban a ideas similares;  Konrad Zuse[4] en Alemanía y Eckert y Mauchly en EEUU comenzaron a elaborar máquinas con conceptos de programabilidad; Zuse, aburrido de realizar cálculos en su trabajo como ingeniero aeronáutico,  creo el Z1, de programabilidad limitada y funcionamiento problemático en  1938, seguido del Z2 en 1939 y finalmente el completamente programable Z3  en 1941. Eckert y Mauchly trabajaban en el proyecto EDVAC[5], para crear una máquina para calcular trayectorias de artillería, al que se unió John Von Neumann[6] en 1944. Se acredita a Von Neumann con la primera descripción "práctica" de una máquina programable ampliamente conocida publicada en 1945, que explica lo que ahora se conoce como arquitectura de Von Neumann.
-
-La arquitectura de von Neumann es en sí muy parecida a la máquina universal de Turing, pero con una implementación física mucho más realizable- un procesador con unidades capaces de realizar cálculos aritméticos y de almacenar pequeñas cantidades de información, una memoria que almacena datos y programas, dispositivos de entrada y salida (teclados, pantallas, etc.) y lo que une a todos; el hecho de que el procesador lee instrucciones de su memoria y las va ejecutando, leyendo y modificando datos de la misma memoria y interactuando mediante sus dispositivos.
-
-Las máquinas con arquitectura de Von Neumann eran infinitamente más versátiles que las máquinas de propósito único anteriores- eran programables y eso hacía que cualquier problema se pudiese afrontar con un programa nuevo, y que las mejoras en potencia de estas se verían traducidas en mejoras en la resolución de todos los problemas- máquinas potentes podrían resolver problemas más complejos y más grandes en menos tiempo.
-
-Pese a mejoras conceptuales, y por supuesto, una brutal evolución tecnológica, el ordenador donde estoy tecleando esto ahora mismo es esencialmente una máquina de Von Neumann según descripciones de hace 66 años, y los problemas que puede resolver no son ni más ni menos que aquellos que podía resolver teóricamente la máquina universal de Turing tal como fue descrita hace 75 años- sorprendentemente en todo esto tiempo aún no hemos inventado nada práctico que pueda resolver algo que no pudiera resolver una máquina de Turing. Además, ahora prácticamente cada dispositivo electrónico es programable- hasta las calculadoras de escritorio son por dentro máquinas de von Neumann (aunque no sean fácilmente programables)- las máquinas de un solo propósito están casi extintas.
-
-Así pues, en más de 60 años hemos visto una descomunal evolución en las máquinas programables- que han pasado de costar millones de euros y ocupar habitaciones a ser asequibles por todo el mundo y hacer cosas que nadie soñó cuando se crearon, pero por contra, aún no hemos superado los principios teóricos postulados por los fundadores de la informática.
-
-
-=> http://en.wikipedia.org/wiki/Antikythera_mechanism 1: http://en.wikipedia.org/wiki/Antikythera_mechanism
-=> http://en.wikipedia.org/wiki/Alan_Turing 2: http://en.wikipedia.org/wiki/Alan_Turing
-=> http://en.wikipedia.org/wiki/Turing_machine#Formal_definition 3: http://en.wikipedia.org/wiki/Turing_machine#Formal_definition
-=> http://en.wikipedia.org/wiki/Konrad_Zuse 4: http://en.wikipedia.org/wiki/Konrad_Zuse
-=> http://en.wikipedia.org/wiki/EDVAC 5: http://en.wikipedia.org/wiki/EDVAC
-=> http://en.wikipedia.org/wiki/John_von_Neumann 6: http://en.wikipedia.org/wiki/John_von_Neumann \ No newline at end of file
diff --git a/blog_experiment/content/2011/11/hazanas-informaticas-vi-el-sistema-unix.gmi b/blog_experiment/content/2011/11/hazanas-informaticas-vi-el-sistema-unix.gmi
deleted file mode 100644
index 453738cd..00000000
--- a/blog_experiment/content/2011/11/hazanas-informaticas-vi-el-sistema-unix.gmi
+++ /dev/null
@@ -1,27 +0,0 @@
-# Hazañas informáticas VI: el sistema UNIX
-2011-11-16
-
-Si habéis estado siguiendo esta serie de artículos[1], habréis podido percibir un notable patrón- los sujetos de los que hablo no suelen ser muy recientes. Internet se conoce como tal desde el 82, el modelo relacional se formuló en el 69, las funciones hash aparecen mencionadas en una publicación en el 53, el sistema RSA data del 78 y las máquina de Turing y von Neumann son de allá por los años 40.
-
-Es decir, la hazaña informática más jovencita es más vieja que yo con sus 33 años de edad. Pero ninguna de ellas está obsoleta- es más, todas ellas siguen vigentes y es posible que algunas sobrevivan más de un siglo (sólo es posible que el criptosistema RSA quede obsoleto si algún día la computación cuántica resulta práctica- aunque con toda probabilidad sea reemplazado por un criptosistema de clave pública similar).
-
-El que hoy nos ocupa es otro jovenzuelo- el sistema operativo UNIX nació en 1970 en un laboratorio de Bell Labs, como sistema operativo para un videojuego implementado por un equipo de programadores aburridos en el proyecto Multics. Con el pretexto de adaptarlo para el procesado de textos, Thompson, Ritchie, Kernighan, McIlroy y Ossanna asentaron una de las dos familias de sistemas operativos que aún hoy pervive con cierta popularidad (la otra sería la familia de los 360 de IBM, que es más antigua aún).
-
-UNIX se basa en conceptos sencillos- se implementa usando el lenguaje C (hijo del recientemente fallecido Ritchie) portable, simple y eficiente en un momento en que los sistemas operativos se implementaban directamente sobre el procesador, ligándolos al hardware para el cuál estaban diseñados y dificultando su desarrollo; un sistema de archivos jerárquico, cualidades de multiusuario y multitarea... todos ellos conceptos imprescindibles hoy en día. Además, introduce la filosofía Unix de programas pequeños comunicándose entre ellos- haciéndolo extremadamente versátil pero simple, una cualidad vital para ser extremadamente apropiado para gente como los programadores.
-
-Pero más allá de ello, UNIX fue "pionero" en el hecho de que su código (junto con el de los compiladores del lenguaje C) fueran distribuidos libremente- la condena de las prácticas monopolísticas de AT&T impedían su comercialización y por contra forzaban a distribuirlo a quien lo pidiera. Si hoy en día es increíblemente costoso desarrollar un sistema operativo, en esa época primitiva, lo era aún más; y los sistemas operativos de la época eran por tanto costosos y, al ser no portables, sólo funcionaban en un determinado tipo de hardware. La distribución de Unix, por tanto, permitía a cualquiera aprovechar su código, adaptarlo al hardware que tenían y disponer de un sistema operativo potente por un coste relativamente bajo.
-
-Lógicamente, mucha gente se sumó al carro- compañías comerciales que lo usaron o incluso lo extendieron y comercializaron (HP, Solaris, IBM, etc.; hasta Microsoft comercializaba su propio Unix hasta el 89). Pero el desarrollo quizás más importante se dio en universidades, particularmente en la de Berkeley en California. En el 83 AT&T quedó liberada de los corsés antimonopolistas y pudo comercializar Unix, movimiento con el cual los Unix no comerciales, y en especial el de Berkeley comenzaron a cobrar importancia, ya que eran los únicos que quedaban como libremente distribuibles.
-
-Los sistemas comerciales siguieron su camino y perduran hasta nuestros días; HPUX, AIX y especialmente Solaris aún son moderadamente populares, sobre todo en grandes entornos comerciales de computación.
-
-Por otra parte, los sistemas académicos también siguieron su evolución paralela.  Del código de Berkeley surgieron sistemas operativos como NetBSD, FreeBSD y OpenBSD- el BSD es de Berkeley Software Distribution- y el nucleo de Darwin que está en las entrañas de Mac OS X (y según dice Apple, el iOS del iPhone, iPod Touch e iPad) es también un "BSD".
-
-En los 90, un estudiante de informática finlandés, frustrado por no disponer de un sistema operativo Unix viable para ordenadores personales (que en aquel entonces eran básicamente Ataris, Amigas, Macs y PCs con MS/DOS y Windows), desarrolló un sistema operativo estilo Unix, aprovechando las herramientas GNU; algo que acabo dando luz a Linux (o GNU/Linux).
-
-Llegando hasta hoy, los Unix comerciales siguen teniendo su importancia en entornos empresariales- Linux y los BSD libres han ganado una gran importancia, OS X es el segundo sistema operativo para ordenadores personales más popular; en el ámbito móvil, Android se basa en Linux y según dice Apple, el iOS del iPhone también, con lo que en realidad, gran parte de los ordenadores de hoy en día son "Unix"- las excepciones más notables son Windows, los sistemas operativos de los mainframes (básicamente los de IBM descendientes de la serie 360) y los sistemas operativos de móviles que no son Android ni iOS (Blackberry está transicionando de su sistema operativo a QNX [un Unix], Nokia aún conserva su Series 40 para móviles de bajo coste y está matando Symbian...).
-
-El mérito de Unix radica en simplemente eso- su sencillez y claridad de conceptos inicial han perdurado hasta nuestros días- siendo difícil la valoración de su repercusión frente a la serie 360, pero claramente siendo uno de los desarrollos informáticos más significativos de la historia de la computación.
-
-
-=> gemini://alex.corcoles.net/categoria/series/hazanas-informaticas/ 1: gemini://alex.corcoles.net/categoria/series/hazanas-informaticas/ \ No newline at end of file
diff --git a/blog_experiment/content/2011/12/abrir-links-en-nueva-ventana-en-infojobs-net.gmi b/blog_experiment/content/2011/12/abrir-links-en-nueva-ventana-en-infojobs-net.gmi
deleted file mode 100644
index 7278f6a4..00000000
--- a/blog_experiment/content/2011/12/abrir-links-en-nueva-ventana-en-infojobs-net.gmi
+++ /dev/null
@@ -1,29 +0,0 @@
-# Abrir links en nueva ventana en infojobs.net
-2011-12-06
-
-Si estáis hasta las narices de que no podáis usar el botón de la ruedecita para abrir ofertas de trabajo en una ventana nueva en infojobs.net[1], el siguiente script de Greasemonkey[2] os puede ser útil:
-
-> // ==UserScript==
-> // @name Open in new tab in Infojobs
-> // @namespace http://use.i.E.your.homepage/[3]
-> // @version 0.1
-> // @description enter something useful
-> // @include http://www.infojobs.net/jobsearch/search-results/list.xhtml[4]
-> // @include https://www.infojobs.net/jobsearch/search-results/list.xhtml[5]
-> // @copyright 2011+, You
-> // ==/UserScript==
->
-> window.setInterval(function() {
-> unsafeWindow.jQuery("[id^='table_results_offer']").each(function() { this.onclick = null; })
-> }, 1000);
-Yo lo uso en Chrome con Tampermonkey[6]. Es cutre y nada correcto, pero funciona.
-
-actualización: pongo la URL https:// en el @include para que también funcione si te has identificado en Infojobs.
-
-
-=> http://www.infojobs.net/ 1: http://www.infojobs.net/
-=> https://addons.mozilla.org/en-US/firefox/addon/greasemonkey/ 2: https://addons.mozilla.org/en-US/firefox/addon/greasemonkey/
-=> http://use.i.E.your.homepage/ 3: http://use.i.E.your.homepage/
-=> http://www.infojobs.net/jobsearch/search-results/list.xhtml 4: http://www.infojobs.net/jobsearch/search-results/list.xhtml
-=> https://www.infojobs.net/jobsearch/search-results/list.xhtml 5: https://www.infojobs.net/jobsearch/search-results/list.xhtml
-=> https://chrome.google.com/webstore/detail/dhdgffkkebhmkfjojejmpbldmpobfkfo 6: https://chrome.google.com/webstore/detail/dhdgffkkebhmkfjojejmpbldmpobfkfo \ No newline at end of file
diff --git a/blog_experiment/content/2011/12/construye-tu-guia-de-tv.gmi b/blog_experiment/content/2011/12/construye-tu-guia-de-tv.gmi
deleted file mode 100644
index 3a292a9f..00000000
--- a/blog_experiment/content/2011/12/construye-tu-guia-de-tv.gmi
+++ /dev/null
@@ -1,10 +0,0 @@
-# Construye tu guía de TV
-2011-12-18
-
-He publicado en Github tvguide[1], un miniproyectillo que incluye un scraper de guía televisiva (la de El Mundo) y un mini-interfaz web que muestra los 5 próximos programas de los canales que recibo en mi casa que están recogidos por El Mundo (i.e. falta RAC105 y algunos locales).
-
-El proyecto utiliza Maven y debería ser fácilmente compilable y trabajable desde Eclipse. Para compilarlo antes tendréis que compilar mi librería de utilidades commons.pdp7[2].
-
-
-=> https://github.com/alexpdp7/tvguide 1: https://github.com/alexpdp7/tvguide
-=> https://github.com/alexpdp7/commons.pdp7 2: https://github.com/alexpdp7/commons.pdp7 \ No newline at end of file
diff --git a/blog_experiment/content/2011/12/dilemas-en-la-ducha.gmi b/blog_experiment/content/2011/12/dilemas-en-la-ducha.gmi
deleted file mode 100644
index 6e5b416d..00000000
--- a/blog_experiment/content/2011/12/dilemas-en-la-ducha.gmi
+++ /dev/null
@@ -1,23 +0,0 @@
-# Dilemas en la ducha
-2011-12-15
-
-Unos emails con un ex-compañero de trabajo me ha traído a la cabeza el dilema del prisionero. El artículo de la Wikipedia[1] es más completo y extenso, pero refresquemos.
-
-Dos hombres están arrestados sospechosos de un crimen. La policia les ofrece por separado testificar en contra del otro (sin que puedan comunicarse entre ellos). Depende de si ninguno delata, uno o ambos, cada uno tendrá un destino diferente.
-
-En la versión clásica del problema, si ninguno delata al otro, ambos  cumplirán un mes de cárcel; si uno delata al otro, el delator queda libre y el otro cumple un año de condena. Si ambos se delatan, van a la cárcel tres meses.
-
-Lo que perjudica a ambos menos en global es, por supuesto, no delatar; cumplen 2 meses en total de condena, mientras que las otras opciones son 6 o 12 meses de condena. Pero claro, una persona que delata se asegura que no estará un año en prisión, y en el caso que el otro no delate, sale libre.
-
-Por tanto, el bien individual y el bien común llevan a comportamientos diferentes.
-
-El estudio del dilema del prisionero es harto interesante, ya que modeliza muchas situaciones "reales" y nos permite estudiarlas, comprenderlas y analizarlas. La llamada teoría de juegos estudia este problema y llega a la conclusión que en la versión clásica y con los parámetros descritos, la mejor estrategia es delatar **siempre** (dependiendo de la duración de las condenas según las delaciones, la mejor estrategia es callar siempre, claro). Incluso en la extensión común "iterativa", en la que la situación se presenta un número determinado de veces seguidas y los prisioneros "recuerdan" la historia, la mejor estrategia es delatar siempre; es lo que da el mejor resultado "egoísta"- si alguna vez callas, un oponente que delate siempre hará que pases más tiempo en prisión.
-
-Sin embargo, el resultado más sorprendente es que si jugamos iterativamente pero los prisioneros no saben exactamente cuántas partidas se van a jugar, el resultado cambia y se pueden obtener mejores resultados callando a veces (el artículo de la Wikipedia lo explica bastante bien)- las estrategías más efectivas son cosas como el "ojo por ojo" (hacer lo que ha hecho tu oponente en la partida anterior) o estrategias "cooperativas". Curiosamente, bajo ciertas condiciones, el bien común coincide con el bien propio.
-
-Este análisis se puede extrapolar a situaciones similares. Por ejemplo tomemos el caso de los atascos. En general, la gente se puede desplazar más rápido usando su coche que el transporte público, salvo si mucha gente coge su coche, lo cuál crea un atasco y el coche resulta más lento que, por ejemplo, el metro. ¿Hace la gente este tipo de análisis (implicita o intuitivamente)?
-
-Desde luego, el análisis teórico es fascinante, pero lo realmente interesante es llevarlo al mundo real y ver como interactúa el argumento lógico con el psicológico- ¿qué tiene más peso para el individuo? ¿Actuamos racionalmente? ¿Reacciona todo el mundo igual?
-
-
-=> http://en.wikipedia.org/wiki/Prisoner%27s_dilemma 1: http://en.wikipedia.org/wiki/Prisoner%27s_dilemma \ No newline at end of file
diff --git a/blog_experiment/content/2011/12/upserts.gmi b/blog_experiment/content/2011/12/upserts.gmi
deleted file mode 100644
index a163de5b..00000000
--- a/blog_experiment/content/2011/12/upserts.gmi
+++ /dev/null
@@ -1,11 +0,0 @@
-# Upserts...
-2011-12-17
-
-Trabajando en un pequeño experimento[1], se me ha ocurrido un insert idempotente:
-
-insert into foo (bar) (select 'bar_value' as bar where not exists (select 1 from foo where bar = 'bar_value'));
-
-(la sintaxis es de PostgreSQL, pero supongo que es adaptable a otras bases de datos). Igual intento adaptarlo a hacer upserts.
-
-
-=> https://github.com/alexpdp7/tvguide 1: https://github.com/alexpdp7/tvguide \ No newline at end of file