<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
      <title>Tech Cafe</title>
      <link>https://golden-fox.dev</link>
      <description>Dev adventures, epic bugs, tiny wins, and the occasional meltdown.</description>
      <generator>Zola</generator>
      <language>en</language>
      <atom:link href="https://golden-fox.dev/rss.xml" rel="self" type="application/rss+xml"/>
      <lastBuildDate>Wed, 26 Aug 2026 00:00:00 +0000</lastBuildDate>
      <item>
          <title>Git Archaeologist</title>
          <pubDate>Wed, 26 Aug 2026 00:00:00 +0000</pubDate>
          <author>Aakriti Agarwal</author>
          <link>https://golden-fox.dev/projects/git-archaeologist/</link>
          <guid>https://golden-fox.dev/projects/git-archaeologist/</guid>
          <description xml:base="https://golden-fox.dev/projects/git-archaeologist/">&lt;p&gt;Git’s forensic tools are surgical. &lt;code&gt;git log -S&lt;&#x2F;code&gt;, &lt;code&gt;git blame&lt;&#x2F;code&gt; and &lt;code&gt;git bisect&lt;&#x2F;code&gt; each answer
a precise question you already know how to ask. I wanted to know whether a model that can
hold an entire repository history in context answers a different kind of question, the
diffuse kind where the answer lives across many commits at once.&lt;&#x2F;p&gt;
&lt;p&gt;So I built a harness: ten questions against one real repository, with ground truth
verified by running &lt;code&gt;git&lt;&#x2F;code&gt; rather than by trusting my memory. Three of the ten were
negative controls, asking about things that never happened, because a model that agrees
with every premise you hand it is not doing archaeology.&lt;&#x2F;p&gt;
&lt;p&gt;The model answered 10&#x2F;10 correctly, including all three controls, and cited 103 commit
SHAs of which 102 resolve to real commits. It fabricated nothing. It was also between 150
and 4,000 times slower than Git on the questions Git can answer.&lt;&#x2F;p&gt;
&lt;p&gt;The result I did not expect was a ceiling. Datasette is a mid-sized project, nine years
and 3,406 commits, and its full history is roughly four million tokens, about four times
the window. I stripped docs, lockfiles, images and vendored assets, then capped diff
sizes, and never got within twice the budget. The bulk is not a few large blobs, it is
2,663 commits of real source diff. The run used the largest chronological prefix that fit,
which was the first 31%.&lt;&#x2F;p&gt;
&lt;p&gt;So “put the whole history in context” has a size limit that nobody advertises, and for any
project with real history you are already past it. Worth measuring before you design
around it.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Built with:&lt;&#x2F;strong&gt; Python, Git, OpenRouter&lt;&#x2F;p&gt;
&lt;p&gt;Repo is private for now.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>golden-fox.dev</title>
          <pubDate>Sun, 09 Aug 2026 00:00:00 +0000</pubDate>
          <author>Aakriti Agarwal</author>
          <link>https://golden-fox.dev/projects/golden-fox-dev/</link>
          <guid>https://golden-fox.dev/projects/golden-fox-dev/</guid>
          <description xml:base="https://golden-fox.dev/projects/golden-fox-dev/">&lt;p&gt;The site you are reading. Built with &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.getzola.org&quot;&gt;Zola&lt;&#x2F;a&gt; on the Duckquill
theme, then forked where I needed it to behave differently: a merged blog and TIL feed on
the homepage, a vertical timeline for hackathons, and a listing that drops the tag filter.&lt;&#x2F;p&gt;
&lt;p&gt;The parts I am most pleased with are invisible. A strict Content Security Policy that
forced me to self-host every font and icon, so nothing loads from a third party. A theme
that derives its whole palette from one accent colour using &lt;code&gt;color-mix()&lt;&#x2F;code&gt;. And a pinned
Zola version, because 0.23 upgraded Tera and broke the template syntax the theme relies on.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Built with:&lt;&#x2F;strong&gt; Zola, Tera templates, SCSS, Caddy on a Hetzner box&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>A theme can build its whole palette from one colour</title>
          <pubDate>Sun, 09 Aug 2026 00:00:00 +0000</pubDate>
          <author>Aakriti Agarwal</author>
          <link>https://golden-fox.dev/til/accent-color-tinting/</link>
          <guid>https://golden-fox.dev/til/accent-color-tinting/</guid>
          <description xml:base="https://golden-fox.dev/til/accent-color-tinting/">&lt;p&gt;I was picking a theme today and went digging through Duckquill’s Sass, expecting to find
a big list of hardcoded colours. Instead I found this:&lt;&#x2F;p&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;scss&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#93A1A1, #586E75);font-style: italic;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#93A1A1, #586E75);font-style: italic;&quot;&gt; light mode&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;--bg-color&lt;&#x2F;span&gt;&lt;span&gt;: color-mix(in srgb, var(&lt;&#x2F;span&gt;&lt;span&gt;--accent-color&lt;&#x2F;span&gt;&lt;span&gt;) 20%, white)&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#93A1A1, #586E75);font-style: italic;&quot;&gt;&#x2F;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#93A1A1, #586E75);font-style: italic;&quot;&gt; dark mode&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;--bg-color&lt;&#x2F;span&gt;&lt;span&gt;: color-mix(in srgb, var(&lt;&#x2F;span&gt;&lt;span&gt;--accent-color&lt;&#x2F;span&gt;&lt;span&gt;) 10%, black)&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The background isn’t a colour you set. It’s your accent colour &lt;em&gt;mixed into&lt;&#x2F;em&gt; white or
black with plain CSS. So setting one hex value in the config:&lt;&#x2F;p&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;toml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#268BD2, #268BD2);&quot;&gt;accent_color&lt;&#x2F;span&gt;&lt;span&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt;#e8a0bf&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;gives me a soft pink-tinted off-white background for free, with no second variable and no
fiddling to make them match.&lt;&#x2F;p&gt;
&lt;p&gt;That’s the trick behind why so many cozy-looking sites use a cream background instead of
&lt;code&gt;#ffffff&lt;&#x2F;code&gt;. Pure white feels clinical. A warm off-white feels like paper. And &lt;code&gt;color-mix()&lt;&#x2F;code&gt;
means you get it automatically without ever picking the cream by hand.&lt;&#x2F;p&gt;
&lt;p&gt;The other neat bit: the text colour is computed in &lt;code&gt;oklch&lt;&#x2F;code&gt; from the same accent, so
contrast stays readable no matter what hue I pick. I can’t easily choose a colour that
breaks the site.&lt;&#x2F;p&gt;
&lt;p&gt;Small thing, but it reframed how I think about theming. One input, whole palette.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>XSS is way simpler (and scarier) than I thought</title>
          <pubDate>Sun, 28 Jun 2026 00:00:00 +0000</pubDate>
          <author>Aakriti Agarwal</author>
          <link>https://golden-fox.dev/til/xss/</link>
          <guid>https://golden-fox.dev/til/xss/</guid>
          <description xml:base="https://golden-fox.dev/til/xss/">&lt;p&gt;So today I came across Cross Site Scripting or XSS which honestly sounds like a Counter Strike mode but is actually one of the oldest and most annoying vulnerabilities on the web. Once I understood it, I felt a little unsafe about every comment section I’ve ever used lol.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;what-is-it-actually&quot;&gt;What is it actually&lt;&#x2F;h2&gt;
&lt;p&gt;XSS is when a website lets someone sneak their own javascript into a page, and your browser just… runs it. no questions asked, zero trust issues, straight up “sure i’ll run that.” The browser assumes any JavaScript that’s part of the page came from the website itself, so if the site accidentally treats user input as code instead of text, it’ll execute it. It’s not movie hacker stuff, it’s just a website not checking what a user typed before showing it to everyone else.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;example-that-made-it-click&quot;&gt;Example that made it click&lt;&#x2F;h2&gt;
&lt;p&gt;if a site does this to show your comment:&lt;&#x2F;p&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;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#268BD2, #268BD2);&quot;&gt;element&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#268BD2, #268BD2);&quot;&gt;innerHTML&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#859900, #859900);&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#268BD2, #268BD2);&quot;&gt; userComment&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;and someone comments:&lt;&#x2F;p&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;html&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#93A1A1, #586E75);&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#268BD2, #268BD2);&quot;&gt;script&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#93A1A1, #586E75);&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#268BD2, #268BD2);&quot;&gt;alert&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt;u got XSSed&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#93A1A1, #586E75);&quot;&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#93A1A1, #586E75);&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#268BD2, #268BD2);&quot;&gt;script&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#93A1A1, #586E75);&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;now everyone who opens the page gets a random popup. swap the alert for something stealing session data or cookies that aren’t protected with HttpOnly and it stops being funny real quick.&lt;&#x2F;p&gt;
&lt;p&gt;the fix is one line:&lt;&#x2F;p&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;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#268BD2, #268BD2);&quot;&gt;element&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#268BD2, #268BD2);&quot;&gt;textContent&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#859900, #859900);&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#268BD2, #268BD2);&quot;&gt; userComment&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;this makes the browser treat it as text, not code. that’s genuinely most of the fix for simple cases.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-incident-that-made-me-go-wait-what&quot;&gt;The incident that made me go “wait, WHAT”&lt;&#x2F;h2&gt;
&lt;p&gt;In 2005, some guy named &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Samy_Kamkar&quot;&gt;Samy Kamkar&lt;&#x2F;a&gt; found a stored XSS bug on MySpace and turned it into a self replicating JavaScript worm. Anyone who viewed his profile automatically added him as a friend, got the phrase “but most of all, Samy is my hero” added to their profile and unknowingly copied the worm to their own profile too.&lt;&#x2F;p&gt;
&lt;p&gt;result: &lt;strong&gt;over 1 million infected profiles in under 20 hours.&lt;&#x2F;strong&gt; MySpace had to shut the whole site down. he also got an FBI visit after, so respect the execution, not the outcome.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-takeaway&quot;&gt;The takeaway&lt;&#x2F;h2&gt;
&lt;p&gt;Any time you build something that displays user input comments, usernames, profile bios, search results you’re one careless innerHTML away from turning text into executable code. It’s a tiny mistake with surprisingly big consequences and I finally understand why “never trust user input” is one of the first rules of web security.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;try-it-yourself&quot;&gt;Try it yourself&lt;&#x2F;h2&gt;
&lt;p&gt;If you want to actually &lt;em&gt;see&lt;&#x2F;em&gt; XSS in action, check out &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;xss-game.appspot.com&quot;&gt;The XSS Game by Google&lt;&#x2F;a&gt;. It walks you through real scenarios in a safe environment.
If you’re curious, here are the solution for the XSS Game levels: https:&#x2F;&#x2F;pastebin.com&#x2F;hv0h73eC&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>mini-api-gateway</title>
          <pubDate>Wed, 17 Jun 2026 00:00:00 +0000</pubDate>
          <author>Aakriti Agarwal</author>
          <link>https://golden-fox.dev/projects/mini-api-gateway/</link>
          <guid>https://golden-fox.dev/projects/mini-api-gateway/</guid>
          <description xml:base="https://golden-fox.dev/projects/mini-api-gateway/">&lt;p&gt;An API gateway sits in front of your services doing the unglamorous work: checking who is
calling, deciding whether they are allowed through, then passing the request along. I kept
seeing the term without really knowing what was inside one, so I built a small one.&lt;&#x2F;p&gt;
&lt;p&gt;A request to &lt;code&gt;&#x2F;proxy&lt;&#x2F;code&gt; hits a filter that reads the &lt;code&gt;x-api-key&lt;&#x2F;code&gt; header and asks a rate
limiter whether this caller has any budget left. The limiter keeps a counter in Redis
against that key, set to expire after 60 seconds, so five requests a minute get through
and the sixth gets a 429. Anything that survives the filter is forwarded upstream.&lt;&#x2F;p&gt;
&lt;p&gt;Letting Redis do the remembering was the part that clicked. A counter that expires on its
own is a far simpler thing to reason about than one you have to remember to clean up, and
the sliding window falls out of the expiry for free.&lt;&#x2F;p&gt;
&lt;p&gt;Still small. One route, one upstream. Next up is validating the key properly rather than
only rate limiting on it, plus an atomic counter so concurrent requests cannot slip past
the window.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Built with:&lt;&#x2F;strong&gt; Java 21, Spring Boot, Redis, Maven&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Midlands Regional Hackathon</title>
          <pubDate>Mon, 11 May 2026 00:00:00 +0000</pubDate>
          <author>Aakriti Agarwal</author>
          <link>https://golden-fox.dev/hackathons/midlands-regional-2026/</link>
          <guid>https://golden-fox.dev/hackathons/midlands-regional-2026/</guid>
          <description xml:base="https://golden-fox.dev/hackathons/midlands-regional-2026/"></description>
      </item>
      <item>
          <title>MuchoMundo</title>
          <pubDate>Mon, 11 May 2026 00:00:00 +0000</pubDate>
          <author>Aakriti Agarwal</author>
          <link>https://golden-fox.dev/projects/muchomundo/</link>
          <guid>https://golden-fox.dev/projects/muchomundo/</guid>
          <description xml:base="https://golden-fox.dev/projects/muchomundo/">&lt;p&gt;International students run a different job hunt to everyone else. Sponsorship is uncertain,
interview norms are unfamiliar, and most job boards are not built with any of that in mind.
MuchoMundo was our answer to that at the Microsoft Embrace x Midlands Regional Hackathon.&lt;&#x2F;p&gt;
&lt;p&gt;Two things sat at the centre of it. A filter that ranks roles by how likely they are to
carry visa sponsorship, so you stop spending evenings on applications that were never
going to work. And an interview chatbot that adapts to different cultural contexts, because
“tell me about yourself” means something different depending on where you learned to answer it.&lt;&#x2F;p&gt;
&lt;p&gt;Built and pitched to judges inside a day. We finished in the top 4.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Built with:&lt;&#x2F;strong&gt; HTML, CSS, JavaScript, Azure OpenAI&lt;&#x2F;p&gt;
&lt;p&gt;See the &lt;a href=&quot;https:&#x2F;&#x2F;golden-fox.dev&#x2F;hackathons&#x2F;&quot;&gt;hackathon timeline&lt;&#x2F;a&gt; for more.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Black Women&#x27;s Health Hackathon</title>
          <pubDate>Sun, 08 Mar 2026 00:00:00 +0000</pubDate>
          <author>Aakriti Agarwal</author>
          <link>https://golden-fox.dev/hackathons/black-womens-health-2026/</link>
          <guid>https://golden-fox.dev/hackathons/black-womens-health-2026/</guid>
          <description xml:base="https://golden-fox.dev/hackathons/black-womens-health-2026/"></description>
      </item>
      <item>
          <title>Hack With SWiCS</title>
          <pubDate>Sat, 21 Feb 2026 00:00:00 +0000</pubDate>
          <author>Aakriti Agarwal</author>
          <link>https://golden-fox.dev/hackathons/hack-with-swics-2026/</link>
          <guid>https://golden-fox.dev/hackathons/hack-with-swics-2026/</guid>
          <description xml:base="https://golden-fox.dev/hackathons/hack-with-swics-2026/"></description>
      </item>
      <item>
          <title>Stuck</title>
          <pubDate>Sat, 21 Feb 2026 00:00:00 +0000</pubDate>
          <author>Aakriti Agarwal</author>
          <link>https://golden-fox.dev/projects/stuck/</link>
          <guid>https://golden-fox.dev/projects/stuck/</guid>
          <description xml:base="https://golden-fox.dev/projects/stuck/">&lt;p&gt;A reporting tool for problems you would rather not put your name to. You drop a pin on a
map or use your current location, pick a severity, and file it. No account, no login,
nothing tying the report back to you.&lt;&#x2F;p&gt;
&lt;p&gt;The anonymity was the interesting constraint. No accounts means no way to rate limit a
user, no moderation queue tied to an identity, and no way to follow up on a report. Every
feature we wanted had to survive that, and a few did not make it.&lt;&#x2F;p&gt;
&lt;p&gt;Reports render as coloured markers on a Leaflet map, one colour per severity, so the shape
of a problem area is visible at a glance.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Built with:&lt;&#x2F;strong&gt; Flask, SQLAlchemy, SQLite, Leaflet, OpenStreetMap&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;wuphy&#x2F;accessibility-reporter&quot;&gt;Team repo&lt;&#x2F;a&gt; (built with three teammates at Hack With SWiCS)&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Managing Multiple Git Identities on One Machine</title>
          <pubDate>Thu, 05 Feb 2026 00:00:00 +0000</pubDate>
          <author>Aakriti Agarwal</author>
          <link>https://golden-fox.dev/til/git-identities/</link>
          <guid>https://golden-fox.dev/til/git-identities/</guid>
          <description xml:base="https://golden-fox.dev/til/git-identities/">&lt;p&gt;&lt;strong&gt;TL;DR: Want separate Git emails per project? Just don’t use &lt;code&gt;--global&lt;&#x2F;code&gt;.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;The Problem:&lt;&#x2F;strong&gt; So I ran into this situation where I needed one project folder to use my university credentials while keeping my personal Gmail for literally everything else in VS Code. Classic identity crisis, but make it Git.&lt;&#x2F;p&gt;
&lt;p&gt;Honestly thought this would be a nightmare to set up, but Git actually makes it pretty straightforward once you know the trick.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;solution-local-vs-global-git-config&quot;&gt;Solution: Local vs Global Git Config&lt;&#x2F;h3&gt;
&lt;p&gt;Here is the thing I wish someone had told me earlier: &lt;strong&gt;stop using &lt;code&gt;--global&lt;&#x2F;code&gt; for everything.&lt;&#x2F;strong&gt; I know it is tempting (one command and you are done!), but global configs apply to every single repository on your machine. Not ideal when you are trying to keep things separate.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;For personal identity  (global):&lt;&#x2F;strong&gt;&lt;&#x2F;p&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;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#268BD2, #268BD2);&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt; config&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#CB4B16, #CB4B16);&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#CB4B16, #CB4B16);&quot;&gt;-global&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt; user.name&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt;personal username&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#268BD2, #268BD2);&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt; config&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#CB4B16, #CB4B16);&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#CB4B16, #CB4B16);&quot;&gt;-global&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt; user.email&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt;personal email&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;For uni project (local: run this inside that specific folder):&lt;&#x2F;strong&gt;&lt;&#x2F;p&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;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#268BD2, #268BD2);&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt; config&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt; user.name&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt;uni username&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#268BD2, #268BD2);&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt; config&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt; user.email&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt;uni email&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;See the difference? No &lt;code&gt;--global&lt;&#x2F;code&gt; flag means the config only applies to that one repository. Problem  solved.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Paranoid and want to verify?&lt;&#x2F;strong&gt; I found this super helpful command to check which email was actually used for your last commit:&lt;&#x2F;p&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;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: light-dark(#268BD2, #268BD2);&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt; show&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#CB4B16, #CB4B16);&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#CB4B16, #CB4B16);&quot;&gt;s&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#CB4B16, #CB4B16);&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#CB4B16, #CB4B16);&quot;&gt;-format=&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt;Author: %ae%nCommitter: %ce&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: light-dark(#2AA198, #2AA198);&quot;&gt; HEAD&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This shows you both the author and committer email from your most recent commit. Saved me from some potential embarrassment when I wasn’t sure if I had configured things correctly!&lt;&#x2F;p&gt;
&lt;h3 id=&quot;bonus-learning-git-reset-flags-proceed-with-caution&quot;&gt;Bonus Learning: Git Reset Flags (Proceed with Caution)&lt;&#x2F;h3&gt;
&lt;p&gt;I also learned about &lt;code&gt;git reset&lt;&#x2F;code&gt; and honestly it is Kind of terrifying.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;git reset --soft HEAD~1&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt;: Removes your last commit but keeps all your changes staged. Perfect for those “oops, typo in the commit message” moments. Very forgiving, 10&#x2F;10 would use again.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;git reset --hard HEAD~1&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt;: Deletes the last commit AND all your changes. Like completely GONE. Forever. No take-backs. (Yeah… never gonna try using &lt;code&gt;--hard&lt;&#x2F;code&gt; unless I am absolutely certain and have sacrificed the appropriate offerings to the Git gods.)&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;strong&gt;Real talk:&lt;&#x2F;strong&gt; Always double-check before using &lt;code&gt;--hard&lt;&#x2F;code&gt;. Your past self worked hard on that code, and your future self will definitely not appreciate having to rewrite everything at midnight.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>The Vim Journey Begins (because I chose pain)</title>
          <pubDate>Mon, 02 Feb 2026 00:00:00 +0000</pubDate>
          <author>Aakriti Agarwal</author>
          <link>https://golden-fox.dev/til/vim-journey/</link>
          <guid>https://golden-fox.dev/til/vim-journey/</guid>
          <description xml:base="https://golden-fox.dev/til/vim-journey/">&lt;p&gt;So, I watched &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;missing.csail.mit.edu&#x2F;2020&#x2F;editors&#x2F;&quot;&gt;MIT’s Lecture 3&lt;&#x2F;a&gt; on Vim today and honestly way better than the other tutorials I watched. Also found out there is this whole &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Editor_war&quot;&gt;“Editor War”&lt;&#x2F;a&gt; thing between Vim people and VS Code people. Apparently Vim wins if you live in the terminal, VS Code wins everywhere else.&lt;&#x2F;p&gt;
&lt;p&gt;Today’s achievements:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;hjkl&lt;&#x2F;code&gt; for moving around (my arrow keys are no longer needed)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;:wq&lt;&#x2F;code&gt; to exit (got it first try, which means I am already better than like 50% of people)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;w&lt;&#x2F;code&gt; and &lt;code&gt;b&lt;&#x2F;code&gt; to jump between words like I know what I’m doing&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;dd&lt;&#x2F;code&gt; to delete entire lines (dangerously satisfying)&lt;&#x2F;li&gt;
&lt;li&gt;Everything is just keyboard letters somehow? No mouse needed, which is lowkey CRAZYY!&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;So yeahh, Vim is hard. Everyone says it gets good eventually (hopefully). I am choosing to believe them for now but the plan is to just stay consistent so I don’t quit by Week 2.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Current status:&lt;&#x2F;strong&gt; Can navigate, exit and can’t do much else&lt;br &#x2F;&gt;
&lt;strong&gt;Future status:&lt;&#x2F;strong&gt; Editing files at the speed of light&lt;&#x2F;p&gt;
&lt;p&gt;I Also started &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;vim-adventures.com&#x2F;&quot;&gt;Vim Adventures&lt;&#x2F;a&gt; to actually practice these commands it is basically a game where you can’t progress unless you use Vim keybindings. Way more fun than just reading docs.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Summer of Making: I Procrastinated Everything and Still Built 5 Projects</title>
          <pubDate>Tue, 14 Oct 2025 00:00:00 +0000</pubDate>
          <author>Aakriti Agarwal</author>
          <link>https://golden-fox.dev/blog/summer-of-making/</link>
          <guid>https://golden-fox.dev/blog/summer-of-making/</guid>
          <description xml:base="https://golden-fox.dev/blog/summer-of-making/">&lt;p&gt;&lt;em&gt;How I survived Summer of Making while also preparing for university (and procrastinating more than I would like to admit)&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-why-not-that-changed-everything&quot;&gt;The “Why Not?” That Changed Everything&lt;&#x2F;h2&gt;
&lt;p&gt;This summer, I joined Summer of Making by Hack Club and GitHub. The deal: build stuff, ship it, earn shells (literal currency) and  buy cool things. I am not ashamed the shells got me lol.&lt;&#x2F;p&gt;
&lt;p&gt;My reasoning for signing up? “Why not?” That’s it. No plan just  curiosity. This was my first time doing anything like this and honestly, Best impulsive decision ever.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Plot twist&lt;&#x2F;strong&gt;: this wasn’t exactly a free summer. I was stuck in that stressful period between high school and university you know, where you’re simultaneously excited and terrified while drowning in paperwork. University prep, existential dread, the usual. So I knew going in I wouldn’t have tons of time for this.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Here’s the honest truth though&lt;&#x2F;strong&gt;: it wasn’t just university prep eating my time. Let’s be real: I procrastinated. A lot. Like, a concerning amount. You know those days where you tell yourself “I will be productive today” and then somehow it is 6 PM and you have accomplished nothing except watching series and shows. Yeah, those happened. Frequently.&lt;&#x2F;p&gt;
&lt;p&gt;The program ran from mid June to September (extended because everyone got addicted) and despite not being nearly as productive as I could have been, I actually made things.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-projects-five-things-i-actually-shipped-i-am-shocked-too&quot;&gt;The Projects: Five Things I Actually Shipped (I am Shocked Too)&lt;&#x2F;h2&gt;
&lt;p&gt;Plot twist: I built five projects. FIVE. Which sounds impressive until you remember I spent half the summer binge watching series. But they exist, they work (mostly), so let’s go.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;project-1-rock-paper-scissors-the-oops&quot;&gt;Project 1: Rock Paper Scissors – The Oops&lt;&#x2F;h3&gt;
&lt;p&gt;Started with a Rock Paper Scissors game. HTML, CSS, JavaScript. Emoji choices because I have taste. Best of three against the computer. Simple stuff.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;golden-fox.dev&#x2F;blog&#x2F;summer-of-making&#x2F;images&#x2F;rps.png&quot; alt=&quot;rps&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;The catch? I didn’t realize we had to build things during the program, not submit pre made stuff.  But hey, at least the emojis were adorable, and we learn from our mistakes (supposedly).&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;golden-fox07.github.io&#x2F;Rock-Paper-Scissors&#x2F;&quot;&gt;&lt;code&gt;Try the demo (spoiler: you&#x27;ll lose) →&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h3 id=&quot;project-2-anime-quote-generator-how-did-this-work&quot;&gt;Project #2: Anime Quote Generator – “How Did This Work?”&lt;&#x2F;h3&gt;
&lt;p&gt;Built an anime quote generator in React. Keyword: rookie React skills. I genuinely don’t know how I made this work. Looking back at the code is like reading hieroglyphics written by my past self.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;golden-fox.dev&#x2F;blog&#x2F;summer-of-making&#x2F;images&#x2F;anime-quotes.png&quot; alt=&quot;anime-quotes&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;But it works! Your favorite anime quotes, delivered with maximum chaos. Just like my development process. Chef’s kiss.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;golden-fox07.github.io&#x2F;quote-generator&#x2F;&quot;&gt;&lt;code&gt;Get your daily dose of anime wisdom here →&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h3 id=&quot;project-3-pong-war-lowkey-proud-of-it&quot;&gt;Project #3: Pong War – lowkey proud of it&lt;&#x2F;h3&gt;
&lt;p&gt;Decided to build Pong in Godot 4. But make it harder for no reason. Zero external assets. No sprites, no sounds, no fonts. Just raw code.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;video 
  controls 
  src=&quot;images&#x2F;pong-war-demo.mp4&quot;
  title=&quot;Pong War Demo&quot; 
  style=&quot;width:100%; max-width:800px; border-radius:8px; display:block; margin:1rem auto;&quot;&gt;
&lt;&#x2F;video&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Why? Probably avoiding university paperwork. But it was weirdly fun making things difficult for myself. Pure code, pure Pong.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;golden-fox07.itch.io&#x2F;pong-war&quot;&gt;&lt;code&gt;Play if you&#x27;re into retro vibes →&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h3 id=&quot;project-4-todo-list-the-typescript-flex&quot;&gt;Project #4: ToDo List – The TypeScript Flex&lt;&#x2F;h3&gt;
&lt;p&gt;Yes, a to-do list. Yes, in 2024. BUT …first TypeScript project, Jumping from JavaScript to TypeScript felt like a genuine achievement, even if the project is basic.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;golden-fox.dev&#x2F;blog&#x2F;summer-of-making&#x2F;images&#x2F;todo.png&quot; alt=&quot;todo-image&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Best part: “Proving I can actually finish tasks at least in code.” The irony of building a productivity app while procrastinating everything else? Immaculate.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;to-do-golden-fox07.vercel.app&#x2F;&quot;&gt;&lt;code&gt;Organize your life here (ironic, I know) →&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h3 id=&quot;project-5-echoes-in-red-the-one-that-actually-matters&quot;&gt;Project #5: Echoes in Red – The One That Actually Matters&lt;&#x2F;h3&gt;
&lt;p&gt;Okay, this one. THIS ONE. My pride and joy. A looping visual novel in Renpy where you wake up, make choices, regret everything and loop back.&lt;&#x2F;p&gt;
&lt;p&gt;My pitch: “At least it’s cheaper than therapy.”&lt;&#x2F;p&gt;
&lt;p&gt;This took FOREVER. Mapping the story loops, all the choice branches, making it actually work  exhausting. But also the most fun I had all summer. When I actually care about something, even my procrastination brain shuts up (temporarily).&lt;&#x2F;p&gt;
&lt;!-- | ![cover](images&#x2F;vn-cover.png) | ![disclaimer](images&#x2F;vn-disclaimer.png) |
|---------------|---------------|
| ![compliment](images&#x2F;vn-compliment.png) |  --&gt;
&lt;div style=&quot;display:grid; grid-template-columns:1fr 1fr; gap:12px; margin:1rem 0;&quot;&gt;
  &lt;img src=&quot;images&#x2F;vn-cover.png&quot; alt=&quot;cover&quot; style=&quot;width:100%;&quot;&gt;
  &lt;img src=&quot;images&#x2F;vn-disclaimer.png&quot; alt=&quot;disclaimer&quot; style=&quot;width:100%;&quot;&gt;
  &lt;img src=&quot;images&#x2F;vn-compliment.png&quot; alt=&quot;compliment&quot;
       style=&quot;grid-column:1 &#x2F; -1; max-width:60%; justify-self:center;&quot;&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;Got multiple compliments on Slack for this. Literally made my entire summer. Nothing beats shipping something you actually love and having people say “hey, this is cool.” 10&#x2F;10, would emotionally damage players again.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;golden-fox07.itch.io&#x2F;echoes-in-red&quot;&gt;&lt;code&gt;Play at your own risk (therapy not included) →&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;So yeah. Five projects. From “wait, I did this wrong” to “I’m genuinely proud of this.” Not bad for someone who spent significant time doing absolutely nothing productive.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;the-community-wish-i-had-been-more-active&quot;&gt;&lt;strong&gt;The Community: Wish I had Been More Active&lt;&#x2F;strong&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;The Hack Club Slack was genuinely cool from what I saw. People building wild stuff, helping each other, sharing wins. Good vibes all around.&lt;&#x2F;p&gt;
&lt;p&gt;Real talk though: I wasn’t very active. Between university prep and, let’s be honest, my Olympic level procrastination skills, I mostly lurked. I would check in occasionally, see the interesting conversations happening, think “I should participate more,” and then… not do that. Classic move.&lt;&#x2F;p&gt;
&lt;p&gt;I did catch some helpful advice when I did pop in, and the few interactions I had were great. The community seemed genuinely supportive and fun. Do I wish I had been more involved? Absolutely. Did my brain cooperate with that wish? Not really. That’s the authentic experience right there.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;final-thoughts-you-don-t-have-to-be-perfect-to-ship&quot;&gt;&lt;strong&gt;Final Thoughts: You Don’t Have To Be Perfect To Ship&lt;&#x2F;strong&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;Summer of Making taught me that you don’t need to be consistently productive or perfectly disciplined to make things. You just need to actually do it, even if it’s messy and inconsistent. I procrastinated a lot. I wasn’t as active in the community as I could have been. I probably wasted half my summer doing nothing.&lt;&#x2F;p&gt;
&lt;p&gt;But I still end up shipping multiple projects. They are real, they work and I made them. That’s more than I would have done if I’d waited to “be more productive first.”&lt;&#x2F;p&gt;
&lt;p&gt;If you are someone who struggles with consistency or procrastination (yep, I feel you), don’t let that stop you from joining things like this. You will probably still procrastinate. But you might also actually finish something for once. Worth it.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;&lt;strong&gt;And just like that, here’s my own Summer of Making Wrap… the projects, the progress, the procrastination and the wins ✨&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;video 
  controls 
  src=&quot;images&#x2F;wrap.mp4&quot;
  title=&quot;wrap&quot; 
  style=&quot;width:100%; max-width:800px; border-radius:8px; display:block; margin:1rem auto;&quot;&gt;
&lt;&#x2F;video&gt;&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;&lt;em&gt;Stop waiting to be perfectly productive. You won’t be. Build something anyway&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Echoes in Red</title>
          <pubDate>Wed, 01 Oct 2025 00:00:00 +0000</pubDate>
          <author>Aakriti Agarwal</author>
          <link>https://golden-fox.dev/projects/echoes-in-red/</link>
          <guid>https://golden-fox.dev/projects/echoes-in-red/</guid>
          <description xml:base="https://golden-fox.dev/projects/echoes-in-red/">&lt;p&gt;A visual novel built in Ren’Py. You wake up, you make choices, you regret them, and you
loop back to where you began. The looping is the point: the story is structured so that
the branches fold back into each other rather than fanning out forever.&lt;&#x2F;p&gt;
&lt;p&gt;Writing it taught me more about state than about storytelling. A branching narrative is a
state machine wearing a costume, and keeping track of what the player had already seen
across loops was most of the actual work.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Built with:&lt;&#x2F;strong&gt; Ren’Py, Python&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;golden-fox07.itch.io&#x2F;echoes-in-red&quot;&gt;Play it on itch.io&lt;&#x2F;a&gt; · &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;golden-fox07&#x2F;Echoes-in-Red&quot;&gt;Source&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Summer of Making</title>
          <pubDate>Tue, 30 Sep 2025 00:00:00 +0000</pubDate>
          <author>Aakriti Agarwal</author>
          <link>https://golden-fox.dev/hackathons/summer-of-making-2025/</link>
          <guid>https://golden-fox.dev/hackathons/summer-of-making-2025/</guid>
          <description xml:base="https://golden-fox.dev/hackathons/summer-of-making-2025/"></description>
      </item>
      <item>
          <title>Pong War</title>
          <pubDate>Tue, 05 Aug 2025 00:00:00 +0000</pubDate>
          <author>Aakriti Agarwal</author>
          <link>https://golden-fox.dev/projects/pong-war/</link>
          <guid>https://golden-fox.dev/projects/pong-war/</guid>
          <description xml:base="https://golden-fox.dev/projects/pong-war/">&lt;p&gt;Pong, but as a fight. Two paddles, one ball and no mercy, built in Godot as part of Hack
Club’s Summer of Making.&lt;&#x2F;p&gt;
&lt;p&gt;Godot was new to me when I started it. Coming from web work, the thing that took adjusting
to was the scene tree: everything is a node, and getting collision and scoring to behave
meant understanding how signals travel between them rather than reaching for a global.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Built with:&lt;&#x2F;strong&gt; Godot, GDScript&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;golden-fox07.itch.io&#x2F;pong-war&quot;&gt;Play it on itch.io&lt;&#x2F;a&gt; · &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;golden-fox07&#x2F;Pong-war&quot;&gt;Source&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>How I started Blender!</title>
          <pubDate>Wed, 21 May 2025 00:00:00 +0000</pubDate>
          <author>Aakriti Agarwal</author>
          <link>https://golden-fox.dev/blog/blender-donut/</link>
          <guid>https://golden-fox.dev/blog/blender-donut/</guid>
          <description 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;
</description>
      </item>
      <item>
          <title>My Nand to Tetris Journey</title>
          <pubDate>Fri, 09 May 2025 00:00:00 +0000</pubDate>
          <author>Aakriti Agarwal</author>
          <link>https://golden-fox.dev/blog/nand-to-tetris/</link>
          <guid>https://golden-fox.dev/blog/nand-to-tetris/</guid>
          <description 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;
</description>
      </item>
    </channel>
</rss>
