A Developers Blog

This blog has moved to GitHub, and you should be redirected shortly...

Friday, January 1, 2016

AEM Gems - Oak Lucene Indexes

Adobe will be holding another "AEM Gem" on January 20th at 11 A.M. - 12:00 P.M. EST.

This session will be a technical deep dive on Oak Lucene Indexes and how they can be used to get your queries perform better. This gem will also provide insight into how asynchronous indexing works and how it can be monitored.

Here is a link to sign up if you are interested: Register

This session will be hosted by Chetan Mehrotra and Alex Parvulescu.

Update: 3/23/2106

Here is a link to the recorded presentation and the slides: http://dev.day.com/content/ddc/en/gems/oak-lucene-indexes.html

Labels: ,

Friday, December 18, 2015

Ask the Community Experts Session: Deep Dive into AEM and Translations

Adobe will be holding another "Ask the Community Experts Session" on January 19th at 11 A.M. - 12:00 P.M. EST.

This is a follow up on the AEM Gems session AEM 6.1 Translation Integration & Best Practices that can be viewed here: http://bit.ly/1YfAofQ

Join this session for a deep dive into the best practices, and for tips and tricks for using translation within the Experience Manager.

Here is a link to sign up if you are interested: Ask the Community Experts

This session will be hosted by Mathias Siegel and Akshay Madan.

Labels: ,

Friday, November 20, 2015

Ask the Community Experts Session: AEM Apps Deep Dive

Adobe will be holding another "Ask the Community Experts Session" this month on November 24th at 11 A.M. - 1:00 P.M. EST.

By attending this session you will gain a better understanding of:
  • Using AEM Apps
  • Ask questions related to using AEM Apps for mobile apps solutions
If you have not attended one of these AEM sessions, they are a great chance to listen to some of the best experts in the industry, a great place to ask questions, and a good way to start networking. 

Here is a link to sign up if you are interested: Ask the Community Experts

This session will be hosted by Scott Macdonad, and Ken Beaton.

Labels: ,

Tuesday, September 29, 2015

AEM Gems - Customizing Dialog Fields in Touch UI

On October 7th, 2015, at 11:00 AM - 12:00 Noon EST, Adobe will be having a session on customizing the dialog fields in the Touch UI.

During this session you will learn how to implement custom fields, or widgets, for Touch UI dialog in AEM 6.1. The goal of this session is to teach you things that were previously done in the Classic UI can now be done using the Granite and Coral UI.

These things include:

  • Creating a new field
  • Extending an existing field
  • Handling validation
  • Handling events

This GEM is Presented by: Christanto Leonardo and Christian Meyer

You can register here for the event: AEM GEM

Labels: ,

Monday, September 28, 2015

AEM 6.1 Translation Integration and Best Practices Q&A GEM - APAC

On October 14th, 2015, at 1:00 - 1:30 AM EST, Adobe will be having a live Q&A session on the AEM 6.1 Translation Integration and Best Practices session that is on September 30th, 2015.

This session is being held for the AEM community members that are India. If you were not able to attend the September 30th session, it is recommended that you watch the recorded session and have your questions ready for this event. The recording for the September 30th session should be available on October 1st.

This GEM is Presented by: Christine Duran, Sr Manager Translation Technologies, Adobe, and Mathias Siegel, Sr Product Manager, Adobe Experience Manager

You can register here for the event: AEM GEM

Labels: ,

Thursday, September 24, 2015

AEM 6.1 Translation Integration and Best Practices GEM

On September 30th, 2015, Adobe will be having a live webinar on AEM 6.1 Translation Integration and Best Practices.

Adobe will present enhanced translation integration capabilities in AEM and best practices for managing multilingual web sites.

During this session you will learn how to:
  • structure global websites in AEM 
  • use language copies/ live copies/ MSM 
  • how to integrate translation service providers for successful completion of translation projects

This GEM is Presented by: Christine Duran, Sr Manager Translation Technologies, Adobe, and Mathias Siegel, Sr Product Manager, Adobe Experience Manager

You can register here for the event: https://communities.adobe.com/content/usergenerated/content/cush/en/communities/aem_technologistsdevelopersarchitects/events/_jcr_content/par/calendar/aem_gems_aem_6_1_tra.form.html/content/cush/en/communities/aem_technologistsdevelopersarchitects/events/upcoming-event-detail?logged_in=true

Labels: ,

Wednesday, September 23, 2015

Ask the Community Experts Session: AEM &Dispatcher

Adobe will be holding another "Ask the Community Experts Session" this month on September 29th at 11 A.M. - 12:00 P.M. EST.

By attending this session you will gain a better understanding of:

  • The Dispatcher
  • Best practices for configuring, using, and securing communication between Dispatcher and AEM
  • When it is appropriate to disable the dispatcher

If you have not attended one of these AEM sessions, they are a great chance to listen to some of the best experts in the industry, a great place to ask questions, and a good way to start networking. I look forward to seeing you all there.

Here is a link to sign up if you are interested: Ask the Community Experts

This session will be hosted by Scott Macdonad, and Jörg Hoh.

Labels: ,

Sunday, September 6, 2015

IBM WebSphere Commerce Integration for AEM GEM

On September 9th, 2015, Adobe will be having a live webinar on an IBM WebSphere Commerce Integration for AEM.

The Commerce Integration Framework (CIF) is an AEM add-on that accelerates any eCommerce integration project by providing documented integration patterns, reference code and components. The IBM WebSphere integration package is a specialized CIF reference implementation for IBM’s WebSphere eCommerce platform. In this session we will guide you through the different integration features with deep-dives into the code. You will learn how to customize, extend and test your integration.

This GEM is Presented by: Martin Buergi Product Manager, Adobe and Markus HaackSenior Developer, Adobe.

You can regisiter here for the event: http://dev.day.com/content/ddc/en/gems/ibm-websphere-commerce-integration-for-aem.html

Update (9/23/15) - You can watch the recorded session here: https://seminars.adobeconnect.com/_a227210/p3jzqe0k0xa?launcher=false&fcsContent=true&pbMode=normal

Labels: ,

Sunday, August 16, 2015

AEM Interview Questions PDF

When you are preparing for technical interview, it is sometimes beneficial to know what types of questions that may be asked during your interview.

Instead of having to have you read through multiple posts, I figured it would be beneficial if all of the questions were located in one place.

So, I decided to create a PDF version of all the interview questions and answers that I have previously posted.

Inside the document, you will find a table of contents that lists all of the questions, and what page they are located on in the PDF. Also, for each question there are references to where you can read more information on the topic.



If you are interested in obtaining a copy of the PDF, you can download the PDF by clicking on the pop out button in the embedded window, or by downloading it from here: AEM Interview Questions PDF

I hope you find the PDF beneficial. If you have any questions or comments, please feel free to post them below.

Labels: , ,

Sunday, August 9, 2015

August Ask the Community Experts Session: Personalization & segmentation with AEM & Adobe Campaign

Adobe will be holding another "Ask the Community Experts Session" this month on August 25th at 11 A.M. - 11:30 A.M. EST.

In this session, you will learn how you can use AEM and campaigns to create personalization and segmentation experiences.

If you have not attended one of these AEM sessions, they are a great chance to listen to some of the best experts in the industry, a great place to ask questions, and a good way to start networking. I look forward to seeing you all there.

Here is a link to sign up if you are interested: Ask the Community Experts

This session will be hosted by Scott Macdonad and Dan Klco.

Labels: ,

Monday, July 13, 2015

July Ask the Community Experts Session: Advanced AEM Component Development

Adobe will be holding another "Ask the Community Experts Session" this month on July 28th at 11 A.M. - 12:00 P.M. EST. This session will be discussing the following topics:
  • Creating components that use CQ Ext APIs
  • Building custom Xtypes
  • Invoke Sling Servlets
  • Building advanced dialogs for components
If you have not attended one of these AEM sessions, they are a great chance to listen to some of the best experts in the industry, a great place to ask questions, and a good way to start networking. I look forward to seeing you all there.

Here is a link to sign up if you are interested: Ask the Community Experts

This session will be hosted by Scott Macdonad, Jaison Sunny, and Praveen Dubey.

Labels: ,

Sunday, June 21, 2015

Ask the Community Experts Session: Adobe Experience Manager Technical Documentation

Adobe will be holding another "Ask the Community Experts Session" this month on June 23rd at 11 A.M. - 12:00 P.M. EST. This session will be focusing on the changes that have been to the AEM documentation with the release of 6.1. During this session you will get to:
  • Learn about the latest updates made to the AEM documentation
  • Get helpful hints to quickly find what you’re  looking for
  • See content for the latest release of Experience Manager
  • Learn about the AEM documentation roadmap
  • Meet some of the team 
  • Ask questions and give your feedback

If you have not attended one of these AEM sessions, they are a great chance to listen to some of the best experts in the industry, a great place to ask questions, and a good way to start networking. I look forward to seeing you all there.

Here is a link to sign up if you are interested: Ask the Community Experts

This session will be hosted by Scott Macdonad and Tyler Ruston.

Labels: ,

Tuesday, June 2, 2015

AEM 6.1

If you have not hear, Adobe has just recently released Adobe Experience Manager 6.1. This was released on May 28th. This new release provides new and enhanced functionality, key customer fixes, high priority customer enhancements, and general bug fixes. This release includes all of the 6.0 feature packs, hot fixes, and service pack releases.

You can find a list of "what is new" in the release notes here: http://docs.adobe.com/docs/en/aem/6-1/release-notes.html

You can find the complete documentation here: http://docs.adobe.com/docs/en/aem/6-1.html

Labels: ,

Tuesday, May 26, 2015

AEM Interview Questions Part 8

This is part eight of my AEM interview questions. You find the other parts here:

Part 1 - Part 2 - Part 3 - Part 4 - Part 5 - Part 6 - Part 7 - PDF

Here are some more AEM interview questions that could come up during a technical interview:


QWhat is the Query Builder?

A: The Query Builder API is used will allow you to use the builder to accepts any query description, create and run an XPath query, and filter the result set.


This is useful because it will allow you to search through the whole repository. It can also be used to fine where certain nodes are used.

    Q: How do you move content from one server to another?

    A: You can move content from one server to another in two ways. One way is to using the package manager to create a package of all the content you would like to move. Once this is done, download the package and install it in the new server.


    You can also set up a replication agent to replicate this content to another server.

    Q: Are there any components that you have used in your project that are not relevant to an out of the box component?

    A: This is mostly an experienced based question that is likely to come up in one form or another. Be prepared to discuss these components in full detail by talking about how they functioned, your thought process behind them, etc.

    I plan to add more interview questions to this blog, so make sure to check back.

    I hope you enjoyed this post. Please feel free to post any comments below.

    Labels: ,

    Wednesday, May 6, 2015

    AEM Interview Questions Part 7

    This is part seven of my AEM interview questions. You find the other parts here:

    Part 1 - Part 2 - Part 3 - Part 4 - Part 5 - Part 6 - 
    Part 8 - PDF

    Here are some more AEM interview questions that could come up during a technical interview:


    Q: How can you inherit properties from one dialog to another?


    A: You can inherit properties from one dialog to another if the new component has the “sling:resourceSuperType” and this property is set to the base component. This will automatically inherit all the properties from the original dialog.

    If you only want to inherit certain tabs from a dialog, you can use the “cq:include” xtype to inherit just that tab.

    Q: What are Clientlibs?

    A: AEM allows you to create Client-side Library Folders, which allow you to store your client side code in the repository, organized it into categories, and define when and how each category of code is to be served to the client.

    These folders are a nice way of keeping all of your JavaScript and CSS files in one location, and a way to call all the files with one line of code.

    Q: What are workflows?

    A: Workflows are a way to automate Experience Manager activities. They are a series of steps that are executed when they are triggered. Some examples of these steps are activating a page, sending an email, approving a page, etc.

    Workflows can be used to implement approval processes and to receive sign-off by various participants.

    Q: What is FileVault?

    A: FileVault is a tool that is offered by Adobe that will map the content of the CRX instance to your file system. The VLT tool is similar to a Subversion client since it will allow you to checkout content and to check-in content.

    I plan to add more interview questions to this blog, so make sure to check back.

    I hope you enjoyed this post. Please feel free to post any comments below.

    Labels: ,

    Tuesday, April 28, 2015

    AEM Interview Questions Part 6

    This is part six of my AEM interview questions. You find the other parts here:

    Part 1 - Part 2 - Part 3 - Part 4 - Part 5 - 
     Part 7 - Part 8 - PDF

    Here are some more AEM interview questions that could come up during a technical interview:


    Q: What is the difference between Parsys and Iparsys?


    A: Parsys is a compound component that lets authors add components of different types to a page and contains all other paragraph components. Iparsys is a paragraph system that will allow to inherit the parent paragraphs from the parent.

    Q: Can you restrict certain users from seeing digital assets?

    A: Yes, you can restrict access to certain folders in the DAM by using closed user groups. You can do this from the digital assets menu, right click on the folder that you want to add this property to, and click “properties”. Then you go to the CUG tab and add the required information.

    Q: What is segmentation?

    A: Segmentation is used when you want to target your content towards your sites visitors in order to offer a more personalized site. This is done by analysing and characterizing a visitor’s activity on the website, their profile, and their activity on other websites.

      Q: What is the persistence manager?

      A: The persistence manager is handles the storage of the node/property tree that makes up the structure of the repository. This includes the name and the position of each node and property in the hierarchy. The default persistence manager is the TarPersistenceManager.

      Q: What is a farm file?

      A: A farm file is a file that is used in the configuration of a dispatcher. These are used when you want to break up the configuration file that is used for the dispatcher. They are then added under the “/farms” section in the “dispatcher.any” file.

      I plan to add more interview questions to this blog, so make sure to check back.

      I hope you enjoyed this post. Please feel free to post any comments below.

      Labels: ,

      Wednesday, April 15, 2015

      AEM Interview Questions Part 5

      This is part five of my AEM interview questions. You find the other parts here:

      Part 1 - Part 2 - Part 3 - Part 4 - 
      Part 6 - Part 7 - Part 8 - PDF

      Here are some more AEM interview questions that could come up during a technical interview:


      QWhat is a replication agent?


      A: A replication agent is used to publish active content from the author environment to the publish environment, to flush content from the dispatcher cache, and return user input from the publish environment to the author environment. The replication agents are central to AEM.

      Q: What is resource mapping?

      A: Resource mapping is used to define redirects, vanity URLs and virtual hosts for AEM. You can use resource mapping to prefix all requests with “/content” so the internal structure of the AEM site is hidden from your visitors. You can also use resource mapping to define a redirect so that all requests to the gateway page of your site are redirected to another site.

      Q: What is resource resolution in Sling?

      A: Resource resolution in Sling is how Sling takes a URL and attempts to resolve it to a script. This is done by extracting information from the URL. Here is an example URL:

      http://myhost/tools/spy.printable.a4.html/a/b?x=12

      It can be broken down as follows:

      Protocol
      Host
      Content path
      Selector(s)
      Extension

      Suffix

      Param(s)
      http://
      myhost
      tools/spy
      .printable.a4.
      html
      /
      a/b
      ?
      x=12

      Sling uses the content path that is extracted from the request to locate the resource in the JCR. When this resource is located, the sling resource type is extracted, and then it is used to located the script to be used for rendering that content.

        Q: What design patterns are used in AEM?

        A: Since AEM is built using OSGI, many of the design patterns for OSGI are valid. Some of these design patterns are Singleton (Service), Adapter Service, Resource Adapter Service, and Whiteboard. 

        Also, since AEM is modular, you should be able to use any design pattern in your application.

        Q: What is reverse replication?

        A: Reverse replication is the process of replicating content from publish environment to the author environment. In order to accomplish this you need a reverse replication agent on your author instance that is configured to get content from the publish environment outbox.

        I plan to add more interview questions to this blog, so make sure to check back.

        I hope you enjoyed this post. Please feel free to post any comments below.

        Labels: ,

        Friday, April 10, 2015

        AEM Tutorial On Building A Sightly Page Component

        The purpose of this tutorial is to show you how to build an AEM page component using sightly. You can read more about sightly here: Sightly

        For this tutorial we will be using crxde lite. This tutorial does not go into full detail, but does provide all the code that was used in the creation of this component for learning purposes.

        For this tutorial I was using: AEM 6.0. You should be able to follow along with other versions of this software.

        In order to follow along with this tutorial, you will need to have a basic project structure already set up, or you can follow along with this tutorial here:

        Basic Project Setup Tutorial

        If you have not completed the tutorial listed above, you can download a package from GitHub that has the completed project from here: AEM-Getting-Started. Just follow the instructions in the "readme" file to install the package into your instance of AEM.

        If you have completed the previous steps, we can get started.

        1. Once your instance of AEM is up and running, navigate to crxde lite. Navigate to the "myProject" folder, click on the "components" folder, and then click on the "page" folder.

        2. Right click on this folder and choose "Create Component". Enter the following information:


        Keep clicking the "Next" button until you can click the "OK" button.

        3. Right click on the component you just created, and choose "Create File". Name the file: simplePageSightly.html.

        4. Right click on the "simplePageSightly.jsp" file, and choose delete.

        5. Now, open the "simplePageSightly.html" file, and add the following code to it:

        6. Next we need to create a template for the page component. Right click on the "templates" folder, and choose "Create Template". An example is posted below:


        Click the "Next" button. In the "Allowed Paths" section add the following: /content(/.*)?
        Keep clicking the "Next" button until you can click the "OK" button.

        7. Next go to the websites console and choose the option to create a page. Make sure to choose the "Simple Page Template - Sightly" from the template options.

        8. Now open up the page you just created, and you should see your simple page component that you just created with sightly.

        Summary: This tutorial showed you how to create a simple page component by using sightly. You can build upon this page by adding content to it, or by making a full site.

        I hope you enjoyed this tutorial. If you have any questions or comments, please feel free to post them below.

        You can download a package of the component on GitHub from here: Sightly Page Component

        Labels: , ,

        Thursday, April 9, 2015

        April Ask the Community Experts Session: Touch UI Components

        Adobe will be holding another "Ask the Community Experts Session" this month on April 21st at 11 A.M. - 12:00 P.M. EST. This session will be focusing on workflows in AEM. The session will be giving an in depth look at building touch UI components, touch UI dialogs, and using the Touch UI based APIs meant for component development.

        If you have not attended one of these AEM sessions, they are a great chance to listen to some of the best experts in the industry, a great place to ask questions, and a good way to start networking. I look forward to seeing you all there.

        Here is a link to sign up if you are interested: Ask the Community Experts

        This session will be hosted by Scott Macdonad and Sreekanth Choudry Nalabotu. You can find Scott Macdonad's blog here: http://scottsdigitalcommunity.blogspot.com/

        Labels: ,

        Wednesday, April 8, 2015

        AEM Interview Questions Part 4

        This is part four of my AEM interview questions. You find the other parts here:

        Part 1 - Part 2 - Part 3 - 
        Part 5 - Part 6 - Part 7 - Part 8 - PDF

        Here are some more AEM interview questions that could come up during a technical interview:


        QHow does sightly differ from other templating systems?


        A: Sightly differs from other templating systems in three ways. Sightly is secure by default, it offers separation of concerns, and sightly is HTML5 because it is a valid HTML5 file. Sightly is secure by default because it automatically filters and escapes all variables being output to the presentation layer to prevent cross-site-scripting vulnerabilities.

        Sightly offers seperation of concern because it is purposely limited to ensure that a real programming language is used to express the corresponding logic. This is done through the Use-API pattern.


        Q: Can you create a page without a template?

        A: Pages are usually created by selecting a template for the page when you create them in the Website console. However, a page can be created manually in the crxde by using the same properties that are created when you make a page in the Website console.


        For example, in crxde under the content folder, create a node with the following type “cq:Page” and save it. Then add a child node with the following type “cq:PageContent”. Then you can add the required properties to show any components you want displayed on the page.

        It is generally not good practice to create pages manually.

        Q: What are xtypes and how are they useful in AEM?

        A: In the ExtJS language an xtype is a symbolic name given to a class. In AEM these xtypes are widgets that used in the creation of components. AEM comes with a bunch of widgets that are available out of the box. You can also create and define your own xtype to be used in AEM.

        An example of an xytpe is when you are creating your dialog for your component, and you want the author to be able to enter text, you would add a “cq:Widget” that has an xtype property of “textfield”.

          Q: How do you add properties to the Page Properties dialog?

          A: You can add properties to your page properties dialog by copying the dialog located under “libs/foundation/components/page/dialog” and adding it to your page template. This will allow you to add new tabs and add new properties that you would like the author to chooses from for pages that use that template.


          You could modify the original page dialog as well to get the same result, however it is not recommended.

          Q: What is the difference between the Author and Publish environment?

          A: A production environment usually has two difference instances of AEM running. One is the author instance, and the other is the publish instance. These two instances are usually kept in two different settings.

          The author instance is where you will enter and manage content for your website. This is where you will administer your site as well. The author environment is usually kept behind a firewall. The publish instance is where you will make your content available for your targeted audience. The publish environment is usually kept in a Demilitarized Zone (DMZ).

          I plan to add more interview questions to this blog, so make sure to check back.

          I hope you enjoyed this post. Please feel free to post any comments below.

          Labels: ,