<?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: Motion</title>
    <description>The latest articles on DEV Community by Motion (@usemotion).</description>
    <link>https://dev.to/usemotion</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%2Forganization%2Fprofile_image%2F11001%2Ff0c3e929-6125-4f34-9c5b-9eb6bff6272d.png</url>
      <title>DEV Community: Motion</title>
      <link>https://dev.to/usemotion</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/usemotion"/>
    <language>en</language>
    <item>
      <title>We Thought React Native Was the Answer... Until Our App Hit 190% CPU 🔥📱</title>
      <dc:creator>motion team</dc:creator>
      <pubDate>Wed, 09 Jul 2025 15:12:35 +0000</pubDate>
      <link>https://dev.to/usemotion/we-thought-react-native-was-the-answer-until-our-app-hit-190-cpu-2pc3</link>
      <guid>https://dev.to/usemotion/we-thought-react-native-was-the-answer-until-our-app-hit-190-cpu-2pc3</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; React Native seemed perfect for our productivity app until performance became unbearable. Here's why we switched to native and the dramatic results we achieved.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Breaking Point 💔
&lt;/h2&gt;

&lt;p&gt;Our React Native desktop app was consuming 190% CPU for a simple productivity tool. Users complained about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Severe battery drain 🔋&lt;/li&gt;
&lt;li&gt;Fan noise from overheating 🌡️&lt;/li&gt;
&lt;li&gt;Sluggish system performance 🐌&lt;/li&gt;
&lt;li&gt;App crashes under load 💥&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What We Found 🔍
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Bridge Tax&lt;/strong&gt;&lt;br&gt;
Every JS ↔ Native call adds overhead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;///Each call crosses the expensive bridge&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;windows&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;nativeModules&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getWindows&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;activeApp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;nativeModules&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getActiveApplication&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Re-rendering Hell&lt;/strong&gt;&lt;br&gt;
Components re-rendering 60+ times per second:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;TaskList&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;tasks&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;filters&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;sortBy&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;filteredTasks&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useMemo&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;tasks&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="cm"&gt;/* expensive filtering */&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;tasks&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;filters&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;sortBy&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt; &lt;span class="c1"&gt;// Dependencies changing constantly&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. Memory Leaks in Native Modules&lt;/strong&gt;&lt;br&gt;
Poor resource cleanup in custom modules.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Numbers Don't Lie 📊
&lt;/h2&gt;

&lt;p&gt;React Native vs Native Performance:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CPU Usage: 190% → 15%&lt;/li&gt;
&lt;li&gt;Memory: 400MB → 100MB&lt;/li&gt;
&lt;li&gt;Cold Start: 3.2s → &amp;lt;1s&lt;/li&gt;
&lt;li&gt;Battery Impact: High → Minimal&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  The Native Solution 🚀
&lt;/h2&gt;

&lt;p&gt;We rebuilt using Swift/SwiftUI with performance-first design:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight swift"&gt;&lt;code&gt;&lt;span class="c1"&gt;//Efficient window monitoring&lt;/span&gt;
&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="kt"&gt;WindowMonitor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;ObservableObject&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;eventTap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;CFMachPort&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt;

    &lt;span class="kd"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;startMonitoring&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;eventTap&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;CGEvent&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;tapCreate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="nv"&gt;tap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cgSessionEventTap&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="nv"&gt;place&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;headInsertEventTap&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="nv"&gt;options&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;defaultTap&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="nv"&gt;eventsOfInterest&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;CGEventMask&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;eventMask&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
            &lt;span class="nv"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="cm"&gt;/* efficient callback */&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Results 🌟
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;CPU usage: 190% → 15% 📉&lt;/li&gt;
&lt;li&gt;Memory: 75% reduction 🗜️&lt;/li&gt;
&lt;li&gt;Launch time: 60% faster ⚡&lt;/li&gt;
&lt;li&gt;Silent operation (no more fan noise!)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  When to Choose What 💡
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;React Native is great for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Content-heavy apps&lt;/li&gt;
&lt;li&gt;Standard UI patterns&lt;/li&gt;
&lt;li&gt;Rapid prototyping&lt;/li&gt;
&lt;li&gt;React-heavy teams&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Go native when you need:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Performance-critical apps&lt;/li&gt;
&lt;li&gt;Heavy system integration&lt;/li&gt;
&lt;li&gt;Resource efficiency&lt;/li&gt;
&lt;li&gt;Background processing&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Bottom Line 🎯
&lt;/h2&gt;

&lt;p&gt;React Native isn't bad—it's just not right for every use case. For Motion's requirements (system integration, background processing, resource efficiency), native was the clear winner.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The key is recognizing when to make the switch before performance problems become user complaints.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;Read the full technical deep-dive: &lt;a href="https://engineering.usemotion.com/we-thought-react-native-was-the-answer-until-our-app-hit-190-cpu-f0e849073334" rel="noopener noreferrer"&gt;Motion Engineering Blog&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Building high-performance productivity software at Motion. We're always looking for talented engineers who care about performance and user experience. &lt;a href="https://jobs.ashbyhq.com/motion/4f5f6a29-3af0-4d79-99a4-988ff7c5ba05" rel="noopener noreferrer"&gt;Join our team!&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>We Replaced 5 Years of Infrastructure Debt with TypeScript. Here's How.</title>
      <dc:creator>motion team</dc:creator>
      <pubDate>Mon, 07 Jul 2025 18:30:23 +0000</pubDate>
      <link>https://dev.to/usemotion/we-replaced-5-years-of-infrastructure-debt-with-typescript-heres-how-5g9n</link>
      <guid>https://dev.to/usemotion/we-replaced-5-years-of-infrastructure-debt-with-typescript-heres-how-5g9n</guid>
      <description>&lt;p&gt;Five years of different people clicking buttons in dashboards. Zero documentation. Pure tribal knowledge that walked out the door when people left.&lt;br&gt;
Every deployment felt like Russian roulette because our setup was essentially unreproducible.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Question That Changed Everything 💡
&lt;/h2&gt;

&lt;p&gt;Sebastian joined our team and asked one simple question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What happens if we need to rebuild this from scratch?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The honest answer was terrifying. We couldn't. Nobody could.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Infrastructure Horror Story We All Know Too Well
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;Our Reality Check&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;5 years of "it works, don't touch it"&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;0 documentation&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;100% tribal knowledge&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;Every deploy = prayer circle&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;New engineers = 3 months to understand anything&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sound familiar? Yeah, we thought so.&lt;/p&gt;




&lt;h2&gt;
  
  
  One Engineer. One Mission. Zero Terraform Patches.
&lt;/h2&gt;

&lt;p&gt;While most would try to document the mess or patch the existing Terraform, Sebastian made a bold call:&lt;/p&gt;

&lt;p&gt;Rebuild everything using Pulumi + TypeScript.&lt;/p&gt;




&lt;p&gt;Why?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Same language across our entire stack&lt;/li&gt;
&lt;li&gt;Proper modular design&lt;/li&gt;
&lt;li&gt;Type safety for infrastructure&lt;/li&gt;
&lt;li&gt;Actual documentation that updates with code&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Transformation 🚀
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight hcl"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Before: Nobody knows what this does&lt;/span&gt;
&lt;span class="nx"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;"aws_instance"&lt;/span&gt; &lt;span class="s2"&gt;"web"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;ami&lt;/span&gt;           &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"ami-0c55b159cbfafe1f0"&lt;/span&gt;
  &lt;span class="nx"&gt;instance_type&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"t2.micro"&lt;/span&gt;
  &lt;span class="c1"&gt;# ... 500 more lines of mystery&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// After: Self-documenting infrastructure&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;webServer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;aws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ec2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Instance&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;web-server&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;instanceType&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;aws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ec2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;InstanceType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;T3_Micro&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;ami&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ubuntu20&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ami&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;ami&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="na"&gt;userData&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;renderStartupScript&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
  &lt;span class="na"&gt;tags&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="na"&gt;Purpose&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Handles API traffic&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;Owner&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;platform-team&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; 
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The Results After One Year
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;From 3 months → 1 week&lt;/strong&gt; for new engineers to understand our infra&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;From "prayer deploys"&lt;/strong&gt; → 30-minute production deployments**&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;From 0 → 100% infrastructure reproducibility&lt;/strong&gt;
-** From tribal knowledge → living documentation**&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Any developer on our team can now understand, modify, and deploy our infrastructure.&lt;/p&gt;




&lt;h2&gt;
  
  
  This Is How We Think at Motion
&lt;/h2&gt;

&lt;p&gt;Sebastian didn't wait for permission. He didn't form a committee. He saw a critical problem and owned the solution completely.&lt;br&gt;
This is the engineering culture we're building at Motion: identify what's broken, take ownership, and ship the fix.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Full Infrastructure Rebuild Playbook 📖
&lt;/h2&gt;

&lt;p&gt;We documented every step, every decision, and every lesson learned from this migration. No gatekeeping.&lt;br&gt;
Get the complete guide here: &lt;a href="https://engineering.usemotion.com/replacing-clickops-with-pulumi-d21f3e80b851" rel="noopener noreferrer"&gt;How We Rebuilt Our Infrastructure From Scratch&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;We're hiring. If you're the type of engineer who sees "nobody understands this system" as a challenge rather than an excuse, let's talk: &lt;a href="https://jobs.ashbyhq.com/motion/4f5f6a29-3af0-4d79-99a4-988ff7c5ba05" rel="noopener noreferrer"&gt;https://jobs.ashbyhq.com/motion/4f5f6a29-3af0-4d79-99a4-988ff7c5ba05&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>opensource</category>
      <category>javascript</category>
    </item>
    <item>
      <title>How One Engineer Saved Us $110K and Ended Our Database Nightmare 🚀</title>
      <dc:creator>motion team</dc:creator>
      <pubDate>Tue, 24 Jun 2025 20:16:35 +0000</pubDate>
      <link>https://dev.to/usemotion/how-one-engineer-saved-us-110k-and-ended-our-database-nightmare-1g1o</link>
      <guid>https://dev.to/usemotion/how-one-engineer-saved-us-110k-and-ended-our-database-nightmare-1g1o</guid>
      <description>&lt;p&gt;We were in crisis mode. Every week brought a new Sev0. Our database was going down repeatedly, bleeding money and eroding customer trust. Something had to change—fast.&lt;/p&gt;

&lt;p&gt;Enter &lt;strong&gt;&lt;a href="https://www.linkedin.com/in/scalahansolo/" rel="noopener noreferrer"&gt;Sean&lt;/a&gt;&lt;/strong&gt;, who took ownership in the most literal way possible.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem That Was Killing Us 💀
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Weekly database outages disrupting thousands of users&lt;/li&gt;
&lt;li&gt;Escalating infrastructure costs eating into our runway&lt;/li&gt;
&lt;li&gt;33% slower latencies frustrating our customers&lt;/li&gt;
&lt;li&gt;Engineering morale plummeting from constant firefighting&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  One Engineer. One Mission. Zero Committee Meetings.
&lt;/h2&gt;

&lt;p&gt;While most companies would form a task force, create a 6-month migration plan, and debate endlessly, Sean did something different. He rolled up his sleeves and single-handedly migrated our entire database to PostgreSQL.&lt;/p&gt;

&lt;p&gt;No endless planning meetings. No bureaucracy. Just pure engineering ownership.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Results Speak for Themselves 📊
&lt;/h2&gt;

&lt;p&gt;Before Migration:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Weekly outages&lt;/li&gt;
&lt;li&gt;$150K+ annual database costs&lt;/li&gt;
&lt;li&gt;300ms average latency&lt;/li&gt;
&lt;li&gt;Stressed on-call team&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After Migration:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ZERO outages since migration ✅&lt;/li&gt;
&lt;li&gt;$110,000+ annual savings 💰&lt;/li&gt;
&lt;li&gt;200ms average latency (33% faster) ⚡&lt;/li&gt;
&lt;li&gt;Happy engineers, happy customers&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  This Is How We Build at Motion
&lt;/h2&gt;

&lt;p&gt;Sean's story isn't unique at Motion—it's our standard. We believe in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Complete ownership&lt;/strong&gt;: See a problem? Own the solution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Swift execution&lt;/strong&gt;: Ship fast, iterate faster.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Impact over process&lt;/strong&gt;: Results matter more than meetings.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why We're Sharing This
&lt;/h2&gt;

&lt;p&gt;We're launching the Motion engineering blog because stories like Sean's deserve to be told. Real engineering. Real impact. Real lessons learned.&lt;/p&gt;

&lt;p&gt;Whether it's database migrations, scaling challenges, or innovative solutions—we'll share the unfiltered truth about building products that matter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the full technical deep-dive&lt;/strong&gt;: &lt;a href="https://engineering.usemotion.com/migrating-to-postgres-3c93dff9c65d" rel="noopener noreferrer"&gt;Migrating to Postgres&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;We're hiring engineers who think like Sean. If you see a problem and your first instinct is to fix it rather than schedule a meeting about it, let's talk! &lt;a href="https://jobs.ashbyhq.com/motion/4f5f6a29-3af0-4d79-99a4-988ff7c5ba05" rel="noopener noreferrer"&gt;https://jobs.ashbyhq.com/motion/4f5f6a29-3af0-4d79-99a4-988ff7c5ba05&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>opensource</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
