The DuoApps name dates from 2009, before it became GoodBarber.
The DuoApps name dates from 2009, before it became GoodBarber. We brought it back, and made it an open knowledge base on designing apps for iPhone Duo.

The DuoApps name dates from 2009, before it became GoodBarber. We brought it back, and made it an open knowledge base on designing apps for iPhone Duo.
Got asked this week if we're worried about agents killing apps. Short version: Apple just sent Siri into installed apps, Google is doing the same with Gemini, and I think they're right. Long version, with the caveats:
Apps are the future
Last month I told my agent to push, open a PR and merge, and two minutes later I stopped it. It had started a whole release ritual for three commits we'd reviewed together ten minutes earlier. Wrote up what we do instead on a repo where I'm the only human.
I build the engine that build apps. Of course I think they have a future. So I wrote down what would prove me wrong instead: assistants that route around apps, nobody installing anything, third-party actions that stay a demo.

Marc wrote an "offline" guide. A visitor opens a trail page before the coverage drops, and still needs to reread it.
Wrote the engineering cut of this one. How the two doors share one cache, how each name in the count was checked against published IP ranges, and what I'd add to nginx next time.
OpenAI released GPT-6 Luna yesterday. This morning Pierre-Laurent moved the AI Extension Builder onto it, for every app.

Three weeks ago we gave every page of our site a Markdown twin. Add .md to any URL, or send Accept: text/markdown, and you get the page as md. I did it as an experiment at first, being quite skeptical, but I was wrong. Here are my findings after reading the logs ⬇

There's a dedicated podcast player in GoodBarber apps now. A song is three minutes end to end. A forty-minute episode gets listened to in three goes. Lesia wrote it up.
Someone asks Siri what's new. The app answers out loud, even if it hasn't been opened that week. João wrote how we wired it. Siri Actions is for the audience. The MCP server is for the owner. Same idea, two callers.
Florian wrote the Play closed-testing walkthrough. Twelve testers opted in, fourteen days in a row, or a new personal account never reaches production.
A new iOS lands in September, a new Android around the same time. Underneath your app, hundreds of system functions just moved: some stop existing, others become mandatory. All announced in advance... if someone reads it.
Marc wrote a content-strategy guide. It starts with an association app: three updates during conference week, then a month of silence. Members can't tell what the app is for.
A link leaves your system the moment it's printed. The QR on a counter card, the URL on a poster — you can't redirect ink. And whoever scans it chose the date: maybe today, maybe in four years.
A few months ago, we added prompt-based creation to GoodBarber — and the visual, no-code core stays exactly as it was. Not a transition we haven't finished, but a choice about which interface handles which kind of intent.
Pierre-Laurent replayed the same translation job five ways: full-history agent, trimmed tools, plain script, explicit state, cached prompt. The script won on every column. The useful result isn't the bill, it's what the state rule turned out to be.
Marc wrote an onboarding guide. It starts with a course app: five intro screens, a sign-up, a notification prompt, then a generic feed. The learner still hasn't started a lesson.
This one is personal. With @goodbarber.bsky.social we have defended native since 2009, including through the years when every new cross-platform layer was supposed to make that choice obsolete. We stayed because the platforms would outlast the layers.
Pierre-Laurent runs the other side of the agent story: our production MCP server, called all day by agents that aren't ours. He counted what the server sees. It's the least glamorous column in any agent thread, and the one I trust most.
Our build chain is deterministic: same config, same build, same app. Then we plugged in a language model — the least deterministic component there is — to produce code that ships inside customer apps.
Lesia read a summer of design writing so the rest of us didn't have to. Two moves stood out to me, and both are architecture questions wearing design clothes: the assistant left the chat, and the design system became a rule.

A section type on a no-code platform isn't a screen. It's a word in a shared language — and a word has to be understood by everything that reads the language.
The same prompt, pasted into two apps built to face away from each other: a pastry shop in cream and pink, a radio station in near-black and amber. Not one word about style in it. Both sections came out dressed like they were born there.