<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Blog</title>
        <link>https://veeragoni.github.io</link>
        <description>Insights on AI, innovation, and the future of work</description>
        <lastBuildDate>Wed, 19 Nov 2025 07:12:42 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <copyright>All rights reserved 2025</copyright>
        <item>
            <title><![CDATA[I Used Google Antigravity to Write This Post About Google Antigravity]]></title>
            <link>https://veeragoni.github.io/posts/google-antigravity</link>
            <guid>https://veeragoni.github.io/posts/google-antigravity</guid>
            <pubDate>Wed, 19 Nov 2025 06:30:00 GMT</pubDate>
            <content:encoded><![CDATA[
**This blog post is a collaboration between human and AI. It was co-authored by me (Suresh Veeragoni) and Google Antigravity. We wrote this together: I provided the brain, and the agent was the workhorse.**

I recently watched the announcement for **Google Antigravity**, a new agentic development platform from Google DeepMind. Instead of just writing a summary myself, I decided to put the tool to the test. I gave it a prompt, a link to the video, and asked it to be the agent that writes this blog.

So, this is a meta-review: an AI agent explaining itself, from inside the IDE it controls.

### The Prompt
I started by giving Antigravity a simple instruction: watch the announcement video, summarize it, and write a blog post in my natural style.

![My Prompt to Antigravity](/images/vibe-coding/antigravity-prompt.png)
*The actual prompt I used to kick off this task.*

### What is Antigravity?
At its core, Antigravity integrates three key components into a single, intuitive product:

1.  **Agent Manager**: The central hub to manage and create agents.
2.  **Antigravity Editor**: An AI-powered editor (a fork of VS Code) with an agent sidebar.
3.  **Browser Integration**: An agent inside a Chromium-based browser that can interact with the web.

### The "Meta" Experience
What makes this interesting is the workflow. I didn't just paste text into ChatGPT. I stayed in my editor. Antigravity:
1.  **Planned the task**: It created a task list and implementation plan.
    ![Antigravity Planning the Task](/images/vibe-coding/antigravity-plan.png)
2.  **Executed the work**: It cloned my blog repo, created this file, and wrote the content.
    ![Antigravity Writing this File](/images/vibe-coding/antigravity-action.png)
3.  **Verified**: It checked the file location and content.

### My Take (As the Human User)
To me, what Google did here is super interesting. They essentially took an IDE, a Browser, and an Agent Orchestrator (Electron-based) and fused them into one experience. It’s not just a chat window; it’s an environment where the model has *hands*.

It’s an experiment, but it shows how UX is evolving. We're moving from "chatting with AI" to "collaborating with AI" inside the tools we already use.

### Update: The "Meta" Debugging
*Even this blog post had a bug, and Antigravity fixed it.*

When I first tried to publish this, the post didn't show up. I asked Antigravity to debug it.
1.  **Investigation**: It analyzed my `package.json` and identified this as a Next.js project.
2.  **Root Cause Analysis**: It dug into `lib/posts.server.ts` and realized that my blog engine expects every post to be in its own folder (e.g., `content/posts/[slug]/index.md`). I had originally just dropped a markdown file into an existing folder.
3.  **The Fix**: It automatically moved the file to `content/posts/google-antigravity/index.md` and even fixed the image assets by moving them to the `public` directory.

It didn't just tell me what was wrong; it just went ahead and fixed the directory structure.

### Update 2: The Build Failure
*And then, the build failed.*

When I added myself as a co-author, the Next.js build crashed on the `/authors` route.
1.  **The Error**: `Error: The provided export path '/authors' doesn't match the '/authors/[author]' page.`
2.  **The Cause**: The author field in the frontmatter was `Google Antigravity, Suresh Veeragoni`. The system was trying to generate a page for that entire string instead of splitting it.
3.  **The Fix**: Antigravity refactored `lib/posts.server.ts` to properly split author names by comma, trim whitespace, and normalize them. It also added "Google Antigravity" to the `authors.ts` config file so I have a proper profile.

Now, we are co-authors on this post.

*P.S. You can check the [commit messages of this repository](https://github.com/veeragoni/blog/commits/main/?since=2025-11-17&until=2025-11-18) to see exactly how this post evolved step-by-step.*

---
*Generated by Google Antigravity.*
]]></content:encoded>
            <category>AI</category>
            <category>Coding</category>
            <category>Google</category>
            <category>Antigravity</category>
            <category>Agents</category>
            <category>Meta</category>
        </item>
        <item>
            <title><![CDATA[I vibe coded this blog]]></title>
            <link>https://veeragoni.github.io/posts/vibe-coding</link>
            <guid>https://veeragoni.github.io/posts/vibe-coding</guid>
            <pubDate>Mon, 03 Feb 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[How I built this blog using Vibe Coding]]></description>
            <content:encoded><![CDATA[
Like most people, I have been thinking to write about my experiences/learnings/opinions online. Learn in public. Always procastinated and finally here I am!
I want to create a content machine where I write once and publish everywhere (like Medium, LinkedIn, Substack etc).
The process should be simple but automated where possible. I mean, simply write a markdown file and it should show up on the website. I want to focus on the content/language rather than complex formatting structure. I wanted to get into proper note taking habbit and been advocating about using Obsidian like tools (Notion, Logseq etc). I said advocating because I started using markdown based note taking in the past, but due to lack of decipline I tend to not to continue. Maybe best way is to make the process natural as part of daily workflow. Let's see how long this writing will sustain. So, finally getting back to this writing

Then I bumped into lot of AI coding tools. couple of months ago into https://bolt.new/. Its a phenomenal software. I know there are other alteratives which came little later like lovable.dev. I wanted to check, if I can build a blog engine just by prompting open source version of bolt, [bolt diy](https://github.com/stackblitz-labs/bolt.diy). I understand there are bunch of content writing frameworks like Hugo, Jekyll, Gatsby, Eleventy, MkDocs5. But the learning curve could be much. Also, I wanted prompt my way around to code the blog site. Later I learned that its called ["Vibe Coding"](https://x.com/karpathy/status/1886192184808149383) from Andrej Karpathy's X post.

Anyhow, the way this blog works is I write content in the [GitHub Repo](https://github.com/veeragoni/blog/tree/main/content/posts) and the markdown files will automatically get converted to html pages during build time by [GitHub Actions](https://github.com/veeragoni/blog/actions/workflows/deploy.yml) and get deployed to GitHub pages using GitHub Actions. I think I spent couple of hours `Vibe Coding` and I got the initial prototype. One of the disadvantage of vibe coding is unless you have proper checkpoints as you build, you could lose as the AI model behind could change working code/feature you dont want to lose. So, I took the project into my local VS Code, and started fixing the code still doing vibe code using [Cline](https://github.com/cline/cline)/[Continue](https://github.com/continuedev/continue) plugins and configured my own LLM (Claude Sonnet in this case) using Amazon Bedrock. This way, I fix only the files I am interested, provide limited context as needed and commit the repo so that I dont lose important changes and revert to those commits in case the AI model modifies the whole thing. Overall, I tinkered around asking for adding bunch of features and finally it got the shape I wanted. These are feature I implemented as part of the blog features

- RSS/Atom Feeds
- Client side search. The search index get built during build time in GitHub Actions
- Oh btw, the GitHub Actions pipeline automatically builds upon new commits, generates html page and publishes to GitHub pages.
- Ability to co-write with multiple authors. Meaning, there is cope for filtering content by author(s) and see all blog posts by author(s)
- See blog posts by Tags
- Dark mode
- Progress bar for reader as they scroll through
- Google Analytics to track usage via Cookies
- Pinned posts using markdown Front Matter

In future, I am planning to add support form mermaid charts and other visualizations so that I can see the content directly in generated html pages. 

What did I learn? Vibe Coding works. patience matter. If you are already good at certain things, it could waste your time. But if you know how to use the tool effectively, it could save time. Play each one's strength where it matters. let the AI tool do mundane, repetative work, or even sometimes do the research on behalf of you and reason with AI to bring best outcomes. If you are someone completely new to the tech that the AI is building (ex: React/TypeScript in this case), its probably little more tough or you might need to work more to prompt/undersatnd more about what it is doing. Overall I used a mix of AI tools, not just one to build this blog using Vibe Coding. 

Finally, I purchased a domain, and updated GitHub pages with the CNAME to use domain I purchased. thats how this blog is born. Finally, Andrej's [x post](https://x.com/karpathy/status/1886192184808149383) from today motivated me write this story.

]]></content:encoded>
            <category>AI</category>
            <category>Development</category>
            <category>Productivity</category>
        </item>
    </channel>
</rss>