Clickthrough en los resultados de Google según la posición

Webmaster tools

La semana pasada Google lanzó una nueva – y desde mi punto de vista muy útil – funcionalidad dentro de sus Webmaster Tools, concretamente la posibilidad de ver el número de impresiones y el CTR de tus keywords más populares. No solo eso, sino que para cada keyword te indica el número de impresiones por posición y el CTR para esa posición. Por último, también permite filtrar por fecha, país y buscar (web, images…).

Obviando todas las implicaciones que tiene a nivel SEO – recordemos que es muy típico utilizar campañas de AdWords para medir impresiones de keywords – tal vez lo más interesante sea que por fin tenemos números bastante reales de impresiones, por lo que realizar el cálculo de CTR según la posición es trivial, y la única complicación posible consistiría en procesar más o menos datos (de momento la información no se puede obtener via alguna API de Google, por lo que es un trabajo bastante manual).

A modo de prueba de ningún modo concluyente, he realizado el cálculo del CTR para algunas palabras – 10 muestras para cada posición – con un trafico entre 100 y 4000 búsquedas diarías, y los resultados coinciden más o menos con lo esperado:

Position CTR Std. dev.
1 54% +-5%
2 28% +-5%
3 16% +-4%
4 10% +-2%
5 8% +-3%
6-10 3% +-2%
11-20 4% +-2%

Como dato curioso, parece que el CTR en la segunda página es mayor que el de las posiciones 6 a 10, aunque ya he dicho la muestra es pequeña e igual estoy comparando keywords en posición 10 con keywords en la posición 11 – primer resultado de la segunda página – por lo que un mayor CTR para la segunda página tampoco sería inesperado. También he comprobado que para algunas keywords de long tail el CTR de la primera posición es del 100%, y que en general para keywords de long tail no es raro ver CTRs para la primera posición por encima del 80%.

Concluyendo, para keywords con volumen medio – de 100 – 5000 impresiones al día – todo lo que no sea posicionar entre los 5 primeros resultados posiblemente no compense demasiado, y para long tail  - menos de 100 búsquedas al día – la primera posición es primordial.

Sería interesante que alguien publicara un estudio con un mayor número de muestras y validara mis datos, y de paso entrara en más detalle: distribución de CTR por tipo de sitio, impresiones diarias, número de keywords de la búsqueda…

Debian 5 Lenny en NSLU2

Después de tener por una temporada bastante olvidado mi NSLU2, hoy he decidido reinstalarlo con Debian 5, añadiendo soporte para servidor de impresión, escaneo y de ficheros. Para realizar el proceso he seguido varios tutoriales, que listo a continuación:

  1. Instalar Debian 5, un proceso bastante largo que puede tardar hasta 4 horas.
  2. Sustituir OpenSSH por Dropbear, para ahorrar memoria RAM (9MB vs 1MB).
  3. Instalar el servidor de la impresora, concretamente p910nd, que utiliza bastante menos memoria que CUPS.
  4. Instalar Inadyn, para actualizar la IP dinámica de mi ADSL, y luego crear un script en init.d para que se ejecute al inicio del sistema. En caso de que el ejecutable bajado no sea compatible, bajar el código fuente y
    aptitude install build-essential
    cd inadyn
    make
  5. Configuramos exim4 para el envio de correos a través del SMTP de Google (y así nos aseguramos la entregabilidad)

Para otras  funcionalidades, recomiendo visitar la página con el listado completo de tutoriales.

Solucionar el error del botón home en Android

androidsickAyer lei un artículo sobre un posible fallo en Android 1.6 en and.roid.es. Concretamente el artículo trataba sobre un error por el que el botón de home de los HTC dejaba de funcionar con Android 1.6. La verdad es que no le di más importancia hasta que curiosamente escasas horas más tarde me sucedió algo muy parecido: el botón home dejo de funcionar, el botón de llamada no mostraba la lista de contactos/llamadas, y el botón de colgado no bloqueaba el móvil, solo apagaba la pantalla.

La solución propuesta en el artículo era hacerle un “factory reset” al móvil, pero la verdad es que no me motivaba mucho, por lo que decidí hacer una búsqueda – para estas cosas mejor buscar siempre en inglés – en Google, y efectivamente encontré un hilo sobre el tema.

Por lo que parece este fallo no es nuevo, ya que el primer post del hilo está datado a 28 de octubre del 2008, así que si ya se soluciono con alguna versión anterior de Andriod podemos suponer que se trata de una regresión en la última versión disponible a día de hoy, la 1.6.

Concretamente la solución se encuentra en el post 34 del hilo y consiste en arrancar el tutorial de inicio, y los pasos son los siguientes:

  1. Instalar AnyCut desde el Android Market
  2. Ir a la home
  3. Pulsación larga en el escritorio
  4. Seleccionar “Accesos directos”
  5. Seleccionar “Any Cut”
  6. Seleccionar “Activity”
  7. Seleccionar “Setup Wizard” de la lista de actividades
  8. Seleccionar “Asistente de configuración”. En caso de tener más de uno, crear accessos directos para todos.
  9. Ejecutar la aplicación desde el escritorio

Alternativamente también es posible realizar los mismos pasos con la aplicación de pago “Better Cut”, que simplifica la selección del “Asistente de configuración”, ya que muestra más detalles y en este caso podemos escoger directamente el correcto. Concretamente tenemos que seleccionar la “activity” con el subtítulo “SetupWizardTestActivity”.

En mi caso el tutorial daba un error y la aplicación se cerraba después de introducir mis credenciales de Google, pero pese a eso se han solucionado ambos errores.

Tags: ,

Extract the innerHTML of a DOMNode in PHP5

Is there an easier way to extract the innerHTML from a DOMNode in PHP5?

/**
* Extracts the innerHTML of a DOMNode.
*
* The function makes a new DOMDocument, imports the DOMNode,
* appends it to the new DOMDocument and returns the HTML of the DOMDocument
*
* @param DOMNode $node DOMNode we want to extract the innerHTML from
* @return string innerHTML of the node
* @author Sergi de Pablos
*/
function getInnerHTML(DOMNode $node)
{
try {
// We create a new
$document = new DOMDocument();
$newNode = $document->importNode($node,true);
$document->appendChild($newNode);
return $document->saveHTML();
} catch (DOMException $e) {
echo "\n" . $e->getMessage() . "\n";
}
}

Tags: , , ,

Arte tradicional japonés a la venta en eBay

Interesante colección de imágenes obtenidas de una muestra de arte tradicional tradicional japonés yokai (monstruos míticos) que se puede encontrar a la venta en eBay por 15.000$. La verdad es que serían unos motivos muy buenos para unas hacerse unas cuantas camisetas, ¿no?

The Haykki Yako (百鬼夜行), literally “the night parade of a hundred demons,” is one of the most famous tales in Japanese folklore. It first appeared in a Buddhist text in the 13th century, and is the story of a nightmarish evening during which legions of yokai, oni, and other fearsome creatures erupted from their usual hiding places to openly terrorize the world of the living.

Powered by Flickr Gallery

Via BoingBoing

Aaron Patzer, CEO de Mint, sobre los costes reales de las startups

Este 6 de octubre, Aaron Patzer, CEO de Mint (para los despistados, startup de 3 años recién comprada por Intuit por 160 millones de dolares) dio una conferencia en el campus de Microsoft sobre los costes reales de una startup. Más de uno debería tomar nota. A modo de resumen:

  • Fase 1: una vez has madurado la idea, obtener $100.000 de amigos y familia para construir un prototipo.
  • Fase 2: prototipo completo, obtener $1 millón para lanzar una versión alfa.
  • Fase 3: una vez que ya tienes un producto que funciona, obtener de $5 a 10 millones para escalar el producto

Fase 1 (primeros $100.000):

  • Fundadores: $30.000/año (viviendo en Silicon Valley no le llegaba ni para pipas)
  • Ingenieros (1 – 2) $30.000 – 50.000/año, más un porcentage (1-2%) de la compañía
  • Oficina: $400/cubo/mes
  • Maquinas: $10.000
  • Departamento legal: pagos diferidos por un 0.50 – 0.75% de la compañía

Fase 2 (primera ronda de financiación, ~$1.000.000):

  • Salarios: $50.000 – $90.000/año ($450.000/año por 5 personas: 3-4 ingenieros, 1 maquetador, 1 usabilidad)
  • Costes imprevistos: +20% ($100.000/año)
  • Departamento legal: $25.000 + $2.000/mes ($50.000/año)

Fase 3 (serie A de financición, $5-10 millones)

  • Salarios + sobrecostes: $200.000/año/persona
  • Costes imprevistos o recurrentes: muchos gastos necesaríos una sola vez que suman unos $150.000/mes
  • Departamento legal: $10.000-$50.000/mes

Y aquí el video de la presentación

Via Techcrunch

Tags: , ,

Rich snippets

Por lo que veo Google ha decidido mejorar los snippets de algunas de las páginas que indexan si éstas les proporcionan más información en la página mediante microformats.

Si bien todo lo que sea estandarizar la web me parece bien, especialmente a la hora de codificar la información, no me gusta tanto como “venden” esta estandarización desde Google. Sí, tal vez – no lo aseguran – tendrás mejores snippets, y sí, serás más estándar y cool, pero lo que yo realmente entiendo y no dicen es lo siguiente:

Pon microformats en tu site que tal vez mostraremos mejores snippets en tu página pero mientras tanto nos das toda tu información para que la parseemos ya bien formateada y ya verás lo poco que tardaremos en mostrar resultados de sites pertenecientes a Google con información parseada de tu site con mejor posicionamiento que tus propias páginas.

Tags: , ,

NSLU2 y SlugOS

Transmission sobre un NSLU2 con SlugOS

Finalmente me di por vencido intentando hacer funcionar Transmission sobre OpenWRT – no hubo manera humana de conseguir instalar software de optware – así que me he pasado a SlugOS. Sí, no tiene una interfaz web como OpenWRT, pero al menos tiene instrucciones claras y en apenas un rato he conseguido hacer funcionar el cliente torrent Tranmission sin problemas.

Mi recomendación: seguir al pie de la letra las instrucciones del wiki de nslu2-wiki.org.

Tags: , , ,

Instalar un disco duro USB en el NSLU2 con OpenWRT

Después de flashear mi NSLU2, el siguiente paso consiste en añadirle algo de almacenamiento. En mi caso, un disco duro de 400GB que pienso utilizar como almacenamiento en red.

  1. Lo primero, actualizar la lista de paquetes. Esto debe hacerse CADA VEZ que se reinicia el NSLU2 mediante reboot. Si no lo hacemos recibiremos un mensaje An error ocurred, return value: 1.
    opkg update
  2. Instalamos soporte para USB 2.0
    opkg install kmod-usb2
  3. Instalamos el módulo de almacenamiento
    opkg install kmod-usb-storage
  4. Y reiniciamos
    reboot
  5. Ahora ejecutando dmesg debería aparecernos algo parecido a esto
    usb.c: registered new driver usbdevfs
    usb.c: registered new driver hub
    uhci.c: USB Universal Host Controller Interface driver v1.1
    PCI: Enabling device 01:02.0 (0000 -> 0001)
    uhci.c: USB UHCI at I/O 0x100, IRQ 2
    usb.c: new USB bus registered, assigned bus number 1
    hub.c: USB hub found
    hub.c: 2 ports detected
    PCI: Enabling device 01:02.1 (0000 -> 0001)
    uhci.c: USB UHCI at I/O 0x120, IRQ 2
    usb.c: new USB bus registered, assigned bus number 2
    hub.c: USB hub found
    hub.c: 2 ports detected
    hub.c: new USB device 01:02.0-2, assigned address 2
    usb.c: USB device 2 (vend/prod 0xd7d/0x100) is not claimed by any active driver.
    Initializing USB Mass Storage driver...
    usb.c: registered new driver usb-storage
    scsi0 : SCSI emulation for USB Mass Storage devices
      Vendor: Apacer    Model: Drive             Rev: 1.05
      Type:   Direct-Access                      ANSI SCSI revision: 02
    Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0
    SCSI device sda: 256000 512-byte hdwr sectors (131 MB)
    sda: Write Protect is off
    Partition check:
     /dev/scsi/host0/bus0/target0/lun0: p1
    WARNING: USB Mass Storage data integrity not assured
    USB Mass Storage device found at 2
    USB Mass Storage support registered.
  6. Ahora ya podemos instalar el soporte para ext3
    opkg install kmod-fs-ext3
  7. Instalamos cfdisk, un fdisk más visual, y e2fsprogs
    opkg install cfdisk e2fsprogs
  8. A partir de aquí ya podemos crear las particiones con cdisk y formatear la partición , cambiando sda1 por el dispositivo correspondiente (un HD conectado via USB normalmente estará en sda1)
    mkfs.ext3 /dev/sda1
  9. Tags: , , , ,

    ¿Qué es el tiempo?

    Al prisionero de Schlisselburg le ocurre al contrario: sus veinticinco años de cautiverio están formados de intervalos de tiempo separados, penosos y largos, desde el toque de diana hasta la retreta, desde el desayuno hasa la cena. Pero la suma de esos hechos pobres logran generar una nueva sensación: en aquella lúgubre uniformidad de paso de los meses y los años el tiempo se encoge, se contrae…

    Así nace una impresión simultánea de brevedad e infinito, así nace una proximidad de percepción entre los concurrentes del baile de fin de año y los que llevan reclusos decenas de años. En ambos casos, la suma de acontecimientos engendra el sentimiento simultáneo de duración y brevedad.

    Hay una sensación que los participantes en un combate pierden casi por completo: la sensación del tiempo. La chica que ha bailado hasta la madrugada en una fiesta de fin de año no puede decir cuál ha sido su sensación del tiempo, si ha sido larga o, por el contrario, corta.

    De la misma manera, un recluso que haya pasado veinticinco años en cautividad en la prisión de Schlisselburg dirá: “Tengo la impresión de haber pasado una eternidad en esta fortaleza, pero al mismo tiempo me parece que sólo llevo en ella unas pocas semanas”.

    La noche del baile estará llena de acontecimientos efímeros: miradas, fragmentos de música, sonrisas, roces, y cada uno de ellos pasará tan rápido que no dejará en la mente de la chica la sensación de duración en el tiempo. Sin embargo, la suma de estos breves acontecimientos engendra la sensación de un largo intervalo de tiempo que parece abarcar toda la felicidad de la vida humana.

    “Vida y destino”, Vasili Grossman