<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Tech logs</title>
    <link>/</link>
    <description>Recent content on Tech logs</description>
    <generator>Hugo -- 0.151.0</generator>
    <language>en</language>
    <lastBuildDate>Sun, 31 May 2026 14:00:00 +0530</lastBuildDate>
    <atom:link href="/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Canvas 01 : Pixels, Paths and the Coordinate Lie</title>
      <link>/canvas/canvas-01-pixels-paths/</link>
      <pubDate>Sat, 11 Apr 2026 00:00:00 +0530</pubDate>
      <guid>/canvas/canvas-01-pixels-paths/</guid>
      <description>Part 1 of the HTML Canvas series. We go from a blank screen to a fully drawn static Pac-Man frame — covering coordinates, paths, arcs, colors and text along the way.</description>
    </item>
    <item>
      <title>01 : Js Foundation</title>
      <link>/posts/01-js-foundation/</link>
      <pubDate>Fri, 13 Mar 2026 23:19:51 +0530</pubDate>
      <guid>/posts/01-js-foundation/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Blog Summary:&lt;/strong&gt; The bedrock of the course. Covers why JS exists, how it runs, and the async programming model that makes JS unique and powerful for web development.&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;1-why-programming-languages&#34;&gt;1. Why Programming Languages?&lt;/h2&gt;
&lt;p&gt;[SOURCE — COURSE MATERIAL]&lt;/p&gt;
&lt;p&gt;Computers understand only binary (0s and 1s). Languages exist so humans can write readable instructions that compilers/interpreters then convert to binary.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Human-written code → Compiler → 01010101 → CPU executes
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;The flow:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Developer writes high-level code (JS, Python, C++)&lt;/li&gt;
&lt;li&gt;A compiler/runtime converts it to machine code&lt;/li&gt;
&lt;li&gt;CPU executes machine code from RAM&lt;/li&gt;
&lt;li&gt;SSD holds the program at rest; RAM holds it while running&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;2-compiled-vs-interpreted-scripting-languages&#34;&gt;2. Compiled vs Interpreted (Scripting) Languages&lt;/h2&gt;
&lt;p&gt;[SOURCE — COURSE MATERIAL]&lt;/p&gt;</description>
    </item>
    <item>
      <title>Canvas 02 : Making Things Move</title>
      <link>/canvas/canvas-02-animation-snake/</link>
      <pubDate>Sun, 12 Apr 2026 00:00:00 +0530</pubDate>
      <guid>/canvas/canvas-02-animation-snake/</guid>
      <description>Part 2 of the HTML Canvas series. We build the animation loop that powers every canvas game, understand state vs render separation, and finish with a fully playable Snake game.</description>
    </item>
    <item>
      <title>02 : Node.js, HTTP Servers, Express &amp; Git</title>
      <link>/posts/02-nodejs/</link>
      <pubDate>Fri, 13 Mar 2026 23:21:12 +0530</pubDate>
      <guid>/posts/02-nodejs/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Blog Summary:&lt;/strong&gt; Moves from JS fundamentals to building real backend servers. Covers the Node.js runtime, the HTTP protocol, creating servers with Express, testing with Postman, and version control with Git.&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;1-javascript-runtimes&#34;&gt;1. JavaScript Runtimes&lt;/h2&gt;
&lt;p&gt;[SOURCE — COURSE MATERIAL]&lt;/p&gt;
&lt;h3 id=&#34;ecmascript--the-spec&#34;&gt;ECMAScript — The Spec&lt;/h3&gt;
&lt;p&gt;ECMAScript defines the core language: &lt;code&gt;var&lt;/code&gt;, &lt;code&gt;const&lt;/code&gt;, &lt;code&gt;let&lt;/code&gt;, &lt;code&gt;function&lt;/code&gt;, &lt;code&gt;Date&lt;/code&gt;, &lt;code&gt;setTimeout&lt;/code&gt;, etc. It&amp;rsquo;s the specification, not the implementation.&lt;/p&gt;
&lt;h3 id=&#34;browser-js--ecmascript--browser-apis&#34;&gt;Browser JS = ECMAScript + Browser APIs&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Browser JS:
  ├── ECMAScript (core language)
  ├── setTimeout / setInterval
  ├── fetch (HTTP requests)
  ├── document (DOM access)
  └── localStorage
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;nodejs--ecmascript--backend-apis&#34;&gt;Node.js = ECMAScript + Backend APIs&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Node.js:
  ├── ECMAScript (core language)
  ├── setTimeout
  ├── fs (file system)
  ├── http (create HTTP servers)
  └── path, crypto, os...
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;how-nodejs-was-born&#34;&gt;How Node.js Was Born&lt;/h3&gt;
&lt;p&gt;[ADDED — IMPORTANT BACKGROUND]&lt;/p&gt;</description>
    </item>
    <item>
      <title>Canvas 03 : Gravity, Input and the Feel of Things</title>
      <link>/canvas/canvas-03-physics-flappybird/</link>
      <pubDate>Wed, 15 Apr 2026 00:00:00 +0530</pubDate>
      <guid>/canvas/canvas-03-physics-flappybird/</guid>
      <description>Part 3 of the HTML Canvas series. We add continuous physics, gravity and procedural obstacles, then build a fully playable Flappy Bird. Also covers game states and the art of making things feel right.</description>
    </item>
    <item>
      <title>03 : Middlewares, Authentication, Zod &amp; MongoDB</title>
      <link>/posts/03-middlewares-auth/</link>
      <pubDate>Fri, 13 Mar 2026 23:22:09 +0530</pubDate>
      <guid>/posts/03-middlewares-auth/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Blog Summary:&lt;/strong&gt; Adds production patterns to the Express server: middleware chains, JWT-based auth, schema validation with Zod, and persistent storage with MongoDB via Mongoose.&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;1-middlewares&#34;&gt;1. Middlewares&lt;/h2&gt;
&lt;p&gt;[SOURCE — COURSE MATERIAL]&lt;/p&gt;
&lt;h3 id=&#34;the-problem&#34;&gt;The Problem&lt;/h3&gt;
&lt;p&gt;Every route needs auth checks, input validation, logging. Repeating these in every handler is messy.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// BAD — repeated logic in every route
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;get&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/kidney&amp;#34;&lt;/span&gt;, (&lt;span style=&#34;color:#a6e22e&#34;&gt;req&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;) =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;// auth check here
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;// input validation here
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;// actual logic here
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;});
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;put&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/kidney&amp;#34;&lt;/span&gt;, (&lt;span style=&#34;color:#a6e22e&#34;&gt;req&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;res&lt;/span&gt;) =&amp;gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;// auth check here (copied!)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;// input validation here (copied!)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;// actual logic here
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;});
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;what-is-middleware&#34;&gt;What Is Middleware?&lt;/h3&gt;
&lt;p&gt;A function that runs &lt;strong&gt;between&lt;/strong&gt; the request and the route handler. Has access to &lt;code&gt;req&lt;/code&gt;, &lt;code&gt;res&lt;/code&gt;, and &lt;code&gt;next&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Canvas 04 : Pixels Are Just Numbers</title>
      <link>/canvas/canvas-04-images-pacman/</link>
      <pubDate>Thu, 16 Apr 2026 00:00:00 +0530</pubDate>
      <guid>/canvas/canvas-04-images-pacman/</guid>
      <description>Part 4 of the HTML Canvas series. We get into drawImage, sprite sheets and raw pixel manipulation via getImageData. Project is full Pac-Man with a tile map, ghost AI and proper collision.</description>
    </item>
    <item>
      <title>04 : DOM, Why Frontend Frameworks &amp; MongoDB Deep Dive</title>
      <link>/posts/04-dom-mongodb/</link>
      <pubDate>Fri, 13 Mar 2026 23:23:33 +0530</pubDate>
      <guid>/posts/04-dom-mongodb/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Blog Summary:&lt;/strong&gt; Transitions from backend to frontend. Explores raw DOM manipulation, its limitations, and why React exists. Also covers MongoDB/Mongoose in depth with a complete full-stack data model.&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;1-browser-javascript--the-dom&#34;&gt;1. Browser JavaScript &amp;amp; the DOM&lt;/h2&gt;
&lt;p&gt;[SOURCE — COURSE MATERIAL]&lt;/p&gt;
&lt;h3 id=&#34;what-is-the-dom&#34;&gt;What Is the DOM?&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Document Object Model&lt;/strong&gt; — the browser&amp;rsquo;s in-memory representation of a web page as a tree of objects.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;HTML File:                    DOM Tree:
&amp;lt;html&amp;gt;                          document
  &amp;lt;body&amp;gt;                         └── html
    &amp;lt;div id=&amp;#34;app&amp;#34;&amp;gt;                    └── body
      &amp;lt;h1&amp;gt;Hello&amp;lt;/h1&amp;gt;                       └── div#app
      &amp;lt;button&amp;gt;Click&amp;lt;/button&amp;gt;                    ├── h1 (&amp;#34;Hello&amp;#34;)
    &amp;lt;/div&amp;gt;                                      └── button (&amp;#34;Click&amp;#34;)
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;JavaScript can read and modify this tree in real-time → &lt;strong&gt;dynamic web pages&lt;/strong&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Canvas 05 : Fake Depth, Real Math</title>
      <link>/canvas/canvas-05-3d-ascii/</link>
      <pubDate>Mon, 20 Apr 2026 00:00:00 +0530</pubDate>
      <guid>/canvas/canvas-05-3d-ascii/</guid>
      <description>Final part of the HTML Canvas series. We cover ctx transforms, build a fake 3D rotating cube using projection math, then create an image-to-ASCII and live webcam-to-ASCII renderer.</description>
    </item>
    <item>
      <title>05 : React Deep Dive</title>
      <link>/posts/05-react-deep-dive/</link>
      <pubDate>Fri, 13 Mar 2026 23:41:11 +0530</pubDate>
      <guid>/posts/05-react-deep-dive/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Blog Summary:&lt;/strong&gt; Mastering React&amp;rsquo;s core mental model — state, components, JSX, and re-rendering. Understanding how to structure apps and why React re-renders when and how it does.&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;1-the-react-mental-model&#34;&gt;1. The React Mental Model&lt;/h2&gt;
&lt;p&gt;[SOURCE — COURSE MATERIAL]&lt;/p&gt;
&lt;p&gt;Every frontend app has two things:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;State              Components
─────              ──────────
The data           The view function
(what changes)     state → rendered HTML
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Key insight:&lt;/strong&gt; You never manipulate the DOM directly. You update state. React figures out the DOM.&lt;/p&gt;</description>
    </item>
    <item>
      <title>06 : React Hooks: useEffect, useMemo, useCallback, useRef</title>
      <link>/posts/06-react-hooks/</link>
      <pubDate>Fri, 13 Mar 2026 23:41:51 +0530</pubDate>
      <guid>/posts/06-react-hooks/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Blog Summary:&lt;/strong&gt; Deep dive into React&amp;rsquo;s hook system. Covers when and why each hook exists, common pitfalls, reconciliation internals, and performance optimization patterns.&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;1-reconciliation--how-react-updates-the-dom&#34;&gt;1. Reconciliation — How React Updates the DOM&lt;/h2&gt;
&lt;p&gt;[SOURCE — COURSE MATERIAL]&lt;/p&gt;
&lt;h3 id=&#34;the-ca-analogy&#34;&gt;The CA Analogy&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;You&lt;/strong&gt; = developer (provide state/data)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CA (Chartered Accountant)&lt;/strong&gt; = React reconciler&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bank statements&lt;/strong&gt; = state&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tax filing&lt;/strong&gt; = DOM update&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;React receives your updated state and calculates &lt;strong&gt;what changed&lt;/strong&gt; in the DOM — it doesn&amp;rsquo;t re-create everything.&lt;/p&gt;</description>
    </item>
    <item>
      <title>07 : Routing, Prop Drilling, Context API &amp; Recoil</title>
      <link>/posts/07-react-extra/</link>
      <pubDate>Fri, 13 Mar 2026 23:42:32 +0530</pubDate>
      <guid>/posts/07-react-extra/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Blog Summary:&lt;/strong&gt; Covers client-side routing for SPAs, solves the prop drilling problem with Context API, and introduces Recoil as a production-grade state management solution.&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;1-routing-in-react&#34;&gt;1. Routing in React&lt;/h2&gt;
&lt;p&gt;[SOURCE — COURSE MATERIAL]&lt;/p&gt;
&lt;h3 id=&#34;jargon-first&#34;&gt;Jargon First&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Single Page Application (SPA):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Browser downloads ONE HTML file&lt;/li&gt;
&lt;li&gt;React controls what to show based on URL&lt;/li&gt;
&lt;li&gt;No full page reloads when navigating&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Client-Side Bundle:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;All your React code compiled into JS files&lt;/li&gt;
&lt;li&gt;Browser downloads once, runs locally&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Client-Side Routing:&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>08 : Mastering Redux Toolkit</title>
      <link>/posts/08-react-redux/</link>
      <pubDate>Mon, 06 Apr 2026 10:12:08 +0530</pubDate>
      <guid>/posts/08-react-redux/</guid>
      <description>&lt;p&gt;Welcome to the big leagues. If you&amp;rsquo;ve been following along, we’ve solved the prop-drilling problem using the Context API, and we even looked at Recoil to prevent unnecessary re-renders.&lt;/p&gt;
&lt;p&gt;So right now, a very valid question is probably popping up in your head: &lt;strong&gt;&amp;ldquo;If Recoil and Context API solve my problems, why on earth am I learning Redux?&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s clear that up before we write a single line of code.&lt;/p&gt;</description>
    </item>
    <item>
      <title>09 : Custom Hooks - Write Once, Use Everywhere</title>
      <link>/posts/09-custom-hooks/</link>
      <pubDate>Sun, 31 May 2026 14:00:00 +0530</pubDate>
      <guid>/posts/09-custom-hooks/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Blog Summary:&lt;/strong&gt; React&amp;rsquo;s built-in hooks are great, but the real superpower is building your own. This covers custom hooks from scratch - data fetching, browser APIs, performance patterns, and the SWR library. By the end you will have a solid collection of hooks you can drop into any project.&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;So we have been through &lt;code&gt;useState&lt;/code&gt;, &lt;code&gt;useEffect&lt;/code&gt;, &lt;code&gt;useMemo&lt;/code&gt;, &lt;code&gt;useCallback&lt;/code&gt;, &lt;code&gt;useRef&lt;/code&gt;. Those are all hooks React ships with. And honestly, they cover a lot.&lt;/p&gt;</description>
    </item>
    <item>
      <title>10 : TypeScript - JavaScript But It Yells at You First</title>
      <link>/posts/10-typescripts/</link>
      <pubDate>Sun, 31 May 2026 12:00:00 +0530</pubDate>
      <guid>/posts/10-typescripts/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Blog Summary:&lt;/strong&gt; JavaScript is great until your app crashes at 2am because someone passed a string where a number was expected. TypeScript fixes that. This post covers TypeScript from the ground up - types, interfaces, generics, enums, tsconfig, and how to actually use all of this in real code. By the end you will build a fully typed REST API with Express.&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;So I have been writing JavaScript for a while now. And at some point the codebase grew big enough that I started getting these bugs that should never exist. Like calling &lt;code&gt;.toUpperCase()&lt;/code&gt; on something that turned out to be &lt;code&gt;undefined&lt;/code&gt; at runtime. Or a function expecting an object with a &lt;code&gt;name&lt;/code&gt; field but someone passing in just a string. These are not logic bugs. They are type bugs. And TypeScript is specifically designed to catch them before your code even runs.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Git and GitHub: The Guide That Actually Makes You Comfortable</title>
      <link>/explore/git-and-github/</link>
      <pubDate>Sat, 30 May 2026 00:00:00 +0530</pubDate>
      <guid>/explore/git-and-github/</guid>
      <description>Not another clone-add-commit-push walkthrough. This covers what you actually hit in real work: forking, pull requests, merge conflicts, rebase, stash, upstream setup, and how to recover when things go wrong.</description>
    </item>
    <item>
      <title>Learning Neovim From Scratch</title>
      <link>/explore/learning-neovim-from-scratch/</link>
      <pubDate>Tue, 14 Apr 2026 00:00:00 +0530</pubDate>
      <guid>/explore/learning-neovim-from-scratch/</guid>
      <description>How a broken keyboard forced me into Neovim, how I went down the rabbit hole building a config from scratch, and everything I learned so you don&amp;#39;t have to spend months figuring it out the hard way.</description>
    </item>
    <item>
      <title>Learning Tmux From Scratch</title>
      <link>/explore/learning-tmux/</link>
      <pubDate>Tue, 31 Mar 2026 00:44:32 +0530</pubDate>
      <guid>/explore/learning-tmux/</guid>
      <description>A practical guide that takes you from never hearing about tmux to having it feel completely natural, with exercises, spaced repetition, and my exact config.</description>
    </item>
    <item>
      <title>🐳 Complete Docker Guide: From Basic to Advanced</title>
      <link>/explore/docker-101/</link>
      <pubDate>Sun, 22 Mar 2026 22:38:20 +0530</pubDate>
      <guid>/explore/docker-101/</guid>
      <description>&lt;p&gt;&lt;strong&gt;A Comprehensive, Self-Learning Docker Resource&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-table-of-contents&#34;&gt;📑 Table of Contents&lt;/h2&gt;
&lt;h3 id=&#34;part-1-foundations&#34;&gt;&lt;strong&gt;PART 1: FOUNDATIONS&lt;/strong&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;#1-introduction-to-docker&#34;&gt;Introduction to Docker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#2-core-concepts&#34;&gt;Core Concepts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#3-installation--setup&#34;&gt;Installation &amp;amp; Setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#4-your-first-container&#34;&gt;Your First Container&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;part-2-working-with-containers&#34;&gt;&lt;strong&gt;PART 2: WORKING WITH CONTAINERS&lt;/strong&gt;&lt;/h3&gt;
&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;&lt;a href=&#34;#5-container-lifecycle&#34;&gt;Container Lifecycle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#6-container-management&#34;&gt;Container Management&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#7-port-mapping--networking&#34;&gt;Port Mapping &amp;amp; Networking&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#8-container-logs--debugging&#34;&gt;Container Logs &amp;amp; Debugging&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;part-3-creating-images&#34;&gt;&lt;strong&gt;PART 3: CREATING IMAGES&lt;/strong&gt;&lt;/h3&gt;
&lt;ol start=&#34;9&#34;&gt;
&lt;li&gt;&lt;a href=&#34;#9-understanding-dockerfiles&#34;&gt;Understanding Dockerfiles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#10-building-custom-images&#34;&gt;Building Custom Images&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#11-dockerfile-best-practices&#34;&gt;Dockerfile Best Practices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#12-multi-stage-builds&#34;&gt;Multi-Stage Builds&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;part-4-data-persistence&#34;&gt;&lt;strong&gt;PART 4: DATA PERSISTENCE&lt;/strong&gt;&lt;/h3&gt;
&lt;ol start=&#34;13&#34;&gt;
&lt;li&gt;&lt;a href=&#34;#13-understanding-container-data&#34;&gt;Understanding Container Data&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#14-volumes&#34;&gt;Volumes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#15-bind-mounts&#34;&gt;Bind Mounts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#16-volume-management&#34;&gt;Volume Management&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;part-5-docker-compose&#34;&gt;&lt;strong&gt;PART 5: DOCKER COMPOSE&lt;/strong&gt;&lt;/h3&gt;
&lt;ol start=&#34;17&#34;&gt;
&lt;li&gt;&lt;a href=&#34;#17-introduction-to-docker-compose&#34;&gt;Introduction to Docker Compose&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#18-docker-compose-syntax&#34;&gt;Docker Compose Syntax&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#19-multi-container-applications&#34;&gt;Multi-Container Applications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#20-environment-variables--secrets&#34;&gt;Environment Variables &amp;amp; Secrets&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;part-6-networking&#34;&gt;&lt;strong&gt;PART 6: NETWORKING&lt;/strong&gt;&lt;/h3&gt;
&lt;ol start=&#34;21&#34;&gt;
&lt;li&gt;&lt;a href=&#34;#21-docker-networks-deep-dive&#34;&gt;Docker Networks Deep Dive&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#22-network-types&#34;&gt;Network Types&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#23-container-communication&#34;&gt;Container Communication&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#24-custom-networks&#34;&gt;Custom Networks&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;part-7-advanced-topics&#34;&gt;&lt;strong&gt;PART 7: ADVANCED TOPICS&lt;/strong&gt;&lt;/h3&gt;
&lt;ol start=&#34;25&#34;&gt;
&lt;li&gt;&lt;a href=&#34;#25-resource-management&#34;&gt;Resource Management&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#26-health-checks&#34;&gt;Health Checks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#27-security-best-practices&#34;&gt;Security Best Practices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#28-docker-registry--hub&#34;&gt;Docker Registry &amp;amp; Hub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#29-optimization-techniques&#34;&gt;Optimization Techniques&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;part-8-real-world-projects&#34;&gt;&lt;strong&gt;PART 8: REAL-WORLD PROJECTS&lt;/strong&gt;&lt;/h3&gt;
&lt;ol start=&#34;30&#34;&gt;
&lt;li&gt;&lt;a href=&#34;#30-project-1-simple-web-application&#34;&gt;Project 1: Simple Web Application&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#31-project-2-full-stack-mern-app&#34;&gt;Project 2: Full-Stack MERN App&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#32-project-3-microservices-architecture&#34;&gt;Project 3: Microservices Architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#33-project-4-development-environment&#34;&gt;Project 4: Development Environment&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;appendices&#34;&gt;&lt;strong&gt;APPENDICES&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#complete-command-reference&#34;&gt;Complete Command Reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#troubleshooting-guide&#34;&gt;Troubleshooting Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#common-patterns--solutions&#34;&gt;Common Patterns &amp;amp; Solutions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#glossary&#34;&gt;Glossary&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1 id=&#34;part-1-foundations-1&#34;&gt;PART 1: FOUNDATIONS&lt;/h1&gt;
&lt;hr&gt;
&lt;h2 id=&#34;1-introduction-to-docker&#34;&gt;1. Introduction to Docker&lt;/h2&gt;
&lt;h3 id=&#34;11-what-is-docker&#34;&gt;1.1 What is Docker?&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Simple Definition:&lt;/strong&gt;
Docker is a platform that packages applications and their dependencies into containers - portable, isolated environments that run consistently across any computer.&lt;/p&gt;</description>
    </item>
    <item>
      <title>C&#43;&#43; for DSA &amp; Competitive Programming</title>
      <link>/explore/cpp-notes/</link>
      <pubDate>Wed, 18 Mar 2026 19:32:06 +0530</pubDate>
      <guid>/explore/cpp-notes/</guid>
      <description>&lt;h3 id=&#34;complete-notes--from-zero-to-solving-problems&#34;&gt;Complete Notes — From Zero to Solving Problems&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;How to use these notes:&lt;/strong&gt; Read each section once top to bottom. Then close the notes and try to recall the patterns. Come back only to verify. Retention comes from recall, not re-reading.&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;1-the-mindset&#34;&gt;1. The Mindset&lt;/h2&gt;
&lt;p&gt;This is not a general C++ course. The goal is one thing:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Algorithm idea → immediate, clean C++ implementation&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Every concept in these notes exists to eliminate the friction between knowing how to solve a problem and actually writing the code. If a topic does not appear in DSA solutions, it is not here.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How I built a Human-Like Memory for My Local LLM Without Using Any Special Library</title>
      <link>/projects/ai_memory/</link>
      <pubDate>Mon, 16 Mar 2026 20:25:26 +0530</pubDate>
      <guid>/projects/ai_memory/</guid>
      <description>&lt;p&gt;This is a very naive and beginner way to just get the thing done in the most easy and raw way possible, I won&amp;rsquo;t be using any specific library or complex code for this project, this is just an exploration code.&lt;/p&gt;
&lt;p&gt;Ok, so I am a beginner coder, currently in my sophomore year of college, and recently I got super obsessed with running local AI models on my laptop using Ollama.&lt;/p&gt;</description>
    </item>
    <item>
      <title>About</title>
      <link>/about/</link>
      <pubDate>Fri, 13 Mar 2026 18:47:19 +0530</pubDate>
      <guid>/about/</guid>
      <description>&lt;style&gt;
@import url(&#39;https://fonts.googleapis.com/css2?family=Share+Tech+Mono&amp;display=swap&#39;);

.hacker-about {
  font-family: &#39;Share Tech Mono&#39;, monospace;
  color: #9aff9a;
  background: #0b0f0b;
  padding: 1.5rem;
  border-radius: 6px;
  border: 1px solid #1f3b1f;
  line-height: 1.7;
}

.hacker-about h1 {
  color: #c7ffc7;
  font-weight: normal;
  margin-bottom: 1rem;
}

.hacker-about a {
  color: #7cff7c;
  text-decoration: none;
  border-bottom: 1px dotted #7cff7c;
}

.hacker-about a:hover {
  color: #caffca;
}

.hacker-about .prompt {
  color: #6aff6a;
}
&lt;/style&gt;
&lt;div class=&#34;hacker-about&#34;&gt;
&lt;p&gt;&lt;span class=&#34;prompt&#34;&gt;$ whoami&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Hey, I’m &lt;strong&gt;Eshan&lt;/strong&gt;, a CSE student.&lt;/p&gt;
&lt;p&gt;This blog is basically my &lt;strong&gt;learning log&lt;/strong&gt;.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
