martes, agosto 09, 2011

Instalar el kernel v. 3.1.0-rc1 en Ubuntu 10.10 al "Debian Style"



Explico en esta entrada la forma de instalar el kernel más reciente - a día de hoy- en Ubuntu (10.10) al estilo Debian es decir, generando paquetes .deb pero descargando el núcleo desde kernel.org (fuera de los repos de Ubuntu).

Primero habrá que comprobar que tenemos instalados los siguientes paquetesgit-core kernel-package fakeroot build-essential libncurses5-dev

Si no los tenemos, los instalamos:
$sudo apt-get install git-core kernel-package fakeroot build-essential libncurses5-dev

Después hay que seguir los siguentes pasos:

1) Ir al directorio home
$ cd $HOME

2) Obtener el kernel -fuentes- de la línea principal (torvalds) mediante git:

$git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

3) Una vez descargadas las fuentes del kernel el paso siguiente sería configurar el kernel con las opciones idóneas para nuestro hardware. Este proceso exige un buen conocimiento del hardware de nuestro equipo, por lo que una buena opción es tomar la configuración del kernel anterior -uno que funcione- ya que tendrá la mayoría de las opciones hardware configuradas correctamente. Después sólo queda indicar las nuevas funcionalidades que nos vaya pidiendo el nuevo kernel. Ante la duda conviene tomar las que vienen por defecto. Así, para configurar el kernel de esta manera, haremos lo siguiente:

Obtener la configuración del kernel antiguo:

$cp /boot/config-`uname -r` .config

Configurarlo:

$make oldconfig

4) El siguiente paso será comentar las líneas "echo "+"" del archivo scripts/setlocalversion con #, de lo contrario fallará la compilación.

Lo podemos hacer de forma automática con:

$sed -rie 's/echo "\+"/#echo "\+"/' scripts/setlocalversion

5) Construimos los archivos linux-image and linux-header .deb mediante:
CONCURRENCY_LEVEL=`getconf _NPROCESSORS_ONLN` fakeroot make-kpkg --initrd --append-to-version=-jorgeroden kernel_image kernel_headers

*nota: cambia -jorgeroden por lo que quieras.
Probablemente salgan algunos errores de hardware que no impedirán que funcione.

6) Instalamos los paquetes .deb generados en el nivel superior del directorio (en mi caso):

$sudo dpkg -i linux-image-3.1.0-rc1-jorgeroden_3.1.0-rc1-jorgeroden-10.00.Custom_i386.deb
$sudo dpkg -i linux-headers-3.1.0-rc1-jorgeroden_3.1.0-rc1-jorgeroden-10.00.Custom_i386.deb
7) Hacemos que el kernel sea arracable en nuestro sistema con grub2

$sudo update-initramfs -ck 3.1.0-rc1-jorgeroden 
$sudo update-grub2
8) Reiniciamos el sistema y arrancamos con el nuevo kernel y ¡a disfrutar de lo más cool!.

*nota: En la versión release candidate 1 (-rc1) sale un error durante el arranque: Error: Driver 'mdio-gpio' is already registered, aborting... pero sin ninguna repercusión en el buen funcionamiento del sistema. Ya he informado del error. Supongo que en breve habrá alguna explicación.
De momento las impresiones son buenas, parece que arranca más rápido y que las aplicaciones funcionan correctamente.

Actualización:
Si alguien quiere probar mis .deb generados y ahorrarse los pasos de arriba, los puede descargar desde los siguientes enlaces:
linux-headers
linux-image


Se admiten todo tipo de comentarios (gracias).
Obviamente no ofrezco ninguna garantía de funcionamiento (como no podía ser de otra forma).

Fuente: https://wiki.ubuntu.com/KernelTeam/GitKernelBuild

jueves, julio 21, 2011

El peligro de los ebooks (The danger of ebooks)

Paso a traducir uno de los artículos del boletín de la Free Software Foundation que nos envían periódicamente, en papel, a los miembros de la fundación. El artículo es de Mr. Stallman:

FSF Bulletin.
Issue 18
June 2011

"The danger of ebooks" by Richard Stallman
Translation: Jorge Muñoz Rodenas FSF member 5687

En una época donde las empresas dominan a nuestros gobiernos y escriben nuestras leyes, cada avance tecnológico les ofrece una oportunidad para imponer nuevas restricciones al público.
Las tecnologías, que nos podían haber enriquecido, se usan sin embargo para encadenarnos.
Con los libros impresos:
  • Puedes comprar cualquier libro en metálico, de forma anónima,  y una vez hecho esto te pertenece.
  • No se solicita que firmes una licencia que te restrinja su uso.
  • El formato se conoce y no se necesita tecnología propietaria para leer el libro.
  • Puedes dar, prestar o vender el libro a cualquiera.
  • Puedes, físicamente, escanear y copiar el libro, siendo esto en ocasiones lícito en el ámbito del copyright.
  • Nadie tiene la capacidad de destruir tu libro. 
Esto contrasta con los libros de Amazon:

  • Amazon solicita a los usuarios identificarse para obtener un ebook.
  • En algunos países, Amazon le dice al usuario que el libro no le pertenece.
  • Amazon también requiere del usuario que acepte una licencia restrictiva para el uso del ebook.
  • El formato es secreto, y sólo un software restrictivo-privativo puede leer el libro en toda su amplitud.
  • Para algunos libros se permite un "sucedaneo" de préstamo sólo posible si se especifica el nombre del usuario al que se presta el ebook. Dicho usuario ha de estar registrado.
  • No se permite dar o vender ebooks.
  • Copiar el libro es imposible debido a la gestión de derechos digitales (DRM) en el dispositivo lector y prohibido por la licencia, que es incluso más restrictiva que la propia ley de copyright.
  • Amazon puede, de forma remota, borrar el ebook usando una puerta trasera - Usó esta puerta trasera en 2009 para borrar miles de copias de la novela de George Orwell "1984".
Una sóla de estas infracciones deja a los ebooks a un paso por detrás de los libros impresos. Debemos rechazar los ebooks hasta que respeten nuestra libertad.
Las compañías de ebooks dicen que denegar la libertad que teníamos con el libro tradicional es necesario para continuar pagando a los autores - el sistema de copyright actual tiene un sistema de pago nefasto para los autores, pero es ideal para apoyar a esas compañías. Podemos mejorar nuestro apoyo a los autores de otras formas que no exijan restringir nuestra libertad, e incluso legalicen el acto de compartir.
Los dos métodos que he sugerido son:

  • Repartir fondos a los autores a través de impuestos basados en la raíz cúbica de la popularidad del autor.
  • Diseñar reproductores de ebooks para que los usuarios puedan hacer donaciones anónimas a los autores.
Los ebooks no necesitan menoscabar nuestra libertad, pero lo harán si las compañias así lo deciden. De nosotros depende pararles. La lucha acaba de empezar.

NdT:
ebook: libro electrónico.
copyright: derechos de copia.
Published with Blogger-droid v1.7.4



Copia y pega este texto si permiso para cualquier propósito. Lo único que pido es que menciones las fuentes, es decir, al autor de la traducción y al blog.

viernes, julio 15, 2011

Botonera para servos con Arduino UNO

Trasteando de nuevo con Arduino he hecho un montaje casero para almacenar y reproducir con sendos pulsadores la posición de un servo que se maneja o, mejor dicho, sigue a un potenciómetro. Esto me ha permitido jugar un poco con la librería Servo.h y las instrucciones para escribir y leer datos en la EEPROM de 1Kb que lleva el modelo Arduino UNO.

Ahí va la inmortalización del evento de pruebas:



El código fuente:
 
/*
Potentiometer-Servo-button-command
Author: Jorge Muñoz Rodenas jorgeroden1@gmail.com
License: GPL v.3
Date: 14/7/2011
Version: 0.2 (alpha)
Description: to do
 */

#include <eeprom.h>
#include <servo.h>

Servo myservo1;  
Servo myservo2;

// Constants

const int buttonPinMem1 = 2;               // digital pin Mem button1
const int buttonPinAct1 = 3;               // digital pin Act button1
const int buttonRelease = 12;              // digital pin RELEASE button
const int servo1Pin = 10;                  // Servo1 PWM pin
const int servo2Pin = 11;                  // Servo2 PWM pin
const int ledPin =  13;                    // the number of the LED pin (soldered on board)
const int potpin1 = 0;                     // analog pin used to connect the potentiometer1
const int potpin2 = 1;                     // analog pin used to connect the potentiometer2
const int addr0 = 0;                       // EEPROM 1st address  (Mem1-servo 1)
const int addr1 = 1;                       // EEPROM 2nd address  (Mem1-servo 2)

// Variables  

int val1 = 0;
int val2 = 0; 
int posPot1 = 0;
int posPot2 = 0;
byte pos1, pos2;                             //Servo position
int buttonStateMem1 = LOW;                   // memory pushbutton1 status
int buttonStateAct1 = LOW;                   // action pushbutton1 status
int buttonStateRelease = LOW;
boolean running = true;

void setup() {
  
   myservo1.attach(servo1Pin);                     // attaches the servo on pin 9 (digital) to the servo object 
   myservo2.attach(servo2Pin);                    // attaches the servo on pin 10 (digital) to the servo object 
   pinMode(ledPin, OUTPUT);          
   pinMode(buttonPinMem1, INPUT);  
   pinMode(buttonPinAct1, INPUT);  
}

void loop(){
    
  //Reads analog input
  
  val1 = analogRead(potpin1);              // reads the value of the potentiometer (value between 0 and 1023)   
  val1 = map(val1, 0, 1023, 0, 179);       // scale it to use it with the servo (value between 0 and 180) 
  val2 = analogRead(potpin2);              // reads the value of the potentiometer (value between 0 and 1023) 
  val2 = map(val2, 0, 1023, 0, 179);       // scale it to use it with the servo (value between 0 and 180)   
  
  //Reads digital input
  
  buttonStateMem1 = digitalRead(buttonPinMem1);
  buttonStateAct1 = digitalRead(buttonPinAct1);
  buttonStateRelease = digitalRead(buttonRelease);
  
  //Servo 1 and 2
  
  if (running == true)
  {
    myservo1.write(val1);
    myservo2.write(val2);
  }
 
 // Program 1
 
  if (buttonStateMem1 == HIGH) {    
    
    digitalWrite(ledPin, HIGH);          //LED 13 on
    EEPROM.write(addr0, val1);
    EEPROM.write(addr1, val2);
    digitalWrite(ledPin, LOW);           //LED 13 off
          
  } 
  
  if (buttonStateAct1 == HIGH) {     
 
    running = false;
    digitalWrite(ledPin, HIGH);                 //LED 13 on
    pos1 = EEPROM.read(addr0);
    pos2 = EEPROM.read(addr1); 
    myservo1.write(pos1);                       // sets the servo position according to the scaled value 
    myservo2.write(pos2);                       // sets the servo position according to the scaled value 
    digitalWrite(ledPin, LOW);                  //LED 13 off

    } 
 
    // Release button
  
  if (buttonStateRelease == HIGH) {    
    digitalWrite(ledPin, HIGH);                 //LED 13 on
    running = true;   
    delay(40);
    digitalWrite(ledPin, LOW);                 //LED 13 off      
  } 
   
}


Sobre el tema de las conexiones, los pines vienen en el software aunque si alguien lo quiere montar, y tiene dudas de cómo se conectan los servos, pulsadores y potenciómetros aquí dejo unos garabatos a mano (hoy paso del Eagle) a modo de recordatorio.

Ciao!


domingo, marzo 20, 2011

Arreglar Arduino UNO para Ubuntu (10.10)

Hace unos días me compré una nueva Arduino para jugar con ella. Es el modelo Arduino UNO y, paradojas de la vida, a pesar de ser un proyecto MUY libre, no tiene buen soporte para gnu/linux (Ubuntu que es mi caso a día de hoy). Hay un bug en el firmware para la comunicación serie-USB.
La solución está en cargar un nuevo firmware, siguiendo los siguientes pasos (bajo la responsabilidad de cada uno, que todo esto es gratis ):

Paso 1:
Ir a https://github.com/arduino/Arduino/tree/master/hardware/arduino/firmwares/arduino-usbserial/   y descargar la última versión de Arduino-usbserial-uno.hex 
Ojo, hay que descargarse el código hexadecimal tal cual (no el html). Para ello hacemos click sobre el archivo y después click derecho en la opción "raw" (guardar enlace como).

Paso 2: Instalar Device Firmware Update para chips Atmel:

 $sudo dpkg -i linux-headers-2.6.38-020638_2.6.38-020638.201103151303_all.deb  

Paso 3: Poner el chip en modo programación conectando los siguientes cables:

Con el cable USB conectado:

  • Mantén el primer cable en la posición indicada.
  • Mantén el segundo cable en la posición indicada.
  • Desconecta el segundo cable.
  • Desconecta el primer cable.

Paso 4: Reprogramar el firmware:

 $sudo dfu-programmer at90usb82 erase  
 $sudo dfu-programmer at90usb82 flash --debug 1 Arduino-usbserial-uno.hex  
 $sudo dfu-programmer at90usb82 reset  
Paso 5:

Desconectar y volver a conectar el cable USB...y a rular.

Fuentes:

http://arduino.cc/forum/index.php?topic=55736.0
http://es.scribd.com/doc/45913857/Arduino-UNO
http://www.strangeparty.com/2010/12/13/fix-your-arduino-uno-for-linux/

kernel 2.6.38 en Ubuntu 10.10 por la vía rápida

Si estás ansioso por probar el nuevo kernel 2.6.38 que trae bastantes mejoras, tienes instalada una Ubuntu 10.10 (Maverick) y no quieres esperar a la versión 11.04 (será la que llevará dicho kernel de fábrica), puedes hacerlo por la vía rápida descargando e instalando los siguientes paquetes (arquitectura i386):

Paquete 1:
http://kernel.ubuntu.com/~kernel-ppa/mainline/v2.6.38-natty/linux-headers-2.6.38-020638_2.6.38-020638.201103151303_all.deb

 $sudo dpkg -i linux-headers-2.6.38-020638_2.6.38-020638.201103151303_all.deb  

Paquete 2:
http://kernel.ubuntu.com/~kernel-ppa/mainline/v2.6.38-natty/linux-headers-2.6.38-020638-generic_2.6.38-020638.201103151303_i386.deb

 $sudo dpkg -i linux-headers-2.6.38-020638-generic_2.6.38-020638.201103151303_i386.deb  

Paquete 3:
http://kernel.ubuntu.com/~kernel-ppa/mainline/v2.6.38-natty/linux-image-2.6.38-020638-generic_2.6.38-020638.201103151303_i386.deb

 $sudo dpkg -i linux-image-2.6.38-020638-generic_2.6.38-020638.201103151303_i386.deb  

Finalmente se actualiza el grub:

 $sudo update-grub2  
y a reiniciar y probar... ¡por cierto!,  funciona ok.



Fuentes:

http://www.chimerarevo.com/2011/02/07/ubuntu-10-10-come-installare-il-kernel-2-6-38/

martes, diciembre 21, 2010

Ley Sinde

Dentro de unas horas el gobierno aprobará la Ley de economía sostenible con una disposición "bomba" para el interés común, también llamada ley Sinde (haciendo honor a nuestra ministra de cultura). A uno, con todo esto, se le queda el cuerpo a veces helado a veces hirviendo (la sangre), y ya se sabe... los cambios de ritmo bruscos no son buenos. Ya se intuía que la clase política no suele respetar mucho la opinión de la plebe, y que el concepto de democracia hace aguas desde su aparición en nuestro querido país, pero que todo esto venga de un partido autodenominado progresista apesta. Corren tiempos de catarsis. 

El tema queda bastante bien explicado en este interesante artículo:
http://blogs.elpais.com/trending-topics/2010/12/sinde-de-que-vas.html

Incluye una entrevista a David Bravo en la 2 que cuelgo a continuación, aunque recomiendo leer el artículo entero:



Otro artículo a leer:

http://www.enriquedans.com/2010/12/preguntas-y-respuestas-sobre-la-ley-sinde.html


*********** ACTUALIZACIÓN (22/12/2010) ***********
Parece que al final las protestas han surtido efecto y han tumbado la Ley Sinde en el Congreso de penalti y en el último minuto.
Hay van las noticias en algunos medios :
http://www.publico.es/ciencias/352848/el-congreso-tumba-la-ley-sinde
http://www.elpais.com/articulo/cultura/Fracasa/ley/Sinde/Congreso/ultimo/intento/PSOE/conseguir/apoyo/elpepucul/20101221elpepucul_1/Tes
http://www.elmundo.es/elmundo/2010/12/21/navegante/1292966844.html
http://www.abc.es/20101221/cultura/congreso-sinde-201012211116.html

domingo, diciembre 05, 2010

Wikileaks

Wikileaks no es un wiki al uso. El lector no puede editar y modificar la información que allí se publica como ocurre en la Wikipedia. A groso modo, Wikileaks es una especie de portal donde, fundamentalmente, se publica información sobre los comportamientos "no éticos" de los gobiernos. La información colgada en la web, en modo sólo lectura, es una cantidad ingente de filtraciones de documentos oficiales "secretos" que los propios implicados en los gobiernos como trabajadores, espías, militares y alguna que otra oveja negra, envían a Wikileaks para su publicación. Supongo que lo hacen porque consideran que hay ciertos temas que deben hacerse públicos para que el mundo los conozca, a pesar de los riesgos que ésto conlleva. En principio "los papeles" se publican sin interpretar, tal cual, aunque parece que se eliminan algunos nombres para no poner en peligro su seguridad. A continuación es la prensa convencional  la que procesa, traduce y selecciona la información, para después divulgarla de forma sencilla para el público.
Las grandes ventajas de la informática que provocaron la revolución tecnológica del siglo XX, fueron la velocidad de procesamiento y  la capacidad de replicar archivos. Intentar separar el proceso de copia de la propia informática es como querer electricidad sin magnetismo, ying sin yang, etc... Si a todo esto le añades una buena red de comunicación mundial, como es internet, y la intrínseca necesidad de subversión del ser humano, se puede liar parda tal y como ha ocurrido en estas últimas semanas.
Creo que no nos pilla de sorpresa que los gobiernos actúen de forma poco ética e hipócrita para conseguir su objetivos que, en muchos casos,  no coinciden con los de los ciudadanos pero la verdad es que uno siente placer al leerlo de primera mano.
Como no podía ser de otra forma, habrá venganza. Los gobiernos se pasan por el forro de los cojones el estado de derecho que ellos mismos nos imponen, y actúan fuera de su propia ley, la misma que aplican con rigor cuando la incumple cualquier hijo de vecino.
Los propios servidores de Wikileaks están sufriendo en carnes (o mejor dicho en semiconductor) la ira gubernamental y están siendo atacados continuamente para bloquear el acceso del público en general. Parece ser que para hacer esto no necesitan una orden judicial.
Como internet, a día de hoy, sigue siendo un foro libre, para vencer el bloqueo se abren continuamente mirrors y nuevas direcciones. Si te apetece echar un ojo a Wikileaks puedes encontrar URLs alternativas en: http://savewikileaks.net/another-wikileaks-address/

Aquí adelanto unas cuantas que funcionan hoy:

  1. http://120310wl.frezeb.webfactional.com/
  2. http://195.214.241.98/
  3. http://213.251.145.96
  4. http://213.251.145.96/
  5. http://213.251.145.96.nyud.net/
  6. http://46.59.1.2
  7. http://46.59.1.2/
  8. http://46.59.1.2.nyud.net/
  9. http://79.159.1.172/wikileaks/
  10. http://85.88.21.139/
Si te quieres implicar un poco más, en la siguiente web tienes unos buenos consejos:



martes, noviembre 30, 2010

Manifiesto por una red neutral

Los ciudadanos y las empresas usuarias de Internet adheridas a este texto manifestamos:

  1. Que Internet es una Red Neutral por diseño, desde su creación hasta su actual implementación, en la que la información fluye de manera libre, sin discriminación alguna en función de origen, destino, protocolo o contenido.
  2. Que las empresas, emprendedores y usuarios de Internet han podido crear servicios y productos en esa Red Neutral sin necesidad de autorizaciones ni acuerdos previos, dando lugar a una barrera de entrada prácticamente inexistente que ha permitido la explosión creativa, de innovación y de servicios que define el estado de la red actual.
  3. Que todos los usuarios, emprendedores y empresas de Internet han podido definir y ofrecer sus servicios en condiciones de igualdad llevando el concepto de la libre competencia hasta extremos nunca antes conocidos.
  4. Que Internet es el vehículo de libre expresión, libre información y desarrollo social más importante con el que cuentan ciudadanos y empresas. Su naturaleza no debe ser puesta en riesgo bajo ningún concepto.
  5. Que para posibilitar esa Red Neutral las operadoras deben transportar paquetes de datos de manera neutral sin erigirse en “aduaneros” del tráfico y sin favorecer o perjudicar a unos contenidos por encima de otros.
  6. Que la gestión del tráfico en situaciones puntuales y excepcionales de saturación de las redes debe acometerse de forma transparente, de acuerdo a criterios homogéneos de interés público y no discriminatorios ni comerciales.
  7. Que dicha restricción excepcional del tráfico por parte de las operadoras no puede convertirse en una alternativa sostenida a la inversión en redes.
  8. Que dicha Red Neutral se ve amenazada por operadoras interesadas en llegar a acuerdos comerciales por los que se privilegie o degrade el contenido según su relación comercial con la operadora.
  9. Que algunos operadores del mercado quieren “redefinir” la Red Neutral para manejarla de acuerdo con sus intereses, y esa pretensión debe ser evitada; la definición de las reglas fundamentales del funcionamiento de Internet debe basarse en el interés de quienes la usan, no de quienes la proveen.
  10. Que la respuesta ante esta amenaza para la red no puede ser la inacción: no hacer nada equivale a permitir que intereses privados puedan de facto llevar a cabo prácticas que afectan a las libertades fundamentales de los ciudadanos y la capacidad de las empresas para competir en igualdad de condiciones.
  11. Que es preciso y urgente instar al Gobierno a proteger de manera clara e inequívoca la Red Neutral, con el fin de proteger el valor de Internet de cara al desarrollo de una economía más productiva, moderna, eficiente y libre de injerencias e intromisiones indebidas. Para ello es preciso que cualquier moción que se apruebe vincule de manera indisoluble la definición de Red Neutral en el contenido de la futura ley que se promueve, y no condicione su aplicación a cuestiones que poco tienen que ver con ésta.

La Red Neutral es un concepto claro y definido en el ámbito académico, donde no suscita debate: los ciudadanos y las empresas tienen derecho a que el tráfico de datos recibido o generado no sea manipulado, tergiversado, impedido, desviado, priorizado o retrasado en función del tipo de contenido, del protocolo o aplicación utilizado, del origen o destino de la comunicación ni de cualquier otra consideración ajena a la de su propia voluntad. Ese tráfico se tratará como una comunicación privada y exclusivamente bajo mandato judicial podrá ser espiado, trazado, archivado o analizado en su contenido, como correspondencia privada que es en realidad.

Europa, y España en particular, se encuentran en medio de una crisis económica tan importante que obligará al cambio radical de su modelo productivo, y a un mejor aprovechamiento de la creatividad de sus ciudadanos. La Red Neutral es crucial a la hora de preservar un ecosistema que favorezca la competencia e innovación para la creación de los innumerables productos y servicios que quedan por inventar y descubrir. La capacidad de trabajar en red, de manera colaborativa, y en mercados conectados, afectará a todos los sectores y todas las empresas de nuestro país, lo que convierte a Internet en un factor clave actual y futuro en nuestro desarrollo económico y social, determinando en gran medida el nivel de competitividad del país. De ahí nuestra profunda preocupación por la preservación de la Red Neutral. Por eso instamos con urgencia al Gobierno español a ser proactivo en el contexto europeo y a legislar de manera clara e inequívoca en ese sentido.

Difúndelo...

domingo, noviembre 21, 2010

Wikipedia pide donaciones

Como suele ser habitual cada año Wikipedia, a través de su fundador Jimmy Wales, pide donaciones a los usuarios para mantener este pedazo de proyecto. La idea es que ésta quede más o menos como funciona ahora, sin publicidad y abierta a la gestión de los usuarios.
Yo ya he aportado mi granito de arena...(25 eurillos de nada) creo que vale la pena. Para muchos de nosotros se ha convertido en la enciclopedia de facto ¿no? Además hay que recordar que esta sustentada por la fundación Wikimedia, sin ánimo de lucro y sin intereses oscuros.



http://es.wikipedia.org/wiki/Wikipedia:Portada

Petición de donación de Jimmy Wales

martes, noviembre 09, 2010

Enseñanza 2.0 (a punto de tirar la toalla part I)

Buen poster de Néstor Alonso que explica bastante bien la infame situación en la que nos encontramos. Busco estímulos positivos pero no los encuentro...



vía: JLRedrejo -> http://lafraguadeltic.wordpress.com/