Behavior, Content, Money – 3 Things you should never give away for free!!!

BCmoney MobileTV

AEM 6.5+ modernized Components

Posted by bcmoney on May 12, 2022 in Uncategorized with No Comments


No Gravatar

When I first started to work with AEM back in the AEM 6.1 days, I have to admit I was a little disillusioned with the few paltry OOTB components that came with very basic ExtJS-based “Foundation Components” that worked primarily in “ClassicUI”. AEM 6.2 was the first version that started really pushing a transition to the new “TouchUI”, even though it was already there in beta since CQ 5.6 and considered mature by Adobe (though not well-documented until much later leading to some hesitation in adoption) since AEM 6.1. As a result, we ended up with quite a mess in our codebase which we are constantly struggling and toiling to cleanup as best we can, but we’ve ended up in the following situation where way too many frameworks were mixed and matched based on different Devs/teams that worked on specific features (i.e. the high Technical Debt output situation with all the hallmarks of a “Feature factory”):

It was AEM 6.2 and beyond where TouchUI became the preferred Authoring experience and companies scrambled to build their Components to work well within both ClassicUI and (more importantly) TouchUI. Then, since AEM 6.3+ the platform introduced the concept of “CoreComponents”, which are basically a collection of open source general-purpose, highly authorable, reusable and extensible AEM Components available OOTB that will replace the legacy “Foundation Components” implemented using ExtJS which are now being phased out.

Having been elbow-deep in trying to migrate as many parts of our legacy AEM 6.1 codebase as possible to the latest and greatest AEM 6.5 platform capabilities, I’ve had plenty of “in the trenches” experiences trying to get things modernized. Recently, I was tasked with writing some backend and (optionally) frontend code to show how I would build a “fully modernized” AEM custom Component, the tempting if not perplexing “green field” conundrum for developers:

An example modernized component that can lookup Users from a specific 3rd party API could look something like the following hierarchy:

  • Jackson databind POJOs (JSON/XML-to-Object mapping)
  • UserLookupService (interface)
  • UserLookupServiceImpl (with OSGi R7 Declarative Service annotations)
  • UserLookupServlet (WebService that implements via @Reference)
  • UserLookupModel – Sling Model (backend Component, rather than WCMUsePojo that implements via @OSGiService)
  • User Lookup custom component (in “<APP_NAME>/src/main/content/jcr_content/apps/<APP_NAME>/custom/user-lookup” path)
  • user-lookup.html (HTL/Sightly component structure)
  • /js/user-lookup.js (client-side code could be vanilla JavaScript, framework-specific JS, SPA/PWA, Typescript and/or ES X syntax)
  • /css/user-lookup.less (styling could be LESS, SASS or vanilla CSS 3+)

Aside from creating these backend elements:

  • OSGI Service that can be used in multiple contexts
  • Servlet to proxy API calls through

It is also useful to experiment with:

Read the rest of this entry »

Continuous Testing and Shift-Left roadblocks in enterprise

Posted by bryan on September 15, 2018 in Uncategorized with No Comments


No Gravatar

This one goes out to all those stubborn QA Testers, “Business Users” & User Acceptance Testing (UAT) leads who insist on “waiting until everything’s 100% done” to even start writing Test Cases or carrying out time-consuming manual test scenarios which they undoubtedly repeat every time they need to test anything, all the while resisting “Shift-Left/Shift-Right” principles like Continuous Testing, Acceptance Criteria as test cases, and Test recording & automation/scripting for repetitive test tasks. Likewise it goes out to all those executives who take an indifferent approach to quality, ripe with understaffed QA departments that lets them continue to own corporate application sign-off and define testing practices, all while (quite inadvertently and often unbeknownst to them) acting as the primary bottleneck to delivery.

How to check CRC and Hashes on file/code downloads

Posted by bcmoney on July 13, 2018 in Uncategorized with No Comments


No Gravatar

Teaching kids to code with Scratch

Posted by bcmoney on May 20, 2017 in Uncategorized with No Comments


No Gravatar

Scratch the cat

2 books

Raspberry PI – Home Theatre & Arcade experiments

Posted by bcmoney on April 24, 2016 in Uncategorized with No Comments


No Gravatar

Just swap SD Cards and voila, you have an Arcade (or Home Theatre rivaling a “SmartTV”).

BC$ = Behavior, Content, Money

The goal of the BC$ project is to raise awareness and make changes with respect to the three pillars of information freedom - Behavior (pursuit of interests and passions), Content (sharing/exchanging ideas in various formats), Money (fairness and accessibility) - bringing to light the fact that:

1. We regularly hand over our browser histories, search histories and daily online activities to companies that want our money, or, to benefit from our use of their services with lucrative ad deals or sales of personal information.

2. We create and/or consume interesting content on their services, but we aren't adequately rewarded for our creative efforts or loyalty.

3. We pay money to be connected online (and possibly also over mobile), yet we lose both time and money by allowing companies to market to us with unsolicited advertisements, irrelevant product offers and unfairly structured service pricing plans.

  • Archives