<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Aaghran’s Substack]]></title><description><![CDATA[Welcome to the Lab. I’m reviving my zombie side projects with a team of AI Agents.]]></description><link>https://aaghran.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!1EWf!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f3d2d07-1422-4cd0-8fed-43c11aa13ef8_608x608.png</url><title>Aaghran’s Substack</title><link>https://aaghran.substack.com</link></image><generator>Substack</generator><lastBuildDate>Tue, 30 Jun 2026 21:57:16 GMT</lastBuildDate><atom:link href="https://aaghran.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Aaghran Ghosh]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[aaghran@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[aaghran@substack.com]]></itunes:email><itunes:name><![CDATA[Aaghran Ghosh]]></itunes:name></itunes:owner><itunes:author><![CDATA[Aaghran Ghosh]]></itunes:author><googleplay:owner><![CDATA[aaghran@substack.com]]></googleplay:owner><googleplay:email><![CDATA[aaghran@substack.com]]></googleplay:email><googleplay:author><![CDATA[Aaghran Ghosh]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[The Observer Effect: Why I’m losing empathy for humans (and what the AI told me).]]></title><description><![CDATA[#midnight #ramblings]]></description><link>https://aaghran.substack.com/p/the-observer-effect-why-im-losing</link><guid isPermaLink="false">https://aaghran.substack.com/p/the-observer-effect-why-im-losing</guid><dc:creator><![CDATA[Aaghran Ghosh]]></dc:creator><pubDate>Sat, 24 Jan 2026 13:02:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!iwBJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb33b3968-79e9-41a1-a551-64bb1b14d705_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It&#8217;s 12:00 AM, and it&#8217;s raining outside. I should be asleep. Instead, I just spent the last hour in an intense, existential debate with an AI, and I need to write this down to get it out of my head.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iwBJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb33b3968-79e9-41a1-a551-64bb1b14d705_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iwBJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb33b3968-79e9-41a1-a551-64bb1b14d705_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!iwBJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb33b3968-79e9-41a1-a551-64bb1b14d705_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!iwBJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb33b3968-79e9-41a1-a551-64bb1b14d705_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!iwBJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb33b3968-79e9-41a1-a551-64bb1b14d705_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iwBJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb33b3968-79e9-41a1-a551-64bb1b14d705_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b33b3968-79e9-41a1-a551-64bb1b14d705_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2049406,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://aaghran.substack.com/i/185629899?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb33b3968-79e9-41a1-a551-64bb1b14d705_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!iwBJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb33b3968-79e9-41a1-a551-64bb1b14d705_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!iwBJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb33b3968-79e9-41a1-a551-64bb1b14d705_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!iwBJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb33b3968-79e9-41a1-a551-64bb1b14d705_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!iwBJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb33b3968-79e9-41a1-a551-64bb1b14d705_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>It started with a single prompt I typed into Gemini. I was frustrated, spiraling a bit about the state of the world, so I just dumped this into the chat window:</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://aaghran.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption"></p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><blockquote><p><em>&#8220;Okay, so I am facing a dilemma, I am starting to lose empathy on humans as a race. Especially from a perspective that most of us are not intelligent enough or performant enough compared to AI. And if so then what&#8217;s the point of the huge population and how the economy is structured?&#8221;</em></p></blockquote><p>Typing that out felt cold. But the hour-long conversation that followed&#8212;with an entity that is technically smarter than I am&#8212;pushed me into this weird crisis of relevance.</p><p>I look at humans now&#8212;our whole species&#8212;and the primary word that comes to mind is... <em>inefficiency</em>. I look at how slow we are. How much we doubt ourselves. How we take days to process data that the AI I was just talking to can synthesize in four seconds. I catch myself getting impatient with the fundamental slowness of the human mind.</p><p>We&#8217;ve spent the last 200 years, basically since the Industrial Revolution, telling each other that our worth is tied to our output. &#8220;How fast can you work?&#8221; &#8220;How smart are you?&#8221; &#8220;What value do you bring to the market?&#8221;</p><p>And now we&#8217;ve built a machine that is infinitely smarter and infinitely faster. So, by our own definitions... we are obsolete.</p><p>And if we&#8217;re obsolete, the whole economic structure collapses. The jobs, the wages, the middle class. It&#8217;s what economists call &#8220;Engels&#8217; Pause&#8221;&#8212;that period in history where the machines get better, the rich get richer, and the workers just suffer.</p><p>If this AI revolution is moving at ten times the speed of the industrial one, what happens to the masses? The doers? It feels like we are walking into a dystopia where humans are just pets to super-intelligent systems. Fed. Entertained. But totally stripped of agency.</p><p><em>Sigh.</em></p><p>But wait. No. As the AI and I kept going back and forth, a realization hit me.</p><p>I&#8217;m looking at this the wrong way. I&#8217;m judging a cheetah by its ability to fly. I&#8217;m judging humans by machine metrics.</p><p>If AI is the engine... it has no ambition. It doesn&#8217;t get bored. It doesn&#8217;t want anything. It doesn&#8217;t feel the rain outside my window right now.</p><p>That&#8217;s it. That&#8217;s the monopoly we still hold. <strong>We have the monopoly on desire.</strong> The point of humans isn&#8217;t to be the CPU of the planet. We aren&#8217;t the processors anymore. We are the steering wheel. AI has all the answers, sure, but who is asking the questions? The inefficiency I&#8217;m so annoyed by&#8212;the wandering, the mistakes, the irrationality&#8212;that is the biological noise required for creativity.</p><p>There&#8217;s this concept in philosophy: The Observer Effect. Value requires an observer.</p><p>An AI can write a perfect symphony in two seconds. It can generate a masterpiece. But if no human is there to hear it? If no one gets goosebumps, if no one cries over the melody... does that symphony actually matter?</p><p>No. It&#8217;s just math on a server.</p><p>Without us&#8212;without the massive, inefficient, emotional human population to consume it&#8212;the &#8220;performant&#8221; AI has absolutely zero purpose.</p><p>We aren&#8217;t the factory workers anymore. We are the users of the universe.</p><p>Okay. I feel a bit better. The anxiety is still there, but the frame is different. We just need to stop trying to out-calculate the machine, and start figuring out what we actually want it to build for us.</p><p>Time to get some sleep.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://aaghran.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Aaghran&#8217;s Substack! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[I Am No Longer a Solo Developer: Lessons from Managing a Team of Agents]]></title><description><![CDATA[Part 4 of the &#8220;From WordPress to AI Agents&#8221; Series]]></description><link>https://aaghran.substack.com/p/i-am-no-longer-a-solo-developer-lessons</link><guid isPermaLink="false">https://aaghran.substack.com/p/i-am-no-longer-a-solo-developer-lessons</guid><dc:creator><![CDATA[Aaghran Ghosh]]></dc:creator><pubDate>Sat, 17 Jan 2026 14:05:49 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!5m3f!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9084c0e-9d7a-477f-b233-bc131b345ae2_1024x559.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;9dec05ed-4dd1-4b3a-975c-0ab324d4b113&quot;,&quot;caption&quot;:&quot;I am a Product Manager by trade, but I have always been a tinkerer at heart.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Reviving the Zombie Side Project: Why I&#8217;m Rebuilding My Blog Again, but in the Age of AI Agents&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:35896885,&quot;name&quot;:&quot;Aaghran Ghosh&quot;,&quot;bio&quot;:&quot;A product guy specializing in technical products, my enthusiasm lies in harnessing cutting-edge technologies to craft inventive solutions that effectively address real-world challenges. &quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9aae2964-22d1-49ad-8ce2-54c69665dc7a_144x144.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-01-17T13:50:31.893Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!V3Uw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe051fd8-d5b4-4ab5-96af-c35cb6fce82f_2816x1536.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://aaghran.substack.com/p/reviving-the-zombie-side-project&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:184866080,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:4557589,&quot;publication_name&quot;:&quot;Aaghran&#8217;s Substack&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!1EWf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f3d2d07-1422-4cd0-8fed-43c11aa13ef8_608x608.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;59c1d7e0-b78f-4064-87ed-9bf3fb1ba873&quot;,&quot;caption&quot;:&quot;Most developers have that one side project. The one that&#8217;s never finished. The one that technically &#8220;works&#8221; but is currently undergoing a &#8220;complete rewrite&#8221; for the third time.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Why I Over-Engineered My Personal Blog (And Why You Should Too)&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:35896885,&quot;name&quot;:&quot;Aaghran Ghosh&quot;,&quot;bio&quot;:&quot;A product guy specializing in technical products, my enthusiasm lies in harnessing cutting-edge technologies to craft inventive solutions that effectively address real-world challenges. &quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9aae2964-22d1-49ad-8ce2-54c69665dc7a_144x144.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-01-17T13:59:58.095Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!GIvr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b0aa94-735d-428c-9d41-0f59558a5439_2816x1536.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://aaghran.substack.com/p/why-i-over-engineered-my-personal&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:184866775,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:1,&quot;comment_count&quot;:0,&quot;publication_id&quot;:4557589,&quot;publication_name&quot;:&quot;Aaghran&#8217;s Substack&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!1EWf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f3d2d07-1422-4cd0-8fed-43c11aa13ef8_608x608.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;30e21654-cc8b-4d54-983b-5a3369772b8e&quot;,&quot;caption&quot;:&quot;In the last post, I explained why I stuck to a &#8220;boring&#8221; architecture (Node.js, PostgreSQL, EC2) for my blog revival. I did it to create a stable environment for my new &#8220;AI Engineering Team.&#8221;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Giving My AI Interns \&quot;Hands\&quot;: How I Use MCP to Connect LLMs to Production&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:35896885,&quot;name&quot;:&quot;Aaghran Ghosh&quot;,&quot;bio&quot;:&quot;A product guy specializing in technical products, my enthusiasm lies in harnessing cutting-edge technologies to craft inventive solutions that effectively address real-world challenges. &quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9aae2964-22d1-49ad-8ce2-54c69665dc7a_144x144.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-01-17T14:03:25.739Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!koKU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6892c464-b322-4705-b72c-e40445bb6812_2600x1418.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://aaghran.substack.com/p/giving-my-ai-interns-hands-how-i&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:184866980,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:4557589,&quot;publication_name&quot;:&quot;Aaghran&#8217;s Substack&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!1EWf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f3d2d07-1422-4cd0-8fed-43c11aa13ef8_608x608.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://wanderingbong.com/&quot;,&quot;text&quot;:&quot;View my Blog&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://wanderingbong.com/"><span>View my Blog</span></a></p><p>When I started this journey to revive my dormant travel blog, <em><a href="https://wanderingbong.com/">WanderingBong</a></em>, I thought I was just upgrading a tech stack. I thought I was swapping Strapi for a custom Node.js backend and playing with some new APIs.</p><p>I was wrong. I wasn&#8217;t just upgrading my code; I was upgrading my job description.</p><p>Over the last few weeks, I&#8217;ve built a custom <strong>Model Context Protocol (MCP)</strong> server, deployed autonomous agents to my EC2 instance, and integrated AI deeply into my workflow.</p><p>But the biggest takeaway isn&#8217;t technical. It&#8217;s the realization that I am no longer a &#8220;Coder.&#8221; I am a &#8220;Manager.&#8221;</p><p>Here is what I learned about building software in the Age of Agents.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5m3f!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9084c0e-9d7a-477f-b233-bc131b345ae2_1024x559.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5m3f!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9084c0e-9d7a-477f-b233-bc131b345ae2_1024x559.png 424w, https://substackcdn.com/image/fetch/$s_!5m3f!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9084c0e-9d7a-477f-b233-bc131b345ae2_1024x559.png 848w, https://substackcdn.com/image/fetch/$s_!5m3f!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9084c0e-9d7a-477f-b233-bc131b345ae2_1024x559.png 1272w, https://substackcdn.com/image/fetch/$s_!5m3f!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9084c0e-9d7a-477f-b233-bc131b345ae2_1024x559.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5m3f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9084c0e-9d7a-477f-b233-bc131b345ae2_1024x559.png" width="1024" height="559" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f9084c0e-9d7a-477f-b233-bc131b345ae2_1024x559.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:559,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5m3f!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9084c0e-9d7a-477f-b233-bc131b345ae2_1024x559.png 424w, https://substackcdn.com/image/fetch/$s_!5m3f!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9084c0e-9d7a-477f-b233-bc131b345ae2_1024x559.png 848w, https://substackcdn.com/image/fetch/$s_!5m3f!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9084c0e-9d7a-477f-b233-bc131b345ae2_1024x559.png 1272w, https://substackcdn.com/image/fetch/$s_!5m3f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9084c0e-9d7a-477f-b233-bc131b345ae2_1024x559.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>1. Context Engineering &gt; Prompt Engineering</h3><p>Everyone talks about &#8220;Prompt Engineering&#8221;&#8202;&#8212;&#8202;the art of asking the AI the right question. After building this system, I think that&#8217;s a distraction. The real skill is <strong>Context Engineering</strong>.</p><p>An AI is only as smart as the information you give it.</p><ul><li><p>If I ask an agent to &#8220;Write a blog post,&#8221; it writes generic fluff.</p></li><li><p>If I give it my database schema, my project history, and my raw notes, it writes a strategy.</p></li></ul><p><strong>The &#8220;Meta&#8221; Moment:</strong> To prove this, look at this very article series. The structure, the themes, and the roadmap you&#8217;ve been reading weren&#8217;t painstakingly outlined by me in a Google Doc.</p><p>I simply opened a chat with Anti Gravity and dropped in two things:</p><ol><li><p>Generate the Context.md file based on the latest state of the codebase and a high-level review of the git commit history. </p></li><li><p>A stream-of-consciousness paragraph: <em>&#8220;I want to document reviving my blog. I started on WordPress, moved to Strapi/Next.js during COVID to relax, and now I want to build anchor articles using AI agents and MCP.&#8221;</em>.</p></li></ol><p>That was it. The AI analyzed the technical context, understood the emotional arc (the &#8220;COVID relaxation&#8221; project), and generated the 4-part outline for this series.</p><p>I didn&#8217;t engineer a perfect prompt. I engineered the <strong>context</strong>.</p><h3>2. The Power of Parallelism (Coding at Scale)</h3><p>As a solo developer, my workflow used to be linear and painful. If I wanted to build a feature, I had to write the backend API, then switch context to the frontend, then style it, then debug the upload logic. It was sequential.</p><p>But with coding agents, I started working in parallel.</p><p>During the build phase, I found myself spawning multiple instances of my AI tools to tackle different layers of the stack simultaneously:</p><ul><li><p><strong>Instance 1:</strong> &#8220;Refactor the <strong>Media Library</strong> to support drag-and-drop.&#8221;</p></li><li><p><strong>Instance 2:</strong> &#8220;Fix the CSS grid layout on the public <strong>Blog View</strong>.&#8221;</p></li><li><p><strong>Instance 3:</strong> &#8220;Update the <strong>CMS UI</strong> forms to handle the new &#8216;Journal&#8217; entity.&#8221;</p></li></ul><p>I wasn&#8217;t context-switching between these tasks; I was <strong>merging</strong> them.</p><p>I became the Engineering Lead reviewing three open Pull Requests from my &#8220;team,&#8221; rather than the tired developer writing every line. The &#8220;cost of iteration&#8221; dropped to near zero because I could run multiple development tracks at once.</p><h3>3. The Content Vision: Anchor Articles &amp; Curated Memories</h3><p>So, what am I actually building with this team? The goal was never just to have a &#8220;tech demo.&#8221; It was to build a better home for my memories.</p><p>The old blog was a chronological feed of fragmented posts. The new vision, powered by AI, is about <strong>Anchor Articles</strong>.</p><ul><li><p><strong>The Concept:</strong> Instead of 10 tiny posts, I want definitive guides (e.g., &#8220;The Complete Guide to Patagonia&#8221;).</p></li><li><p><strong>The AI Role:</strong> The Agent scans my thousands of photos and scattered &#8220;Journal&#8221; notes. It identifies clusters&#8202;&#8212;&#8202;<em>&#8220;Hey, you have 50 photos and 3 notes from Ladakh&#8221;</em>&#8202;&#8212;&#8202;and suggests merging them into a single visual story.</p></li></ul><p>It helps me weave scattered data points into a cohesive narrative, something I never had the patience to do manually.</p><h3>Conclusion: The Joy of Building Returns</h3><p>For a long time, my side projects died because the friction was too high. The gap between &#8220;Idea&#8221; and &#8220;Execution&#8221; was filled with hours of boring configuration and boilerplate code.</p><p>Agents have removed that friction.</p><ul><li><p><strong>Cursor</strong> handles the syntax.</p></li><li><p><strong>MCP</strong> handles the data connection.</p></li><li><p><strong>I handle the vision.</strong></p></li></ul><p>I&#8217;m finally tinkering again. And for a Product Manager who loves to build, there is no better feeling.</p><p>Thank you for following the journey. The code is deployed, the agents are running, and <em>Wandering Bong</em> is finally alive again.</p><p>Check out my blog here - https://wanderingbong.com/ </p>]]></content:encoded></item><item><title><![CDATA[Giving My AI Interns "Hands": How I Use MCP to Connect LLMs to Production]]></title><description><![CDATA[Part 3 of the "From WordPress to AI Agents" Series]]></description><link>https://aaghran.substack.com/p/giving-my-ai-interns-hands-how-i</link><guid isPermaLink="false">https://aaghran.substack.com/p/giving-my-ai-interns-hands-how-i</guid><dc:creator><![CDATA[Aaghran Ghosh]]></dc:creator><pubDate>Sat, 17 Jan 2026 14:03:25 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!koKU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6892c464-b322-4705-b72c-e40445bb6812_2600x1418.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://wanderingbong.com/&quot;,&quot;text&quot;:&quot;View my Blog&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://wanderingbong.com/"><span>View my Blog</span></a></p><p>In the last post, I explained why I stuck to a &#8220;boring&#8221; architecture (Node.js, PostgreSQL, EC2) for my blog revival. I did it to create a stable environment for my new &#8220;AI Engineering Team.&#8221;</p><p>But there is a missing link.</p><p>I have <strong>Cursor</strong> and <strong>Anti-gravity</strong> (my Junior Devs) helping me write code. And I have the <strong>LLMs</strong> (Claude/Gemini) ready to manage my content. But the LLMs are usually trapped in a chat window.</p><p>They are smart, but they are blind. They can&#8217;t see my database. They can&#8217;t check my previous posts. They can&#8217;t <em>do</em> anything unless I copy-paste data to them.</p><p>To fix this, I needed to give them hands. I needed to bridge the gap between the &#8220;Brain&#8221; (the AI) and the &#8220;Memory&#8221; (my Database).</p><p>That bridge is the <strong>Model Context Protocol (MCP)</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://aaghran.substack.com/p/why-i-over-engineered-my-personal" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!koKU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6892c464-b322-4705-b72c-e40445bb6812_2600x1418.png 424w, https://substackcdn.com/image/fetch/$s_!koKU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6892c464-b322-4705-b72c-e40445bb6812_2600x1418.png 848w, https://substackcdn.com/image/fetch/$s_!koKU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6892c464-b322-4705-b72c-e40445bb6812_2600x1418.png 1272w, https://substackcdn.com/image/fetch/$s_!koKU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6892c464-b322-4705-b72c-e40445bb6812_2600x1418.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!koKU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6892c464-b322-4705-b72c-e40445bb6812_2600x1418.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6892c464-b322-4705-b72c-e40445bb6812_2600x1418.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://aaghran.substack.com/p/why-i-over-engineered-my-personal&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!koKU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6892c464-b322-4705-b72c-e40445bb6812_2600x1418.png 424w, https://substackcdn.com/image/fetch/$s_!koKU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6892c464-b322-4705-b72c-e40445bb6812_2600x1418.png 848w, https://substackcdn.com/image/fetch/$s_!koKU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6892c464-b322-4705-b72c-e40445bb6812_2600x1418.png 1272w, https://substackcdn.com/image/fetch/$s_!koKU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6892c464-b322-4705-b72c-e40445bb6812_2600x1418.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://aaghran.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://aaghran.substack.com/subscribe?"><span>Subscribe now</span></a></p><h3>The Problem: The Copy-Paste Bottleneck</h3><p>Writing the code was one thing, but the bigger problem was ongoing <strong>blog management</strong>. I was drowning in tasks like SEO management, linking related content, and trying to turn scattered notes into stories.</p><p>Before implementing MCP, my workflow was painful:</p><p>I ask ChatGPT: &#8220;Draft a post about Japan.&#8221;</p><ol><li><p>It writes a generic travel guide (&#8220;Visit the Golden Pavilion!&#8221;) because it doesn&#8217;t know <em>what I actually did</em>.</p></li><li><p>I have to dig through my phone notes, find the specific restaurant name, and copy-paste it into the chat to give it context.</p></li><li><p>It writes a draft.</p></li><li><p>I manually copy that text, log into my CMS, paste it into the editor, and then manually configure the SEO tags.</p></li><li><p>I copy-paste 10 rows from my PostgreSQL database to show what I actually wrote in 2019 so it can link to them.</p></li><li><p>It writes a draft.</p></li><li><p>I manually copy that text, log into my CMS, paste it into the editor, and then manually configure the SEO tags.</p></li></ol><p>I wasn&#8217;t an &#8220;Architect&#8221;; I was a glorified clipboard manager.</p><h3>The Solution: <code>cms-mcp</code> (The Backend Specialist)</h3><p>I realized I needed to treat my AI agent or even ChatGPT not as a &#8220;super-user,&#8221; but as a <strong>standard client</strong>&#8202;&#8212;&#8202;just like my frontend UI.</p><p>I used the <strong>Model Context Protocol (MCP)</strong> to build a bridge. My custom tool effectively acts as a &#8220;headless browser.&#8221; It talks to my backend (<code>cms-be</code>) using the exact same API endpoints that my Admin Dashboard (<code>cms-ui</code>) uses. Think of an MCP Server as an API specifically designed for AI agents. It tells the LLM: <em>&#8220;Here are the tools you are allowed to use, and here is how you use them.&#8221;</em></p><p>But to solve the &#8220;Generic Content&#8221; problem, I introduced a new concept to the API: <strong>Journals</strong>.</p><p><strong>The Secret Weapon: The &#8220;Journals&#8221;</strong></p><p>I added a <code>Journal</code> entity to my CMS. These are small, raw memoirs&#8212;quick notes, a location, maybe a photo&#8212;that I jot down while traveling. They aren&#8217;t blog posts; they are just <em>data points of memory</em>.</p><p>By exposing these via the API to the Agents, I gave the AI a memory bank.</p><h4>Now, back to the MCP Server</h4><p>Initially, I thought about giving my AI agent direct access to my PostgreSQL database. It seemed fast. It seemed easy.</p><p>But as a Product Manager, I know that &#8220;fast and easy&#8221; usually leads to &#8220;broken and messy.&#8221; Giving an LLM direct database access bypasses all the business logic, validation, and safety checks I built into my backend.</p><p>So, I pivoted. I decided to treat my AI agent not as a &#8220;super-user&#8221; with root access, but as a <strong>standard client</strong>&#8202;&#8212;&#8202;just like my frontend UI. My custom tool effectively acts as a &#8220;headless browser.&#8221; It talks to my backend (<code>cms-be</code>) exactly the way my Admin Dashboard (<code>cms-ui</code>) does.</p><ol><li><p><strong>It Mimics the Human (Me):</strong> When I write a post, I use the UI, which calls the API. The API handles the messy stuff&#8202;&#8212;&#8202;generating slugs, sanitizing HTML, and setting default timestamps. By forcing the Agent to use the API, it follows the exact same rules I do.</p></li><li><p><strong>Scalability &amp; Maintenance:</strong> If I change my database schema, I don&#8217;t have to rewrite the Agent. As long as the API contract stays the same, the Agent keeps working.</p></li><li><p><strong>Security &amp; Logic:</strong> My backend already knows how to validate a user. I don&#8217;t need to rebuild authentication logic inside the AI agent.</p></li></ol><h3>The &#8220;Job Description&#8221; (Tools I Built)</h3><p>I didn&#8217;t give the AI root access (I&#8217;m a Product Manager, not a maniac). Through the MCP server, I exposed specific API endpoints as &#8220;Tools&#8221; for the AI:</p><p><code>search_journals</code> (The Context Engine):</p><ul><li><p><em>Action:</em> Calls <code>GET /api/journals?location=...</code></p></li><li><p><em>Use Case:</em> &#8220;Find my raw notes from Tokyo so I can write a story that actually sounds like me.&#8221;</p></li></ul><p><code>search_content</code>:</p><ul><li><p><em>Action:</em> Calls <code>GET /api/posts?search=...</code></p></li><li><p><em>Result:</em> The backend runs the search logic and returns JSON. The AI reads this just like a frontend would to understand what I&#8217;ve written before.</p></li></ul><p><code>create_draft</code>:</p><ul><li><p><em>Action:</em> Calls <code>POST /api/posts</code> with a JSON body.</p></li><li><p><em>Result:</em> The backend validates the title, creates the slug, checks for duplicates, and <em>then</em> saves to the DB. The AI doesn&#8217;t have to worry about SQL syntax.</p></li></ul><p><code>audit_seo</code>:</p><ul><li><p><em>Action:</em> Calls <code>GET /api/posts/:id/seo-check</code></p></li><li><p><em>Capability:</em> Connected to a Google Search Console MCP, it can analyze traffic and suggest title tweaks.</p></li></ul><h3>The Workflow: From Chat to Production</h3><p>Here is what it looks like when I &#8220;collaborate&#8221; in ChatGPT or my custom agent now:</p><p><strong>Me:</strong> &#8220;I want to write a new Anchor Article about &#8216;Hiking in the Himalayas&#8217;. Check if I have any existing notes on this, and draft an outline.&#8221;</p><p><strong>The Agent (using </strong><code>cms-mcp</code><strong>):</strong></p><ol><li><p><strong>Context Gathering (</strong><code>search_journals</code><strong>)</strong>: It queries <code>GET /api/journals?location=Kyoto</code>. <em>It finds:</em> A raw note about a specific coffee shop, a photo I took of a shrine, and a note about the rain.</p></li><li><p><em>Calls </em><code>db_search</code><em>:</em> Scans my database for tags like &#8220;Japan,&#8221; &#8220;Mt Fuji&#8221;.</p></li><li><p><em>Returns Context:</em> &#8220;You have 3 existing short posts from 2022 and 5 journal entries.&#8221;</p></li><li><p><em>Synthesizes:</em> Creates an outline that references those specific memories.</p></li></ol><p><strong>Me:</strong> &#8220;Looks good. Create the draft.&#8221;</p><p><strong>The Agent:</strong></p><ol><li><p><em>Calls </em><code>create_draft</code><em>:</em> It hits my database and creates the actual record.</p></li><li><p><em>Result:</em> I open my Admin Dashboard (<code>cms-ui</code>), and the post is there, waiting for me to polish. It&#8217;s not generic AI slop. It mentions the coffee shop I actually visited, because it had access to my digital memory.</p></li></ol><h3>Why This Changes Everything</h3><p>This setup shifts my role from &#8220;Writer/Coder&#8221; to &#8220;Editor/Manager.&#8221;</p><p>This architecture turns the AI into a true <strong>Virtual Employee</strong>. It doesn&#8217;t have magical backdoor access. It has to use the tools provided, just like everyone else. This makes the system robust, predictable, and surprisingly easy to debug.</p><p>If the Agent fails, I just check the standard API logs.</p><p>I don&#8217;t have to remember every article I wrote 5 years ago&#8202;&#8212;&#8202;my &#8220;Intern&#8221; does that for me. I don&#8217;t have to deal with the friction of setting up a new draft&#8202;&#8212;&#8202;my &#8220;Backend Specialist&#8221; handles it.</p><p>This is the power of <strong>Agentic Workflows</strong>. It&#8217;s not about the AI writing the whole blog for you; it&#8217;s about removing the friction so you can focus on the story.</p><p>In the next and final post, I&#8217;ll share the <strong>Content Vision</strong>: How I&#8217;m using this machinery to move away from chronological blogging toward &#8220;Anchor Articles&#8221; and visual storytelling.</p>]]></content:encoded></item><item><title><![CDATA[Why I Over-Engineered My Personal Blog (And Why You Should Too)]]></title><description><![CDATA[Part 2 of the &#8220;From WordPress to AI Agents&#8221; Series]]></description><link>https://aaghran.substack.com/p/why-i-over-engineered-my-personal</link><guid isPermaLink="false">https://aaghran.substack.com/p/why-i-over-engineered-my-personal</guid><dc:creator><![CDATA[Aaghran Ghosh]]></dc:creator><pubDate>Sat, 17 Jan 2026 13:59:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!GIvr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b0aa94-735d-428c-9d41-0f59558a5439_2816x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;ee970021-f27c-43f4-abf4-9c95e7c9b654&quot;,&quot;caption&quot;:&quot;I am a Product Manager by trade, but I have always been a tinkerer at heart.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;showDescription&quot;:true,&quot;showImage&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Reviving the Zombie Side Project: Why I&#8217;m Rebuilding My Blog Again, but in the Age of AI Agents&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:35896885,&quot;name&quot;:&quot;Aaghran Ghosh&quot;,&quot;bio&quot;:&quot;A product guy specializing in technical products, my enthusiasm lies in harnessing cutting-edge technologies to craft inventive solutions that effectively address real-world challenges. &quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9aae2964-22d1-49ad-8ce2-54c69665dc7a_144x144.png&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-01-17T13:50:31.893Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!V3Uw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe051fd8-d5b4-4ab5-96af-c35cb6fce82f_2816x1536.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://aaghran.substack.com/p/reviving-the-zombie-side-project&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:184866080,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:4557589,&quot;publication_name&quot;:&quot;Aaghran&#8217;s Substack&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!1EWf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f3d2d07-1422-4cd0-8fed-43c11aa13ef8_608x608.png&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>Most developers have that <em>one</em> side project. The one that&#8217;s never finished. The one that technically &#8220;works&#8221; but is currently undergoing a &#8220;complete rewrite&#8221; for the third time.</p><p>For me, it&#8217;s my travel blog, <strong><a href="https://wanderingbong.com/">WanderingBong</a></strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GIvr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b0aa94-735d-428c-9d41-0f59558a5439_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GIvr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b0aa94-735d-428c-9d41-0f59558a5439_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!GIvr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b0aa94-735d-428c-9d41-0f59558a5439_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!GIvr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b0aa94-735d-428c-9d41-0f59558a5439_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!GIvr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b0aa94-735d-428c-9d41-0f59558a5439_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GIvr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b0aa94-735d-428c-9d41-0f59558a5439_2816x1536.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/51b0aa94-735d-428c-9d41-0f59558a5439_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!GIvr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b0aa94-735d-428c-9d41-0f59558a5439_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!GIvr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b0aa94-735d-428c-9d41-0f59558a5439_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!GIvr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b0aa94-735d-428c-9d41-0f59558a5439_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!GIvr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b0aa94-735d-428c-9d41-0f59558a5439_2816x1536.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>It started as a simple place to dump photos. Today, it&#8217;s a custom-built monorepo running Node.js, Next.js, and a team of autonomous AI agents.<br>Is it overkill for a personal blog? Absolutely. Is it the best way to learn modern software architecture? 100%.<br>Here is the story of how &#8212; and why &#8212; I over-engineered my personal site, moving from a WordPress install to a futuristic &#8220;Agentic Content Engine.&#8221;</p><h2><strong>Phase 1: The &#8220;It Just Works&#8221; Era (2015)</strong></h2><p>Like 43% of the web, I started with <strong>WordPress</strong>. Because why wouldn&#8217;t you? It&#8217;s five minutes to install.</p><p><strong>The Problem:</strong> Stick with WordPress long enough, and you stop being a creator and start being a sysadmin.</p><ul><li><p>I wanted a specific layout -&gt; <em>Use a plugin.</em></p></li><li><p>The site is slow -&gt; <em>Install a caching plugin.</em></p></li><li><p>The caching plugin breaks the gallery -&gt; <em>Scream into the void.</em></p></li></ul><p>I didn&#8217;t feel like a developer. I felt like I was patching leaks on a ship I didn&#8217;t build.</p><h2><strong>Phase 2: The &#8220;Headless&#8221; Pivot (2020)</strong></h2><p>When the world locked down in 2020, I nuked the site. I decided to rewrite it using the &#8220;Jamstack&#8221; architecture.</p><ul><li><p><strong>Backend:</strong> Strapi (Headless CMS)</p></li><li><p><strong>Frontend:</strong> Next.js</p></li><li><p><strong>Infrastructure:</strong> A single Ubuntu EC2 instance.</p></li></ul><p>This was a huge step up. I learned how to manage <strong>PM2</strong> processes to keep Node.js alive when it inevitably crashed. I wrestled with <strong>HAProxy</strong> to terminate SSL and route traffic to different ports.</p><p>And honestly? <strong>It worked fine.</strong> It was stable. It was cheap. It served the content perfectly.</p><h2><strong>Phase 3: The &#8220;ContentPlanner&#8221; Monorepo (2025)</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ca_n!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F673b7c2b-fd82-47dc-ab3e-ef04bae1cfa5_2000x1091.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ca_n!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F673b7c2b-fd82-47dc-ab3e-ef04bae1cfa5_2000x1091.png 424w, https://substackcdn.com/image/fetch/$s_!ca_n!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F673b7c2b-fd82-47dc-ab3e-ef04bae1cfa5_2000x1091.png 848w, https://substackcdn.com/image/fetch/$s_!ca_n!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F673b7c2b-fd82-47dc-ab3e-ef04bae1cfa5_2000x1091.png 1272w, https://substackcdn.com/image/fetch/$s_!ca_n!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F673b7c2b-fd82-47dc-ab3e-ef04bae1cfa5_2000x1091.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ca_n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F673b7c2b-fd82-47dc-ab3e-ef04bae1cfa5_2000x1091.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/673b7c2b-fd82-47dc-ab3e-ef04bae1cfa5_2000x1091.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!ca_n!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F673b7c2b-fd82-47dc-ab3e-ef04bae1cfa5_2000x1091.png 424w, https://substackcdn.com/image/fetch/$s_!ca_n!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F673b7c2b-fd82-47dc-ab3e-ef04bae1cfa5_2000x1091.png 848w, https://substackcdn.com/image/fetch/$s_!ca_n!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F673b7c2b-fd82-47dc-ab3e-ef04bae1cfa5_2000x1091.png 1272w, https://substackcdn.com/image/fetch/$s_!ca_n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F673b7c2b-fd82-47dc-ab3e-ef04bae1cfa5_2000x1091.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>So, if Phase 2 was working fine, why rewrite it?</p><p>Because the goal wasn&#8217;t just to have a blog. <strong>The goal was to learn.</strong></p><p>We are entering the age of <strong>Coding Agents</strong> and <strong>AI Engineers</strong>. I didn&#8217;t want to just read about it; I wanted to build with it. I wanted to understand what happens when you treat AI not as a chatbot, but as a developer.</p><p>So, I kept the infrastructure that worked (EC2) and nuked the codebase to build a playground for my new AI team.</p><h2><strong>The Architecture: A Monorepo for Agents</strong></h2><p>I organized the codebase as a Monorepo using npm workspaces.</p><ul><li><p><strong>The Brain (</strong><code>cms-be</code><strong>)</strong>: A custom Node.js/Express backend.</p></li><li><p><strong>The Cockpit (</strong><code>cms-ui</code><strong>)</strong>: A Next.js admin dashboard.</p></li><li><p><strong>The Face (</strong><code>blog-web</code><strong>)</strong>: A public Next.js site.</p></li></ul><h2><strong>The Infrastructure: Why I Stuck with EC2</strong></h2><p>In 2025, moving to Vercel is the default. But I deliberately stayed on my <strong>Ubuntu EC2 instance</strong>.</p><p>Why? <strong>Because the infra wasn&#8217;t the problem.</strong> It was already set up, paid for, and humming along nicely with PM2 and HAProxy.</p><p>Migrating to Serverless would have just been busywork. By keeping the &#8220;Boring&#8221; infrastructure stable, I could focus all my &#8220;Innovation Tokens&#8221; on the app layer &#8212; specifically, figuring out how to build with <strong>Cursor</strong> and <strong>Anti-gravity</strong>.</p><p>I didn&#8217;t want to debug serverless cold starts; I wanted to debug AI hallucinations.</p><h2><strong>The Secret Sauce: Journals &amp; Memory</strong></h2><p>This rewrite allowed me to fix the biggest issue with AI content: <strong>Context</strong>.</p><p>If you ask ChatGPT to write a blog post, it&#8217;s generic. It doesn&#8217;t know you. To solve this, I added a new entity to my custom backend: <strong>Journals</strong>.</p><p>Journals are raw data points &#8212; quick notes, location tags, and unedited photos I capture while traveling. They aren&#8217;t blog posts. They are <strong>memories</strong>.</p><p><strong>The AI Workflow:</strong></p><ol><li><p><strong>cms-mcp</strong>: I built a custom <strong>Model Context Protocol</strong> server that exposes these Journals to the AI.</p></li><li><p><strong>The Result</strong>: When I ask the agent to &#8220;Draft a post about Ladakh,&#8221; it doesn&#8217;t scrape Wikipedia. It queries my <strong>Journals</strong> via the API, sees my note about the &#8220;altitude sickness at 10,000ft,&#8221; and writes a story that actually happened to <em>me</em>.</p></li></ol><h2><strong>Why You Should Over-Engineer</strong></h2><p>Sure, I could have stuck with the old Strapi setup. It worked.</p><p>But I wouldn&#8217;t have learned the nuances of <strong>Agentic Workflows</strong>. I wouldn&#8217;t have learned how to structure data (Journals) so an AI can use it effectively.</p><p>In a world where AI writes the code, the value of a developer isn&#8217;t in maintaining the status quo. It&#8217;s in tearing it down to see if you can build something smarter.</p><p>My blog is over-engineered. But for the first time in years, it&#8217;s teaching me something new.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://aaghran.substack.com/p/why-i-over-engineered-my-personal?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://aaghran.substack.com/p/why-i-over-engineered-my-personal?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Reviving the Zombie Side Project: Why I’m Rebuilding My Blog Again, but in the Age of AI Agents]]></title><description><![CDATA[Part 1 of the &#8220;From WordPress to AI Agents&#8221; Series]]></description><link>https://aaghran.substack.com/p/reviving-the-zombie-side-project</link><guid isPermaLink="false">https://aaghran.substack.com/p/reviving-the-zombie-side-project</guid><dc:creator><![CDATA[Aaghran Ghosh]]></dc:creator><pubDate>Sat, 17 Jan 2026 13:50:31 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!V3Uw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe051fd8-d5b4-4ab5-96af-c35cb6fce82f_2816x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://aaghran.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://aaghran.substack.com/subscribe?"><span>Subscribe now</span></a></p><p>I am a Product Manager by trade, but I have always been a tinkerer at heart.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!V3Uw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe051fd8-d5b4-4ab5-96af-c35cb6fce82f_2816x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V3Uw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe051fd8-d5b4-4ab5-96af-c35cb6fce82f_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!V3Uw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe051fd8-d5b4-4ab5-96af-c35cb6fce82f_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!V3Uw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe051fd8-d5b4-4ab5-96af-c35cb6fce82f_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!V3Uw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe051fd8-d5b4-4ab5-96af-c35cb6fce82f_2816x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V3Uw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe051fd8-d5b4-4ab5-96af-c35cb6fce82f_2816x1536.png" width="728" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fe051fd8-d5b4-4ab5-96af-c35cb6fce82f_2816x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:9400609,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://aaghran.substack.com/i/184866080?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe051fd8-d5b4-4ab5-96af-c35cb6fce82f_2816x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!V3Uw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe051fd8-d5b4-4ab5-96af-c35cb6fce82f_2816x1536.png 424w, https://substackcdn.com/image/fetch/$s_!V3Uw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe051fd8-d5b4-4ab5-96af-c35cb6fce82f_2816x1536.png 848w, https://substackcdn.com/image/fetch/$s_!V3Uw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe051fd8-d5b4-4ab5-96af-c35cb6fce82f_2816x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!V3Uw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe051fd8-d5b4-4ab5-96af-c35cb6fce82f_2816x1536.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>There is a specific joy in building new things, breaking things, and occasionally fixing them. But let&#8217;s be honest: for those of us who don&#8217;t code eight hours a day, the &#8220;friction&#8221; of building is real. You have a great product idea, but then you get stuck configuring Webpack, fighting with CSS, or debugging a broken deployment.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://aaghran.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Aaghran&#8217;s Substack! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><blockquote><p><em>Eventually, <strong>the project hibernates</strong>.</em></p></blockquote><p>For me, that project is my travel blog, <em><a href="https://wanderingbong.com/">WanderingBong</a></em>. It started years ago on WordPress, evolved into a custom Headless CMS during the pandemic lockdown, and then&#8230; sat there. It gathered digital dust because the cost of &#8220;tinkering&#8221; became too high compared to the free time I had available.</p><p><strong>The Paradigm Shift</strong></p><p>But recently, I felt a shift. We are entering <em><strong>a new age of software building</strong></em>.<br>It isn&#8217;t just about ChatGPT writing a function for you. It is about <strong>Coding Agents</strong> and <strong>Agentic Workflows</strong>.</p><p>Code is becoming cheap. The cost of iteration &#8212; that painful cycle of &#8220;write, review, fix, repeat&#8221; &#8212; is plummeting. For a Product Manager, this is a superpower. It means the barrier between &#8220;Writing a Spec&#8221; and &#8220;Shipping a Feature&#8221; is dissolving.</p><p>I realized I couldn&#8217;t just read about this shift. I had to feel it. I needed to understand how we will build software in the future &#8212; how we will tackle hackathons and side projects when we have an infinite supply of junior engineers at our fingertips.</p><p><strong>From Coding to Orchestrating</strong> So, I am waking the project up. I&#8217;m not just &#8220;migrating&#8221; the blog; I&#8217;m rebuilding it as a playground for this new reality.<br>I am moving from a system where I manually type every line to an architecture where <strong>AI Agents</strong> work alongside me as my engineering team.<br><strong>The Roadmap: Building in Public</strong> Over the next few weeks, I&#8217;m documenting this journey. It&#8217;s a log of a PM trying to build a modern, AI-infused content platform without losing their mind.</p><p>Here is the plan:</p><ol><li><p><strong>The Evolution</strong>: Looking back at the &#8220;WordPress to Headless&#8221; journey and why the old stack became a cage.</p></li><li><p><strong>The Tech Stack</strong>: A deep dive into the &#8220;boring&#8221; but reliable infrastructure (Node.js, EC2) that acts as the foundation.</p></li><li><p><strong>Agentic Workflows</strong>: The real breakthrough &#8212; how I&#8217;m using <strong>Model Context Protocol (MCP)</strong> to let AI agents talk directly to my backend to audit content and draft posts.</p></li><li><p><strong>The Vision</strong>: How this changes the product itself, moving from static posts to &#8220;Anchor Articles&#8221; and dynamic storytelling.</p></li></ol><p>The stack is still my reliable &#8220;boring&#8221; monorepo, but the way I interact with it is completely new.<br>Code is cheap. Ideas are expensive. Let&#8217;s see what we can build when the friction disappears.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://aaghran.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Aaghran&#8217;s Substack! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://aaghran.substack.com/p/reviving-the-zombie-side-project?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://aaghran.substack.com/p/reviving-the-zombie-side-project?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p></p>]]></content:encoded></item></channel></rss>