Programación Funcional en JavaScript: La aridad y las tuplas

14787298814_2ed9b48aa0_k.jpg

Volvemos a la serie de posts dedicados a la programación funcional en JavaScript. Nos habíamos quedado explicando la importancia del uso de los métodos encadenados para conseguir código más expresivo.

En el posts de hoy hablaremos de las desventajas que nos acarrea el uso de métodos encadenados. Aprenderemos una nueva forma de modularizar nuestro código y de sacar mucho más partido a la reutilización de código por medio del concepto de tuberías que se puede usar en programación funcional.

Explicaremos qué son las tuberías y las características que necesitamos que cumplan las funciones para poder conseguir esa sensación de código que fluye por medio de una tubería conectada. Explicaremos qué es la aridad y cómo las tuplas o la currificación pueden ayudarnos a manejar la complejidad de aridades elevadas.

Como siempre, me tenéis a vuestra disposición en los comentarios por si pudiera resolver alguna de vuestras dudas. Empecemos:

Read More

4 razones que cambiarán tu visión de Microsoft

inspiring-quotes-by-satya-nadella1-1464951892

No me paga el sueldo, no tengo intereses secretos, llevo meses sin picar una línea en .Net y sin embargo, eso no significa que no sepa observar la realidad.

Me marcó mucho una frase de uno de mis profesores de universidad. En una de sus clases magistrales, nos explicó como de importante era el no cerrarnos puertas a nada en la vida, siempre nos avisaba a que estuviéramos alerta con las oportunidades que se ponían a nuestra disposición.

Me acuerdo que el consejo venía debido a que en un momento dado, muchas empresas se habían sentido atraídos en contratar estudiantes de la facultad la Universidad de Alcalá . El problema fue que tuvieron que irse por donde habían venido. Esto se debió a que ninguno de nosotros cumplíamos con la máxima de haber desarrollado con tecnología .Net.  Como imaginareis, en la UAH (y en casi todo Madrid), la mayoría de laboratorios se impartía con tecnologías Java.

Mi profesor me explicó que .Net podía ser una grandísima salida profesional y que aprendiendo este tipo de cosas nuevas me iban a valorar mucho por dos motivos: el primero es que existía poca gente en Madrid formada en .Net. Las empresas demandaban ese perfil mucho en aquel momento. Y lo segundo fue que esos profesionales, que se habían salido de su zona de confort, estaban muy valorados por esta misma razón.

A mi la idea me caló y empecé poco a poco a aprender sobre cosas del mundo .Net. Como a todos, los prejuicios iniciales me invadieron y mi idea de lo que era Microsoft entonces a lo que es ahora ha variado sobremanera. He conocido a un montón de personas gracias a este stack tecnológico y siempre me encontrado muy confortable trabajando con productos Microsoft.

Escribo esta entrada para ayudar a quitarte esos prejuicios que se que a ti también te recorren el cuerpo. Escribo un poco como reflexión sobre lo que pude ver en la #Codemotion2016: Un Microsoft que era patrocinador del evento, pero que para los asistentes simplemente era la enésima oportunidad para realizar un chiste trillado sobre Windows o Internet Explorer. Me gustaría dar un voto a su favor para haceros ver que no es el mal personificado.

Como la visión de todo el mundo, mi visión es muy sesgada debido a mis circunstancias y mis experiencias, pero si quería exponer 4 razones por las cuales creo que merece la pena que el día de mañana le des una oportunidad a Microsoft y por lo menos veas una opción más dentro del gran abanico de opciones con el que ya cuentas en el stack tecnológico actual.

Venga, no te vayas, quédate que te va a molar:

Read More

#Codemotion2016: Compartir. Escuchar. Vivirlo.

img_20161119_233445

Diapositiva de la charla “Nadie quiere trabajar conmigo”

Cuando uno conoce a personas que saben más que tú, lo mejor que puedes hacer es escuchar

Volvimos este fin de semana a Codemotion, la conferencia de las comunidades para las comunidades. 2100 personas aprendiendo los uno de los otros, poniéndonos al día, madurando nuestro sector a base de charla, conversación de pasillo o comentario en Twitter.

Tras mi segunda edición, me voy con una sensación extraordinaria: me gusta mucho cuando mis cimientos e ideas se tambalean en mi cabeza y los ponentes consiguen que piense de otra manera. Lo han conseguido durante este fin de semana en más de una ocasión y eso para mi es una señal de que ha merecido mucho la pena.

Esta es mi review sobre lo que fue mi experiencia en Codemotion. Seguramente muy diferente a la que vosotros tuvisteis. Pues esa es la magia de esta conferencia. Dos días, tantas charlas, tantas personas dan para contar mil y una historias. Empecemos:

Read More

Programación Funcional en JavaScript: La recursividad

10728808896_120654cb09_b.jpg

Una rama arrancada de un árbol no deja de ser un nuevo árbol, un nuevo ser idéntico pero de menor tamaño con sus hojas como última alternativa posible.

Seguimos hablando sobre el control de flujo en programación funcional con JavaScript. Si en el anterior post hablamos de cómo intentar hacer un menor uso de estructuras iterativas manuales para realizar ciertas acciones, en esta ocasión vamos a hablar de una técnica muy recurrente en programación funcional y que para muchos lenguajes de programación funcionales puros es la única forma de iterar: hablamos de la recursividad.

Una técnica que nos permitirá pensar en la solución de problemas complejos de una forma diferente. Veremos también en que nos puede ayudar a día de hoy la recursividad y cómo puede ser aplicada. Empecemos:

Read More

Programación Funcional en JavaScript: Los métodos funcionales

map-filter-reduce-in-emoji-1.png

Creo que Swift explica los métodos funcionales mejor que yo. Si, el anterior código compilaría en Swift.

Después de terminar con la primera fase introductoria de esta serie, nos adentramos en una nueva fase dedicada a explicar cómo va a ser el control de flujo en una aplicación de estilo funcional. Esta segunda serie va a constar de dos posts: uno dedicado a  lo que conocemos como métodos funcionales y otro para explicar el término de recursividad.

En el actual post, nos centraremos en contestar a las siguientes preguntas: ¿Qué es un control de flujo? ¿Qué es el encadenamiento de métodos y funciones? y ¿Qué son las expresiones lambda?

Por último, os enseñaré a usar tres métodos funcionales muy conocidos en JavaScript y en programación funcional como son map, reduce y filter.

Seguimos haciendo uso del libro ‘Functional Programming in javaScript: How to improve yout JavaScript programs using functional techniques‘. Espero que os guste. Adelante:

Read More

Programación funcional en JavaScript: Las funciones

22400318_3008cc30d1_b

Encontramos unas cajas en el desván del señor Klein.

Para nuestra sorpresa, las cajas eran capaces de transformar unos objetos en otros. Si en una caja insertaba arena de la playa, al instante obtenía una piedra dura y rojiza. Si insertaba en otra caja esta piedra, obtenía una pipeta de oro. Si mezclaba las dos cajas podía convertir mi tierra en oro.

¡Eran mágicas!

Al igual que en el cuento anterior, las funciones tienen algo de mágico dentro de todo sistema. Si como hemos dicho, para seguir un estilo funcional, necesitamos crear funciones puras y sin efectos colaterales, podemos asegurarnos que dado un objeto, podamos transformarlo siempre en el mismo objeto diferente sin saber cómo se ha hecho.

Después de haber hecho un repaso sobre qué es la programación funcional y cómo podemos aprovecharnos de ciertas funcionalidades de la orientación a objetos, hoy terminamos la introducción de esta serie hablando sobre el eje central de este paradigma: Las funciones.

En este post hablaremos de cómo se comportan las funciones en JavaScript y que funcionalidades especiales nos proporciona el lenguaje para que podamos sacarle un mayor provecho en el estilo funcional.

Nota: Recordaros que esta serie de post sobre programación funcional en JavaScript no habría sido posible sin la ayuda que me está aportando este grandísimo libro. Os lo recomiendo encarecidamente como recurso de cabecera.

Read More

Kong: El King de los Microservicios

2752594335_2a06435fd8_z

Bueno, Denham, los aviones lo mataron. – No, no fueron los aviones… fue Bella quien mató a la bestia.

Uno de los grandes problemas a lo que nos enfrentamos cuando tenemos una arquitectura dividida en diferentes microservicios, es lo difícil que se puede llegar a ser el gestionar tantas entidades independientes dentro de una infraestructura común.

Además, y por normal general, cuando tu arquitectura se encuentra dividida en partes de negocio segregadas, necesitas presentar tu API de una manera homogénea al exterior evitando dar pistas de cómo es tu infraestructura de servicios interna.

Es por ello que es necesario contar con una herramienta que nos permita homogeneizar ciertos procesos y que nos permita gestionar todas las APIs de las que cuenta la arquitectura. Una buena opción puede ser por medio de Kong: Una herramienta que rápidamente se convertirá en un auténtico aliado para nosotros.

Read More