<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://vijaysingh.me</id>
    <title>Vijay Singh</title>
    <updated>2026-06-28T16:42:25.527Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <author>
        <name>Vijay Singh</name>
        <email>vijaydotdev@gmail.com</email>
        <uri>https://vijaysingh.me</uri>
    </author>
    <link rel="alternate" href="https://vijaysingh.me"/>
    <link rel="self" href="https://vijaysingh.me/feed/atom"/>
    <subtitle>I'm a full-stack developer passionate about creating innovative solutions and building robust applications.</subtitle>
    <logo>https://vijaysingh.me/og.png</logo>
    <icon>https://vijaysingh.me/favicons/favicon.ico</icon>
    <rights>All rights reserved 2026, Vijay Singh</rights>
    <entry>
        <title type="html"><![CDATA[Building an API Client for the Express Backend]]></title>
        <id>https://vijaysingh.me/writing/api-client</id>
        <link href="https://vijaysingh.me/writing/api-client"/>
        <updated>2026-05-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A small fetch wrapper that keeps API calls predictable—handling JSON, errors, and cookies in one place.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[How I Built Elo-Based Matchmaking for a Real-Time Chess App]]></title>
        <id>https://vijaysingh.me/writing/elo-matchmaking-chess-app</id>
        <link href="https://vijaysingh.me/writing/elo-matchmaking-chess-app"/>
        <updated>2026-03-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Building fair matchmaking is harder than the math. Here's how I implemented Elo ratings and a dynamic queue in PlayChess - K-factors, range expansion, and the edge cases that bit me.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[How I Built and Published an npm CLI Tool]]></title>
        <id>https://vijaysingh.me/writing/how-i-built-an-npm-cli-tool</id>
        <link href="https://vijaysingh.me/writing/how-i-built-an-npm-cli-tool"/>
        <updated>2026-01-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[BuildElevate started as a personal frustration with repetitive project setup. Here's the full story - architecture, mistakes, lessons, and what it took to publish my first npm package.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[Agentic Coding > Vibe Coding]]></title>
        <id>https://vijaysingh.me/writing/agentic-coding-vs-vibe-coding</id>
        <link href="https://vijaysingh.me/writing/agentic-coding-vs-vibe-coding"/>
        <updated>2025-12-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Both put AI at the keyboard, so they get lumped together. Here's why agentic coding - plan, context, review, verify - beats vibing your way through code you'll have to maintain.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building Production-Ready Auth with Better Auth]]></title>
        <id>https://vijaysingh.me/writing/building-production-ready-auth-better-auth</id>
        <link href="https://vijaysingh.me/writing/building-production-ready-auth-better-auth"/>
        <updated>2025-10-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Most auth tutorials stop at sign-in and sign-up. Here's how I built the full thing - email verification, Google OAuth, TOTP 2FA, rate-limited emails, and account linking - using Better Auth in a Next.js monorepo.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[How Apps Check If a Card Number Is Valid]]></title>
        <id>https://vijaysingh.me/writing/how-apps-validate-card-numbers</id>
        <link href="https://vijaysingh.me/writing/how-apps-validate-card-numbers"/>
        <updated>2025-06-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Ever typed a wrong card number and the form caught it instantly - before even hitting a server? Here's the elegant algorithm behind that.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[How Apps Know Your Password Is Weak]]></title>
        <id>https://vijaysingh.me/writing/how-apps-know-your-password-is-weak</id>
        <link href="https://vijaysingh.me/writing/how-apps-know-your-password-is-weak"/>
        <updated>2025-03-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[That red 'password too weak' warning didn't come from nowhere. Here's the logic behind password strength checkers - entropy, dictionary attacks, pattern detection, and breached password lists.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[What Is a Monorepo? A Simple Explanation]]></title>
        <id>https://vijaysingh.me/writing/what-is-a-monorepo</id>
        <link href="https://vijaysingh.me/writing/what-is-a-monorepo"/>
        <updated>2024-12-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Multiple apps, one repository. Here's what a monorepo actually is, why teams use them, and how Turborepo makes them fast enough to be worth it.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[A Practical Git Workflow for Modern Teams]]></title>
        <id>https://vijaysingh.me/writing/practical-git-workflow</id>
        <link href="https://vijaysingh.me/writing/practical-git-workflow"/>
        <updated>2024-09-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A concise Git workflow to help teams collaborate efficiently and keep the codebase clean.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[REST API Design Principles That Age Well]]></title>
        <id>https://vijaysingh.me/writing/rest-api-design-principles</id>
        <link href="https://vijaysingh.me/writing/rest-api-design-principles"/>
        <updated>2024-09-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Practical REST API principles for building clear, maintainable, and predictable services.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[Hello World]]></title>
        <id>https://vijaysingh.me/writing/hello-world</id>
        <link href="https://vijaysingh.me/writing/hello-world"/>
        <updated>2024-08-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[My first blog post.]]></summary>
    </entry>
</feed>