jueves, 12 de marzo de 2020

Cuando tienes un martillo (TypeScript) ...

todo parecen clavos (tipos). 

Estaba buscando como se hacen uniones discriminadas y pattern matching con typescript y me he encontrado con artículo en un blog con una solución para "reducir la cantidad de código que tenemos que escribir en una funcion reduce de Redux sin comprometer la seguridad de tipos".

Traducido al castellano significa que así pulsamos menos teclas para construir la función reduce porque al estar fuertemente tipado salen las letritas y los cartelitos de autocompletado del intellisense del VS Code.

martes, 10 de marzo de 2020

Composición de software - Inyeccion de dependencias funcional en la canalización de funciones.

La cosa viene de la I  y II parte. Pégale un vistazo si no lo has hecho todavía.

En esta entrada voy a demostrar lo fácilmente que se puede modificar y/o extender el comportamiento del workflow de la aplicación y además como se puede hacer inyectando las dependencias para conseguir una arquitectura con bajo acoplamiento.

lunes, 9 de marzo de 2020

Composición de software - Canalización de funciones con aridad heterogénea en JavaScript usando mónadas.

La cosa viene de la I parte. Pégale un vistazo si no lo has hecho todavía.

En esta entrada voy a usar una unión disyuntiva en las funciones orquestables del ejemplo anterior y modificamos la función pipe para que opere con ella.

jueves, 5 de marzo de 2020

Composición de software - Canalización de funciones con aridad heterogénea en JavaScript

La canalización de funciones es una de las partes más importantes para el desarrollo de software usando el paradigma de programación funcional.

Si revisas las entradas del gran Eric Elliott en Medium verás una línea de código extremadamente sagaz:

const pipe = (...fns) => x => fns.reduce((v, f) => f(v), x);

jueves, 6 de febrero de 2020

NodeJs en AppVeyor

Lo que parecía simple y directo al final es una odisea. Seguro que te suena...

Para poner en marcha un entorno de CI de NodeJs en AppVeyor hay que tener estas cosas en cuenta:

viernes, 24 de enero de 2020

Mi nuevo pet project.

Un completo engine en node.js y su bot de telegram acompañándolo, que permite jugar al juego de mesa MOON(1110011). Habla con el bot para jugar en single player; añade el bot a un grupo y podrás jugar en cooperativo con tus amigos! allá donde estés, sin fronteras!


Si alguien se siente generoso podría hacer un bot en otras plataformas; slack, messenger, etc utilizando el mismo engine por lo que en un principio lo tiene facilito ;)

lunes, 2 de diciembre de 2019

Jerarquía de contenedores de Inyección de dependencias en ASP.NET MVC

¿Has tenido alguna vez un sistema de información; cuya interfaz para la parte interactiva es ASP.NET MVC; que necesita mantener varias versiones de comportamiento en la capa de aplicación y/o negocio a la vez y la decisión de qué versión utilizar tenía que establecerse en tiempo de ejecución según el input del usuario? Si es así, quizás esto te interese.

jueves, 17 de octubre de 2019

Retryer funcional

Hasta ahora estaba utilizando PostSharp para mi infraestructura de reintentos y muy contento oye. Utilizar AOP para estas cosas de crosscutting concerns está muy guapo y solo con eso ya está a milenios luz de la mayoría de los proyectos laborales que te puedes encontrar.

Pero tenía un problema y es que no puedes modificar en tiempo de ejecución nada. No puedes decidir si una función se reintenta o no y no puedes cambiar los parámetros del reintento. Todo está decidido en tiempo de diseño y no hay manera de cambiarlo en tiempo de ejecución. Tampoco se puede tener la misma función decorada con 2 retryers diferentes que sean usadas por distintas partes del sistema.

lunes, 19 de agosto de 2019

Pillándole el rollo a Command Query Responsibility Segregation (CQRS) de una vez por todas.

Hay que ver lo que se complica la gente con conceptos tan sencillotes (aunque increiblemente útiles). La ultima vez que hablé sobre CQRS con alguien; este alguien tenía un pifostio montado en la cabeza sobre event sourcing, read/write models, consistencia eventual y un buen montón de paranoias que creía que era en lo que consistía CQRS.

miércoles, 5 de junio de 2019

Que las promesas no te controlen a ti.

Pues sí; aquí estamos tirando código Javascript que tenga que funcionar en navegadores relativamente antiguos y sin que me dejen usar Babel debido al gañanismo atávico de Españistan.

Aquí estamos usando la implementación de las promesas provistas por JQuery que deja mucho que desear. Pero a lo tonto he interiorizado varias cosas interesantes que quiero compartir.