<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://ayophilip.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://ayophilip.com/" rel="alternate" type="text/html" hreflang="en" /><updated>2026-06-17T04:33:35+00:00</updated><id>https://ayophilip.com/feed.xml</id><title type="html">Ayo Philip</title><subtitle>Explorations in analytics</subtitle><author><name>Philip</name></author><entry><title type="html">Fixing dbt Installation Errors on Python 3.14 Using uv</title><link href="https://ayophilip.com/newpost/" rel="alternate" type="text/html" title="Fixing dbt Installation Errors on Python 3.14 Using uv" /><published>2026-06-16T00:00:00+00:00</published><updated>2026-06-16T00:00:00+00:00</updated><id>https://ayophilip.com/newpost</id><content type="html" xml:base="https://ayophilip.com/newpost/"><![CDATA[<p>If you have recently updated your system to the latest Python release (Python 3.14), you might run into a brick wall trying to use <code class="language-plaintext highlighter-rouge">dbt</code>. A classic symptom is getting a error message the second you try running <code class="language-plaintext highlighter-rouge">dbt --version</code>:</p>

<h3 id="why-does-this-happen">Why Does This Happen?</h3>
<p>The modern data stack is very picky. <code class="language-plaintext highlighter-rouge">dbt-core</code> relies heavily on an underlying serialization library called <code class="language-plaintext highlighter-rouge">mashumaro</code>. Internal changes in Python 3.14 conflict with how older versions of this library look up schema fields, causing <code class="language-plaintext highlighter-rouge">dbt</code> to crash immediately.</p>

<p>Because data engineering frameworks (and their heavy database adapters like <code class="language-plaintext highlighter-rouge">dbt-snowflake</code>) require highly stable, pre-compiled binaries, running them on the bleeding edge of Python isn’t ideal. The cleanest fix is to downshift your project environment to a mature, supported version like Python 3.13 or 3.12.</p>

<p>Using <code class="language-plaintext highlighter-rouge">uv</code> (Astral’s lightning-fast Python package manager), we can cleanly handle this isolation without messing with your globally installed Python.</p>

<p>Here are the exact steps I took to solve this problem:</p>

<hr />

<h3 id="step-by-step-fix">Step-by-Step Fix</h3>

<ol>
  <li><strong>Clone your project or bootcamp repository:</strong> I was using a bootcamp repo.
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git clone https://github.com/ayophilip/course.git
<span class="nb">cd </span>course
</code></pre></div>    </div>
  </li>
  <li><strong>Install <code class="language-plaintext highlighter-rouge">uv</code> (if you haven’t already):</strong>
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>curl <span class="nt">-LsSf</span> https://astral.sh/uv/install.sh | sh
</code></pre></div>    </div>
  </li>
  <li><strong>Sync your project to a compatible Python version:</strong>
By passing the <code class="language-plaintext highlighter-rouge">--python</code> flag, <code class="language-plaintext highlighter-rouge">uv</code> will automatically fetch Python 3.13 in the background and use it to build a localized, isolated virtual environment (<code class="language-plaintext highlighter-rouge">.venv</code>) that satisfies your <code class="language-plaintext highlighter-rouge">pyproject.toml</code> constraints:
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>uv <span class="nb">sync</span> <span class="nt">--python</span> 3.13
</code></pre></div>    </div>
  </li>
  <li><strong>Clear your terminal’s path memory (Crucial if <code class="language-plaintext highlighter-rouge">dbt</code> is still not found):</strong>
If you try running a command and Zsh stubbornly yells <code class="language-plaintext highlighter-rouge">zsh: no such file or directory: /Users/[username]/.local/bin/dbt</code>, your shell is clinging to an old, broken path shortcut. Wipe its memory instantly with:
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">unalias </span>dbt
<span class="nb">hash</span> <span class="nt">-r</span>
</code></pre></div>    </div>
  </li>
  <li><strong>Activate your new virtual environment:</strong>
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">source</span> .venv/bin/activate
</code></pre></div>    </div>
  </li>
  <li><strong>Verify the installation:</strong>
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>dbt <span class="nt">--version</span>
</code></pre></div>    </div>
  </li>
</ol>

<p>Your <code class="language-plaintext highlighter-rouge">dbt</code> commands will now run smoothly without the <code class="language-plaintext highlighter-rouge">mashumaro</code> bug throwing a wrench into your workflow.</p>]]></content><author><name>Philip</name></author><summary type="html"><![CDATA[If you have recently updated your system to the latest Python release (Python 3.14), you might run into a brick wall trying to use dbt. A classic symptom is getting a error message the second you try running dbt --version: Why Does This Happen? The modern data stack is very picky. dbt-core relies heavily on an underlying serialization library called mashumaro. Internal changes in Python 3.14 conflict with how older versions of this library look up schema fields, causing dbt to crash immediately. Because data engineering frameworks (and their heavy database adapters like dbt-snowflake) require highly stable, pre-compiled binaries, running them on the bleeding edge of Python isn’t ideal. The cleanest fix is to downshift your project environment to a mature, supported version like Python 3.13 or 3.12. Using uv (Astral’s lightning-fast Python package manager), we can cleanly handle this isolation without messing with your globally installed Python. Here are the exact steps I took to solve this problem: Step-by-Step Fix Clone your project or bootcamp repository: I was using a bootcamp repo. git clone https://github.com/ayophilip/course.git cd course Install uv (if you haven’t already): curl -LsSf https://astral.sh/uv/install.sh | sh Sync your project to a compatible Python version: By passing the --python flag, uv will automatically fetch Python 3.13 in the background and use it to build a localized, isolated virtual environment (.venv) that satisfies your pyproject.toml constraints: uv sync --python 3.13 Clear your terminal’s path memory (Crucial if dbt is still not found): If you try running a command and Zsh stubbornly yells zsh: no such file or directory: /Users/[username]/.local/bin/dbt, your shell is clinging to an old, broken path shortcut. Wipe its memory instantly with: unalias dbt hash -r Activate your new virtual environment: source .venv/bin/activate Verify the installation: dbt --version Your dbt commands will now run smoothly without the mashumaro bug throwing a wrench into your workflow.]]></summary></entry><entry><title type="html">Carbon Based Lifeforms</title><link href="https://ayophilip.com/newpost/" rel="alternate" type="text/html" title="Carbon Based Lifeforms" /><published>2025-11-11T00:00:00+00:00</published><updated>2025-11-11T00:00:00+00:00</updated><id>https://ayophilip.com/newpost</id><content type="html" xml:base="https://ayophilip.com/newpost/"><![CDATA[<p>Music can heal. Music can touch lives. Music can ignite the crowd. Music can make one sober. Music can bring peace and calm. Classic music does this for me.</p>

<p>But then music can have some sinister agenda that makes you want to find it out. At first, it hits your ears and you feel something - something you cannot describe. Then you listen again and then start to follow the story, held by the hand of the sound, it takes you on a journey to a place unknown. You stop listening and then your brain keeps replaying the sound, you imagine yourself sitting in a place you have never been to. A cliff, a hammock, on a rock outside the woods, in the room full of nobody, at the edge of space or in a space rocket, outside an untarred road, beside the bedside of someone you don’t know, at the restaurant full of you, in the past, in the future, in between the past and the future but not in the present. You know know you are somewhere unknown but familiar. And this is what Carbon Based Lifeforms does to me.</p>

<p>I just want to listen on and on and on and on and on. Their sound is an art, a tech, a canvas, a structure, a geometry that holds me down. I like the wrestle, the wrestle to get on it. To overcome it and move past it but those sounds keep holding me down. Rather, I keep holding on to them, Its just not explainable. The music glides through my ears, then flows through whatever it is that connects them to my brain and then starts to do the work - the work of thinking, analyzing, humming, imagining, remembrance of the past, thinking about the future, doing nothing, taking it all in, traveling to the spot you have never dreamed of. The work of being human, of vulnerability, of being available. Am I high? No. Am I low? No. But I’m here while my mind is “getting a kick out of it”, as one comment on their youtube page reads.</p>

<p>Between the world and Me. Between art and sound. Between here and there. Up and down, high and low, inside and outside, is where I always am when I listen to Carbon Based Lifeforms. I honestly don’t know how to explain it. How to translate the intangible feeling to tangible words but CBL does this for me EVERY SINGLE TIME. It’s a privilege to enjoy this work of art, to be alive to have listened to this sounds, to be alive to experience this sounds from a living band, to know that they are not dead, to be rest assured that they will do more of this as with time. I’m grateful to God.</p>

<p>What do I do when I’m listening? Usually, I do nothing. I just listen with my eyes closed. But today, I listened while writing this. Yes I was was listening to CBL while writing about CBL, what else would have listened to.</p>

<p>I work with data, thats my day job and some parts of it can be monotonous. What do I do? I listen to CBL to transport me away from the task. I’m grounded enough to complete the task but I’m not on ground. It has transported me to that place I cannot describe. Since its mostly without lyrics, I also listen while I’m coding at home. I run long distances but I’ve not tried running with it. I’ll give it a shot someday.</p>]]></content><author><name>Philip</name></author><summary type="html"><![CDATA[Music can heal. Music can touch lives. Music can ignite the crowd. Music can make one sober. Music can bring peace and calm. Classic music does this for me. But then music can have some sinister agenda that makes you want to find it out. At first, it hits your ears and you feel something - something you cannot describe. Then you listen again and then start to follow the story, held by the hand of the sound, it takes you on a journey to a place unknown. You stop listening and then your brain keeps replaying the sound, you imagine yourself sitting in a place you have never been to. A cliff, a hammock, on a rock outside the woods, in the room full of nobody, at the edge of space or in a space rocket, outside an untarred road, beside the bedside of someone you don’t know, at the restaurant full of you, in the past, in the future, in between the past and the future but not in the present. You know know you are somewhere unknown but familiar. And this is what Carbon Based Lifeforms does to me. I just want to listen on and on and on and on and on. Their sound is an art, a tech, a canvas, a structure, a geometry that holds me down. I like the wrestle, the wrestle to get on it. To overcome it and move past it but those sounds keep holding me down. Rather, I keep holding on to them, Its just not explainable. The music glides through my ears, then flows through whatever it is that connects them to my brain and then starts to do the work - the work of thinking, analyzing, humming, imagining, remembrance of the past, thinking about the future, doing nothing, taking it all in, traveling to the spot you have never dreamed of. The work of being human, of vulnerability, of being available. Am I high? No. Am I low? No. But I’m here while my mind is “getting a kick out of it”, as one comment on their youtube page reads. Between the world and Me. Between art and sound. Between here and there. Up and down, high and low, inside and outside, is where I always am when I listen to Carbon Based Lifeforms. I honestly don’t know how to explain it. How to translate the intangible feeling to tangible words but CBL does this for me EVERY SINGLE TIME. It’s a privilege to enjoy this work of art, to be alive to have listened to this sounds, to be alive to experience this sounds from a living band, to know that they are not dead, to be rest assured that they will do more of this as with time. I’m grateful to God. What do I do when I’m listening? Usually, I do nothing. I just listen with my eyes closed. But today, I listened while writing this. Yes I was was listening to CBL while writing about CBL, what else would have listened to. I work with data, thats my day job and some parts of it can be monotonous. What do I do? I listen to CBL to transport me away from the task. I’m grounded enough to complete the task but I’m not on ground. It has transported me to that place I cannot describe. Since its mostly without lyrics, I also listen while I’m coding at home. I run long distances but I’ve not tried running with it. I’ll give it a shot someday.]]></summary></entry></feed>