{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "tech — oriz",
  "home_page_url": "https://tech-blog.oriz.in/",
  "feed_url": "https://tech-blog.oriz.in/feed.json",
  "description": "A software-engineering blog by Chirag Singhal. Deep, buildable notes on shipping software — read like an engineering drawing set.",
  "authors": [
    {
      "name": "Chirag Singhal",
      "url": "https://oriz.in/about/"
    }
  ],
  "language": "en",
  "items": [
    {
      "id": "https://tech-blog.oriz.in/blog/type-safe-apis-typescript/",
      "url": "https://tech-blog.oriz.in/blog/type-safe-apis-typescript/",
      "title": "Type-safe APIs, end to end, without a framework religion",
      "content_text": "Where TypeScript types stop and runtime validation must start, why one schema should drive both, and a pattern that keeps client and server honest across the network boundary.",
      "summary": "Where TypeScript types stop and runtime validation must start, why one schema should drive both, and a pattern that keeps client and server honest across the network boundary.",
      "date_published": "2026-08-11T00:00:00.000Z",
      "date_modified": "2026-08-11T00:00:00.000Z",
      "authors": [
        {
          "name": "Chirag Singhal",
          "url": "https://oriz.in/about/"
        }
      ],
      "tags": [
        "typescript",
        "api",
        "zod",
        "validation"
      ]
    },
    {
      "id": "https://tech-blog.oriz.in/blog/astro-or-next-content-sites-2026/",
      "url": "https://tech-blog.oriz.in/blog/astro-or-next-content-sites-2026/",
      "title": "Astro or Next for a content site in 2026",
      "content_text": "A decision framework, not a benchmark war. When Astro's zero-JS default wins, when Next's app model earns its weight, and the one question that settles most arguments.",
      "summary": "A decision framework, not a benchmark war. When Astro's zero-JS default wins, when Next's app model earns its weight, and the one question that settles most arguments.",
      "date_published": "2026-08-08T00:00:00.000Z",
      "date_modified": "2026-08-08T00:00:00.000Z",
      "authors": [
        {
          "name": "Chirag Singhal",
          "url": "https://oriz.in/about/"
        }
      ],
      "tags": [
        "astro",
        "nextjs",
        "web-dev",
        "performance"
      ]
    },
    {
      "id": "https://tech-blog.oriz.in/blog/mcp-servers-explained/",
      "url": "https://tech-blog.oriz.in/blog/mcp-servers-explained/",
      "title": "MCP servers, explained for people who ship",
      "content_text": "The Model Context Protocol in plain terms: what a server actually exposes, the transport choices that matter, and how to build one without over-engineering it.",
      "summary": "The Model Context Protocol in plain terms: what a server actually exposes, the transport choices that matter, and how to build one without over-engineering it.",
      "date_published": "2026-08-05T00:00:00.000Z",
      "date_modified": "2026-08-05T00:00:00.000Z",
      "authors": [
        {
          "name": "Chirag Singhal",
          "url": "https://oriz.in/about/"
        }
      ],
      "tags": [
        "mcp",
        "ai",
        "tooling",
        "protocols"
      ]
    }
  ]
}