<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="/feed.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2026-06-29T21:51:38+00:00</updated><id>/feed.xml</id><title type="html">Chausen</title><subtitle>Chausen development blog and portfolio</subtitle><entry><title type="html">Sweet Bloom - Kayu</title><link href="/coffee/2025/06/22/2025-kayu.html" rel="alternate" type="text/html" title="Sweet Bloom - Kayu" /><published>2025-06-22T16:12:00+00:00</published><updated>2025-06-22T16:12:00+00:00</updated><id>/coffee/2025/06/22/2025-kayu</id><content type="html" xml:base="/coffee/2025/06/22/2025-kayu.html"><![CDATA[<h1 id="coffee">Coffee</h1>
<pre><code class="language-coffee-attribs">Roaster: Sweet Bloom Coffee Roasters, Denver CO
Coffee: Kayu 
Country: Kenya
Origin: Murang'a
Process: Washed
Elevation: 1650 MSAL
Varietal: Ruiri
Producer: Various small plot growers
Flavor profile: Blood orange, assam, butterscotch
</code></pre>

<h1 id="brew-2-the-virtuous-pour">Brew 2: The Virtuous Pour</h1>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>- Method: pour over
- Beans: 29g
- Water: 500mL
- Grind: Medium-fine
</code></pre></div></div>

<h2 id="black">Black</h2>
<ul>
  <li>clean</li>
  <li>subtle, but full flavors</li>
  <li>assam comes through</li>
</ul>

<h2 id="cream">Cream</h2>
<ul>
  <li>rich toffee/butterscotch flavor goes well with the cream</li>
  <li>very smooth</li>
</ul>

<h1 id="brew-3-a-fair-cap">Brew 3: A Fair Cap</h1>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>- Method: cappuccino
- Beans: 18g
- Milk: 134g
</code></pre></div></div>
<ul>
  <li>delicious toffee flavor</li>
  <li>smooth &amp; creamy</li>
  <li>delightful</li>
  <li>very subtle tartness</li>
</ul>

<h1 id="brew-4">Brew 4</h1>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>- Method: pour over
- Beans: 29g
- Water: 506mL
- Grind: Medium-fine
- Brew length: 3m 39s
</code></pre></div></div>

<h2 id="black-1">Black</h2>
<ul>
  <li>nice flavor &amp; full mouth-feel</li>
  <li>assam flavor comes through</li>
</ul>

<h2 id="cream-1">Cream</h2>
<ul>
  <li>goes wonderfully with assam flavor</li>
</ul>]]></content><author><name></name></author><category term="coffee" /><summary type="html"><![CDATA[Coffee Roaster: Sweet Bloom Coffee Roasters, Denver CO Coffee: Kayu Country: Kenya Origin: Murang'a Process: Washed Elevation: 1650 MSAL Varietal: Ruiri Producer: Various small plot growers Flavor profile: Blood orange, assam, butterscotch]]></summary></entry><entry><title type="html">Huckleberry - Buenos Aires</title><link href="/coffee/2025/06/13/buenos-aires.html" rel="alternate" type="text/html" title="Huckleberry - Buenos Aires" /><published>2025-06-13T15:25:00+00:00</published><updated>2025-06-13T15:25:00+00:00</updated><id>/coffee/2025/06/13/buenos-aires</id><content type="html" xml:base="/coffee/2025/06/13/buenos-aires.html"><![CDATA[<h1 id="coffee">Coffee</h1>
<pre><code class="language-coffee-attribs">Roaster: Huckleberry Roasters, Denver CO
Coffee: Buenos Aires
Country: Colombia
Origin: Tolima
Process: Washed
Elevation: 1830 MASL
Varietal: Caturra
Producer: Israel Hernandez, Finca Buenos Aires
Flavor profile: Caramel, red apple, almond pastry, orange
</code></pre>

<p><em>Note</em>: I found the elevation listed for the producer’s Gesha varietal <a href="https://samplecoffee.com.au/coffee/finca-buenos-aires-israel-hernandez">here</a>.</p>

<p><img src="/assets/images/coffee/huckleberry/buenos-aires/IMG_2008.webp" alt="Buenos Aires coffee bag" width="50%" /></p>

<h1 id="beans">Beans</h1>
<ul>
  <li>On the smaller side of medium</li>
  <li>Rustic</li>
</ul>

<p><img src="/assets/images/coffee/huckleberry/buenos-aires/IMG_2009.webp" alt="Close up of the beans" width="50%" /></p>

<h1 id="brew-1">Brew 1</h1>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>- Method: pour over
- Beans: 29g
- Water: 500mL
- Grind: Medium-fine
</code></pre></div></div>
<p>Forgot to taste the coffee black. Adding it a bit of cream, I wasn’t super impressed:</p>
<ul>
  <li>smooth</li>
  <li>bit of bitterness</li>
  <li>low acidity</li>
  <li>earthy</li>
  <li>weak flavor profile</li>
  <li>reminds me of a diner coffee, but better</li>
</ul>

<div style="display: flex; flex-wrap: wrap; gap: 10px;">
  <img src="/assets/images/coffee/huckleberry/buenos-aires/IMG_2010.webp" alt="Beans ground for pour over" style="width: 30%;" />
  <img src="/assets/images/coffee/huckleberry/buenos-aires/IMG_2011.webp" alt="Grounds blooming" style="width: 30%;" />
  <img src="/assets/images/coffee/huckleberry/buenos-aires/IMG_2013.webp" alt="Pour over with cream" style="width: 30%;" />
</div>

<h1 id="brew-2">Brew 2</h1>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>- Method: pour over
- Beans: 29g
- Water: 505mL
- Grind: Medium-fine
- Time: 2m 55s
</code></pre></div></div>
<p>This time, I drank it black first and preferred it that way. The flavor came through more and there was some complexity to it.</p>

<h2 id="black">Black</h2>
<ul>
  <li>smooth mouth feel</li>
  <li>complex flavor notes; I can maybe see the flavors on the bag</li>
</ul>

<h2 id="with-cream">With Cream</h2>
<ul>
  <li>adds some richness</li>
  <li>cuts the strong flavors</li>
</ul>

<p><img src="/assets/images/coffee/huckleberry/buenos-aires/IMG_2015.webp" alt="Pour over, black" width="50%" /></p>

<h1 id="brew-3">Brew 3</h1>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>- Method: cappuccino
- Beans: 18g
- Milk: 128g
</code></pre></div></div>
<ul>
  <li>I enjoyed this one as a cappuccino</li>
  <li>Flavor came through nicely</li>
  <li>Still a bit of an earthy taste that I’m not sure I’m the biggest fan of</li>
</ul>

<p><img src="/assets/images/coffee/huckleberry/buenos-aires/IMG_2018.webp" alt="Cappuccino" width="50%" /></p>

<h1 id="final-thoughts">Final thoughts</h1>
<p>Overall, a solid bean, but not my favorite. In looking online to find out the elevation and varietal, I saw the same producer makes a Gesha that Huckleberry does an annual special release for. I would like to try that one.</p>

<blockquote>
  <p>6.0/10 beans</p>
</blockquote>]]></content><author><name></name></author><category term="coffee" /><summary type="html"><![CDATA[Coffee Roaster: Huckleberry Roasters, Denver CO Coffee: Buenos Aires Country: Colombia Origin: Tolima Process: Washed Elevation: 1830 MASL Varietal: Caturra Producer: Israel Hernandez, Finca Buenos Aires Flavor profile: Caramel, red apple, almond pastry, orange]]></summary></entry><entry><title type="html">Middle State Coffee - Libardo Pepicano</title><link href="/coffee/2025/06/05/libardo-pepicano.html" rel="alternate" type="text/html" title="Middle State Coffee - Libardo Pepicano" /><published>2025-06-05T22:25:00+00:00</published><updated>2025-06-05T22:25:00+00:00</updated><id>/coffee/2025/06/05/libardo-pepicano</id><content type="html" xml:base="/coffee/2025/06/05/libardo-pepicano.html"><![CDATA[<h1 id="coffee">Coffee</h1>
<pre><code class="language-coffee-attribs">Roaster: Middle State Coffee, Denver CO
Coffee: Libardo Pepicano
Country: Colombia
Origin: Huila
Process: Washed
Elevation: 1700-1900 MASL
Varietal: Tabi
Flavor profile: Blood orange, red plum, candied mango, complex
</code></pre>

<p><img src="/assets/images/coffee/middle-state/libardo-pepicano/IMG_1975.webp" alt="Libardo Pepicano coffee bag" width="50%" /></p>

<h1 id="beans">Beans</h1>
<ul>
  <li>On the smaller side of medium</li>
  <li>Fragrant</li>
  <li>Rustic</li>
  <li>Beautiful caramel brown</li>
</ul>

<p><img src="/assets/images/coffee/middle-state/libardo-pepicano/IMG_1981.webp" alt="Close up of the beans" width="50%" /></p>

<h1 id="first-day-drinking">First day drinking</h1>
<p>Drinking as a cappuccino, I don’t taste the complex fruity notes listed on the bag. It’s a delicious, balanced cup–very smooth. But the flavor notes are quite subtle and if anything I would describe them as being nutty or chocolatey.</p>

<div style="display: flex; flex-wrap: wrap; gap: 10px;">
  <img src="/assets/images/coffee/middle-state/libardo-pepicano/IMG_1982.webp" alt="Ground up beans" style="width: 30%;" />
  <img src="/assets/images/coffee/middle-state/libardo-pepicano/IMG_1987.webp" alt="Double shot" style="width: 30%;" />
  <img src="/assets/images/coffee/middle-state/libardo-pepicano/IMG_1991.webp" alt="Cappuccino" style="width: 30%;" />
</div>

<h1 id="second-day-drinking">Second day drinking</h1>
<p>Drinking as a cappuccino again. I tasted slightly fruity notes this time, but overall it was mostly smooth and chocolatey.</p>

<h1 id="third-day-drinking---virtuous-brew">Third day drinking - Virtuous Brew</h1>
<p>I brewed using the virtuous method today–pour over. First, I tried it black:</p>
<ul>
  <li>Stronger fruit notes
    <ul>
      <li>I could definitely taste the blood orange</li>
    </ul>
  </li>
  <li>The ‘complexity’ came through stronger</li>
  <li>Crisp and tart</li>
</ul>

<p>Next, added a little cream:</p>
<ul>
  <li>Still taste fruity notes, though they are bit muted</li>
  <li>Cuts the tartness/crispness and adds a bit of smoothness</li>
</ul>

<h1 id="final-thoughts">Final thoughts</h1>
<p>Overall, a solid bean. I recently have been more into strong, complex fruit flavors that punch through the richness of a cappuccino (usually, I like a smooth, rich breakfast style). I felt this one felt a bit short in that regard. The pour over was solid, but again, nothing special.</p>

<blockquote>
  <p>6.5/10 beans</p>
</blockquote>]]></content><author><name></name></author><category term="coffee" /><summary type="html"><![CDATA[Coffee Roaster: Middle State Coffee, Denver CO Coffee: Libardo Pepicano Country: Colombia Origin: Huila Process: Washed Elevation: 1700-1900 MASL Varietal: Tabi Flavor profile: Blood orange, red plum, candied mango, complex]]></summary></entry><entry><title type="html">Getting started with game dev</title><link href="/game-dev/2023/09/22/getting-started-with-game-dev.html" rel="alternate" type="text/html" title="Getting started with game dev" /><published>2023-09-22T02:22:26+00:00</published><updated>2023-09-22T02:22:26+00:00</updated><id>/game-dev/2023/09/22/getting-started-with-game-dev</id><content type="html" xml:base="/game-dev/2023/09/22/getting-started-with-game-dev.html"><![CDATA[<p>I’ve been recently trying to get into game development, and I’m starting with the course CS50g on EdX. I’m currently on the 6th project (Angry Birds). So far, I think it’s a great introduction. Each lecture, the instructor goes over the code for a simple game and introduces new topics along the way (sprite sheets, collision handling, tweens, etc.). Then, you add new features to the game that was covered. For example, the Zelda lecture had you add pots, along with the ability to pick them up and throw them at enemes.</p>

<p>So far, the course has used the Lua language with the <code class="language-plaintext highlighter-rouge">LÖVE</code> framework. My understanding is that it’s pretty barebones, which makes it a good tool for teaching. However, Love2 is more than just a teaching tool–it’s commonly used for prototyping games and has also been used to build some published titles. The lecture on Angry Birds was the first one to introduce a major library in <code class="language-plaintext highlighter-rouge">Box2d</code>, a popular 2D physics framework. Some simple ones were introduced earlier:</p>
<ul>
  <li><a href="https://github.com/Ulydev/push/blob/master/push.lua">push</a></li>
  <li><a href="https://github.com/vrld/hump/blob/master/class.lua">hump (really just class.lua)</a></li>
  <li><a href="https://github.com/airstruck/knife">knife</a></li>
</ul>

<p>It feels exciting moving from doing everything manually to something that easily provides very interesting mechanics. Colton (the instructor) says as much in the lecture; I couldn’t help but laugh at this quote 😂:</p>
<blockquote>
  <p>It’s a good like sort of segway from the…sort of abstract, for lack of a better word example that we used earlier, and sort of merges it into the realm of, ‘how can we make something fun with this?’</p>
</blockquote>

<p>The game, lecture, and assignment all seem to be pretty simple/short in this one, because Box2d is introduced as something big and new–but the usage is really simple. I’ve watched the lecture and am going to begin the assignment. Here are some notes I took:</p>

<h1 id="box2d">Box2d</h1>
<p>A C++ library that is used all over (Unity uses it). Lua provides a wrapper for it.
https://www.iforce2d.net/b2dtut/introduction</p>

<ul>
  <li>Main concept is the “World”, which is the container for simulation</li>
  <li>The world keeps track of “Bodies” and applies all the physics to them (gravity, collisions, etc.)
    <ul>
      <li>Has position, velocity</li>
    </ul>
  </li>
  <li>Fixtures allow you attach a shape to a body, allowing interaction with other bodies
    <ul>
      <li>influences collisions</li>
      <li>have densities, friction, restitution (bounciness)</li>
    </ul>
  </li>
</ul>

<h2 id="world">World</h2>
<ul>
  <li>Top-level container Box2d exposes to be populated with bodies/fixtures, and then run the simulation</li>
</ul>

<h2 id="bodies">Bodies</h2>

<h3 id="types">Types</h3>
<ul>
  <li>Static: cannot be moved, but can influence other dynamic bodies</li>
  <li>Dynamic: influenced by other bodies</li>
  <li>Kinematic: can move and influence other bodies, but is not influenced itself</li>
</ul>

<h2 id="fixtures">Fixtures</h2>
<ul>
  <li>Several shapes a provided</li>
</ul>

<h2 id="collision-callbacks">Collision Callbacks</h2>
<ul>
  <li>You pass your functions for the different callbacks to the world</li>
  <li>The collisions happen between the fixtures; not the bodies</li>
  <li>That means there is a single entry point; you have to check which fixtures collided to get different behavior</li>
  <li>The way we can distinguish between fixtures is with UserData, which we set on the fixtures and then can get in the callback</li>
  <li>Don’t delete or destroy anything in your collision callbacks; mark it as destroyed and wait until the callback completes</li>
</ul>

<h3 id="4-types">4 types</h3>
<ul>
  <li><code class="language-plaintext highlighter-rouge">beginContact</code></li>
  <li><code class="language-plaintext highlighter-rouge">endContact</code></li>
  <li><code class="language-plaintext highlighter-rouge">preSolve</code></li>
  <li><code class="language-plaintext highlighter-rouge">postSolve</code></li>
</ul>

<p>You register them like this:</p>

<figure class="highlight"><pre><code class="language-lua" data-lang="lua"><span class="n">self</span><span class="p">.</span><span class="n">world</span><span class="p">:</span><span class="n">setCallbacks</span><span class="p">(</span><span class="n">beginContact</span><span class="p">,</span> <span class="n">endContact</span><span class="p">,</span> <span class="n">preSolve</span><span class="p">,</span> <span class="n">postSolve</span></code></pre></figure>]]></content><author><name></name></author><category term="game-dev" /><summary type="html"><![CDATA[I’ve been recently trying to get into game development, and I’m starting with the course CS50g on EdX. I’m currently on the 6th project (Angry Birds). So far, I think it’s a great introduction. Each lecture, the instructor goes over the code for a simple game and introduces new topics along the way (sprite sheets, collision handling, tweens, etc.). Then, you add new features to the game that was covered. For example, the Zelda lecture had you add pots, along with the ability to pick them up and throw them at enemes.]]></summary></entry></feed>