<?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-05-17T08:58:48+00:00</updated><id>/feed.xml</id><title type="html">CatInBowl</title><subtitle>Software Engineer by Profession | Product Builder by Passion</subtitle><entry><title type="html">Systemizing Creativity</title><link href="/blog/systemizing-creativity" rel="alternate" type="text/html" title="Systemizing Creativity" /><published>2026-03-10T00:00:00+00:00</published><updated>2026-03-10T00:00:00+00:00</updated><id>/blog/systemizing-creativity</id><content type="html" xml:base="/blog/systemizing-creativity"><![CDATA[<h2 id="the-intersection-of-engineering-and-design">The Intersection of Engineering and Design</h2>

<p>When we think about building robust systems, we often envision strict constraints, uncompromising schemas, and rigid architectures. Conversely, when we discuss high-fidelity user experience design, we imagine fluid animations, intuitive micro-interactions, and boundless creativity.</p>

<p>At first glance, these two worlds seem inherently opposed. However, when we apply systems engineering principles to design, something remarkable happens: <strong>we unlock scaleable creativity</strong>.</p>

<h3 id="standardizing-design-tokens">Standardizing Design Tokens</h3>

<p>The foundation of any design system starts with tokens. By defining our colors, typography, and spacing as fundamental constants, we ensure consistency without sacrificing aesthetic quality.</p>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"colors"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"accent"</span><span class="p">:</span><span class="w"> </span><span class="s2">"#2DD4BF"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"background"</span><span class="p">:</span><span class="w"> </span><span class="s2">"#020609"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"cardBg"</span><span class="p">:</span><span class="w"> </span><span class="s2">"#0d1117"</span><span class="w">
  </span><span class="p">},</span><span class="w">
  </span><span class="nl">"typography"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"heading"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Outfit, sans-serif"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"body"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Inter, sans-serif"</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h3 id="prototyping-in-high-fidelity">Prototyping in High-Fidelity</h3>

<p>Once our base tokens are established, we can begin building more complex components. A <code class="language-plaintext highlighter-rouge">rate-card</code> or an <code class="language-plaintext highlighter-rouge">author-card</code> isn’t just a rectangular box with text; it’s a meticulously crafted element designed to convey information efficiently and beautifully.</p>

<blockquote>
  <p>“A great user experience doesn’t happen by accident. It’s the result of rigorous engineering working invisibly behind a beautiful facade.”</p>
</blockquote>

<p>By structuring our CSS and our component hierarchy to reflect the mental models of both the designer and the engineer, we dramatically reduce the friction of <em>Design-to-Code</em> bridging. We end up with codebases that are maintainable, performant, and, above all, delightful for our users.</p>

<h3 id="conclusion">Conclusion</h3>

<p>Bridging the gap between engineering and design requires a shared language. Whether it’s through Tailwind utility classes, custom CSS variables, or reusable component structures, building systems thoughtfully is what allows our creativity to truly scale.</p>]]></content><author><name>Azmi Arzaki</name></author><category term="Engineering" /><summary type="html"><![CDATA[How strict typing can actually unleash creative freedom in UI development. Explore the intersection of rigorous code and fluid design principles in a modern stack.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="/assets/images/distributed_monitor.png" /><media:content medium="image" url="/assets/images/distributed_monitor.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">How Much Is Too Much To Delegate Thinking To LLM As Software Engineer</title><link href="/blog/a" rel="alternate" type="text/html" title="How Much Is Too Much To Delegate Thinking To LLM As Software Engineer" /><published>2016-03-30T00:00:00+00:00</published><updated>2016-03-30T00:00:00+00:00</updated><id>/blog/A</id><content type="html" xml:base="/blog/a"><![CDATA[<p>I was recently developing a hybrid app with Expo framework. It supposed to run on IOS, Android, and Web. I extensively vibe coding it. For some reasons I decided to use plain sql instead of ORM or query builder. I organize my sql commands in files. As a vibe coder I ask AI to import the sql file and execute it. At first, instead of importing the file, it copy the command from the file and pasted it in the logic code. Not so DRY. And after several attempts of arguing with the AI it finally did as I intended.</p>

<p>But it was not really as I wanted. The AI used FileSystem plugin to load the file. While it will work on IOS and Android, it wont work on Web. Up until this point, we can clearly see that AI wouldn’t take technical consideration when implementing some features. Well maybe it just me that not good enough at prompting. But remember that AI is a language model. It means that you have to put your though into words in order for AI to understand what you really mean. Whilst considering the specs is done mentally when we use our brain instead of delegating it to AI.</p>

<p>The most dangerous thing is, would you know the technical dept the AI produce if you yourself do not know the technical specs? And how would you know it if you delegate the huge amount of your thinking to AI?</p>

<p>At the end of the day, software engineer is not just about coding. It is about comprehending the specs and designing a system that can satisfy the specs as much as possible.</p>

<p>I am not saying not to use AI in your workflow. But please use it responsibly and cautiously.</p>]]></content><author><name>CatInBowl</name></author><category term="Engineering" /><summary type="html"><![CDATA[How strict typing can actually unleash creative freedom in UI development. Explore the intersection of rigorous code and fluid design principles in a modern stack.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="/assets/images/distributed_monitor.png" /><media:content medium="image" url="/assets/images/distributed_monitor.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>