Desarrollo de CorDapps: Introducción

15744044622_9451e331b5_b.jpg

Imagen de Flavio Ricci

Tenía muchas ganas de traer este tema por el blog y de compartir con vosotros esta nueva temática que se distancia del Frontend y de JavaScript durante un tiempo. Como muchos ya sabréis, durante los últimos meses, me encuentro trabajando activamente para comprender ciertos conceptos sobre blockchain y el desarrollo de aplicaciones distribuidas.

Mi conocimiento todavía es muy limitado comparado con el de mis compañeros, pero sí he podido investigar y probar pequeñas cosas que me han aportado bastante comprensión. Durante las próximas semanas, quería hablaros sobre una tecnología que se encuentran desarrollando varias empresas del sector financiero dentro del abanico del R3.

El R3 es un consorcio fundado por varias empresas del sector preocupadas en conseguir desarrollar servicios, productos y soluciones de forma distinta a la que se hace hoy en día. La idea surge de poder usar toda la potencia de los blockchain actuales y conseguir un marco de trabajo que ayude a crear casos de uso del mundo real que escalen y sean productivos para los desarrolladores.

El mundo blockchain se encuentra en plena efervescencia y mientras el ‘hype’ inicial empieza a calmarse, el estado actual de las compañías es el de encontrar herramientas que generen un ecosistema maduro.

Corda y las CorDapps nacen con esta idea, nacen como una forma de ayudar a los desarrolladores a crear aplicaciones financieras de una manera diferente, aprovechándose al máximo de las técnicas de blockchain, pero intentando que escalen y puedan ser útiles.

El conocimiento que he sacado de Corda y las CorDapps puede que te ayude en encontrar soluciones distribuidas en tu día a día aunque no te dediques a desarrollar aplicaciones financieras, por lo que te invito a que sigas conmigo en lo que, por ahora, serán 6 posts que explicarán cómo empezar a desarrollar CorDapps con Corda:

Read More

Programación Funcional en JavaScript: La memoización

8540563633_e4baebcb26_c

Imagen de Lori-B.

El viaje se termina. Con esta última entrada sobre optimización ponemos punto y final a la serie sobre programación funcional.

Si en la penúltima entrega introdujimos los problemas de la programación funcional en cuanto a rendimiento, hoy voy a hablaros de un mecanismo que puede ayudarnos a evitar cómputos y evaluaciones innecesarias: la memoización. Un término muy arraigado a este estilo de programación.

Si llevas conmigo desde Octubre, no creo que quieras perderte esta última entrada. Terminemos esto bien:

Read More

Programación Funcional en JavaScript: La evaluación perezosa

32649683842_e66726ea84_kImagen de Stefan K.

Terminada la parte de patrones funcionales, entramos en una miniserie de dos post sobre optimización funcional.

Puede que no te hayas percatado – o que si – pero la programación funcional nos va a suponer un reto a la hora de optimizar recursos. Otra de las grandes pegas que siempre le han puesto sus detractores se debe a que la programación funcional es un estilo bastante devorador de recursos y tiempo.

Yo sinceramente sería cauto. Si pensamos fríamente, cualquier tipo de abstracción que queramos realizar desde un lenguaje de programación va a minar nuestras posibilidades computacionales nos guste o no. La abstracción en lenguajes declarativos es bastante grande, pero no muy diferente a lo que a veces nos podamos encontrar en abstracciones imperativas. Como todo, hacer uso de ciertas técnicas va a ser una cuestión de equilibrio entre lo que nos conviene a nosotros y lo que le conviene al computador.

Por si esto no fuera poco para los detractores, como hemos ido viendo, JavaScript tiene menos funcionalidades funcionales de las que nos gustaría, lo que supone tener que realizar una gran cantidad de abstracciones ad hoc para que el comportamiento sea el correcto en el paradigma. Esto supone un sobreesfuerzo de recursos. Como veremos, esto es posible de paliar, pero tenemos que tener en cuenta que la programación funcional no es el maná, también tiene sus problemas (benditos problemas).

En fin, ¿Estudiáis un poco de optimización conmigo? ¿Si? Pues adelante:

Read More

Reseña: Dar y recibir

Me apetecía leer algo relacionado con temas socioculturales y psicológicos. Me interesan muchos aquellos asuntos que tienen que ver con las interacciones humanas, con cómo nos relacionamos, con cómo demostramos empatía hacia ciertas situaciones y con cuáles no.

Me interesan muchos estos temas, porque creo que una parte complicada de llevar a cabo Scrum como marco de trabajo en nuestro día a día, viene enfocado en cómo tratamos todos nuestros problemas como equipo. Conocer el manifiesto, los artefactos, las reuniones o roles es, por lo general, bastante sencillo. Sin embargo, llevar Scrum a buen puerto en un equipo de desarrollo, cuesta más de lo que muchas veces pensamos al principio.

Bajo mi humilde opinión, creo que esto es debido al alto componente humano y la gran cantidad de responsabilidad que se delega en el equipo de trabajo. No lo critico, que conste. Me encanta la idea. Creo en los equipos autoorganizados como forma de motivación y de mejora continua. Pero si es cierto que con los sistemas educacionales con los que contamos y esta cultura de competencia que triunfa, no nos han preparado para trabajar de esta forma.

Por eso, de vez en cuando, intento leer libros que no tienen tanto que ver con la técnica o las metodologías y sí más con las interacciones y la forma de relacionarnos. Si en meses anteriores ya os hablé sobre Comunicación No Violenta, hoy os venía hablar de otro libro: Dar y recibir.

Read More

ES6: Las promesas

 Ay las promesas. Esas grandes incomprendidas. Todo el mundo las usa, pero nadie las entiende. Ese uso mixto con los callbacks… esa manera de querer eliminarlas del mapa para dar paso a las  ‘async function‘ y así de paso seguir convirtiendo a JavaScript en un lenguaje típico de POO, esos antipatrones que llevo viendo durante tantos años…

Tengo que reconocer que soy un gran defensor de las promesas. Siempre me han parecido un gran mecanismos de gestión. Como veremos hoy, las promesas pasan a formar parte del estándar a partir de EcmaScript 6. La solución que han pensado es fácil y no tendrá mucho misterios para los senior. Sin embargo, aprovecharé el post para enlazar con mi serie funcional ya que, como veremos, las promesas tienen mucho que agradecer a este estilo de programación.

No me demoro más. Espero que os guste:

Read More

Programación Funcional en JavaScript: La mónada IO

c2yd4goxuaef6sp

Terminamos esta serie de patrones funcionales con una de las últimas mónadas que vamos a estudiar en esta serie: la mónada IO.

Después de estudiar cuál era la mejor manera de poder encadenar la ejecución de funciones sobre un entorno seguro con Maybe y Either, es el turno para que nos detengamos en cómo podemos hacer que las entradas y salidas de nuestras aplicaciones se encuentren en un contexto funcional. Veremos como las entradas y salidas se convierten en un coladero de efecto laterales y como IO nos salvaguarda en cierta medida.

Read More

Programación Funcional en JavaScript: La mónada Either

la-la-land-featured-image-gosling-stone.jpg

Descubrimos en el post anterior cómo concatenar funciones evitando la incómoda comprobación de ‘nulls’. Hicimos eso delegando el trabajo en una estructura de datos denominada mónada Maybe.

Explicamos las ventajas que tenía su uso y como esta estructura nos permite realizar aplicaciones seguras. Sin embargo, pudimos ver que era un estructura que no favorecía la detención de excepciones por no saberse donde se generaba dicho error.

Este problema será resuelto esta semana por una de las mónadas que vamos a presentar en esta serie: la mónada ‘Either’.

Read More