Bring on the Jazz Hands: A Vibe Coding Story
Postcards from the Future started as part of the process of creating a new class on the future of business models for the University of Michigan Center for Entrepreneurship, and is now where I spend time thinking about how the new generation of AI will change how we live and do business.
A couple of weeks ago, I shared my thoughts on the hot new Vibe Coding phenomenon. Because the post ran long (surprise!), I decided to leave out the discussion of the process that prompted me to write the post in the first place: me actually “Vibe Coding” my first web application.
Vibe Coding
To recap, vibe coding is the process of using LLMs to generate software code from text prompts. The term was coined by OpenAI co-founder Andrej Karpathy way back in early February of this year. Ages ago, by AI standards, and today you can barely doom scroll two screens’ of headlines without seeing the term used a half dozen times: “I vibe coded a $130,000 app in twenty minutes!,” “Beatbox Vibe Coding: the Hottest String Processing Since LISP!” or, “Vibe coding lets 10 engineers do the work of 100!” (I only made up one of those).
Yes, expert software engineers can get tremendous leverage using LLMs. For non-coders, vibe coding is a great way to increase code literacy, and do very basic things. For commercial solution providers, the evidence I’m seeing continues to support the idea that, in inexperienced hands, vibe coding is more likely a rapid path to unimaginable technical debt (except for the very simplest of use cases). Meaning: you still need competent software engineers to build a software business.
Regarding that “$130K in 20 minutes” app, the very generous financial analysis that got the author to $130K reminded me of a guy I met who would tell anyone within earshot that he ran a $100M business. Digging slightly deeper, one might learn that he got to his $100M by asserting a market value of 25 times revenue for his Business Process Outsourcing (BPO) company. Services companies are valued a lot closer to 1x revenue in my experience. People are silly, of course, but I’m sure this guy was very compelling on the cocktail party circuit.
The Insane Memetic Velocity of The Vibe
While I’m off in the weeds, let me just take a second to point out the insane velocity with which the term “vibe coding” has taken over our culture. By all accounts, this phrase entered our vocabulary on February 2, 2025 via a Twitter post. Now, in addition to vibe coding, we now have vibe working, vibe engineering, and, apparently, “vibe” is now the qualifier for anything associated with AI productivity.
While the concept of vibe coding is, per se, not a meme in the current parlance of the web (i.e. a humorous image that gets rapidly shared everywhere), the vibe coding phenomenon is a great example of the ur-definition of meme: a “unit of cultural transmission,” which was first introduced to us by Richard Dawkins in The Selfish Gene. In my class this past semester, AI, Entrepreneurship, and the Next Industrial Revolution, vibe coding went from complete non-existence to being a central focus of discussion in several classes. Everyone either was or knew somebody who was vibe coding, and everybody had an opinion on how this phenomenon would impact work going forward. Crazy.
Finding the Perfect Vibe (Coding Project)
In choosing my project, I wanted to do something relatively small, and in a language I wasn’t familiar with. For context, I have been around software organizations for my entire career, but I haven’t programmed professionally in more than 30 years. At various points in my past, I could have claimed a reasonable level of fluency in C, C++, C#, and Java, and passable knowledge of W3C standards (HTML, XML, CSS, …).
My quest for a suitable vibe coding project had been stuck on the back burner for a while until I had yet another “you kids, get off of my lawn!” moment: a gratuitous, and blood pressure-raising, reference to AGI in some long-forgotten article or blog post. <gasp>
Yes, I get that AGI is a convenient layperson shorthand for “really powerful AI,” but the cranky old Artificial Intelligence PhD inside of me still cringes at the notion: the term AGI is lazy, imprecise, and, for the hundredth time, there is no such thing as GENERAL intelligence!
Using the term AGI is lazy, imprecise, and there is no such thing as GENERAL intelligence!!! — some guy yelling at the kids on his lawn
But then it hit me: I could use vibe coding to save the world from lazy references to AGI! I could make a browser plug-in that automatically swaps out all text instances of “AGI” with something more appropriate and informative: “***Jazz Hands*** AGI (which isn’t really a thing)”!
Yes!
A few more choices, and I was on my way: the target browser would be Chrome, and the language would be Javascript. I could really feel the vibes at my fingertips! To the chatbot …
Me >: I'd like to make a chrome plug-in that substitutes text on websites, can you help me with that?
ChatGPT >: Certainly! Creating a Chrome extension to substitute text on websites involves writing some HTML, JavaScript, and a manifest file to describe the extension. Here's a basic outline of how you can create such an extension: …
Within a few seconds, ChatGPT generated a 25 line JSON Manifest file to tell the browser about the plug-in, a 35 line Javascript file to do the actual work, and even a 12 line HTML file to create a descriptive pop-up. The process was laid out in an easy to follow six step process, including clear instructions as to how to register the extension with Chrome.
The guts of the code was only about 10 lines long, based on using a Regular Expression to find and replace the desired text. I remember programmers talking about Regular Expressions back in the day. Powerful stuff. I have to say I was impressed.
I followed all of the deployment instructions, switched my browser to Developer Mode, pointed Chrome at my new extension, and …
Two Days Later …
… I had a mostly-working Chrome extension.
Full-disclosure, it wasn’t two days’ consecutive work; more like a few disconnected hours, but for ~10 lines of code, I have to admit it was a bit disappointing.
Really, I wanted it to work. Unfortunately, the Manifest file contained references to Javascript routines that weren’t actually named in the code (easy to spot), the Javascript code wasn’t looking for the right event trigger to signal a completed page load (hard to spot), and a few other nits.
In the end, I can’t see how I would ever have gotten the code to work without some coding skills. I added a few debugging and error messages to help figure out what was going on. I also knew what the Console is and how to find it on the browser (key to figuring out errors). Also, without a pretty solid understanding of how the W3C Document Object Model works, this plane wasn’t going to land.
To be fair, the LLM did provide some helpful advice for debugging, and, when I suggested that the problem might be with the event listener, it got me to a more or less working plug-in pretty quickly.
I still don’t have a completely error-free plug-in, but it works pretty well, and … it might just save the world wide web:
Bring on the ***Jazz Hands***
With apologies to Wharton’s Ethan Mollick, one of the more prolific “AI for Business” voices on social media, here’s a screen grab from his Substack from April 20, 2025, before and after use of the plug in:
Before:
After:
Obvious opportunities for improvement on the plug in include fixing whatever is causing the error messages and, I know this is a stretch, making “***Jazz Hands***” appear in a different color than the text it is replacing.
Postscript
I get the allure of vibe coding, and I can completely see how our sound byte culture could grab onto the idea and run wild with it. I will definitely try more vibe coding at some point, and I fully expect that that coding performance of LLMs will continue to improve: given the potential ROI on improvements to software engineering efficiency, this particular application of LLMs is going to see a lot of attention.
And, as annoying as it might be to be bombarded by all the vibe coding hype, to be clear, I’d rather see vibe coding headlines than all those “AI / End of Days” headlines that we saw a few years ago.
Appendix:
While I don’t plan on making the plug in publicly available, the entirety of the code is shared below. Sorry that it’s images, I couldn’t get Substack to format it properly. Good news there are plenty of highly-functional OCR options out there ;-)
Note that you will also need to provide an icon image (48x48, in this case, I used my dog’s head shot from her previous job).
To install it and make it run, just ask your favorite LLM: “how do I install my own chrome plug in?”
manifest.json:
content.js:
Kurt Skifstad has 30 years’ experience running, and turning around venture-backed software companies, a PhD in AI, and a fondness for run-on sentences. He is currently a Professor of Entrepreneurship at the University of Michigan, where he also serves as the Dixon and Carol Doll Executive Director for the Center for Entrepreneurship.
Kurt advises companies, mentors CEOs, and is a frequent speaker on technology startups, the information economy, entrepreneurship, and the impact of AI on the future of business.