<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Tech Cafe - Blog</title>
    <subtitle>Dev adventures, epic bugs, tiny wins, and the occasional meltdown.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://golden-fox.dev/tags/blog/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://golden-fox.dev"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2025-05-21T00:00:00+00:00</updated>
    <id>https://golden-fox.dev/tags/blog/atom.xml</id>
    <entry xml:lang="en">
        <title>How I started Blender!</title>
        <published>2025-05-21T00:00:00+00:00</published>
        <updated>2025-05-21T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Aakriti Agarwal
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://golden-fox.dev/blog/blender-donut/"/>
        <id>https://golden-fox.dev/blog/blender-donut/</id>
        
        <content type="html" xml:base="https://golden-fox.dev/blog/blender-donut/">&lt;p&gt;In April 2024, I came across a cool animation made in Blender and thought, ‘Wow! That’s crazy. I want to learn how to do that too’. So, I started my journey&lt;&#x2F;p&gt;
&lt;p&gt;At first, I was really confused because there were tons of buttons, shortcuts, tabs and a cube in the middle.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Pro tip:&lt;&#x2F;strong&gt; Use &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;hollisbrown.github.io&#x2F;blendershortcuts&#x2F;&quot;&gt;&lt;strong&gt;Blender Shortcuts&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt; cheatsheet as it helped me remember the keys.&lt;&#x2F;p&gt;
&lt;p&gt;(Shortcut key: X to delete the default cube)&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;golden-fox.dev&#x2F;blog&#x2F;blender-donut&#x2F;images&#x2F;Default-Cube.png&quot; alt=&quot;Default-Cube&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;So, I did what everyone does when they’re new and lost – I searched for “Blender tutorial for beginners” and came across the &lt;em&gt;iconic donut&lt;&#x2F;em&gt; tutorial by &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;@blenderguru&#x2F;featured&quot;&gt;&lt;strong&gt;BlenderGuru&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt;. If you want to learn Blender, start by making a donut 🍩. Most people begin their Blender journey here.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;what-i-learned-throughout-the-tutorial-series&quot;&gt;What I Learned Throughout the Tutorial Series&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;part-1-modeling-the-donut-base&quot;&gt;Part 1: Modeling the Donut Base&lt;&#x2F;h3&gt;
&lt;p&gt;I started by doing what every Blender user does, that is to delete the default cube.Then I added a torus and began learning how to navigate in 3D space.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;golden-fox.dev&#x2F;blog&#x2F;blender-donut&#x2F;images&#x2F;Torus-Mesh.png&quot; alt=&quot;Torus-Mesh&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;part-2-adding-realistic-details&quot;&gt;Part 2: Adding Realistic Details&lt;&#x2F;h3&gt;
&lt;p&gt;I started adding little bumps and imperfections to make my donut look like it came from a real bakery instead of a computer. I found this part really satisfying once I got used to the sculpting brushes.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;part-3-creating-icing&quot;&gt;Part 3: Creating Icing&lt;&#x2F;h3&gt;
&lt;p&gt;This part blew my mind. I duplicated my donut, scaled it up slightly and used Blender’s modifier system to create icing that actually dripped down the sides using a sculpting brush grab.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;part-4-making-it-look-like-real-food&quot;&gt;Part 4: Making It Look Like Real Food&lt;&#x2F;h3&gt;
&lt;p&gt;I learned to create realistic surfaces using the shader editor. The donut got texture and the icing became glossy.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;part-5-adding-sprinkles&quot;&gt;Part 5: Adding Sprinkles&lt;&#x2F;h3&gt;
&lt;p&gt;I created different types of sprinkles - long and round ones. I used geometry nodes for this. The setup involved using “Distribute Points on Faces” to scatter points across the icing surface, then “Instance on Points” to place the sprinkle geometry. I controlled the sprinkle density with a named attribute and used Collection Info to randomly choose between different sprinkle shapes. The geometry nodes gave me precise control over placement, rotation and scale variation etc.&lt;&#x2F;p&gt;
&lt;p&gt;Geometry Node for Long Sprinkles:
&lt;img src=&quot;https:&#x2F;&#x2F;golden-fox.dev&#x2F;blog&#x2F;blender-donut&#x2F;images&#x2F;Long_Sprinkles.png&quot; alt=&quot;Long Sprinkles&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Geometry Node for Round Sprinkles:
&lt;img src=&quot;https:&#x2F;&#x2F;golden-fox.dev&#x2F;blog&#x2F;blender-donut&#x2F;images&#x2F;Short_Sprinkles.png&quot; alt=&quot;Round Sprinkles&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;part-6-making-the-background-and-adding-textures&quot;&gt;Part 6: Making the Background and Adding Textures&lt;&#x2F;h3&gt;
&lt;p&gt;Once the donut was done, I added a simple plane for the tabletop and textured it with a marble material using a Principled BSDF shader for realism. Then, I modeled a plate for the donut and applied a shiny ceramic material with subtle imperfections.&lt;&#x2F;p&gt;
&lt;p&gt;I duplicated the donuts a few times and stacked them on the plate. The combination of textures and stacked donuts really brought everything together.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;golden-fox.dev&#x2F;blog&#x2F;blender-donut&#x2F;images&#x2F;Donut-Plate.png&quot; alt=&quot;Donut Plate&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;After this I set up the lighting to make the donut look good and positioned the camera and added depth of field to blur the background.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;part-8-creating-my-final-render&quot;&gt;Part 8: Creating My Final Render&lt;&#x2F;h3&gt;
&lt;p&gt;The last step was generating the final image. I learned about render settings, balancing quality with render time and made some basic color corrections to enhance the scene.&lt;&#x2F;p&gt;
&lt;p&gt;I used Cycles with GPU compute for faster rendering. After adjusting the settings, I rendered the scene and was finally able to see my donut in all its glory.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Final Result!&lt;&#x2F;strong&gt;
&lt;img src=&quot;https:&#x2F;&#x2F;golden-fox.dev&#x2F;blog&#x2F;blender-donut&#x2F;images&#x2F;Donut.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;I had so much fun creating it, and I’m so happy with the final result. I never expected it would turn out this well. I’ll be spending this week getting back to learning more about Blender, and I’ll be sharing my progress soon.&lt;&#x2F;p&gt;
&lt;p&gt;I hope you enjoyed this blog post :)&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>My Nand to Tetris Journey</title>
        <published>2025-05-09T00:00:00+00:00</published>
        <updated>2025-05-09T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Aakriti Agarwal
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://golden-fox.dev/blog/nand-to-tetris/"/>
        <id>https://golden-fox.dev/blog/nand-to-tetris/</id>
        
        <content type="html" xml:base="https://golden-fox.dev/blog/nand-to-tetris/">&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;&#x2F;h2&gt;
&lt;p&gt;In March 2025, I signed up for the Coursera course &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.coursera.org&#x2F;learn&#x2F;build-a-computer&quot;&gt;&lt;strong&gt;From Nand to Tetris: Building a Modern Computer&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt; by Shimon Schocken and Noam Nisan. I thought “Why not learn how computers work from the basics?” Spoiler:- It’s not as easy as it sounds. The course promised to turn me into a computer-building wizard, and I got pretty far completing four out of six projects.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;logic-gates-from-nand&quot;&gt;Logic Gates from NAND&lt;&#x2F;h2&gt;
&lt;p&gt;The course starts with a simple idea: using only the elementary NAND gate, you can construct all other logic gates necessary for a modern computer. This concept blew my mind, the idea that complex systems ultimately reduce to this simple building block.&lt;&#x2F;p&gt;
&lt;p&gt;I started by implementing basic logic gates in the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nand2tetris.github.io&#x2F;web-ide&#x2F;chip&#x2F;&quot;&gt;&lt;strong&gt;NAND2Tetris Hardware Simulator&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt; using hdl:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;NOT gate&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color-scheme: light dark; color: light-dark(#657B83, #839496); background-color: light-dark(#FDF6E3, #002B36);&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; CHIP Not {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    IN in;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    OUT out;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    PARTS:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    Nand (a = in, b = in, out = out);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;AND gate&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color-scheme: light dark; color: light-dark(#657B83, #839496); background-color: light-dark(#FDF6E3, #002B36);&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;CHIP And {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    IN a, b;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    OUT out;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    PARTS:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    Nand (a = a, b = b, out = aNandb);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    Not (in = aNandb, out = out);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;OR gate&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color-scheme: light dark; color: light-dark(#657B83, #839496); background-color: light-dark(#FDF6E3, #002B36);&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;CHIP Or {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    IN a, b;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    OUT out;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    PARTS:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    Not (in = a, out = nota);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    Not (in = b, out = notb);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    And (a = nota, b = notb, out = and);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    Not (in = and, out = out);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;XOR gate&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color-scheme: light dark; color: light-dark(#657B83, #839496); background-color: light-dark(#FDF6E3, #002B36);&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;CHIP Xor {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    IN a, b;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    OUT out;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    PARTS:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    Not (in = a, out = nota);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    Not (in = b, out = notb);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    And (a = a, b = notb, out = temp1);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    And (a = nota, b = b, out = temp2);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    Or (a = temp1, b = temp2, out = out);&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;Pro Tip&lt;&#x2F;strong&gt;: Use &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.nandgame.com&#x2F;&quot;&gt;&lt;strong&gt;NAND Game&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt;! to understand how theses gates are formed using NAND.&lt;&#x2F;p&gt;
&lt;p&gt;As It transforms theoretical concepts into visuals that make implementation much easier than it seems.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;from-gates-to-chips&quot;&gt;From Gates to Chips&lt;&#x2F;h2&gt;
&lt;p&gt;Once I had a grip on basic gates, it was time to get serious and build some chips. Enter the realm of multiplexers and demultiplexers. These allow you to:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;MUX (Multiplexer): Choose which input signal to use.&lt;&#x2F;li&gt;
&lt;li&gt;DMUX (Demultiplexer): Route signals to different outputs based on selection bits.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;I thought the difficulty would skyrocket when I started with the 16-bit and multi-way chips, but once I built the first 16-bit chip, the rest were a breeze, just a bit of grunt work, really.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Arithmetic Components&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Next came the exciting part which is creating chips that can actually compute! I implemented:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Half Adder (adding two bits)&lt;&#x2F;li&gt;
&lt;li&gt;Full Adder (adding three bits with carry)&lt;&#x2F;li&gt;
&lt;li&gt;Multi-bit Adder (for 16-bit )&lt;&#x2F;li&gt;
&lt;li&gt;The ALU (Arithmetic Logic Unit)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;from-bits-to-storage&quot;&gt;From Bits to Storage&lt;&#x2F;h2&gt;
&lt;p&gt;The next phase took me into the realm of computer memory, where I designed:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Registers: Flip-flop based storage units that hold data temporarily&lt;&#x2F;li&gt;
&lt;li&gt;RAM8: A small 8-register memory unit&lt;&#x2F;li&gt;
&lt;li&gt;RAM64: A memory unit of 64-register&lt;&#x2F;li&gt;
&lt;li&gt;RAM512, RAM4K and RAM16K: Increasing memory units&lt;&#x2F;li&gt;
&lt;li&gt;Program Counter (PC)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;This hierarchy of memory components taught me how computers are organized.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;challenges-and-limitations&quot;&gt;Challenges and Limitations&lt;&#x2F;h2&gt;
&lt;p&gt;While I successfully completed four projects, the two modules focused on assembly language programming were… let’s just say, less successful. I realized I’m a visual learner who prefers tools like simulators. Still, the struggle was part of the fun. Sort of.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;resources-that-helped-me&quot;&gt;Resources That Helped Me&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;The  NAND game (seriously, don’t skip it!)&lt;&#x2F;li&gt;
&lt;li&gt;Course forums where students swapped war stories about their challenges (misery loves company).&lt;&#x2F;li&gt;
&lt;li&gt;Drawing chips designs on paper before implementation&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;&#x2F;h2&gt;
&lt;p&gt;While I didn’t complete all six projects, the four I finished gave me a solid foundation in computer architecture that I’ll build upon.&lt;&#x2F;p&gt;
&lt;p&gt;If you’re curious about how computers really work from the ground up, I highly recommend this course. It’s tough, but incredibly rewarding. After all, who wouldn’t want to say, “I built a computer from scratch with just a NAND gate”?&lt;&#x2F;p&gt;
</content>
        
    </entry>
</feed>
