Vibe coding
An unexpectedly creative, fun, and useful avenue for personal AI
At various points in my life, I could’ve become a “1337” coder. My high school STEM program had compsci classes in which we learned C++ and Java. Despite muddling through those, it led to a single semester in college where I was an intended CS major.1 Years later, at a startup in my first post-MBA role, I found myself leading a team of entry-level data analysts, trying to stay “one chapter ahead” of them as we increasingly used SQL in our work.
Still, I’d been out of the game for a long time—until, about a month ago, I got sucked into the world of AI-assisted “vibe coding”. In no time at all, I’ve gone from relative n00b to spending many recent nights pushing my first GitHub commits in almost a decade, setting up a Postgres database on Supabase for what Claude described as “multi-workspace architecture using passphrase-based isolation,” and publishing several web apps via Vercel!
For someone not directly in the “tech” industry and not in a technical role, AI has been an occasionally helpful tool, but it hadn’t been a game-changer in my day job. Meeting notes, fine (though often a letdown when you need to confirm a specific detail). Good for quick high-level research, sure. Analyzing earnings reports and financial statements, actually quite good. Yet there have been plenty of downsides:
Whole paragraphs of irrelevant or padded slop in memos or emails (esp. when 2-3 sentences or crisp bullet points would suffice)
AI-generated decks that have visual appeal at first glance, but are full of mushy word salad, repeated metrics and phrasing, and unwieldy to update
The irritating “LinkedInfluencer” style of writing posts that, to my horror, I’ve lately seen some connections adopt2
A weird dynamic where otherwise highly competent folks excuse away glaring errors produced by AI hallucinations3
With vibe coding, I’ve recently added several interesting, productive uses in a professional setting. Examples include: a custom dictionary that, via an automated Google Apps script, corrects Gemini’s misspellings of people/place names in meeting notes; an interactive, web-based process flow depicting a complex agricultural value chain in a more visually impactful and information-rich way than a static slide or document could; and a dashboard with APIs for satellite map imagery, historical temperature and rainfall data, soil conditions, etc., that can advise on location suitability and optimal tree planting timings.4

Meanwhile, I’ve been on a roll with useful or entertaining little personal applications. Nothing earth-shattering, but each typically takes only 2-3 hours of effort to set up. Some highlights:
an ongoing mini-CRM that scrapes my Google Calendar and reminds me when I haven’t hung out with a local friend in too long
a bilingual educational game for a friend’s toddler, who can “tap to wake” cartoon versions of sleeping Bay Area animals
a searchable organizer for saved posts on Instagram—created for my mom, who wanted an easy way to filter through hundreds of bookmarked recipes
a World Cup animation featuring participating countries as illuminated panels on a revolving soccer ball, with panels going dark as teams are eliminated, and which tracks scores, schedules, and key stats (“The Ball Goes Dark”)
a pregnancy tracker, playing off a recurring joke with my friend M, that swaps fruits for meat in estimating fetus size by week (“Arbaby’s”)
This experience has caused me to reflect on how I frequently roll my eyes at the ways folks are using AI-generated writing, yet find genuine utility in these other AI applications. Given that most people’s experiences with AI to date are also probably centered around its text creation, that can undersell what it may actually be good for.
Of course, my experience with AI-driven coding on my micro-projects pales in comparison to professional software engineering, which is rapidly becoming about managing agents deploying code at enormous scale. I can’t authoritatively weigh in on its effectiveness there. Heck, as a relative n00b, it’s likely I can’t even spot issues with AI-written code like I do with AI-generated writing.
But there’s at least one critical difference: for software, the user only sees the finished product, and there’s at least a partial upfront filter: code with errors that cause it to not run has to be fixed to even get to that point. That’s not true of writing, where the inputs are the outputs, and errors/slop are passed on directly to the user…
Finally, this past month has also provided a reminder I didn’t realize I sorely needed: that although there’s justified alarm about many emerging tech developments (e.g. autonomous killer drones, deepfake videos, unauthorized facial recognition and other forms of mass surveillance), some new capabilities can spark joy!
There was some well-intentioned but misguided parental pressure pushing me toward a CS degree 😅
I do my share of cringe posting… but, if you’re trying to create professional lessons out of wholly unrelated events such as attending the World Cup or (really!) your kid’s injury, it’s even worse to have it be obvious LLM copy.
A couple years ago I came across a pitch deck for Company X, shortly before it was going to be presented, which detailed potential synergies with a Company Y whom we happened to have pitched not long before. “I didn’t know X and Y were related,” I said to the deck’s author. “Yeah! I asked AI if X and Y had a connection, and it said X is a subsidiary of Y,” they replied. Though both were headquartered in the same foreign country, X and Y had absolutely no connection... LLMs were (and often still are) both highly suggestible and confidently but egregiously wrong.
The dashboard is a great example of a tool to not trust blindly, since there are many invisible points of potential failure related to the underlying data. I think of this as a decision-making assistant whose outputs I need to verify with my subject matter expert colleagues.


