So I’m an engineer, been coding a long time and love doing it. I’ve kept up with LLMs and vibe coding, and no exaggeration it’s the biggest change of my lifetime. I love it.
I’ll let others talk the downsides; I am not blind to them but here I want to reflect a bit on a recent project and how late-2026-LLM tools drove it. Let me set the stage:
- I live in San Diego, where you can ride bikes and motorcycles year-round. Annual rainfall normally around 10″ and usually only for a few weeks, moderate temperatures and never snow or ice.
- Lane splitting and filtering are legal in California.
- EV chargers are common (I have L2 at home and at work!)
- I commuted for three years on a Piaggio 350 so I know the issues.
More background – back when we chose the Chevy Bolt to replace the Piaggio, I researched EV motorcycles and test-rode the Zero DS/R. Cool bike, but
- Over 20k USD
- No traction control or ABS made for a scary ride with more risk than I wanted
But now, you can find used Zeros for way less. I saw a Craigslist post for a Zero SR/F a few miles from me for under $8k and dug in. The SR/F isn’t my first choice of models but that’s deal worth considering. The owner pulled the listing and I went looking for my preferred model instead, the SR/S. Here’s what I bought:

That’s a 2020 SR/S in Premium trim, with a battery replaced in 2025. (The 2020 and 21 models had a defect in their packs). With cross-country transport, parts swap etc I paid 11k for a machine with under 5000 miles. Cool!
Now I want a route-planning app
- Fun rides – choose non-highway roads with curves, moderate speed limits and less traffic
- Integrates charging stops
- Knows about EV bikes – regen, velocity-squared drag, hill losses, etc.
- Can send GPX files to my new Beeline Moto II.
There are plenty of apps for conventional motorcycles – Kurviger, for example. None for EV bikes. Why? Here’s the WSJ from 10/27/2026:

That’s one of the two big brands in the space. How about Zero?

There is no there there
Harley thought they’d sell 100,000 per year and never cracked 1% of that. There is no market for this app, even if I sold to every single owner.
But I made it anyway:

Some key ideas:
- Planning for fun – loops, out and back, destination
- Plan based on time (“I only have 90 minutes today”) as well as charge (“Bike is at 74%”)
- “Just get there” mode to optimize for time if needs be
- Oh shit – find me a charger reachable with X% battery
- Handle charger data from multiple sources
- Don’t reinvent the mapping or directions – integrate with them instead
- Web, android, iOS and Mac support in various states.
- Flexible for different bikes (L2, L3, plugs, DC, AC) and battery capacities. Currently support L2 J1772 and Tesla.
Try it yourself now, in the browser, at https://serpentine.phfactor.net/ – it’s not done but the basics work.
It’s a reasonably complex system:

But as I said, there’s no market. So why build it?
- Claude Code and friends make building complex, multi-layer systems feasible and enjoyable. I can literally do the work of an entire scrum team and I’m not exaggerating here.
- Since the entire addressable market is maybe a thousand riders, I can self-host the front end and routing engine, and get by with free-plan limits for maps and such.
- No need to monetize, setup accounts or billing. If I keep costs low, I don’t need ads either.
Vibe coding is an earthquake. Spin up a layered, multi-dependency system with complex multi-vendor data integration, real time API, multi-platform clients? Days. Need a from-spec implementation in another language and platform (Android)? Again, days. Refactors? Bugs? Complex Apple release process? All ten to one hundred times easier.
LLM disclosure – Claude drafted the next three paragraphs after reading the first version.
Where vibe coding bit me. Twice, and both times the same pattern: the code was fine and the writing about the code was wrong.
My notes said the Caddy config was “deployed and verified.” Half of it was. The routing rules were live; the log filtering sitting right above them had never been copied to the Pi. So for two weeks my public site logged full client IPs, request headers and un-collapsed tile paths – which are map coordinates – while the privacy policy I had published promised truncated addresses and 30-day retention. I caught it by reading the deployed file instead of my own note about it. Fixed it, then deleted the 2,459 records collected under the old format rather than let them age out. But hey! Zero users except me and a buddy, so zero consequences.
The Beeline was the second one. Claude had a careful model of how the device imports GPX files, written down as fact. Everything testable on my laptop – file shapes, size limits, schema order – was right. Every claim about the hardware sitting on my desk, untouched, was wrong. All four.
That’s the failure mode, and it isn’t bad code. An LLM will hand you a confident sentence about something it never checked, and it reads exactly like the sentences about things it did check. Both of those bugs were in English, not Go. Test cases, manual testing and log spelunking help, but neither bug was in code — what caught them was checking the running thing instead of the note that said Claude checked it.
My opinion after a year-plus of intense vibe coding
Try things. Build bigger. Solve small problems because you want to and no one else has. It’s a new world.
Links
- Source code https://github.com/phubbard/serpentine
- Android source https://github.com/phubbard/serpentine-android
- My current projects https://www.phfactor.net/brief.html
- Let me know if you want beta access
