Etemenanki

Es extraña, tu voz, difícilmente reconozco cuando comenzás una palabra o terminas una oración.
Intento concentrarme en tus gestos, en tus manos, en la desesperación de tus ojos.
Nuestras breves conversaciones apenas duran 10 segundos, expresarte algo concreto es una tortura, pero acá estamos, intentando dejar de ser extraños, aunque quizás siempre sea una sorpresa lo que pedimos para comer.
Nuestra relación, en lengua primitiva, crece en cada minuto, atravesando milenios de evolución en solo un par de días. Ya puedo entender el momento en que tenés sed e incluso intentar usar algún sonido que se asemeja a esa palabra (u frase, no estoy seguro) que hace que te rías mientras te levantas a buscar una botella de agua.
Paseamos cerca del río, me dijiste que era impresionante lo rápido que se movía. O quizá que tenias miedo porque, motivada por algo que supongo que era instinto, me abrazaste y te respondí ese abrazo y entonces fueron nuestros latidos los que hablaron.
El río entonces se detuvo. Y no tuvimos que decir ninguna palabra que no entendamos durante muchas horas. Quizá nunca volvamos a entendernos tan bien.
Pasaron aquellos días, que solo fueron 2 pero mi memoria insiste en que fueron 10. Y ya no volveremos a vernos jamás, quizá, ya que nunca aprendí a pronunciar tu nombre y nuestra despedida había sido concreta: Tres palabras (o frases), una mirada y un par de lágrimas.

De vuelta

Marcos y Gabriel caminaban con los ojos entrecerrados por el sol que iluminaba, de lleno, sus caras.

– De pensar a decir, ponele, no hay mucha diferencia.

– Ósea que, si yo quiero, digo que voy a la luna y ¿eso no me hace tan Diferente de Neil Amstrong?

– El tipo sabía de física, a diferencia tuya, y estoy casi seguro que podía subir 10 pisos en escalera, sin cansarse y hasta quizá sin jadear.

– Y ese es tu problema, Marcos querido, que te vas a lo simple. No lo pensas.

– ¿Y vos? Solamente hablas. Hablas mucho y haces poco

– Otra idea simple. No somos tan distintos, yo hago, entre tantas palabras. Vos te quedas en el hecho y lo repetís. No lo decís, por tanto no hay hecho.

– Leíste dos renglones de Morage y te crees filósofo, a mí no me jodas. No me contaste sobre Melina y sin embargo, pasó.

– No, no pasó nada. No lo dije, para vos no pasó.

– Pero ella sí que lo dijo, y además los vi. Podria haber estado borracho, pero ella habla y escribe y se mueve.

– A ella le pasó, entonces, no a mi.

– Pero te volvió a escribir, hace unos minutos tu teléfono no dejaba de vibrar. Y estoy seguro que era ella, vibró hacia la derecha.

– No respondí.

– Pero sabe que leíste, sabe que actuaste. Sabe que en tu cabeza se te cruza ella.

– No, realmente, se me cruzan otras cosas.

– Pelotudo impaciente.

– ¿Yo? ¿Y vos que? Para vos es todo lo mismo.

– Y en eso vivo, obtuve lo que quería, de una forma. Y si hubiese sido de otra, también. Pero vos querías una manzana y tomaste jugo de naranja.

– Yo creo que fue limón. Ya sabes, por lo agrio.

– Podías haber dicho que no.

“Y vos podrías callarte y dejarme de joder”.

Esto último Gabriel se lo guardo… prefirió dejar de escuchar a su amigo, mientras continuaban caminando.

Giros y mechas

– A veces, te sale ser como no querés.
– Siempre soy lo que no quiero.

Marcos dio otro sorbo al Tom Collins que tenia en su vaso. El alcohol se encargaba de desinibirlo y el limón de hacerlo más ácido en sus comentarios.

– No, lo que siempre sos es ser un pelotudo.

Volvió a beber mientras Gabriel respondía su comentario con una risa mientras apoyaba su vaso de nuevo en la mesa. No estaba seguro si había alcanzado siquiera a mojar sus labios.

– Reíte, pero fue así. Ella no iba a ceder a semejante delirio. No sin hacer un preparativo primero.

Gabriel quedó pensativo. Su amigo miraba hacia un costado, levemente exhausto o incluso, irritado ante aquella situación.

– Vos no me conoces. Tampoco la conoces a ella. ¿Por que supones que es un delirio? En Varsovia las mujeres se pintan los labios de azul. Acá el otro día vi como se llevaban detenida a una chica con esos labios. En pleno centro, che.

– No conoces Suiza, ese dato te lo acabas de inventar. ¿En serio viste eso?

Gabriel reía de nuevo. Vio como una chica de pelo negro, con mechas desiguales tomaba lugar en una mesa llena de otras mujeres.

– Varsovia es Polonia, pero Suiza me servia igual. El tema es ponernos de acuerdo en la legalidad de los labios.

– Azules. Los otros colores no importan.

Marcos ahora estaba interesado en conocer las leyes y normas que regían en otros países sobre los labios. Pero Gabriel ya no le prestaba atención. Giro su cabeza para comprender qué lo había distraído.

– Andá, te esta mirando.

Lo animó, aceptando ya que debería quedarse con la intriga hasta la próxima borrachera.

– No me esta mirando… o capaz sí, pero debe ser porque la incomodo.

Marcos volvió a girar la cabeza. La desmechada miro a una de sus amigas y le dijo algo al oído.

– Debe estar buscando alguien que la acompañe. Esa de rulos no esta mal, pero no se si quiero intranquilizarme por vos hoy.

Gabriel se termino casi la mitad de Tom Collins que quedaba en su vaso de un sorbo. Como siempre le pasaba, el azúcar quedaba abajo y el final de la bebida se mezclaba entre horrible y delicioso abruptamente y se juraba no volver a pedir semejante abominación la próxima vez. Algo de lo que seguramente se olvidaría más tarde.

El limón, el azúcar. ¿Debía haber buena azúcar en Polonia? Siempre le gusto bailar con mujeres con labios rojos.
La ilegalidad de Suiza. Las mechas azules imperfectamente perfectas. Los delirios, el preparativo.
Era un pelotudo. Era lo que no quería. A veces… no, a veces no, siempre.

Melina tenia la cabeza recostada sobre el hombro de Gabriel. El sillón de su living era lo bastante cómodo como para soportar esa misma pose toda la noche… o al menos las 2 horas que contaban.
Ya no era igual de oscuro que hace unas horas. De otra forma, no se hubiese percatado de los espirales dibujados en el cuadro que colgaba en la pared, frente a ellos.
Intentó acomodar su brazo para poder moverlo sin incomodarla. Se inclino hacia el piso para tomar su celular que estaba en el bolsillo de su pantalón, Melina hizo un leve bufido, y escribió lentamente:

– Tiene espirales… Siempre me pasa lo mismo.

Recostó su cabeza contra el respaldo, y veía como giraba el ventilador de techo. Ya podía adivinar el color madera de sus paletas.
Giró su cabeza hacia la chica. “Nadie tiene glamour dormido” pensó. Intento, con la mano libre, acomodarle el cabello. Melina sonrío levemente, interpretando aquello como una caricia.
El celular vibró contra el sillón. La luz de la pantalla ya no hacia diferencia en la luminosidad del cuarto:

– Ja.

Siempre igual, Marcos no entendía la gravedad de aquel asunto… espirales.
Creyó que ya era hora de irse e intento levantarse. Pero Melina lo tomo con ambos brazos y emitió un sonido gutural de eme alargada en señal de protesta. Sus manos se sentían calurosas. “Ya no tienen el glamour de la sorpresa” se dijo a si mismo recordando lo que había temblado hace unas horas cuando ella lo tomo del brazo.

La besó en una mejilla. La chica sonrió.

– ¿Preparo café?

Se ofreció amablemente. Ella, aún en la duermevela, contesto en su “idioma de emes” diciendo “no no”.
Gabriel suspiro. No se quería ir de ahí, pero aquello lo incomodaba. Si tan solo pudiese apretar un botón y que todo vuelva a ser como antes de conocerse.
Su cuello comenzó a transpirar por el calor de sus manos. Con la suya las corrió a su pecho, intentando asimilarlo a un gesto romántico. La chica se rió. Él sintió un placer levemente frió en el cuello.

La chica abrió, lentamente, los ojos, el le alcanzo la prenda de ropa que más a mano tenia. Una blusa blanca con lunares.
Melina sonrió y la tomo con sus manos, lo beso, de forma mucho más pausada y tierna que hacia apenas una hora.

Se incorporo lentamente, y él no dudo un segundo en hacer lo mismo. Se vistieron, casi en silencio a excepción de algún “¿Me pasas … eso?”.
Ya vestidos, se quedaron mirando sin decir palabra. La chica sonreía, el le respondía.

– Tengo que irme… ¿No te enojas?

Ella le respondió con un beso.
Caminaron juntos a la puerta, se saludaron y concluyeron con un abrazo. Volvió a ver el cuadro… “Espirales… soy un salame”.
Volvieron a mirarse. Él estiro uno de sus rulos y lo soltó para que recuperara su forma original. Sonrieron como idiotas, y volvieron a verse dos días después.

Inmenso.

Aquellas calles anchas no era lo que Juan recordaba de otros momentos. A pesar de que todo estaba tan igual y tan apagado como la última vez que, al igual que esa noche, caminaba sin mirar por donde, pero con el destino marcado.
Luz, oscuridad. Oscuridad, luz. Apenas las luces de la calle dejaban sombras en las veredas, entre las puertas de los negocios de aquella zona de la ciudad. De momentos sentía miedo, de momentos ansiedad. No se conectaban y no le importaba. La ansiedad tapaba el miedo y el miedo se interponía salvajemente ante su fantasía.

La fantasía era simple y repetida: Un encuentro, unas palabras, un abrazo, un beso, quizá algo más y una despedida. Tan corto o tan largo como las pocas horas que le quedaban a aquella noche.
La ansiedad, se reposaba en el encuentro y la despedida. Sabia que lo otro llegaría. No le importaba.
Le importaba encontrarse y saber que lo esperaban, la sorpresa inicial de unos días atrás había estado muy bien, pero ahora tenia que cerciorarse de que era extrañado. A veces le gustaba imaginar que no respondía nadie cuando tocaba el timbre o que el frío inundaba aquel encuentro antes planeado. Eso hubiese sido el final.No sabia bien de que, pero sin dudas algo se terminaría.
Le importaba, también, la despedida. Una esperanza futura de volver a encontrarse. Una puerta abierta que lo llevaría a la luz de la noche nuevamente. Se imaginaba diciéndole que la odiaba y que no le importaba. Que su voz le dolía y que podía desprenderse de aquello de la misma forma que se cambiaba de ropa en la mañana. Pero hubiese sido muy triste. Para él y la otra.

Y así ocurrió tal como no se lo esperaba, pero de la forma en que quería. Aborreció toda aquella noche y sintió como se moría de a poco y el tiempo se le iba. Otra noche perdida, pensó.
Le prometio que se volverían a encontrar después de aquel sueño. Prometio que volvería con estrellas y algo mejor.

Escucho como cerraban la puerta detrás suyo y el ruido de la llave al girar. Prendió un cigarrillo, comenzó a caminar por su ciudad y nunca más volvió a aquel lugar.

Fuego.

Acabado el vino comenzó la verdad. El recuerdo de una voz semejante a un tango se mezclaba, quizá, con la figura de este casi geminis que transitaba por su mente.
La electricidad que formaba aquellas verdades absolutas no se iba a detener tan fácil. Al contrarío, avanzaba y rompía lo que se ponía a su frente, como el fuego que se contenía dentro suyo y que con furia deseaba mojar todo cuanto lo rodeaba.
No le hubiese sido fácil describir en detalle la verdad o siquiera aquella pasión. Sus sentidos se encontraban nublados por el efecto ya conocido de lo que recorría su cuerpo.
Y era quizá eso mismo lo que evocaba su recuerdo. La intensidad con la que sentía que transitaba, era la pasión. La noción de que aquello no era mas que una fantasía, era la verdad.

Se vio entonces a si mismo perdido en la angustia y sin poderla reconocer. Preguntándose como tantas veces a donde debía ir, a quien debía seguir y por quien debía luchar.
Se paró, entonces, con decisión y camino hacia donde su pasión le indicó. Sin pensar, como en otras veces, sin quedarse a analizar, comenzó a andar.
Seguramente no sabría indicar cuanto tiempo le llevo o siquiera cuanta distancia recorrió, pero ahí llego, frente a la pasión y a ella se abrazo. Y ahí no se quedo. Sin pensar, avanzó.

El sueño de la papa

Parte 1

Soy una papa. Con ambiciones de papa. Quiero convertirme en puré, estar en una ensalada o que me friten y me coman con sal. Que agitada la vida de una papa. Estoy en un lugar oscuro con otras papas. Esperamos el momento de que nos procesen. Porque somos papas y tenemos ambiciones de papa.
Los días pasan. Los pasos se sienten. Caminan cerca nuestro, vemos luz. Pero no nos llevan. Ayer se llevaron una cebolla, ¿por qué no a nosotras? Somos más ricas, menos ácidas. Somos papas y tenemos ambiciones de papa.
Por fin llegó el día; me están bañando, descubriendo mi blanca piel. Bajo el barro que me cubría desde que era pequeña se escondía una hermosa papa blanca con ambiciones de papa.
Me desnudaron de una forma muy prolija. Aún no sabía en que me iba a convertir. Quizá en una ensalada. Me emociona pensar que pronto me cubrirán con mayonesa y compartiré el plato con huevos y zanahorias. Soy una papa, tengo ambiciones de papa.
Comenzaron a cortar a mis hermanas. No veo zanahorias. Quizás nos cocinen primero a nosotras, luego a ellas. Las papas somos especiales, no compartiriamos una cocción con esas inmundas zanahorias. Ellas no son papas y no tienen ambiciones de papa.
Nos cortaron de forma circular. Parece que no vamos a ser ensalada. Una hermana me dijo que corría el rumor de que seríamos fritas. Mi emoción aumentó. Comenzó a nevar. Voy a ser una papa frita deliciosa. No puedo esperar que me coman. El Niño esta muy emocionado. Soy una papa, cumpliendo mis ambiciones de papa.
Estoy en el aceite, se siente crujir, fui una de las primeras. Las otras estan ardiendo de celos, yo ardo de placer. Mi piel se pone crujiente, pero en el interior soy tierna, una tierna papa frita, con ambiciones de papa.

Parte 2

Ya nos están sacando. la desgracia se avecina. Pronto iría a parar a un lugar donde la mugre sería mi vecina. La descuidada mano no se dio cuenta. Tras la cocina caí cuando aún estaba caliente. El aceite sedesparramó a mi alrededor. Mis ambiciones de papa se esfuman mientras se enfria mi sudor.
Se que vendrán por mi. Eh tenido más mugre hasta que me limpiaron al fin. Durante años junto al barro creciendo aprendí, que el era mi amigo aunque siempre cubria mi piel en el jardin. Sólo debía esperar, nuevamente en la oscuridad. Ya llegaría el día, en que me rescatarían y me volverían a cocinar. Mis ambiciones de papa son ya un recuerdo, de cuando era amiga de la raíz. Cuando todavía todavia no tenia ambiciones de papa.

Me estoy poniendo verde y mi estómago me duele. Escucho voces que se quejan del olor. Pronto me irían a descubrir y aunque estoy vieja y descompuesta, alguien disfrutara de mi.
Extraño a mis hermanas, ya deben estar en un lugar mejor, ellas cumplieron sus ambiciones, yo soy una vieja podrida, con ambiciones de papa.
Veo luz y escucho ruidos. La cocina dejó de funcionar y la están moviendo. El olor que supe largar, vuelve a aparecer, se dan cuenta que estoy ahí. Finalmente me van a rescatar. Mis ambiciones de papa vuelven a aparecer.

Parte 3

No resulta como quería y nadie me quiere tocar. Se quejan del olor, no me quieren tocar. Con una escoba y con paciencia me comienzan a llevar a una pala por la cual la basura voy a parar. Ya no soy una papa, mis ambiciones de papa quedaron atrás.

El basurero es oscuro y estoy lastimada. Entre latas,cáscarass y yerba, veo mis días terminar. No se a dónde iré ni que será de mi. Nos comenzamos a mover, nos llevaron a otro lugar, estamos esperando, el ángel de la muerte, pronto nos vendría a buscar. Creía que era una leyenda y que nunca iba a pasar, sin cumplir mis ambiciones esté mundo voy a abandonar. Nunca me voy a olvidar de cuando era una papa y tenía ambiciones de papa.
En un basurero ya me estoy por morir y no se cuanto más me quieren hacer sufrir. Veo la luna y el sol irse sin despedirse y volver.
Siempre llegan nuevos compañeros. Algunos tristes como zanahorias destruidas o descuidadas. Otros contentos como latas y servilletas que cumplieron sus ambiciones. Una cáscara de naranja estaba contenta, pero otra lamentaba no haberse convertido en almíbar.

Comienza a hacer calor. El humo comienza a aparecer, pronto seré cenizas, pero al menos ya no me puedo preocupar por ser una papa y tener ambiciones de papa.

Despertar

Escucho la lluvia golpear en el techo y pienso en no animarme a mas que soñar. Como si todo lo de ayer no importase, como si el día no fuera a comenzar, escucho el sonido del agua golpear el vidrio de la ventana y solo puedo pensar en aquellas cosas que sin mucho esfuerzo puedo disfrutar. El olor a nafta, el pasto recién cortado, la ruta avanzando a toda velocidad a un costado, ver un avión despegar.
No me acuerdo quien soy, a que me dedico, que tengo que hacer que esperan de mi, que deje sin hacer. No pienso tampoco en donde estoy, no hago esfuerzo por dejar ese lugar acogedor.
No me interpretes mal, no soy un soñador. En 10 minutos seré otra vez esa persona que alguna vez me viste ser, caminare por ese camino tan familiar que todos los días veo pero que no lo podría relatar. El agua me va a mojar pero no va a importar, no lo voy a extrañar, no soy yo el que no se puede despertar y prefiere soñar, no soy yo el que no quiere luchar.
Pero nos veremos de nuevo cuando tenga que despertar.

React.js: Mejorando la vista

Introducción

Desde hace un tiempo venia escuchando mucho revuelo sobre React.js, un framework desarrollado por la gente de Facebook e Instagram que, según palabras de sus adeptos, es la panacea en el manejo de las vistas de nuestra aplicación.

Hace poco, en la aplicación en la cual estoy trabajando, nos encontramos con un el problema de tener una gran lista de items, que se muestran en pantalla con una estructura compleja (Digamos, cada item implica mucho html). Esta lista ademas podía ser modificada de distintas maneras, mediante filtros, búsquedas, etc. Nada complejo, de base, pero cada actualización de la misma tenia un interesante impacto en el rendimiento de la aplicación. Especialmente en dispositivos móviles

Según lo que había leído y escuchado, esto parecía un buen trabajo para React, y de hecho, lo fue.

Haciendo que React se encargue de dichos items y filtros, mejoro considerablemente el rendimiento de esta sección. Y lo mejor es que no tuvimos que cambiar nada más que la parte especifica de la aplicación encargada de mostrar dichos items.

¿Y que hace, exactamente, React?

Veamos un poco más en detalle que es lo que permitio que React funcione tan bien.

En su presentación, el sitio web de React menciona tres items:

La V del MVC

React no hace más que tomar las riendas de nuestra UI. No le importa como estén estructurados nuestros datos, ni como los procesamos, ni como se comunica nuestra aplicación con su backend, ni nada más allá de la interfaz de usuario.
Esto implica que podemos, sin mucho esfuerzo, incorporarlo en nuestra aplicación, incluso si nos encontramos un estado avanzado en el desarrollo de la misma.
Solo hay que crear los componentes y hacer que se dibujen.

Alto rendimiento mediante el uso de un DOM virtual

El secreto del rendimiento de React, esta en lo que ellos llaman DOM virtual. En el caso de nuestra lista de Items anteriormente mencionada, React mantiene una representación virtual de la misma. Al intentar actualizarla, React compara que fue lo que cambio de la lista anterior respecto a la nueva y se encarga de actualizarla.

Un flujo de datos de una sola dirección más simple que el flujo de datos tradicional.

Los datos en React fluyen en una sola dirección. A diferencie de, por ejemplo, Angular donde actualizar el modelo afecta a la vista y actualizar la vista afecta al modelo.
Como vimos antes, React solo se encarga de la vista así que en realidad, no tiene integrado el manejo de modelos. Esto ayuda a que sea sencillo integrarlo con Angular, Ember, Backbone y casi cualquier framework js que anda dando vueltas.
La gente de Facebook, de hecho, implementa una arquitectura a la que llamaron Flux, para poder aislar la propagación de datos del modelo y los eventos que dispara la vista.

Uso de React

React nos provee una API para crear componentes. Un componente, básicamente, tiene esta forma:

var Hello = React.CreateClass({
  render: function() {
    return (
      <div>Hola Mundo!</div>
    )
  }
});

React.renderComponent(<Hello />, document.getElementById('container'));

Básicamente, estamos insertando el componente Hello dentro de un elemento con id “container”. El elemento se va a insertar como un div con el texto “Hola Mundo”.
Primero, notamos que la sintaxis no es 100% javascript (¿ves los tags dentro del código?), si no jsx. Usar jsx no es obligatorio, y de hecho podemos escribir lo mismo usando 100% js, en una sintaxis quizá no tan obvia ni natural:

var Hello = React.createClass({
  render: function() {
    return React.DOM.div(null, "Hola Mundo!");
  }
});
  
React.renderComponent(Hello(), document.getElementById('container'));

La magia de React, en realidad, entra en juego cuando alteramos el estado de nuestros componentes. Cada vez que cambiemos el mismo mediante el metodo setState, React redibujara nuestro/s componentes, optimizando todo el proceso.
La Api de componentes, nos permite interactuar con el estado, eventos de DOM, propiedades, etc.

  // reactComponents/List.js
  var List = React.createClass({
    getInitialState: function() {
      return {
        items: []
      }
    },
    
    updateItems: function(newItem) {
      this.setState({
        items: newItems
      }); 
    },

    render: function() {
      var itemsList = this.state.items.map(function(item) {
        return (<Item title="item.text" />);  
      });
      
      return (<ul> {itemsList} </ul>);
    }
  });

  var Item = React.createClass({
    render: function() {
      return (<li> {this.props.text} </li>);
    }
  });

  module.exports = List;
  // script.js

  var ListComponent = require('./react-components/List');

  var items = [{text: "Item 1"},{text: "Item 2"}, {text: "Item 3"}];

  var myListComponent = React.RenderComponent(<ListComponent />, document.getElementById('container'));

  items.push({text: "Item 4"});

  myListComponent.updateItems(items); // Se actualiza el DOM con el item 4

  myListComponent.updateItems(items); // No se actualiza nada

Cómo funciona

La magia de React se debe a su DOM Virtual. Todas las operaciones que hacemos sobre sus componentes no se insertan directamente en el DOM si no que se trabaja sobre una representación del mismo.
Mediante esta técnica, React nos ahorra la costosa manipulación del DOM, ya que ante cada posible actualización, React analizará primero qué es lo que cambio para finalmente actualizar el DOM real mediante una estrategia optima con el menor impacto posible, logrando así un rendimiento mucho mayor que el logrado mediante la manipulación directa.

En el ejemplo anterior, la segunda llamada a updateItems no cambia el estado del componente, por lo que no existe una actualización del DOM real. E incluso en el primer llamado, React crea una estrategia para actualizarlo que logra que únicamente, se actualice lo necesario para agregar el nuevo item

Integración con otros Frameworks

Como mencione anteriormente, una de las cualidades de React, es que solo se encarga de la vista, por lo que podemos, sin mucho esfuerzo, integrarlo con otros frameworks MV*, como Angular o Backbone.
Esto, ademas, permite que podamos probar React sin tener que hacer un gran replanteo en nuestra arquitectura (Salvo que queramos usar Flux) ya que podemos hacer una implementación sobre un componente especifico sin alterar ningún otro.

En Angular, por ejemplo, podemos crear una directiva que se encargue de hacer de proxy entre Angular y React.

  /**
   * myApp/angular-directives/reactList.js
   */
  
  // Asumimos que tenemos definido un componente listComponent en algun lado.
  var listComponent = require('../reactComponents/listComponent');

  myApp.directive('reactList', [function() {
    return {
      restrict: 'E',
      scope: {
        items: '='
      },
      link: function(scope, el, attrs) {
        var component = React.renderComponent(listComponent({
          items: scope.items
        }), el[0]);
      }
      
      scope.$watch('items', function(new, old) {
        component.updateItems(new);
      }, true);
    }
  }]);

Luego solo hace falta que usemos dicha directiva en algun template mediante <ReactList />

En Backbone, podríamos hacer algo parecido implementando el metodo View.render, asegurandonos que ante el evento ‘render’ del modelo, nuestra vista se encargue de actualizar el estado del componente.

Conclusión

Como siempre, la idea del post no es ser una guía a React. Primero, porque existen muchas cuestiones respecto a su uso e implementación que me faltan por resolver y ademas porque debido a su etapa de desarrollo, seguramente su API cambie en el corto plazo. Y ademas, la gente de Facebook hizo un excelente trabajo con la documentación del mismo como para que tenga algun sentido.
Tampoco recomiendo que sea implementado de la misma forma que mostre mediante el escueto ejemplo anterior, seguramente podes encontrar un workflow mucho mejor y consciso, pero preferí enfocarme en la simplicidad del mismo para integrarse a otras herramientas.

Por último, solo me queda mencionar que ya hay disponibles plugins de grunt y gulp para integrar jsx en nuestro workflow actual de construcción con poco esfuerzo :).

Links y referencias

BarcampNEA 2014 – Un hito cumplido

El pasado sábado 10 de mayo, en la ciudad de Apóstoles, Misiones, Argentina, se realizó la 4ta edición de la BarcampNEA. Evento que, con un gran grupo de personas que fue creciendo año a año (en cantidad y experiencia) se comenzó a realizar hace ya 4 años en Resistencia, Chaco.

Este año, fue el que le puso la cereza al postre, por ser el año en el que se cumplió con la meta original de organizar el evento en cada una de las provincias que integran el Nordeste Argentino (NEA). Siendo esta última provincia, Misiones. Donde el grupo local, organizadores de la cada vez más grande JoInEA y que ademas fueron participantes con asistencia perfecta desde el primer evento, se lucieron con una organización en la que casi no quedaron cabos sueltos y aún así, se mantuvo el espíritu original de un evento Barcamp.

En lo personal, participe de dos charlas. La primera, una introducción rápida al armado de aplicaciones real time con Firebase. Un interesante servicio para manejar datos en tiempo real.
Dicha charla, fue una improvisación surgida a partir de que fuí jugando en el colectivo que me llevo desde Buenos Aires hasta Apostoles, armando un pizarron colaborativo para poder ser usado en este tipo de eventos. Una chorrada, pero que sirvió para jugar un rato con este servicio y de paso hablar de real time, problemas y soluciones.

La segunda, fue referida al desarrollo de aplicaciones móviles usando tecnologías web mediante FirefoxOS y Cordova (ya vendrá un post al respecto más adelante). Donde hablamos un poco de los problemas que nos encontramos al encarar este tipo de aplicaciones, las cosas a tener en cuenta, las herramientas con las que contamos, tanto para FirefoxOS como para Cordova. Un tema muy interesante, al menos para mí y espero que para los que asistieron también :D.

También tuve la oportunidad de escucharlo a los grosos: Agustin Casiva, con su charla “El cámino del samurai”, contando sus inicios arreglando computadoras hasta su última aventura como empresario en 42Mate. a Matias Figueroa, que hablo sobre diseño web responsive y herramientas pro para el desarrollo web. Emiliano Fernandez hablando sobre node.js y todo su ecosistema y la genial charla de Jose Pezzarini sobre impresoras 3d y la cultura de “hágalo usted mismo”.

En conclusión, me pone muy contento haber podido participar en las cuatro ediciones de este gran evento. Y espero que aún sucedan muchas más ediciones de este evento en donde, más que ir a hablar o escuchar, se va a compartir, experiencias, problemas, soluciones o un buen rato entre amigos.

[AFG_gallery id=’3′]

Y como perlita, la popular (?) charla de HTML5 vs Flash que dimos junto a Mati Figueroa en el 2011 :D

JSConf UY 2014, tarde pero seguro

Este post ya quedo medio viejo, pero igual merecia estar.

El mes pasado, tuve la oportunidad de asistir a la JSConf Uruguay. Donde, ademas de escuchar a grosos y leyendas del amplio mundo de Javascript, fuimos invitados a dar un workshop, representando a la comunidad Mozilla, sobre FirefoxOS, junto a Pablo Cuadrado y Fernando Briano.

Resultaria dificil, más a estas alturas, hacer un resumen del evento en sí, en donde no solo se trataron muchos temas durante las charlas, como promises, programación funcional, MEAN, React, seguridad, autenticación, Pasado y futuro de Javascript, etc etc. Si no que tambien se establecio un muy buen clima de pasillo con el resto de los asistentes al evento.

Dentro de nuestro workshop, hicimos un repaso rápido por las caracteristicas de FirefoxOS y nos enfocamos en una aplicación de ejemplo, su ciclo de vida y una mirada un poco más profunda sobre las herramientas para desarrolladores que ofrece Mozilla, dentro de Firefox, para trabajar en aplicaciones web, ya sea para FirefoxOS o Firefox para Android.
Mención especial merece la presencia de Nick Desaulniers quien trabajo en el desarrollo de muchas de estas herramientas y ademas dio una charla sobre “La convergencia de la web y el escritorio” haciendo que más de uno quedemos con un hilo de baba colgando.

A continuación, las fotos del evento. Donde no pudieron faltar las choluleadas con el mítico Douglas Crockford, autor de “Javascript: The good parts” (El libro que me abrió la cabeza para poder comenzar a trabajar en Javascript) y Jeremy Ashkenas, creador de Backbone, Underscore y CoffeeScript.

[AFG_gallery id=’2′]