Cómo embeber Waves en tu blog (I)

Cómo embeber Waves en tu blog (I)

Ya dimos un repaso a los robots en Google Wave (y II) a cómo funcionan y cómo programar uno, hoy nos fijaremos en la Wave Embeded API o cómo embeber un Wave dónde nosotros queramos.

En ésta primera parte vamos a contemplar el caso que usemos un Wordpress (como es mi caso), ya que nos ahorraremos mucho tiempo.

Embeber un wave en Wordpress

Instalando y configurando Wavr

Configuración de Wavr

Configuración de Wavr

En Wordpress es muy sencillo ya que existe un fantástico Plugin llamado Wavr que nos hará todo el trabajo sucio, sólo tenemos que bajarlo, descomprimirlo y subir la carpeta Wavr a la ruta /wp-content/plugins/, una vez subido sólo tenemos que activarlo en el panel de Pluggins y ya estaremos listos para configurarlo.

Como veis en la imagen de la derecha podemos configurar las opciones por defecto pero también se añade un botón al editor de entradas para configurarlo al instante (aunque yo recomiendo escribir nuestros parámetros por defecto).

Como vemos podremos configurar si queremos usar el servidor de Sandbox (para desarrolladores) o el servidor de Preview (beta cerrada), también podremos adaptar el color del fondo a nuestro blog, el color de la letra, el tamaño de la letra y lo más importante, el tamaño del WavePanel que será lo que contendrá nuestro wave, en mi caso al tener un tema con márgenes líquidos pongo el width a 100% así se adaptara a la pantalla de cada usuario que visite el blog, y el height a 500px.

Preparando el wave

Una vez todo configurado ya podemos insertar un wave en un post poniendo el siguiente tag wave id=”ID_del_Wave” entre corchetes [ ]. Ahora sólo nos falta la ID del wave, que podemos conseguir fácilmente a partir de la URI en nuestro navegador (en la barra de direcciones), en nuestro Google Wave clicamos el wave que queramos y vemos que la URI tiene ésta pinta:

https://wave.google.com/wave/?pli=1#restored:wave:googlewave.com!w%252BGc7ZDyH5A

Tenemos que quedarnos con la parte después de wave: es decir con googlewave.com!w%252BGc7ZDyH5A.

Leer el resto de esta entrada »

Etiquetas: , , , , , ,

No hay comentarios

Spotify, o cómo vender a través del cansancio

Spotify, o cómo vender a través del cansancio
Everyone Loves Spots

Everyone Loves Spots

A éstas alturas muchos de vosotros ya conoceréis Spotify , personalmente es una herramienta que me encanta, me permite escuchar toda la música que me gusta y muchas veces no tengo en mi disco duro, me permite compartirla con mis amigos, hacer listas, escuchar listas de otra gente, compartir listas, etc.

Además han salido muchos servicios de terceros que potencian sobremanera el uso del programa, como por ejemplo SpotifyTunes , que te permite convertir toda tu librería  de iTunes en links de Spotify que puedes abrir y añadir a tu lista favorita. O ListasSpotify que permite a los usuarios colgar sus listas personales normalmente temáticas (jazz, películas, series, etc). Y muchísimas más aplicaciones que potencian el uso de Spotify.

Pero después de tanto tiempo usando Spotify he notado perceptiblemente un cambio mucho más agresivo en los anuncios que te sorprenden entre canción y canción. Está claro que el modelo de negocio está basado completamente en los anuncios, incluso su nombre lo indica, derivando del sustantivo Spot:

spot /(e)s’pot/ sustantivo masculino (pl spots) tb ~ publicitario (espacio) slot;
(anuncio) commercial, advertisement (BrE)

Hasta aquí lo entiendo perfectamente, lo que está pasando progresivamente es que se van reduciendo los anuncios ‘externos’ o de terceros y están ganando terreno progresivamente los anuncios propios o de ‘autobombo’ para que compres la versión premium de Spotify, y con perlas como por ejemplo:

Hola, soy un anuncio, sirvo para que escuches la radio y veas la televisión gratis, pero si quieres…. puedes matarme… PAM!! Compra Spotify Premium por…blablabla

Y algunos otros incluso representando una escena dónde un chico se está declarando a una chica con música romántica de fondo y salta un anuncio de Spotify de fondo.

Al principio tenían su gracia pero está llegando un momento que llegan al cansancio, supongo que mucha gente habrá sucumbido, a mi el cansancio todavía no me lleva a pagar 10€ mensuales por escuchar música, quizá deberían plantearse bajar el precio en vez de atacar a la paciencia de la gente con los anuncios.

Etiquetas: , , ,

No hay comentarios

Mac OS X Snow Leopard, primeras impresiones

Mac OS X Snow Leopard, primeras impresiones

Como muchos felices propietarios de un ordenador made in California hace unos días pedí la nueva versión de Mac OS X, Snow Leopard y aquí voy a explicar mi experiencia hasta el momento.

Instalación

Después de leer las diferentes opciones de instalación me decidí por la que desde mi punto de vista parece la mejor opción, que es instalar el sistema operativo de cero y luego restaurar mis archivos con una copia de seguridad de Time Machine.

Time Machine

Time Machine

El primer paso obviamente es hacer una última cópia de seguridad de nuestros archivos mediante Time Machine.

Lo primero que hice fue irme a las Preferencias del Sistema en Discos de Arranque y seleccioné el DVD de instalación de Snow Leopard y le di a Reiniciar, de ésta forma se inicia directamente y sin complicaciones directamente del DVD.

Después de seleccionar el idioma aparece la barra superior de opciones donde hay un menú de Utilidades donde puedes seleccionar la Utilidad de Discos, luego encontrar nuestro disco duro y darle a borrar, de ésta forma dejamos el disco duro limpio y listo para empezar de cero .

A continuación podemos seguir con la instalación normalmente, que no demora más de unos 30 minutos, una vez instalado nos pregunta si deseamos importar documentos, aplicaciones y preferencias de otro mac o de una cópia de seguridad de Time Machine, yo escogí ésta última opción, y restauré la copia de seguridad vía Wi-Fi, lo que me llevó unas 10 horas (más de 100 Gb), lo dejé por la noche y por la mañana ya lo tenia todo como lo había dejado.

Novedades

Puede que lo que me sorprendiera más a primera vista fuera la velocidad y la baja carga del procesador, en mi opinión se notan bastante los 64 bits sobre los que corren ahora todos los procesos, Exposé también aparece de forma instantánea.

Sobre la (in)compatibilidad de aplicaciónes, yo sólo he tenido que reinstalar la aplicación iStats menu, comprensible ya que mira estadísticas del sistema, aunque si os queréis curar en salud aqui hay una lista de posibles incompatibilidades que pueden surgir con algunas aplicaciones, para mi la única incompatibilidad que puede llegar a afectarme es Parallels, aunque pocas veces lo uso.

Entre las novedades que he ido descubriendo, las que me han gustado más son: Leer el resto de esta entrada »

Etiquetas: , , , , , , , ,

No hay comentarios

Cambio de feed

Cambio de feed

Debería haber hecho ésto desde el principio, pero lo he ido retrasando hasta hoy!

Muevo mi feed a FeedBurner, así que para los que me sigáis por RSS os recomiendo que cambiéis  el feed por:

http://feeds.feedburner.com/SundayLazyness

Así podré llevar un pequeño control sobre quien (más bien cuantos)  me sigue (si es que me sigue alguien)!

No seáis vagos y actualizadlo!

Etiquetas: , ,

No hay comentarios

Crear un robot en Python para Google Wave (II)

Crear un robot en Python para Google Wave (II)

Bueno, continuando con mi anterior post , hoy nos meteremos de lleno en el código del robot, y cómo manipular todas las posibilidades de un Wave.

Si hacemos un poco de memoria en el anterior post hablamos de definir qué eventos escuchamos y qué funciones llama cuando se da ése evento :

facey.RegisterHandler(events.WAVELET_PARTICIPANTS_CHANGED, OnParticipantsChanged)
facey.RegisterHandler(events.WAVELET_SELF_ADDED, OnRobotAdded)
facey.RegisterHandler(events.BLIP_SUBMITTED, OnBlipSubmit)

Vemos que los eventos a escuchar en éste caso son 1) cuando los participantes cambian, 2) cuando el robot se añade al Wave y 3) cuando alguien escribe un blip (texto).

Vamos a ver primero el evento que pasa antes, cuando añadimos el robot a un Wave se llama la función OnRobotAdded:

def OnRobotAdded(properties, context):
  """El robot ha sido añadido."""
  root_wavelet = context.GetRootWavelet()
  root_wavelet.CreateBlip().GetDocument().SetText("Hi I'm Lasty, if you have a Last.fm account you can type 'YourLastFMUser-is-listening' and I will tell you what song are you listening! Example Beldar-is-listening")

Debemos tener claro la estructura de un Wave: está formado de Wavelets (agrupación de blips) y de Blips que son el texto que escribimos, pero en todo Wave hay un Wavelet raíz, que es el que tendremos que conseguir para añadir un nuevo blip al final del resto.

Así pues vemos que en la línea 3 conseguimos el Wavelet raíz, y a continuación creamos un nuevo blip e insertamos un texto dentro, en éste caso, cuál es la función del robot y cómo se usa.

Hemos visto un ejemplo muy sencillo de cómo crear un blip e insertar texto dentro, pero algo que debéis saber es que las conversaciones en Wave se envían y guardan en XML puro, por lo que hay una separación total de contenido y formato, es decir se guarda el texto pero no si es un link, está en negrita o qué tamaño tiene, eso se hace mediante las Annotations (anotaciones).

Ahora mismo están muy limitadas las opciones de formato en Wave, ya que se basan en su editor de texto WYSIWYG y siguen unas opciones un tanto extrañas, así como la forma de aplicar un estilo en el editor es seleccionar el texto y darle al botón de negrita, para hacerlo vía código tenemos que hacerlo de la misma forma, definiendo el rango de texto al que queremos aplicar estilo.

Como expliqué en el anterior artículo tenemos que importar el objeto Range para usarlo:

from waveapi.document import Range

La forma de aplicar una Anotación es un poco incómoda porqué siempre debemos saber el tamaño del string que queremos transformar, tomaremos por ejemplo el blip que genera el robotito Lasty, que tiene ésta pinta:

Blip que general Lasty

Blip que general Lasty

Como vemos haremos un repaso a cómo insertar negritas, diferentes tamaños de letras, links e imágenes.

Explicaré sólo el trozo de código que se refiere a las anotaciones, aunque podéis ver el código completo en Google Code que intento mantener actualizado.

Como he dicho, en el XML del Wave no se guardan los estilos del texto, pero tampoco las imágenes y otros elementos embebidos, ya que el protocolo de Wave guarda éstas anotaciones como operaciones que el editor aplica una vez cargado el texto, así lo hace en todos los editores y es una de las razones por las cuales se puede dar un intercambio de información a tiempo real tan rápido, ya que no se envía el contenido y el formato por separado, aunque esto signifique hacerle la vida más complicada a los desarrolladores.

Leer el resto de esta entrada »

Etiquetas: , , , ,

3 Comentarios