Martin Bach

@martindba.bsky.social

Product Manager @ Oracle. Ex @Enkitec. Technology enthusiast. Author, blogger, speaking at user groups. Former Ace Director, OCM. I work for Oracle but do not speak for them

🚀 Blog post update! A recent conversation inspired me to refresh a post on deploying MLE/JavaScript with SQLcl & Liquibase. New coverage includes: ✨ SQL-format Liquibase changelogs 🛠️ SQLcl Projects for Database CI/CD Useful if you are on Oracle AI Database: martincarstenbach.com/2024/08/15/c...

Create MLE/JavaScript modules using Liquibase

Multilingual Engine, or MLE for short, allows developers to use the hugely popular JavaScript language to write server-side code since Oracle Database 23ai has been released for Linux/Intel and Lin…

martincarstenbach.com

Found another practical use case for AI: help me fix the discrepancy between inline code and regular text on my blog. Took me 2 minutes to fix what would otherwise meant a lot of internet searching 🎉

Hardcoding passwords into scripts always feels like a temporary solution… …right until it ends up in Git 😅 I wrote a short post on handling secrets more safely in SQLcl projects and completing admin tasks without creating a security nightmare: martincarstenbach.com/2026/05/25/c...

Handling Secrets Safely in SQLcl Projects Deployments

TL;DR: for security reasons you cannot possibly store sensitive information in Git. There have been too many occasions where API keys, passwords, or other configuration data has been exposed. Abuse…

martincarstenbach.com

Tell me you have been in IT for a long time without telling me you have been in IT for a long time: $ set -o vi Now I’m trying to find out how to enable Emacs key bindings in zsh…

🚀 New post: JavaScript precision isn’t as safe as you might think 🤔 I break down how numeric precision loss happens in JavaScript, and how to avoid it. Especially for financial data and large numbers. The post applies to both node and MLE/JavaScript. 👇 martincarstenbach.com/2026/04/13/a...

Avoiding precision loss with MLE/JavaScript in Oracle AI Database 26ai

Oracle AI Database 26ai introduced Multilingual Engine (MLE), allowing you to run JavaScript inside the database. This feature bumps the number of languages available to write server-side code to 3…

martincarstenbach.com

I just read that 90% of all organisations who responded to the DORA 2025 survey adopted platform engineering. Ninety percent 🤩 That’s a pretty significant number. I’d love to hear from you how you/the team adopted platform engineering, in particular wrt Oracle database.

Do you use SQLcl in GitHub Actions? If so, you might like the latest update to gvenzl/setup-oracle-sqlcl. Release 1.3.0 allows you to pin a specific release to your pipeline. This is particularly useful for anyone using SQLcl Projects. Details 👇 martincarstenbach.com/2026/03/17/u...

Updated setup-oracle-sqlcl Action and why it matters for SQLcl projects

This is a short post announcing a small but important change in the way you install SQLcl in GitHub Actions. The latest release allows you to install a specific SQLcl release in addition to the lat…

martincarstenbach.com

Using Codex to generate unit tests for Oracle REST Data Services gave me a real productivity boost 🤖 Curious? I recorded a short video 📽️ showing my approach, with running commentary: martincarstenbach.com/2026/03/05/r... Do you have an internal platform? Use CI/CD? Let me know in the comments 🙏

Real productivity gains with AI: coding unit tests for your ORDS endpoints. A walthrough

After the completion of my little experiment writing unit tests with the help of AI I was so excited I spontaneously recorded a short video, too. In this video I’m walking you throw my code e…

martincarstenbach.com

Here's a short "life hack", allowing you to use utPLSQL in your CI pipeline. OK, right, you could do that before, but this time, if there are failed unit tests your pipeline run will abort. No need for any other software, just SQLcl to run the tests. martincarstenbach.com/2026/03/04/l...

Life hack: causing utPLSQL to raise an error in case of failed tests

The wonderful Symposium 42 community is always a source of inspiration, kindness and willingness to help. Many thanks to everyone for lending me an ear while ranting about utPLSQL (tongue in cheek …

martincarstenbach.com

Finally finding some time to dig deeper into the DORA 2025 Report. The recording of this webinar is very insightful in my opinion. For example, just throwing in AI without having thought about a platform might not provide the productivity gains you hoped for. www.thoughtworks.com/insights/rep...

The 2025 Dora Report

The DORA Report 2025, the industry's authoritative research on software delivery performance and engineering excellence, is now available. Get our insights.

thoughtworks.com

🚨New Blog post 🚨 Does your application receive JSON via REST calls? If so, how do you make you don't receive garbage data? Using JSON Schema is a neat way to do that. Here's an example using ORDS and Oracle AI Database 26ai (incl. server-side JavaScript)👇 martincarstenbach.com/2026/03/01/u...

Using JSON Schema to validate data submitted to the database via REST Calls

The title’s a mouthful (sorry!), but here’s the core idea: your application exposes REST endpoints through Oracle REST Data Services (ORDS). When a client uses POST to insert new records, the input…

martincarstenbach.com

🚀 New post: Handling query parameters in JavaScript-based Oracle REST Data Services (ORDS) endpoints Covers: • How ORDS exposes query parameters • Safe access & validation patterns • Pitfalls (implicit type conversion!) • Making endpoints more predictable 👉 martincarstenbach.com/2026/02/20/h...

Handling Query Parameters in JavaScript-based ORDS Endpoints

Oracle REST Data Services (ORDS) allows you to REST-enable your Oracle Database. REST is short for Representational State Transfer, and REST calls are typically used as your database API (Applicati…

martincarstenbach.com

With #JSON duality views in Oracle AI Database you can build a JSON interface over database tables These come with lost-update detection via ETags @martindba.bsky.social shows how this prevents conflicting writes for REST calls by using the if-match header

Optimistic Locking Made Easy: The Power of ETags in Action

JSON Relational Duality Views are one of the most remarkable features introduced with Oracle AI Database 26ai. They effortlessly blend the best of both worlds: relational and document, greatly simp…

buff.ly

D’oh! Scratched my head for 10 minutes asking myself why microdnf doesn’t find the local rpm. Turns out microdnf as it ships in Oracle Linux 9 simply can’t install local RPMs. Switching to the not quite as slim image helped.

Wait, what? In 2023 I bought 64GB DDR5-5600 for 210€. Today, if I wanted to get 64GB DRAM (identical spec) I have to part with 879€ 🤯 <insert your favourite combination of swear words here>

🚨 New blog post! I just migrated a PL/SQL app to JavaScript (yes—still inside the database 😎). As part of the experiment I put JSON Relational Duality Views + ETags to the test for optimistic locking. Spoiler: it works beautifully. Dive in 👇 martincarstenbach.com/2026/02/03/o...

Optimistic Locking Made Easy: The Power of ETags in Action

JSON Relational Duality Views are one of the most remarkable features introduced with Oracle AI Database 26ai. They effortlessly blend the best of both worlds: relational and document, greatly simp…

martincarstenbach.com

So far I only used the syntax highlighter block in Wordpress. I was today <n> years old when I noticed that the code block has syntax highlighting for many more languages than syntax highlighter . Plus it can do line numbers, display the language and add a copy button ☺️

screenshot showing some of the languages supported by wordpress's code block