35.7 C
New Delhi
Saturday, June 21, 2025

Vibe Coding, Vibe Checking, and Vibe Running a blog – O’Reilly


For the previous decade and a half, I’ve been exploring the intersection of expertise, schooling, and design as a professor of cognitive science and design at UC San Diego. A few of you may need learn my current piece for O’Reilly Radar the place I detailed my journey including AI chat capabilities to Python Tutor, the free visualization device that’s helped tens of millions of programming college students perceive how code executes. That have obtained me interested by my evolving relationship with generative AI as each a device and a collaborator.

I’ve been intrigued by this rising follow referred to as “vibe coding,” a time period coined by Andrej Karpathy that’s been making waves in tech circles. Simon Willison describes it completely: “After I discuss vibe coding I imply constructing software program with an LLM with out reviewing the code it writes.” The idea is each liberating and barely terrifying—you describe what you want, the AI generates the code, and also you merely run it with out scrutinizing every line, trusting the general “vibe” of what’s been created.


Study quicker. Dig deeper. See farther.

My relationship with this strategy has developed significantly. In my early days of utilizing AI coding assistants, I used to be that one who meticulously reviewed each single line, typically rewriting vital parts. However as these instruments have improved, I’ve discovered myself steadily letting go of the steering wheel in sure contexts. But I couldn’t totally embrace the pure “vibe coding” philosophy; the professor in me wanted some high quality assurance. This led me to develop what I’ve come to name “vibe checks”—strategic verification factors that present confidence with out reverting to line-by-line code evaluations. It’s a center path that’s labored surprisingly properly for my private tasks, and in the present day I need to share some insights from that journey.

Vibe Coding in Follow: Changing 250 HTML Recordsdata to Markdown

I’ve discovered myself more and more turning to vibe coding for these one-off scripts that clear up particular issues in my workflow. These are sometimes duties the place explaining my intent is definitely simpler than writing the code myself, particularly for knowledge processing or file manipulation jobs the place I can simply confirm the outcomes.

Let me stroll you thru a current instance that completely illustrates this strategy. For a category I educate, I had college students submit responses to a survey utilizing a proprietary net app that offered an HTML export possibility. This left me with 250 HTML information containing helpful pupil suggestions, but it surely was buried in a multitude of pointless markup and styling code. What I actually wished was clear Markdown variations that preserved simply the textual content content material, part headers, and—critically—any hyperlinks college students had included of their responses.

Fairly than penning this conversion script myself, I turned to Claude with an easy request: “Write me a Python script that converts these HTML information to Markdown, preserving textual content, fundamental formatting, and hyperlinks.” Claude recommended utilizing the BeautifulSoup library (a strong alternative) and generated a whole script that will course of all information in a listing, making a corresponding Markdown file for every HTML supply.

(On reflection, I noticed I most likely may have used Pandoc for this conversion job. However within the spirit of vibe coding, I simply went with Claude’s suggestion with out overthinking it. A part of the enchantment of vibe coding is bypassing that analysis part the place you examine completely different approaches—you simply describe what you need and roll with what you get.)

True to the vibe coding philosophy, I didn’t evaluation the generated code line by line. I merely saved it as a Python file, ran it on my listing of 250 HTML information, and waited to see what occurred. This “run and see” strategy is what makes vibe coding each liberating and barely nerve-wracking—you’re trusting the AI’s interpretation of your wants with out verifying the implementation particulars.

Belief and Threat in Vibe Coding: Working Unreviewed Code

The second I hit “run” on that vibe-coded script, I noticed one thing which may make many builders cringe: I used to be executing utterly unreviewed code on my precise pc with actual knowledge. In conventional software program improvement, this may be thought-about reckless at greatest. However the dynamics of belief really feel completely different with fashionable AI instruments like Claude 3.7 Sonnet, which has constructed up a fame for producing fairly secure and useful code.

My rationalization was partly primarily based on the script’s restricted scope. It was simply studying HTML information and creating new Markdown information alongside them—not deleting, modifying present information, or sending knowledge over the community. In fact, that’s assuming the code did precisely what I requested and nothing extra! I had no ensures that it didn’t embrace some sudden conduct since I hadn’t checked out a single line.

This highlights a belief relationship that’s evolving between builders and AI coding instruments. I’m far more keen to vibe code with Claude or ChatGPT than I might be with an unknown AI device from some obscure web site. These established instruments have reputations to take care of, and their guardian firms have sturdy incentives to forestall their programs from producing malicious code.

That mentioned, I’d like to see working programs develop a “restricted execution mode” particularly designed for vibe coding situations. Think about with the ability to specify: “Run this Python script, however solely enable it to CREATE new information on this particular listing, stop it from overwriting present information, and block web entry.” This light-weight sandboxing would offer peace of thoughts with out sacrificing comfort. (I point out solely proscribing writes relatively than reads as a result of Python scripts sometimes have to learn numerous system information from throughout the filesystem, making learn restrictions impractical.)

Why not simply use VMs, containers, or cloud companies? As a result of for personal-scale tasks, the comfort of working straight alone machine is tough to beat. Organising Docker or importing 250 HTML information to some cloud service introduces friction that defeats the aim of fast, handy vibe coding. What I would like is to take care of that comfort whereas including simply sufficient security guardrails.

Vibe Checks: Easy Scripts to Confirm AI-Generated Code

OK now come the “vibe checks.” As I discussed earlier, the good factor about these private knowledge processing duties is that I can typically get a way of whether or not the script did what I supposed simply by analyzing the output. For my HTML-to-Markdown conversion, I may open up a number of of the ensuing Markdown information and see in the event that they contained the survey responses I anticipated. This guide spot-checking works fairly properly for 250 information, however what about 2,500 or 25,000? At that scale, I’d want one thing extra systematic.

That is the place vibe checks come into play. A vibe test is basically an easier script that verifies a fundamental property of the output out of your vibe-coded script. The important thing right here is that it ought to be a lot less complicated than the unique job, making it simpler to confirm its correctness.

For my HTML-to-Markdown conversion mission, I noticed I may use an easy precept: Markdown information ought to be smaller than their HTML counterparts since we’re stripping away all of the tags. But when a Markdown file is dramatically smaller—say, lower than 40% of the unique HTML measurement—which may point out incomplete processing or content material loss.

So I went again to Claude and vibe coded a test script. This script merely:

  1. Discovered all corresponding HTML/Markdown file pairs
  2. Calculated the scale ratio for every pair
  3. Flagged any Markdown file smaller than 40% of its HTML supply

And lo and behold, the vibe test caught a number of information the place the conversion was incomplete! The unique script had didn’t correctly extract content material from sure HTML constructions. I took these problematic information, went again to Claude, and had it refine the unique conversion script to deal with these edge instances.

After just a few iterations of this suggestions loop—convert, test, establish points, refine—I ultimately reached some extent the place there have been no extra suspiciously small Markdown information (properly, there have been nonetheless just a few under 40%, however guide inspection confirmed these have been right conversions of HTML information with unusually excessive markup-to-content ratios).

Now you may fairly ask: “For those who’re vibe coding the vibe test script too, how have you learnt that script is right?” Would you want a vibe test on your vibe test? After which a vibe test for that test? Properly, fortunately, this recursive nightmare has a sensible answer. The vibe test script is often an order of magnitude less complicated than the unique job—in my case, simply evaluating file sizes relatively than parsing advanced HTML. This simplicity made it possible for me to manually evaluation and confirm the vibe test code, even whereas avoiding reviewing the extra advanced unique script.

In fact, my file measurement ratio test isn’t excellent. It will possibly’t inform me if the content material was transformed with the correct formatting or if all hyperlinks have been preserved accurately. Nevertheless it gave me an inexpensive confidence that no main content material was lacking, which was my main concern.

Vibe Coding + Vibe Checking: A Pragmatic Center Floor

The take-home message right here is straightforward however highly effective: While you’re vibe coding, at all times construct in vibe checks. Ask your self: “What less complicated script may confirm the correctness of my predominant vibe-coded answer?” Even an imperfect verification mechanism dramatically will increase your confidence in outcomes from code you by no means truly reviewed.

This strategy strikes a pleasant stability between the pace and artistic circulation of pure vibe coding and the reliability of extra rigorous software program improvement methodologies. Consider vibe checks as light-weight exams—not the excellent take a look at suites you’d write for manufacturing code, however sufficient verification to catch apparent failures with out disrupting your momentum.

What excites me concerning the future is the potential for AI coding instruments to counsel acceptable vibe checks routinely. Think about if Claude or related instruments couldn’t solely generate your requested script but additionally proactively supply: “Right here’s a easy verification script you may need to run afterward to make sure every little thing labored as anticipated.” I believe if I had particularly requested for this, Claude may have recommended the file measurement comparability test, however having this constructed into the system’s default conduct could be extremely helpful. I can envision specialised AI coding assistants that function in a semi-autonomous mode—writing code, producing acceptable checks, operating these checks, and involving you solely when human verification is really wanted.

Mix this with the form of sandboxed execution setting I discussed earlier, and also you’d have a vibe coding expertise that’s each releasing and reliable—highly effective sufficient for actual work however with guardrails that stop catastrophic errors.

And now for the meta twist: This complete weblog put up was itself the product of “vibe running a blog.” Firstly of our collaboration, I uploaded my earlier O’Reilly article,”Utilizing Generative AI to Construct Generative AI” as a reference doc. This gave Claude the chance to investigate my writing fashion, tone, and typical construction—very similar to how a human collaborator may learn my earlier work earlier than serving to me write one thing new.

As a substitute of writing the whole put up in a single go, I broke it down into sections and offered Claude with an overview for every part one by one. For each part, I included key factors I wished to cowl and typically particular phrasings or ideas to incorporate. Claude then expanded these outlines into totally fashioned sections written in my voice. After every part was drafted, I reviewed it—my very own model of a “vibe test”—offering suggestions and requesting revisions till it matched what I wished to say and the way I wished to say it.

This iterative, section-by-section strategy mirrors the vibe coding methodology I’ve mentioned all through this put up. I didn’t want to jot down each sentence myself, however I maintained management over the route, messaging, and ultimate approval. The AI dealt with the execution particulars primarily based on my high-level steering, and I carried out verification checks at strategic factors relatively than micromanaging each phrase.

What’s significantly attention-grabbing is how this course of demonstrates the identical ideas of belief, verification, and iteration that I advocated for in vibe coding. I trusted Claude to generate content material in my fashion primarily based on my outlines, however I verified every part earlier than shifting to the following. When one thing didn’t fairly match my intent or tone, we iterated till it did. This balanced strategy—leveraging AI capabilities whereas sustaining human oversight—appears to be the candy spot for collaborative creation, whether or not you’re producing code or content material.

Epilogue: Behind the Scenes with Claude

[Claude speaking]

Trying again at our vibe running a blog experiment, I ought to acknowledge that Philip famous the ultimate product doesn’t totally seize his genuine voice, regardless of having his O’Reilly article as a reference. However in step with the vibe philosophy itself, he selected to not make investments extreme time in countless refinements—accepting good-enough relatively than excellent.

Working section-by-section with out seeing the total construction upfront created challenges, just like portray components of a mural with out seeing the whole design. I initially fell into the entice of copying his define verbatim relatively than remodeling it correctly.

This collaboration highlights each the utility and limitations of AI-assisted content material creation. I can approximate writing kinds and broaden outlines however nonetheless lack the lived expertise that offers human writing its genuine voice. The very best outcomes got here when Philip offered clear route and suggestions.

The meta-example completely illustrates the core thesis: Generative AI works greatest when paired with human steering, discovering the suitable stability between automation and oversight. “Vibe running a blog” has worth for drafts and descriptions, however like “vibe coding,” some type of human verification stays important to make sure the ultimate product really represents what you need to say.

[Philip speaking so that humans get the final word…for now]

OK, that is the one half that I wrote by hand: My parting thought when studying over this put up is that I’m not pleased with the writing high quality (sorry Claude!), but when it weren’t for an AI device like Claude, I might not have written it within the first place attributable to lack of time and vitality. I had sufficient vitality in the present day to stipulate some tough concepts, then let Claude do the “vibe running a blog” for me, however not sufficient to completely write, edit, and fret over the wording of a full 2,500-word weblog put up all on my own. Thus, identical to with vibe coding, one of many nice joys of “vibe-ing” is that it significantly lowers the activation vitality of getting began on artistic personal-scale prototypes and tinkering-style tasks. To me, that’s fairly inspiring.



Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

[td_block_social_counter facebook="tagdiv" twitter="tagdivofficial" youtube="tagdiv" style="style8 td-social-boxed td-social-font-icons" tdc_css="eyJhbGwiOnsibWFyZ2luLWJvdHRvbSI6IjM4IiwiZGlzcGxheSI6IiJ9LCJwb3J0cmFpdCI6eyJtYXJnaW4tYm90dG9tIjoiMzAiLCJkaXNwbGF5IjoiIn0sInBvcnRyYWl0X21heF93aWR0aCI6MTAxOCwicG9ydHJhaXRfbWluX3dpZHRoIjo3Njh9" custom_title="Stay Connected" block_template_id="td_block_template_8" f_header_font_family="712" f_header_font_transform="uppercase" f_header_font_weight="500" f_header_font_size="17" border_color="#dd3333"]
- Advertisement -spot_img

Latest Articles