We build on the JVM because it is everywhere, runs fast enough, and lets us pick a language that fits our brain. The hard part is not syntax. The hard part is concurrency. Threads, actors, futures, channels, streams. Each one promises less pain, more throughput, fewer late night pages. Today…
Category: Software Engineering
Comprehensive insights into building, architecting, and managing software systems. From code craftsmanship to team dynamics, explore the technical and organizational aspects of software development.
Multisite Management in AEM: Structure before Scale
Multisite Management in AEM sounds fancy until a rollout splashes across twenty locales and breaks three markets before lunch. With AEM 6.1 fresh on our servers and Touch UI getting real use, the temptation is to stamp out sites first and sort out the tree later. That path is fast…
Bringing Omniture Data to the Team Room
Every team room I visit has screens with burndown charts, Git commits, and a wall with sticky notes that always fall off after lunch. The one thing that rarely makes it to that wall is the voice of the customer in numbers. I mean the actual click paths, search terms,…
Static Analysis that Pays for Itself
Static Analysis that Pays for Itself What if the next bug you prevent saves your sprint before it even starts? That is the bet behind static analysis. Not the buzzword kind. The practical kind that runs in your editor or on your build and points at mistakes you can fix…
Customizing Alfresco Workflows: Practical Notes
I still remember the Friday when a simple approval stalled right before a product launch. Everyone blamed the server. The real issue was a missing property in the workflow model that the task form expected. One tiny mismatch and the whole queue froze. That night taught me this: Alfresco workflows…
Target and AEM: Personalization that Behaves
Target and AEM: Personalization that Behaves. AEM CQ from a practitioner’s perspective with timeless lessons. Real talk on Adobe Target with AEM, what works, what bites, and how to keep your pages calm while they adapt to each visitor. Dialogue: the marketer, the developer, and the page that keeps flickering…
Privacy, Consent, and First-Party Data with Unomi
What does privacy look like when your site wants to remember people but your visitors just saw Apple talk about content blockers at WWDC and every EU site flashes a consent banner the second you land on it. Is there a way to keep personalization alive without sneaking around behind…
Optional in Practice: Null-Safety without Drama
Why are we still tripping on null? Null pointer is still the top crash in production logs. We have better servers, fancier build tools, and yet a tiny ghost sneaks in and flips the table. Java 8 gave us Optional. Not as a silver bullet. As a seatbelt. The point…
Flaky Tests: Diagnosing and Fixing
Flaky tests have a way of showing up right when coffee runs out. Picture this. It is late, the pull request is merged, Jenkins goes green, and the team chat posts the celebratory emoji. Ten minutes later the same build turns red on a re run with no code change….
Interoperability on the JVM: Practical Pitfalls
“Interoperability is where bright ideas meet old decisions.” Working on the JVM feels like living in a crowded apartment with great roommates who forget to wash the dishes. You get Java 8 lambdas, a bit of Scala sugar, some Groovy tests, maybe a Clojure script to poke a service. Everything…