Enlaces interesantes – 17 de Mayo de 2017

La nueva era del ‘open banking’

Este fenómeno se conoce como ‘banking as a platform’. La banca tradicional será la base del sistema, quien gestione los datos, si bien estos tendrán que ser compartidos de forma obligatoria con terceros a través de APIs, por lo tanto se librará una batalla para situarse enfrente del cliente y ofertarle el servicio final, ya que ahí estará el valor añadido.

Cómo Jordi Cruz acabó con el mito del chef y nos devolvió a la lucha de clases

El empleo «becario» es para que las empresas faciliten formacion mediante la experiencia del trabajo, un trabajo como el que acepta una persona con experiencia, no un trabajo esclavo. Estas empresas llevan los abusos a los jóvenes a escalas inhumanas. Se trata de ofrecer empleo becario no precario.

Antonio Gramsci (1891-1937)

De Antonio Gramsci en «Odio a los indiferentes» sobre como las cosas se van torciendo poco a poco frente a la indiferencia de las personas… hasta que corregir resulta ya muy costoso, un texto de 1917 y muy actual.

La indiferencia es el peso muerto de la historia. La indiferencia opera potentemente en la historia. Opera pasivamente, pero opera. Es la fatalidad; aquello con que no se puede contar. Tuerce programas, y arruina los planes mejor concebidos. Es la materia bruta desbaratadora de la inteligencia. Lo que sucede, el mal que se abate sobre todos, acontece porque la masa de los hombres abdica de su voluntad, permite la promulgación de leyes, que sólo la revuelta podrá derogar; consiente el acceso al poder de hombres, que sólo un amotinamiento conseguirá luego derrocar. La masa ignora por despreocupación; y entonces parece cosa de la fatalidad que todo y a todos atropella: al que consiente, lo mismo que al que disiente, al que sabía, lo mismo que al que no sabía, al activo, lo mismo que al indiferente.

10 claves globales de la Era Brexit-Trump

Las dos naciones que impulsaron la globalización se han bajado del carro. Todo apunta a que estamos en un cambio de época. El fenómeno de la globalización parece agotado. En este tiempo de reflujo las naciones buscarán de nuevo encontrar su espacio y los movimientos globales tendrán menos relevancia.

Enlaces interesantes – 1 de Mayo de 2017

¿Qué es Deliberación?

Deliberar, cuando se convierte en un modo de vida comunitaria, es una forma de «filosofar»: su objetivo es entender las causas de las cosas y sucesos que nos rodean para poder fundar posibles respuestas y propuestas. Va más allá de ninguna decisión concreta, de ninguna urgencia: es un modo de vivir cotidiano.

[…] es esa conversación que nos liga a los demás de un modo tal que nos hace más autónomos, más dueños de nosotros mismos, más soberanos.

[…] es hablar sabiendo que las consecuencias de lo que digamos no serán impersonales («se debería hacer»), sino personales, un «voy a hacer» que es una invitación al «hagamos».

Arte sin artistas

Recomiendo leer el siguiente libro de Byung-Chul Han, “Shanzhai: el arte de la falsificación y la deconstrucción en China”, ilustrativo sobre cómo en otras geografías y tiempos se han desarrollado sistemas de las artes muy diferentes al occidental. Nos explica cómo el concepto de esencia o de originalidad no existía en el pensamiento tradicional chino, más proclive a estudiar la praxis y el movimiento de las cosas que los absolutos. Por ello, los edificios y templos singulares o emblemáticos se demuelen y construyen continuamente, y por ello tampoco existe el respeto y adoración que se tiene en el sistema moderno de las bellas artes por las ruinas. Si en occidente la reproducción, la copia o la falsificación conllevan una especie de traición al ser, a la esencia sagrada de la obra, en cambio, en China lo que importan son las sucesivas “huellas” que le imprimen a las obras los sucesivos copiadores, admiradores, espectadores, falsificadores, lectores, etc., un proceso de transcripción incesante que dota a la experiencia artística de su verdadero ser dinámico y en continua transformación.

Cuanto más grande es un maestro, más vacía está su obra. Es un significante sin identidad, que se llena constantemente de nuevos significados. El origen se muestra como una construcción posterior.

En la tradición China no existía la falsificación, ese sacrilegio y delito que occidente ha levantado contra los que osan copiar la esencia y sacralidad de las obras de arte, o contra la piratería que usurpa los sacrosantos derechos de autor (y del que hablé en “El arte de la piratería”).

Castells vs Linera o las alternativas de la izquierda

Castells, disipada la fantasía vacía del «estado red», se ha instalado en la resistencia del repliegue nacionalista. Linera en cambio se da cuenta de que el «gran juego» acaba de comenzar.

Música antigua sobre textos del libro “Psicopolítica” de Byung Chul Han

Pure Data y Xodular

Un lenguaje de programación visual para crear proyectos multimedia. Un ejemplo simulando un sintetizador modular analógico llamado Xodular.

Una aplicación con Docker

Hoy la mayor parte de las aplicaciones que nos dan servicio a través de móviles o navegadores residen en la «nube», y en el fundamento de esta, de la «cloud», están los «contenedores». De lo que se trata es de poder manejar aplicaciones muy diferentes de la misma manera, el contenedor es un simil extraido de la manera en que se transportan mercancías de todo tipo por el mundo. Docker es probablemente la tecnología de contenedores mas difundida.

La clave del contenedor es la virtualización, que permite que quien gestiona la aplicación se desentienda de sus peculiaridades. La virtualización posibilita dos cosas:

  • Una gestión sencilla de aplicaciones en los servidores: desde el punto de vista del operador todas las aplicaciones son solo contenedores, sin importar la tecnología que haya dentro, todas se arrancan, se apagan y configuran de la misma manera.
  • Un despliegue de aplicaciones sin complicaciones: si funciona en tu ordenador, funcionará en el servidor; es el mundo DevOps.

Probablemente el éxito de los contenedores esté en que realizan una virtualización muy ligera. Cuando una aplicación se despliega en un contenedor no corre sobre una máquina virtual que incluye todo un sistema operativo. Un contenedor incluye la aplicación y tan solo las librerías de sistema que realmente necesita.

En esta entrada vamos a ver como crear una aplicacioncita, meterla en un contenedor y arrancarla. La aplicación de ejemplo usa tecnología Java y el sistema es Linux Ubuntu, pero la combinación podría ser cualquier otra.

Para empezar necesitamos Docker instalado en el equipo. Para instalar la Community Edition de Docker para Ubuntu (64 bits) se puede seguir lo indicado aquí.

Al terminar podemos probar que la instalación ha ido bien:
$ sudo docker run hello-world

pasted_image

Este comando trata de ejecutar una imagen de contenedor llamada “hello-world”. Como no la tiene se la descarga del repositorio por defecto y luego la ejecuta sobre el motor Docker. La aplicación muestra un saludo en texto.

Ahora vamos a crear la aplicación «misaludo». Creamos un directorio con la estructura típica de un programa Java:
$ mkdir -p misaludo/src/main/java/hola

Creamos un fichero pom.xml, el descriptor de este aplicativo. Como usamos Java nos valemos de Maven para construirlo, pero podría haber sido una aplicación Node usando NPM, o una PHP usando Composer… la tecnología del programa que corre dentro del contenedor puede ser cualquiera.

Abrimos un editor y creamos el pom.xml:
$ vim misaludo/pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>

<groupId>org.miorganizacion</groupId>
 <artifactId>mi-spring-boot-docker</artifactId>
 <version>0.1.0</version>

<parent>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-parent</artifactId>
 <version>1.5.2.RELEASE</version>
</parent>

<properties>
 <java.version>1.8</java.version>
</properties>

<dependencies>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-test</artifactId>
 <scope>test</scope>
 </dependency>
</dependencies>

<build>
 <plugins>
 <plugin>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-maven-plugin</artifactId>
 </plugin>
 </plugins>
</build>

</project>

Entre las dependencias de este ejemplo tenemos Spring Boot, un framework que permite construir programas que hacen muchas cosas con poco esfuerzo. «misaludo» será una aplicación web que devuelve el mensaje «¡Hola Docker!».

Ahora podemos crear la aplicación abriendo un editor y copiando el código que sigue a continuación:
$ vim misaludo/src/main/java/hola/Aplicacion.java

package hola;


import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;


@SpringBootApplication
 @RestController
 public class Aplicacion {


@RequestMapping("/")
 public String home() {
 return "¡Hola Docker!";
 }


public static void main(String[] args) {
 SpringApplication.run(Aplicacion.class, args);
 }
 }

Construimos a continuación el programa con Maven y lo probamos (hay que tener Maven y Java 8 instalado, si no lo tienes puedes seguir lo dicho aquí y aquí)
$ mvn package && java -jar target/mi-spring-boot-docker-0.1.0.jar

El programa levanta un servidor web Tomcat conteniendo nuestra aplicación. Si vamos al navegador y ponemos localhost:8080 veremos el saludo.

pasted_image002

Hemos creado y probado el programa. Ahora vamos a preparar su contenedor, lo construiremos y lo arrancaremos para comprobar que llegamos al mismo resultado.

Docker usa un fichero Dockerfile como descriptor del contenedor. Creamos el fichero Dockerfile:
$ vim misaludo/src/main/docker/Dockerfile

FROM frolvlad/alpine-oraclejdk8:slim
 VOLUME /tmp
 ADD mi-spring-boot-docker-0.1.0.jar app.jar
 RUN sh -c 'touch /app.jar'
 ENV JAVA_OPTS=""
 ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

En Dockerfile se indica en ADD que ejecutable se añade al contenedor, y en la entrada ENTRYPOINT como ejecutarlo.

Para construir la imagen docker (el contenedor) podemos usar Maven. Se añade al pom.xml una propiedad indicando el prefijo que ayuda a identificar el contenedor, y un plugin de construcción que sabe como como crear imágenes.

<properties>
 [...]
 <docker.image.prefix>clublasindias</docker.image.prefix> </properties>


<build>
 <plugins>
 [...]
 <plugin>
 <groupId>com.spotify</groupId>
 <artifactId>docker-maven-plugin</artifactId>
 <version>0.4.9</version>
 <configuration>
 <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
 <dockerDirectory>src/main/docker</dockerDirectory>
 <resources>
 <resource>
 <targetPath>/</targetPath>
 <directory>${project.build.directory}</directory>
 <include>${project.build.finalName}.jar</include>
 </resource>
 </resources>
 </configuration>
 </plugin>
 </plugins>
</build>

Antes de indicar a Maven que construya el contenedor necesitamos el motor Docker arrancado:
$ sudo service docker start

A partir de lo indicado en el pom.xml nuestro contenedor tendrá por nombre clublasindias/mi-spring-boot-docker. Para construirlo hacemos:
$ mvn package docker:build

Arrancamos el contenedor de la siguiente manera:
$ sudo docker run -p 8080:8080 -t clublasindias/mi-spring-boot-docker

Si ahora vamos en el navegador a localhost:8080 veremos el saludo «¡Hola Docker!» que ahora es ofrecido por el contenedor. ¡Aplausos! 🙂

Si hacemos sudo docker ps veremos la nueva imagen corriendo en el motor docker:

pasted_image003

 

Referencia: https://spring.io/guides/gs/spring-boot-docker/

Enlaces interesantes – 27 de Marzo de 2017

Sombras en el agora de la democracia

El vigor de la democracia se pierde cuando se entiende que «lo característico de la democracia es que cada ciudadano tenga su opinión, entendiendo ésta como la forma de expresar cómo es cada cual, no cómo cree cada cual que es la realidad» y se considera que «todas las opiniones por igualmente respetables o válidas».

Es el relativismo en el que vivimos. Cuando los gobernantes son solo gestores, y se ha renunciado a poder decidir la sociedad en la que queremos vivir, la política abandona la reflexión y la razón. Solo quedan muchos gustos y opiniones particulares y respetables.

Hora de lanzar un medio audivisual europeo

Hay una necesidad de un medio de comunicación público e independiente, una plaza para el debate que constrareste la tiranía de la «economía del clic» que está vaciando de reflexión y de alma a Europa. Un medio valiente, que vaya mas allá de otros como Euronews y un mero listado de noticias.

Obey

Un documental de 2013 sobre el «estado corporativo» y como las democracias en Occidente se están diluyendo. Recuerda a «They Live» la película de John Carpenter de 1988. Así se entiende bien porqué los zombies has estado tan de moda ultimamente.

Los tres desafíos de la web, en opinión de su inventor

Mensaje de Sir Tim Berners-Lee, inventor de la web, sobre cómo ha evolucionado la web y qué debemos hacer para asegurar que cumple su visión de ser una plataforma de igualación que beneficia a toda la humanidad.

Nudos, amarres y cuerdas

Un manual de cabuyería para disfrutar con los pequeños.

Animated knots by Grog

Animaciones de como hacer todo tipo de nudos.

Viento Cero

Todos sobre cometas en castellano.

Schumpeter sobre la Edad Media en Europa

Todos esos monjes y frailes hablaban en el mismo latin no-clásico; oían la misma misa que se encontraran donde se encontraran; se formaban mediante una educación que era la misma en todos los países; profesaban el mismo sistema de creencias fundamentales; y todos reconocían la autoridad suprema del papa, que era esencialmente internacional: su país era la Cristiandad y su estado la Iglesia. Pero no eso todo. Su influencia internacionalizador se reforzaba por el hecho de que la misma sociedad feudal era internacional. No sólo era internacional la autoridad del papa sino también la del emperador: en principio, desde luego, y de hecho en cierta variable medida. El antiguo imperio romano y el imperio carolingio no eran meros recuerdos. La gente estaba familiarizada con la idea de un superestado temporal y un superestado espiritual. Las divisiones nacionales no significaban para ellos lo que llegaron a significar durante el siglo XVII; nada llama tanto la atención en todo el conjunto de ideas políticas de Dante como la completa ausencia del punto de vista nacionalista. El resultado fue el nacimiento de una civilización esencialmente internacional y de una república internacional de los intelectuales que no fue palabrería, sino auténtica y viva realidad. Santo Tomás era italiano y Duns Escoto era escocés: pero los dos enseñaron en París y en Colonia sin encontrar ninguna de las dificultades con las que tropezarían en la edad de los aviones.

Joseph A. Schumpeter, Historia del Análisis Económico

Enlaces interesantes – 6 de Marzo de 2017

La nueva e inquietante misión de Facebook: construir una comunidad global – Elcano Blog

«Proclama para su red funciones de ingeniería social que habitualmente asumen los Estados, aunque no haya Estado global, sino, si acaso, gobernanza global. Facebook quiere ser parte de esa gobernanza, en estos tiempos en que el poder político a menudo se esfuma, pero el hueco lo llenan o lo amplían otras cosas. […] Facebook es una de ellas. ‘¿Queremos que cualquier gran empresa tenga tanto poder no controlado?’»

Las 7 tesis de Zizek sobre la descomposición europea y norteamericana – Las Indias

Zizek está recorriendo los platós y las tarimas de media Europa exponiendo «las verdades del barquero», sus siete tesis sobre la descomposición del sistema político en Europa y EEUU.

Países Bajos: los gobiernos posibles – Politikon

En un entorno tan fragmentado todos cuentan. Hay opciones tan específicas como 50PLUS el partido de los pensionistas y mayores. Un ejemplo de la política de hoy.

Los buscadores de torrents más completos de 2017 – Genbeta

Curso de electronica basica desde cero – Editronikx

Una colección de videos que da a conocer de forma práctica y paso a paso todo un arsenal de técnicas y conceptos. Por ejemplo, para aprender a soldar correctamente se puede ver el número 9 de la serie que se muestra en el enlace.

repl.it is a cloud coding environment

Un entorno para cacharrear probando múltiples lenguajes.

Usando Atom para Node.js

Node es una plataforma que me gusta para hacer pruebas de concepto, porque con poco código es fácil hacer muchas cosas.

Buscando un editor he empezado a utilizar Atom. Viniendo como vengo de Java, estoy familiarizado con entornos como Eclipse o IDEA de JetBrains, pero me apetecía practicar con algo mas ligero. Vim es otro editor que manejo bien y me gusta, pero no lo veo para esto. Me encanta para editar rápidamente sobre la línea de comando, pero no para desarrollar de forma continua.

Atom es sencillo, es bonito, es abierto, y tiene una comunidad muy rica detrás. No es tan rápido como Sublime y Visual Studio Code, pero me da igual.

En un sistema Linux como Ubuntu la instalación es la habitual con su gestor de paquetes. En la sección Atom Basics del manual de Atom se describen los comandos básicos para desenvolverse en el editor, en caso de duda un “Ctrl+Shift+P” te permite encontrar lo que necesites.

Una de las características de Atom es que es muy personalizable, existe multitud de extensiones disponibles para adaptarlo a tus necesidades. La instalación de estos paquetes se puede hacer con un “apm install <nombre-de-paquete>“.

Las que siguen son las extensiones que he encontrado mas útiles para desarrollar programas en servidor. He ignorado las que tienen que ver con la parte de presentación como autoclose-html, pigment o color-picker.

Las primeras en mi lista son atom-ternjs, node-debugger y script. Para mí son las mas necesarias, y las primeras que he instalado.

atom-ternjs

  • Acostumbrado a trabajar en IDEs como Eclipse algo que busco de forma natural es una utilidad de autocompletado de código y de chequeo de sintaxis. Esto es lo que encuentras en esta extensión. Como indica su documentación, si quieres usarla en tu proyecto, debes añadirle un fichero de configuración para tern donde le puedes indicar como quieres que te ayude.

node-debugger

  • Esta extensión es un depurador para Node con las funciones habituales de inserción de puntos de ruptura, ejecución paso a paso y consulta de pila de llamadas, entre otras.

script

  • Esto es una pequeña maravilla que te permite seleccionar un trozo de código y ejecutarlo en un momento. Algo como https://repl.it/ pero dentro de Atom. Ideal para prototipar una función o para probar con rapidez.

Otro grupo de extensiones que uso son las que me ayudan a editar mas rápidamente, porque visualizo mejor las cosas, o porque llego a ellas mas rápidamente: minimap, open-recent, highlight-selected, file-icons, maximize-panes, fold-lines y tool-bar.

minimap

  • Muestra a la derecha del editor una visión resumida de todo el código contenido en el fichero, permitiendo situarte con mas facilidad. Existen extensiones relacionadas con esta que permiten indicar la posición del cursor en el minimapa.

open-recent

  • En el menú de fichero muestra siempre los ficheros y carpetas que hemos abierto mas recientemente.

highlight-selected y minimap-highlight-selected

  • Al seleccionar una variable o una palabra clave, todas las ocurrencias de las mismas en el fichero aparecen resaltadas.

file-icons

  • Asocia un icono para cada extensión de fichero facilitando encontrar lo que buscas.

maximize-panes

  • Permite maximizar el panel del editor donde estás trabajando sin cerrar el resto de paneles.

fold-lines

  • Permite compactar en una línea distintos bloques de código para facilitar la lectura.

tool-bar

  • Aunque me encanta usar atajos de teclado, mi magia es limitada y necesito de una barra de herramientas como esta. Permite personalizar su contenido.

Y ahora este grupo final de plugins que veo interesantes. Puedo vivir sin ellos pero les he dado una oportunidad: linter, auto-detect-indentation y atom-beautify.

linter y linter-eslint

  • Es una extensión para corrección de código que también se integra en otros entornos de desarrollo. linter es el paquete base que soporta HTML, CSS y JavaScript. linter-eslint es una ampliación sobre el anterior específico para JavaScript y JSX. Como en el caso de tern, para usarlo en tu proyecto debes incluir un fichero de configuración eslint donde puedes detallar, por ejemplo, si se va a programar en JavaScript ES6 o con una versión anterior.

auto-detect-indentation y atom-beautify

  • El primero configura la identación del fichero basado en el contenido que ya tiene, no solo en las settings del editor. El segundo organiza el código para verlo mejor.

Y tras tanta personalización, ¿que pasa si quieres llevártela a otra máquina, quieres compartirla, o simplemente no perderla? Pues usar otra extensión: sync-settings.

syn-settings

  • Permite guardar la personalización realizada en el editor en un gist de GitHub. Hay que tener una cuenta disponible. Para hacer el backup hay que introducir en Atom el token de acceso a GitHub y el ID del gist donde vas a hacerlo. Aquí puedes encontrar la configuración descrita en este post.

En Internet hay muchas páginas mostrando conjuntos de extensiones preferidas para distintos usos. Aquí he compartido las mías.

Node.js y el Event Loop

Una de las razones que ha hecho popular a Node.js es su extraordinaria velocidad de respuesta en comparación con un servidor Java (por ej. Tomcat). Obviamente esto no se consigue gratis, y es que a diferencia de un servidor Java, Node.js es “single threaded” solo hay un hilo de ejecución atendiendo todas las peticiones, no se levanta uno nuevo cada vez. Esto elimina toda la sobrecarga de gestión de los hilos (locks y demás).

Pero para que esto funcione las aplicaciones tienen que ser programadas de forma que no se bloqueen en tareas lentas como una consulta a la red, un acceso base de datos o a un fichero. Es por ello que la programación asíncrona está en el fundamento de Node.js. Node.js es una apuesta a que un solo hilo con procesado asíncrono tiene mejor rendimiento y escalabilidad que una implementación multi-hilo.

Programación síncrona

Node.js se apoya en un motor de ejecución javascript como el que contiene cualquier navegador. Este motor es el que es single-threaded, y en el navegador es la razón de que si tienes una página y tu código realiza varias llamadas de red síncronas que tardan mucho, acabes con una página que se queda bloqueada y donde no puedes hacer click en ningún sitio.

Es el mismo problema que tenemos en Node.js si hiciéramos muchas llamadas síncronas costosas (base de datos, ficheros, red). No habría respuesta hasta finalizadas todas las tareas.bloqueos_node

La forma de evitar los bloqueos es con programación asíncrona y en un navegador como Chrome esto es posible porque aparte del hilo de ejecución del motor javascript hay otros hilos de gestión. Entre ellos el famoso Event Loop. ¿Cómo funciona?

Programación asíncrona y el Event Loop

Cuando se ejecuta un código javascript en una página, de forma síncrona, usa la pila de llamadas del motor. Los métodos invocados se van apilando y desapilando y solo se devuelve el control al navegador cuando la pila se vacía. En este modo síncrono, si hay tareas que tardan mucho, podemos vernos con que la página se “congela” durante un buen rato.

callstack_sincrono

Si realizamos tareas de forma asíncrona, como cuando invocamos el API setTimeOut pasando una función de callback y un retardo, esta es ejecutada por un hilo independiente del navegador, fuera de la pila de Javascript. Cuando termina de ejecutarse la función de callback queda en una cola, a la espera de poder ejecutarse.

callstack_asincrono

¿Cuando se ejecuta la función de callback? En cuanto la pila se libera otro hilo de gestión del navegador, el famoso Event Loop, coge la función para meterla en la pila.

Por todo lo anterior es que se usa ese truco de llamar a funciones pasándolas a setTimeOut con delay 0. Las funciones no se ejecutan directamente, sino que acaban en una cola, y el loop irá pasándolas a la pila cada vez que se vacíe. En esos huecos en medio la página responde a nuestras acciones, no está bloqueada. Provocamos asincronía y creamos páginas mas dinámicas.

APIs asíncronas como setTimeOut hay muchas: para llamadas en red, consulta de almacenes de datos, etc.

Node.js resuelve la programación asíncrona como hemos descrito antes para el navegador. Y es que Node.js usa el motor javascript en que se basa Chome, y los procesos de gestión alrededor del motor son como los que usa el navegador.

chromeVer también:

Peticiones para apagar el sol

Me he encontrado con una entrada en Genbeta titulada “¿Vale la pena seguir descargando de redes P2P en la era del streaming?” donde se da un repaso de la evolución de la compartición de ficheros con P2P desde los 90.

Se pregunta a las finales por el interés de esas redes hoy en día, existiendo plataformas de streaming de pago con una calidad/coste muy atractivas (Netflix y Spotify por ejemplo).

Lo que también habría que preguntarse es hasta donde podrían haber llegado esas redes de no haber sufrido el proceso de criminalización constante a la que han sido sometidas durante todos estos años, un proceso que las ha empujado a ser algo pobre y marginal.

Las herramientas P2P suponen una revolución que muchas personas sienten como amenaza. Es una pena que se acabe llegando a situaciones como las que vivimos, donde cualquiera puede ser demandado por lo civil por descarga o subida de contenidos, por vulnerar unos derechos de autor probablemente excesivos.

Son medidas como aquella en la que los fabricantes de velas pedían bloquear al sol por competencia desleal. Un sofisma económico escrito hace casi dos siglos.

Haciendo una Bock en Navidad

Este post se publicó por primera vez en El Arte de las Cosas.

Ayer nos reunimos para hacer nuestra primera Bock, una cerveza que producimos en Navidad para poder tomarla en Cuaresma. ¡Qué mejor forma de celebrar la llegada de la primavera!

Al ser una cerveza hecha en invierno tiene un largo período de fermentación y maduración. Una cerveza mas oscura y densa, como apetece tomar cuando todavía no hemos dejado los abrigos. Nos han salido algo mas de 20 litros que ya han empezado a fermentar.

fermentando_bock

Tras la producción aprovechamos para abrir un par de botellas de nuestra Índica y brindar por la Navidad. Yo no la había probado todavía y, sinceramente, me sorprendió. ¿Como es posible que de la sopa densa que metimos en la cuba de fermentación hace mes y medio, pueda salir algo tan cristalino y delicioso?

vaso_indica

Creo que lo tenemos claro, aquí los cerveceros no somos nosotros, sino esos bichitos invisibles que llamamos levaduras. Los señores de bata blanca que trabajan en las fábricas nos tienen engañados, esto de hacer cerveza es muy sencillo 😀

¡Feliz Navidad!