DJ Adams
DJ Adams
DJ Adams
Hello, my name is DJ and this is my website. I'm a Developer Advocate at SAP.
Latest Posts
One of my goals this year is to learn more about the AWK programming language. I'm interested in not only the beauty of the language itself and the Unix history that surrounded it, but in how AWK shaped one of my favourite languages of...
As a Developer Advocate, I have the privilege of working with some amazing colleagues in that team, but also in the wider Developer and Community Relations organisation. For the size of the community, it's a small group, and the folks...
The traditional "shift left" strategy in software is about how we move testing, security considerations and quality assurance to an earlier stage in the architecture and development process. This strategy is a useful one which can be...
馃憠 Jump to the latest video. In the run up to SAP TechEd 2025, the Developer Advocates put together a series of short videos on tech topics, in a "Did You Know" series. A bit like our collection of YouTube Shorts "Good To Know" series (on...
The result of modifying existing queries can be a little unexpected at first. For example, you might have a query object where you want to replace the WHERE clause before you execute it. Here's how not to do it, and then how to do it....
In Part 2 of our current Hands-on SAP Dev live stream series on CXL with Patrice Bender, Patrice took some time to give us a glimpse of the power that CQL and CXL offers. It was in the context of answering a question from one of the live...
OData is a topic close to my heart. History I was around when RSS was growing up, and even contributed to the wider RSS community activities at the time. I was also around during the creation of Atom and the Atom Publishing Protocol...
(Get to all the parts in this series via the series post.) At the end of the previous part in this series we added @capire/common to the host project use-capire, and without doing anything else -- no referencing of this reuse package's...
In part 2 of the current Hands-on SAP Dev live stream mini-series on CXL, the core expression language in CDS, Patrice demonstrated how declarative constraints are actually realised, and it made me sit back and wonder. I thought I'd...
(Get to all the parts in this series via the series post.) In the previous part we published @qmacro/common. Let's start out here by creating a new simple CAP Node.js project and bringing in that @qmacro/common package; not only will...
(Get to all the parts in this series via the series post.) What we have from part 2 is a simple project myproj/ which relies upon a simple reuse package @qmacro/common. That reuse package currently exists only within a workspace within...
(Get to all the parts in this series via the series post.) In wrapping up the end of part 1 we looked forward to creating the simplest kind of reuse module, not only as an important fundamental building block but as a base for further...
I'm writing this short post so I can refer to it when I want to explain my use of services.cds when creating sample CDS models. I've found myself explaining multiple times across various blog posts1 so I thought it was time to fix that...
01 Jan 2026 Part 1 An introduction 07 Jan 2026 Part 2 Creating a simple reuse package 14 Jan 2026 Part 3 Publishing the simple reuse package 21 Jan 2026 Part 4 ...
You know the drill: instead of inventing your own versions of core model building blocks over and over again, use common types and aspects for reuse, like this: using { managed, cuid, Currency } from '@sap/cds/common'; namespace qmacro;...