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!

Enlaces interesantes

La era Post-Trump

Desde que Thomas Kuhn escribió La estructura de las revoluciones científicas, se sabe que en el mundo de la ciencia, el progreso no se produce por acumulación, sino por saltos y discontinuidades que en un momento ponen en solfa la manera de interpretar la realidad y que plantean un nuevo paradigma que da sentido a las cosas. Quizá hay momentos en que para que las cosas cambien, la única manera de que se lleve a cabo, es mediante un salto, no funcionan los cambios graduales o “desde dentro”.

La amenaza de los oligopolios mundiales

Un artículo sobre la imparable tendencia a la creación de oligopolios en el mundo, un tema relacionado con lo que comentaba aquí. En la actualidad, como en el pasado, las escalas siguen generando jugosas rentas. Unas escalas que, y esto es interesante, para poder ser posibles no tienen que ver con una organización muy grande (todas aspiran a ser pequeñas) sino con los asombrosos recursos financieros de que disponen.

Como decía uno de los fundadores de Paypal “La competencia es para los perdedores […] Si se quiere captar el valor que existe en el mercado, conviene construir un monopolio”. La situación recuerda los Estados Unidos de finales del XIX y principios del XX, donde siguiendo las revoluciones de ese momento (trenes, petroleo, electricidad) se fueron conformando grandes monopolios con el paso del tiempo. En nuestro mundo digital y global esto sucede a una escala aún mayor. Mas allá del problema de la falta de competencia, y de la incapacidad de los gobiernos para controlarlas, el problema es que la riqueza no se distribuye como antes, estas empresas generan muy poco empleo.

Haciendo cerveza con amigos

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

Este mes nos hemos asociado unos amigos para hacer cerveza artesanal, para fabricarla y disfrutarla entre nosotros. El pasado miercoles, aprovechando el día festivo, nos reunimos para hacer la primera producción. La cerveza elegida es una Pale Ale.

Lo primero, poner la malta a macerar, son 5Kg. de malta de cebada que hay que introducir en la cuba, pero aprovechando el momento cada uno echó un puñadito en una pequeña ceremonia.

img_8590

fullsizerenderCalentando a 68 grados Celcius durante casi una hora, se acaba teniendo la papilla dulce que encanta a esos organismos que llamamos levadura.

img_8596Tras esa hora toca filtrar, retirar los restos de grano y dejar solo el jugo. Es a este líquido al que añadimos el lúpulo para darle el punto de amargor que da a la cerveza su gracia.

img_8600

img_8611Esta mezcla se pone ahora a hervir cerca de otra hora. Casi al final del proceso añadimos musgo para generar mas matices. En realidad a este mosto se le pueden agregar muchos ingredientes. Es como hacer un potaje :-D.

La levadura es un organismo vivo, que tenemos que “activar” introduciendolo en agua tibia.

fullsizerender1

img_8613El mosto ya está preparado y lo enfriamos con un sencillo serpentín, hasta ponerlo en unos 30 grados (una temperatura mas alta mataría la levadura).

img_8616Este mosto enfriado lo pasamos a la cuba de fermentación donde añadiremos la levadura. Será la que se coma los “azucares” generando alcohol.

img_8618

img_8619Al final se cierra bien la cuba y terminamos nuestra parte del trabajo. Ahora toca el turno de esos hongos que llamamos levadura. Habrá que esperar 7 días. Si todo va bien en una semana embotellaremos para que en la botella se produzca una segunda fermentación.

img_8624¡Ya estamos deseando poder disfrutar de nuestras cervezas en Navidad!

Llegó la hora de la cosecha

Al fin tenemos cosecha de perejil en casa 😀

Tras preparar las semillas para germinación, los primeros días parecía que la cosa no marchaba, aparentemente no pasaba nada. El proceso era lento y a los 9 días apenas teníamos un 30% de las semillas despertando.

Sin embargo, en cuanto las primeras hojas asomaron la cabeza se aceleró el proceso. Como se ve aquí, tras 13 días todas las semillas habían germinado.

germinado

El día 14 pasamos al módulo de cultivo parte de los brotes (esto es como una misión Apollo).

modulo_cultivo

Finalmente, como veis en la foto destacada, tras unos 35 días ha llegado el momento de usar el perejil en la cocina.

Enlaces interesantes

Pokemon Go usa el gestor de contenedores Kubernetes para su cloud.

Alguien está aprendiendo como tumbar Internet. ¿China, Rusia? Ataques calculados para medir las defensas.

Slack usa PHP para la mayoría de su lógica servidor, lo que es una elección poco habitual hoy. ¿Porqué decidieron hacerlo así?

Cuando el periodismo volvió a ser la clave en Estados Unidos. En esta campaña han dicho claramente que un candidato mentía cuando mentía, sin medias tintas.

Uso de “relojes de aroma” en oriente para medir el tiempo. El polvo de incienso quema de forma regular dibujando figuras sobre objetos muy singulares. El incienso quema a un ritmo conocido que permite conocer la duración que va a tener una sesión. Una forma de percibir un tiempo que no se escapa.

El Progreso nos pide saber detenernos

Sigo leyendo el libro de Byung-Chul Han y me hace pensar.

El tiempo que vivimos es un tiempo sin duración, donde los presentes se apelotonan y la historia no tiene valor. El tiempo carece de un sentido y esto genera una sensación de aceleración, no porque vivamos a gran velocidad, sino porque cambiamos mucho.

Es una época de informaciones y acontecimientos, no de saber y experiencia.

Como personas vivimos en un derroche continuo de acontecimientos que sin embargo no nos llevan a una vida plena. De forma similar como sociedad derrochamos energías y sin embargo nos alejamos cada vez mas de la Edad de Oro. Buscamos la novedad sin sentido, y olvidamos el pasado, la historia.

La economía da peligrosos bandazos en función de las modas, y las burbujas crecen y explotan. Estas también abundan en tecnología. Los paradigmas se repiten con nombres diferentes, queriendo tirar a la basura todo lo que había hasta el momento. Las sumas de dinero se gastan, y los resultados son mediocres.

Los fuegos artificiales no llevan a la Abundancia.

Para vivir en Abundancia tenemos que aprender a demorarnos, y volver a dar sentido al tiempo.

Paradojicamente, el Progreso nos exige saber detenernos.

Huerto hidropónico en casa

Esta semana hemos empezado a montar un pequeño huerto en casa. Nos gusta lo de cultivar hierbas aromáticas para cocina, y seguro que es algo que le gustará a nuestra hija. En nuestro caso hemos optado por un huerto hidropónico.

Este tipo de cultivos no requieren de tierra, se usa solo agua y fertilizantes, las raices crecen desnudas sobre algún tipo de soporte, natural o sinténtico (lana de roca, lapilli, etc.).Lo bueno de estos huertos es que necesitan menos espacio y son mas fáciles de trabajar puesto que se pueden disponer en vertical con facilidad. Lo malo es que necesitan mas atención y constancia en su cuidado, por la desprotección de las raices.

Hemos empezado por donde hay que empezar, con el semillero de perejil que aparece en la foto. El sistema que hemos elegido es uno sencillo que ofrece IKEA. En realidad, nos hemos metido en esto porque en una visita a la tienda, a mi hija le encantó ver las raices empapadas en agua dentro de una bandeja que tenían expuesta.

Kits que facilitan montarse un huerto así hay muchos. Estos ayudan porque siguiendo unas pocas indicaciones consigues facilmente buenos resultados. Si uno quiere montarselo sin ayuda hay mucha documentación en la red, como este documento completito de la FAO.

Seguiremos informando.

Socialismo sigiloso

Hoy he leido una interesante entrada de Juan Urrutia reflexionando sobre un futuro cercano “digital y global” regido por grandes corporaciones. Un capitalismo futuro que no favorece la competencia y la innovación sino la estabilidad, dado que la propiedad de estas empresas se concentra en manos de unos pocos grandes gestores de patrimonio. Pocos gestores que comparten la propiedad de muchas corporaciones.

Esa estabilidad ya no se verá amenazada por la destrucción creativa schumpeteriana, puesto que si esta asoma la cabeza en forma de empresa disruptiva, es acallada “mediante compra o absorción para mejorar el abanico de bienes o servicios que ofrecen” las corporaciones que conforman este “oligopolio global”.

Un socialismo “imprevisto” donde como dice el artículo de The Economist al que hace referencia Juan: “La revolución está aquí, pero no son los trabajadores los que toman el control de los medios de producción sino los gestores de patrimonio”.

Esta entrada de Juan me ha recordado esta otra del año pasado de José Alcántara titulada “No es pais para indies”. En ella criticaba como irreal e ingenua esa visión de un futuro donde “emprender es fácil, en el futuro no habrá trabajo asalariado, y toda la generación millenial (lo que quieran los dioses que eso signifique) va a montar su propia empresa (y comerse el mundo además, claro) desde un puesto de trabajo nómada y compartido en un espacio de co-working (…)”

¿Habrá espacio para producir fuera de este “stealth socialism”?