<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Louis Chen</title>
    <description>The latest articles on DEV Community by Louis Chen (@louisbuilds).</description>
    <link>https://dev.to/louisbuilds</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3710495%2F0bb10171-6be6-4359-b1fc-d97e15ad4a04.PNG</url>
      <title>DEV Community: Louis Chen</title>
      <link>https://dev.to/louisbuilds</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/louisbuilds"/>
    <language>en</language>
    <item>
      <title>From SaaS "Human Router" to Indie Hacker: Why I Built a Zen Productivity Suite After Getting Laid Off</title>
      <dc:creator>Louis Chen</dc:creator>
      <pubDate>Sun, 12 Apr 2026 07:29:25 +0000</pubDate>
      <link>https://dev.to/louisbuilds/from-saas-human-router-to-indie-hacker-why-i-built-a-zen-productivity-suite-after-getting-laid-8k2</link>
      <guid>https://dev.to/louisbuilds/from-saas-human-router-to-indie-hacker-why-i-built-a-zen-productivity-suite-after-getting-laid-8k2</guid>
      <description>&lt;h3&gt;
  
  
  The "99+" Hell: Life as a Human Router
&lt;/h3&gt;

&lt;p&gt;Before I started shipping my own code, I was a Customer Success Manager (CSM) in the SaaS industry. On the surface, it was about "client growth." In reality, it was a world of digital fragmentation.&lt;/p&gt;

&lt;p&gt;My day-to-one was spent in Lark and Slack. For every client request, a dozen internal "alignment groups" would sprout up. &lt;strong&gt;I realized I wasn't a strategist; I was a glorified courier.&lt;/strong&gt; I became a &lt;strong&gt;"Human Router."&lt;/strong&gt; My value was measured by how fast I could move info from Group A to Group B. My ability to think deeply was eroding, replaced by a Pavlovian response to red notification dots.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Pivot: From "Unplanned Exit" to Xcode
&lt;/h3&gt;

&lt;p&gt;Last year, I was laid off. As my corporate accounts vanished, the overwhelming relief I felt was a wake-up call. I didn’t want another notification-heavy job; I wanted to build tools that solved the very burnout I had just escaped.&lt;/p&gt;

&lt;p&gt;I spent the last 12 months in &lt;strong&gt;Xcode&lt;/strong&gt;, building a "Digital Wellbeing" ecosystem. Here’s the technical and philosophical logic behind them:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Purrrrrfocus: The Anti-Pressure Timer
&lt;/h3&gt;

&lt;p&gt;Most productivity tools feel like another boss—cold progress bars and demanding bots. I built &lt;a href="https://louisbuilds.me/purrrrrfocus/" rel="noopener noreferrer"&gt;&lt;strong&gt;Purrrrrfocus&lt;/strong&gt;&lt;/a&gt; as a "sanctuary."&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Logic:&lt;/strong&gt; A Pomodoro timer with a calming oriental aesthetic and a cat companion. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The "Why":&lt;/strong&gt; It’s a signal to the brain: &lt;em&gt;"For the next 25 minutes, I’m offline from the chaos."&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. &lt;a href="https://louisbuilds.me/step1st/" rel="noopener noreferrer"&gt;Step1st&lt;/a&gt;: The Physical Toll Bridge
&lt;/h3&gt;

&lt;p&gt;I saw my mom (and myself) falling into the "doomscrolling" trap. Screen Time limits are too easy to bypass.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Tech:&lt;/strong&gt; Using &lt;strong&gt;Apple HealthKit&lt;/strong&gt; to create a "Physical Contract."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Logic:&lt;/strong&gt; You have to hit a daily step goal to unlock addictive apps. No steps, no scroll. It turns a sedentary habit into a movement-based ritual.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. &lt;a href="https://louisbuilds.me/transmov/" rel="noopener noreferrer"&gt;TransMov&lt;/a&gt;: Local-First Privacy
&lt;/h3&gt;

&lt;p&gt;As a dev, I hate sending data to servers unnecessarily. I built &lt;strong&gt;TransMov&lt;/strong&gt; for macOS to handle GIF conversions and video background removal using &lt;strong&gt;local AI processing&lt;/strong&gt;. No cloud, no subscription traps, just lightweight utility.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lessons Learned as a Solo Dev
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Solve your own pain:&lt;/strong&gt; The "Human Router" experience gave me the best product roadmap I could ask for.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy is a feature:&lt;/strong&gt; Processing data locally (like in TransMov) isn't just a tech choice; it's a respect for the user.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Focus is the currency:&lt;/strong&gt; In 2026, your attention is the most valuable asset you own. Build things that protect it, not steal it.&lt;/li&gt;
&lt;/ol&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Enjoyed this?&lt;/strong&gt; I’m documenting my journey of building a privacy-first, focus-centric ecosystem. &lt;br&gt;
📬 Follow my builds at: &lt;a href="https://louisbuilds.me" rel="noopener noreferrer"&gt;louisbuilds.me&lt;/a&gt;&lt;br&gt;
🐾 Check out my main project: &lt;a href="https://louisbuilds.me/purrrrrfocus/index-en.html" rel="noopener noreferrer"&gt;PurrrrrFocus&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>productivity</category>
      <category>ios</category>
      <category>career</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Why My 500MB Pomodoro Timer Failed (And How It Led to a Better Shovel)</title>
      <dc:creator>Louis Chen</dc:creator>
      <pubDate>Thu, 02 Apr 2026 14:26:10 +0000</pubDate>
      <link>https://dev.to/louisbuilds/why-my-500mb-pomodoro-timer-failed-and-how-it-led-to-a-better-shovel-4de5</link>
      <guid>https://dev.to/louisbuilds/why-my-500mb-pomodoro-timer-failed-and-how-it-led-to-a-better-shovel-4de5</guid>
      <description>&lt;p&gt;In the world of indie development, we often set out to build a house but end up inventing a better shovel just to dig the foundation.&lt;/p&gt;

&lt;p&gt;My journey with &lt;a href="https://louisbuilds.me/purrrrrfocus/index-en.html" rel="noopener noreferrer"&gt;PurrrrrFocus&lt;/a&gt;—a China-Chic (Guohua) inspired Pomodoro app—is a story of technical debt, a 500MB asset crisis, and how a "failed" build turned into a standalone macOS AI tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The Vision: Hand-Painted Souls on Rice Paper
&lt;/h2&gt;

&lt;p&gt;I didn't want another "flat" productivity app. I wanted the soul of a &lt;strong&gt;traditional ink-wash (Guohua) cat&lt;/strong&gt; stretching and napping while you worked.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Technical Wall:&lt;/strong&gt; How do you render high-fidelity, transparent animations with hand-painted textures on a mobile budget?&lt;/p&gt;

&lt;p&gt;As a developer without an animation background, I started with a scrappy workflow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Generate movement sequences using AI video tools.&lt;/li&gt;
&lt;li&gt; Build a custom web script to strip backgrounds.&lt;/li&gt;
&lt;li&gt; Convert them to APNG (Animated PNG).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It worked... for &lt;em&gt;one&lt;/em&gt; cat.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The Disaster: The 500MB Pomodoro Timer
&lt;/h2&gt;

&lt;p&gt;When I expanded the roster to 8 cats, including a highly detailed &lt;strong&gt;Opera Cat&lt;/strong&gt; with intricate silk textures and semi-transparent edges, the technical debt came due.&lt;/p&gt;

&lt;p&gt;I hit "Build" in Xcode and my heart sank: &lt;strong&gt;The app size exceeded 500MB.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For a minimalist focus tool, this was a death sentence. I spent weeks in "Developer Paralysis," evaluating every alternative:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Lottie?&lt;/strong&gt; Too expensive for a solo dev and struggled with heavy-texture brushwork.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rive?&lt;/strong&gt; Incredible, but the learning curve and export limitations for complex textures felt like a moving target.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. The Pivot: Building the "Shovel" (TransMov)
&lt;/h2&gt;

&lt;p&gt;Since no existing tool met my standards for &lt;strong&gt;transparency quality + privacy + cost&lt;/strong&gt;, I stopped building the timer and started building the tool.&lt;/p&gt;

&lt;p&gt;I migrated my clunky web script to a native macOS app: &lt;strong&gt;TransMov&lt;/strong&gt;.&lt;br&gt;
By leveraging the &lt;strong&gt;Apple Neural Engine&lt;/strong&gt;, I created a workflow that could:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Remove backgrounds locally:&lt;/strong&gt; No cloud costs, total privacy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Format Export:&lt;/strong&gt; Seamlessly convert video to APNG, WebP, and GIF.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Refine Frames:&lt;/strong&gt; Essential for the shimmering silk details that make the "China-Chic" aesthetic pop.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Lesson:&lt;/strong&gt; When you build a wheel to climb a mountain, that wheel itself has value. TransMov eventually gained its own life (and subscribers) on the Mac App Store.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. The Final Stretch: Optimizing for Performance
&lt;/h2&gt;

&lt;p&gt;With assets managed by TransMov, I made three critical technical moves to save the app:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;WebP over APNG:&lt;/strong&gt; Switched all assets to WebP, slashing the size to 300MB.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;On-Demand Resources (ODR):&lt;/strong&gt; I kept only 2 default cats in the main bundle. The rest are downloaded only when the user unlocks them, keeping the initial download light.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;The Rendering Bottleneck:&lt;/strong&gt; Early users on Product Hunt reported animation stutters. After weeks of aggressive caching trials, I realized my custom rendering path was the culprit.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;The Fix:&lt;/strong&gt; I swapped my custom logic for &lt;code&gt;SDWebImage&lt;/code&gt; + &lt;code&gt;SDWebImageWebPCoder&lt;/code&gt;. The result? The cats finally moved with the silky smoothness I’d envisioned on day one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing Thoughts
&lt;/h2&gt;

&lt;p&gt;Indie development is rarely a straight line. PurrrrrFocus isn't just a timer anymore; it's the result of an obsession with detail that birthed a whole different product (TransMov).&lt;/p&gt;

&lt;p&gt;If you’re currently stuck on a "500MB crisis" of your own, remember: &lt;strong&gt;The tool you build to solve your problem might be just as important as the problem itself.&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  💡 Tech Stack used in this journey:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SwiftUI&lt;/strong&gt; for the frontend&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Apple Neural Engine&lt;/strong&gt; for on-device AI background removal&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SDWebImage&lt;/strong&gt; for optimized WebP rendering&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Apple On-Demand Resources&lt;/strong&gt; for asset management&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;Check out the apps mentioned:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://louisbuilds.me/purrrrrfocus/index-en.html" rel="noopener noreferrer"&gt;PurrrrrFocus - The Cat Pomodoro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://louisbuilds.me/transmov/" rel="noopener noreferrer"&gt;TransMov - AI Video Background Remover&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://louisbuilds.me/" rel="noopener noreferrer"&gt;More Products by Louis Builds&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ios</category>
      <category>swift</category>
      <category>productivity</category>
      <category>indiedev</category>
    </item>
    <item>
      <title>Crafting a "Purrfect" Productivity Tool: When Aesthetics Meet Technical Trade-offs (and Cats!)</title>
      <dc:creator>Louis Chen</dc:creator>
      <pubDate>Mon, 23 Mar 2026 08:31:03 +0000</pubDate>
      <link>https://dev.to/louisbuilds/crafting-a-purrfect-productivity-tool-when-aesthetics-meet-technical-trade-offs-and-cats-42hc</link>
      <guid>https://dev.to/louisbuilds/crafting-a-purrfect-productivity-tool-when-aesthetics-meet-technical-trade-offs-and-cats-42hc</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Building PurrrrrFocus: Leveraging TransMov for unique animations, managing app size, and finding a niche in the crowded Pomodoro space.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Femtngiu0j8l63ialmgjo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Femtngiu0j8l63ialmgjo.png" alt="Screenshots of PurrrrrFocus pomodoro timer" width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Challenge of "Focus Tools": Beyond the Generic Timer
&lt;/h2&gt;

&lt;p&gt;As a developer, I've spent countless hours trying to find the "perfect" productivity tool. Many Pomodoro timers prioritize function over form, leading to generic UIs that feel more like a chore than a companion. My goal with &lt;strong&gt;&lt;a href="https://apps.apple.com/ua/app/purrrrrfocus-deep-focus-timer/id6753966008" rel="noopener noreferrer"&gt;PurrrrrFocus&lt;/a&gt;&lt;/strong&gt; was different: to create a macOS Pomodoro timer that was not only effective but genuinely delightful. I wanted a tool that invited focus, rather than demanding it.&lt;/p&gt;

&lt;p&gt;But how do you stand out in a sea of identical timers? For me, the answer lay in a blend of &lt;strong&gt;aesthetic design, unique animation, and a deep appreciation for cultural nuances.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The "Guochao" Aesthetic: A Niche in the Crowd
&lt;/h2&gt;

&lt;p&gt;In a market saturated with cute cats and minimalist timers, I decided to lean into an &lt;strong&gt;Eastern/Guochao (国潮)&lt;/strong&gt; aesthetic for PurrrrrFocus. This style, blending traditional Chinese art with modern design, offers a fresh visual language rarely seen in productivity apps.&lt;/p&gt;

&lt;p&gt;It was a bold choice, but the early feedback has been fascinating. We've seen a surprising number of downloads from unexpected regions, including over 20 users in Turkey. This suggests that a distinct cultural aesthetic, even in a global market, can resonate deeply and create a unique appeal that transcends language barriers. It's a testament to the power of design as a universal language.&lt;/p&gt;

&lt;h2&gt;
  
  
  When TransMov Meets Animation: A Practical Dilemma
&lt;/h2&gt;

&lt;p&gt;One of the core features that brings PurrrrrFocus to life is its unique cat animations. But here's where my own tools, and some interesting trade-offs, came into play.&lt;/p&gt;

&lt;p&gt;As the creator of &lt;strong&gt;&lt;a href="https://apps.apple.com/ua/app/transmov-video-to-gif-apng/id6756703030?mt=12" rel="noopener noreferrer"&gt;TransMov&lt;/a&gt;&lt;/strong&gt;—a professional video-to-animated-image converter for macOS—it was a natural choice to use it for generating PurrrrrFocus's animations. For independent developers like myself, who may not have dedicated designers with expertise in complex tools like Lottie, Rive, or After Effects, TransMov offers a powerful workflow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI-Generated Video:&lt;/strong&gt; Leverage AI tools to create short, unique video clips of cats (e.g., a cat slowly blinking, stretching).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;TransMov Processing:&lt;/strong&gt; Use TransMov to convert these videos into optimized APNG or WebP sequences, with transparent backgrounds (thanks to its AI smart cutout feature). This allows for dynamic, high-quality animations without the steep learning curve of traditional animation software.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;However, this approach comes with a significant technical bottleneck: &lt;strong&gt;app bundle size.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Elephant in the Room: A 300+MB App!
&lt;/h2&gt;

&lt;p&gt;While TransMov democratized our animation pipeline, relying on pre-rendered video sequences directly translated into a larger app package. PurrrrrFocus currently clocks in at over &lt;strong&gt;300MB.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is a considerable size for a seemingly simple productivity app. On dev.to, I know this will spark conversations! The trade-off was clear:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pro:&lt;/strong&gt; High-quality, unique, custom animations without needing specialized animation design skills. The ability to iterate quickly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Con:&lt;/strong&gt; A larger initial download.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This forced me to reflect on what truly matters to users of a macOS app: is a unique, charming aesthetic worth the larger footprint, especially when all processing is done offline and privacy is paramount? For PurrrrrFocus, my bet is on the charm and the distinct experience. It's a decision that highlights the constant tension between performance, aesthetics, and development efficiency for solo founders.&lt;/p&gt;

&lt;h2&gt;
  
  
  Beyond the Animations: The "Offline-First" Philosophy
&lt;/h2&gt;

&lt;p&gt;Consistent with my other tools, PurrrrrFocus is also built on an "Offline-First" foundation. This isn't just a technical choice; it's a philosophical one. In an era of constant notifications and cloud reliance, a truly focused work session often requires disconnection.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No data uploads.&lt;/li&gt;
&lt;li&gt;No cloud sync.&lt;/li&gt;
&lt;li&gt;Your focus remains uninterrupted.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The cat animations run entirely locally, providing a comforting presence without ever calling home.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next for PurrrrrFocus?
&lt;/h2&gt;

&lt;p&gt;The journey of &lt;strong&gt;&lt;a href="https://apps.apple.com/ua/app/purrrrrfocus-deep-focus-timer/id6753966008" rel="noopener noreferrer"&gt;PurrrrrFocus&lt;/a&gt;&lt;/strong&gt; is a continuous balance between art and engineering. I'm constantly exploring ways to optimize the app size without compromising the aesthetic quality. Perhaps more efficient animation codecs, or a modular approach to animation assets.&lt;/p&gt;

&lt;p&gt;Building PurrrrrFocus has been a deep dive into how an app's personality, technical choices, and a developer's own suite of tools can converge to create something truly unique. It’s a reminder that even in the most crowded categories, there’s always room for a project driven by passion and a distinct point of view.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I’m Louis, an indie developer building iOS/macOS apps with a focus on offline-first principles, privacy, and unique aesthetics. Check out PurrrrrFocus and my other tools at &lt;a href="https://louisbuilds.me/" rel="noopener noreferrer"&gt;louisbuilds.me&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>swift</category>
      <category>animation</category>
      <category>productivity</category>
      <category>indiedev</category>
    </item>
    <item>
      <title>How I automated IPA transcription for linguistics: A story of CMUdict and Offline-first design</title>
      <dc:creator>Louis Chen</dc:creator>
      <pubDate>Mon, 16 Mar 2026 11:40:42 +0000</pubDate>
      <link>https://dev.to/louisbuilds/how-i-automated-ipa-transcription-for-linguistics-a-story-of-cmudict-and-offline-first-design-89j</link>
      <guid>https://dev.to/louisbuilds/how-i-automated-ipa-transcription-for-linguistics-a-story-of-cmudict-and-offline-first-design-89j</guid>
      <description>&lt;p&gt;As anyone in the linguistics or ESL (English as a Second Language) field knows, manually transcribing full paragraphs into the &lt;strong&gt;International Phonetic Alphabet (IPA)&lt;/strong&gt; is a tedious, error-prone nightmare.&lt;/p&gt;

&lt;p&gt;Most online tools are designed for single-word lookups. But what happens when a teacher needs to prepare a 5-page handout with word-aligned transcriptions? They usually end up fighting with Word fonts, broken Unicode symbols, and chaotic alignment.&lt;/p&gt;

&lt;p&gt;I decided to fix this by building &lt;strong&gt;Phonetic Formatter&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Challenge: Accuracy vs. Privacy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The first hurdle was the data source. While many look toward cloud APIs, I wanted this to be &lt;strong&gt;100% offline&lt;/strong&gt;. Teachers and students often work in environments where privacy and connectivity are concerns.&lt;/p&gt;

&lt;p&gt;I chose the &lt;strong&gt;CMU Pronouncing Dictionary&lt;/strong&gt; as the foundation. It’s an incredible open-source resource, but mapping it to a high-performance mobile interface required careful optimization to ensure near-instant batch conversion of long texts without draining the battery.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solving the "Formatting" Pain Point&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The real "aha!" moment came when I realized that a string of symbols isn't enough. People need &lt;strong&gt;structure&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I implemented a "Word-by-Word" mode that does something simple yet powerful:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It takes a full sentence.&lt;/li&gt;
&lt;li&gt;It breaks it down into a vertical list.&lt;/li&gt;
&lt;li&gt;It maps each word to its IPA transcription on the right.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnreov3fu4xeqr0nab13r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnreov3fu4xeqr0nab13r.png" alt="Screenshot of Phonetic Formatter app that shows the word-by-word IPA transcription for an english passage" width="800" height="1000"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By handling the layout programmatically, I could then export these results directly to &lt;strong&gt;DOCX and PDF&lt;/strong&gt; with embedded, compatible fonts. No more broken symbols in Microsoft Word.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why "Small" Tools Matter&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In an era of bloated AI wrappers, there’s still a massive need for focused, local-first tools that solve one specific problem perfectly.&lt;/p&gt;

&lt;p&gt;Building &lt;strong&gt;Phonetic Formatter&lt;/strong&gt; wasn't about reinventing the wheel; it was about taking a robust academic dataset (CMUdict) and wrapping it in a UI that respects the user's time and privacy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Give it a try&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you're a developer interested in linguistics or just someone tired of manual transcription, I’d love to hear your thoughts on the workflow.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Explore the tool&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can download the &lt;strong&gt;&lt;a href="https://apps.apple.com/us/app/phonetic-formatter/id6757941187" rel="noopener noreferrer"&gt;iOS app here&lt;/a&gt;&lt;/strong&gt; to try the batch transcription yourself, or visit the &lt;strong&gt;&lt;a href="https://louisbuilds.me/phoneticformatter/index.html" rel="noopener noreferrer"&gt;project site&lt;/a&gt;&lt;/strong&gt; for more details on the PDF/DOCX export features.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ios</category>
      <category>swift</category>
      <category>linguistics</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Not Everything Should Be Lottie: Choosing the Right Animation Format in 2026</title>
      <dc:creator>Louis Chen</dc:creator>
      <pubDate>Tue, 03 Mar 2026 01:53:31 +0000</pubDate>
      <link>https://dev.to/louisbuilds/not-everything-should-be-lottie-choosing-the-right-animation-format-in-2026-en1</link>
      <guid>https://dev.to/louisbuilds/not-everything-should-be-lottie-choosing-the-right-animation-format-in-2026-en1</guid>
      <description>&lt;p&gt;Modern UI animations today are often powered by Lottie.&lt;/p&gt;

&lt;p&gt;It’s lightweight, vector-based, and works beautifully for micro-interactions in apps and web interfaces.&lt;/p&gt;

&lt;p&gt;But not every animation problem is a vector problem.&lt;/p&gt;

&lt;p&gt;What if your animation is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A short screen recording&lt;/li&gt;
&lt;li&gt;A product demo&lt;/li&gt;
&lt;li&gt;A meme or social snippet&lt;/li&gt;
&lt;li&gt;A transparent video clip&lt;/li&gt;
&lt;li&gt;A quick prototype export&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In those cases, Lottie isn’t the right tool.&lt;/p&gt;

&lt;p&gt;So what should you use?&lt;/p&gt;

&lt;p&gt;Let’s break down the practical differences between Lottie, GIF, APNG, WebP (animated), and video — from a developer’s perspective.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Lottie (JSON-based Vector Animation)
&lt;/h2&gt;

&lt;p&gt;Backed by After Effects and exported via Bodymovin, Lottie is excellent for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vector UI animations&lt;/li&gt;
&lt;li&gt;Scalable graphics&lt;/li&gt;
&lt;li&gt;Interactive control (play, pause, seek)&lt;/li&gt;
&lt;li&gt;App-native rendering (iOS, Android, Web)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Strengths:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Very small file size (for vector content)&lt;/li&gt;
&lt;li&gt;Resolution independent&lt;/li&gt;
&lt;li&gt;Programmable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Limitations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Not suitable for real video content&lt;/li&gt;
&lt;li&gt;Not ideal for complex raster effects&lt;/li&gt;
&lt;li&gt;Requires runtime rendering library&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your animation starts as a vector design, Lottie is usually the right answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. GIF (The Default Everyone Knows)
&lt;/h2&gt;

&lt;p&gt;GIF is still widely used because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Universal support&lt;/li&gt;
&lt;li&gt;Dead simple embedding&lt;/li&gt;
&lt;li&gt;No extra runtime needed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But technically, GIF is very limited:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;8-bit indexed color (max 256 colors per frame)&lt;/li&gt;
&lt;li&gt;1-bit transparency&lt;/li&gt;
&lt;li&gt;Inefficient compression&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In modern UI or product demos, GIF often looks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Grainy&lt;/li&gt;
&lt;li&gt;Color-banded&lt;/li&gt;
&lt;li&gt;Oversized&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It works — but rarely looks great.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. APNG (Animated PNG)
&lt;/h2&gt;

&lt;p&gt;APNG is an extension of the PNG format that adds animation support while preserving PNG’s core features.&lt;/p&gt;

&lt;p&gt;Unlike GIF, APNG supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;24-bit true color&lt;/li&gt;
&lt;li&gt;8-bit alpha transparency (full alpha channel)&lt;/li&gt;
&lt;li&gt;Lossless PNG (DEFLATE) compression&lt;/li&gt;
&lt;li&gt;Proper gradient rendering&lt;/li&gt;
&lt;li&gt;Smooth, anti-aliased transparency edges&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The visual difference becomes obvious in UI-heavy or gradient-rich content.&lt;/p&gt;

&lt;p&gt;In a short 4-second 1080p UI demo I tested:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GIF showed visible color banding and dithering artifacts&lt;/li&gt;
&lt;li&gt;APNG preserved gradients and fine UI details cleanly&lt;/li&gt;
&lt;li&gt;File size varied depending on content — in some cases smaller than GIF, in others comparable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key takeaway isn’t that APNG is always smaller — it isn’t.&lt;br&gt;
It’s that APNG preserves visual fidelity far more reliably, especially in scenarios involving:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gradients&lt;/li&gt;
&lt;li&gt;Subtle shadows&lt;/li&gt;
&lt;li&gt;Semi-transparent elements&lt;/li&gt;
&lt;li&gt;Complex color transitions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Browser support across modern engines is now broadly solid, making APNG viable for production use in most web environments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where APNG Makes Sense&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;APNG is particularly strong for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Transparent UI overlays&lt;/li&gt;
&lt;li&gt;Product demos with fine visual detail&lt;/li&gt;
&lt;li&gt;Screen recordings exported as short loops&lt;/li&gt;
&lt;li&gt;High-quality meme content&lt;/li&gt;
&lt;li&gt;Animation assets where you don’t want a runtime dependency&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you need a raster-based animation format with full alpha support and better color accuracy than GIF — without introducing a playback library — APNG is often a strong candidate.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Animated WebP
&lt;/h2&gt;

&lt;p&gt;WebP animation offers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Excellent compression&lt;/li&gt;
&lt;li&gt;Good quality&lt;/li&gt;
&lt;li&gt;Alpha support&lt;/li&gt;
&lt;li&gt;Smaller file size than GIF/APNG in many cases&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tooling is still inconsistent&lt;/li&gt;
&lt;li&gt;Not all design tools export clean animated WebP&lt;/li&gt;
&lt;li&gt;Encoding parameters can affect compatibility&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From a pure performance perspective, animated WebP is very strong.&lt;/p&gt;

&lt;p&gt;From a workflow perspective, it depends on your toolchain.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Video (MP4 / WebM)
&lt;/h2&gt;

&lt;p&gt;If you don’t need transparency, video often wins:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Best compression efficiency&lt;/li&gt;
&lt;li&gt;Hardware-accelerated playback&lt;/li&gt;
&lt;li&gt;Perfect for long demos&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Downside:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No alpha channel (in standard MP4)&lt;/li&gt;
&lt;li&gt;Not as frictionless to embed as an image&lt;/li&gt;
&lt;li&gt;Autoplay behavior varies across platforms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For anything longer than ~5–8 seconds, video is usually the most efficient solution.&lt;/p&gt;

&lt;p&gt;Decision Table (Practical Summary)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft3b4572p01d3wchd4f5g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft3b4572p01d3wchd4f5g.png" alt="Summary the best options of animations to use for various scenarios" width="800" height="329"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Developers Still Default to GIF
&lt;/h2&gt;

&lt;p&gt;Even when technically inferior, GIF wins because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It’s familiar&lt;/li&gt;
&lt;li&gt;It works everywhere&lt;/li&gt;
&lt;li&gt;It requires zero explanation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But in modern frontend stacks, especially performance-sensitive ones, defaulting to GIF can be a lazy choice.&lt;/p&gt;

&lt;p&gt;The better question isn’t:&lt;/p&gt;

&lt;p&gt;“Should I use GIF or APNG?”&lt;/p&gt;

&lt;p&gt;It’s:&lt;/p&gt;

&lt;p&gt;“What problem am I solving?”&lt;/p&gt;

&lt;h2&gt;
  
  
  A Practical Rule of Thumb
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;If it’s vector → Lottie&lt;/li&gt;
&lt;li&gt;If it’s real video and short → APNG or WebP&lt;/li&gt;
&lt;li&gt;If it’s long → Video&lt;/li&gt;
&lt;li&gt;If you don’t care about quality → GIF&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Choosing the right format can significantly reduce file size, improve visual clarity, and create a more polished product experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Curious About Your Workflow
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;What do you typically use for:&lt;/li&gt;
&lt;li&gt;Product demos?&lt;/li&gt;
&lt;li&gt;Transparent overlays?&lt;/li&gt;
&lt;li&gt;In-app animation assets?&lt;/li&gt;
&lt;li&gt;Have you replaced GIF in your stack yet?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Would love to hear real-world experiences from other developers.&lt;/p&gt;

&lt;p&gt;I’ve been experimenting with building tooling around exporting high-quality APNG and WebP from video. If there’s interest, I can share more details or benchmarks in another post.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>performance</category>
      <category>frontend</category>
      <category>animation</category>
    </item>
    <item>
      <title>Building TransMov: A macOS Tool to Convert Videos to GIF/APNG with Local AI Background Removal</title>
      <dc:creator>Louis Chen</dc:creator>
      <pubDate>Wed, 14 Jan 2026 08:48:23 +0000</pubDate>
      <link>https://dev.to/louisbuilds/building-transmov-a-macos-tool-to-convert-videos-to-gifapng-with-local-ai-background-removal-ba6</link>
      <guid>https://dev.to/louisbuilds/building-transmov-a-macos-tool-to-convert-videos-to-gifapng-with-local-ai-background-removal-ba6</guid>
      <description>&lt;p&gt;Hi dev.to community! 👋&lt;/p&gt;

&lt;p&gt;I recently finished building my first indie macOS app, &lt;strong&gt;TransMov&lt;/strong&gt;, and wanted to share the development journey, challenges, and lessons learned — especially for other independent developers who might be tackling small workflow-focused tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Problem&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;When I was working on my previous app, I needed some animation assets. APNG turned out to be a good choice, and we also experimented with Lottie animations. However:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Professional tools like &lt;strong&gt;After Effects&lt;/strong&gt; are expensive, complex, and not always accessible, especially in certain regions like China.&lt;/li&gt;
&lt;li&gt;Video editing apps like &lt;strong&gt;CapCut&lt;/strong&gt; support background removal, but export options are limited (MP4/MOV/GIF).&lt;/li&gt;
&lt;li&gt;AI tools like &lt;strong&gt;Lovart&lt;/strong&gt; allow background removal, but they consume paid AI credits, which doesn’t scale for ongoing use.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted a &lt;strong&gt;privacy-first, local solution&lt;/strong&gt; that could turn videos into GIF/APNG/WebP animations without relying on cloud services or paid subscriptions.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Solution: TransMov&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I first prototyped a web version using Cursor, which allowed me to generate the first cat animation for my PurrrrrFocus Pomodoro app. After seeing it work well, I decided to make a native macOS app.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1 week to build the first functional version&lt;/li&gt;
&lt;li&gt;Several weeks of testing and iterative improvements&lt;/li&gt;
&lt;li&gt;1 month from idea to Mac App Store-ready product&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Features now include:&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Video → GIF/APNG/WebP conversion&lt;/li&gt;
&lt;li&gt;AI-powered video background removal (local processing, privacy-first)&lt;/li&gt;
&lt;li&gt;Frame-by-frame preview and advanced export options&lt;/li&gt;
&lt;li&gt;Targeted at designers, developers, and content creators&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Lessons Learned&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Start small: A single workflow problem can become a useful standalone tool.&lt;/li&gt;
&lt;li&gt;Prototype fast:  The web version helped me validate the idea before committing to a full native app.&lt;/li&gt;
&lt;li&gt;Iterate with feedback: Early testing and adjusting based on small user feedback saves time in the long run.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Next Steps / Open Questions&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I’d love to hear from the community:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How do you discover niche workflow tools as an indie developer?&lt;/li&gt;
&lt;li&gt;Any tips for gaining early traction without a mailing list or pre-existing audience?&lt;/li&gt;
&lt;li&gt;What’s your favorite approach to building privacy-first creative apps?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If anyone is curious, I can share short demo GIFs showing AI background removal and video → animation conversion.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frugmoc0vv2zkwxk3a9h5.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frugmoc0vv2zkwxk3a9h5.gif" alt="Original Video" width="512" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsnsawg925pp8g4wl347k.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsnsawg925pp8g4wl347k.gif" alt="AI Background Removal Result" width="512" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to try it out, it’s available on the &lt;a href="https://apps.apple.com/us/app/transmov/id6756703030?mt=12" rel="noopener noreferrer"&gt;Mac App Store&lt;/a&gt;&lt;br&gt;
 and &lt;a href="https://www.producthunt.com/products/transmov-video-animation-tool?utm_source=other&amp;amp;utm_medium=social" rel="noopener noreferrer"&gt;Product Hunt&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I’d love to hear your thoughts, suggestions, or experiences — please leave a comment below! &lt;/p&gt;

&lt;p&gt;Thanks for reading! 🙌&lt;/p&gt;

</description>
      <category>animation</category>
      <category>videoediting</category>
      <category>indiedev</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
