<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><generator uri="https://jekyllrb.com/" version="4.3.4">Jekyll</generator><link href="https://yewjin.com/feed.xml" rel="self" type="application/atom+xml"/><link href="https://yewjin.com/" rel="alternate" type="text/html" hreflang="en"/><updated>2026-03-03T17:26:12+00:00</updated><id>https://yewjin.com/feed.xml</id><title type="html">Yew Jin</title><subtitle>About Yew Jin. </subtitle><entry><title type="html">Dead Simple Network Failover (Ubuntu)</title><link href="https://yewjin.com/blog/2025/network-failover/" rel="alternate" type="text/html" title="Dead Simple Network Failover (Ubuntu)"/><published>2025-09-29T08:00:00+00:00</published><updated>2025-09-29T08:00:00+00:00</updated><id>https://yewjin.com/blog/2025/network-failover</id><content type="html" xml:base="https://yewjin.com/blog/2025/network-failover/"><![CDATA[<p>Got two ISPs? Want automatic failover when one dies? Here’s a zero-dependency solution that just works on Ubuntu (or any systemd/NetworkManager distro).</p> <h2 id="the-problem">The Problem</h2> <p>I have cable and Starlink. Cable is OK-ish but occasionally goes down. Starlink is my backup. I wanted automatic failover without buying expensive hardware or running complex software.</p> <h2 id="the-solution">The Solution</h2> <p>A simple bash script that:</p> <ul> <li>Checks if primary connection is healthy every 3 seconds</li> <li>Switches to backup after 3 consecutive failures</li> <li>Switches back when primary is stable again</li> <li>Prevents flapping between connections</li> </ul> <h2 id="setup-5-minutes">Setup (5 minutes)</h2> <h3 id="1-find-your-network-interfaces">1. Find your network interfaces</h3> <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ip <span class="nb">link </span>show  <span class="c"># Find your interface names</span>
</code></pre></div></div> <h3 id="2-create-the-failover-script">2. Create the failover script</h3> <p>Save this to <code class="language-plaintext highlighter-rouge">/usr/local/bin/netfailover.sh</code>:</p> <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#!/usr/bin/env bash</span>
<span class="nb">set</span> <span class="nt">-euo</span> pipefail

<span class="c"># Configuration - CHANGE THESE!</span>
<span class="nv">PRIMARY_IF</span><span class="o">=</span><span class="s2">"eth0"</span>           <span class="c"># Your primary ISP interface</span>
<span class="nv">BACKUP_IF</span><span class="o">=</span><span class="s2">"wlan0"</span>          <span class="c"># Your backup ISP interface</span>
<span class="nv">PRIMARY_NAME</span><span class="o">=</span><span class="s2">"Primary"</span>      <span class="c"># Display name</span>
<span class="nv">BACKUP_NAME</span><span class="o">=</span><span class="s2">"Backup"</span>       <span class="c"># Display name</span>

<span class="c"># Tuning</span>
<span class="nv">OK_THRESHOLD</span><span class="o">=</span>3             <span class="c"># Checks before switching back</span>
<span class="nv">FAIL_THRESHOLD</span><span class="o">=</span>3           <span class="c"># Failures before switching</span>
<span class="nv">SLEEP_SECS</span><span class="o">=</span>3              <span class="c"># Check interval</span>

require_root<span class="o">(){</span> <span class="o">[[</span> <span class="nv">$EUID</span> <span class="nt">-eq</span> 0 <span class="o">]]</span> <span class="o">||</span> <span class="o">{</span> <span class="nb">echo</span> <span class="s2">"Run with sudo"</span><span class="p">;</span> <span class="nb">exit </span>1<span class="p">;</span> <span class="o">}</span><span class="p">;</span> <span class="o">}</span>
log<span class="o">(){</span> logger <span class="nt">-t</span> netfailover <span class="s2">"</span><span class="nv">$1</span><span class="s2">"</span><span class="p">;</span> <span class="nb">echo</span> <span class="s2">"[</span><span class="si">$(</span><span class="nb">date</span> <span class="s1">'+%Y-%m-%d %H:%M:%S'</span><span class="si">)</span><span class="s2">] </span><span class="nv">$1</span><span class="s2">"</span><span class="p">;</span> <span class="o">}</span>
gw<span class="o">(){</span> nmcli <span class="nt">-g</span> IP4.GATEWAY device show <span class="s2">"</span><span class="nv">$1</span><span class="s2">"</span> 2&gt;/dev/null <span class="o">||</span> <span class="nb">true</span><span class="p">;</span> <span class="o">}</span>
setdef<span class="o">(){</span>
  <span class="nb">local </span><span class="nv">ifc</span><span class="o">=</span><span class="nv">$1</span> <span class="nv">gw</span><span class="o">=</span><span class="nv">$2</span>
  <span class="o">[[</span> <span class="nt">-n</span> <span class="s2">"</span><span class="nv">$gw</span><span class="s2">"</span> <span class="o">]]</span> <span class="o">&amp;&amp;</span> ip route replace default via <span class="s2">"</span><span class="nv">$gw</span><span class="s2">"</span> dev <span class="s2">"</span><span class="nv">$ifc</span><span class="s2">"</span> <span class="o">&amp;&amp;</span> <span class="k">return </span>0
  <span class="k">return </span>1
<span class="o">}</span>

healthy<span class="o">(){</span>
  <span class="nb">local </span><span class="nv">ok</span><span class="o">=</span>0
  <span class="c"># Test multiple endpoints to avoid false positives</span>
  <span class="k">for </span>dst <span class="k">in </span>1.1.1.1 8.8.8.8 9.9.9.9<span class="p">;</span> <span class="k">do
    </span>ping <span class="nt">-I</span> <span class="s2">"</span><span class="nv">$PRIMARY_IF</span><span class="s2">"</span> <span class="nt">-c</span> 1 <span class="nt">-W</span> 1 <span class="s2">"</span><span class="nv">$dst</span><span class="s2">"</span> <span class="o">&gt;</span>/dev/null 2&gt;&amp;1 <span class="o">&amp;&amp;</span> <span class="nv">ok</span><span class="o">=</span><span class="k">$((</span>ok+1<span class="k">))</span>
  <span class="k">done</span>
  <span class="o">[[</span> <span class="nv">$ok</span> <span class="nt">-ge</span> 2 <span class="o">]]</span>  <span class="c"># Need 2/3 responding</span>
<span class="o">}</span>

<span class="c"># Main loop</span>
require_root
<span class="nv">cur_primary</span><span class="o">=</span>1<span class="p">;</span> <span class="nv">fail</span><span class="o">=</span>0<span class="p">;</span> <span class="nv">ok</span><span class="o">=</span>0

log <span class="s2">"Starting failover monitor (</span><span class="nv">$PRIMARY_NAME</span><span class="s2"> ↔ </span><span class="nv">$BACKUP_NAME</span><span class="s2">)"</span>

<span class="k">while </span><span class="nb">true</span><span class="p">;</span> <span class="k">do
  </span><span class="nv">PGW</span><span class="o">=</span><span class="si">$(</span>gw <span class="s2">"</span><span class="nv">$PRIMARY_IF</span><span class="s2">"</span><span class="si">)</span>
  <span class="nv">BGW</span><span class="o">=</span><span class="si">$(</span>gw <span class="s2">"</span><span class="nv">$BACKUP_IF</span><span class="s2">"</span><span class="si">)</span>

  <span class="k">if </span>healthy<span class="p">;</span> <span class="k">then
    </span><span class="nv">ok</span><span class="o">=</span><span class="k">$((</span>ok+1<span class="k">))</span><span class="p">;</span> <span class="nv">fail</span><span class="o">=</span>0
    <span class="k">if</span> <span class="o">((</span> <span class="nv">cur_primary</span><span class="o">==</span>0 <span class="o">&amp;&amp;</span> ok&gt;<span class="o">=</span>OK_THRESHOLD <span class="o">))</span><span class="p">;</span> <span class="k">then
      </span>log <span class="s2">"✓ </span><span class="nv">$PRIMARY_NAME</span><span class="s2"> healthy → switching back"</span>
      setdef <span class="s2">"</span><span class="nv">$PRIMARY_IF</span><span class="s2">"</span> <span class="s2">"</span><span class="nv">$PGW</span><span class="s2">"</span> <span class="o">&amp;&amp;</span> <span class="nv">cur_primary</span><span class="o">=</span>1
      <span class="nv">ok</span><span class="o">=</span>0
    <span class="k">fi
  else
    </span><span class="nv">fail</span><span class="o">=</span><span class="k">$((</span>fail+1<span class="k">))</span><span class="p">;</span> <span class="nv">ok</span><span class="o">=</span>0
    <span class="k">if</span> <span class="o">((</span> <span class="nv">cur_primary</span><span class="o">==</span>1 <span class="o">&amp;&amp;</span> fail&gt;<span class="o">=</span>FAIL_THRESHOLD <span class="o">))</span><span class="p">;</span> <span class="k">then
      </span>log <span class="s2">"✗ </span><span class="nv">$PRIMARY_NAME</span><span class="s2"> failed → switching to </span><span class="nv">$BACKUP_NAME</span><span class="s2">"</span>
      setdef <span class="s2">"</span><span class="nv">$BACKUP_IF</span><span class="s2">"</span> <span class="s2">"</span><span class="nv">$BGW</span><span class="s2">"</span> <span class="o">&amp;&amp;</span> <span class="nv">cur_primary</span><span class="o">=</span>0
      <span class="nv">fail</span><span class="o">=</span>0
    <span class="k">fi
  fi

  </span><span class="nb">sleep</span> <span class="s2">"</span><span class="nv">$SLEEP_SECS</span><span class="s2">"</span>
<span class="k">done</span>
</code></pre></div></div> <h3 id="3-create-the-systemd-service">3. Create the systemd service</h3> <p>Save this to <code class="language-plaintext highlighter-rouge">/etc/systemd/system/netfailover.service</code>:</p> <div class="language-ini highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nn">[Unit]</span>
<span class="py">Description</span><span class="p">=</span><span class="s">Network Failover Service</span>
<span class="py">After</span><span class="p">=</span><span class="s">network-online.target NetworkManager-wait-online.service</span>
<span class="py">Wants</span><span class="p">=</span><span class="s">network-online.target NetworkManager-wait-online.service</span>

<span class="nn">[Service]</span>
<span class="py">Type</span><span class="p">=</span><span class="s">simple</span>
<span class="py">ExecStartPre</span><span class="p">=</span><span class="s">/bin/sleep 8</span>
<span class="py">ExecStart</span><span class="p">=</span><span class="s">/usr/local/bin/netfailover.sh</span>
<span class="py">Restart</span><span class="p">=</span><span class="s">always</span>
<span class="py">RestartSec</span><span class="p">=</span><span class="s">2</span>
<span class="py">StandardOutput</span><span class="p">=</span><span class="s">journal</span>
<span class="py">StandardError</span><span class="p">=</span><span class="s">journal</span>

<span class="nn">[Install]</span>
<span class="py">WantedBy</span><span class="p">=</span><span class="s">multi-user.target</span>
</code></pre></div></div> <h3 id="4-enable-and-start">4. Enable and start</h3> <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo chmod</span> +x /usr/local/bin/netfailover.sh
<span class="nb">sudo </span>systemctl daemon-reload
<span class="nb">sudo </span>systemctl <span class="nb">enable </span>netfailover.service
<span class="nb">sudo </span>systemctl start netfailover.service
</code></pre></div></div> <h3 id="5-check-its-working">5. Check it’s working</h3> <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Watch the logs</span>
<span class="nb">sudo </span>journalctl <span class="nt">-u</span> netfailover <span class="nt">-f</span>

<span class="c"># Test failover (unplug primary cable or disable interface)</span>
<span class="nb">sudo </span>ip <span class="nb">link set </span>eth0 down  <span class="c"># Wait ~10 seconds</span>
<span class="nb">sudo </span>ip <span class="nb">link set </span>eth0 up    <span class="c"># Should switch back after ~10 seconds</span>
</code></pre></div></div> <h2 id="how-it-works">How It Works</h2> <ol> <li><strong>Health checks</strong>: Pings 3 public DNS servers through the primary interface</li> <li><strong>Smart thresholds</strong>: Requires 3 consecutive failures before switching (prevents false positives)</li> <li><strong>Stable switching</strong>: Waits for 3 successful checks before switching back (prevents flapping)</li> <li><strong>Route manipulation</strong>: Uses Linux’s default route to control which ISP handles traffic</li> </ol> <h2 id="why-this-approach">Why This Approach?</h2> <ul> <li><strong>No dependencies</strong>: Just bash, ping, and ip route</li> <li><strong>Simple</strong>: ~50 lines of code you can understand and modify</li> <li><strong>Battle-tested</strong>: Based on traditional network monitoring patterns</li> <li><strong>Fast</strong>: Detects failures in ~9 seconds, recovers in ~9 seconds</li> </ul> <h2 id="gotchas">Gotchas</h2> <ul> <li>Both connections need to be up and have DHCP leases</li> <li>Existing connections may drop during switchover</li> <li>DNS might need a flush after switching: <code class="language-plaintext highlighter-rouge">systemd-resolve --flush-caches</code></li> </ul> <h2 id="monitoring">Monitoring</h2> <p>Check which connection is active:</p> <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ip route | <span class="nb">grep </span>default
</code></pre></div></div> <p>View failover logs:</p> <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>journalctl <span class="nt">-u</span> netfailover <span class="nt">--since</span> <span class="s2">"1 hour ago"</span>
</code></pre></div></div> <hr/> <p>That’s it. No BGP, no VRRP, no expensive hardware. Just a simple script that keeps me online.</p> <p>Tested on Ubuntu 22.04/24.04 with cable + starlink, and dual WAN setups. Should work on any Linux with NetworkManager and systemd.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Simple automatic failover when you have two ISPs]]></summary></entry><entry><title type="html">Why How You Lose As A Leader Matters As Much As How You Win</title><link href="https://yewjin.com/blog/2025/losing-as-a-leader/" rel="alternate" type="text/html" title="Why How You Lose As A Leader Matters As Much As How You Win"/><published>2025-08-26T08:00:00+00:00</published><updated>2025-08-26T08:00:00+00:00</updated><id>https://yewjin.com/blog/2025/losing-as-a-leader</id><content type="html" xml:base="https://yewjin.com/blog/2025/losing-as-a-leader/"><![CDATA[<p>Building great organizations requires wins. Let’s be clear about that from the start. Without wins, you don’t have an organization - you have a support group.</p> <p>But here’s what changes when you step into leadership: your losses become public property. When you’re an individual contributor, you can fail quietly, learn privately, move on. That bug in your code? Fix it before anyone notices. That presentation that bombed? Iterate for next time. Your failures are yours to manage.</p> <p>When you’re leading transformation in teams, the physics change entirely. Your failures are watched and dissected, with or without you knowing exactly what is being discussed. They become water cooler conversations and organizational folklore. This isn’t about celebrating failure - that confuses activity with progress. This is about recognizing that losses are inevitable, and how you handle them becomes organizational DNA.</p> <p>I learned this the hard way with many (many) failed projects and ideas. I make it a point to be public about these failures, laying out to the team where my thinking went wrong, showing the flawed assumptions, owning the disruption it caused.</p> <p>The response? Team members talk about the trust this approach built.</p> <p>That’s the paradox. Leaders who can’t admit obvious failures think they’re protecting their authority. They’re actually destroying trust. Everyone can see when something isn’t working. Pretending otherwise doesn’t make you look strong; it makes you look delusional or dishonest. Sometimes both.</p> <p>There’s this pressure to be “too much” of everything as a leader - too confident, too certain, too polished. But the leaders who own failures publicly are criticized for being “too vulnerable,” “too open.” Here’s the thing: that vulnerability, when paired with actual wins, creates something powerful - proof that falling down isn’t fatal.</p> <p>The most infuriating leaders aren’t the ones who fail. They’re the ones who fail and then gaslight everyone about it. Who pretend the strategy that clearly didn’t work was actually successful “from a certain point of view.” Who make their teams question reality rather than question their decision.</p> <h2 id="kind-versus-nice-in-victory-and-defeat"><strong>Kind Versus Nice in Victory and Defeat</strong></h2> <p>This difference between protecting ego and protecting trust brings us to a critical distinction that shapes how we handle both victories and defeats.</p> <p>Nice leaders celebrate wins loudly and bury losses quietly. They smooth over mistakes, avoid uncomfortable conversations, keep everyone feeling good about themselves. They’re the ones who say “great job everyone” when half the team knows it wasn’t. When failures surface, they blame the team that executed their flawed strategy, the market that didn’t respond to their mistimed launch, anyone but themselves.</p> <p>Kind leaders do something harder. They celebrate wins generously - giving credit widely and specifically. But they own losses personally and publicly. They say “I made this call, here’s where my thinking was flawed, here’s what we’re learning from it.” When you have power, this admission isn’t weakness - it’s redefining strength. You’re dismantling the myth of infallible leadership, the toxic idea that authority means never being wrong.</p> <p>This is where privilege enters the equation in ways we don’t talk about enough. Who can afford to take public ownership of failure? Usually those with enough wins banked, enough social capital, enough alternatives if things go sideways. The senior director with a track record can admit failure more safely than the new manager still proving themselves.</p> <p>This creates an obligation. If you have the safety net to fail publicly, you must model how to fall and get back up. Not for your own growth - for everyone watching who can’t afford to take the same risks.</p> <p>The arithmetic is actually simple. Your wins create permission to show your losses. Your losses create permission for others to take risks that lead to wins. But if you only show wins, you create a culture where people hide losses until they become catastrophes.</p> <p>Real kindness in leadership means making people uncomfortable with truth rather than comfortable with fiction. It means telling your team their idea has fatal flaws rather than letting them waste six months on it. It means challenging the senior executive dismissing junior voices, even when that executive writes your performance review. It means using whatever privilege you have to amplify those who can’t speak as safely as you can.</p> <h2 id="building-organizations-that-can-win-because-they-know-how-to-lose"><strong>Building Organizations That Can Win Because They Know How to Lose</strong></h2> <p>These individual acts of courage and accountability compound into something larger - they become the foundation of organizational resilience.</p> <p>The strongest organizations aren’t built by people who never fail. They’re built by people who fail instructively and create cultures that can metabolize failure into fuel. Not the fake “fail fast” culture where people celebrate any failure as learning. That’s just incompetence with better PR. I’m talking about teams that reflexively ask “what did we learn?” because they’ve watched leaders model that question about their own mistakes.</p> <p>Here’s what I’ve observed: wins create momentum, but how you handle losses creates culture.</p> <p>Every time you stand up and own a failure, you’re doing several things simultaneously:</p> <ul> <li>You’re making it safer for someone else to take the risks that lead to wins</li> <li>You’re demonstrating that recovery is possible</li> <li>You’re showing that learning matters more than looking good</li> <li>You’re building a team that can handle reality rather than requiring fantasy</li> </ul> <p>The ratio matters. You need enough wins to have credibility. Nobody wants to follow someone who fails constantly and owns it beautifully - that’s just transparent incompetence. But without visible losses and recovery, you’re not building an organization that can innovate. You’re building a performance theater where everyone pretends nothing ever goes wrong.</p> <p>Your real community - in leadership and in life - isn’t the people who only see your wins. It’s the ones who’ve watched you fail spectacularly and stick around to ask, “What did we learn?” instead of “I told you so.” The best ones do it with humor, making the medicine go down easier. They’re the ones who, when you’re about to make the same mistake again, remind you of last time and save you from yourself.</p> <p>These are the people who make organizations antifragile. They’ve seen losses handled with grace and learning, so they’re willing to take bigger swings. They know that failure isn’t career-ending if you own it and learn from it.</p> <p>Organizations that only know how to win are brittle. When they eventually lose (and they will), they shatter. They look for someone to blame, someone to fire, someone to sacrifice to maintain the illusion of constant success.</p> <p>Organizations that know how to lose - because they’ve watched leaders do it with accountability and grace - can take bigger risks, fail harder, recover faster, and ultimately win bigger. They don’t waste energy on coverups or blame games. They put that energy into learning and adjusting.</p> <p>The hardest truth? The most successful leaders I know and respect aren’t those who never failed. They’re the ones who failed instructively, publicly, and then used their recovery to light the path for others. They have impressive win records, but what distinguishes them is how they turned their losses into organizational assets.</p> <p>Remember:</p> <ul> <li>Your wins give you permission to show your losses</li> <li>Your losses give others permission to take risks</li> <li>Public accountability for failure is as, if not more, powerful than any success story</li> <li>Choose kind over nice, especially when owning mistakes</li> <li>Your privilege to fail safely creates an obligation to fail instructively</li> <li>The ratio matters - you need wins, but losses teach culture</li> </ul> <p>Make a decision. Own the results. Build something that can win because it knows how to lose.</p> <p>Because in the end, organizations aren’t built on the fairy tale of constant success. They’re built on the human reality of falling down, getting up, and being honest about both.</p>]]></content><author><name></name></author><category term="leadership"/><category term="leadership,"/><category term="organizational-culture,"/><category term="failure,"/><category term="psychological-safety,"/><category term="career,"/><category term="linkedin"/><summary type="html"><![CDATA[Why your spectacular failures are worth as much, if not more, than your polished wins]]></summary></entry><entry><title type="html">What Nobody Tells You About Those Long, Slow Zone 2 Runs</title><link href="https://yewjin.com/blog/2025/zone-2-training/" rel="alternate" type="text/html" title="What Nobody Tells You About Those Long, Slow Zone 2 Runs"/><published>2025-08-25T08:00:00+00:00</published><updated>2025-08-25T08:00:00+00:00</updated><id>https://yewjin.com/blog/2025/zone-2-training</id><content type="html" xml:base="https://yewjin.com/blog/2025/zone-2-training/"><![CDATA[<p>I started doing zone 2 training and have worked up to 3+ hour zone 2 runs in my weekly training. I thought I knew what to expect - keep my heart rate low, build my aerobic base, become a more efficient runner. The usual promises. What I didn’t expect were some of the bizarre side effects that nobody warns you about.</p> <h2 id="the-weird-stuff-that-actually-happens"><strong>The Weird Stuff That Actually Happens</strong></h2> <h3 id="1-your-muscles-will-betray-you-but-you-can-sing-your-lungs-out"><strong>1. Your Muscles Will Betray You, But You Can Sing Your Lungs Out</strong></h3> <p>Here’s something that completely caught me off guard: After a 3+ hour zone 2 run, I’m not out of breath <em>at all</em> but my muscles are screaming. This feels completely backwards from my normal running experience where I’m usually exhausted both muscle-wise AND gasping for air.</p> <p>There’s a fascinating physiological reason for this. <a href="https://www.trainingpeaks.com/blog/zone-2-training-for-endurance-athletes/">Zone 2 training keeps your blood lactate levels stable</a> - your body clears lactate as fast as you produce it. You’re working your muscles for hours while your cardiovascular system cruises along, <a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6188999/">using fat as fuel instead of burning through carbs</a>. Your muscles do serious work accumulating miles, but your heart and lungs are on a leisurely jog.</p> <p>Normally when you run hard, everything fails together in one spectacular bonfire of exhaustion. With zone 2, your muscles do a slow burn while your cardiovascular system barely breaks a sweat.</p> <h3 id="2-why-cant-i-fall-asleep"><strong>2. Why Can’t I Fall Asleep?!</strong></h3> <p>I’ve had a lifetime of great sleep - head-hits-pillow, wake-up-9-hours-later kind of sleep. Then I started these long zone 2 runs and suddenly I’m lying in bed at 2 AM wondering what happened to my superpower.</p> <p>A key moment came as I browsed <a href="https://thefeed.com/">The Feed</a> (nutrition shop for athletes) and noticed product lines dedicated to sleep-related nutrition. Why would athletes need help sleeping? Aren’t we supposed to be exhausted?</p> <p><a href="https://pubmed.ncbi.nlm.nih.gov/17172008/">Marathon-level training can seriously deplete magnesium levels</a> - <a href="https://runnersconnect.net/magnesium-for-runners/">up to 12% of your daily magnesium lost through sweat alone</a>. Magnesium helps regulate cortisol and <a href="https://pubmed.ncbi.nlm.nih.gov/21199787/">promotes deep sleep</a>. Without it, you get the cruel irony of being physically exhausted but neurologically wired.</p> <p>I’ve started supplementing with magnesium (glycinate, citrate) before bed. Who knew that running for hours could make you <em>too tired to sleep</em>?</p> <h3 id="3-just-ran-3-hours-you-must-be-not-hungry"><strong>3. Just Ran 3 Hours, You Must Be <em>Not</em> Hungry?!</strong></h3> <p>Remember being a kid and your mom saying “you must be hungry after all that running around”? Turns out mom was wrong.</p> <p>I noticed this during marathons in my younger days, but it’s happening again with long zone 2 runs: I finish a 3+ hour run having burned 1,000+ calories, and food is the last thing on my mind. My stomach feels like it’s hibernating.</p> <p>As usual, the answer is <em>science</em> - <a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5133060/">intense or prolonged exercise actually suppresses your “hunger hormone” (ghrelin) and increases appetite-suppressing hormones like peptide YY</a>. Your body essentially <a href="https://www.runnersworld.com/nutrition-weight-loss/a30980352/eating-after-workout-run-refuel-not-hungry/">shuts down digestion to prioritize blood flow to working muscles</a>, and this effect lingers after you stop running. Evolution probably designed this so our ancestors could hunt for hours without being distracted by hunger, but it means I have to force myself to eat recovery food when every instinct is saying “nah, I’m good.”</p> <h2 id="the-parts-nobody-mentions"><strong>The Parts Nobody Mentions</strong></h2> <p>Here are two notes on Zone 2 training which I will mention:</p> <h3 id="walking-so-much-walking"><strong>Walking. So. Much. Walking.</strong></h3> <p>Want to feel like a fraud while “running”? Try zone 2 training on trails. Any slight incline and my heart rate monitor starts screaming at me to slow down. So I walk. And pause. And walk some more.</p> <p>I’ve had to completely recalibrate my ego about what “going for a run” means. Sometimes my Strava looks like I’ve been out for a leisurely hike rather than a training run. But here’s the thing - <a href="https://www.8020endurance.com/8020-zone-calculator/">this is exactly what you’re supposed to do</a>. If you can’t maintain zone 2 while running up that hill, you walk. Period. Your ego will recover faster than your aerobic system will if you keep spiking into zone 3.</p> <h3 id="you-need-a-real-heart-rate-monitor"><strong>You NEED a Real Heart Rate Monitor</strong></h3> <p>Let me save you some frustration: <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC9952291/">your fitness watch is lying to you about your heart rate</a>, especially during zone 2 training where precision matters.</p> <p>I use a <a href="https://www.polar.com/us-en/products/accessories/polar-verity-sense">Polar Verity Sense armband</a> (because I hate chest straps with the fire of a thousand suns), and the difference is shocking. Wrist-based monitors lag, they get confused by arm movement, and they’ll have you thinking you’re in zone 2 when you’re actually cruising in zone 3.</p> <p>When you’re trying to stay in such a narrow heart rate range for hours at a time, accuracy and responsiveness matter. Bite the bullet and get a proper monitor - armband or chest strap. Your Zone 2 training will thank you.</p> <h2 id="bottom-line"><strong>Bottom Line</strong></h2> <p>Zone 2 training is simultaneously the most boring and most surprising type of running I’ve done. It’s exposed gaps in my fitness (strong heart, apparently weak muscles), created problems I didn’t know existed (who needs help sleeping after running for 3 hours?), and forced me to walk up hills like… like I’m old (I am old).</p> <p>But here’s the thing - <a href="https://www.strongerbyscience.com/avoiding-cardio-could-be-holding-you-back/">it’s working</a>. My easy pace is getting faster while staying at the same heart rate. I can run for hours without feeling destroyed the next day. Despite all the sleep issues (which I <em>will</em> figure out).</p> <p>Just don’t expect it to feel like “normal” running. Throw out your conceptions that running is <em>hard</em>. It’s its own weird, slow, surprisingly complex beast. Just prepare to do a lot of walking. Your ego might hate it, but your mitochondria will thank you.</p> <p><strong>Helpful Resources:</strong></p> <ul> <li><a href="https://philmaffetone.com/method/">Phil Maffetone’s MAF Method</a> - The OG of zone 2 training</li> <li><a href="https://uphillathlete.com/aerobic-training/aerobic-anaerobic-threshold-self-assessment/">Uphill Athlete’s Aerobic Capacity Guide</a> - Great for understanding your zones</li> <li><a href="https://examine.com/supplements/magnesium/">Examine.com’s Magnesium Guide</a> - Everything you need to know about magnesium supplementation</li> <li><a href="https://www.scienceofultra.com/podcasts/">The Science of Ultra Podcast</a> - Deep dives into endurance physiology</li> </ul>]]></content><author><name></name></author><category term="fitness"/><category term="running"/><category term="zone-2"/><category term="training"/><category term="endurance"/><category term="heart-rate"/><category term="fitness"/><category term="health"/><category term="sleep"/><category term="nutrition"/><summary type="html"><![CDATA[The surprising side effects of zone 2 training nobody warns you about - from sleep issues to ego checks]]></summary></entry><entry><title type="html">Claude Code for Blogging</title><link href="https://yewjin.com/blog/2025/claude-code-for-blogging/" rel="alternate" type="text/html" title="Claude Code for Blogging"/><published>2025-08-24T08:00:00+00:00</published><updated>2025-08-24T08:00:00+00:00</updated><id>https://yewjin.com/blog/2025/claude-code-for-blogging</id><content type="html" xml:base="https://yewjin.com/blog/2025/claude-code-for-blogging/"><![CDATA[<p>There’s something recursive about using Claude Code to research and write a blog post about using Claude Code for blogging. As I sit here, watching Claude pull insights from <a href="https://www.anthropic.com/engineering/claude-code-best-practices">Anthropic’s best practices guide</a>, search for advanced MCP integrations, and help structure the first draft. This is a pretty great QOL improvement in my content creation workflow.</p> <p>This isn’t a “AI will change everything” post. It’s a distillation of what works for me right now.</p> <h2 id="why-this-stack-works">Why This Stack Works</h2> <p>A key reason why my blogging stack works is pairing Claude Code with Jekyll and GitHub. Jekyll’s file-based architecture means everything is version-controlled, editable, and transparent. Claude Code can read your existing posts to understand your voice and examine your site structure to suggest improvements. It’s like having a writing partner who also understands git, markdown, and web development.</p> <p>Want to analyze your content for patterns? It can read through your entire <code class="language-plaintext highlighter-rouge">_posts</code> directory. Planning a series of related posts? It can maintain continuity by referencing your existing content.</p> <p>GitHub integration also allows me to set up workflows where mentioning <code class="language-plaintext highlighter-rouge">@claude</code> in issues automatically generates content updates, fixes, or even entire blog posts via pull requests.</p> <p>The real power emerges when you move past basic “write me a blog post” prompts to sophisticated, multi-layered workflows.</p> <p><strong>Custom Command Templates</strong>: You can create reusable templates in <code class="language-plaintext highlighter-rouge">.claude/commands/</code> that become <a href="https://docs.anthropic.com/en/docs/claude-code/slash-commands">slash commands</a>. My <code class="language-plaintext highlighter-rouge">/blog-post</code> command automatically generates Jekyll blank blog post with proper formatting, suggests relevant tags based on my existing posts, and even includes a basic structure tailored to my writing style. It’s a personal blog post scaffold that learns from my patterns.</p> <p><strong>Multi-Agent Workflows</strong>: Instead of asking Claude to do everything at once, you can deploy specialized subagents. I use one agent focused purely on research and fact-checking, another for initial drafting that understands my voice and technical level, and a third for editing that knows my common weak spots. These agents can work in parallel, dramatically speeding up complex posts.</p> <p><strong>Session Management Strategy</strong>: Use <code class="language-plaintext highlighter-rouge">/init</code>, <code class="language-plaintext highlighter-rouge">/compact</code>, and <code class="language-plaintext highlighter-rouge">/clear</code> strategically. Starting each writing session with <code class="language-plaintext highlighter-rouge">/init</code> establishes my blog’s style guide, recent post themes, and current projects. This context persistence means Claude doesn’t just help with individual posts - it understands your blog’s evolution over time.</p> <h2 id="mcp-integration">MCP Integration</h2> <p>This is where things get genuinely transformative. The <a href="https://www.anthropic.com/news/model-context-protocol">Model Context Protocol (MCP)</a> ecosystem, particularly tools like <a href="https://github.com/jsonallen/perplexity-mcp">Perplexity MCP</a>, turns Claude Code from a writing assistant into a research powerhouse.</p> <p>With Perplexity MCP installed, I can perform real-time web searches without leaving Claude Code (To be fair, Claude Code can do websearches by itself now). Working on a post about Ethereum staking? I can search for the latest validator metrics, recent protocol updates, or community discussions - all while maintaining the context of my draft. The research becomes integrated rather than scattered across browser tabs and note-taking apps.</p> <p>But it goes deeper than individual searches. MCP tools can maintain ongoing research threads, automatically fact-check claims against current data, and even suggest related topics based on trending discussions. Your blog posts become more timely, accurate, and comprehensive without the traditional research overhead.</p> <p>The context-aware aspect is crucial - these aren’t just isolated web searches. Claude Code can correlate new research with your existing posts, identify gaps in your coverage, and suggest natural follow-up topics. Your blog evolves from a collection of individual posts into a coherent knowledge graph.</p> <p>Beyond <a href="https://github.com/jsonallen/perplexity-mcp">Perplexity MCP</a>, other MCP tools are worth exploring:</p> <ul> <li><a href="https://github.com/MarkusPfundstein/mcp-obsidian">Obsidian MCP</a> monitors your vault and indexes metadata into SQLite - perfect for maintaining a searchable research archive. The File System MCP provides enhanced local file operations beyond basic Claude Code capabilities.</li> <li><a href="https://github.com/alioshr/memory-bank-mcp">Memory Bank MCP</a> allows Claude Code to maintain awareness of themes and discussions across multiple sessions. No more re-explaining your blog’s focus every time you start writing.</li> <li>The <a href="https://developers.notion.com/docs/mcp">official Notion MCP</a> offers full workspace access with OAuth, making it ideal for content calendars and editorial planning. GitHub MCP can automate issue creation for blog ideas and manage content workflows.</li> </ul> <h2 id="my-actual-workflow">My Actual Workflow</h2> <p>Here’s how my typical blog post comes together, step by step:</p> <p><strong>Step 1: Context Initialization</strong> - Every writing session starts with <code class="language-plaintext highlighter-rouge">/init</code>, which loads my blog style guide, recent post themes, and any ongoing series. This isn’t just about consistency - it’s about Claude understanding where this post fits in my broader narrative.</p> <p><strong>Step 2: Research Phase</strong> - Using MCP tools, I gather current information, fact-check assumptions, and explore related topics. The key insight: this research happens within the same context where I’m writing, so connections and insights emerge naturally.</p> <p><strong>Step 3: Multi-Agent Content Creation</strong> - My research agent compiles findings and suggests angles. My draft agent takes these insights and creates the initial structure and content, maintaining my voice and technical level. My editing agent reviews for clarity, flow, and consistency with my existing posts.</p> <p><strong>Step 4: Jekyll Integration</strong> - Claude Code handles the technical details - proper front matter formatting, tag suggestions based on content analysis, and even image optimization if needed. It can run <code class="language-plaintext highlighter-rouge">prettier</code>, create changelist descriptions, and other geeky commands.</p> <p>The entire process feels collaborative rather than automated. I’m not just delegating writing to AI - I’m orchestrating a content creation process where AI handles routine tasks while I focus on strategy, voice, and unique insights.</p> <p>Some tips I learnt along the way:</p> <ul> <li> <p>Instead of long lists of dos and don’ts, I structure prompts as step-by-step algorithms with decision points. “First, analyze the topic’s technical complexity. If high, include a basics section. Then, check my recent posts for related content and reference appropriately.” This approach produces more reliable results than vague style guidelines.</p> </li> <li> <p>I either write a first draft and ask Claude Code to flesh it out more, or I ask Claude Code to do research and write the first draft (remember to use Planning mode!). In any case, I iterate in a separate Vim instance. I’ve learned to expect 3-5 refinement cycles per post, and that’s actually a feature, not a bug. Each iteration can focus on a different aspect - first structure and flow, then technical accuracy, then voice and style. The key is being direct about requirements and expressing urgency clearly when something needs immediate attention.</p> </li> <li> <p>Managing session context is an art. Too little context and Claude loses track of your blog’s voice and themes. Too much and responses become slow and unfocused. The sweet spot is maintaining awareness of 5-10 recent posts and your core style guide while using <code class="language-plaintext highlighter-rouge">/compact</code> to summarize longer research sessions.</p> </li> </ul> <p>What’s overhyped? The idea that AI can completely replace your editorial judgment. Claude Code excels at research, drafting, and technical formatting, but the strategic decisions about what to write, how to position arguments, and when to publish still require human insight.</p> <p>May your writing be smooth and impactful.</p>]]></content><author><name></name></author><category term="tutorial"/><category term="ai"/><category term="blogging"/><category term="productivity"/><summary type="html"><![CDATA[How I use Claude Code for my blogging workflow]]></summary></entry><entry><title type="html">Why Ethereum Could Become Financial Infrastructure</title><link href="https://yewjin.com/blog/2025/ethereum-as-financial-infra/" rel="alternate" type="text/html" title="Why Ethereum Could Become Financial Infrastructure"/><published>2025-08-23T08:00:00+00:00</published><updated>2025-08-23T08:00:00+00:00</updated><id>https://yewjin.com/blog/2025/ethereum-as-financial-infra</id><content type="html" xml:base="https://yewjin.com/blog/2025/ethereum-as-financial-infra/"><![CDATA[<p>I believe Ethereum has a reasonable chance to emerge as significant financial infrastructure. This hypothesis rests on several converging trends that are starting to reinforce each other.</p> <ol> <li>Stablecoins have proven that public blockchain rails can handle trillions in transaction volume</li> <li>U.S. regulators are shifting from skepticism to strategic engagement with this technology</li> <li>Major financial institutions are tokenizing real-world assets, with projections reaching $16 trillion by 2030</li> <li>Institutional capital is flowing in through ETFs and corporate treasury allocations</li> <li>Ethereum’s economic model directly links network usage to the value of ETH through staking yields and fee burns</li> <li>Open, permissionless networks have structural advantages over closed systems for global financial infrastructure</li> </ol> <p>The current financial system runs on technology designed in the 1970s. These rails are slow, expensive, and poorly suited for a digital, 24/7 global economy. Public blockchains offer a potential upgrade path - though this transition faces real challenges and isn’t guaranteed.</p> <h2 id="stablecoins-the-proof-of-concept">Stablecoins: The Proof of Concept</h2> <p>Stablecoins have become the first genuine product-market fit for public blockchains at scale. The market has grown to approximately $280 billion<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup>, processing trillions in annual transaction volume. USDT leads with $167 billion in circulation, while USDC holds $67 billion<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">2</a></sup>.</p> <p>In recent months, USDC alone processed $2.3 trillion in on-chain transfers while USDT handled $1.2 trillion<sup id="fnref:3" role="doc-noteref"><a href="#fn:3" class="footnote" rel="footnote">3</a></sup>. These volumes rival traditional payment networks - not because of speculation, but because stablecoins solve real problems. They enable instant cross-border payments, provide dollar access in countries with unstable currencies, and serve as the foundation for DeFi protocols.</p> <p>Major lending protocols like Aave, which currently manages over $30 billion in deposits<sup id="fnref:4" role="doc-noteref"><a href="#fn:4" class="footnote" rel="footnote">4</a></sup>, were built on stablecoin infrastructure. This isn’t just crypto trading anymore - it’s functional financial infrastructure that works 24/7 globally.</p> <p>The success of stablecoins forced regulators to pay attention. What started as a tool for crypto traders has evolved into a global payment rail that policymakers can no longer ignore.</p> <h2 id="the-regulatory-landscape">The Regulatory Landscape</h2> <p>A significant shift is underway in how U.S. regulators view blockchain technology. Federal Reserve Governor Christopher Waller captured this change in his August 2025 speech at the Wyoming Blockchain Symposium: “There is nothing scary about this just because it occurs in the decentralized finance or DeFi world - this is simply new technology to transfer objects and record transactions.”<sup id="fnref:5" role="doc-noteref"><a href="#fn:5" class="footnote" rel="footnote">5</a></sup></p> <p>The passage of the GENIUS Act in July 2025 marked the first major U.S. cryptocurrency legislation<sup id="fnref:6" role="doc-noteref"><a href="#fn:6" class="footnote" rel="footnote">6</a></sup>. This law creates a federal framework for stablecoin issuers, requiring full reserve backing and regular audits. It gives traditional banks, fintech companies, and other institutions a clear path to issue regulated digital dollars.</p> <p>This isn’t just financial policy - it’s geopolitical strategy. U.S. policymakers increasingly view dollar-denominated stablecoins as a way to maintain and extend the dollar’s global reserve status. As Governor Waller noted, stablecoins have “the potential to maintain and extend the role of the dollar internationally.”<sup id="fnref:5:1" role="doc-noteref"><a href="#fn:5" class="footnote" rel="footnote">5</a></sup></p> <p>The regulatory clarity provided by the GENIUS Act removes the primary barrier that kept institutions on the sidelines. Combined with the Fed’s more supportive stance, this creates conditions for broader adoption.</p> <h2 id="real-world-asset-tokenization">Real-World Asset Tokenization</h2> <p>If stablecoins proved the concept, tokenized real-world assets (RWAs) represent the next wave. Financial institutions are actively moving traditional assets onto public blockchains, with Ethereum emerging as the primary platform.</p> <p>BlackRock’s BUIDL fund, a tokenized money market fund on Ethereum, has grown to over $500 million since launching in March 2024<sup id="fnref:7" role="doc-noteref"><a href="#fn:7" class="footnote" rel="footnote">7</a></sup>. Franklin Templeton’s FOBXX fund manages approximately $400-780 million across multiple blockchains<sup id="fnref:8" role="doc-noteref"><a href="#fn:8" class="footnote" rel="footnote">8</a></sup>. Other examples include:</p> <ul> <li>Ondo Finance’s tokenized Treasury products (OUSG, USDY) with over $248 million on Solana alone<sup id="fnref:9" role="doc-noteref"><a href="#fn:9" class="footnote" rel="footnote">9</a></sup></li> <li>J.P. Morgan’s tokenized asset-backed securities</li> <li>Multiple corporate debt and private credit tokenization initiatives</li> </ul> <p>The total market for tokenized RWAs (excluding stablecoins) has reached approximately $26-27 billion<sup id="fnref:10" role="doc-noteref"><a href="#fn:10" class="footnote" rel="footnote">10</a></sup>. Boston Consulting Group projects this could grow to $16.1 trillion by 2030 - roughly 10% of global GDP<sup id="fnref:11" role="doc-noteref"><a href="#fn:11" class="footnote" rel="footnote">11</a></sup>. Even their conservative estimate represents a 50x increase from today’s levels.</p> <p>The economics driving this shift are straightforward. Tokenization enables 24/7 settlement instead of T+2, reduces operational costs, allows fractional ownership of previously illiquid assets, and creates a transparent, immutable record of ownership. For a large bank, these efficiencies could save hundreds of millions annually.</p> <p>By choosing Ethereum for products like BUIDL, institutions are making a bet on which infrastructure will matter. Each deployment strengthens Ethereum’s network effects and makes it more likely to become the default settlement layer.</p> <h2 id="valuing-a-global-settlement-layer">Valuing a Global Settlement Layer</h2> <p>If Ethereum becomes critical financial infrastructure, traditional valuation models become inadequate. The question becomes: what is a global, programmable settlement layer worth?</p> <p>For context, the combined market capitalization of NYSE and Nasdaq exceeds $53 trillion. SWIFT facilitates over $5 trillion in daily transaction value<sup id="fnref:12" role="doc-noteref"><a href="#fn:12" class="footnote" rel="footnote">12</a></sup>. Ethereum, which combines functions of an asset ledger, settlement network, and messaging layer, currently has a market cap of approximately $450 billion.</p> <p>The more relevant metric might be Total Value Secured (TVS) - the sum of all assets trusting the chain’s security. Ethereum’s DeFi ecosystem alone holds approximately $90-95 billion in total value locked, representing about 60% of all DeFi activity<sup id="fnref:13" role="doc-noteref"><a href="#fn:13" class="footnote" rel="footnote">13</a></sup>. As tokenized RWAs grow into the trillions, the network securing them must be valuable enough to deter attacks.</p> <p>Ethereum’s economic design creates direct links between usage and value. The Proof-of-Stake mechanism allows ETH holders to earn yields (currently around 3%) by staking. EIP-1559 burns a portion of every transaction fee, creating deflationary pressure as usage increases. These mechanisms mean increased network activity translates directly into value accrual for ETH holders.</p> <h2 id="why-open-networks-have-structural-advantages">Why Open Networks Have Structural Advantages</h2> <p>For global financial infrastructure, neutrality matters more than control. Private blockchains face an inherent trust problem - would Goldman Sachs build critical infrastructure on a J.P. Morgan-controlled network? Would any country trust another’s centralized system?</p> <p>Public blockchains solve this through credible neutrality. The rules are transparent, enforced by code, and can’t be arbitrarily changed. This creates a level playing field that encourages long-term investment and development.</p> <p>The real advantage is composability. Assets on Ethereum can be combined and recombined permissionlessly, like open-source code. This enables exponential innovation that closed systems can’t match. While private networks innovate linearly and top-down, Ethereum evolves exponentially and bottom-up.</p> <h2 id="institutional-capital-flows">Institutional Capital Flows</h2> <p>The theoretical case is being validated by capital flows. Prominent investors including Peter Thiel’s Founders Fund are making what the WSJ describes as a “broad play on Ethereum,” taking stakes in companies that accumulate ETH on their balance sheets<sup id="fnref:14" role="doc-noteref"><a href="#fn:14" class="footnote" rel="footnote">14</a></sup>.</p> <p>Corporate treasuries have purchased 1.26 million ETH in recent months - 1% of circulating supply - with Standard Chartered projecting they could eventually hold 10%<sup id="fnref:15" role="doc-noteref"><a href="#fn:15" class="footnote" rel="footnote">15</a></sup>. These firms are following the MicroStrategy playbook, using equity markets to accumulate crypto assets as primary reserves.</p> <p>U.S. spot Ethereum ETFs have attracted over $9 billion since launching<sup id="fnref:16" role="doc-noteref"><a href="#fn:16" class="footnote" rel="footnote">16</a></sup>. Unlike previous crypto cycles, this represents long-term strategic allocation rather than speculation.</p> <p>These flows are creating supply dynamics worth watching. Between ETF purchases, corporate accumulation, and staking (which locks up ETH), an increasing percentage of supply is becoming illiquid. When this meets growing demand from RWA settlement, basic economics suggests significant price appreciation.</p> <h2 id="risks-and-challenges">Risks and Challenges</h2> <p>This thesis faces real risks that could derail or delay it:</p> <p><strong>Competition</strong>: Other blockchains like Solana are growing rapidly. While Ethereum dominates with 60% of DeFi activity, this could change. Network effects are powerful but not insurmountable.</p> <p><strong>Technical limitations</strong>: Ethereum still faces scalability challenges. While Layer 2 solutions help, the base layer processes only 15-30 transactions per second. Major institutional adoption will require continued technical improvements.</p> <p><strong>Regulatory reversal</strong>: While current momentum is positive, political changes could shift regulatory stance. The framework remains incomplete, particularly around DeFi protocols and cross-border transactions.</p> <p><strong>Security concerns</strong>: Smart contract bugs and hacks remain common. A major security failure could damage institutional confidence. The technology is still maturing.</p> <p><strong>Macro factors</strong>: Rising interest rates or a broader market downturn could reduce appetite for digital assets. Correlation with traditional markets has increased.</p> <p><strong>Adoption friction</strong>: Despite improvements, blockchain technology remains complex for average users. Institutional adoption doesn’t guarantee retail follow-through.</p> <h2 id="conclusion">Conclusion</h2> <p>The convergence of proven stablecoin utility, regulatory clarity, institutional adoption, and technical maturation suggests Ethereum could become foundational financial infrastructure. This isn’t certain - technology transitions are messy and incumbents don’t give up easily.</p> <p>But the direction seems clear. Major financial institutions are building on Ethereum. Regulators are creating frameworks rather than barriers. The technology, while imperfect, works well enough for trillion-dollar transaction volumes.</p> <p>If this thesis plays out, we’re watching the early stages of a fundamental rewiring of global finance. The pipes are being laid now, even if the full transition takes decades. Ethereum’s position as the primary settlement layer for this new system would make it extraordinarily valuable - though predicting exact valuations or timelines would be speculation.</p> <p>The question isn’t whether blockchain technology will impact finance - that’s already happening. The question is which infrastructure wins and how completely the transition occurs. Ethereum has the lead, but the race is far from over.</p> <hr/> <div class="footnotes" role="doc-endnotes"> <ol> <li id="fn:1" role="doc-endnote"> <p><a href="https://defillama.com/stablecoins">Stablecoin Market Cap Data - DefiLlama</a> <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a></p> </li> <li id="fn:2" role="doc-endnote"> <p><a href="https://www.coingecko.com/en/categories/stablecoins">Stablecoins by Market Capitalization - CoinGecko</a> <a href="#fnref:2" class="reversefootnote" role="doc-backlink">&#8617;</a></p> </li> <li id="fn:3" role="doc-endnote"> <p><a href="https://tokenterminal.com/explorer/metrics/stablecoin-transfer-volume">Stablecoin Transfer Volume - Token Terminal</a> <a href="#fnref:3" class="reversefootnote" role="doc-backlink">&#8617;</a></p> </li> <li id="fn:4" role="doc-endnote"> <p><a href="https://www.ainvest.com/news/aave-surpasses-30-billion-total-locked-2507/">Aave Surpasses $30 Billion in Total Value Locked</a> <a href="#fnref:4" class="reversefootnote" role="doc-backlink">&#8617;</a></p> </li> <li id="fn:5" role="doc-endnote"> <p><a href="https://www.federalreserve.gov/newsevents/speech/waller20250820a.htm">Speech by Governor Waller on payments - Federal Reserve Board</a> <a href="#fnref:5" class="reversefootnote" role="doc-backlink">&#8617;</a> <a href="#fnref:5:1" class="reversefootnote" role="doc-backlink">&#8617;<sup>2</sup></a></p> </li> <li id="fn:6" role="doc-endnote"> <p><a href="https://www.whitehouse.gov/fact-sheets/2025/07/fact-sheet-president-donald-j-trump-signs-genius-act-into-law/">Fact Sheet: President Donald J. Trump Signs GENIUS Act into Law</a> <a href="#fnref:6" class="reversefootnote" role="doc-backlink">&#8617;</a></p> </li> <li id="fn:7" role="doc-endnote"> <p><a href="https://www.theblock.co/post/346237/blackrocks-buidl-first-to-cross-1-billion-mark-making-it-the-largest-tokenized-fund-tracking-onchain-treasuries">BlackRock’s BUIDL Tokenized Fund</a> <a href="#fnref:7" class="reversefootnote" role="doc-backlink">&#8617;</a></p> </li> <li id="fn:8" role="doc-endnote"> <p><a href="https://www.theblock.co/post/326575/franklin-templeton-expands-tokenized-money-market-fund-to-ethereum">Franklin Templeton Expands Tokenized Money Market Fund</a> <a href="#fnref:8" class="reversefootnote" role="doc-backlink">&#8617;</a></p> </li> <li id="fn:9" role="doc-endnote"> <p>Solana RWA Growth Outpaces Ethereum - The Defiant <a href="#fnref:9" class="reversefootnote" role="doc-backlink">&#8617;</a></p> </li> <li id="fn:10" role="doc-endnote"> <p><a href="https://app.rwa.xyz/">RWA Analytics - RWA.xyz</a> <a href="#fnref:10" class="reversefootnote" role="doc-backlink">&#8617;</a></p> </li> <li id="fn:11" role="doc-endnote"> <p><a href="https://web-assets.bcg.com/1e/a2/5b5f2b7e42dfad2cb3113a291222/on-chain-asset-tokenization.pdf">BCG Report: Asset Tokenization to Reach $16 Trillion by 2030</a> <a href="#fnref:11" class="reversefootnote" role="doc-backlink">&#8617;</a></p> </li> <li id="fn:12" role="doc-endnote"> <p><a href="https://www.investopedia.com/terms/s/swift.asp">Society for Worldwide Interbank Financial Telecommunication (SWIFT)</a> <a href="#fnref:12" class="reversefootnote" role="doc-backlink">&#8617;</a></p> </li> <li id="fn:13" role="doc-endnote"> <p><a href="https://defillama.com/chains">DeFi Total Value Locked by Chain</a> <a href="#fnref:13" class="reversefootnote" role="doc-backlink">&#8617;</a></p> </li> <li id="fn:14" role="doc-endnote"> <p><a href="https://www.wsj.com/finance/currencies/peter-thiel-ether-investors-39b37a98">Peter Thiel, Founders Fund Make Broad Play on Ethereum - WSJ</a> <a href="#fnref:14" class="reversefootnote" role="doc-backlink">&#8617;</a></p> </li> <li id="fn:15" role="doc-endnote"> <p><a href="https://www.reuters.com/business/standard-chartered-lifts-year-end-ether-forecast-7500-2025-08-13/">Standard Chartered lifts year-end ether forecast to $7,500 - Reuters</a> <a href="#fnref:15" class="reversefootnote" role="doc-backlink">&#8617;</a></p> </li> <li id="fn:16" role="doc-endnote"> <p><a href="https://coinmarketcap.com/etf/ethereum/">Ethereum ETF Tracker</a> <a href="#fnref:16" class="reversefootnote" role="doc-backlink">&#8617;</a></p> </li> </ol> </div>]]></content><author><name></name></author><category term="cryptocurrency"/><category term="blockchain"/><category term="ethereum"/><summary type="html"><![CDATA[6 trends that reinforce each other]]></summary></entry><entry><title type="html">What’s important</title><link href="https://yewjin.com/blog/2025/whats-important/" rel="alternate" type="text/html" title="What’s important"/><published>2025-08-11T08:00:00+00:00</published><updated>2025-08-11T08:00:00+00:00</updated><id>https://yewjin.com/blog/2025/whats-important</id><content type="html" xml:base="https://yewjin.com/blog/2025/whats-important/"><![CDATA[<p>It’s probably reasonable to think that my blocks of “Focus Time” and non-negotiable evenings to spend with family limit my career prospects.</p> <p>Maybe. But here’s what actually limited my career: spending years saying yes to everything that looked like “career growth” while my actual work - the creative stuff that energized me - and family time happened in stolen moments late at night (or even late night weekends!)</p> <p>Then I realized that I was living someone else’s definition of success. The “visibility projects”, the various committees I joined, the OKRs planning meetings that went nowhere. Meanwhile, I was exhausted and clearly not thriving, even burning out on multiple occasions as I’ve shared in previous posts.</p> <p>I now have three simple rules:</p> <ol> <li>If it consistently drains me, I stop</li> <li>If I’m doing it to impress someone, I question it</li> <li>If it doesn’t get calendar time, it doesn’t exist</li> </ol> <p>That last one might be interesting. Values without calendar blocks are just motivational poster material. Now my “focus” blocks are as real and important as meetings to execute on projects. My Friday afternoon mentoring sessions? Non-negotiable.</p> <p>Aligning with your values isn’t just about finding yourself - it’s about being disciplined enough to follow through. This is why scheduling yourself matters. When you treat your real priorities like actual appointments, something shifts. The gap between who you want to be and who you are starts closing.</p> <p>Try this for yourself: Block one hour for something you claim matters but never “have time” for. Guard it like a critical meeting with your VP. Because it is.</p> <p>Now if you’ll excuse me, it’s dinner time with the family…</p>]]></content><author><name></name></author><category term="personal-development"/><category term="work-life-balance"/><category term="mental-health"/><category term="productivity"/><category term="linkedin-repost"/><summary type="html"><![CDATA[Tips to live an aligned life]]></summary></entry><entry><title type="html">Uncomfortable truths about success</title><link href="https://yewjin.com/blog/2025/truth-about-success/" rel="alternate" type="text/html" title="Uncomfortable truths about success"/><published>2025-08-11T08:00:00+00:00</published><updated>2025-08-11T08:00:00+00:00</updated><id>https://yewjin.com/blog/2025/truth-about-success</id><content type="html" xml:base="https://yewjin.com/blog/2025/truth-about-success/"><![CDATA[<p>The uncomfortable truth about success? It requires courage to do what feels “wrong” by conventional standards - you have to swim against the current while others float downstream.</p> <p>Growing up in Asia, I was culturally nudged to blend in, wait for permission, and never appear too pushy. Yet every breakthrough I’ve witnessed came from someone willing to risk being called “weird” or “self-centered.” Thankfully I was always never good at listening. :-)</p> <p>The fear of judgment keeps us playing small. We soften our messages, downplay our achievements, and wait for the perfect moment that never comes. Meanwhile, those who succeed aren’t waiting - they’re being authentically themselves, even when it makes others uncomfortable.</p> <p>Real impact means advocating boldly for yourself and your team. It means asking the “obvious” question everyone else is too nervous to voice. It means choosing messy action over polished inaction, because perfection is indeed the enemy of the good or the inaction.</p> <p>Yes, setting firm boundaries will make some people call you difficult. Being driven will get you labeled as pushy or unreasonable. But here’s what I’ve learned: The same people who judge you today will praise your vision once you succeed. Stay humble through it all.</p> <p>Our biggest regrets won’t be the risks we took - they’ll be the moments we chose comfort over courage. The times we had something valuable to contribute but stayed quiet. The opportunities we let pass while we were still “preparing.”</p> <p>Your unique perspective isn’t something to hide. It’s the very thing that will set you apart.</p> <p>So remember:</p> <ul> <li>Be authentic, even if people find you odd - embrace the odd</li> <li>Prioritize action over perfection</li> <li>Advocate boldly for yourself and your team</li> <li>Be driven, curious, and firm</li> <li>Learn to be persuasive (even if you don’t know how yet - it’s the most impactful skill you’ll ever develop)</li> <li>Be the person to lead the change</li> </ul>]]></content><author><name></name></author><category term="personal-development"/><category term="success-mindset"/><category term="career"/><category term="linkedin-repost"/><summary type="html"><![CDATA[Success is about thinking and acting differently]]></summary></entry><entry><title type="html">FAANG Engineers Should Rethink Their Investment Strategy</title><link href="https://yewjin.com/blog/2025/faang-investment-strategy/" rel="alternate" type="text/html" title="FAANG Engineers Should Rethink Their Investment Strategy"/><published>2025-08-10T08:00:00+00:00</published><updated>2025-08-10T08:00:00+00:00</updated><id>https://yewjin.com/blog/2025/faang-investment-strategy</id><content type="html" xml:base="https://yewjin.com/blog/2025/faang-investment-strategy/"><![CDATA[<p><strong>TL;DR: A seven-figure W-2 is a great springboard - but unless you trade some of that paycheck for ownership, the ceiling stays capped.</strong></p> <p>Picture this: you’re a Microsoft Distinguished Engineer (L70) pulling in $2.7M a year. You’ve hit the IC summit. You dutifully max every tax shelter, funnel the rest into index funds, and - just as <a href="https://x.com/deedydas/status/1950741701439750167">Deedy Das’ comp slide</a> predicts - retire 30 years later with $13M.</p> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/ScreenShot-deedy-480.webp 480w,/assets/img/ScreenShot-deedy-800.webp 800w,/assets/img/ScreenShot-deedy-1400.webp 1400w," type="image/webp" sizes="95vw"/> <img src="/assets/img/ScreenShot-deedy.png" class="img-fluid rounded z-depth-1" width="50%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> <p>This is supposed to be the pinnacle of the “known” path to wealth. The safe, guaranteed route that every FAANG engineer aspires to.</p> <p>Now I’m not so sure about this path. I believe FAANG Engineers and other high-wage earners can do better.</p> <h2 id="the-bogleheads-gospel-at-work"><strong>The Bogleheads Gospel at Work</strong></h2> <p>Having spent many years in FAANG, I watched the same financial planning playbook repeat across internal forums and water cooler chat: max your 401(k), dump everything else into broad index funds, mega backdoor Roth, max out the HSA. The messaging was consistent - save 30% of your high six-figure or seven-figure income and you’ll hit $10M eventually. It’s the safe, responsible path.</p> <p>This conventional wisdom dominated my work circles. When RSUs hit like clockwork every month or quarter, the advice was always the same: diversify immediately into VTSAX. Anyone suggesting individual stocks or angel investing was met with links to that one study about how 90% of day traders lose money.</p> <p>But here’s what bothered me: we were all brilliant engineers solving complex problems at work, yet we’d outsource our entire financial future to Vanguard and follow the Bogleheads philosophy religiously. The mindset became “take your bets at work, don’t risk the golden goose.”</p> <h2 id="two-views-one-message"><strong>Two Views, One Message</strong></h2> <p>Before we dive into numbers, notice the hidden premise both camps share: it’s not how much you earn, it’s what you own. One path treats salary as an endgame; the other treats it as rocket fuel. The difference sounds philosophical, but the outcomes can be material.</p> <table> <thead> <tr> <th>Source</th> <th>What the math says</th> <th>What it really means</th> </tr> </thead> <tbody> <tr> <td>Microsoft comp leak</td> <td>Save 30% of L57-L70 pay → $13M in 30 years</td> <td>After taxes &amp; inflation: $5-7M in today’s dollars</td> </tr> <tr> <td><a href="https://www.financialsamurai.com/the-richest-people-are-not-index-fund-fanatics/">Financial Samurai article</a></td> <td>Typical $30M+ portfolios</td> <td>Only ~7% sits in index funds - the rest is business equity &amp; real estate</td> </tr> </tbody> </table> <p><strong>W-2 income - even seven figures - has a ceiling. Equity ownership breaks through it.</strong></p> <h3 id="rough-equivalents-to-microsoft-l70-distinguished-engineer"><strong>Rough equivalents to Microsoft L70 (“Distinguished Engineer”)</strong></h3> <p><em>Translation for the ladder-climbers: Deedy’s $13M projection assumes you’ll scale a summit 99%+ of engineers will never reach - and even if you do, the view isn’t quite as panoramic as you’d hoped. See levels.fyi</em></p> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/ScreenShot-levels-480.webp 480w,/assets/img/ScreenShot-levels-800.webp 800w,/assets/img/ScreenShot-levels-1400.webp 1400w," type="image/webp" sizes="95vw"/> <img src="/assets/img/ScreenShot-levels.png" class="img-fluid rounded z-depth-1" width="50%" height="auto" data-zoomable="" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"/> </picture> </figure> <table> <thead> <tr> <th>Company</th> <th>Level</th> <th>Title</th> </tr> </thead> <tbody> <tr> <td>Google</td> <td>L9</td> <td>Distinguished Engineer</td> </tr> <tr> <td>Meta</td> <td>E9</td> <td>Distinguished Engineer</td> </tr> <tr> <td>Amazon</td> <td>L10</td> <td>Distinguished Engineer</td> </tr> <tr> <td>Apple</td> <td>ICT7</td> <td>Distinguished Software Engineer</td> </tr> <tr> <td>NVIDIA</td> <td>T10</td> <td>Principal / Distinguished Engineer</td> </tr> </tbody> </table> <p><em>(Amazon’s IC ladder caps at L10, though some orgs use L11 “Principal DE”; Apple’s ICT7 sometimes overlaps principal-level work.)</em></p> <h2 id="why-27myear-still-isnt-enough"><strong>Why $2.7M/Year Still Isn’t Enough</strong></h2> <p><strong>W2 Tax Drag</strong>: Even in a bull market, the government is your biggest “co-founder.” Federal, FICA, and California state taxes shave off ~50¢ of every dollar before you ever hit Buy. And if California’s proposed 14.63% top bracket passes? Sharpen the blade.</p> <p><strong>Time-for-Money Trap</strong>: Your comp pauses when you take a sabbatical. Your roommate’s SaaS revenue or equity in a company doesn’t. The higher your salary, the scarier it feels to unplug - so you rarely do. I watched peers who could easily chubbyFIRE or leanFIRE stay chained to their desks because they couldn’t quite hit fatFIRE on index funds alone.</p> <p><strong>The Diversification Paradox</strong>: Your FAANG colleagues preach “don’t concentrate,” yet the richest people did exactly that - then diversified. Think Bezos keeping 90% Amazon until the yacht was paid for.</p> <p><strong>Bottom line: A supersized paycheck is defensive wealth. Ownership is offensive wealth. You need both, but only one can win a championship.</strong></p> <h2 id="the-selection-bias-problem"><strong>The Selection Bias Problem</strong></h2> <p>There’s probably selection bias at play here - the types who join and stay at FAANG already chose the “safe” path. We’re the ones who picked the stable job over the startup, the guaranteed comp over equity lottery tickets. Plus, when you’re working 60+ hours chasing that next promo, there’s barely mental energy left to research asymmetric bets.</p> <p>But that’s exactly the trap. We optimize for the wrong thing - maximizing W-2 income instead of maximizing ownership potential.</p> <h2 id="two-kinds-of-rich"><strong>Two Kinds of “Rich”</strong></h2> <p>We toss “rich” around like it’s binary, but lived experience says otherwise.</p> <p><strong>The Comfortably Rich ($1-10M)</strong></p> <ul> <li>Dual-income professionals, 20+ years in tech</li> <li>70%+ in index funds</li> <li>Nice house, Premium Economy flights</li> <li>Still fret over college tuition &amp; healthcare</li> </ul> <p><strong>The Transformational Rich ($10M+)</strong><br/> When you hit eight figures, what you own shifts radically - per Financial Samurai’s reader surveys:</p> <table> <thead> <tr> <th>Net worth</th> <th>Business equity</th> <th>Real estate</th> <th>Public stocks*</th> </tr> </thead> <tbody> <tr> <td>$30M</td> <td>30%</td> <td>30%</td> <td>20% (~7% index funds)</td> </tr> <tr> <td>$300M</td> <td>40%</td> <td>20%</td> <td>15%</td> </tr> </tbody> </table> <p>*Public-stock slices often include concentrated founder shares - not a three-fund portfolio.</p> <p><strong>Index funds preserve wealth; concentrated equity creates it</strong>. Nick Maggiulli’s “<a href="https://www.amazon.com/Wealth-Ladder-Proven-Strategies-Financial/dp/0593854039">Wealth Ladder</a>” framework puts this in stark perspective. He defines wealth in six levels, each a 10x jump from the last. Level 4 ($1M-$10M) gives you “travel freedom” - you can vacation wherever you want. Level 5 ($10M-$100M) provides “house freedom” - your dream home becomes possible without impacting your finances.</p> <p>Here’s the uncomfortable truth: even if you hit that Microsoft L70 comp and save religiously for 30 years, you’ll likely land squarely in Level 5 but just barely - most will end up in Level 4. The traditional FAANG-and-index-funds path has a ceiling, and that ceiling sits below Level 5.</p> <p>To break into Level 5 and beyond requires something different - concentrated ownership that can compound beyond what any salary, no matter how astronomical, can deliver. The gap between Level 4 and Level 5 isn’t bridged by saving another 10% or getting one more promotion. It’s bridged by ownership.</p> <p><strong>My Asymmetric Wealth Playbook (The 90/10 Rule)</strong>. Here’s the framework I wish someone had shown me earlier: if you’re earning FAANG-level comp, you can easily save your 30% for that “guaranteed” retirement AND still have serious capital left over for asymmetric bets.</p> <p><strong>The 90/10 Split:</strong></p> <ul> <li>90% goes to the traditional path (401k, index funds, mega backdoor Roth)</li> <li>10% of gross income goes to asymmetric bets</li> </ul> <p>At senior levels, that 10% could be $200K+ annually. Write $25K checks for angel investments, small rentals, or side projects. Over 30 years, that’s 80-100 bets. Even if all but one goes to zero and the last one goes 100x, that winner pays for everything. This is literally the VC model - power law returns where one unicorn makes the entire portfolio.</p> <p><strong>The Three Phases:</strong></p> <ol> <li> <p><strong>Fuel the Rocket</strong> - Keep W-2 cash flowing; save 30-60%. Think of this as stacking solid rocket boosters.</p> </li> <li> <p><strong>Light the Booster</strong> - Direct that 10% into asymmetric bets while salary covers the downside: angel checks, small rentals, nights-and-weekends SaaS.</p> </li> <li> <p><strong>Stabilize the Orbit</strong> - When something hits, harvest gains (QSBS, 1031 exchanges), then add index funds for wealth preservation so market swings don’t rip your solar panels off.</p> </li> </ol> <p>If every bet zeros, fine - I’m still on pace for $13M at 60. If even one wins, I punch through the income ceiling that salary alone could never breach.</p> <h2 id="real-world-patterns-financial-samurai-readers"><strong>Real-World Patterns (Financial Samurai Readers)</strong></h2> <p>Here are a few real-life examples shared by readers in the Financial Samurai community:</p> <table> <thead> <tr> <th>Starting point</th> <th>Concentrated move</th> <th>Outcome</th> </tr> </thead> <tbody> <tr> <td>Google L5</td> <td>$200K seed into a friend’s startup (Uber)</td> <td>$40M at IPO</td> </tr> <tr> <td>Meta PM</td> <td>Four Bay-Area rentals, 75% LTV</td> <td>$5M equity in 10 years</td> </tr> <tr> <td>Amazon SDE</td> <td>Side-hustle SaaS → $50K MRR</td> <td>Sold for $15M</td> </tr> </tbody> </table> <p><strong>Common thread: They kept the day job until upside was real. Salary was a risk-buffer, not the prize.</strong></p> <h2 id="the-psychology-of-swinging-big"><strong>The Psychology of Swinging Big</strong></h2> <p>The hard part isn’t finding opportunities - it’s rewiring a high-earning brain conditioned to equate stability with virtue. When RSUs hit like clockwork, risk looks irresponsible. But:</p> <ul> <li>Getting laid off at 55 with golden handcuffs? Also irresponsible.</li> <li>Missing the window to exercise creativity (and mistakes) while energy is high? Same.</li> <li>Outsourcing your richest years to Vanguard and hoping the Bogleheads were right? You get the idea.</li> </ul> <p><strong>Caveat:</strong> Asymmetry isn’t YOLO. It’s capped-downside, uncapped-upside. If a single busted deal torpedoes your retirement, you bet wrong. The beauty of the 90/10 split is that your downside is truly capped - worst case, you still retire with $10M+ from your index funds.</p> <h2 id="bottom-line"><strong>Bottom Line</strong></h2> <p>Index funds preserve wealth; concentrated equity creates it.</p> <p>A FAANG paycheck is rare rocket fuel - but only if you pour some of it into rockets you actually own. Otherwise you’re just leasing horsepower and calling it freedom.</p> <p>The conventional Bogleheads wisdom isn’t wrong - it’s just incomplete. Yes, max that 401(k). Yes, build that index fund foundation. But once the defensive lines are drawn, ask yourself:</p> <p><strong>What slice of my future is still on offense?</strong></p> <p>The answer - not your salary - will decide whether you retire comfortable or transformational.</p>]]></content><author><name></name></author><category term="finance"/><category term="financial-planning"/><category term="investment-strategy"/><category term="career"/><summary type="html"><![CDATA[Trade some paycheck for ownership]]></summary></entry><entry><title type="html">Be Unprofessional at Work</title><link href="https://yewjin.com/blog/2025/unprofessional/" rel="alternate" type="text/html" title="Be Unprofessional at Work"/><published>2025-06-28T08:00:00+00:00</published><updated>2025-06-28T08:00:00+00:00</updated><id>https://yewjin.com/blog/2025/unprofessional</id><content type="html" xml:base="https://yewjin.com/blog/2025/unprofessional/"><![CDATA[<p>People sometimes ask why I bring my own kettle to work and hold impromptu “tea times” for whoever is at the microkitchen. Or why I can’t resist sharing bad jokes in meetings (“Why did the hipster burn his mouth on the pizza? He ate it before it was cool.” 😫).</p> <p>The truth? I never bought into the idea that being professional meant being serious. In fact, when I joined Google years ago, it was practically encouraged to be not serious. So I never developed the mindset where we abandon laughter to appear mature. Meanwhile, I was the one stacking bottles at my desk or providing constant quips in meetings.</p> <p>Over time I have realized that my “unprofessional” approach is actually strategic. Here’s proof which I got via Google’s new AI Mode - When we laugh together, our brains release dopamine and oxytocin - the same chemicals that enhance problem-solving and build trust.</p> <p>That joke before a meeting? I’m helping everyone’s brains shift into creative problem-solving mode. Those spontaneous tea times? They build trust through tiny, consistent connections - building connections slowly over time. Interesting how what I did naturally might actually be a “strategic workplace culture activity” (that’s going into my performance review writeup).</p> <p>My philosophy is to create fun and not to force funny (because I would fail anyway). When your workplace becomes somewhere people want to be, laughter follows naturally.</p> <p>Here’s a challenge for you at work: Practice “Yes, and…” thinking. Accept reality (yes, this deadline is tight) AND find opportunity (this is our chance to change our product direction) AND YET we can do it with levity (“Great, more material for my next stand-up!”)</p> <p>Now if you’ll excuse me, I’m going to brew some earl grey tea… ☕</p>]]></content><author><name></name></author><category term="softwareengineering"/><category term="mentalhealth"/><category term="workplaceculture"/><summary type="html"><![CDATA[Creating connection through humor in the workplace]]></summary></entry><entry><title type="html">Doing Nothing is Something</title><link href="https://yewjin.com/blog/2025/do-nothing/" rel="alternate" type="text/html" title="Doing Nothing is Something"/><published>2025-06-28T08:00:00+00:00</published><updated>2025-06-28T08:00:00+00:00</updated><id>https://yewjin.com/blog/2025/do-nothing</id><content type="html" xml:base="https://yewjin.com/blog/2025/do-nothing/"><![CDATA[<p>Ever notice how “What are you working on?” is a default small talk opener?</p> <p>We’ve created a world where every moment needs to be monetized, optimized, or leveraged for future gain. Even our hobbies are hyperoptimized now.</p> <p>But here’s what I’m learning: The most valuable things in life resist commodification.</p> <ul> <li>That hour spent watching birds in your backyard? Not wasted.</li> <li>Hiking for the scenery? Not wasted.</li> <li>Meditating through the morning? Not wasted.</li> </ul> <p>When we only engage with what has “clear value,” we lose context. We mistake being busy for being meaningful.</p> <p>The real radical act might be refusing to optimize every experience. Sometimes the most productive thing you can do is sit still and notice what’s actually around you.</p> <p>Your attention is not a resource to be strip-mined. It’s how you experience being alive.</p> <p>Here’s how I’m reclaiming mine:</p> <ul> <li>Notice when I’m being baited by clickbait or outrage - then choose to scroll past (hopefully not this post though? 😂)</li> <li>Learn the names of trees and birds in my neighborhood</li> <li>Strike up conversations with neighbors without an agenda</li> <li>Challenge myself when I feel guilty for “unproductive” time</li> </ul> <p>Maybe it’s time we stopped asking “What’s the ROI?” and started asking “What makes me feel connected to the world?”</p> <p>Maybe I’m becoming the old man yelling at clouds. But sometimes the clouds need yelling at. 🤣</p>]]></content><author><name></name></author><category term="personal-development"/><category term="mental-health"/><category term="work-life-balance"/><category term="wellness"/><summary type="html"><![CDATA[Don't mistake being busy for being meaningful]]></summary></entry></feed>