jueves, 13 de abril de 2023

Sincronicidad forzada.

 El otro día leí esta entrada de un blog, que estaba en Hacker News, sobre como habían desechado RabbitMQ y se habían quedado usando una tabla de Postgres simulando una cola FIFO con la ayuda de los bloqueos y aislamiento que provee el motor de datos relacionales.

 No la voy a explicar aquí así que, si quieres contexto para el resto de la entrada, te animo a que la leas primero antes de continuar.

miércoles, 12 de abril de 2023

Programar con ChatGPT y un sacacorchos

Pues la IA sabe las respuestas pero hay que sacarlas con sacacorchos. Es una pena porque lo bonito de esto sería que cuando te diese una respuesta "pro", si hay algo que no entiendes o una característica que no conocías, le pudieses preguntar y así aprendes.

Voy a poner una conversación muy sencilla que he tenido con esta IA en la que se ve que le tengo que ir pidiendo las cosas poco a poco; eso significa que el usuario tiene que conocer las características, por lo que si el usuario no sabe, ChatGPT tampoco...

martes, 29 de noviembre de 2022

Cuando y como aplicar programación asíncrona.

Pues aquí estamos de nuevo. Hacía una pandemia que no escribía en este blog; debido a un buen montón de líos e imprevistos.

En esta entrada quería enumerar las situaciones más comunes, con las que es posible encontrarse, que pueden aprovechar las bondades de la programación asíncrona.

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.