# ProstDev > ProstDev — where MuleSoft mastery meets fun. Easy-to-follow video tutorials, AI experiments, and deep-dive articles on MuleSoft, DataWeave, Anypoint Code Builder, and integration. ProstDev is a MuleSoft education project by Alex Martinez. The primary content is YouTube video tutorials; blog posts provide written, in-depth companions. Each video and post has a machine-readable Markdown version (append `.md` to its URL). ## Video series ### AI Showdown: MuleSoft Edition (2026) - [Claude Code vs CurieTech AI: Solving Advent of Code 2025 Days 1 & 2 in DataWeave (MuleSoft)](https://prostdev.com/video/claude-code-vs-curietech-advent-of-code-dataweave): Two AI coding tools go head-to-head solving Advent of Code 2025 in DataWeave. Who writes cleaner, faster MuleSoft transformations — Claude Code or CurieTech AI? ### Learn Anypoint Code Builder (ACB) - [Why You Should Start Using Anypoint Code Builder (Even If You Love Studio)](https://prostdev.com/video/why-start-using-anypoint-code-builder): An honest look at why Studio developers should give Anypoint Code Builder a try — what's better, what's different, and what to expect. - [Getting Started with MuleSoft Anypoint Code Builder (ACB) in VS Code | Beginner Setup + Hello World](https://prostdev.com/video/getting-started-acb-vscode-hello-world): Install Anypoint Code Builder in VS Code and build your first "Hello World" Mule app from scratch. - [How to Design a REST API in Anypoint Code Builder (OpenAPI + VS Code + Exchange) (Part 1)](https://prostdev.com/video/design-rest-api-acb-openapi): Design a REST API spec using OpenAPI inside Anypoint Code Builder and publish it to Exchange. - [Scaffold an API Spec in Anypoint Code Builder (ACB) + VS Code Project Tour & Tips (Part 2)](https://prostdev.com/video/scaffold-api-spec-acb-project-tour): Scaffold a Mule project from your published OpenAPI spec in Anypoint Code Builder, then tour the generated flows in both XML and UI views and run it locally. - [Apparently I Lied: How to Import JARs in Anypoint Code Builder (ACB)](https://prostdev.com/video/import-jars-anypoint-code-builder): A correction to an earlier video — you actually CAN import a JAR into ACB. Export a deployable archive from Studio, then import it as a fresh ACB project. - [Start Implementing APIs in Anypoint Code Builder (ACB) with MySQL + Docker (Part 3)](https://prostdev.com/video/implementing-apis-acb-mysql-docker): Start implementing your scaffolded API in ACB: spin up a MySQL database in Docker and build the GET-all-tasks flow with DataWeave-generated SQL. - [MuleSoft Anypoint Code Builder (ACB) Full CRUD Tutorial | MySQL + Docker + Debugging (Part 4)](https://prostdev.com/video/acb-full-crud-mysql-docker-debugging): Build a complete CRUD REST API in Anypoint Code Builder backed by MySQL running in Docker, then debug it locally. - [Handling 404 Errors in MuleSoft's Anypoint Code Builder (ACB) | Choice + Raise Error (Part 5)](https://prostdev.com/video/handling-404-errors-acb-choice-raise-error): Add robust error handling to your ACB API: use the Choice router and Raise Error to return clean 404 responses when a resource is not found. ### Adventures in MuleSoft + AI (2025) - [Can AI Build MuleSoft Apps? Cursor AI + Anypoint Code Builder Test Drive](https://prostdev.com/video/cursor-ai-acb-build-mulesoft-apps-test-drive): Putting Cursor AI together with Anypoint Code Builder to see whether an AI editor can actually build a working MuleSoft app. - [Can Cursor AI Recreate a MuleSoft Project Using Best Practices? (Spoiler: Not Really)](https://prostdev.com/video/cursor-ai-recreate-mulesoft-project-best-practices): Asking Cursor AI to rebuild a MuleSoft project following best practices — and seeing where it falls short without guidance. - [Teaching Cursor AI Best Practices for MuleSoft with Rules (Big Improvement!)](https://prostdev.com/video/teaching-cursor-ai-mulesoft-best-practices-rules): Using Cursor rules to teach the AI MuleSoft best practices — and the big jump in code quality that results. - [CurieTech AI vs Real-World DataWeave Challenges – Did It Deliver?](https://prostdev.com/video/curietech-ai-real-world-dataweave-challenges): Throwing real-world DataWeave transformation challenges at CurieTech AI to see how it handles practical MuleSoft problems. - [Is CurieTech AI Smart Enough to Pick the Fastest DataWeave Code?](https://prostdev.com/video/curietech-ai-fastest-dataweave-code): Testing whether CurieTech AI can identify and generate the fastest-performing DataWeave solution among the options. - [Cursor AI vs CurieTech AI: Who Writes Better MUnit Tests for MuleSoft?](https://prostdev.com/video/cursor-vs-curietech-munit-tests-mulesoft): A head-to-head comparison of Cursor AI and CurieTech AI generating MUnit tests for a MuleSoft application. - [CurieTech AI Wrote My MuleSoft Best Practices — AND Opened a GitHub Pull Request!](https://prostdev.com/video/curietech-ai-mulesoft-best-practices-github-pr): CurieTech AI documents MuleSoft best practices and goes a step further by opening a GitHub pull request on its own. - [Testing CurieTech AI's Code Insights: Single Repo, Multi Repo, and Code Review Lens](https://prostdev.com/video/curietech-ai-code-insights-single-multi-repo-review-lens): Exploring CurieTech AI's Code Insights across a single repo, multiple repos, and its code review lens for MuleSoft projects. - [Generate OAS & RAML Specifications Instantly with CurieTech AI's API Spec Generator Agent](https://prostdev.com/video/generate-oas-raml-specs-curietech-ai-api-spec-generator): Using CurieTech AI's API Spec Generator agent to instantly produce OAS and RAML specifications for a MuleSoft API. - [I Built a Full MCP Server in 10 Minutes Using CurieTech AI -- WHAT?! | YouTube API | MuleSoft | ACB](https://prostdev.com/video/build-mcp-server-10-minutes-curietech-ai): Build a working YouTube MCP server with MuleSoft and CurieTech AI in about 10 minutes. ### MuleSoft from Start: A Beginner's Guide - [Session 0: Planning the Outline | MuleSoft from Start: A Beginner's Guide](https://prostdev.com/video/mulesoft-from-start-planning-the-outline): Kick off the beginner series by planning what we will build and learn across the MuleSoft from Start guide. - [Session 1: MuleSoft Overview | MuleSoft from Start: A Beginner's Guide](https://prostdev.com/video/mulesoft-from-start-mulesoft-overview): A high-level overview of what MuleSoft is, the Anypoint Platform, and how the pieces fit together. - [Session 2: What is an API? and API-Led Connectivity? | MuleSoft from Start: A Beginner's Guide](https://prostdev.com/video/mulesoft-from-start-what-is-an-api): Understand APIs and the API-led connectivity approach that underpins MuleSoft integration design. - [Session 3: Design an API Specification in Design Center | MuleSoft from Start: A Beginner's Guide](https://prostdev.com/video/mulesoft-from-start-design-api-specification): Design a blog REST API from scratch — write down the requirements, then build the API specification in Anypoint Platform Design Center. - [Session 4: Test & Publish the API Spec to Exchange | MuleSoft from Start: A Beginner's Guide](https://prostdev.com/video/mulesoft-from-start-test-publish-api-spec): Finish the API specification, test it with the mocking service, publish it to Exchange, and scaffold the implementation in Anypoint Studio with APIkit. - [Session 5: Develop the API in Anypoint Studio | MuleSoft from Start: A Beginner's Guide](https://prostdev.com/video/mulesoft-from-start-develop-api-anypoint-studio): Implement the API in Anypoint Studio — global elements, per-environment property files, and an Object Store-backed flow for the articles resource. - [Session 6: Debug the Mule Application in Anypoint Studio | MuleSoft from Start: A Beginner's Guide](https://prostdev.com/video/mulesoft-from-start-debug-mule-application): Refactor the Mule app into per-resource config files and subflows, then step through it with the Anypoint Studio debugger, breakpoints, and the DataWeave Playground. - [Session 7: Deploy the Mule App to CloudHub Runtime Manager | MuleSoft from Start: A Beginner's Guide](https://prostdev.com/video/mulesoft-from-start-deploy-cloudhub-runtime-manager): Deploy the finished Mule application to CloudHub from Anypoint Studio, set the environment property, and test the live API and Object Store in Runtime Manager. - [Session 8: Set up CI/CD & API Autodiscovery (API Manager) | MuleSoft from Start: A Beginner's Guide](https://prostdev.com/video/mulesoft-from-start-cicd-api-autodiscovery): Wire up a CI/CD pipeline with GitHub Actions and connect the deployed app to API Manager with API autodiscovery to secure it with a basic authentication policy. - [Session 9: Test your Mule app with MUnit testing | MuleSoft from Start: A Beginner's Guide](https://prostdev.com/video/mulesoft-from-start-munit-testing): Wrap up the series by testing the Mule application with MUnit — writing tests manually and exploring how to add them to a CI/CD pipeline. ### From Zero to API with MuleSoft, CurieTech AI & Anypoint Code Builder (2025) - [Generating an OAS API Spec with CurieTech AI | MuleSoft API Designer (Part 1)](https://prostdev.com/video/generate-oas-api-spec-curietech-ai): Let CurieTech AI generate an OpenAPI (OAS) spec for a To-Do Task Management API, then refine it in API Designer. - [Implementing the CRUD REST API in Anypoint Code Builder with CurieTech AI | MuleSoft App (Part 2)](https://prostdev.com/video/implement-crud-rest-api-acb-curietech-ai): CurieTech AI implements the full CRUD REST API in Anypoint Code Builder, wiring up the flows, MySQL database connector, and externalized properties. - [Debugging MuleSoft API with CurieTech AI & Anypoint Code Builder | Local & Postman (Part 3)](https://prostdev.com/video/debugging-mulesoft-api-curietech-ai-acb-postman): Run and debug the To-Do CRUD API locally — fixing SQL syntax with parameterized queries, the auto-increment ID, and the update flow using ACB breakpoints and Postman. - [Generating MUnit Tests for MuleSoft APIs with CurieTech AI | Test Coverage (Part 4)](https://prostdev.com/video/generate-munit-tests-mulesoft-curietech-ai): Use CurieTech AI's MUnit Test Generator to create passing tests for each flow, then merge the pull requests and push coverage toward 100%. ### MuleSoft CI/CD with GitHub Actions - [Part 1: How to set up a CI/CD pipeline to deploy your MuleSoft apps to CloudHub using GitHub Actions](https://prostdev.com/video/cicd-mulesoft-github-actions-cloudhub-deploy): Set up your first CI/CD pipeline with GitHub Actions to build and deploy a Mule application to CloudHub — split into build and deploy jobs, with Anypoint Platform credentials stored as GitHub repository secrets. - [Part 2: CI/CD pipeline with MuleSoft and GitHub Actions - secured/encrypted properties](https://prostdev.com/video/cicd-mulesoft-github-actions-encrypted-properties): Extend the CI/CD pipeline to decrypt secure properties at deploy time — store the decryption key as a GitHub secret, pass it through the Maven command, and wire it to the secure.key property in the pom.xml. - [Part 3: CI/CD pipeline with MuleSoft and GitHub Actions - MUnit testing](https://prostdev.com/video/cicd-mulesoft-github-actions-munit-testing): Add a test job that runs your MUnit tests in the CI/CD pipeline — set up Nexus Enterprise credentials as GitHub secrets and a .maven/settings.xml so the build can resolve the MuleSoft EE repository. - [Part 4: CI/CD pipeline with MuleSoft and GitHub Actions - MUnit minimum coverage percentage](https://prostdev.com/video/cicd-mulesoft-github-actions-munit-coverage): Enforce a minimum MUnit coverage percentage in the pipeline — configure failBuild and required coverage in the pom.xml, and upload the MUnit coverage reports as workflow artifacts. - [Part 5: CI/CD pipeline with MuleSoft and GitHub Actions - Enabling MFA through a Connected App](https://prostdev.com/video/cicd-mulesoft-github-actions-connected-app-mfa): Authenticate the pipeline with a Connected App instead of a username/password so it works with MFA-enabled Enterprise accounts — create the app and scopes in Access Management, then wire its client ID and secret through GitHub secrets and the pom.xml. - [Part 6: CI/CD pipeline with MuleSoft and GitHub Actions - Deploying to CloudHub 2.0](https://prostdev.com/video/cicd-mulesoft-github-actions-cloudhub-2): Deploy a Mule application to CloudHub 2.0 with GitHub Actions — configure the pom.xml for CloudHub 2.0, publish to Exchange, and authenticate with a Connected App via a Maven settings.xml. ### Data Cloud + MuleSoft Integration - [Data Cloud/MuleSoft Integration Part 1: Connected App, Ingestion API, & Data Stream (Salesforce)](https://prostdev.com/video/datacloud-mulesoft-connected-app-ingestion-api-data-stream): Set up everything Salesforce Data Cloud needs before the MuleSoft integration — create the Connected App with CDP scopes, enable the username/password OAuth flow, configure the Ingestion API and its schema, and deploy a Data Stream. - [Data Cloud/MuleSoft Integration Part 2: Deploy your own Mule app on Anypoint Platform (CloudHub)](https://prostdev.com/video/datacloud-mulesoft-deploy-mule-app-cloudhub): No MuleSoft experience needed — download the prebuilt integration JAR and deploy it to CloudHub 2.0 from Runtime Manager, set the Salesforce/CDP credentials as protected properties, and grab the public endpoint URL. - [Data Cloud/MuleSoft Integration Part 3: Call your integration with Postman](https://prostdev.com/video/datacloud-mulesoft-call-integration-postman): Use the provided Postman collection to call the integration — generate a Data Cloud schema, run SOQL queries, and insert and delete records in Salesforce Data Cloud through the deployed Mule app. - [Data Cloud/MuleSoft Integration Part 4: Secure your API with basic authentication in API Manager](https://prostdev.com/video/datacloud-mulesoft-secure-api-basic-auth-api-manager): Lock down the public endpoint with a basic authentication policy in API Manager — no code required. Create the API instance, upgrade to the autodiscovery-enabled JAR, apply the policy, and update the Postman collection with credentials. - [How to manually authenticate to Salesforce Data Cloud through a MuleSoft integration](https://prostdev.com/video/manually-authenticate-salesforce-data-cloud-mulesoft): When a Data Cloud connector operation is missing, do the auth by hand: authenticate to Salesforce first, exchange that token for a Data Cloud token, then call the Data Cloud API — built and debugged in Anypoint Code Builder. - [Data Cloud/MuleSoft Integration Part 5: Insert Data with the BULK operations](https://prostdev.com/video/datacloud-mulesoft-insert-data-bulk-operations): Get past the 200-record streaming limit by inserting data into Salesforce Data Cloud with the bulk operations — covering the updates made to the integration since Part 3. ### DataWeave Challenges - [DataWeave programming challenge #1: Add numbers separated by paragraphs and get the max number](https://prostdev.com/video/dataweave-challenge-1-add-numbers-paragraphs-max): Sum the numbers within each paragraph of a text input, then return the largest paragraph total — all in DataWeave. Clues and full solutions are in the companion article. - [DataWeave programming challenge #2: Rock Paper Scissors game score system](https://prostdev.com/video/dataweave-challenge-2-rock-paper-scissors-score): Score a series of Rock Paper Scissors rounds in DataWeave — 0 for a loss, 3 for a draw, 6 for a win — and total it out of 30. Clues and full solutions are in the companion article. - [DataWeave programming challenge #3: Count palindrome phrases using the Strings module](https://prostdev.com/video/dataweave-challenge-3-count-palindrome-phrases-strings-module): Identify which phrases are palindromes (ignoring case, spaces, and punctuation), then sum the character counts of those phrases using the DataWeave Strings module. Clues and full solutions are in the companion article. - [DataWeave programming challenge #4: Solve the Tower of Hanoi mathematical puzzle](https://prostdev.com/video/dataweave-challenge-4-tower-of-hanoi-puzzle): Model and solve the Tower of Hanoi puzzle in DataWeave across multiple scenarios — moving disks between dynamically named towers without hard-coding their names. Clues and full solutions are in the companion article. - [DataWeave programming challenge #5: Reverse a phrase's words, but keep the punctuation](https://prostdev.com/video/dataweave-challenge-5-reverse-words-keep-punctuation): Reverse the word order of each phrase in DataWeave while leaving punctuation marks fixed in their original positions. Clues and full solutions are in the companion article. - [DataWeave programming challenge #6: Using tail-recursion to get the factorial of a number](https://prostdev.com/video/dataweave-challenge-6-tail-recursion-factorial): Write a tail-recursive DataWeave function to factorial each positive number in a list (regular recursion hits the limit), sum the results, then slice out specific digit positions as a number. Clues and full solutions are in the companion article. - [DataWeave programming challenge #7: Modify certain values from a JSON structure](https://prostdev.com/video/dataweave-challenge-7-modify-values-json-structure): Uppercase every value in a nested JSON structure in DataWeave — except the values under any "this" field — which the right built-in function makes simple. Clues and full solutions are in the companion article. - [DataWeave programming challenge #8: Sum all digits to get a 1-digit number](https://prostdev.com/video/dataweave-challenge-8-sum-digits-one-digit): Repeatedly sum the digits of a set of numbers in DataWeave until a single-digit result remains (the digital root). Clues and full solutions are in the companion article. ### Getting to the point - [Printing Hello World: Java vs. Python vs. Mule. Under 30 seconds! | Getting to the point](https://prostdev.com/video/hello-world-java-vs-python-vs-mule): A quick side-by-side of printing "Hello World" in Java, Python, and Mule — in under 30 seconds. - [3 ways to concatenate objects in DataWeave 2.0. Under 30 seconds! | Getting to the point](https://prostdev.com/video/3-ways-concatenate-objects-dataweave): Three different ways to concatenate objects in DataWeave 2.0, explained in under 30 seconds. - [Extracting digits from a string in DataWeave 2.0 using flatten, scan, joinBy. Under 30 seconds!](https://prostdev.com/video/extracting-digits-string-dataweave-flatten-scan-joinby): Extract just the digits from a string in DataWeave 2.0 by combining flatten, scan, and joinBy — in under 30 seconds. - [Match / case for literal values in DataWeave 2.0. Under 30 seconds! | Getting to the point](https://prostdev.com/video/match-case-literal-values-dataweave): Use match / case to branch on literal values in DataWeave 2.0, explained in under 30 seconds. - [Retrieving years months & days between two dates in DataWeave 2.0 using between from Periods module](https://prostdev.com/video/years-months-days-between-dates-dataweave-periods): Get the years, months, and days between two dates in DataWeave 2.0 with the between function from the Periods module — in under 30 seconds. ### Other MuleSoft videos - [Why is my Array of Strings not filtering correctly? It may be an Array of Strings and Keys instead!](https://prostdev.com/video/array-of-strings-and-keys-filtering-dataweave): When distinctBy won't filter an array correctly, the culprit may be that it holds Keys, not Strings — they look identical in JSON output. Two DataWeave 2.0 fixes: map the values and coerce Keys to Strings, or joinBy to concatenate each array into a String. - [How to upsert fields from an object in an array with the update operator in DataWeave 2.0 | Mule 4](https://prostdev.com/video/upsert-fields-object-array-update-operator-dataweave): Use the DataWeave 2.0 update operator to match an object in an array and update its fields — including the upsert (!) operator to insert a field that was not there. Plus three ways to avoid null values: a per-field conditional, a do scope, and skipNullOn. - [Interactive MuleSoft tutorial: Anypoint Platform API Catalog by Rolando Carrasco | UAPIM | Exchange](https://prostdev.com/video/interactive-tutorial-anypoint-platform-api-catalog-killercoda): A walkthrough of an interactive, browser-based MuleSoft tutorial built by Ambassador Rolando Carrasco on Killercoda — create a Connected App, install and authenticate the API Catalog CLI, introspect API specs, and publish assets to Exchange, all in a remote environment. - [Exposing DataWeave: Map+Filter vs. Reduce — which is faster?](https://prostdev.com/video/exposing-dataweave-map-filter-vs-reduce-which-is-faster): A hands-on comparison of three DataWeave 2.0 approaches to the same map-then-filter problem — map+filter, filter+map, and a single-pass reduce — benchmarked over 10,000 items. The surprising result: reduce is by far the slowest, so time your approaches before assuming. - [How to add JVM/Command-line arguments to the Mule 4 Runtime in Anypoint Code Builder (ACB)](https://prostdev.com/video/add-jvm-command-line-arguments-mule-4-runtime-anypoint-code-builder): Pass JVM or command-line arguments to the Mule Runtime inside Anypoint Code Builder by editing the "Mule Runtime: Default Arguments" setting — useful for env-separated properties files and for passing a secure/encryption key to a Mule app with secured properties. - [Anypoint Studio 7.10.0 | Notification center for new versions of connectors/modules](https://prostdev.com/video/anypoint-studio-7-10-notification-center-connector-versions): A quick look at Anypoint Studio 7.10.0's new notification center — blue dots in Manage Modules flag connectors with a newer version in Anypoint Exchange, so you can update them in a couple of clicks instead of checking the connector release notes by hand. - [What is an API? | Understanding APIs (Part 1)](https://prostdev.com/video/what-is-an-api-understanding-apis-part-1): A from-scratch explanation of what an API is: the implementation (the body), the request and response, and the four aspects every API has — inputs, operations, outputs, and data types — wrapped up with a simple diagram you can refer back to. - [5 reasons why you need an IDE](https://prostdev.com/video/5-reasons-why-you-need-an-ide): What an IDE is and five ways it saves a new developer time — syntax highlighting, text autocompletion, refactoring options, importing libraries, and one-click build/compile/run instead of memorizing console commands. - [3 ways to concatenate objects in DataWeave 2.0](https://prostdev.com/video/3-ways-to-concatenate-objects-in-dataweave-2-0): Object concatenation in DataWeave 2.0 — combining two objects into one — done three ways: the popular ++ (plus plus) function, the object destructor {( )}, and the object destructor with an array {([ ])} so you do not have to wrap each object in its own parentheses. ## Blog posts - [Claude Code vs CurieTech AI: Which Writes Better DataWeave?](https://prostdev.com/post/claude-code-vs-curietech-dataweave): Kicking off AI Showdown: MuleSoft Edition (2026) by pitting Claude Code against CurieTech AI on Advent of Code 2025 — same inputs, benchmarked in the DataWeave Playground. Who writes cleaner, faster MuleSoft transformations? - [How I Use ChatGPT to Brainstorm Newsletter Topics](https://prostdev.com/post/how-i-use-chatgpt-to-brainstorm-newsletter-topics): Every week I need a fresh, relevant topic for my newsletter. Here's the exact workflow I use with ChatGPT as a brainstorming partner — and where the human touch still matters most. - [How I Use ChatGPT for Writing Without Losing My Voice](https://prostdev.com/post/how-i-use-chatgpt-to-create-articles): Learn how to use ChatGPT to create authentic content faster. See how I write my LinkedIn newsletter with AI while keeping my voice and accuracy. - [Implement MySQL with Docker in Anypoint Code Builder (ACB)](https://prostdev.com/post/connect-mysql-docker-to-mulesoft-acb-vs-code): Learn how to connect MySQL in Docker to your MuleSoft project in Anypoint Code Builder using VS Code. Build dynamic queries with DataWeave. - [Scaffold an API Spec in ACB + VS Code Tips for Beginners](https://prostdev.com/post/scaffold-api-spec-anypoint-code-builder-vscode-tips): Scaffold an API spec in Anypoint Code Builder and explore key ACB + VS Code tips like running flows, customizing views, and using Git effectively. - [Design a REST API in Anypoint Code Builder (OpenAPI + VS Code)](https://prostdev.com/post/how-to-design-a-rest-api-in-anypoint-code-builder-openapi-vs-code-exchange): Learn how to design a complete REST API in Anypoint Code Builder using OpenAPI 3.0 in VS Code. Mock, test, and publish your API to Anypoint Exchange—no XML needed. - [Getting Started with Anypoint Code Builder in VS Code (Beginner Guide)](https://prostdev.com/post/getting-started-with-anypoint-code-builder-in-vs-code-beginner-guide): Install MuleSoft Anypoint Code Builder (ACB) in VS Code and build your first "Hello World" Mule app from scratch — the modern, code-first way to develop APIs. - [Building a YouTube MCP Server with MuleSoft and CurieTech AI in 10 Minutes](https://prostdev.com/post/building-a-youtube-mcp-server-with-mulesoft-and-curietech-ai-in-10-minutes): Learn how to build a YouTube Data API MCP server using MuleSoft and CurieTech AI in 10 minutes. Full setup, testing, and Claude integration tutorial included. - [Why is my Array not filtering correctly? It may be an Array instead](https://prostdev.com/post/array-string-key-dataweave): A subtle DataWeave gotcha: when you read keys from an object, you don't always get an Array — you may get an Array, and that breaks equality checks. Here's why, and how to fix it. - [How to connect your local Ollama AI using the MuleSoft AI Chain (MAC) project and Anypoint Code Builder (ACB)](https://prostdev.com/post/mac-project-ollama-ai): Learn how to create and deploy an AI-powered API with Ollama and MuleSoft. Step-by-step guide from setup to CloudHub deployment for developers. - [How to develop AsyncAPIs on Anypoint Code Builder with Solace PubSub+ locally (Docker)](https://prostdev.com/post/how-to-develop-asyncapis-on-anypoint-code-builder-with-solace-pubsub-locally-docker): Learn how to run Solace PubSub+ locally using Docker and to connect it to a MuleSoft AsyncAPI spec/app. Useful for Java/Springboot apps. - [How to upsert fields from an object in an array with the update operator in DataWeave](https://prostdev.com/post/upsert-object-from-array): In this post, we'll learn how to use the update operator along with the upsert and conditional options. We'll also learn different ways of handling null values for our fields. - [Part 5: Data Cloud + MuleSoft integration - Insert data with the BULK operations](https://prostdev.com/post/part-5-data-cloud-mulesoft-integration): New version of this MuleSoft + Data Cloud integration app now handles bulk operations to retrieve info, upsert, and delete jobs. The application handles the Create, Upload, and Close of each job so you can focus on what's really important. - [Part 6: CI/CD pipeline with MuleSoft and GitHub Actions - Deploying to CloudHub 2.0](https://prostdev.com/post/part-6-ci-cd-pipeline-with-mulesoft-and-github-actions-deploying-to-cloudhub-2-0): Learn the basics of setting up our GitHub Actions pipeline to deploy a Mule application to CloudHub 2.0. Once more, using a Connected App. - [New MuleSoft Community Theme for Visual Studio Code!](https://prostdev.com/post/new-mulesoft-community-theme-for-visual-studio-code): I created a theme for Visual Studio Code inspired by MuleSoft! - [Interactive tutorial - MuleSoft Anypoint Platform API Catalog by Rolando Carrasco](https://prostdev.com/post/interactive-tutorial-mulesoft-anypoint-platform-api-catalog-by-rolando-carrasco): Have you ever wanted to do some interactive tutorials while learning MuleSoft? There are not a lot of options out there for this purpose. However, MuleSoft Ambassador Rolando Carrasco took the time to create one for us! - [Exposing DataWeave: Map+Filter vs. Reduce - which is faster?](https://prostdev.com/post/exposing-dataweave-map-filter-vs-reduce-which-is-faster): I was working on some code that was using both map and filter together and I started thinking if there was a better way to refactor this code to make it more performant. - [Part 4: Data Cloud + MuleSoft integration - Secure your API with basic authentication in API Manager](https://prostdev.com/post/part-4-data-cloud-mulesoft-integration): Learn to connect your Mule app to API Manager and add basic authentication, using clicks, not code. - [Part 3: Data Cloud + MuleSoft integration - Call your integration with Postman](https://prostdev.com/post/part-3-data-cloud-mulesoft-integration): In this third part, we'll learn how to use our integration. We'll use Postman for this article, but you can use any other REST client like Thunder Client or cURL. - [Part 2: Data Cloud + MuleSoft integration - Deploy your own Mule app on Anypoint Platform (CloudHub)](https://prostdev.com/post/part-2-data-cloud-mulesoft-integration): In this second part, we'll go through the MuleSoft side of the integration and you'll deploy your own Mule app to CloudHub. - [Part 1: Data Cloud + MuleSoft integration - Connected App, Ingestion API & Data Stream settings in Salesforce](https://prostdev.com/post/part-1-data-cloud-mulesoft-integration): In this first part, we'll just go through the Salesforce/Data Cloud settings that we need to set up before even calling Data Cloud through the Mule app. - [How to add JVM/Command-line arguments to the Mule 4 Runtime in Anypoint Code Builder (ACB)](https://prostdev.com/post/how-to-add-jvm-command-line-arguments-to-the-mule-4-runtime-in-anypoint-code-builder-acb): Adding arguments to your Mule Runtime is useful when you're using properties files that are separated by environment. It is also useful to pass a secure/encryption key to your Mule application when you have secured properties. - [How to RE-scaffold Mule flows from an Exchange API specification in Anypoint Studio](https://prostdev.com/post/re-scaffold-mule-flows-exchange-api-spec-studio): What happens when there is a change to a published API in Anypoint Exchange? How can we get these changes re-scaffolded to our API implementation once we have already done the scaffolding? In this post, we'll learn how to re-scaffold our Mule project based on new changes done to the published API Specification in Exchange. - [How to scaffold Mule flows from a published API spec in Anypoint Code Builder (ACB)](https://prostdev.com/post/scaffold-mule-flows-from-published-api-spec-acb): Why would you want to scaffold Mule flows from an API specification? This way you will be able to get started on your Mule application with a base project that is created upon your specification, instead of starting the Mule project and Mule flows from scratch. - [How to scaffold Mule flows from a published API spec in Anypoint Studio](https://prostdev.com/post/scaffold-mule-flows-from-published-api-specification): In this post, I am going to show you how to scaffold your flows in Anypoint Studio from a published API specification. - [#Codetober 2023 ~ 31 MuleSoft-related videos under 10min each!](https://prostdev.com/post/codetober-2023): Every October we create this series of 31 videos ranging from various tech topics. This year they're MuleSoft-related! Don't miss them. - [How to use MuleSoft's visual API Designer to create a To-Do API specification using clicks, not code](https://prostdev.com/post/how-to-use-mulesoft-s-visual-api-designer-to-create-a-to-do-api-specification-using-clicks-not-code): Did you know MuleSoft provides this neat Graphical User Interface (GUI) where you can configure your own API specification with just clicks? Let's create a To-Do API specification to see how this visual tool works. - [DataWeave scripts to clean your XML/HTML code snippets for a WordPress blog post](https://prostdev.com/post/dataweave-scripts-to-clean-your-xml-html-code-snippets-for-a-wordpress-blog-post): Learn how to clean an XML or HTML code snippet to publish in a WordPress article with these DataWeave scripts. - [Down the Rabbit Hole vol.2 - GUIs in MuleSoft](https://prostdev.com/post/down-the-rabbit-hole-vol-2-guis-in-mulesoft): We'll discuss those edge cases where a GUI might solve your problems. - [DataWeave programming challenge #8: Sum all digits to get a 1-digit number](https://prostdev.com/post/dataweave-programming-challenge-8): Create a DataWeave script to sum all the digits from the input payload until there's only one digit left. - [We are now accepting guest writers!](https://prostdev.com/post/we-are-now-accepting-guest-writers): We are delighted to announce an exciting update to our blog's article submission process! - [DataWeave programming challenge #7: Modify certain values from a JSON structure](https://prostdev.com/post/dataweave-programming-challenge-7): Create a DataWeave script that will update all the values to uppercase, except the ones in which the field equals thisname. - [Part 5: CI/CD pipeline with MuleSoft and GitHub Actions - Enabling MFA through a Connected App](https://prostdev.com/post/part-5-ci-cd-pipeline-with-mulesoft-and-github-actions-enabling-mfa-through-a-connected-app): Learn how to set up our pipeline with a connected app, which is useful when you have multi-factor authentication activated in Anypoint Platform. - [DataWeave programming challenge #6: Using tail-recursion to get the factorial of a number](https://prostdev.com/post/dataweave-programming-challenge-6): Create a tail-recursive function to get the factorial of each positive number from the payload. - [Part 4: CI/CD pipeline with MuleSoft and GitHub Actions - MUnit minimum coverage percentage](https://prostdev.com/post/part-4-ci-cd-pipeline-with-mulesoft-and-github-actions-munit-minimum-coverage-percentage): In this post, we'll see the steps to add the minimum coverage percentage for the MUnit tests in order to pass the pipeline. - [Down the Rabbit Hole vol.1 - Using GPUs in MuleSoft](https://prostdev.com/post/down-the-rabbit-hole-vol-1-using-gpus-in-mulesoft): I've written a Mule plugin that has the ability to use Cuda cores for parallel asynchronous processing. - [5 tips to have a better setup when you're live streaming from a MacOS computer](https://prostdev.com/post/5-tips-to-have-a-better-setup-when-you-re-live-streaming-from-a-macos-computer): I've been doing a lot of live streaming lately. Either alone or with guests. And I noticed some things that could be improved (from a streamer perspective) to create a better experience for the people watching our screen. Here are some MacOS-specific tools to help. - [DataWeave programming challenge #5: Reverse a phrase's words, but keep the punctuation](https://prostdev.com/post/dataweave-programming-challenge-5): Reverse the order of the words in the given phrases. However, the punctuation signs stay in the same place. - [DataWeave programming challenge #4: Solve the Tower of Hanoi mathematical puzzle](https://prostdev.com/post/dataweave-programming-challenge-4): Move the disks, one disk at a time, from tower A to tower C following the Tower of Hanoi puzzle rules. - [Part 3: CI/CD pipeline with MuleSoft and GitHub Actions - MUnit testing](https://prostdev.com/post/part-3-ci-cd-pipeline-with-mulesoft-and-github-actions-munit-testing): In this post, we'll see the steps to create a pipeline with GitHub Actions that will run the MUnit tests from your project. - [DataWeave programming challenge #3: Count palindrome phrases using the Strings module](https://prostdev.com/post/dataweave-programming-challenge-3): Review each of the input phrases and find those that are palindromes. Then, retrieve the character count and sum the total characters. - [Part 2: CI/CD pipeline with MuleSoft and GitHub Actions - secured/encrypted properties](https://prostdev.com/post/part-2-ci-cd-pipeline-with-mulesoft-and-github-actions-secured-encrypted-properties): In this post, we'll see the steps to create a pipeline with GitHub Actions that will decrypt your secured properties in your Mule app. - [DataWeave programming challenge #2: Rock Paper Scissors game score system](https://prostdev.com/post/dataweave-programming-challenge-2): Create a script to keep your score on a series of Rock Paper Scissors games. 0 if you lose, 3 if it's a draw, and 6 if you win. - [How to develop a Battlesnake using a MuleSoft API and the DataWeave language](https://prostdev.com/post/how-to-develop-a-battlesnake-using-a-mulesoft-api-and-the-dataweave-language): In this post, I'm going to guide you through all the steps to generate your own MuleSoft starter project in GitHub to play Battlesnake. - [DataWeave programming challenge #1: Add numbers separated by paragraphs and get the max number](https://prostdev.com/post/dataweave-programming-challenge-1): Create a DataWeave script to add all the numbers separated by a paragraph. Then, retrieve the highest number. - [DataWeave 2.0 scopes for local variables: 'using' vs. 'do' operators](https://prostdev.com/post/dataweave-2-0-scopes-for-local-variables-using-vs-do-operators): In this post, I'll go through some of the main differences between these two operators so you decide which one to use in your scripts! - [How to generate shareable link examples from GitHub to open in the DataWeave Playground](https://prostdev.com/post/how-to-generate-shareable-link-examples-from-github-to-open-in-the-dataweave-playground): Learn how to create shareable links from a GitHub repository to open directly in the online DataWeave Playground. - [Simplified try-catch strategy in DataWeave with the default keyword (instead of try/orElse)](https://prostdev.com/post/simplified-try-catch-strategy-in-dataweave-with-the-default-keyword-instead-of-try-orelse): The other day I was reading some StackOverflow DataWeave questions and I got to this very interesting thread. - [Part 1: How to set up a CI/CD pipeline to deploy your MuleSoft apps to CloudHub using GitHub Actions](https://prostdev.com/post/how-to-set-up-a-ci-cd-pipeline-to-deploy-your-mulesoft-apps-to-cloudhub-using-github-actions): In this post, we'll learn how to create a simple CI/CD pipeline to deploy Mule applications from GitHub to CloudHub using GitHub Actions. - [How to move your code from the DataWeave Playground to Visual Studio Code](https://prostdev.com/post/how-to-move-your-code-from-the-dataweave-playground-to-visual-studio-code): If you will be working on bigger payloads or simply want to work locally, it's recommended to use Visual Studio Code. - [MuleSoft's Anypoint Flex Gateway logs integration with Grafana Loki](https://prostdev.com/post/mulesoft-s-anypoint-flex-gateway-logs-integration-with-grafana-loki): Learn how to send the Flex Gateway agent logs into Grafana Loki. And how to analyze, search, and explore them from the Grafana console. - [Spring Module Integration in a Mule Application (Mule 4)](https://prostdev.com/post/spring-module-integration-in-a-mule-application-mule-4): In this article, we will use a database datasource that is created by spring beans. Also, we will invoke one bean's method from mule flow. - [JWT token creation using DataWeave](https://prostdev.com/post/jwt-token-creation-using-dataweave): Security implementations have been revolutionary through OAuth 2.0, OpenID Connect, SAML, etc. OAuth 2.0 and OpenID connect mostly use JWT as a token format. Here's how to create a JWT token using Java and DataWeave. - [How to Integrate AWS Lambda with MuleSoft](https://prostdev.com/post/how-to-integrate-aws-lambda-with-mulesoft): In this blog post, I will demonstrate how to Integrate AWS Lambda with MuleSoft. - [Tracing Module in Mule 4](https://prostdev.com/post/tracing-module-in-mule-4): The tracing module enables you to enhance your logs by adding, removing, and clearing all variables from the logging context for a given Mule event. It also enables you to modify the correlation ID during flow execution. - [How to Invert a Binary Tree with DataWeave](https://prostdev.com/post/how-to-invert-a-binary-tree-with-dataweave): The DataWeave Language is a simple, powerful tool used to query and transform data inside of Mule. You can also use it to solve an algorithmic problem. Invert a Binary Tree is a popular Coding Question to test your coding skills. Let's try to solve this with DataWeave. - [Universal API Management, Anypoint Flex Gateway, and API Governance](https://prostdev.com/post/universal-api-management-anypoint-flex-gateway-and-api-governance): As you are aware that recently MuleSoft has introduced Universal API Management capabilities via Flex Gateway and API Governance components as part of Anypoint Platform. These two components are very important as a part of API lifecycle management and those will help to manage any APIs using a single platform and ensure that whatever API specs that you are designing are with best practices and all security aspects have been taken care of during API design. - [3 scenarios to consume an Apache Kafka Topic with MuleSoft](https://prostdev.com/post/3-scenarios-to-consume-an-apache-kafka-topic-with-mulesoft): This article is going to explain the mechanisms that you can use within a MuleSoft application to read messages from a Topic and partitions, and which are the expected behaviors and consequences. - [Amazon DynamoDB Connector Operations in Mule 4 (Part 1)](https://prostdev.com/post/amazon-dynamodb-connector-operations-in-mule-4-part-1): This blog post provides quick examples of how to use the Amazon DynamoDB Connector in Mule 4 using Anypoint Studio. Operations: create table, describe table, list tables, put item, batch put item (single and multiple tables), get item, batch get item, update item, query, scan, delete item, batch delete item. - [Guidelines to submit your content in ProstDev](https://prostdev.com/post/guidelines-to-submit-your-content-in-prostdev): Please take care of the following guidelines before submitting your application to contribute. - [Anypoint Platform Single Sign-on (SSO) SAML Configuration with Oracle IDCS - PART 2](https://prostdev.com/post/anypoint-platform-single-sign-on-sso-saml-configuration-with-oracle-idcs-part-2): Our last article was about how to integrate MuleSoft Anypoint Platform with Oracle Identity Cloud Services. With this, you can use Oracle IDCS as your Identity Provider. This is very useful for Single Sign-On purposes, and if you already have Oracle Cloud Infrastructure and you are using MuleSoft to integrate it with Oracle SaaS apps, this alternative for SSO should be a good fit for you. - [Basic Google Big Query operations with a Salesforce sync demo in Mule 4](https://prostdev.com/post/basic-google-big-query-operations-with-a-salesforce-sync-demo-in-mule-4): In this post, I would like to demonstrate in a few steps how we can make a sync job that allows us to describe a Salesforce instance and use a few objects to create a full schema of those objects (tables) into a Google Big Query Dataset. Then with the schema created we should be able to push some data into BigQuery from Salesforce and see it in our Google Cloud Console project. - [Oracle database Stored Procedure does not time out as expected in MuleSoft](https://prostdev.com/post/oracle-database-stored-procedure-does-not-time-out-as-expected-in-mulesoft): In a recent MuleSoft project, I noticed a problem when trying to run an Oracle stored procedure that took a fair amount of time to complete. - [Anypoint Platform Single Sign-on (SSO) SAML Configuration with Oracle IDCS – PART 1](https://prostdev.com/post/anypoint-platform-single-sign-on-sso-saml-configuration-with-oracle-idcs-part-1): In this post, we talk about how to do SSO in Anypoint Platform using Oracle Identity Cloud Services (IDCS). Useful for MuleSoft+Oracle SaaS. - [How to check if a key is present in a JSON payload in DataWeave with these 3 examples](https://prostdev.com/post/how-to-check-if-a-key-is-present-in-a-json-payload-in-dataweave-with-these-3-examples): Here are 3 examples where you can see how to check if a key in the input JSON payload is present or not. - [MuleSoft Connected with Oracle Streaming Service using the Kafka Connector](https://prostdev.com/post/mulesoft-connected-with-oracle-streaming-service-using-the-kafka-connector): This article is focused on highlighting MuleSoft's Kafka connector, to be used with OCI Streaming Services. - [CVE-2021-44228: Critical zero-day Log4j vulnerability (Log4Shell) discovered and MuleSoft’s solution](https://prostdev.com/post/cve-2021-44228-critical-zero-day-log4j-vulnerability-log4shell-discovered-and-mulesoft-s-solution): Over December 2021, a critical vulnerability has been unraveled pertinent to Apache’s Log4j library. Let's understand what happened. - [Anypoint Studio 7.11.0: New features overview](https://prostdev.com/post/anypoint-studio-7-11-0-new-features-overview): Are you already using the newest version of Anypoint Studio? Let me guide you through the coolest features it has. Studio includes 3 new features that you will enjoy: Support for Mule Runtime 4.4, DataWeave 2.4, and the new "Referenced by" function. - [Retry and Reprocess flow design with Anypoint MQ](https://prostdev.com/post/retry-and-reprocess-flow-design-with-anypoint-mq): In any MuleSoft project, when Anypoint MQ comes into the picture there is always a requirement of retry and reprocess mechanism. Based on my experience I have prepared this blog to show how easily we can design retry and reprocess mechanisms. - [How to configure Solace DMQ (Dead Message Queue) through the Mule JMS connector](https://prostdev.com/post/how-to-configure-solace-dmq-dead-message-queue-through-the-mule-jms-connector): In this post, I will be explaining how to configure Solace DMQ through the Mule JMS Connector. There can be many business scenarios where the processing of the message will be delayed by a predefined amount of time. In such scenarios, we can make use of the concept of the TTL property and the DMQ. - [How to Handle Single and XA (Extended Architecture) Transactions in MuleSoft](https://prostdev.com/post/how-to-handle-single-and-xa-extended-architecture-transactions-in-mulesoft): A transaction is a group of operations where all the steps are needed to be successful to commit a result. If any one of the intermediate steps fail, the whole chain of steps fails collectively. In this post, we'll learn how to implement Single and XA transactions using MuleSoft. - [How to create a README file for your GitHub profile, part 2: Markdown basics](https://prostdev.com/post/how-to-create-a-readme-file-for-your-github-profile-part-2-markdown-basics): In this series of posts, I'll show you how to create a striking README.md file to attach to your GitHub profile. - [MuleSoft Runtime Fabric Deployed on Oracle Cloud Infrastructure (OCI) - Part 2: Mgmt & Operations](https://prostdev.com/post/mulesoft-runtime-fabric-deployed-on-oracle-cloud-infrastructure-oci-part-2-mgmt-operations): This is the second part of a series of articles focused on MuleSoft Runtime Fabric. It's time to learn some mechanisms to manage a cluster. - [How to create a README file for your GitHub profile, part 1: Intro to Git, GitHub, and README files](https://prostdev.com/post/how-to-create-a-readme-file-for-your-github-profile-part-1-intro-to-git-github-and-readme-files): In this series of posts, I’ll show you how to create a striking README.md file to attach to your GitHub profile. - [Notification center for new versions of connectors/modules in Anypoint Studio 7.10.0](https://prostdev.com/post/notification-center-for-new-versions-of-connectors-modules): This post is about the new Anypoint Studio 7.10.0 version released July 29th, 2021. Here is a summary of the new changes introduced in this version, with a closer look at the Notification Center for new versions of connectors. - [Recommendation: Logitech MX Ergo Advanced (Plus) Wireless Trackball Mouse](https://prostdev.com/post/recommendation-logitech-mx-ergo-advanced-plus-wireless-trackball-mouse): I bought this mouse less than 24 hours ago, and I'm already completely in love with it. - [MuleSoft Runtime Fabric Deployed on Oracle Cloud Infrastructure (OCI) - Part 1](https://prostdev.com/post/mulesoft-runtime-fabric-deployed-on-oracle-cloud-infrastructure-oci-part-1): MuleSoft offers on-premise deployments such as Standalone, Runtime Fabric, and Private Cloud Edition. Runtime Fabric (RTF) is a hybrid deployment model. You still have the Control Plane in the cloud but the workloads (Runtime Plane) are running at the customer end. I am going to use Oracle Cloud Infrastructure to explain the pre-requisites and part of the installation process. - [DataWeave Parsing Date Modes: SMART, STRICT, and LENIENT](https://prostdev.com/post/dataweave-parsing-date-modes-smart-strict-and-lenient): We know that in DataWeave the types can be coerced from one type to another. For that we use the as operator. There is a property called mode that we can use when we are parsing date and time values. The mode parameter has three different valid values: SMART, STRICT, and LENIENT. The default mode when you are parsing dates is SMART. - [Encryption in DataWeave: HMACBinary and toBase64 functions](https://prostdev.com/post/encryption-in-dataweave-hmacbinary-and-tobase64-functions): The main objective of this post is to show how we can implement a field level encryption for a JSON payload in MuleSoft using DataWeave, using the Crypto module and the toBase64 function. - [How to retrieve the number of years, months, or days between two dates in DataWeave 2.0](https://prostdev.com/post/how-to-retrieve-the-number-of-years-months-or-days-between-two-dates-in-dataweave-2-0): I needed to get a person's age. I started using "daysBetween" but this was a wrong way. In this post, I'll show you how to use the "between" function from the Periods module to retrieve the number of years, months, or days between two dates. - [Dynamic Variable in MuleSoft](https://prostdev.com/post/dynamic-variable-in-mulesoft): On one of my assignments, I was presented with a rather peculiar demand: to write the records belonging to a unique identifier in a variable. The catch was, we do not know how many such unique identifiers are going to come in a particular batch. The flow will read an excel file and, based on the query string, we'll segregate the records -using a foreach component- and send an email with the final payload. - [My top 5 DataWeave tips to make your life easier](https://prostdev.com/post/my-top-5-dataweave-tips-to-make-your-life-easier): It took me some time to find and fully understand how to use these hacks. Trust me; they're truly worth it: the DataWeave Playground, the dw output, the log function, the do statement, and assigning types to variables and functions (with Function Overloading when needed). - [Easiest way to integrate automatic code review of MuleSoft apps using SonarQube and Docker Container](https://prostdev.com/post/easiest-way-to-integrate-automatic-code-review-of-mulesoft-apps-using-sonarqube-and-docker-container): SonarQube is a platform for continuous inspection of code quality to perform automatic reviews with static analysis of code. The quickest way to have an installation of SonarQube up and running is using a Docker container. Let's use Docker Hub (the world's largest library and community for container images) to find a SonarQube Docker container to perform our MuleSoft applications code reviews. - [Trigger Events in Salesforce; Receive Them in MuleSoft](https://prostdev.com/post/trigger-events-in-salesforce-receive-them-in-mulesoft): In this post I am going to show you how we can create a MuleSoft Flow that can react to three different events generated by Salesforce: On Create Event, On Modify Event, and On Delete Event. We will use Lead as the entity in Salesforce. We are interested to know if a Lead was created, updated, or deleted. - [Mule 4 Unsplash Connector](https://prostdev.com/post/mule-4-unsplash-connector): Unsplash has a REST API that provides a bunch of nice features like image search, photo actions, collections, topics and users. This time I have created a new custom connector for Mule 4 to use a couple operations (Get Random Photo and Search Photos). - [ProstDev's New Blog Post Template](https://prostdev.com/post/prostdev-s-new-blog-post-template): A step-by-step guide for new writers on how to create a blog post with ProstDev, covering the Google Doc template, word count, title, excerpt, SEO description, article formatting, and the review process. - [The Power of cURL - Part II](https://prostdev.com/post/the-power-of-curl-part-ii): Overview of cURL and how to invoke HTTP methods from the command line. I go into detail on how to invoke APIs using HTTP GET and POST requests, as well as how to pass query parameters, URI parameters and headers. This post will explain how to invoke APIs using HTTPS via cURL. - [3 ways to import a function/module in DataWeave 2.0](https://prostdev.com/post/3-ways-to-import-a-function-module-in-dataweave-2-0): There are different ways to import a module in DataWeave for functions that aren't part of the core: import the module directly, import all functions from a module, or import one or more specific functions from a module. - [How to integrate Solace PubSub+ Cloud with MuleSoft - Negative Scenario (Error Handling)](https://prostdev.com/post/how-to-integrate-solace-pubsub-cloud-with-mulesoft-negative-scenario-error-handling): Even though the error handling logic varies depending on use cases, business requirements, organizational processes, etc. I believe the core approach to error handling for message-based integrations would more or less remain the same for different applications. The most common approach consists of the following steps. - [How to integrate Solace PubSub+ Cloud with MuleSoft](https://prostdev.com/post/how-to-integrate-solace-pubsub-cloud-with-mulesoft): In this article, I will demonstrate how to integrate Solace PubSub+ with MuleSoft to publish and consume the messages. - [The Power of cURL](https://prostdev.com/post/the-power-of-curl): cURL is a command-line tool used to transfer files and invoke APIs over protocols like HTTP, HTTPS, and FTP. Learn how to send GET, query params, URI params, headers, and POST requests, plus how to print output. - [How to check for empty values in an array in DataWeave | Part 4: Arrays Module](https://prostdev.com/post/how-to-check-for-empty-values-in-an-array-in-dataweave-part-4-arrays-module): I had this use-case where I had to make sure all the values inside an array were not empty. Empty string or array, null value. In this series of posts, I explain 6 different approaches to achieve almost the same output using DataWeave. Part 4: Using the Arrays Module, Pattern Matching, and Function Overloading. - [How to check for empty values in an array in DataWeave | Part 3: isEmpty, filter](https://prostdev.com/post/how-to-check-for-empty-values-in-an-array-in-dataweave-part-3-isempty-filter): I had this use-case where I had to make sure all the values inside an array were not empty. Empty string or array, null value. In this series of posts, I explain 6 different approaches to achieve (almost) the same output using different DataWeave functions/operators. Part 3: Using isEmpty and filter. - [How to check for empty values in an array in DataWeave | Part 2: sizeOf, filter, isEmpty, default](https://prostdev.com/post/how-to-check-for-empty-values-in-an-array-in-dataweave-part-2-sizeof-filter-isempty-default): I had this use-case where I had to make sure all the values inside an array were not empty. Empty string or array, null value. In this series of posts, I explain 6 different approaches to achieve (almost) the same output using different DataWeave functions/operators. Part 2: Using sizeOf, filter, isEmpty, and default. - [How to check for empty values in an array in DataWeave | Part 1: sizeOf, groupBy, isEmpty, default](https://prostdev.com/post/how-to-check-for-empty-values-in-an-array-in-dataweave-part-1-sizeof-groupby-isempty-default): I had this use-case where I had to make sure all the values inside an array were not empty. Empty string or array, null value. In this series of posts, I explain 6 different approaches to achieve (almost) the same output using different DataWeave functions/operators. Part 1: Using sizeOf, groupBy, isEmpty, and default. - [Using Salesforce Search in Mule 4](https://prostdev.com/post/using-salesforce-search-in-mule-4): One of the most used actions when we work with Salesforce integrations is the use of query. But there's one action we don't use very often: the Salesforce Object Search Language (SOSL). In this post we walk through a Mule 4 application that uses SOSL to validate Contacts and Leads and decide whether to update or create records. - [DataWeave 2.0 core functions cheatsheet](https://prostdev.com/post/dataweave-2-0-core-functions-cheatsheet): A compilation of all the core functions that can be used in DataWeave 2.0 according to MuleSoft's official documentation, separated by input and output, with a link to each function's official documentation page. - [Understanding APIs (Part 6): What are HTTP Status Codes?](https://prostdev.com/post/understanding-apis-part-6-what-are-http-status-codes): There are a lot of Status Codes reserved for certain API Responses, but we will be looking at the most popular ones: 200, 201, 202, 204, 400, 401, 403, 404, and 500. - [Why should an editor review your blog posts?](https://prostdev.com/post/why-should-an-editor-review-your-blog-posts): Grammar tools aren't foolproof. Here's my perspective on why having a professional editor review your content is the best way to bullet-proof your articles from misunderstandings. - [Implementing Pagination with MuleSoft](https://prostdev.com/post/implementing-pagination-with-mulesoft): How to process n number of pages from a backend API and return the combined response back to the calling client, demonstrated with the GitHub REST API and asynchronous processing. - [Understanding APIs (Part 5): Intro to Postman and Query Parameters](https://prostdev.com/post/understanding-apis-part-5-intro-to-postman-and-query-parameters): Continuing with the last topic, URIs, we will now get started using Postman and learning what Query Parameters are, plus how HTML URL encoding works in a real-life Expedia example. - [Anypoint Platform Chrome Extension](https://prostdev.com/post/anypoint-platform-chrome-extension): A walkthrough of the features available so far in the Anypoint Platform Chrome Extension: see your Organization name, Organization id and Environment id, inspect Runtime Manager applications, view schedulers, and check alerts. - [Understanding APIs (Part 4): What is a URI?](https://prostdev.com/post/understanding-apis-part-4-what-is-a-uri): Learn what a URL and a URI really are and how they fit into our previously defined API diagram, using the public Joke API as a hands-on example. - [Understanding APIs (Part 3): What are HTTP Methods?](https://prostdev.com/post/understanding-apis-part-3-what-are-http-methods): The most popular HTTP methods are GET, POST, PUT, PATCH, and DELETE. GET retrieves data, POST creates new data, PUT updates or replaces data, PATCH updates parts of existing data, and DELETE removes data — and how each fits into the API Request and Operation. - [How to connect your Philips Hue Smart Lights with Google Calendar](https://prostdev.com/post/how-to-connect-your-philips-hue-smart-lights-with-google-calendar): Synchronize your Philips Hue Smart Lights with your Google Calendar using IFTTT so your lights turn red when you're in a meeting. - [Things to consider before buying a Philips Hue Smart Light](https://prostdev.com/post/things-to-consider-before-buying-a-philips-hue-smart-light): If you own an Amazon Alexa or Google Assistant device for your smart home, you may be looking into smart lights too. Here are the pros and cons of using Philips Hue. - [3 Simple Steps to Convert a Flat File into JSON / CSV / XML](https://prostdev.com/post/3-simple-steps-to-convert-a-flat-file-into-json-csv-xml): How to convert a Flat File into JSON, CSV, or XML using DataWeave 2.0, with Anypoint Studio 7.4 and Mule Runtime 4.2.2 — from creating the copybook to the final transformation. - [7 tips to start writing your technical blog post](https://prostdev.com/post/7-tips-to-start-writing-your-technical-blog-post): We already chose our topic and visualized our target audience. Now it's time to actually start writing! Follow these 7 simple steps to get your technical blog post going. - [Implementing NetSuite Saved Search with MuleSoft](https://prostdev.com/post/implementing-netsuite-saved-search-with-mulesoft): NetSuite is a SaaS-based ERP which allows companies to manage important business using a single tool. MuleSoft provides a NetSuite connector, which enables to automate the business process and synchronize the data between NetSuite and third-party tools. - [What is CIDR (Classless Inter-Domain Routing) in MuleSoft VPC](https://prostdev.com/post/what-is-cidr-classless-inter-domain-routing-in-mulesoft-vpc): CIDR stands for Classless Inter-Domain Routing and it's a way of allocating IP addresses or hosts in a more efficient manner. It replaces the old way of allocating IP addresses based on the class system and avoids the waste of IP Addresses. - [Mule 4 Continuous Integration using Azure DevOps](https://prostdev.com/post/mule-4-continuous-integration-using-azure-devops): How to create Continuous Integration (CI) to automatically deploy a MuleSoft application into CloudHub (CH) or On-Premise (On-prem) server. Creating a new project in Azure, setting up the RAML to generate the Mule flows, adding properties, generating a personal access token, preparing the settings.xml and pom.xml files - [Implementing Mapping Rules With MuleSoft Dedicated Load Balancer](https://prostdev.com/post/implementing-mapping-rules-with-mulesoft-dedicated-load-balancer): Dedicated Load Balancer is an optional component within the Anypoint Platform used to route HTTP and HTTPS traffic to multiple applications deployed to CloudHub workers in the VPC. Learn how to apply mapping rules on a dedicated load balancer (DLB) to redirect requests to CloudHub apps. - [Securing APIs: Two ways to apply policies for CloudHub applications](https://prostdev.com/post/securing-apis-two-ways-to-apply-policies-for-cloudhub-applications): Apply policies via Anypoint Platform's API Manager in two different ways: creating Proxy APIs, or without creating Proxy APIs. The main difference is either using the API ID in Auto-Discovery, or letting Mule create a proxy on top of your app. - [Things to consider before writing a technical blog post](https://prostdev.com/post/things-to-consider-before-writing-a-technical-blog-post): Thinking about writing your first technical article but not sure where to start? Here are some tips on choosing what to write about and defining your target audience so you can get your first post out. - [Understanding APIs (Part 2): API Analogies and Examples](https://prostdev.com/post/understanding-apis-part-2-api-analogies-and-examples): Learn about some analogies and real-life examples of APIs to understand them better, including a restaurant, a calculator, and a Human Resources (HR) API using CSV and JSON data types. - [Creating a connector and consuming it from a Mule Application](https://prostdev.com/post/creating-a-connector-and-consuming-it-from-a-mule-application): Learn what an Anypoint Connector is, why you might need a custom connector, and how to create one with Maven, configure the POM, publish it to Anypoint Exchange, and consume it from a Mule application. - [Understanding APIs (Part 1): What is an API?](https://prostdev.com/post/understanding-apis-part-1-what-is-an-api): The concept of an API can be hard to grasp. This post gives a simple explanation of what an API is, its 4 aspects (Inputs, Operations, Outputs, Data Types), and how Requests and Responses fit together — plus a diagram to refer back to. - [Reviewing Sorting Algorithms: Merge Sort](https://prostdev.com/post/reviewing-sorting-algorithms-merge-sort): Learn how to implement a Merge Sort sorting algorithm using Python. Merge Sort's time and space complexity: worst, best, average case time complexity and space complexity. Big-O Complexity Chart and more study resources to understand how to implement this sorting technique with other programming languages. - [IoT with MuleSoft: Implementing a Temperature Sensor using LED lights, Twilio, and a Raspberry PI](https://prostdev.com/post/iot-with-mulesoft-implementing-a-temperature-sensor-using-led-lights-twilio-and-a-raspberry-pi): How to implement Internet of Things (IoT) with MuleSoft: a use case that senses temperature with a Raspberry PI, sends it via Twilio, and blinks a green or red LED depending on the result. - [Cryptography Module Mule 4 - Part 1 (PGP Encryption/Decryption)](https://prostdev.com/post/cryptography-module-mule-4-part-1-pgp-encryption-decryption): Mule 4 has a Cryptography module which includes PGP, XML, and JCE. In this article, we will see the PGP technique — a cryptographic way that allows secure communication between two entities using public and private keys. - [3 simple rules & 5 examples to understand the Error Handling in Mule 4](https://prostdev.com/post/3-simple-rules-5-examples-to-understand-the-error-handling-in-mule-4): This article on Error Handling in Mule 4 will help you understand the core concept of On-Error Propagate and On-Error Continue, with three simple rules and five examples. - [How to run locally the DataWeave Playground Docker Image](https://prostdev.com/post/how-to-run-locally-the-dataweave-playground-docker-image): You may already know about the DataWeave (DW) Playground that can be used for both versions of DW: 1.0 and 2.0. I will explain how to get this Docker Image running on your laptop (even if you don't know how to use Docker). - [Parallel For-Each Scope (Mule 4)](https://prostdev.com/post/parallel-for-each-scope-mule-4): Learn how to implement the new ForEach MuleSoft component that was released in Mule 4. Read this post for information about this integration technique: how does it work, how can you implement it, how to install in your Mule palette, and how to configure Error Handling for this scope. - [Reviewing Sorting Algorithms: Insertion Sort](https://prostdev.com/post/reviewing-sorting-algorithms-insertion-sort): Learn how to implement an Insertion Sort sorting algorithm using Python. Insertion Sort's time and space complexity: worst, best, average case time complexity and space complexity. Big-O Complexity Chart and more study resources to understand how to implement this sorting technique with other programming languages. - [Dell Boomi Integrations: Using the Atom Queue Connector](https://prostdev.com/post/dell-boomi-integrations-using-the-atom-queue-connector): The Atom Queue connector is used to send and receive messages to and from Dell Boomi Integration Atom message queues. The connector supports both Point-to-Point and Publish/Subscribe messaging. For a better understanding of how Atom Queue works, I did a proof of concept. - [Understanding the "illegal base64 character" error (Java, Groovy and Mule 4 - DW 2.0)](https://prostdev.com/post/understanding-the-illegal-base64-character-error-java-groovy-and-mule-4-dw-2-0): Are you familiar with the fromBase64 or the toBase64 functions from DataWeave 2.0? What about the getUrlEncoder or the getEncoder functions from Java? Do you know the differences between the "basic" Base 64 encoding and the "URL and Filename safe" Base 64 encoding? Maybe you're here because you keep getting this error. - [Custom Modules in Mule 4 - DataWeave 2.0](https://prostdev.com/post/custom-modules-in-mule-4-dataweave-2-0): Some days ago, I started using this great functionality in DataWeave (DW) 2.0 - Mule 4, and I faced some challenges while creating the code. I'll explain what a custom module is, why you would want to use it, some examples on how you can use it, and finally, how to load properties into this module. - [Reviewing Sorting Algorithms: Selection Sort](https://prostdev.com/post/reviewing-sorting-algorithms-selection-sort): Learn how to implement a Selection Sort sorting algorithm using Python. Selection Sort's time and space complexity: worst, best, average case time complexity and space complexity. Big-O Complexity Chart and more study resources to understand how to implement this sorting technique with other programming languages. - [Software Quality is not cheap, but would you risk your company's future for the lack of it?](https://prostdev.com/post/software-quality-is-not-cheap-but-would-you-risk-your-company-s-future-for-the-lack-of-it): Learn about what is software quality, what is a quality assurance resource (QA), best practices when coding, what is the importance of testing, some software quality types and objectives: unit testing, integration testing, system testing. Functional vs. Non-functional testing. How to ensure your customer's satisfaction - [Scatter-Gather Integration Pattern (Mule 4) Part 2](https://prostdev.com/post/scatter-gather-integration-pattern-mule-4-part-2): Learn about the scatter-gather integration pattern and how to implement it in MuleSoft (Mule 4). How the input message gets processed, how to code error handling scope with this component, and how to test it using Postman. What happens if you have multiple services calls, and the configuration XML file for you to try. - [Reviewing Sorting Algorithms: Bubble Sort](https://prostdev.com/post/reviewing-sorting-algorithms-bubble-sort): Learn how to implement a Bubble Sort sorting algorithm using Python. Bubble Sort's time and space complexity: worst, best, average case time complexity and space complexity. Big-O Complexity Chart and more study resources to understand how to implement this sorting technique with other programming languages. - [5 reasons why you need an IDE (and how it can save you so much time)](https://prostdev.com/post/5-reasons-why-you-need-an-ide): What is an IDE? This post explains the concept and walks through five reasons you need one: syntax highlighting, text autocompletion, refactoring options, importing libraries, and build/compile/run — plus favorite IDE examples for different languages. - [Intro to Scatter-Gather Integration Pattern](https://prostdev.com/post/intro-to-scatter-gather-integration-pattern): What is the Scatter-Gather integration pattern? Enterprise Integration Patterns definition. Learn about how this component processes messages in MuleSoft (Mule 3 or Mule 4), when you should use scatter-gather and how does it work, why you should be using it and how to implement it and test it with Postman. - [JSON Module Component in Mule 4](https://prostdev.com/post/json-module-component-in-mule-4): The JSON Module Connector is used to validate a JSON Payload against the predefined JSON Schema of your choice. Since schema validation falls outside the scope of DataWeave Functionality, the JSON Module can be used in MuleSoft. Learn about the possible exceptions you can get when using this component. - [Intro to Regression Testing with Postman](https://prostdev.com/post/intro-to-regression-testing-with-postman): What is Regression Testing, and how can you create basic tests for your API using Postman? We cover the concept with a simple metaphor and then build successful and negative-scenario tests for the Slack API. - [Combining Objects: Concatenation in DW 2.0](https://prostdev.com/post/combining-objects-concatenation-in-dw-2-0): What is object concatenation and how to use it in Mule 4 - DataWeave (DW) 2.0. Similar to concat or + functions in other languages, in DW you can use ++ (plus plus), using {( )} and {([ ])} parentheses object destructors with or without arrays. Learn more about MuleSoft here! - [MuleSoft Training and Certification](https://prostdev.com/post/mulesoft-training-and-certification): An intro to what MuleSoft is, what the company and its products do, and how you can get certified for free through their online fundamentals training. - [Less time, less cost, less resources, more apps!](https://prostdev.com/post/less-time-less-cost-less-resources-more-apps): Mobile apps are as important as having an official site for your company, and creating them gets easier and easier. Here's a look at Ionic, a framework that lets you build cross-platform mobile apps without working twice. ## Topics Posts are organized by category (the kind of post) and tags (the subject). ### Categories - [Challenges](https://prostdev.com/category/challenges): 8 posts - [Tutorials](https://prostdev.com/category/tutorials): 79 posts - [Guides](https://prostdev.com/category/guides): 33 posts - [Opinion](https://prostdev.com/category/opinion): 11 posts - [News](https://prostdev.com/category/news): 7 posts ### Tags - [AI](https://prostdev.com/tag/ai): 5 posts - [Algorithms](https://prostdev.com/tag/algorithms): 4 posts - [Anypoint Code Builder](https://prostdev.com/tag/anypoint-code-builder): 10 posts - [Anypoint Exchange](https://prostdev.com/tag/anypoint-exchange): 2 posts - [Anypoint MQ](https://prostdev.com/tag/anypoint-mq): 2 posts - [Anypoint Platform](https://prostdev.com/tag/anypoint-platform): 13 posts - [Anypoint Studio](https://prostdev.com/tag/anypoint-studio): 22 posts - [API](https://prostdev.com/tag/api): 13 posts - [AWS](https://prostdev.com/tag/aws): 2 posts - [CI/CD](https://prostdev.com/tag/ci-cd): 8 posts - [CloudHub](https://prostdev.com/tag/cloudhub): 12 posts - [Content Creation](https://prostdev.com/tag/content-creation): 7 posts - [CurieTech AI](https://prostdev.com/tag/curietech-ai): 2 posts - [cURL](https://prostdev.com/tag/curl): 2 posts - [Data Cloud](https://prostdev.com/tag/data-cloud): 5 posts - [DataWeave](https://prostdev.com/tag/dataweave): 49 posts - [Docker](https://prostdev.com/tag/docker): 8 posts - [Flex Gateway](https://prostdev.com/tag/flex-gateway): 2 posts - [GitHub](https://prostdev.com/tag/github): 6 posts - [GitHub Actions](https://prostdev.com/tag/github-actions): 6 posts - [Groovy](https://prostdev.com/tag/groovy): 2 posts - [Hardware](https://prostdev.com/tag/hardware): 2 posts - [HTTP](https://prostdev.com/tag/http): 2 posts - [Java](https://prostdev.com/tag/java): 4 posts - [JMS](https://prostdev.com/tag/jms): 4 posts - [Kafka](https://prostdev.com/tag/kafka): 2 posts - [Kubernetes](https://prostdev.com/tag/kubernetes): 2 posts - [macOS](https://prostdev.com/tag/macos): 2 posts - [Markdown](https://prostdev.com/tag/markdown): 2 posts - [Maven](https://prostdev.com/tag/maven): 3 posts - [MuleSoft](https://prostdev.com/tag/mulesoft): 111 posts - [MUnit](https://prostdev.com/tag/munit): 2 posts - [Oracle](https://prostdev.com/tag/oracle): 6 posts - [Postman](https://prostdev.com/tag/postman): 5 posts - [Python](https://prostdev.com/tag/python): 5 posts - [RAML](https://prostdev.com/tag/raml): 3 posts - [REST](https://prostdev.com/tag/rest): 5 posts - [Runtime Fabric](https://prostdev.com/tag/runtime-fabric): 2 posts - [Salesforce](https://prostdev.com/tag/salesforce): 10 posts - [SAML](https://prostdev.com/tag/saml): 2 posts - [Smart Home](https://prostdev.com/tag/smart-home): 3 posts - [Solace](https://prostdev.com/tag/solace): 4 posts - [Spring](https://prostdev.com/tag/spring): 2 posts - [SSO](https://prostdev.com/tag/sso): 2 posts - [Visual Studio Code](https://prostdev.com/tag/visual-studio-code): 9 posts ## Full content - [llms-full.txt](https://prostdev.com/llms-full.txt): All posts and video transcripts concatenated as Markdown.