Saturday, April 25, 2026

Crossing the Vibicon

Vibe coding - solving problems by extended conversation with a machine learning program rather than writing the code yourself - is all the rage.  But I hadn't really been partaking, finding one excuse after another.  I don't have time.  It's a lazy approach to the craft I've honed.  Abandonment of my skills.   But I've also taken to referring to myself as a "lapsed computational biologist", as I was never doing any coding - or looking at biological data.  I'm business development now, which is a bit of a euphemism for salesperson.  Still, a bit of a pang - and all of my colleagues were vibing away.  And then an old friend/colleague said they fed my recent column on LinkedIn to an AI and it generated code to replicate my little parser  - and this colleague has never programmed!  He sent me the code, which I've skimmed but not tested - looks about right.  And so confession time - I have drunk from the well of vibe coding and do not plan to stop drinking from it anytime soon


An artistic depiction of Julius Caesar's transgression, pulled from Wikimedia

Dabbling in Temptation

My first attempt at vibe coding generated dead code - I tried to have Gemini build me a tool to fetch the movie listings from local theaters that run older movies and generate a union list.  Gemini built me a tool which runs, but never fetches anything.  And I've been too busy to actually try to have Gemini or Claude debug it.  So not a great enticement to dens of inquity.

But then some serious temptation - I wanted to extract information from a CSV that one of our tools builds and cross-reference that with HubSpot, the customer-response management (CRM) tool we have.  I alternate between guilt I'm not really learning HubSpot with a certain determination to avoid learning HubSpot.  Normally I'd try to overcome this by spending a day or so going through API docs and trying to query HubSpot and probably throwing things at walls.  But now, just have Claude do my dirty work!  And it was done!

Perhaps getting closer to the thin ice was another question - someone asked me about replicating a recent preprint that designed new enzymes.  A key question would be could all the reagents be sourced?  Normally I'd spend time transcribing (or copy-and-pasting) the compound names from the text and then googling away and transcribing that info into a spreadsheet.  But instead I decided to Claude it.  This required a number of rounds of refinement - sometimes it reported something available that has been discontinued, a whole question of stereochemistry came up, and other little corrections.  Later I extended this to pull out mass spectra from PubChem for the compounds, to better plumb whether the commercial unavailability of a few of the compounds would be a serious roadblock to configuring assays relying on substrate depletion.  Still noodling on that.  But that's chemoinformatics, so still not truly crossing a line

Alea Iacta Est


But then I plunged headlong over the Rubicon.  I vibe coded a straight-up BLAST-based pipeline, something I've been coding for over 35 years.  Bread and butter, handed over to a bot.  The one tricky part is I had a list of protein names and needed them mapped to sequences - that can always be a bit dicey - but then the rest was just BLASTP, parsing that and filtering the right way.  And I vibe-coded it.

And I like it!  The results look right, it did most of the work while I slept, and I can easily update it.  Am I mad?  Must I now battle my personal Senate and Pompey?

An interesting bit of vibe coding is it sometimes seems my main role is to click "Allow once" or "Always allow" when Claude hits some sort of security barrier.  Which I probably do a bit freely.  Read a paper?  Sure.  Download from NCBI.  Of course.  Do I want to play thermonuclear war?  Why not?

Embracing the Temperature-Sensitive Dark Side

In for a penny, in for a pound.  Having tasted the vibing vice and enjoyed it, I was off for another round.  This time I wanted to assemble all the known tyrosinase temperature sensitive variants and their wild type sequences - I have a demo I want to do with these.  The best known is the Siamese cat - only the cooler parts of the feline are dark - but it turns out there are many more.  Could I just have Claude put the set together for me?

Well, mostly.  Claude did get the job done - except I had already searched a bit and knew there are three known cat alleles and two dog - it found only two cat and one dog.  One of the cat alleles is interesting because it is a deletion at the protein level driven by a small duplication at the genome level - messes up splicing.  If I hadn't known these in advance, I wouldn't have been able to call Claude out on the omissions.  On the other hand, it promptly found the omissions and updated my database.  Oh, and it also put comment lines (with # delimiters) in the FASTA file, which is at best dangerous

So it looks like I'm a vibe coder.  Maybe next I'll ask it to work in Rust instead of Python, just to join the cool kids who are converting all sorts of code from anything to Rust (and bioinformatics legend Heng Li just said: if it's my code, convert away!).  More likely I'll just be bringing more tools and resources into my web (and again, curse you LinkedIn for no API my AI can latch onto!).  

A final thought.  A funny thing about the Rubicon - nobody knows where it was.  There's no great river in northern Italy called the Rubicon.  Some relatively minor flowing stream had been chosen by Rome to represent an internal boundary, but it was no Rhine or Danube.  By crossing it Julius Caesar plunged Rome into civil war.  By writing this I record my personal Rubicon, which is even less physically present and hopefully does not plunge my psyche into civil war.

No comments: