41554 blogs · [ { "id": "01a0d9df-601a-700f-b0d5-232176b2324b", "title": "Containers Made Software Portable. Kits Make Authority Portable.", "url": "https://mdelapenya.xyz/posts/2026-09-25-kits-make-authority-portable/", "published_at": "2026-09-25T07:00:00+00:00" }, { "id": "01a0d9df-601a-700f-b0d5-232177a48be3", "title": "YOLO Mode Can Be Safe", "url": "https://mdelapenya.xyz/posts/2026-09-23-yolo-mode-can-be-safe/", "published_at": "2026-09-23T16:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-7203039af1e6", "title": "Understanding Testcontainers: The Ryuk Reaper", "url": "https://mdelapenya.xyz/posts/2026-09-09-understanding-testcontainers-the-ryuk-reaper/", "published_at": "2026-09-09T07:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-7203043dcd22", "title": "Three Repos, One Sandbox, Two Files", "url": "https://mdelapenya.xyz/posts/2026-09-02-three-repos-one-sandbox-two-files/", "published_at": "2026-09-02T07:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-720304ac01e1", "title": "Four Agents, Four Machines, One Developer", "url": "https://mdelapenya.xyz/posts/2026-08-28-four-agents-four-machines-one-developer/", "published_at": "2026-08-28T04:11:10+00:00" }, { "id": "01a087a3-457c-7173-881f-72030518387b", "title": "Understanding Testcontainers: Session IDs", "url": "https://mdelapenya.xyz/posts/2026-08-15-understanding-testcontainers-session-ids/", "published_at": "2026-08-15T07:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-7203055803d5", "title": "Code Is a Cache", "url": "https://mdelapenya.xyz/posts/2026-08-05-code-is-a-cache/", "published_at": "2026-08-05T07:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-720305ab4bcc", "title": "Understanding Testcontainers: Testing Network Resilience with Toxiproxy", "url": "https://mdelapenya.xyz/posts/2026-07-27-understanding-testcontainers-testing-network-resilience-with-toxiproxy/", "published_at": "2026-07-27T07:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-720305d13c16", "title": "Understanding Testcontainers: Testing AWS Lambdas Locally with LocalStack", "url": "https://mdelapenya.xyz/posts/2026-07-15-understanding-testcontainers-testing-lambdas-with-localstack/", "published_at": "2026-07-15T07:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-7203067abdfa", "title": "Understanding Testcontainers: Networks", "url": "https://mdelapenya.xyz/posts/2026-07-07-understanding-testcontainers-networks/", "published_at": "2026-07-07T07:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-7203075179a0", "title": "A Year of testcontainers-go on Docker Hub", "url": "https://mdelapenya.xyz/posts/2026-06-26-a-year-of-testcontainers-go-on-docker-hub/", "published_at": "2026-06-26T07:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-720308078e8c", "title": "Understanding Testcontainers: The Module Layer", "url": "https://mdelapenya.xyz/posts/2026-06-25-understanding-testcontainers-the-module-layer/", "published_at": "2026-06-25T07:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-72030808e9bd", "title": "Understanding Testcontainers: The Lifecycle Hook System", "url": "https://mdelapenya.xyz/posts/2026-06-19-understanding-testcontainers-lifecycle-hooks/", "published_at": "2026-06-19T07:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-720308c909e2", "title": "Understanding Testcontainers: The Wait Strategy Taxonomy", "url": "https://mdelapenya.xyz/posts/2026-06-15-understanding-testcontainers-wait-strategies/", "published_at": "2026-06-15T07:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-720308c98add", "title": "Testing Helm charts with sk8s and testcontainers-go", "url": "https://mdelapenya.xyz/posts/2026-06-12-testing-helm-charts-with-sk8s-and-tc-go/", "published_at": "2026-06-12T07:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-720308ccd7c9", "title": "Understanding Testcontainers: From GenericContainer to Functional Options", "url": "https://mdelapenya.xyz/posts/2026-06-10-understanding-testcontainers-from-genericcontainer-to-functional-options/", "published_at": "2026-06-10T07:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-720308ea1567", "title": "I Sent a Message on Telegram. A Pull Request Appeared on GitHub.", "url": "https://mdelapenya.xyz/posts/2026-05-22-i-sent-a-message-on-telegram-a-pull-request-appeared-on-github/", "published_at": "2026-05-22T07:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-720309ddab72", "title": "Haciendo webs ultraligeras", "url": "https://mdelapenya.xyz/posts/2026-05-21-haciendo-webs-ultraligeras/", "published_at": "2026-05-21T07:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-72030a94f3bb", "title": "A Virtual Agent Team at Docker: How the Coding Agent Sandboxes Team Uses a Fleet of Agents to Ship Faster", "url": "https://mdelapenya.xyz/posts/2026-05-04-a-virtual-agent-team-at-docker/", "published_at": "2026-05-04T07:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-72030b05641c", "title": "My PR Has a Lawyer, a Nurse, a Detective, and a Scribe", "url": "https://mdelapenya.xyz/posts/2026-04-30-my-pr-has-a-lawyer-a-nurse-a-detective-and-a-scribe/", "published_at": "2026-04-30T07:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-72030bd8e119", "title": "A Personal AI That Reads My Bills", "url": "https://mdelapenya.xyz/posts/2026-04-27-a-personal-ai-that-reads-my-bills/", "published_at": "2026-04-27T07:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-72030beec2e0", "title": "My Daily Workflow with biomelab", "url": "https://mdelapenya.xyz/posts/2026-04-24-my-daily-workflow-with-biomelab/", "published_at": "2026-04-24T07:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-72030c952815", "title": "Por qué construí un visor de trenes en tiempo real", "url": "https://mdelapenya.xyz/posts/2026-04-22-por-que-construi-un-visor-de-trenes-en-tiempo-real/", "published_at": "2026-04-22T07:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-72030d158f8a", "title": "Building a Real App Inside a Docker Sandbox", "url": "https://mdelapenya.xyz/posts/2026-04-14-building-a-real-app-inside-a-docker-sandbox/", "published_at": "2026-04-14T07:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-72030df0bae7", "title": "Tokens Are the New AWS Account", "url": "https://mdelapenya.xyz/posts/2026-04-06-tokens-are-the-new-aws-account/", "published_at": "2026-04-06T07:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-72030e6bce04", "title": "The Seventh Tip: Testing Is What Makes Swarming Safe", "url": "https://mdelapenya.xyz/posts/2026-04-03-the-seventh-tip-testing-is-what-makes-swarming-safe/", "published_at": "2026-04-03T08:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-72030ee9bfd8", "title": "Quality Assurance vs Quality Assistance", "url": "https://mdelapenya.xyz/posts/2026-04-01-quality-assurance-vs-quality-assistance/", "published_at": "2026-04-01T08:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-72030f6d89da", "title": "Dream QA: The Manifesto I Wrote in 2019", "url": "https://mdelapenya.xyz/posts/2026-03-30-dream-qa-the-manifesto-i-wrote-in-2019/", "published_at": "2026-03-30T08:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-72030fa1a0ab", "title": "From /loop to CI: Ralph and the Level 6 Pattern", "url": "https://mdelapenya.xyz/posts/2026-03-27-from-loop-to-ci-ralph-and-the-level-6-pattern/", "published_at": "2026-03-27T08:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-72030fc1ca9b", "title": "Skills Are Roles, Not Commands", "url": "https://mdelapenya.xyz/posts/2026-03-25-skills-are-roles-not-commands/", "published_at": "2026-03-25T08:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-7203107e76c9", "title": "Level 5 in Practice: Four Agents, Four Worktrees, One Developer", "url": "https://mdelapenya.xyz/posts/2026-03-23-level-5-in-practice-four-agents-four-worktrees-one-developer/", "published_at": "2026-03-23T08:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-72031168476c", "title": "gwaim: The Tool That Level 5 Needed", "url": "https://mdelapenya.xyz/posts/2026-03-21-gwaim-the-tool-that-level-5-needed/", "published_at": "2026-03-21T08:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-720311a43bd0", "title": "My Agentic Coding Stack: Why the IDE Matters Less Than You Think", "url": "https://mdelapenya.xyz/posts/2026-03-20-my-agentic-coding-stack/", "published_at": "2026-03-20T08:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-7203124219e7", "title": "The Six Levels of AI-Assisted Development", "url": "https://mdelapenya.xyz/posts/2026-03-18-the-six-levels-of-ai-assisted-development/", "published_at": "2026-03-18T08:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-7203128d4a5e", "title": "Subscriptions: From Idea to Testcontainers Module", "url": "https://mdelapenya.xyz/posts/2026-03-16-subscriptions-from-idea-to-testcontainers-module/", "published_at": "2026-03-16T08:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-7203131f94ef", "title": "Choosing a Terminal for Agentic Development", "url": "https://mdelapenya.xyz/posts/2026-03-13-choosing-a-terminal-for-agentic-development/", "published_at": "2026-03-13T08:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-7203135864bd", "title": "Coding Agents as Exploratory Testers", "url": "https://mdelapenya.xyz/posts/2026-03-11-coding-agents-as-exploratory-testers/", "published_at": "2026-03-11T08:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-7203141f4f91", "title": "Choosing the Smallest LLM That Won't Completely Fail You (Part IV): Observability with OpenTelemetry and Grafana", "url": "https://mdelapenya.xyz/posts/2026-03-09-choosing-the-smallest-llm-part-4-observability-with-otel-and-grafana/", "published_at": "2026-03-09T08:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-7203145e8678", "title": "I Removed the Friction. Now I Write Every Other Day.", "url": "https://mdelapenya.xyz/posts/2026-03-07-i-removed-the-friction-now-i-write-every-other-day/", "published_at": "2026-03-07T08:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-720314cd976f", "title": "Choosing the Smallest LLM That Won't Completely Fail You (Part III): Evaluator Agent and Tool Calling", "url": "https://mdelapenya.xyz/posts/2026-03-06-choosing-the-smallest-llm-part-3-evaluator-agent-and-tool-calling/", "published_at": "2026-03-06T08:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-72031517b9f6", "title": "Choosing the Smallest LLM That Won't Completely Fail You (Part II): Benchmarking with Go", "url": "https://mdelapenya.xyz/posts/2026-03-04-choosing-the-smallest-llm-part-2-benchmarking-with-go/", "published_at": "2026-03-04T08:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-720316158ede", "title": "Choosing the Smallest LLM That Won't Completely Fail You (Part I): SLMs and Docker Model Runner", "url": "https://mdelapenya.xyz/posts/2026-03-02-choosing-the-smallest-llm-part-1-slms-and-docker-model-runner/", "published_at": "2026-03-02T08:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-720316d8ac85", "title": "Spec-Driven Development: Is This the New BDD?", "url": "https://mdelapenya.xyz/posts/2026-02-26-spec-driven-development-bdd-agents/", "published_at": "2026-02-26T08:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-7203177d8332", "title": "Parallel Coding Agents with Docker Sandboxes and Git Worktrees", "url": "https://mdelapenya.xyz/posts/2026-02-25-coding-agents-docker-sandboxes-parallel-workflows/", "published_at": "2026-02-25T08:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-720317e1c634", "title": "Coding with AI Agents: Like Driving a Tesla on Autopilot", "url": "https://mdelapenya.xyz/posts/2026-02-24-coding-with-agents-like-tesla-autopilot/", "published_at": "2026-02-24T08:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-7202f649acaa", "title": "A Tale of Two Diagnostics: AI vs. Traditional Troubleshooting", "url": "https://mdelapenya.xyz/posts/2026-01-14-ai-diagnostics-ev-charger/", "published_at": "2026-01-14T08:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-720302fd413d", "title": "From Hours to Minutes: How Dotfiles Changed My Laptop Migration Strategy", "url": "https://mdelapenya.xyz/posts/2025-10-28-dotfiles-laptop-migration/", "published_at": "2025-10-28T08:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-7203027d27bd", "title": "Refactoring 60 Go Modules with an AI Coding Agent: A Senior Developer's Experience", "url": "https://mdelapenya.xyz/posts/2025-10-10-coding-agents/", "published_at": "2025-10-10T08:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-720301a46e72", "title": "ContainerDays 2025, my experience", "url": "https://mdelapenya.xyz/posts/2025-09-17-containerdays/", "published_at": "2025-09-17T04:30:00+00:00" }, { "id": "01a087a3-457c-7173-881f-72030277e739", "title": "Effortless Self-Signed TLS Certificates in Go with tlscert", "url": "https://mdelapenya.xyz/posts/2025-09-02-tlscert/", "published_at": "2025-09-02T04:30:00+00:00" }, { "id": "01a087a3-457c-7173-881f-7202f734d68f", "title": "License Matters: A Hands-On Guide to Merging MIT Code into an Apache 2.0 Codebase with Full OSS Respect", "url": "https://mdelapenya.xyz/posts/2025-06-09-license-matters/", "published_at": "2025-06-09T04:30:00+00:00" }, { "id": "01a087a3-457c-7173-881f-7202f7494560", "title": "Fiber v3 + Testcontainers: Production-like Local Dev with Air", "url": "https://mdelapenya.xyz/posts/2025-05-27-gofiber-services-testcontainers/", "published_at": "2025-05-27T04:30:00+00:00" }, { "id": "01a087a3-457c-7173-881f-7202f76bad9b", "title": "Creating a Responsive Image Gallery Shortcode in Hugo", "url": "https://mdelapenya.xyz/posts/2025-03-27-creating-a-responsive-image-gallery-shortcode-in-hugo/", "published_at": "2025-03-27T04:30:00+00:00" }, { "id": "01a087a3-457c-7173-881f-7202f7a450bf", "title": "GopherCon Singapore 2025", "url": "https://mdelapenya.xyz/posts/2025-01-24-gophercon-singapore/", "published_at": "2025-01-24T01:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-7202f89d8dee", "title": "5th DevTools Day Bengaluru (Collabnix Docker Community)", "url": "https://mdelapenya.xyz/posts/2025-01-18-collabnix-bengaluru/", "published_at": "2025-01-18T03:30:00+00:00" }, { "id": "01a087a3-457c-7173-881f-7202f99059ec", "title": "Cansineando a los políticos", "url": "https://mdelapenya.xyz/posts/2020-03-16-cansineando-a-los-politicos/", "published_at": "2020-03-16T04:30:00+00:00" }, { "id": "01a087a3-457c-7173-881f-7202f9e1380c", "title": "Non-official Liferay Portal CE images on DockerHub!", "url": "https://mdelapenya.xyz/posts/2018-10-01-liferay-docker-images/", "published_at": "2018-10-01T07:16:43+00:00" }, { "id": "01a087a3-457c-7173-881f-7202fa65e893", "title": "Patrones de Diseño en la JDK", "url": "https://mdelapenya.xyz/posts/2016-02-21-patrones-jvm/", "published_at": "2016-02-21T11:50:43+00:00" }, { "id": "01a087a3-457c-7173-881f-7202fad29209", "title": "\"The plugin worked on my computer\" is not valid anymore", "url": "https://mdelapenya.xyz/posts/2015-11-01-the-plugin-worked-on-my-computer/", "published_at": "2015-11-01T07:16:43+00:00" }, { "id": "01a087a3-457c-7173-881f-7202fb81825b", "title": "Escalar la arquitectura de Jenkins", "url": "https://mdelapenya.xyz/posts/2015-07-20-escalar-la-arquitectura-de-jenkins/", "published_at": "2015-07-20T10:55:59+00:00" }, { "id": "01a087a3-457c-7173-881f-7202fc6efa01", "title": "Recomendaciones hardware para Jenkins", "url": "https://mdelapenya.xyz/posts/2015-07-08-recomendaciones-hardware-jenkins/", "published_at": "2015-07-08T04:50:43+00:00" }, { "id": "01a087a3-457c-7173-881f-7202fcff2f41", "title": "Creating a Wedding Page Using Software Engineering Best Practices", "url": "https://mdelapenya.xyz/posts/2015-06-24-creating-a-wedding-page-using-software-engineering-best-practices/", "published_at": "2015-06-24T07:16:43+00:00" }, { "id": "01a087a3-457c-7173-881f-7202fd4be808", "title": "Continuous Integration Best practices: #7 Don't Comment out Failing Tests", "url": "https://mdelapenya.xyz/posts/2014-06-07-ci-best-practice-7/", "published_at": "2014-06-07T07:16:43+00:00" }, { "id": "01a087a3-457c-7173-881f-7202fd6e142c", "title": "Continuous Integration Best practices: #6 Time-Box fixing before reverting", "url": "https://mdelapenya.xyz/posts/2014-06-06-ci-best-practice-6/", "published_at": "2014-06-06T07:16:43+00:00" }, { "id": "01a087a3-457c-7173-881f-7202fe286d82", "title": "Continuous Integration Best practices: #5 Be prepared to revert", "url": "https://mdelapenya.xyz/posts/2014-06-05-ci-best-practice-5/", "published_at": "2014-06-05T07:16:43+00:00" }, { "id": "01a087a3-457c-7173-881f-7202fefb3ffa", "title": "Continuous Integration Best practices: #4 Never go home on a broken build", "url": "https://mdelapenya.xyz/posts/2014-06-04-ci-best-practice-4/", "published_at": "2014-06-04T07:16:43+00:00" }, { "id": "01a087a3-457c-7173-881f-7202ffe4df56", "title": "Continuous Integration Best practices: #3 Wait for commit tests to pass", "url": "https://mdelapenya.xyz/posts/2014-06-03-ci-best-practice-3/", "published_at": "2014-06-03T07:16:43+00:00" }, { "id": "01a087a3-457c-7173-881f-7203003c3f01", "title": "Continuous Integration Best practices: #2 Always run the tests", "url": "https://mdelapenya.xyz/posts/2014-06-02-ci-best-practice-2/", "published_at": "2014-06-02T07:16:43+00:00" }, { "id": "01a087a3-457c-7173-881f-7203011d4fe6", "title": "Continuous Integration Best practices: #1 Don't check-in on a broken build", "url": "https://mdelapenya.xyz/posts/2014-06-01-ci-best-practice-1/", "published_at": "2014-06-01T07:16:43+00:00" }, { "id": "01a087a3-457c-7173-881f-7203013f8309", "title": "Una experiencia muy personal", "url": "https://mdelapenya.xyz/posts/2012-09-15-uned/", "published_at": "2012-09-15T07:16:43+00:00" }, { "id": "01a087a3-457c-7173-881f-720301a1684c", "title": "Mi experiencia en el EVP (Employee Volunteer Plan)", "url": "https://mdelapenya.xyz/posts/2012-06-01-evp/", "published_at": "2012-06-01T07:16:43+00:00" }, { "id": "01a087a3-457c-7173-881f-7202f31e3b92", "title": "Liferay Struts Portlet y Ajax", "url": "https://mdelapenya.xyz/posts/2011-07-22-liferay-struts-portlet-y-ajax/", "published_at": "2011-07-22T06:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-7202f3baad0b", "title": "Gestión de Portales, lo que se mueve ahora", "url": "https://mdelapenya.xyz/posts/2011-06-29-gestion-de-portales-lo-que-se-mueve-ahora/", "published_at": "2011-06-29T14:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-7202f3bacd31", "title": "Integrando Liferay con BIRT", "url": "https://mdelapenya.xyz/posts/2011-05-23-integrando-liferay-con-birt/", "published_at": "2011-05-23T06:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-7202f442312c", "title": "Cómo crear un CAS en Liferay con firma digital", "url": "https://mdelapenya.xyz/posts/2011-05-12-como-crear-un-cas-en-liferay/", "published_at": "2011-05-12T06:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-7202f495ff2a", "title": "Mejora la experiencia del usuario con un framework CSS", "url": "https://mdelapenya.xyz/posts/2011-05-05-mejora-experiencia-del-usuario-con-un-framework-css/", "published_at": "2011-05-05T06:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-7202f4b0998e", "title": "Trabajando con portales Liferay", "url": "https://mdelapenya.xyz/posts/2011-05-02-trabajando-con-portales-liferay/", "published_at": "2011-05-02T06:00:00+00:00" }, { "id": "01a087a3-457c-7173-881f-7202f5af6883", "title": "Testcontainers for Go", "url": "https://mdelapenya.xyz/projects/testcontainers-go/", "published_at": null }, { "id": "01a087a3-457c-7173-881f-72031819f0e0", "title": "biomelab", "url": "https://mdelapenya.xyz/projects/biomelab/", "published_at": null }, { "id": "01a087a3-457c-7173-881f-7203190d7a51", "title": "gh combine-prs", "url": "https://mdelapenya.xyz/projects/gh-combine-prs/", "published_at": null }, { "id": "01a087a3-457c-7173-881f-720319de48cf", "title": "gitropolis", "url": "https://mdelapenya.xyz/projects/gitropolis/", "published_at": null }, { "id": "01a087a3-457c-7173-881f-72031acff217", "title": "GoFiber", "url": "https://mdelapenya.xyz/projects/gofiber/", "published_at": null }, { "id": "01a087a3-457c-7173-881f-72031b1d9cdc", "title": "jUnit2OTLP", "url": "https://mdelapenya.xyz/projects/junit2otlp/", "published_at": null }, { "id": "01a087a3-457d-737c-bc66-d595e59730d4", "title": "las porritas", "url": "https://mdelapenya.xyz/projects/lasporritas/", "published_at": null }, { "id": "01a087a3-457d-737c-bc66-d595e61b1abd", "title": "LinkedIn Learning", "url": "https://mdelapenya.xyz/projects/linkedin-learning/", "published_at": null }, { "id": "01a087a3-457d-737c-bc66-d595e683b500", "title": "renfe-maps", "url": "https://mdelapenya.xyz/projects/renfe-maps/", "published_at": null }, { "id": "01a087a3-457d-737c-bc66-d595e6d5b266", "title": "ultraligera", "url": "https://mdelapenya.xyz/projects/ultraligera/", "published_at": null }, { "id": "01a0bb92-1b73-707c-8ff8-0f78797a0612", "title": "testcontainers-game", "url": "https://mdelapenya.xyz/projects/testcontainers-game/", "published_at": null } ] posts Claim your blog
Back to mdelapenya.xyz
Blog · corpus.blog/blogs/mdelapenya.xyz/posts

mdelapenya.xyz

mdelapenya.xyz

2026

2025

2020

2018

2016

2015

2014

2012

2011

Undated