<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>pmareke</title><link>https://pmareke.com/</link><description>Recent content on pmareke</description><generator>Hugo -- gohugo.io</generator><language>en-es</language><copyright>&amp;copy; Copyright 2020.</copyright><lastBuildDate>Sat, 24 May 2025 00:00:00 +0100</lastBuildDate><atom:link href="https://pmareke.com/index.xml" rel="self" type="application/rss+xml"/><item><title>La santa trinidad del Python moderno: uv, ruff y ty</title><link>https://pmareke.com/posts/holy-trinity/</link><pubDate>Sat, 24 May 2025 00:00:00 +0100</pubDate><guid>https://pmareke.com/posts/holy-trinity/</guid><description>En pleno 2025, el ecosistema Python está en su mejor momento. Hoy vamos a hablar de tres herramientas que están redefiniendo cómo es nuestra experiencia de desarrollo.
Astral Todo lo que vamos a ver hoy está creado por Astral.
Astral es una empresa que está poniendo patas arriba el ecosistema Python creando herramientas modernas, rápidas y centradas en la experiencia del desarrollador. Fundada por Sebastian McKenzie (el creador de Babel y Rome en el mundo JavaScript), Astral aplica su filosofía de rendimiento y diseño minimalista por encima de todo.</description></item><item><title>Lo IMPORTANTE no siempre es RELEVANTE</title><link>https://pmareke.com/posts/important-vs-relevant/</link><pubDate>Wed, 07 May 2025 00:00:00 +0100</pubDate><guid>https://pmareke.com/posts/important-vs-relevant/</guid><description>Cuando estamos creando nuestros tests, es importante diferenciar qué es importante y qué es relevante. Hoy vamos a ver qué significa cada cosa y cómo mejorar notablemente nuestros tests.
Importante Cualidad de lo importante: aquello que es muy conveniente, interesante o necesario.
En el contexto del testing, yo considero importante todo aquello que debe estar presente para que el test pueda ejecutarse correctamente, pero cuyo contenido específico no influye en el resultado del mismo.</description></item><item><title>Cómo usar @retry en tus tests sin hacerlos lentos</title><link>https://pmareke.com/posts/retry/</link><pubDate>Fri, 25 Apr 2025 00:08:00 +0000</pubDate><guid>https://pmareke.com/posts/retry/</guid><description>Unos días atrás estaba ejecutando unos tests que deberían ser relativamente rápidos cuando vi algo que no cuadraba: estaban tardando demasiado. Hoy os cuento cómo la librería retry estaba haciendo que los tests fueran mucho más lentos y ¡yo ni lo sabía!
¿Qué es @retry? Por si alguien no sabe de qué estoy hablando, retry es una librería que permite reintentar automáticamente la ejecución de una función cuando se produce una excepción.</description></item><item><title>uv: Adiós a Poetry</title><link>https://pmareke.com/posts/uv/</link><pubDate>Thu, 17 Apr 2025 00:08:00 +0100</pubDate><guid>https://pmareke.com/posts/uv/</guid><description>Hace un tiempo os hablé sobre Poetry y cómo nos podía ayudar a mejorar nuestra experiencia desarrollando en Python. Hoy vengo a hablaros de uv, una herramienta que va mucho más allá que Poetry, ¡hasta el punto de poder programar en Python sin ni siquiera tener el lenguaje instalado en nuestra máquina!
¿Qué es uv? uv es una herramienta súper rápida para gestionar versiones de Python, entornos virtuales y dependencias en proyectos Python.</description></item><item><title>Cómo controlar el Graceful Shutdown en Python sin problemas</title><link>https://pmareke.com/posts/graceful-shutdown-python/</link><pubDate>Mon, 24 Mar 2025 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/graceful-shutdown-python/</guid><description>Cuando una aplicación se detiene, es crucial controlar el graceful period para cerrar conexiones, finalizar tareas en curso, o liberar recursos. En este post, veremos cómo controlar este proceso en Python usando el paquete signals.
¿Qué es el Graceful Shutdown y por qué es importante? El graceful shutdown es el proceso de detener una aplicación de forma ordenada, permitiéndole completar tareas pendientes antes de finalizar. Esto es especialmente útil en servidores y sistemas en producción, donde una terminación abrupta puede causar pérdida de datos, conexiones interrumpidas o estados inconsistentes.</description></item><item><title>Unit of Work en Python</title><link>https://pmareke.com/posts/unit-of-work/</link><pubDate>Wed, 12 Mar 2025 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/unit-of-work/</guid><description>Últimamente he estado trabajando en una aplicación en la que, básicamente, todos los casos de uso siguen un patrón muy claro: emitir logs al inicio, operar con la base de datos para persistir los cambios o hacer rollback si algo sale mal. Si todo ha ido bien, cerramos la sesión y emitimos algunos logs informativos; si, por el contrario, algo falla, emitimos logs de error.
¿Qué es Unit Of Work? Después de unas semanas implementando casos de uso como los que menciono arriba, caí en la cuenta de que estaba utilizando un patrón muy conocido llamado Unit of Work, sobre el cual hay mucha literatura escrita y que se puede definir como:</description></item><item><title>¿Por qué es tan difícil testear tu código? Pista: No culpes al testing, revisa tu diseño.</title><link>https://pmareke.com/posts/too-much-test/</link><pubDate>Mon, 10 Mar 2025 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/too-much-test/</guid><description>Quienes siguen este blog saben que yo le doy mucha importancia al testing y que siempre intento construir código partiendo de los tests.
El problema con este enfoque es que, sin darte cuenta, puedes terminar creando objetos demasiado complejos gracias a un mal diseño. Por ello testearlos se vuelve cada vez más difícil, hasta el punto de que incluso podrías plantearte borrar los tests.
REGLA 1: ¡No escribas código de producción sin un test que lo pida!</description></item><item><title>Caso real de refactor</title><link>https://pmareke.com/posts/real-refactor/</link><pubDate>Fri, 29 Nov 2024 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/real-refactor/</guid><description>Hoy os traigo un post muy práctico, el otro día me crucé en el trabajo con un código sin testear y bastante acoplado al que le pude aplicar un buen refactor y testing.
Contexto Como os decía, el otro día trabajando me encontré con un código que estaba bastante acoplado, donde estaban mezcladas diferentes responsabilidades y sobre todo no tenía tests.
El código que tenía que refactorizar era el siguiente:</description></item><item><title>Enums dinámicos</title><link>https://pmareke.com/posts/dynamic-enums/</link><pubDate>Mon, 25 Nov 2024 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/dynamic-enums/</guid><description>Días atrás os había hablado de Streamlit, un framework de Python que permite crear aplicaciones webs de una forma muy sencilla. Este framework permite crear formularios de forma trivial apoyándose en Pydantic, en concreto nos vamos a centrar en como usar Enums para crear menús de selección de forma dinámica.
Introducción Como decía en la intro, existe una librería llamada streamlit-pydantic que nos permite crear formularios a partir de clases de forma increíblemente sencilla.</description></item><item><title>Migraciones: Ese mal necesario que no tiene que doler</title><link>https://pmareke.com/posts/python-migrations/</link><pubDate>Sat, 16 Nov 2024 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/python-migrations/</guid><description>Si trabajas en la parte del Backend de una aplicación, es probable que hayas tenido que lidiar con migraciones en algún momento. En este post, vamos a ver cómo podemos hacer migraciones en Python de una manera sencilla, automatizada y sin dolor.
SQLAlchemy y Alembic Aunque es posible operar con bases de datos directamente sin necesidad de ningún ORM, SQLAlchemy es una librería muy popular en Python para trabajar con bases de datos relacionales.</description></item><item><title>Manejo del Graceful Shutdown en Kubernetes para desplegar sin interrupciones</title><link>https://pmareke.com/posts/graceful-shutdown/</link><pubDate>Sat, 05 Oct 2024 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/graceful-shutdown/</guid><description>Cuando trabajamos con aplicaciones desplegadas en Kubernetes, uno de los aspectos más críticos es cómo gestionamos el apagado de los pods para evitar interrupciones en el servicio.
Si además trabajamos aplicando CI/CD con decenas de despliegues al día, esto se vuelve más relevante si cabe.
Es bastante habitual encontrarse con la perdida de requests en un servicio que se quedan sin responder sin motivo aparente (been there, done that). Esto se debe a que out-of-the-box Kubernetes no se preocupa por el estado de nuestros pods y simplemente termina unos para arrancar nuevas versiones de los mismos lo más rápido posible.</description></item><item><title>Streamlit: The 'Good' Way</title><link>https://pmareke.com/posts/streamlit-the-good-way/</link><pubDate>Wed, 02 Oct 2024 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/streamlit-the-good-way/</guid><description>Para quien no lo conozca, Streamlit es un framework de Python que permite crear aplicaciones web interactivas con tan solo unas pocas líneas de código. En este post, veremos como aplicar algunas buenas prácticas típicas del desarrollo de software más tradicional en Streamlit.
Streamlit Estas últimas semanas he tenido la necesidad de utilizar este framework en el trabajo para crear una aplicación web de datos que permita visualizar una los mismos de forma sencilla.</description></item><item><title>FastAPI Boilerplate</title><link>https://pmareke.com/posts/fast-api-boilerplate/</link><pubDate>Sat, 21 Sep 2024 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/fast-api-boilerplate/</guid><description>En el mundo del desarrollo de software, contar con una plantilla actualizada y bien definida es clave para comenzar con agilidad y eficiencia cualquier proyecto. Y esto lo que voy a necesitar en las proximas semanas.
Esta plantilla de FastAPI está diseñada precisamente para eso: proporcionar un punto de partida rápido y optimizado, utilizando herramientas modernas que facilitan tanto el desarrollo como el despliegue de aplicaciones._
La plantilla esta disponible en Github.</description></item><item><title>Abrir la documentación de Terraform desde NeoVim</title><link>https://pmareke.com/posts/terraform-nvim/</link><pubDate>Thu, 29 Aug 2024 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/terraform-nvim/</guid><description>Como ya he comentado varias veces, trato de usar NeoVim como mi editor de texto principal cuando estoy trabajando.
Como en mi día a día, trabajo con Terraform, me gusta tener la documentación de los resources y data sources lo más a mano posible (algo que hace el plugin de Terraform para todos los productos IntelliJ) para poder consultarlos frecuentemente.
Por desgracia no he encontrado un plugin para NeoVim que me permita hacer esto de forma sencilla, así que he decidido hacerlo yo mismo.</description></item><item><title>2024 y seguimos sin inyectar dependencias</title><link>https://pmareke.com/posts/global-vs-injection/</link><pubDate>Tue, 20 Aug 2024 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/global-vs-injection/</guid><description>En pleno 2024 es posible seguir encontrado ciertas &amp;ldquo;prácticas&amp;rdquo; en recursos oficiales que a mí personalmente me sorprenden bastante. Hoy os voy a hablar de una en concreto que me he encontrado leyendo el libro The Go Programming Language
Disclamer No hace falta decir que todo esto es MI opinión, basada en mi experiencia, nada más.
Los autores del libro Alan A. A. Donovan y Brian W. Kernighan son unas personas brillantes y mucho más inteligente que yo.</description></item><item><title>Terraform: ¿Dónde está la magia?</title><link>https://pmareke.com/posts/terraform/</link><pubDate>Tue, 13 Aug 2024 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/terraform/</guid><description>Como ya he comentado últimamente, en los últimos meses he estado trabajando con Terraform de forma bastante intensa. Las primeras semanas lo único que quería era saber como sobrevivir y no sufrir xD, pero pasado esta agobio inicial empecé a tener la sensación de que había mucha &amp;ldquo;magia&amp;rdquo; que no acababa de comprender.
Os pongo un ejemplo sencillo:
Necesito crear un DNS en mi cuenta de AWS. Para ello necesito usar y configurar un Provider de Terraform, en este caso el de AWS.</description></item><item><title>¿Y la ITV pa' cuando?</title><link>https://pmareke.com/posts/itv/</link><pubDate>Mon, 05 Aug 2024 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/itv/</guid><description>El drama de la ITV No sé cómo funciona el tema de la ITV en vuestras comunidades autónomas, pero en la mía (Asturias) tienes que estar muy pendiente de cuando te toca la revisión porque si no te despistas y estas perdido.
Tienes que perdir cita con unos cuantos meses de antelación o cuando quieras darte cuenta será demasiado tarde y te darán vez cuando ya te haya caducado tu última ITV.</description></item><item><title>Aplicar metodologías Lean a Infraestructura como Código</title><link>https://pmareke.com/posts/iac_101/</link><pubDate>Thu, 01 Aug 2024 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/iac_101/</guid><description>Últimamente, he tenido la oportunidad de trabajar más cerca de la infra, tanto creando como manteniendo la misma.
Siendo una persona con un perfil claramente de desarrollo tenía cierta preocupación respecto a la aplicación de buenas prácticas en IaC (Infrasctructure as Code). Por suerte existen grandes opciones para trabajar Lean, en baby steps, pre-commits y con una pipeline muy potente que nos sirva de red de seguridad.
Terraform 101 A día de hoy creo que no hay ninguna duda que la mejor forma de manejar nuestra infra es mediante código, aplicando las buenas prácticas que ya han demostrado en el desarrollo más tradicional que suelen dar buenos resultados a la hora de mantener y extender el código a lo largo del tiempo.</description></item><item><title>Mis requisitos mínimos para un proyecto en 2024</title><link>https://pmareke.com/posts/mvp/</link><pubDate>Tue, 14 May 2024 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/mvp/</guid><description>Ha pasado el suficiente tiempo como para poder haberme generado una opinión fuerte sobre cuáles deben ser los requisitos mínimos PARA MÍ de todo proyecto que se preste en 2024.
Docker y Make Una de las primeras cosas que me gustaría ver en un proyecto es que tenga un Makefile y un Dockerfile.
Con el primero seremos capaces de simplificar tareas cotidianas como ejecutar los tests, hacer una build del proyecto, comprobar el formato o simplemente ejecutarlo en local.</description></item><item><title>Aprender Go en 2024</title><link>https://pmareke.com/posts/learn-go-in-2024/</link><pubDate>Fri, 26 Apr 2024 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/learn-go-in-2024/</guid><description>Por necesidades del oficio, en el equipo estamos trabajando en un proyecto muy integrado con Kubernetes, en los próximos meses voy a necesitar tener unos conocimientos mínimos en Go.
Modus operandi A lo largo de los años he ido perfeccionando una técnica que me funciona bastante bien a la hora de enfrentarme a un nuevo lenguaje.
La idea es aprender de forma activa, es decir, aprender haciendo, para ello lo que mejor me funciona es tomar notas y escribir la máxima cantidad de código posible.</description></item><item><title>Factorías en Python</title><link>https://pmareke.com/posts/factories/</link><pubDate>Mon, 25 Mar 2024 07:00:00 +0000</pubDate><guid>https://pmareke.com/posts/factories/</guid><description>Hoy se viene una entrada rápida, ya que me gustaría hablar sobre el uso de factorías en Python y por qué pueden tener sentido.
Factorías en Python ¿Alguna vez has tenido que crear un objeto múltiples veces teniendo que pasarle siempre la misma configuración?
¿Alguna vez has necesitado garantizar que solo se cree una instancia de un objeto y que esta sea compartida por toda la aplicación?
Si la respuesta es si, como es mi caso, entonces las factorías son tu mejor amigo.</description></item><item><title>Approval Test Driven Development</title><link>https://pmareke.com/posts/atdd/</link><pubDate>Thu, 21 Mar 2024 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/atdd/</guid><description>En los últimos meses, he estado trabajando en un proyecto nuevo que a grandes rasgos genera un manifiesto de Kubernetes a partir de un fichero de entrada en formato yaml muy sencillo. En cierto momento nos dimos cuenta de que nuestros tests eran muy mejorables, ya que validaban muy pocas cosas de un conjunto enorme de posibilidades, lo que apenas nos daba ninguna seguridad durante el desarrollo.
¿Qué son los Approval Tests?</description></item><item><title>Interfaces en Python</title><link>https://pmareke.com/posts/interfaces/</link><pubDate>Tue, 12 Mar 2024 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/interfaces/</guid><description>Como he comentado en otros posts, actualmente estoy trabajando en un proyecto en Python aplicando Ports &amp;amp; Adapters donde las interfaces son un elemento muy importante. En este post voy a explorar las diferentes opciones que tenemos en Python para definir interfaces.
Interfaces trabajando con Ports &amp;amp; Adapters La importancia de las interfaces cuando se trabaja en un proyecto aplicando el patrón Ports &amp;amp; Adapters es muy importante. Estas interfaces suelen ser denominadas puertos y cada una de sus implementaciones adapters.</description></item><item><title>Mi "Definition of Done"</title><link>https://pmareke.com/posts/definition-of-done/</link><pubDate>Sat, 09 Mar 2024 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/definition-of-done/</guid><description>El otro día en el podcast de @HablandoConTechLeaders entrevistaron a @Javier de Arcos, si no lo habéis escuchado estáis tardando, y entre otras muchas cosas hablaron del concepto Definition of Done a nivel de empresa y como éste puede cambiar de unas a otras. A nivel profesional es algo que me toca de cerca, ya que en los últimos años este término ha cambiado completamente y me gustaría explicar por qué.</description></item><item><title>No existen las recetas mágicas</title><link>https://pmareke.com/posts/magical-recipes/</link><pubDate>Sun, 03 Mar 2024 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/magical-recipes/</guid><description>En pocos sectores, para casi cada pregunta, se puede responder con un depende como el nuestro. Sin embargo, ya son varias las veces que he visto comentarios, artículos o videos tratando de dar una solución mágica que soluciona todos los problemas de todo el mundo.
Nunca seré suficientemente bueno El principal problema con estas recetas mágicas es que nos hacen sentir que no somos suficientemente buenos. Que no importa lo que hagamos y lo bien que sigamos a raja tabla todos y cada uno de los consejos que nos den, la realidad nos acaba golpeando en la cara dándonos cuenta de que en nuestro contexto esas recetas no funcionan siempre.</description></item><item><title>Serializar clases anidadas en Python</title><link>https://pmareke.com/posts/json-serialize-custom-classes/</link><pubDate>Thu, 22 Feb 2024 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/json-serialize-custom-classes/</guid><description>El otro día estaba revisando código en un proyecto tratando de mejorar los tests cuando me encontré con un problema completamente nuevo para mí. ¡Así que para que esto no me pase más hoy os cuento como lo resolví y así me queda escrito para mi yo del futuro!
Serializar clases anidadas en Python En Python es muy habitual trabajar con clases anidadas, es decir, clases que tienen otras clases como atributos en lugar de primitivos (str, int, list, etc&amp;hellip;).</description></item><item><title>Caso real de flaky test por acoplamiento</title><link>https://pmareke.com/posts/flaky-test-decoupling/</link><pubDate>Fri, 09 Feb 2024 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/flaky-test-decoupling/</guid><description>Una cosa que echo mucho en falta cuando leo posts sobre programación, es la falta de casos reales. Es algo que me aplico a mí mismo, ya que muchas veces es complicado tener algo que mostrar sin problemas de privacidad. Hoy por suerte os puedo traer una situación real que me ha tocado resolver, hacer unos días en el trabajo.
Historia de un caso real Todo empieza una mañana cuando un test que empieza a fallar sin motivo aparente.</description></item><item><title>Test E2E en Python con Playwright</title><link>https://pmareke.com/posts/playwright/</link><pubDate>Tue, 14 Nov 2023 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/playwright/</guid><description>Hace unos días tuve que configurar Playwright para ejecutar unos tests E2E en Python y me dio bastante dolor de cabeza. Así que para que no me pase más, hoy os cuento como lo hice.
¿Qué es Playwright? Playwright es una librería de testing pensada para hacer pruebas end-to-end en las que es necesario el uso de un navegador. Si llevas tiempo en el mundo del desarrollo es fácil que te hayas cruzado con Cypress, pues Playwright viene a ser la competencia.</description></item><item><title>Usar Enums en Python</title><link>https://pmareke.com/posts/python-enums/</link><pubDate>Sun, 12 Nov 2023 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/python-enums/</guid><description>Hace tiempo hablé en otra entrada sobre las ventajas de evitar el uso de primitivos en nuestro código. En aquel momento propuse la creación de clases hoy en cambio vamos a ver otra alternativa, los Enums.
El concepto Enum en Python A diferencia de otros lenguajes, en Python no existe como tal el concepto de Enum tradicional.
En Python un Enum no es ni más ni menos que una clase que permite definir una serie de constantes a las que se les asigna un nombre y un valor.</description></item><item><title>Implementar una caché de tipo LRU</title><link>https://pmareke.com/posts/lru-cache/</link><pubDate>Tue, 24 Oct 2023 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/lru-cache/</guid><description>Uno de los ejercicios más habituales durante los procesos de selección es implementar una caché. Hoy vamos a ver un par de formas posibles de hacerlo!.
¿Qué es un caché de tipo LRU? LRU son las siglas the Least recently used o lo que es lo mismo Menos Usado Recientemente.
Es una caché que se caracteriza por tener una capacidad máxima donde se borran los elementos más antiguos cuando se llena, generando así espacio para nuevos elementos dentro de la misma.</description></item><item><title>Cómo desarrollé mi juego de banderas</title><link>https://pmareke.com/posts/how-to-build-a-game/</link><pubDate>Thu, 19 Oct 2023 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/how-to-build-a-game/</guid><description>Recuerdo perfectamente jugar de pequeño a adivinar las capitales y los países por sus banderas, podía pasarme horas jugando y tratando de batir mi propio récord.
¿De dónde nace la idea del juego? Desde que me dedico al desarrollo siempre he tenido pendiente hacer mi propio juego de banderas, no fue hasta que me crucé con una API de países cuando me plantee en serio llevar esta idea a algo material.</description></item><item><title>Desarrollar debería ser divertido!</title><link>https://pmareke.com/posts/coding-should-be-fun/</link><pubDate>Sat, 30 Sep 2023 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/coding-should-be-fun/</guid><description>Hoy me gustaría hablar de Ruby, un lenguaje de programación con el que nunca he tenido la suerte de trabajar profesionalmente, pero al que siempre he estado vinculado. Se caracteriza por estar diseñado y pensando por y para la persona que desarrolla, lo que hace de él unos de los lenguajes más divertidos, si no el que más.
¿Qué es Ruby? Por dar un poco de contexto y como se puede encontrar fácilmente por internet:</description></item><item><title>Bilbostack 2023, mi primer evento presencial</title><link>https://pmareke.com/posts/bilbostack-2023/</link><pubDate>Sun, 29 Jan 2023 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/bilbostack-2023/</guid><description>Bilbostack 2023 Este pasado fin de semana tuvo lugar la 11ª edición de la Bilbostack, una conferencia sobre tecnología celebrada en Bilbao. Cuando a finales del año pasado me enteré de que había un evento tan cerca de casa y en una ciudad que para mi mujer y para mí ya es como nuestra segunda casa, no dude ni un segundo en comprar la entrada.
Meses después cuando salió la agenda y vi que había 7 mujeres de 9 ponentes ya no me quedó duda de que no era un evento más.</description></item><item><title>Diseño incremental usando Ports&amp;Adapters</title><link>https://pmareke.com/posts/incremental-design/</link><pubDate>Thu, 26 Jan 2023 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/incremental-design/</guid><description>El diseño incremental es una forma de trabajar que nos va a permitir ir añadiendo nueva funcionalidad a nuestras aplicaciones de forma progresiva. Introducir estas nuevas funcionalidades puede llegar a ser un dolor enorme para el equipo, si esto es sinónimo de muchos cambios.
Para solucionar esta problemática existe un patrón de arquitectura denominado Ports and Adapters que nos permitirá introducir estos cambios de forma casi transparente.
Porque usar Ports &amp;amp; Adapters?</description></item><item><title>¿Qué son las D.O.R.A metrics?</title><link>https://pmareke.com/posts/dora-metrics/</link><pubDate>Sun, 08 Jan 2023 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/dora-metrics/</guid><description>¿Alguna vez has oído hablar de las D.O.R.A metrics? En los últimos años es un tema cada vez más relevante dentro del sector I.T por lo que me gustaría hablaros sobre ellas.
¿Qué son las D.O.R.A metrics? D.O.R.A es el acrónimo de DevOps Research and Assessment un grupo de investigación de Google. Dicho grupo ha definido unas métricas que permiten a los equipos medir y analizar su rendimiento, con ellas en la mano los equipos serán capaces de tomar una serie de medidas tratando de mejorar su rendimiento.</description></item><item><title>Cómo mejorar la experiencia de desarrollo usando Docker</title><link>https://pmareke.com/posts/dockerize-python-app/</link><pubDate>Sat, 17 Dec 2022 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/dockerize-python-app/</guid><description>¿Cuándo fue la última vez que cambiaste de trabajo o de portátil y tuviste que perder horas de tu tiempo instalando todo otra vez? Seguro que no hace mucho. Hoy me gustaría hablar de como usar Docker para que este proceso no sea necesario y de paso lograr que la experiencia de desarrollo sea mucho mejor.
Introducción Es muy habitual (y no lo digo como una crítica, ya que yo he estado ahí muchas veces) que dentro de un equipo no se dedique mucho tiempo a preparar un entorno donde ejecutar la aplicación de forma rápida y sencilla.</description></item><item><title>Advent of Code - Días 1 a 5</title><link>https://pmareke.com/posts/advent-5/</link><pubDate>Mon, 05 Dec 2022 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/advent-5/</guid><description>Un año más llega el 1 de Diciembre y con él el Advent of Code. Después de pasar los primeros cinco días toca hacer un poco de resumen.
Día 1: Calorie Counting Los primeros días son los más fáciles con diferencia, sirven para coger un poco de inercia e ir entrando en la historia.
Este año la primera parte del problema tenía como principal dificultad saber parsear el fichero de entrada donde las líneas en blanco nos hacían de separador entre bloques de datos.</description></item><item><title>¿Qué son para mí los tests unitarios? ¿Y los tests de integración?</title><link>https://pmareke.com/posts/units-integration-tests/</link><pubDate>Sun, 04 Dec 2022 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/units-integration-tests/</guid><description>Ya son varias las ocasiones en las que sale a relucir el término test unitario en alguna conversación y me llama la atención que no todos llamamos unitario a lo mismo. Por ello me gustaría hablar de lo que son para mí los tests unitarios a día de hoy y porque creo que es la definición para describirlos.
Definición clásica de tests unitarios e integración La definición clásica de tests unitarios es que son tests que testean una unidad, entendiendo como unidad normalmente un método o una clase.</description></item><item><title>Como desacoplar usando inyección de dependencias</title><link>https://pmareke.com/posts/dependency-injection/</link><pubDate>Wed, 30 Nov 2022 17:00:00 +0200</pubDate><guid>https://pmareke.com/posts/dependency-injection/</guid><description>El otro día publicaba un tweet a raíz de un refactor que hice un código digamos &amp;ldquo;mejorable&amp;rdquo;, que yo mismo había escrito días atrás xD, y me gustaría hablar sobre ello.
¿Qué es la inyección de dependencias y porque debemos usarla? La inyección de dependencias es un patrón de diseño en el que los colaboradores que necesita una clase para funcionar no son creados internamente, sino que son suministrados desde fuera vía constructor.</description></item><item><title>Los "problemas" de no trabajar con primitivos</title><link>https://pmareke.com/posts/problems-with-non-primitives/</link><pubDate>Sun, 27 Nov 2022 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/problems-with-non-primitives/</guid><description>Hoy os quiero hablar de una situación que viví el otro día cuando haciendo un refactor quise dejar de usar primitivos y los problemas que esto me causo.
¿Por qué debemos evitar usar primitivos? Existe un smell llamado Primitive Obsession el cual consiste en utilizar primitivos para representar conceptos que no lo son en absoluto. Los ejemplos más habituales son utilizar un string para representar un número de teléfono o un entero para representar un precio.</description></item><item><title>Object Mother, mas allá de los Builders</title><link>https://pmareke.com/posts/object-mother/</link><pubDate>Fri, 25 Nov 2022 10:00:00 +0200</pubDate><guid>https://pmareke.com/posts/object-mother/</guid><description>Hace unas semanas os hablé sobre los builders y como estos nos servían para simplificar significativamente nuestros tests. Hoy iremos un paso más allá usando el concepto Object Mother.
Que es una Object Mother? La primera vez que leí acerca de las Object Mother fue en este articulo de Martin Fowler.
En él explica que estas Object Mother son clases que nos permiten crear ejemplos de nuestras clases con un comportamiento predefinido.</description></item><item><title>NeoVim tu IDE para Python</title><link>https://pmareke.com/posts/neovim-as-ide/</link><pubDate>Thu, 24 Nov 2022 17:00:00 +0200</pubDate><guid>https://pmareke.com/posts/neovim-as-ide/</guid><description>Hace tiempo publiqué un post sobre como refactorizar Python usando Vim, hoy quiero ir un paso más allá y contaros como convertir a NeoVim en un IDE si usas Python.
Que es un IDE para mi Si esperas encontrar aquí un remplazo absoluto a otros IDEs como VSCode o Intellij siento decirte que este post no es para ti.
Lo primero de todo es definir que es para mi un IDE, ya que el concepto puede diferir mucho en función de a quien preguntes.</description></item><item><title>Mejora tus tests usando Builders</title><link>https://pmareke.com/posts/builders-to-the-rescue/</link><pubDate>Tue, 15 Nov 2022 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/builders-to-the-rescue/</guid><description>¿Alguna vez has tenido que cambiar multitud de tests después de añadir una propiedad en una clase? Si es así tengo malas noticias para ti, posiblemente tus tests no están bien hechos. ¡Por suerte hoy vamos a ver como solucionarlo!
Smell en los tests Por simplicidad vamos a asumir que estamos trabajando en una arquitectura en capas con el patrón CQRS, usando implementaciones en lugar de interfaces. Si quieres pararte aquí y echarle un ojo a todos estos conceptos te dejo un repo de ejemplo.</description></item><item><title>Poetry: Adiós a los malditos entornos virtuales</title><link>https://pmareke.com/posts/poetry/</link><pubDate>Tue, 01 Nov 2022 17:00:00 +0100</pubDate><guid>https://pmareke.com/posts/poetry/</guid><description>Históricamente en el mundo Python uno de los mayores dolores de cabeza ha sido la creación y gestión de entornos virtuales para poder controlar qué versión de Python ejecutar e instalar nuestras dependencias. Por suerte esto es cosa del pasado gracias a herramientas como Poetry.
¿Qué es Poetry? Poetry es una herramienta para manejar y controlar las dependencias de nuestro proyecto. Muy similar a npm, Poetry nos va a generar un fichero poetry.</description></item><item><title>Cómo montar un blog en 3 sencillos pasos</title><link>https://pmareke.com/posts/how-to-create-a-blog/</link><pubDate>Sun, 30 Oct 2022 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/how-to-create-a-blog/</guid><description>Estos dias a raiz de un tweet de Victor cai en la cuenta de que no habia dejado por escrito (para mi yo del futuro) como había montado este blog. Y dado que me ha dado cero problemas desde que lo monte me vendría bien refrescar como lo había hecho.
Infraestructura Hace mucho tiempo que tome la decisión de usar una web estática tanto para mi web, como para mi blog.</description></item><item><title>Genéricos y tipos custom en Python</title><link>https://pmareke.com/posts/generics/</link><pubDate>Thu, 20 Oct 2022 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/generics/</guid><description>Durante mucho tiempo he trabajado con Typescript lo que evidentemente ha condicionado mis opiniones en cuanto al uso o no de lenguajes tipados. Hoy os quiero hablar de como poder usar genéricos y tipos custom en Python para mejorar la robustez de nuestro código.
Genéricos La existencia de genéricos en un lenguaje siempre es un tema de debate, hace bien poco se introdujeron en Go y la polémica estuvo servida.</description></item><item><title>El arte de posponer</title><link>https://pmareke.com/posts/the-art-of-postpone/</link><pubDate>Sat, 15 Oct 2022 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/the-art-of-postpone/</guid><description>El tema sobre el que os voy a hablar hoy no es nada que yo haya inventado ni mucho menos, simplemente quiero contar mi punto de vista después de vivir una experiencia que sin duda cambiaria mi forma de trabajar en el futuro.
Nos gusta complicarnos la vida El mundo del desarrollo es un sector al que le gusta complicarse la vida cuando es necesario solucionar un problema para cubrir una necesidad.</description></item><item><title>Recursos interesantes Q2/Q3 2022</title><link>https://pmareke.com/posts/useful-links-q2-q3/</link><pubDate>Mon, 26 Sep 2022 10:00:00 +0200</pubDate><guid>https://pmareke.com/posts/useful-links-q2-q3/</guid><description>Listado de libros, artículos y videos recomendados para el Q2 y Q3 del año.
Testing Artículos: TDD Guided by ZOMBIES Videos: Sandi Metz - Magic Tricks of Testing. Outside In TDD YOW! Singapore 2017 Gojko Adzic - Snow White and the 777.777.777 Dwarfs The Well-Balanced Programmer TDD in Hexagonal Architecture and Clean Architecture The Limited Red Society Testing and Refactoring Legacy Code TDD, Where Did It All Go Wrong DRY vs DAMP: Artículos: DRY and DAMP in Tests Testing: DAMP vs DRY Testing on the Toilet: Tests Too DRY?</description></item><item><title>Cómo reducir el tiempo ejecución de nuestros tests</title><link>https://pmareke.com/posts/improve-python-testing-suite/</link><pubDate>Thu, 22 Sep 2022 00:00:00 +0200</pubDate><guid>https://pmareke.com/posts/improve-python-testing-suite/</guid><description>Si tienes la &amp;ldquo;suerte&amp;rdquo; (y espero que así sea!) de trabajar, o haber trabajado, en un sitio donde el testing es considerado ciudadano de primera seguro que habrás tenido que mantener una suite de cientos de tests que de manera progresiva y sutil tardan cada vez más.
Hoy quiero hablaros de un par de estrategias para mejorar este tiempo de ejecución en nuestros tests.
Cómo reducir el tiempo ejecución de nuestros tests Hoy en este post me gustaría hablaros de un par de estrategias para conseguir reducir el tiempo que tardan en pasar nuestros tests utilizando un par de estrategias diferentes:</description></item><item><title>BDD (Behavior-Driven Development) en Python</title><link>https://pmareke.com/posts/bdd-in-python/</link><pubDate>Sat, 10 Sep 2022 00:00:00 +0200</pubDate><guid>https://pmareke.com/posts/bdd-in-python/</guid><description>Estamos acostumbrados a diseñar nuestros tests desde un punto de vista puramente técnico, pero esta no es la única manera posible. Utilizando un lenguaje más natural y usando un punto de vista más de negocio nos permitirá involucrar a más gente en el desarrollo de los mismos (project managers, support, etc.).
Hoy quiero mostraros como hacer BDD en Python y ver que ventajas nos aporta.
¿Qué es BDD? BDD, cuyas siglas significan Behavior-Driven Development, es una técnica de diseño y desarrollo derivada de TDD (Test-Driven Development) lo que tiene ciertas implicaciones como:</description></item><item><title>Refactoring con Vim</title><link>https://pmareke.com/posts/vim-python-refactor/</link><pubDate>Wed, 07 Sep 2022 10:00:00 +0200</pubDate><guid>https://pmareke.com/posts/vim-python-refactor/</guid><description>Hace ya unos cuantos años que uso Vim como mi editor para mis cosas (katas, Advent of Code, etc.) pero desafortunadamente no podía decir lo mismo en lo que a trabajo se refiere.
Desde hace unas semanas he estado probando un nuevo plugin llamado RopeVim y me gustaría compartir mi experiencia con vosotros.
Introducción Vim es una de las herramientas que más utilizo en mi día a día, con el que puedo programar o lanzar los tests de forma sencilla pero siempre he echado en falta la posibilidad de aplicar técnicas más complejas como el Refactoring.</description></item><item><title>Mi experiencia estimando</title><link>https://pmareke.com/posts/estimate/</link><pubDate>Sun, 31 Jul 2022 00:00:00 +0200</pubDate><guid>https://pmareke.com/posts/estimate/</guid><description>Hoy quiero hablar sobre una práctica en el sector que no es algo por lo que a priori nos preocupamos cuando empezamos a trabajar como desarrolladores pero que es muy habitual y puede a llegar a ser muy estresante, estimar.
Descubrimiento del término &amp;ldquo;estimar&amp;rdquo; Cuando comenzamos a trabajar como desarrolladores nos surgen mil miedos como por ejemplo:
¿Seremos capaces de estar a la altura? ¿Somos suficientemente buenos? ¿Sabremos resolver los problemas que nos lleguen?</description></item><item><title>MyPy: Como hacer que Python sea un lenguaje tipado</title><link>https://pmareke.com/posts/python-mypy/</link><pubDate>Sat, 18 Jun 2022 18:00:00 +0200</pubDate><guid>https://pmareke.com/posts/python-mypy/</guid><description>Después de mucho tiempo trabajando con Typescript el cambio a Python fue duro, muy duro sobre todo en lo que a los tipos se refiere.
¿Qué es MyPy? Python es un lenguaje súper divertido y esta diversión se debe principalmente a su dinamismo, pero a su vez este dinamismo (al menos para mi parecer) tiene un gran problema y es que existirán probabilidades muy altas de que se produzcan errores en tiempo de ejecución.</description></item><item><title>Testing en Python</title><link>https://pmareke.com/posts/testing-in-python/</link><pubDate>Sun, 12 Jun 2022 08:00:00 +0200</pubDate><guid>https://pmareke.com/posts/testing-in-python/</guid><description>Hoy me gustaría hablar de como estoy trabajando en Python desde el punto de vista del testing. Primero, os contaré las dos principales alternativas para ejecutar los tests y luego entraré un poco más en detalle en como hacerlos.
Runners Existen múltiples maneras de ejecutar tests en Python pero solo me voy a centrar en las que para mí son las mejores opciones:
Mamba Mamba es un librería creada por Nestor Salceda.</description></item><item><title>Modificar listas en Python</title><link>https://pmareke.com/posts/change-list-in-python/</link><pubDate>Fri, 08 Apr 2022 19:00:00 +0200</pubDate><guid>https://pmareke.com/posts/change-list-in-python/</guid><description>Hoy estaba haciendo una kata muy sencilla donde me pedían invertir un string y tarde un rato en darme cuenta en porque no me estaba funcionando&amp;hellip;resulta que en Python hay varias formas de manipular listas.
Cómo manejar listas en Python Es importante conocer que en Python se pueden realizar ciertas acciones sobre listas, yo me voy a centrar en sort y reverse, de forma funcional e imperativa o lo que es lo mismo modificando la lista original o no.</description></item><item><title>Recursos interesantes Q1 2022</title><link>https://pmareke.com/posts/useful-links/</link><pubDate>Tue, 05 Apr 2022 10:00:00 +0200</pubDate><guid>https://pmareke.com/posts/useful-links/</guid><description>Listado de libros, artículos y videos recomendados para el primer cuarto del año.
Testing Videos: Integrated Tests Are A Scam. The 3 Types of Unit Test in TDD. TDD, Where Did It All Go Wrong, thanks @fraclipe. Libros: Test Driven Development: By Example. Artículos: The Practical Test Pyramid. On the Diverse And Fantastical Shapes of Testing. Testing: DAMP vs DRY. Writing Your F.</description></item><item><title>Cambiar de Typescript a Python en 2022</title><link>https://pmareke.com/posts/from-ts-to-python/</link><pubDate>Fri, 01 Apr 2022 18:14:00 +0200</pubDate><guid>https://pmareke.com/posts/from-ts-to-python/</guid><description>Después de más de 3 años programando todos los días en Typescript he tenido la oportunidad de cambiar mi lenguaje de trabajo principal y empezar a usar Python. Hoy tratare de explicar cómo ha sido esta transición, sus pros y sus contras, a través de una serie de puntos claves.
Testing Todas las veces que en mi vida profesional he tenido que aprender un nuevo lenguaje siempre he seguido el mismo camino, un camino que siempre empieza con la misma pregunta: &amp;quot;¿Cómo se hace testing aquí?</description></item><item><title>¿Cómo es trabajar en un entorno realmente ágil?</title><link>https://pmareke.com/posts/xp/</link><pubDate>Tue, 22 Mar 2022 18:00:00 +0200</pubDate><guid>https://pmareke.com/posts/xp/</guid><description>Como algunos ya sabréis, desde hace casi un mes estoy trabajando en una nueva empresa dentro de un equipo donde existe una cultura que no había tenido el placer de vivir en ningún otro sitio. Y digo el placer porque como os ire contando nunca he tenido una sensación tan positiva desde que me dedico a esto del software.
Mucha gente se preguntara, porque uso la coletilla de realmente cuando hablo de ágil.</description></item><item><title>Aprender a decir Adiós</title><link>https://pmareke.com/posts/say-bye/</link><pubDate>Wed, 23 Feb 2022 18:00:00 +0200</pubDate><guid>https://pmareke.com/posts/say-bye/</guid><description>Estamos acostumbrados a que sean las empresas las que nos contraten y también sean ellas las que decidan prescindir de nosotros. Por suerte a día de hoy esta tónica ha cambiado.
Con este post trataré de escribir el texto que mi yo de hace unas semanas hubiera querido leer y así evitar pasar unos días horribles
Para la gente que no me conozca después de 3 años trabajando en la misma empresa decidí que era el momento de buscar nuevos retos.</description></item><item><title>La Santa Trinidad: Prometheus + Grafana + Express</title><link>https://pmareke.com/posts/prometheus/</link><pubDate>Sat, 29 Jan 2022 10:30:00 +0200</pubDate><guid>https://pmareke.com/posts/prometheus/</guid><description>TODOS LOS CONCEPTOS AQUÍ EXPLICADOS ESTÁN REFLEJADOS EN ESTE REPOSITORIO
Introducción Una parte fundamental en el mundo del desarrollo es tener la capacidad de controlar el estado de nuestros sistemas en cualquier momento, con información clara y representada de forma concisa.
En esta entrada vamos a ver cómo medir ciertas métricas, recolectarlas y finalmente representarlas en paneles muy visuales.
Un punto clave en todo este engranaje es entender cómo y en qué sentido fluye la información.</description></item><item><title>Apache Kafka: una plataforma distribuida de transmisión de datos</title><link>https://pmareke.com/posts/kafka/</link><pubDate>Fri, 28 Jan 2022 18:30:00 +0200</pubDate><guid>https://pmareke.com/posts/kafka/</guid><description>TODOS LOS CONCEPTOS AQUÍ EXPLICADOS ESTÁN REFLEJADOS EN ESTE MONO REPO
Hasta la fecha nunca había tenido la oportunidad de trabajar con ningún sistema de colas y por suerte para mi en Seedtag hacemos un uso intensivo de este tipo de tecnologías.
Para el que no conozca Kafka, es una plataforma para el tratamiento y almacenamiento de datos en tiempo real. Simplificando mucho Kafka es una caja negra donde N productores envían datos para que M consumidores los lean.</description></item><item><title>Cómo dejar que Typescript documente tu API</title><link>https://pmareke.com/posts/tsoa/</link><pubDate>Thu, 27 Jan 2022 18:00:00 +0200</pubDate><guid>https://pmareke.com/posts/tsoa/</guid><description>TODOS LOS CONCEPTOS AQUÍ EXPLICADOS ESTÁN REFLEJADOS EN ESTE REPOSITORIO
Algunos de los que me seguís sabréis que actualmente me encuentro trabajando en Seedtag. Aquí he tenido la suerte de descubrir esta maravilla de paquete llamado TSOA el cual nos va a permitir tener nuestra API documentada y actualizada casi por arte de magia.
TSOA nos va a permitir (mediante Decoradores y los tipos de Typescript) generar una documentacion con OpenAPI (Swagger de toda la vida para los mas viejos) de forma casi automatica y con muy poco esfuerzo en nuestro controladores.</description></item><item><title>Advent JS 2021 - Dias 21 a 25</title><link>https://pmareke.com/posts/advent-js-2021-21-25/</link><pubDate>Wed, 26 Jan 2022 19:30:00 +0200</pubDate><guid>https://pmareke.com/posts/advent-js-2021-21-25/</guid><description>Día 21: &amp;ldquo;La ruta de los regalos&amp;rdquo; Dificultad: Difícil
Primer ejercicio en el que se puede utilizar el método Object.values (junto con un reduce una vez más) para obtener los valores de un mapa de forma rápida y sencilla.
La dificultad recae en el algoritmo, yo opte por almacenar el número de paquetes por step y validar que nunca había mas de la capacidad máxima.
return Object.values( trips.reduce((acc, trip) =&amp;gt; { const [items, start, end] = trip; for (let j = start; j &amp;lt; end; j++) { acc[j] = (acc[j] ?</description></item><item><title>Advent JS 2021 - Dias 16 a 20</title><link>https://pmareke.com/posts/advent-js-2021-16-20/</link><pubDate>Wed, 26 Jan 2022 19:00:00 +0200</pubDate><guid>https://pmareke.com/posts/advent-js-2021-16-20/</guid><description>Día 16: &amp;ldquo;Descrifrando los números&amp;hellip;&amp;quot; Dificultad: Fácil
Para este día la única dificultad era encontrar el algoritmo que resuelve este problema. Como se puede ver en la mayoría de mis soluciones soy bastante fan de usar reduce lo máximo posible ya que nos permite resolver sin variables intermedias y con funciones puras.
Día 17: &amp;ldquo;La locura de envias paquetes en esta época&amp;rdquo; Dificultad: Difícil
Pese a ser clasificado como difícil a mi personalmente me pareció de los más sencillos y esto pese a que hace tiempo hubiera sido imposible de resolver para mi.</description></item><item><title>Advent JS 2021 - Dias 11 a 15</title><link>https://pmareke.com/posts/advent-js-2021-11-15/</link><pubDate>Tue, 25 Jan 2022 19:00:00 +0200</pubDate><guid>https://pmareke.com/posts/advent-js-2021-11-15/</guid><description>Día 11: &amp;ldquo;¿Vale la pena la tarjeta de fidelidad?&amp;quot; Dificultad: Normal
Este era el típico ejercicio que se podría resolver por iteraciones hasta conocer el porque no merecía la pena la tarjeta. Pero lo realmente interesante era darse cuenta que este tipo de ejercicios se pueden resolver de forma matemática y con una única operación.
La clave estaba en darse cuenta que queremos calcular el máximo valor de una serie geométrica por en el cual el coste de comprar tickets es mayor que la compra de una tarjeta:</description></item><item><title>Advent JS 2021 - Dias 6 a 10</title><link>https://pmareke.com/posts/advent-js-2021-6-10/</link><pubDate>Wed, 29 Dec 2021 19:00:00 +0200</pubDate><guid>https://pmareke.com/posts/advent-js-2021-6-10/</guid><description>Día 6: &amp;ldquo;Rematando los exámenes finales&amp;rdquo; Dificultad: Normal
Primer reto en el que deberemos aplicar un algoritmo para resolverlo, en este caso sliding window. Un algoritmo bastante habitual y que simplemente nos permite recorrer una estructura de datos de forma gradual a través de un ventana, en nuestro caso una ventana de dos elementos los cuales deberán sumar un valor concreto.
function sumPairs(numbers, result) { for (let i = 0; i &amp;lt; numbers.</description></item><item><title>Advent JS 2021 - Dias 1 a 5</title><link>https://pmareke.com/posts/advent-js-2021-1-5/</link><pubDate>Tue, 28 Dec 2021 19:00:00 +0200</pubDate><guid>https://pmareke.com/posts/advent-js-2021-1-5/</guid><description>Este año se ha realizado por primera vez el AdventJS: &amp;ldquo;25 días de retos con JavaScript&amp;rdquo;, cortesía de @mimdudev, en el que desde el día 1 de Diciembre hasta el 25 del mismo mes se debe resolver un nuevo problema cada día, afrontando todo tipo de problemas desde estructuras de datos hasta recursión siempre desde un punto de vista de un desarrollador Javascript.
Una vez finalizado me gustaría hacer un repaso de los diferentes problemas y destacar los que creo que son los conceptos más importante de cada día, hoy para empezar los cinco primeros.</description></item><item><title/><link>https://pmareke.com/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pmareke.com/about/</guid><description>Hola mi nombre es Pedro López Mareque y soy un desarrollador de producto aplicando técnicas como:
eXtreme Programming (XP). Test Driven Development (TDD). Trunk Based Development (TBD). Domain Driven Design (DDD). Lean Development. Vertical Slicing. Refactoring. En este blog encontraras una mezcla de posts tecnicos y personales donde tratare de ir contando mi día a día!
Un saludo.</description></item><item><title/><link>https://pmareke.com/links/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pmareke.com/links/</guid><description>Webs de interés:
Countries Quiz. Capitals Quiz. Libros:
Learn Python with TDD Entrevistas:
Entrevista en el podcast Hablando Software - Trunk Based Development. Repositorios:
Python boilerplate. FastAPI boilerplate. Console boilerplate. Streamlit boilerplate. Notes:
RabbitMQ. Kubernetes. Terraform. Go.</description></item></channel></rss>