<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Manuel Almagro</title><description>Notes on integration, API design, and event-driven architecture.</description><link>https://blog.almag.ro/</link><item><title>Can n8n replace enterprise middleware?</title><link>https://blog.almag.ro/blog/can-n8n-replace-enterprise-middleware/</link><guid isPermaLink="true">https://blog.almag.ro/blog/can-n8n-replace-enterprise-middleware/</guid><description>Very good at the integrations that never justified a licence. Less so at everything else.</description><pubDate>Sat, 08 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Defining a retry policy in SAP Event Mesh</title><link>https://blog.almag.ro/blog/event-mesh-retry-policy/</link><guid isPermaLink="true">https://blog.almag.ro/blog/event-mesh-retry-policy/</guid><description>Not as straightforward as it might seem!</description><pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Automatically switching keyboard layouts based on the connected keyboard.</title><link>https://blog.almag.ro/blog/keyboard-layout-switching/</link><guid isPermaLink="true">https://blog.almag.ro/blog/keyboard-layout-switching/</guid><description>A neat Hammerspoon script that switches the keyboard layout when an external keyboard connects.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate></item><item><title>A two minute query optimization for batch processing</title><link>https://blog.almag.ro/blog/simple-query-optimization-for-integration/</link><guid isPermaLink="true">https://blog.almag.ro/blog/simple-query-optimization-for-integration/</guid><description>And the maths behind it!</description><pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Two ways to work with JSON in SAP Integration Suite</title><link>https://blog.almag.ro/blog/json-two-ways/</link><guid isPermaLink="true">https://blog.almag.ro/blog/json-two-ways/</guid><description>Embrace the JSON schema.</description><pubDate>Thu, 25 Jun 2026 00:00:00 GMT</pubDate></item><item><title>A not-so-technical guide to cryptographic objects: certificates, keys &amp; PKCS12 explained.</title><link>https://blog.almag.ro/blog/cryptography-cheat-sheet/</link><guid isPermaLink="true">https://blog.almag.ro/blog/cryptography-cheat-sheet/</guid><description>All of the acronyms nobody ever explains to you in one short guide.</description><pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate></item><item><title>On Naur, vibe coding, and the people you can&apos;t replace with a context window</title><link>https://blog.almag.ro/blog/on-naur-vibe-coding/</link><guid isPermaLink="true">https://blog.almag.ro/blog/on-naur-vibe-coding/</guid><description>Notes on a fringe paper written some decades ago that feels surprisingly current.</description><pubDate>Tue, 28 Apr 2026 00:00:00 GMT</pubDate></item><item><title>SOAP Blueprint, or How I Learned to Stop Worrying and Love WSDLs</title><link>https://blog.almag.ro/blog/soap-blueprint/</link><guid isPermaLink="true">https://blog.almag.ro/blog/soap-blueprint/</guid><description>Generating WSDLs that SAP actually accepts, without writing XML by hand.</description><pubDate>Mon, 13 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Stop asking, start listening: a case for event-driven database integration</title><link>https://blog.almag.ro/blog/case-for-event-driven/</link><guid isPermaLink="true">https://blog.almag.ro/blog/case-for-event-driven/</guid><description>Change Data Capture with Debezium, Kafka and Event Mesh, built from scratch.</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Automatic AS-IS reports in SAP Integration Suite.</title><link>https://blog.almag.ro/blog/integration-suite-explorer/</link><guid isPermaLink="true">https://blog.almag.ro/blog/integration-suite-explorer/</guid><description>Turning a pile of integration package ZIPs into an as-is landscape report.</description><pubDate>Fri, 17 Oct 2025 00:00:00 GMT</pubDate></item><item><title>Storing structured data in SAP Integration Suite exchange properties</title><link>https://blog.almag.ro/blog/structured-data-sap/</link><guid isPermaLink="true">https://blog.almag.ro/blog/structured-data-sap/</guid><description>Exchange properties can hold maps and lists, not just strings.</description><pubDate>Mon, 23 Jun 2025 00:00:00 GMT</pubDate></item><item><title>Where is that plane going? A shortcut for plane-spotters</title><link>https://blog.almag.ro/blog/where-plane/</link><guid isPermaLink="true">https://blog.almag.ro/blog/where-plane/</guid><description>One tap on your phone to find out where the plane above you is going.</description><pubDate>Mon, 26 May 2025 00:00:00 GMT</pubDate></item><item><title>On using wrong tools</title><link>https://blog.almag.ro/blog/wrong-tools/</link><guid isPermaLink="true">https://blog.almag.ro/blog/wrong-tools/</guid><description>On solving problems with the wrong language, on purpose, and having fun.</description><pubDate>Sun, 29 Sep 2024 00:00:00 GMT</pubDate></item><item><title>Some useful customizations for macOS.</title><link>https://blog.almag.ro/blog/macos-customizations/</link><guid isPermaLink="true">https://blog.almag.ro/blog/macos-customizations/</guid><description>A handful of small fixes for the things macOS gets slightly wrong.</description><pubDate>Tue, 14 May 2024 00:00:00 GMT</pubDate></item><item><title>PAULA: Protein Analysis Using a Least-squares Approach</title><link>https://blog.almag.ro/blog/paula/</link><guid isPermaLink="true">https://blog.almag.ro/blog/paula/</guid><description>A least-squares protein analysis tool, born out of a very bad webpage.</description><pubDate>Tue, 28 Jun 2022 00:00:00 GMT</pubDate></item><item><title>Exporting your FilmAffinity profile to a .csv file using R.</title><link>https://blog.almag.ro/blog/export-filmaffinity/</link><guid isPermaLink="true">https://blog.almag.ro/blog/export-filmaffinity/</guid><description>Scraping seven years of ratings into a Letterboxd-compatible .csv.</description><pubDate>Wed, 05 Aug 2020 00:00:00 GMT</pubDate></item><item><title>Happy p**R**ide!</title><link>https://blog.almag.ro/blog/pride/</link><guid isPermaLink="true">https://blog.almag.ro/blog/pride/</guid><description>The pride flag in one (long) line of R.</description><pubDate>Mon, 29 Jun 2020 00:00:00 GMT</pubDate></item><item><title>Making animations in R.</title><link>https://blog.almag.ro/blog/animations-r/</link><guid isPermaLink="true">https://blog.almag.ro/blog/animations-r/</guid><description>Building a .gif from scratch in R, one frame at a time.</description><pubDate>Sat, 11 Apr 2020 00:00:00 GMT</pubDate></item><item><title>The Game of Life</title><link>https://blog.almag.ro/blog/game-of-life/</link><guid isPermaLink="true">https://blog.almag.ro/blog/game-of-life/</guid><description>Two coffees, one accidentally skipped class, and a working Game of Life.</description><pubDate>Wed, 01 Apr 2020 00:00:00 GMT</pubDate></item><item><title>Newtonian mechanics and Verlet integration.</title><link>https://blog.almag.ro/blog/verlet/</link><guid isPermaLink="true">https://blog.almag.ro/blog/verlet/</guid><description>Pendulums, elastic collisions and the Solar System, one timestep at a time.</description><pubDate>Wed, 25 Mar 2020 00:00:00 GMT</pubDate></item><item><title>Studying emoji usage through geolocation.</title><link>https://blog.almag.ro/blog/emoji-heatmap/</link><guid isPermaLink="true">https://blog.almag.ro/blog/emoji-heatmap/</guid><description>Mining 32.000 tweets to see if Andalusian pride shows up as Nigerian flags.</description><pubDate>Mon, 02 Mar 2020 00:00:00 GMT</pubDate></item></channel></rss>