AI transformation
Private LLMs, AI-assisted coding workflows, CMS automation, and legacy modernization.
My recent AI modernization work is one part of a broader portfolio: 20+ years leading Adobe.com engineering, managing web and marketing automation teams at Absorb, and combining architecture, product judgment, SEO, analytics, design collaboration, and delivery systems into production web experiences.
Private LLMs, AI-assisted coding workflows, CMS automation, and legacy modernization.
React, Next.js, AEM, Contentful, CI/CD, analytics, SEO, and production web systems.
Management across development, website, and marketing automation teams.
Private LLMs, AI-powered CMS workflows, Codex and Claude-assisted development, automated refactoring, and production content generation.
React, Next.js, Node, PHP, Java, AEM, Contentful, CI/CD, DevOps automation, testing, and legacy modernization.
Management across website, development, and marketing automation teams, with product ownership across CMS, growth technology, and engineering workflows.
SEO, analytics, Marketo, Salesforce, marketing automation, developer metrics, Figma, Jira, and cross-functional delivery.
Tooling Range
Career Depth
Lead Technical Product Manager
2022-2025
Led website, development, and marketing automation work across platform, CMS, growth technology, and AI transformation initiatives.
Senior Front-End Engineer / Technical Lead
2008-2022
Built and modernized Adobe.com experiences, CMS-driven applications, and large-scale front-end platforms serving broad global audiences.
Full-stack developer, trainer, and support tools developer
Pre-2008
Delivered client websites, commerce experiences, support tooling, and training systems across JavaScript, CSS, PHP, ASP.NET, and related web stacks.
Selected Work
Mar 2015
React and AEM-driven dynamic presentation for Adobe's product library.
Sep 2013
Commerce-focused Adobe product page built with React and Adobe Experience Manager.
Jun 2008
Personalized Adobe.com homepage implementation shaped by customer interest and owned Adobe products.
2011-2014
Drupal 7 implementation, custom HTML, CSS, PHP, JavaScript, theme development, and site administration.
2007-2008
ASP.NET, CSS, and JavaScript development for a brand redesign.
2007
Product website work spanning e-commerce and customer community features.
Featured Case Study
$(function () {
$("#promo-toggle").on("click", function () {
$(".promo-panel").toggleClass("is-open");
var current = $("#promo-copy").text();
if (current === "Legacy Promo") {
$("#promo-copy").text("Modern Promo");
} else {
$("#promo-copy").text("Legacy Promo");
}
});
$.get("/api/offers", function (data) {
$("#offer-count").text(data.total);
});
});'use client';
import { useEffect, useState } from 'react';
type OfferResponse = { total: number };
export default function PromoPanel() {
const [isOpen, setIsOpen] = useState(false);
const [copy, setCopy] = useState('Legacy Promo');
const [offerCount, setOfferCount] = useState<number | null>(null);
useEffect(() => {
async function loadOffers() {
const res = await fetch('/api/offers');
const data: OfferResponse = await res.json();
setOfferCount(data.total);
}
loadOffers();
}, []);
return (
<section className="panel">
<button
id="promo-toggle"
onClick={() => {
setIsOpen((value) => !value);
setCopy((value) =>
value === 'Legacy Promo' ? 'Modern Promo' : 'Legacy Promo'
);
}}
>
Toggle promo
</button>
<div className={isOpen ? 'promo-panel is-open' : 'promo-panel'}>
<p id="promo-copy">{copy}</p>
<p>Offer count: {offerCount ?? 'Loading...'}</p>
</div>
</section>
);
}Not even close. The full frontend migration into Next.js took about 10 hours between two days, and the PHP modernization work took about 4 hours to not only resolve all the out of date functions, but also to add new functionality to bring the project up to modern standards. The longest part of the whole effort was probably waiting for DNS servers to finally agree that I really did create a new email domain and yes, it should be allowed to verify already so I can send out my emails.
Let me tell you, with modern day standards that can format beautiful HTML emails from Node scripts... in a matter of seconds, I was done with the actual code to write the emails before DNS even knew what hit it.
Not exactly, no. It's much more than that. The part that really speeds things up is knowing the state of the project, what you want it to do, what you want it to look like, and then working with AI right in your development environment (In my case, The "new-at-the-time-of-this-article" Codex 5.4 agent) over the course of lots of questions back and forth. It does take some trial and error, and it certainly does still help to have the knowledge of what it's supposed to do if you were to write it by hand.
With my 20+ years of professional development, I was able to work with Codex to show it what the site was, what the errors I'm seeing are, what it's supposed to do now, what my services are, all the connection settings for those services, and a strong idea of what the code should look like, as well as what the CMS components should do in order to share them across multiple cases. Otherwise, if left completely to its own devices, it might not create the most efficient code or CMS components.
Well, you have to be careful, because it can be, but that's where the developers and architects still come into play. I make sure the code is concise, clean, reusable and developer friendly. I refine the prompts to ask Codex further questions that help identify any issues there and keep doing so until it's in a state that I'm happy with. I also make sure the site is user friendly to devices, accessibility readers, and even page load speeds are kept in the 90+ range. Any major issues that would slow the page down (which also affects SEO value, by the way) are identified and addressed.
Well, in the case of those whole-site conversion projects, yes. However, I can also just start completely from scratch and build an entire application by asking Codex the right questions and pointing to the proper services. I mean, you didn't think I built this portfolio site by hand after just boasting about AI's capabilities, did you?
And how can this be? For he IS...