Dan Klco
70 FOLLOWERS
The homepage on the web for Dan Klco, an experienced Adobe Digital Marketing Technical Lead, Solution Architect, Consultant, and Advisor. I started this blog to share the tools and other projects I've been working on, a sample of my work across different clients, solutions, and technologies, my recent blog posts, webinars, and whitepapers, mostly about technology and digital marketing, and..
Dan Klco
1y ago
<p>I had the opportunity to work with the Oak indexing team this year and took the opportunity scratch an itch I've had for some time: <a href="https://jackrabbit.apache.org/oak/docs/query/query-engine.html#query-option-offset-limit" >adding support for offset and limit options</a> in any Oak query including <a href="https://jackrabbit.apache.org/oak/docs/query/grammar-sql2.html#options" >JCR-SQL2</a> and <a href="https://jackrabbit.apache.org/oak/docs/query/grammar-xpath.html#options" >xpath</a>.</p> <p>The new offset and limit options ar ..read more
Dan Klco
1y ago
<p><br>Sometimes when I accidentally push to the wrong branch in git, things get so crazy I want to <a href="https://www.youtube.com/watch?v=uJLgKXp375I" >head to the beach and play guitar at you</a>:</p> <blockquote> I just want to push code around,<br>Well, I will, well, I will<br>I don't wanna push to master<br>No, I don't, no, I don't<br> I wanna take it for granted<br>Yeah, I wanna take it for granted<br>Well, I will, well, I will </blockquote>But seriously, there are few things more annoying than realizing tha ..read more
Dan Klco
1y ago
<p><br>Performance is <a href="https://developer.mozilla.org/en-US/docs/Learn/Performance/why_web_performance" >critical for any customer facing application</a>. </p> <p>For web projects optimizing performance involves cache tuning, CSS/JS minification, deferred loading, adaptive serving and more front end techniques. However, when creating dynamic pages server side, as is done in classic AEM development, you also need to optimize the server side performance. </p> <p>While caching can mitigate the need to render pages on the fl ..read more
Dan Klco
1y ago
<header> This article was originally posted at </header> <br> <p>Adobe Experience Manager (AEM) is an incredibly powerful tool, giving users and developers almost unlimited capabilities to deliver solutions. However to quote Uncle Ben:</p> <img src="https://www.danklco.com/images/posts/2023-07/great-power.webp" alt="Great Responsibility"> <br> <p>AEM’s content repository is a great power. The AEM content repository gives you tremendous flexibility in organizing and accessing content. However, this great flexibility can create great issues.</p ..read more
Dan Klco
1y ago
<br> <p>One of the common mistakes I've seen in customizing Oak Lucene Indexes is with the <a href="https://jackrabbit.apache.org/oak/docs/query/lucene.html#include-exclude" >included/query paths feature</a>. To understand why this is a common area for mistakes and what impact this has, you have to understand what the <i>includedPaths</i> and <i>queryPaths</i> configurations do.</p> <p>When executing an Oak query, you can supply constraints in the form of node types, property values or paths. As <a href="https://www.danklco.com/po ..read more
Dan Klco
1y ago
<br> <p>Recently, while helping a colleague with a challenging project, I was reminded of my three least favorite words to hear when starting an engagement: lift and shift.</p> <p>Once the flashbacks to nightmare projects of yore subsided, yet another reason for this project’s challenges were clear.</p> <p><em>Lift and shift</em>, for those fortunate enough to not be familiar with the term is a phrase used by salespeople and product owners to describe a project to move an application in its entirety to another platform. To the salesperson or pro ..read more
Dan Klco
2y ago
If you’ve been doing development with AEM / Apache Sling, you’re probably already familiar with a few different methods of implementing servlets:
Path-based servlets - Sling Servlets attached to defined paths.
Resourced-based servlets - Sling servlets attached to a resource type and (optional) method, selector and extensions
Script servlets - every component script you create is compiled into a Java servlet (you can see this with the FS Classloader console)
All of these servlets are part of the Apache Sling framework, however there’s an even lower level servlet framework you can ho ..read more
Dan Klco
2y ago
Access Control Lists or ACLs in AEM are both extraordinarily powerful and can be extremely complex. Luckily there are a few rules you can follow as a part of your AEM implementation to keep your ACL setup simple and easy to maintain.
Why are ACLs such a common stumbling-block for AEM projects and a common cause of customer issues? As mentioned, the model is powerful, but with that power comes significant complexity in behavior and evaluation. AEM's ACLs are powered by Apache Jackrabbit Oak's Authorization and Access Control module. This module is pluggable, allowing custom permissions, r ..read more
Dan Klco
2y ago
AEM as a Cloud Service Assets (AEMCS Assets) introduces a new method for processing assets, Asset Compute. With Asset Compute, newly uploaded assets are processed in the Adobe Runtime I/O microservice framework.
The advantage to this new architecture, is that this offloads the CPU and memory-heavy work of rendering renditions and reading metadata from binaries to a scalable, cloud framework vs being limited by (and even overwhelming) the server running AEM.
Along with this new architecture, a new feature in AEM Cloud Service Assets is that you can request reprocessing of assets. Reprocessing ..read more
Dan Klco
2y ago
In my previous post in the Demystifying Oak Search series on Traversal, I mentioned that to avoid unnecessary traversals, you should:
Use an index
This directive, is easy say and much harder to implement correctly in practice. For not only do you want to use an index, but you want every search constraint to be evaluated against said index.
While there are certain complex use cases where this isn't possible, even relatively simple queries can be run into traversal issues if you don't plan an test your queries against real data.
This post outlines some of the more common mistakes and gotchas wh ..read more