Los límites del debate permitido

«La forma más inteligente de mantener a las personas pasivas y obedientes es limitar estrictamente el espectro de temas en el que se puede opinar, pero permitir debates muy acalorados dentro de ese espectro.»

Noam Chomsky, en The Common Good.

Hace unos días, en el metro que va del aeropuerto de Barajas a casa, un grupo de personas discutían intensamente. No pude evitar prestar atención a la conversación, y descubrí que el tema por el que parecían estar dispuestos a hacer rodar cabezas era sobre si un tertuliano cualquiera de esos de televisión tiene derecho o no a enfrentarse a los paparazzi tras haber cobrado voluntariamente y hacer el juego a esos mismos paparazzi.

Y entonces recordé esta cita de Chomsky.

Cómo arrancar una aplicación en NodeJS como servicio en Ubuntu

Ghost

Hace unos días hablábamos de cómo echar a andar Ghost en un servidor Ubuntu. Ya avisaba al final del post de que nos faltaba un detalle aún para tener nuestro blog 100% operativo: que el mismo se arranque automáticamente al encender el PC.

Para ello echamos mano de Upstart, que viene de serie en Ubuntu, y que aunque no es difícil de utilizar, utilizaremos a través del paquete upstarter para NodeJS que nos hará la vida aún más sencilla.

Puede que aún así, al reiniciar el servidor el servicio no arranque normalmente, si es vuestro caso, haciendo caso a la recomendación que encontramos en Ask Ubuntu ya lo tendríamos listo. Como estamos usando un Proxy en Apache, iniciamos la aplicación cuando ya tengamos interfaz de red cambiando el punto de inicio a

start on started network-interface INTERFACE=eth0

Listo. Este upstart, por cierto, nos servirá para arrancar como servicio cualquier otra cosa que necesitemos.

Cómo instalar Ghost en un servidor Ubuntu

Ghost

Ghost

Ghost es una nueva herramienta libre para gestionar blogs. Tiene licencia permisiva (lo cual no me agrada) pero está hecho en NodeJS y como no había instalado ninguna otra aplicación hecha en este lenguaje, y sé que es algo particular, he decidido instalarla en uno de mis servidores. Aquí detallo el proceso de instalación de Ghost en la raiz de un dominio, para tenerlo recopilado y que le sirva a quien intente hacer esta tarea en el futuro. Algo que para empezar me incluye a mí mismo, que si no lo anoto ahora seguro que en el futuro vuelvo a atascarme en algún paso.

  1. Lo primero es preparar el sistema. Ghost está programado usando el lenguaje NodeJS, así que necesitarás este software en tu servidor. En Ubuntu hay una versión antigua de NodeJS (necesitamos una versión >0.10), así que para instalarla añadimos a nuestro sources.list el siguiente repositorio disponible en Launchpad. Luego instalamos nodejs normalmente: # apt-get install nodejs La versión de NodeJS que estamos instalando ya incluye npm (Node Package Manager, una cli para instalar dependencias y paquetes de Node, al estilo de Ruby Version Manager para Ruby y Ruby on Rails).
  2. En Ubuntu 13.04 necesitaremos compilar las extensiones de sqlite para Node, si ya tenemos un entorno de desarrollo (incluido build-essential) configurado sólo necesitamos teclear: npm install -g node-gyp
    npm install sqlite3 --build-from-source
    Si nos hace falta preparar el sistema hay algunos pasos más.
  3. También necesitaremos algunas cosas de Python, las instalamos: # apt-get install python-software-properties
  4. Mi servidor ya tiene Apache funcionando como servicio, y no iba a configurar un servidor entero únicamente para esto, así que toca configurar el sistema para que nuestra aplicación NodeJS se lleve bien con el servidor Apache. Esto lo hacemos configurando un proxy entre ambos. En dos pasos:
    1. Habilitamos los módulos de apache deseados y reiniciamos el servidor Apache:
      # ln -s /etc/apache2/mods-available/proxy.load /etc/apache2/mods-enabled
      # ln -s /etc/apache2/mods-available/proxy_http.load /etc/apache2/mods-enabled
      # /etc/init.d/apache2 restart
    2. En el archivo en el que estamos declarando el vhost (también podemos hacerlo en la configuración de Apache) añadimos esta orden: ProxyPass / http://localhost:8000/ De esta forma redirigirimos toda petición a través del puerto 80 de Apache para el dominio completo al puerto 8000 de nuestro localhost.
  5. Por fin podemos ahora instalar nuestra aplicación, descomprimimos la última versión de Ghost y copiamos los ficheros donde vayamos a tenerlos en el disco duro. Por ejemplo /var/www/ghost/.
  6. Abrimos una terminal y hacemos nos movemos hasta el interior de ese directorio.
  7. Si hemos instalado bien todas las dependencias (Python, NodeJS, sqlite bindings para Node), podemos proceder directamente a ejecutar el siguiente comando desde la terminal situada en el directorio raiz de nuestro Ghost: # npm install --production.
  8. Copiamos config.example.js a config.js y editamos la configuración del entorno de producción, para indicar la URL de nuestro nuevo blog en Ghost, y el puerto interno en el que queremos que la aplicación «escuche». Cambiamos la URL del blog y, si nos hace falta, también el puerto en el que estamos escuchando. En mi caso esta sección queda con el siguiente aspecto:

    production: {
    url: 'http://ghost.local',
    mail: {},
    database: {
    client: 'sqlite3',
    connection: {
    filename: path.join(__dirname, '/content/data/ghost.db')
    },
    debug: false
    },
    server: {
    // Host to be passed to node's `net.Server#listen()`
    host: '127.0.0.1',
    // Port to be passed to node's `net.Server#listen()`, for iisnode set this to `process.env.PORT`
    port: '8000'
    }
    },

    De ahí, en nuestro caso sólo necesitamos cambiar la línea que comienza por «url:» y la de «port:», el resto lo dejamos tal cual. Tened en cuenta que aunque en la plantilla de este blog no muestre bien la indentación, hay que ser cuidadosos con los espacios, y los tabuladores en estos archivos :)
  9. Finalmente, levantamos la aplicación usando:
    # npm start --production

Parecen muchos pasos, pero que no os asuste. Todo esto se hace en unos 30 minutos. Menos si todo os sale bien a la primera (a mí me faltaron algunas dependencias y perdí un ratillo buscando un mensaje de error).

¿Qué faltaría por hacer? Pues será de mucha comodidad crear una tarea para que se ejecute automáticamente durante el reinicio de servidor, de forma que cada vez que reiniciemos nuestra aplicación en NodeJS se inicie automáticamente. Por lo demás, éstas son todas las notas rápidas que he tomado en el proceso de instalar Ghost en un servidor Ubuntu en producción que ya tenía Apache y algunas aplicaciones funcionando con este servidor. Lo haré cuando lo instale en el servidor definitivo, de momento esto es suficiente.

Espero que os resulte útil, es viernes, así que hay por delante un fin de semana que puede aprovechar para hackear y divertirse con esto. Para los que quieran sacar matrícula, si queréis instalar directamente desde el repositorio Git podéis seguir este tutorial, pero tendréis que instalar Ruby, bajar algunas gemas vosotros mismos, y además compilar todos los assets de Javascript antes de tener el dashboard operativo. Por eso es sólo para los que quieran la nota más alta :)

La precompra de bienes digitales, ¿qué sentido tiene?

Bitcoins

Hoy tengo una pregunta sobre comercio electrónico que puede parecer insignificante, pero es que es algo que me inquieta desde el punto de vista de la lógica del comprador.

En ausencia de descuento, ¿Cuál es el sentido del pre-order en una compra digital que igualmente podrás descargar el primer día?

Entiendo la precompra tradicional, te garantizas acceso a un producto limitado. Entiendo la precompra de ediciones limitadas, siempre que sea un producto digital pensado con la especulación y el mercado secundario en mente y por tanto con «copias limitadas» de forma artificial.

Pero no entiendo que en ausencia de esa escasez diseñada ni de otro tipo de descuentos existan motivos para hacer la precompra de un bien digital que igualmente el día que salga a la venta podrás comprar sin más y descargarte inmediatamente. Ejemplos de este tipo de precompra de artículos no limitados y sin descuento (como digo, algo que no entiendo) hay de diferente naturaleza: desde videojuegos a música, no termino de verlo en ningún caso.

Iba a abrir un mensaje en el foro, y de hecho es posible que terminemos debatiendo allí acabo de abrir un hilo por si por allí alguien responde, pero de momento dejo la pregunta aquí colgando.

Google, «Data über alles» y la sociedad de control

Nest

Nest

Hace varios meses comencé a escribir un artículo sobre Google Now en el que hablaba de data über alles como el mantra que rige el desarrollo de producto de Google. Data über alles se refiere a tus datos, mis datos, nuestros datos, claro. Nunca llegué a publicarlo y ahora reutilizo la idea para llevarla a un plano algo más general, desde Google Now a absolutamente cualquier aspecto de los nuevos desarrollos de Google.

In the beginning…

Al principio estaba Google Now. Y es que cuando a Google Now le da por algo… échate a temblar. Google Now está empeñado en mostrarme cada semana los resultados de la liga de fútbol. En concreto, los resultados del Málaga CF. Yo no salgo de mi asombro, está bien que Google sepa que tengo algún vínculo con Málaga, aunque admito que no era precisamente un reto adivinarlo. Pero yo jamás le dije a Google que el fútbol fuera mi pasión, o que tener el resultado del Málaga CF empujado hasta la garganta como notificación push me dé la vida (honestamente, no es así).

Coches, robots, y hasta los cacharros de tu casa: sensores en todas partes

Existen muchas opiniones sobre por qué Google se mete a desarrollar un coche que se conduce sólo, o por qué Google compra casi una decena de empresas de robótica de una tacada (luego compraron otra).

La rápida es pensar que Google quiere que el coche se conduzca sólo para que puedas ir usando sus servicios mientras tanto. El rato de ir hasta el trabajo se convertiría en otra ocasión para mostrarte anuncios. Como le decía a Recuenco en un comentario en su blog hace unos días, eso es mirar al dedo cuando el dedo apunta al cielo. Cito parte de mi comentario:

Google gets in the self-driving cars business (or in the robotics business) just because that’s the best way for them to put sensors in a brand new part of your life that’s just not being registered in their servers. To think that they just want you to Google things as the car drives itself is a bit foolish. That’s a marginal return. Google aims for the whole cake.

Los coches, los robots y hasta toda la gama de cacharritos domésticos a los que apunta la gigantesca compra de Nest por 3.200 millones de dólares (CNN) tienen otro rol en el plan maestro de Google: el objetivo es llenar de sensores ámbitos completos de tu vida que ahora mismo están al margen de sus servidores y del perfil que Google posee de ti.

La mayor parte de tu vida está pasando inadvertida para Google, hasta ahora. A otro nivel más sofisticado (e inquietante), cumplen para Google el mismo rol que Android y los dispositivos en los que éste se incluye: ser una nueva fuente de datos sobre ti. Sólo que el coche, los robots, y los cacharros de casa permiten tomar muchos nuevos datos de diferente naturaleza y de forma mucho más transparente (aún) al usuario. Una sociedad plagada de sensores conectados a servidores ajenos es una sociedad muy controlada.

¿Y la privacidad?

Por supuesto, la pregunta que nos queda es qué va a ser de la privacidad cuando toda esa tecnología esté desplegada. Hace unos días en una conversación por correo con unos amigos nos acordábamos de Battlestar Galactica y de cómo en ese universo futurista los computadores eran para uso personal. No los conectaban a la red nada más que para solucionar problemas de forma rápida, porque de hecho conectarlos a la red era una fuente misma de problemas. Una de las personas en la conversación replicó que los iraníes ya han aprendido por la vía dura que hay computadoras que no deben estar conectadas de ninguna forma, ni tener puertos accesibles (USB, CD, …).

La cosa es que si está conectado, va a llevar sensores y va a registrar todo lo que haces. La privacidad no queda demasiado bien en esta fotografía.

Un plugin para WordPress que de verdad sirve para cumplir la ley de cookies

Cookie filter, plugin de WordPress para ley de cookies

Pues bueno, hoy hemos publicado en Cartograf un post sobre el nuevo plugin para WordPress que hemos liberado. Se trata de un plugin que nos permite cumplir la ley de cookies (sobre la que he hablado en este blog alguna vez) en nuestro sitio web hecho con WordPress.

¿Cómo, pero hacía falta un plugin para eso existiendo otros? Pues la verdad es que los plugins que había estaban todos pensados para los requisitos (más laxos) de la ley de Reino Unido, así que a nuestro modo de entender sí que hacía falta. Así que lo hemos hecho, y lo hemos liberado (como nos gusta hacer).

Si ya lo tenéis claro también podéis pasar a descargar el plugin. Eso sí, no seáis demasiado duros, es una versión sin bugs (conocidos), pero apenas tiene unas pocas opciones y aún tenemos pendiente hacerlo aún más fácil de usar y personalizar, pero preferíamos liberarlo cuanto antes, dado que es un tema que aún está generando quebraderos de cabeza a muchas personas.

Interfaces para la tabloidización amparada en la tabletización

Samsung Magazine UI

Samsung presenta su nueva interfaz para Android, denominada Magazine UI:

«The software is the real star of the show here, with Samsung tossing the standard Android home screen in favor of a new interface called «Magazine UI» which the company says is better suited for larger displays.»

En cuatro ideas para contextualizar el mito del descubrimiento hablábamos de la tabloidización como la consecuencia natural en términos de uso de lo que la tabletización impone (¡el código es la ley!) por diseño técnico.

La nueva interfaz desarrollada por Samsung recuerda muchísimo a la de Windows Phone, por cierto, y coincido en que puede ser buena idea para estos dispositivos.

Samsung Magazine UI

Pero eso es así como consecuencia del comportamiento que el dispositivo facilita al usuario, y por supuesto el nombre de Magazine UI no es ni casual ni sorprendente, al menos para quienes intentamos mantener un ojo en las posibilidades reales que la tecnología da a las personas.

Este blog usa cookies para su funcionamiento.    Más información
Privacidad