In this video, I set out to build a simple live captions app by recycling code from my iPhone app. What could go wrong? Everything. Watch as my M3 MacBook hits 80% CPU, OBS fights back, and I break every rule I set for myself. But sometimes breaking the rules leads to innovation... Follow my journey as I turn a failing project into something I'm actually proud of, with an unexpected solution that came from the most surprising place - my live stream chat. Key moments: - Why recycling code isn't always the answer - The CPU meltdown that almost killed the project - How live stream feedback changed everything - The 5-hour rebuild that saved it all Follow my journey here: Website: https://adamlyttleapps.com Twitter: https://x.com/adamlyttleapps Github: https://github.com/adamlyttleapps Instagram: https://instagram.com/adamlyttleapps TikTok: https://tiktok.com/@adamlyttleapps Substack: https://adamlyttleapps.substack.com Watch my Live Auto Captions development livestreams here: https://www.youtube.com/watch?v=tQvJqSkNXGE&list=PLuumy--3ITvaNO1B8P0L4Hbr71Qo6JVrR Apps by Adam Lyttle is the personal journey of an indie app developer, sharing valuable lessons and experiences to help fellow developers succeed in the competitive app market My channel is based on one simple premise: "A rising tide lifts all boats" — I share my experience, teach what I've learned and highlight the mistakes I've made along the way. Featured in this video: * Macbook Pro M3 with 34GB RAM & 1TB HDD * Macbook Pro M1 with 8GB RAM & 256GB HDD * Mouse: Logitech MX Master S3 * Keyboard: Logitech MX Keys * Microphone: Shure 7 * iPhone 15 Pro * iPhone 12 Mini * LEGO DUPLO: My First Duck 30327 Breaking Rules Led to Better Code: A SwiftUI Live Captions Dev Story As app developers, we often set rules for ourselves to stay efficient and focused. But sometimes, breaking those rules leads to unexpected innovations. Here's how my "simple" live captions project turned into a lesson about flexibility in development. The Initial Plan The concept seemed straightforward: create a macOS app that generates dynamic captions for live streams. Having recently built a successful auto-captions app for iPhone, I set three simple rules: 1. Recycle existing code from the iPhone app 2. Launch by month's end 3. Make captions dynamic and engaging But as any developer knows, "simple" projects have a way of becoming complicated. When Everything Started Breaking The first roadblock hit when investigating OBS integration. ChatGPT suggested C code implementations - immediately breaking my first rule about code recycling. This led to exploring alternatives: 1. **File-Based Approach** - Save rendered subtitle frames to disk - Load into OBS as an updating image - Result: Failed due to read-write conflicts at 10fps 2. **Window Capture with Chroma Key** - Capture app window directly - Use green screen for transparency - Result: Alpha channel issues with semi-transparent elements But the real problems were just beginning. My M3 MacBook was struggling: - 80-90% CPU usage - Significant latency between spoken words and captions - Performance issues at just 10fps The TikTok Effect Problem Initially, I tried replicating the dynamic caption styles popular on TikTok, where prerendered videos show upcoming text with animated highlights. But live captioning presented unique challenges: - No knowledge of upcoming words - Constant updates creating visual chaos - Distracting animations on individual words The Unexpected Solution During a live coding session, a viewer suggested something brilliant: speech bubbles. This simple suggestion completely changed the project's direction. It revealed that: 1. Frame-by-frame rendering wasn't necessary 2. SwiftUI transitions could handle the animations 3. Window capture would work perfectly for this approach Breaking Rules, Building Better After five hours of rebuilding from scratch (completely abandoning my original code recycling rule), the results were remarkable: - CPU usage dropped dramatically - Smooth 60fps performance - Clean, engaging animations - Better user experience overall Key Development Lessons 1. **Code Recycling Isn't Always Best** - Sometimes starting fresh provides better solutions - Legacy code can constrain innovation 2. **Live Development Feedback Is Valuable** - Community suggestions can change project trajectory - Real-time validation beats post-release feedback 3. **Performance First** - CPU efficiency shouldn't be an afterthought - Simple solutions often perform better Looking Forward The project continues to evolve with planned features like: - Additional caption styles - Traditional subtitle options - Custom speech bubble designs - Animation triggers for specific words Technical Stack - SwiftUI for UI components and animations - Native macOS window capture - OBS integration - Speech recognition framework

20yo devs are making serious cash now (here's how…)
5.3K views

He stumbled on a $50k/month app niche: FIX MY APP
6.6K views

100% product market fit couldn't save my app
4.5K views

This indie dev made $500 yesterday (this is how)
8.6K views

Meta quietly killed the indie dev ads playbook (it's called Andromeda)
5.0K views

$15k → $100k/month in 12 months: the new indie dev formula
12.6K views