{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "Alvis Ng · Journal",
  "home_page_url": "https://www.iamalvisng.com/blog",
  "feed_url": "https://www.iamalvisng.com/feed.json",
  "description": "Alvis Ng is a technical lead in Malaysia. He writes about software, AI and leading engineers.",
  "language": "en-GB",
  "authors": [
    {
      "name": "Alvis Ng",
      "url": "https://www.iamalvisng.com/"
    }
  ],
  "items": [
    {
      "id": "https://www.iamalvisng.com/blog/the-senior-developer-title-is-about-to-mean-nothing",
      "url": "https://www.iamalvisng.com/blog/the-senior-developer-title-is-about-to-mean-nothing",
      "title": "The Senior Developer Title Is About to Mean Nothing",
      "summary": "When AI can simulate ten years of pattern recognition in months, what does “senior” even measure?",
      "date_published": "2025-12-18T00:00:00.000Z",
      "tags": [
        "artificial intelligence",
        "software development",
        "programming",
        "productivity",
        "technology"
      ],
      "image": "https://miro.medium.com/v2/resize:fit:2000/format:webp/1*J8EmDXDG5zGD5gOgA31Rpg.jpeg"
    },
    {
      "id": "https://www.iamalvisng.com/blog/how-to-use-ai-without-becoming-a-human-clipboard",
      "url": "https://www.iamalvisng.com/blog/how-to-use-ai-without-becoming-a-human-clipboard",
      "title": "How to Use AI Without Becoming a Human Clipboard",
      "summary": "The 40/20/40 Framework for AI-Assisted Development That Actually Works",
      "date_published": "2025-12-11T00:00:00.000Z",
      "tags": [
        "artificial intelligence",
        "software development",
        "programming",
        "productivity",
        "technology"
      ],
      "image": "https://miro.medium.com/v2/resize:fit:2000/format:webp/1*YKQtLc0c0vk9r9OIIR7tHQ.jpeg"
    },
    {
      "id": "https://www.iamalvisng.com/blog/stop-moralizing-a-revolution",
      "url": "https://www.iamalvisng.com/blog/stop-moralizing-a-revolution",
      "title": "Stop Moralizing a Revolution",
      "summary": "Why Your Guilt About AI-Assisted Coding Is Misplaced",
      "date_published": "2025-12-09T00:00:00.000Z",
      "tags": [
        "artificial intelligence",
        "programming",
        "software development",
        "productivity",
        "technology"
      ],
      "image": "https://miro.medium.com/v2/resize:fit:2000/format:webp/1*8l-QVXQyUv89G1xPOa0sdw.jpeg"
    },
    {
      "id": "https://www.iamalvisng.com/blog/who-fixes-the-ai-code-in-2030",
      "url": "https://www.iamalvisng.com/blog/who-fixes-the-ai-code-in-2030",
      "title": "Who Fixes the AI Code in 2030?",
      "summary": "AI writes the code. Humans still maintain it. We’re not training enough of them.",
      "date_published": "2025-12-07T00:00:00.000Z",
      "tags": [
        "software development",
        "artificial intelligence",
        "programming"
      ],
      "image": "https://miro.medium.com/v2/resize:fit:2000/format:webp/1*tFzjEV8S3x_38i1RYYewAw.jpeg"
    },
    {
      "id": "https://www.iamalvisng.com/blog/i-turned-my-life-into-an-async-function-it-took-years-to-debug",
      "url": "https://www.iamalvisng.com/blog/i-turned-my-life-into-an-async-function-it-took-years-to-debug",
      "title": "I Turned My Life Into an Async Function. It Took Years to Debug.",
      "summary": "On productivity, presence, and the pattern that steals both",
      "date_published": "2025-11-28T00:00:00.000Z",
      "tags": [
        "programming",
        "productivity",
        "self improvement",
        "life lessons",
        "work life balance"
      ],
      "image": "https://miro.medium.com/v2/resize:fit:2000/format:webp/1*LPxirYGL9E1RX-BL30tHLA.jpeg"
    },
    {
      "id": "https://www.iamalvisng.com/blog/learning-to-rank",
      "url": "https://www.iamalvisng.com/blog/learning-to-rank",
      "title": "Learning to Rank",
      "summary": "What Every Engineer Building RAG Should Know",
      "date_published": "2025-11-27T00:00:00.000Z",
      "tags": [
        "programming",
        "productivity",
        "self improvement",
        "life lessons",
        "work life balance"
      ],
      "image": "https://miro.medium.com/v2/resize:fit:2000/format:webp/1*6yYLWPKroymtemhQPECZUg.png"
    },
    {
      "id": "https://www.iamalvisng.com/blog/chopping-language-weaving-meaning",
      "url": "https://www.iamalvisng.com/blog/chopping-language-weaving-meaning",
      "title": "Chopping Language, Weaving Meaning",
      "summary": "Tokens and Embeddings in LLMs",
      "date_published": "2025-08-02T00:00:00.000Z",
      "tags": [
        "artificial intelligence",
        "tokenization",
        "large language models",
        "ai"
      ],
      "image": "https://miro.medium.com/v2/resize:fit:2000/format:webp/1*OUTD0ZzZu4TDjwpPJMn2iA.jpeg"
    },
    {
      "id": "https://www.iamalvisng.com/blog/from-bag-of-words-to-gpt",
      "url": "https://www.iamalvisng.com/blog/from-bag-of-words-to-gpt",
      "title": "From Bag-of-Words to GPT",
      "summary": "The Breakneck Evolution of Large Language Models",
      "date_published": "2025-07-28T00:00:00.000Z",
      "tags": [
        "artificial intelligence",
        "machine learning",
        "large language models",
        "technology",
        "future of work"
      ],
      "image": "https://miro.medium.com/v2/resize:fit:2000/format:webp/1*hhbEQ1SLobsOXRaR_m7fFQ.jpeg"
    },
    {
      "id": "https://www.iamalvisng.com/blog/a-year-with-next-js-server-actions-lessons-learned",
      "url": "https://www.iamalvisng.com/blog/a-year-with-next-js-server-actions-lessons-learned",
      "title": "A Year with Next.js Server Actions: Lessons Learned",
      "summary": "A Deep Dive into the Practicalities, Pitfalls, and Potential of Next.js’s Server-Side Feature",
      "date_published": "2025-01-08T01:15:46.515Z",
      "tags": [
        "backend",
        "frontend",
        "javascript",
        "typescript",
        "work"
      ],
      "image": "https://ap-south-1.graphassets.com/ArhMiBrPqRKGkkYDlZ4ljz/7MN8wsf3R9SGzvUm60A4"
    },
    {
      "id": "https://www.iamalvisng.com/blog/how-do-we-decide-how-to-solve-a-problem",
      "url": "https://www.iamalvisng.com/blog/how-do-we-decide-how-to-solve-a-problem",
      "title": "How do we decide how to solve a problem?",
      "summary": "A KISS-approach to making technical decision in the JavaScript/TypeScript ecosystem",
      "date_published": "2025-01-08T00:56:52.387Z",
      "tags": [
        "backend",
        "frontend",
        "javascript",
        "typescript",
        "work"
      ],
      "image": "https://ap-south-1.graphassets.com/ArhMiBrPqRKGkkYDlZ4ljz/TTV02NoETdC2Xl6I60wq"
    },
    {
      "id": "https://www.iamalvisng.com/blog/finding-strength-when-youre-not-the-favorite",
      "url": "https://www.iamalvisng.com/blog/finding-strength-when-youre-not-the-favorite",
      "title": "The Quiet Ones Win Differently",
      "summary": "What years of being overlooked taught me about building something that lasts",
      "date_published": "2025-01-05T01:15:46.515Z",
      "tags": [
        "life",
        "introvert",
        "psychology",
        "work",
        "inspiration"
      ],
      "image": "https://cdn-images-1.medium.com/max/1600/0*ktnySZhXDIgvmwvh"
    },
    {
      "id": "https://www.iamalvisng.com/blog/managing-complexity-shared-business-logic-in-next-js-part-1-server-side-architecture",
      "url": "https://www.iamalvisng.com/blog/managing-complexity-shared-business-logic-in-next-js-part-1-server-side-architecture",
      "title": "Managing complexity: Shared business logic in Next.js (Part 1: Server-Side Architecture)",
      "summary": "A strategic approach to structuring and implementing reusable logic",
      "date_published": "2024-09-11T23:48:58.503Z",
      "tags": [
        "backend",
        "frontend",
        "javascript",
        "typescript",
        "work"
      ],
      "image": "https://ap-south-1.graphassets.com/ArhMiBrPqRKGkkYDlZ4ljz/gRLb9WpSLKNat2XHeFoi"
    },
    {
      "id": "https://www.iamalvisng.com/blog/advanced-type-techniques-in-typescript-05-const-assertions",
      "url": "https://www.iamalvisng.com/blog/advanced-type-techniques-in-typescript-05-const-assertions",
      "title": "Advanced Type Techniques in TypeScript — 05 const Assertions",
      "summary": "Precision and Immutability with const Assertions",
      "date_published": "2024-03-13T22:45:31.915Z",
      "tags": [
        "frontend",
        "javascript",
        "typescript",
        "work"
      ],
      "image": "https://ap-south-1.graphassets.com/ArhMiBrPqRKGkkYDlZ4ljz/MOvY979Shy3fNNP0BA8f"
    },
    {
      "id": "https://www.iamalvisng.com/blog/advanced-union-type-techniques-in-typescript",
      "url": "https://www.iamalvisng.com/blog/advanced-union-type-techniques-in-typescript",
      "title": "Advanced Union Type Techniques in TypeScript — 01 Extracting Types",
      "summary": "Leverage Extract for Enhanced Type Safety and Code Clarity",
      "date_published": "2024-02-29T01:11:28.502Z",
      "tags": [
        "typescript",
        "frontend",
        "javascript"
      ],
      "image": "https://ap-south-1.graphassets.com/ArhMiBrPqRKGkkYDlZ4ljz/HP1TnJt5QNuBSg85JiT9"
    },
    {
      "id": "https://www.iamalvisng.com/blog/advanced-union-type-techniques-in-typescript-02-excluding-types",
      "url": "https://www.iamalvisng.com/blog/advanced-union-type-techniques-in-typescript-02-excluding-types",
      "title": "Advanced Union Type Techniques in TypeScript — 02 Excluding Types",
      "summary": "Leverage Exclude for Enhanced Type Safety and Code Clarity",
      "date_published": "2024-02-29T01:11:12.050Z",
      "tags": [
        "typescript",
        "frontend",
        "javascript"
      ],
      "image": "https://ap-south-1.graphassets.com/ArhMiBrPqRKGkkYDlZ4ljz/HP1TnJt5QNuBSg85JiT9"
    },
    {
      "id": "https://www.iamalvisng.com/blog/mastering-atoms-the-building-blocks-of-modern-frontend",
      "url": "https://www.iamalvisng.com/blog/mastering-atoms-the-building-blocks-of-modern-frontend",
      "title": "Mastering Atoms: The Building Blocks of Modern Frontend",
      "summary": "Exploring the Core Elements of UI: A Deep Dive into Atom-Level Design in Frontend Development",
      "date_published": "2024-01-15T12:29:03.271Z",
      "tags": [
        "work",
        "frontend"
      ],
      "image": "https://ap-south-1.graphassets.com/ArhMiBrPqRKGkkYDlZ4ljz/1xLflemSz2FSVtn0P6zi"
    },
    {
      "id": "https://www.iamalvisng.com/blog/atomic-design-harnessing-its-power-for-efficient-and-scalable-product-development",
      "url": "https://www.iamalvisng.com/blog/atomic-design-harnessing-its-power-for-efficient-and-scalable-product-development",
      "title": "Atomic Design: Harnessing Its Power for Efficient and Scalable Product Development",
      "summary": "A Deep Exploration into the Elements and Benefits of Atomic Design in Product Development",
      "date_published": "2024-01-15T12:28:25.544Z",
      "tags": [
        "frontend",
        "work"
      ],
      "image": "https://ap-south-1.graphassets.com/ArhMiBrPqRKGkkYDlZ4ljz/WYMlms6TTCSVZOq9mBIg"
    },
    {
      "id": "https://www.iamalvisng.com/blog/advanced-union-type-techniques-in-typescript-03-indexed-types",
      "url": "https://www.iamalvisng.com/blog/advanced-union-type-techniques-in-typescript-03-indexed-types",
      "title": "Advanced Union Type Techniques in TypeScript — 03 Indexed Types",
      "summary": "Leverage Indexed Types for Enhanced Type Safety and Code Clarity",
      "date_published": "2024-01-15T12:26:16.567Z",
      "tags": [
        "typescript",
        "javascript",
        "frontend"
      ],
      "image": "https://ap-south-1.graphassets.com/ArhMiBrPqRKGkkYDlZ4ljz/HP1TnJt5QNuBSg85JiT9"
    },
    {
      "id": "https://www.iamalvisng.com/blog/advanced-union-type-techniques-in-typescript-04-extracting-types-from-discriminated-unions",
      "url": "https://www.iamalvisng.com/blog/advanced-union-type-techniques-in-typescript-04-extracting-types-from-discriminated-unions",
      "title": "Advanced Union Type Techniques in TypeScript — 04 Extracting Types from Discriminated Unions",
      "summary": "Utilizing Discriminated Unions for Precision and Clarity in Type Handling",
      "date_published": "2024-01-15T12:25:46.932Z",
      "tags": [
        "frontend",
        "javascript",
        "typescript",
        "backend"
      ],
      "image": "https://ap-south-1.graphassets.com/ArhMiBrPqRKGkkYDlZ4ljz/MOvY979Shy3fNNP0BA8f"
    }
  ]
}