I’m old school fringe consumer tech: Path for social media, Songza for music, Foursquare—now Swarm—for lifelogging.
I’ve also deepened my commitment to Google hardware over the years—first Google Home, then Pixel phone, now Pixel Watch.
But there’s no Swarm app on Wear OS (!), which leaves the 63 of us in this cross-sectional segment with a choice: find and beg a Swarm product manager to prioritize it in the backlog, or vibe-code it.
Option B is a lot more realistic (and fun), and thus Swarma™ (pronounced shawarma) was born.
This is my third or fourth vibe-coding project with Claude as co-pilot: I’ve done APIs, a Telegram bot, dark mode, etc. The pattern is familiar by now: describe what I want, iterate, and ship it. But this time the platform was completely new to me: Android Studio, Kotlin, Jetpack Compose, Wear OS.
The core app logic came together relatively easily: hitting the Foursquare Places API, grabbing nearby venues, displaying a scrollable list, etc. Then Claude handled the Kotlin syntax, the Compose UI components, the API calls, same as it would in JavaScript or Python.
What wasn’t interchangeable was everything around the code:
Vibe-coding scales to unfamiliar platforms as long as you can identify and decompose the problem. The AI handles syntax and boilerplate. So it seems the hard parts of building have shifted from the code (implementation) to everything else: environment, architecture, product judgment, platform constraints…at least where I sit here in early 20262.
The whole thing—from opening Android Studio for the first time to checking into a Foursquare venue from my watch—took about an afternoon (a.k.a. naptime) to get sorted.
Swarma v1.0, now in closed testing on the Play Store.
Swarm lives on the Pixel Watch 🤘
— ᴘ. ᴍ. ʙ.
The first version of the companion app used a WebView instead of a Chrome Custom Tab—meaning users were authenticating inside my app rather than on Foursquare’s own site. A tester on the Wear OS subreddit (u/sorross) flagged it immediately as a bad design (why would I feel comfortable giving a third party app full account control?). He was right, and so I took an hour and fixed it. The co-pilot had taken the path of least resistance, but a savvy human caught it. Which is another lesson here. ↩
I’m confident this post will age rapidly. ↩