Last week I attended the Scott Center for Social Entrepreneurship’s annual Conversations For Good event at the San José Museum of Art. During a panel on storytelling and impact, Chike Nwoffiah — film producer and curator of the Silicon Valley African Film Festival — talked about the relationship between imagination and action. He spoke about how imagination doesn’t lead anywhere unless someone chooses to act on it.

That idea stuck with me.
As educators, we ask students to imagine new possibilities all the time. We talk about design thinking, iteration, and agency. But as I walked out of the museum that night, I realized I wasn’t always modeling what I teach. Over the last few years I had built small internal apps at Hillbrook, shipped small apps to staff through TestFlight, and told myself that someday I’d build an app for a wider audience.
Someday is a great way to postpone everything.
So I finally did something about it.
This month, I’m launching my first fully independent app under Stoked Logic, a tiny studio built around crafting warm, human-centered tools. And because creativity never arrives in a straight line, my first app is not a scheduling tool for teachers or a planning assistant — it’s a Labrador sticker pack. A joyful, slightly chaotic collection of Labs designed for group chats, texts with friends, and moments where you just need a little joy in the corner of your screen.
It’s lighthearted. But creating it pushed me deeper into creativity than I expected.

Creativity Across Mediums
My life has always been stitched together by creative work — songwriting, audio engineering, video editing, photography, podcasting, guitar playing. None of those things share the same tools, but they share the same mindset: you follow a spark, you make decisions, you keep shaping the thing until it feels right.
Building an app, even with AI, felt exactly like that.
Vibecoding: Directing the Work, Not Automating It
I built Labrador Stickers using OpenAI’s Codex — what you may have heard referred to as vibecoding. Instead of manually writing every line of SwiftUI, my job was to describe the vibe/tasks: what the app should feel like, how it should behave, which screens should exist, and how the user should move between them.
Codex wrote the code.
I directed the work.
AI didn’t replace the creative process — it required more of it. To build anything functional, you still have to understand the architecture enough to fix errors, decide on user flows, troubleshoot build failures, and rethink your approach when the system refuses to cooperate.
And that last part became a major theme of this project.
The iMessage Extension Odyssey
From the very beginning, I wanted the app to include a full iMessage extension — not just a sticker pack, but a mini-experience inside Messages. So I built one. And rebuilt it. And rebuilt it again. Every few days I’d hit a strange break: the app wouldn’t install correctly, or the extension would fail to load, or the Asset Catalog would seemingly corrupt itself, or Xcode would build successfully but the extension wouldn’t appear.
I kept assuming I’d broken something.
So I’d start fresh:
- new project,
- new bundle ID,
- new asset catalog,
- new structure.
I think I threw out three full versions of the app along the way — not exaggerating.
Eventually, after what felt like weeks of debugging, I found a buried thread on Apple’s developer forum explaining that iOS currently has a known bug preventing newly added iMessage apps from installing properly.
It wasn’t me.
It wasn’t the code.
It was a bug.
That discovery was both relieving and maddening. I had spent so much time assuming I made a mistake that I never considered the ecosystem itself might be broken.
So I simplified: no iMessage extension. App-only.
That shift was a reminder that creative work isn’t just about making things — it’s about learning when to let go.

The Hundreds of Tiny Decisions
Once the app existed in its simplified form, the real work started. The part no one really talks about. The part that fills evenings and weekends and forces you to make hundreds of small, invisible decisions:
- What happens when you tap a Lab?
- How tall should the drawer be when it slides up?
- How quickly should it animate?
- Should it dim the background or stay bright?
- Should the header scroll away or stay fixed?
- How should the favorite system work?
- What color should the drawer be?
- How do the gradients match the Stoked Logic brand palette?
AI can write code.
AI cannot answer these questions.
That’s creative work.
Somewhere along the way — in between debugging SwiftUI view stacks with Codex, redesigning the paywall, fixing opacity levels, and adjusting the position of individual sticker cards — I realized I wasn’t just “using AI to build an app.”
I was building an app.
Codex wasn’t doing the creative work for me; it was giving me access. It felt a lot like the reason I got a music degree in the first place: I wanted to record my own music and my friends’ music, back when doing that required real studio chops. Now tools like GarageBand let anyone make something meaningful — but having experience still shapes the outcome. Codex works the same way for software. I don’t write app-level SwiftUI. But suddenly I could build something real, because the tool met me where I was and carried me the rest of the way.
The Rejection (Of Course)
Eventually, the app felt right. Polished enough to submit. And Apple rejected it.
A vague notice appeared in App Store Connect:
Guideline 4.0 — Design
No details. No explanation. Just: “Nope.”
After a little research (and an assist from ChatGPT), I realized the problem: the app hadn’t been optimized for iPad. And by “hadn’t been optimized,” I mean it looked truly terrible because I relied on the upscaling to display the same code. I made the app iPhone-only, resubmitted, and waited.
Fast forward to three rejections and several new features (home screen widget, re-arrange faves, etc), and it was accepted!! And honestly? I’m proud of it.
Why Creativity Still Matters
Building this app reminded me how creativity works: you follow a spark, you take action, you learn along the way, and you stay open to what the process demands — even if it involves starting over, or scrapping work, or discovering that your original vision doesn’t fit the constraints of the tools.
AI is powerful. It helped me bring an idea to life. But creativity is what kept the project moving. Creativity is what helped me navigate failures, discover workarounds, and shape the final experience.
This app is small. Playful. Delight-driven. But it marks the beginning of something bigger for me: Stoked Logic, a place where I can keep building, experimenting, and putting imagination into action.
A Small Ask
If you’ve read this far, thank you.
And if you want to support a tiny indie studio (me), it would mean the world if you would:
- download the app,
- leave a rating, and
- shared it with a friend who loves dogs.
You can find everything at:
Here’s to imagination, action, and the courage to ship something — even something small.
Here’s to staying curious.
Here’s to staying playful.
And here’s to staying stoked.

