New tutorial every Tuesday. Watch the video on YouTube, or read the written walkthrough on Substack — whichever way you learn best.
Stop reading raw properties in HTL. @Model, @ValueMapValue, adapting a resource — typed data, and the end of "fine for learning, not how real projects ship it".
data-sly-use, data-sly-test, data-sly-list, data-sly-resource, data-sly-template — the attributes that build the markup expressions fill.
Your .html files aren't HTML — they're HTL. The ${…} expression, the objects it reads, operators, and the display contexts that keep every value safe.
Categories, dependencies, embedding — and why the URL has that long hash in it.
How a URL becomes a resource becomes a script — resource types, super types, selectors and search paths.
Templates, policies, structure and initial content — and why the Teaser was allowed on the page.
A Teaser dialog built from scratch — Granite UI fields, tabs, validation, and a multifield inside a multifield, down to the JCR.
A Card component built live in CRXDE: dialog, HTL, template policies, the JCR round trip — and exporting it to code before a deployment eats it.
The folder structure, the pom.xml, and the commands to build it and deploy to your local instance.
Setting up AEM locally from scratch, installing WKND, building a real page with components, and going live.
Where AEM fits in Adobe Experience Cloud, the Sling / JCR / OSGi engine underneath, and the hotel analogy that makes it click.
The real reason AEM practitioners have nowhere to go for good content — and why I'm changing that.