Viendo videos de Youzee en Linux

Youzee LogoPara los despistados, Youzee es una nueva plataforma web (creada por iniciativa española, aun en fase beta) para la visualización de películas y series de forma extremadamente cómoda. Eso sí, pagando una cuota de unos 7 € mensuales. A mi parecer, el coste puede valer la pena, el catálogo es grande (y sigue creciendo), la calidad de streaming es alta y los films y series están disponibles en varios idiomas.

Aunque no es la única plataforma de este estilo (tenemos por ejemplo a Hulu, Netflix, que desgraciadamente no aterrizará en nuestro país, u otras iniciativas españolas como Wuaki.tv) tengo que admitir que hasta el momento es la que más me ha gustado... salvo por un detalle: Hubo problemas con los monitores VGA, y en especial con Linux (pero tengo la sensación de que lo mismo debe pasar con las otras plataformas estadounidenses).

Por suerte los problemas iniciales se han ido solucionando, y el de Linux se puede sortear con un pequeño apaño. Bastará con instalar el paquete hal con la herramienta aptitude o apt-get (o synaptic, o la que prefiráis vosotros).

Hay un detalle que conviene comentar para los usuarios de Ubuntu. Parece que la forma en que se instala el plugin Adobe Flash puede hacer que la cosa funcione o no. En particular recomiendo instalar el paquete adobe-flashplugin en vez del paquete flashplugin-installer. Además es conveniente señalar que la herramienta aptitude puede ser problemática para instalar el paquete adobe-flashplugin, por lo que es preferible usar apt-get.

Referencias

  1. http://blog.guiloma.es/2012/01/usando-youzee-en-linuxdebianubuntu.html

Primeros pasos con CoffeeScript

CoffeeScript LogoComo dije en el anterior artículo sobre Nodejs, en este haré una introducción al lenguaje CoffeeScript.

CoffeeScript está diseñado para ser compilado a JavaScript, y parece estar basado en lenguajes como Python o Ruby. Mi empeño en explicar CoffeeScript antes de continuar con la guía de Nodejs radica en que probablemente voy a usarlo con asiduidad. Me gusta Nodejs... pero no me gusta Javascript.

Reconozco que JS es un lenguaje que obliga a pensar de manera diferente, y que en cierta manera le obliga a uno a lucir su ingenio cuando quiere crear código mínimamente interesante, pero a la vez me parece agobiante su falta de "limpieza" y la gran cantidad de construcciones "adhoc" que existen para poder trabajar siguiendo el paradigma OOP.

Empecemos con un ejemplo sencillo, transformaremos el "Hello world" que realizamos anteriormente en Javascript para Nodejs a código CoffeeScript. En primer lugar presentaremos el código que ya escribimos para usarlo de base:

1
2
3
4
5
6
7
8
var http = require('http');
 
http.createServer(function (req, res) {
	res.writeHead(200, {'Content-Type': 'text/plain'});
 	res.end('Hello Worldn');
}).listen(1337, "127.0.0.1");
 
console.log('Server running at http://127.0.0.1:1337/');

En segundo lugar, veamos como debería ser su equivalente en CoffeeScript:

1
2
3
4
5
6
7
8
http = require "http"
 
http.createServer((req, res) ->
  res.writeHead 200, {"Content-Type": "text/plain"}
  res.end "Hello Coffee!!\n"
).listen 1337, "127.0.0.1"
 
console.log "Server running at http://127.0.0.1:1337/"

Intentemos analizar las particularidades de este código. Podemos observar en la primera línea que no es necesario declarar las variables con la palabra reservada var, y que además las funciones son llamadas escribiendo sus parámetros después de sus nombres sin tener que rodearlos con paréntesis, un espacio basta. En la línea 4 podemos ver que cuando hay más de un parámetro estos deben separarse con comas.

Otro punto interesante es la no necesidad de punto y coma final, lo que puede ayudarnos a evitar algún que otro error tonto. Sigamos, pues hay una particularidad que podría darnos algunos dolores de cabeza si no caemos en la cuenta: en la línea 3 podemos ver como se llama a una función usando paréntesis, contrariamente a lo que había indicado antes. Esto solo se puede hacer si los paréntesis están pegados al nombre de la función.

Si hubiera un espacio entre createServer y el paréntesis, entonces se consideraría como parámetro no lo que hay dentro del paréntesis, sino el resultado de la llamada al  método listen (CoffeeScript creería que ese método pertenece al objeto retornado por el interior de los paréntesis).

Respecto a las funciones anónimas en CoffeeScript, estas se declaran de una forma que puede extrañar un poco, pero que para nada es complicada. Las funciones en CoffeeScript tienen estructuras como las que siguen:

1
2
3
4
5
funcionA = (param_1, param2) -> param_1*param_2
 
funcionB = (param_1, param_2) ->
    alert param_1
    param_1*param_2

Es decir, se indican los parámetros que aceptará dentro de un paréntesis, y el cuerpo de la función se escribe después de la flecha formada por el guión y el "mayor que". El último valor calculado se tomará como valor de retorno, y tal como pasa en Python, la identación es importantísima para definir el ámbito de las instrucciones. CoffeeScript tiene muchas otras características (bastante más) interesantes pero creo que será mejor que quien esté interesado las aprenda directamente de su sitio oficial :) .

Para acabar, veamos como se transforma este código nuevamente a Javascript para poder ser ejecutado por Nodejs o aplicado directamente en la parte del cliente de alguna aplicación web que estemos desarrollando. Antes será preciso instalar el compilador de CoffeeScript, y para ello usaremos NPM, como indiqué en el anterior artículo. Realizar la instalación es tan sencillo como teclear en la línea de comandos:

1
sudo npm -g install coffee-script

La opción -g sirve para indicarle a npm que queremos una instalación "global", que el compilador coffee sea accesible desde todo el sistema. Ahora, suponiendo que hayamos llamado ejemplo.coffee a nuestro código, para compilarlo a Javascript solo tenemos que escribir en la línea de comandos:

1
coffee -c ejemplo.coffee

Y obtendremos un fichero llamado ejemplo.js apto para ser ejecutado en Nodejs :D . Podéis comprobar como el código obtenido será ligeramente diferente a nuestra primera versión escrita en Javascript, ya que estará contenido dentro de una función autoejecutable. Si queréis, también podéis hacer el experimento de poner un espacio entre createServer y el paréntesis para comprobar lo que os he dicho anteriormente. Bien, esto es todo por hoy ^_^ , otro día más.

Como evitar perder visitas en un traslado de blog

Nota: Este artículo está dedicado a blogs basados en WordPress, no servirá de mucho leerlo si se buscan soluciones para otros CMS.

Para los que leéis lo que escribo de forma frecuente ya sabréis que recientemente realicé un traslado de la "parte técnica" de mi antiguo blog a este nuevo blog. El proceso de traslado ha sido (y está siendo) laborioso. He tenido que exportar/importar artículos , además de tener que reclasificarlos (porque no lo había hecho demasiado bien anteriormente).

El caso es que además, también he tenido que borrar los artículos que copiaba a este nuevo blog del anterior para evitar penalizaciones en los buscadores por tener contenido duplicado. Y aquí aparece el problema: el blog antiguo evidentemente pierde visitas porque hay contenido que desaparece, pero la situación es algo peor, ya que el nuevo tampoco las gana por no estar todavía lo suficientemente enlazado desde otros sitios web.

¿Como solucionamos este problema? Parece que en el ecosistema de WordPress hay plugins para todo, y este caso no es la excepción. Con el plugin "Redirection" podemos crear redirecciones desde las urls de los artículos antiguos a sus nuevas urls en nuestro nuevo blog. Esta joya crea una redirección 301, es decir, le indica a los buscadores que esa redirección es permanente, con lo que podremos evitar perder muchas visitas (es probable que siempre se pierda algo en estos traslados).

De vuelta con los peligros de la centralización y el software privativo


Thinking Is Free

Creada por Rev. Strangelove (Flickr) (bajo Creative Commons 2.0 By)

Hace poco adquirí un nuevo teléfono móvil a través del programa de puntos de cierta compañía (no viene a cuento que les haga publicidad gratuíta). Hay cuatro puntos que me motivaron a hacerlo:

  1. Capricho, simple capricho.
  2. Los puntos iban a caducar y perdería la oportunidad de tener un aparato nuevo "sin coste alguno" (aparte del contrato de permanencia... aunque poco me importaba porque de todos modos iba a seguir con la misma compañía).
  3. Ganas de conocer Android de primera mano (sí, en parte el capricho estaba relacionado con éste punto), tengo planeado desarrollar algo para esta plataforma en cuanto acabe la carrera, de aquí a pocos meses si estudio con ganas. Así que se podría decir que en parte es por motivos "profesionales".
  4. Mi antiguo móvil, con más de 3 años y medio ya me empezaba a dar problemas de batería, cobertura y calidad de sonido en las llamadas.

¿Qué sensaciones he tenido con mi nuevo aparato? Muchas, en algunos casos aparentemente contradictorias. Mi nuevo teléfono móvil funciona con Android 2.1 (Éclair) y es una maravilla de la técnica. Es cierto que ahora mismo hay terminales que le dan mil vueltas al chisme que he conseguido recientemente, y que la versión de Android 2.2 (Froyo) es una mejora importantísima, tanto en términos de rendimiento como en términos de usabilidad, pero eso importa poco si aún con todas esas limitaciones comparadas la máquina hace lo que necesito. De lo que quiero hablar es de otra cosa, de algo bastante más general.

No todo es de color de rosa hoy en día por mucho que en blogs de todo el planeta los redactores escriban exaltados por cada una de las novedades que inundan sus sentidos día sí y día también. No quiero referirme tampoco a la "fragmentación de Android" ni al mangoneo de las compañías telefónicas para añadir sus cutreaplicaciones o capar servicios incluidos de serie en Android, ese asunto compete a las "asociaciones de consumidores" y a los clubs de fans de las compañías tecnológicas [sic].

Bien, ¿y entonces... qué, qué pasa? Pues que de alguna manera nos han colado un gol muy importante, incluso podría ser que nos lo hubiéramos colado nosotros mismos. Cuando arranqué mi móvil por primera vez lo primero que vi fue una interfaz cuyo código es cerrado, los asistentes que se ejecutaron para conectar el aparato a ciertas redes sociales para obtener las listas de contactos también eran software privativo, y así con la mayoría de aplicaciones preinstaladas. Me conecté a Android Market para buscar aplicaciones interesantes y prácticamente la totalidad de ellas eran de código cerrado, etc.

Ante quejas como las mías mucha gente señala a quien las suelta como "talibanes del software libre", pero la realidad es mucho más triste, no solo no somos talibanes, sino que además esas acusaciones sólo suponen un escudo para que a nuestras espaldas multitud de compañías se forren traficando con nuestra información privada. Para muestra un botón, en ésta página web [0] se hace un pequeño análisis sobre una muestra reducida de aplicaciones populares en el App Store de Iphone y el Android Market. Al final del artículo que he enlazado hay un enlace en el que se explica la metodología que han seguido para analizar como tratan nuestros datos privados esas aplicaciones.

Llegados a éste punto, dependiendo de la información que tenga el lector, podría llegar a muchas conclusiones erróneas. Alguien podría pensar que Iphone es mejor en términos de libertad [sic] (esa persona hipotética está muy mal informada, Iphone es todo él software cerrado).

Otros podrían pensar en desinstalar las aplicaciones privativas de su teléfono Android, y aquí se presentan varios problemas. En primer lugar, algunas de ellas solo se pueden desinstalar si se entra en el terminal en modo administrador, lo que no es sencillo a priori (hay que usar en muchos casos software privativo), o bien hay que conocer las herramientas de desarrollo de Android, o es imposible porque las aplicaciones están escritas en memoria de "solo lectura". Hay gente que cambia el software entero que hay en sus terminales, y para ello usan ROMs preparadas, pero eso no siempre es posible (o no es posible usando solo software libre), por algunas razones: En primer lugar, aunque Android sea libre, casi nunca lo son los drivers necesarios para gestionar ciertas partes del dispositivo, como las cámaras o los sensores de movimiento. En segundo lugar, porque algunos fabricantes han diseñado sus terminales para que si se intenta cambiar el sistema preinstalado éstos queden inutilizables [1][2][3].

Sea como sea no profundizaré más en como se introduce software privativo hasta debajo de la alfombra en los móviles con Android, y sí en las consecuencias de todo ello. Se podría comparar la situación actual con la que se daba antes de la aparición de Android y otros sistemas operativos libreas para móvil, como Maemo o Meego.

Antes no había software libre en el mundo de la telefonía, ¿qué ha empeorado entonces? Antes no había software libre, pero tampoco había un grado tan alto de conectividad, ni se manejaba una cantidad de información tan grande en nuestros teléfonos móviles. Hoy en día gestionamos casi todos los aspectos de nuestra vida online, desde la lectura y escritura de emails, pasando por el uso de Twitter, y/o Facebook, hasta incluso movimientos monetarios. Si en nuestros aparatos existen programas no confiables que pueden acceder a todos nuestros datos, y además estos programas tienen acceso a Internet, no hay que ser muy listo para ver que este mismo software puede enviar información muy valiosa a terceras personas sin nuestro consentimiento (y esas terceras personas jugarnos malas pasadas, o espiarnos por la razón que sea, desde motivaciones políticas o religiosas hasta el simple fetichismo).

Por alguna extraña razón permitimos a desconocidos el acceso a nuestra información más íntima, mientras que en muchos casos nos enfadamos cuando gente cercana nos hace "demasiadas" preguntas, muchas de ellas realmente inofensivas. Si tan celosos somos de nuestra intimidad entonces deberíamos vigilar un poco más con la tecnología que nos rodea.

Y la cosa no se acaba aquí. Incluso si pudiéramos ver como funciona todo el software de nuestros teléfonos móviles y verificar que nuestra privacidad no es vulnerada seguiríamos teniendo algunos problemas importantes por resolver.

Google y Facebook son actualmente los dos grandes de Internet, y los dos viven de la publicidad y de nuestros datos. A priori no se puede decir que sea malo que vivan de nuestros datos, pues no es necesario vulnerar la privacidad para obtener información aprovechable. A nadie en su sano juicio se le ocurriría denunciar a un vendedor de cosméticos por vender estadísticas sobre quien compra qué productos a las empresas farmacéuticas y cosméticas (en términos de edad, sexo, gasto, tipo de producto...), no hay nada de malo en dar algunos porcentajes, sin nombres, números de teléfono o direcciones. Y ese podría ser el caso de Google y Facebook, pero... ¿alguien se lo cree?

Siendo Facebook más jóven que Google ya ha incurrido en algunos escándalos [4], y hace poco se ha sabido que Goldman & Sachs ha decidido invertir 500 millones de dólares en la compañía [5]. Es preocupante que una compañía como Goldman & Sachs meta sus zarpas en una empresa con tanta información sobre la población con acceso a Internet.

Aunque he empezado atacando a Facebook, Google no es mucho mejor en ese sentido, muchos recordarán el caso del Google Street View y el almacenamiento indebido de claves y tráfico de redes wifi abiertas [6]. Podéis leer sobre las prácticas de Google en un libro titulado "El lado oscuro de Google" [7] , disponible para descargarlo gratuítamente en formato PDF.

Puede parecer que ya he hablado mucho y que he mencionado muchos problemas, pero la verdad es que este no es el final. Hay más, bastante más. No se trata solo de nuestra privacidad, o de nuestra seguridad (por poner un caso, la seguridad de nuestras cuentas bancarias), este es también un asunto de dependencia, e incluso de posible manipulación informativa.

Todos hemos visto como en dos años Facebook ha crecido de forma desproporcionada, hasta el punto de que mucha gente ha dejado de enviar emails y usa el sistema de mensajería interno de Facebook. ¿Tan malo es eso? ¡Sí! ¡Es completamente horroroso! Este hecho hace que muchos de los que no tienen cuenta en Facebook no se puedan comunicar con esas personas, no les pueden enviar mensajes porque no usan sus cuentas de correo, y no pueden recibir mensajes de esas mismas personas porque el mundo de Facebook es un jardín vallado, nada entra ni nada sale. Y eso tiene muy poco que ver con el Internet abierto que imaginaron Tim Berners Lee y otros contemporáneos. Es peligroso que toda nuestra información (incluida la correspondencia) esté dominada por una única compañía. ¿Qué pasa si se hunde? ¿Lo perdemos todo? ¿Qué pasa si hay un conflicto bélico y pertenece al bando enemigo? ¿Nuestro enemigo lo sabe todo sobre nosotros? ¿Qué pasa si la compañía actúa de forma poco ética con nuestros datos? ¿Qué pasa si tienen un problema de seguridad y terceras personas pueden acceder a nuestras cuentas? ¿Tendrán acceso a toda nuestra información?

He mencionado un primer problema de dependencia y estaba relacionado sólo con la correspondencia entre internautas, pero eso, como todo lo demás, es solo un síntoma de algo mucho más grande. Mucha gente mantiene colecciones enormes de fotografías en "la nube", particularmente en Facebook... y en ninguna otra parte. Es cierto que la mayoría de gente que sube sus imágenes allí también las guarda en sus máquinas, pero no es tan cierto que si alguien me hace una foto y la cuelga allí yo disponga de una copia en mi propio ordenador. ¿Qué pasa con eso? Pues que confiamos desproporcionadamente en Facebook, y en cualquier momento podríamos perder todo ese material, a veces se trata solo de basura, pero en ocasiones podemos estar hablando de recuerdos importantes, recuerdos que no le importan lo más mínimo a Mark Zuckerberg.

Otra vez, Google no es mucho mejor. Muchos de nosotros tenemos cuentas de email en su servicio GMail por su sencillez, rapidez, funcionalidad y espacio en el buzón. Pero no tantos saben que muchas personas, por razones totalmente arbitrárias y de forma totalmente sorprendente, han perdido sus cuentas de un día para otro [8], y con ellas miles de emails e información valiosísima. Y no solo eso, sino que también han perdido una parte de su identidad online. Ya lo dicen en las condiciones de servicio que eso puede pasar, pero nadie lee eso y nadie piensa que le vaya a tocar.

Como vemos, no es bueno (para el ciudadano) centralizar todas sus actividades en los servicios de una o dos compañías, porque sus datos se pueden ver seriamente comprometidos, porque se genera una dependencia enorme y un cambio de circunstancias puede darnos problemas mayores aún, e incluso porque podemos estar accediendo a información manipulada o sesgada a favor de las compañías que nos la suministran.

Es obvio que uno no puede vivir aislado del mundo, y que la gente necesita que alguien le proporcione ciertos servicios, no todo se lo puede hacer uno mismo (o por razones económicas, o por falta de tiempo, o por falta de conocimientos técnicos). ¿Hay vida más allá de Google y Facebook? Sí.

Para empezar, en el campo de los buscadores hay dos iniciativas muy interesantes. La más nueva es www.blekko.com, un buscador especializado en ofrecer búsquedas algo "más semánticas" que las que puede ofrecer Google, y otra que lleva algo más de tiempo funcionando es www.duckduckgo.com , un buscador orientado a no vulnerar la privacidad, y diría yo también que a hacer búsquedas algo más técnicas (para programadores e informáticos).

En el campo de las redes sociales, este verano surgió un proyecto que hizo furor, aunque ahora mismo el hype ha desaparecido, se trata de Diaspora. Diaspora es un proyecto que pretende construir una red social similar a la de Facebook sobre servidores conectados mediante tecnología P2P. Diaspora se ha programado utilizando la tecnología de Ruby on Rails y, todo se tiene que decir, actualmente no es una tecnología madura del todo (todavía hay algun agujero de seguridad importante por tapar), en todo caso promete. Podéis visitar la página oficial y pedir una cuenta de sus servicios (en estado de pruebas todavía) https://joindiaspora.com/ , e incluso podéis montar vuestro nodo si seguís las instrucciones [9].

En la misma línea de autogestión de la propia información también nació el proyecto OwnCloud, de la mano de un desarrollador del proyecto KDE , cuyo propósito es que podamos gestionar nuestros archivos en línea en nuestro propio servidor, siendo algo similar a Dropbox, Box.net o Ubuntu One, pero libre, y con una mecánica de funcionamiento algo distinta. El creador de OwnCloud en su momento fue colaborador (puede que lo siga siendo) de otro proyecto parecido, en este caso catalán, que se llama EyeOs y ha dado lugar a un proyecto empresarial que ya ha cosechado algunos éxitos.

Para acabar mencionaré uno de los proyectos que han aparecido más recientemente, esta vez dedicado a la descentralización de la web. Se trata de Unhosted http://www.unhosted.org/ , un proyecto que promete mucho, y que supuestamente permitirá alojar sitios web sin tener que hospedarlos en servidores que no controlamos (o que no podemos costear). ¿Como? Pues otra vez el P2P acude como salvador, en este caso se combina la tecnología P2P con criptografía fuerte y tecnología de servidores web para conseguir hospedar páginas web en un conjunto relativamente disperso de ordenadores conectados a Internet.

En cuanto a Android... la FSF (y todos nosotros, almenos los que tengamos capacidades técnicas) deberíamos mover el culo para promover la creación de aplicaciones libres para el entorno de Android y evitar que el software privativo invada ese nicho de forma permanente. Es nuestra responsabilidad defender nuestros derechos.

[0] http://blogs.wsj.com/wtk-mobile/
[1] http://imovilphone.com/jailbreak/motorola-droid-x-autodestruye-android/
[2] http://imovilphone.com/android/motorola-efuse-droid-x/
[3] http://www.androidsis.com/motorola-droid-x-y-efuse-menos-lobo-caperucita/
[4] http://www.fayerwayer.com/2010/10/facebook-admite-violacion-de-privacidad-“involuntaria"/
[5] http://www.gurusblog.com/archives/goldman-sachs-valora-facebook-50-000-millones/04/01/2011/
[6] http://xlsemanal.finanzas.com/web/articulo.php?id=61878&id_edicion=5787
[7] http://www.ippolita.net/22.html
[8] http://www.chrisbrogan.com/when-google-owns-you/
[9] https://github.com/diaspora/diaspora/wiki/Installing-and-Running-Diaspora

Omemo P2P

Buenas, hoy he empezado a ser BetaTester del programa p2p Omemo aparecido recientemente de la mano de Pablo Soto.

  • Primera impresión: un aspecto muy cuidado.
  • Segunda impresión: Pocos archivos disponibles en la red (normal, hay una base de usuarios extremadamente pequeña).
  • Tercera impresión: Velocidad de publicación muy elevada (subida de archivos a la red).
Ahora lo comentaré todo un poco más, en un principio esta pieza de software da muy buena impresión, sobre todo para ser una versión beta. Se trata de un programa p2p que permite compartir no sólo archivos, sinó espacio de disco, es decir, todos los usuarios ceden una pequeña parte de su disco duro creando una gran unidad virtual de almacenamiento en la que todos pueden dejar archivos y descargarlos.

Como ya he dicho anteriormente, este programa ofrece una interfaz bonita y sencilla de manejar, a la vez que ofrece una velocidad de subida muy alta. Ahora bien, lo que es la descarga, lentísima. Pero no nos equivoquemos, todavía no se cual es la causa, si la pequeña cantidad de usuarios que hay en la red o un fallo en el diseño del protocolo, aunque me decanto más por la primera opción, sobre todo por el hecho de que el director de proyecto es un programador con experiencia.

Como no, he encontrado fallos, y éstos no sé si se deben a que se trata de una versión beta o a que ése es el funcionamiento que quieren que siga los desarrolladores, sin opción a cambiarlo.

  • La estructura jerarquizada de los archivos, organizados en carpetas puede llevar a confusiones, no todo se puede organizar jerarquicamente, por algo surgió la teoría de conjuntos. La solución podría ser que se le pudiesen adjuntar metadatos a los archivos para facilitar las búsquedas.
  • No existe un motor de búsqueda automatizada, para buscar archivos se tiene que ir rastreando los directorios donde se cree que puede estar el archivo, eso significa que al tiempo de busqueda de archivos dentro de un directorio se le tiene que sumar el tiempo que conlleva la lentitud humana.

¿Que más puedo decir? No lo sé, supongo que ya os iré dando algunos datos, aunque de momento Omemo promete. ;)