Home

Emberjs.adaptTo(AEM)

Emberjs and AEM Emberjs is a popular framework for ambitious web applications. It can be used to create Single Page Applications or SPA. Emberjs can be used with AEM. Here is a simple approach to getting Emberjs working inside AEM. Getting Started Follow the tutorial from RequireJS and AEM 6....

CQ Haiku: Analytics

web leads submitted without any analytics trees fell silently I'm sure many of us in the Web Development world have run into this scenario: you're 70-85% of the way through a website implementation and someone says "oh, hey... we need to add analytics."  So a ticket is added into the backlog, a s_code.js file gets added into source control and some klugy JavaScript library gets cobbled together to track most (but not all) of what visitors...

Requirejs and AEM 6. Kiss.

Following the KISS principle, let's get requirejs working inside AEM. Table of Contents Getting Started with Requirejs and AEM Setup Create project using maven archetype Getting Requirejs Download Requirejs Setup Requirejs Setup jQuery Wire Up Clientlibs Clientlibs Vendor image Setup AEM Simple Test Test component image Test component results image...

Creating a site footer in AEM 6 using Sightly and Sling Models

The Adobe-developed and recently-donated-to-Apache-Sling project Sightly project has been out for a little under a year now, alongside Adobe Experience Manager 6, and has slowly been amassing documentation and gaining presence. The server-side templating language aims to give a facelift to the web development facet of Java-based software stacks, Adobe's...

CQ Haiku: JCR vs. Sling

Adapt to Node like Assembly inside Java Use Sling API Quite often I see code, especially from less experience developers, with something like this: Node node = resource.adaptTo(Node.class); String property = null; try{ property = node.getProperty("myProperty").getString(); } catch (RepositoryException re){ log.error("Exception accessing myProperty", re); } Or even scarier, there may be just a global exception handler for the particular method. Either way, this code is a lot more fragile than it needs to be. If...

AEM-Lingotek Translation Connector Webinar

Are you using a custom or legacy integration for managing your translations in AEM?  Are you interested in supporting both machine and human translation? Do you want to make your translation process easier, cheaper and more reliable? If so the AEM-Lingotek Translation Connector Webinar is for you! Now it's easy to quickly translate your content directly from within Adobe Experience Manager (AEM) using the new Lingotek - Inside AEM Connector. Developed by Six Dimensions, an Adobe Business...

Embedding Oak Index Configurations into a Package

AEM 6 ships with a new repository, CRX3 which is based on Apache Oak, a subproject of the Apache Jackrabbit project.  This repository promises significant performance increases over CRX2, however it does require a bit more work to setup.  Unlike CRX2, CRX3 requires you to explicitly declare which fields will be indexed.  If a field is not indexed, you will see an error like the one below in the error.log and significant performance degredation: 16.01.2015 13:56:45.206...

Taking Advantage of Git Branch Descriptions

If you're anything like me, you may accumulate a sizable number of branches locally over time. Based on old standards and what I'd consider some good practice, my branch names always follow the same format: myLDAPName/Issue# For example, jboyle/1641. While in my case this maps directly to a JIRA issue and is short and easy to type, it isn't very descriptive and after creating a number of branches, it becomes challenging to remember what branch...

ModifiableValueMap Not Found: Considerations in Using ModifiableValueMaps in an API

So let's just say you are designing an API which allows both reading and writing of attributes for a Resource.  Of course, you want to use consistent code to persist the values, so you use the (relatively) new CRUD features in the Sling API to both get and set the property values.  To save code, you might use a ModifiableValueMap for both operations, which works great in author as an administrative user.   The Problem At some...