Rebuilding My Blog with Vibe Coding: Experiment and Reflections
Reworking my personal blog has been on my mind for some time. While I’ve tackled similar migrations before, each iteration grows increasingly complex as content accumulates and my standards evolve.
This migration presented an ideal opportunity to explore one of the major trends from the past year: vibe coding. I decided to apply it while building a new version of my Jekyll website. This article offers an honest overview of my experience and perspective on the trend.
Eight Years of Blog Evolution
My website has been a long-running side project since 2017, when I was living in the UK. The idea originated from a colleague at the time (@alex nicol, if you’re reading this) who suggested that maintaining a personal blog would be valuable for a data scientist—both as a primary platform and for cross-posting to sites like Medium. I took it as an opportunity to improve my English writing and share my work with the world.
It started in 2017 with a GitHub Pages Jekyll blog, which then evolved into a self-hosted Ghost blog on AWS in an EC2 instance, and finally reached its current form by going back to a Jekyll website hosted on AWS Amplify, where I bought the template Norlin from Artem Sheludko.

The design represented a significant upgrade from both my original Jekyll site and the Ghost blog, featuring an elegant interface with new capabilities like tags and people seem to like it.
However, as I continued creating content over the years, the template was not optimized for technical content and you could see some limitation particularly evident when embedding GitHub gists or code snippets.
By mid-2025, I wanted to rework the site in terms of design and functionalities while maintaining Jekyll as the foundation. The goal was to shift from travel blog aesthetics to a simple techy blog platform with these key features:
- The ability to host both English and French versions of a post
- Tag features for posts, plus categories to make browsing easier
- A search feature for the blog
- New YAML-configurable sections (for projects or work experience)
With that in mind, as a set of specifications, let’s start vibe coding my way to it.
The Magic (and Chaos !?) of Vibe coding with Claude Code
The term was coined by Andrej Karpathy (former Tesla Chief of AI) in February 2025, and his post gives a good summary of the concept.
There's a new kind of coding I call "vibe coding", where you fully give in to the vibes, embrace exponentials, and forget that the code even exists. It's possible because the LLMs (e.g. Cursor Composer w Sonnet) are getting too good. Also I just talk to Composer with SuperWhisper…
— Andrej Karpathy (@karpathy) February 2, 2025
The concept is compelling: machine-generated code that runs smoothly, tests easily, and requires only natural language prompts. The term has gained significant traction, with numerous players staking their claim—Cursor, Claude Code, Gemini Code, Replit, Windsurf, Lovable, and GitHub Copilot, among others. Each offers distinct approaches to code-user interaction, whether through VS Code forks, CLI tools, or editor extensions. Beyond code generation, each provider implements unique testing methodologies, with countless performance comparisons available online.
Vibe coding represents the natural evolution of LLM interfaces and autonomous agents, applied specifically to software development. For this project, I chose Claude Code with the VS Code extension, which appeared to be the leading solution at the time. Setup was straightforward—I simply provided an API key and was ready to begin.
I first crafted a comprehensive prompt using ChatGPT to address the project’s initial requirements.
After entering the prompt, the system began processing. I’ve recreated this execution in a YouTube video for those curious about the process (though I stopped it partway through, you’ll grasp the overall flow).
From this recording, here are the interesting parts that can be time coded:
- The first five minutes are a setup phase for exploring the system, doing some web searches on the internet, etc., to design an execution plan at the end.
- There is a phase of validation of the plan at the end of the planning phase.
- The magic begins and the system starts to build the website piece by piece, following the plan.
- All along the way, you have to give permission to the system to execute some commands. This can be done at the action level or for the full vibe coding session.

An important observation from other tests (not shown in this video): without a detailed initial prompt, the system will ask clarifying questions about aspects like deployment strategy to inform its design decisions. Within minutes, I had a functional first iteration closely resembling the current version.

To finalize the development, I began testing the website and discovered several inconsistencies. Through iterative exchanges with Claude, I corrected issues like untranslated pages and broken features. However, one feature consumed the most debugging time: the search bar.
The search bar was completely non-functional—it wouldn’t appear when clicking the button, and even when forced open, it returned no results. After numerous exchanges with Claude Code yielded no proper solution, the system pivoted its approach. It redesigned the feature to visually highlight different areas in the UI for me to see if something was broken.

After two hours of troubleshooting, the system remained unable to identify the issue. Through manual experimentation with the window, I discovered the problem: the content wasn’t missing—it was rendered behind the page due to an overlay from the search component that obscured the search bar output.
This debugging was fun to do as it reveals a current limitation of these systems: they test features programmatically (typically using Python with Selenium or similar tools in this case) but they are not experiencing them as users do. Despite this constraint, the system successfully provided visual debugging tools that aided my investigation—a notable achievement and I think as a front end developers will do (it’s how I learn a bit of html and css back in the day).
There was one final major challenge to complete the website and it was the migration of the content from my blog to the new format, followed by a translation of all the articles in French.
I began manually, spending 15–30 minutes per article on redesign and translation. After an hour, I delegated the task to Claude Code, instructing it to follow the approach I’d established with the initial articles. The system parallelized the translation of approximately 50 articles—each marked with a note crediting Claude Code—it saved me countless hours.
In less than a week, I managed to have my new website up and running locally, and I deployed it to AWS afterwards (this step could have been done by Claude Code if I wanted), but overall I am super impressed with what it managed to produce in this amount of time for quite a limited cost.
Let’s now go beyond this project and let me share a few random thoughts about the trend.
My thoughts on vibe coding
Environmental and Ethical Trade-offs We Can’t Ignore
The vibe coding trend builds upon LLM-powered agent systems, inheriting both their remarkable capabilities and their significant drawbacks—particularly regarding environmental costs and data provenance.
Training large models demands massive computational power, substantial electricity, and extensive hardware infrastructure. Even during inference, when developers continuously use agents in tools like Visual Studio Code or platforms like Claude and ChatGPT, energy consumption remains considerable at scale.
Equally troubling is the question of training data origins. These models scrape and ingest vast quantities of internet content. Were people asked for consent? Generally not—yet this remains the operational reality.
While the productivity gains are impressive and sometimes startling, substantial trade-offs exist behind the scenes. The costs are financial, ecological, and ethical as engineers, we must remain conscious of this balance and strive to use these systems responsibly, particularly as they become embedded in our daily workflows.
When the Free Lunch Ends !?
My first vibe coding experience proved overwhelmingly positive—I solved the entire problem in one weekend. The estimated cost across all testing: $100–150 for the complete blog rebuild. Given the time savings and end result, this represents excellent value. While I could have built everything from scratch, it would have required months rather than a weekend to achieve comparable results.
Being able to offload this work through vibe coding exceeded my expectations—it delivered exactly what I hoped from such a system. However, significant questions pop up about long-term costs. While developing my website was relatively affordable, news like this raises concerns: will this pricing persist? And will quality remain consistent?

My suspicion is that API providers like Anthropic and OpenAI currently operate at a loss, building user dependency before eventually adjusting their models or pricing to improve profitability—potentially sacrificing efficiency for revenue.
An alternative exists: self-hosting using open-source models. While this requires infrastructure investment and may sacrifice speed, it offers greater independence. It’s worth noting that these model systems are less than a decade old—operational costs may decrease over time, eventually making self-hosting increasingly accessible (and we can see people deploying some decent vibe coding stack at home)
Who Do You Call When AI-Generated Code Breaks?
A critical question extending beyond personal blogs concerns long-term maintenance. For my blog, I understand the codebase and can leverage documentation or forum support—but what about more complex systems?
With my previous blog, whenever issues arose, I could discuss them directly with Artem, the template creator, and receive updated versions within a day.

While a Claude Code-like system could potentially replicate this support in minutes, the search bar debugging experience raises doubts. Will these systems eventually hit hard limits in their debugging capabilities?
As of February 2026, human oversight remains essential. While you can delegate code generation and even some deployment tasks, rigorous testing and guardrails are non-negotiable. The system produces output that requires human validation and quality control.
The Great Developer Divide
Vibe coding has become deeply polarizing. Some view it as coding’s evolution, where the work shifts from writing code to sculpting it. Others see it as a vampire draining time, skills, and life itself.

Like any emerging technology, it presents trade-offs. However, productivity gains remain undeniable. The resurgence of the “10x engineer” myth echoes earlier narratives about full-stack data scientists capable of juggling multiple roles simultaneously.
Beyond polarized online discourse lies a hard reality: the GenAI trend initiated by ChatGPT in 2022 directly impacts the job market. Junior profiles face the greatest pressure. A Stanford study captures this phenomenon, with the most revealing visualization showing software developer headcount by experience level:

The data also reveals a plateau for experienced professionals. Tech’s boom era has ended, affecting all position types. Data/ML/AI roles face similar pressures as traditional programming positions—no one is immune.
This climate brings anxiety and uncertainty: Is the pace of change too rapid? Will I become obsolete? Am I merely an AI extension? Will AI eliminate my job? Will using these tools degrade my coding skills? These questions weigh heavily on practitioners.
Why I’m Optimistic Despite the Uncertainty
Despite profound uncertainty about our destination, there’s something genuinely exciting about this moment. Here’s my advice for navigating this period:
- Explore these new tools: Experimentation has never been more accessible, with free tiers and affordable options widely available. Whether you embrace or reject vibe coding, curiosity and benchmarking are essential.
- Be a problem solver: I’ve never defined myself solely as a coder. My educational background reflects this, but more fundamentally, I believe the goal is solving problems efficiently and creatively, not just writing code.
- Be visible: This blog exemplifies the value of showcasing your work, knowledge, and perspective. Don’t fear publishing ideas similar to existing content—your unique voice and approach differentiate you.
- Focus on what matters to you…: Expertise remains valuable. The ideal balance combines generalist coding skills (enhanced by these tools) with deep specialization in specific domains (for me: personalization and discovery) or industries (IoT, energy, entertainment).
- …but build secure and reliable code: This principle predates vibe coding, but its importance has intensified. In an era where AI generates code rapidly, the ability to produce reliable, secure, thoroughly tested code separates adequate from excellent engineering. “Good enough” no longer suffices.