{
  "site": "https://vanducng.dev",
  "mcp": "https://mcp.vanducng.dev/mcp",
  "series": [
    {
      "slug": "agentic-ai",
      "title": "Building Intelligent AI Systems",
      "url": "https://vanducng.dev/series/agentic-ai/",
      "posts": 24
    },
    {
      "slug": "agentic-coding-with-claude-code",
      "title": "Agentic Coding with Claude Code",
      "url": "https://vanducng.dev/series/agentic-coding-with-claude-code/",
      "posts": 6
    },
    {
      "slug": "deepseek-harness",
      "title": "DeepSeek Harness",
      "url": "https://vanducng.dev/series/deepseek-harness/",
      "posts": 1
    },
    {
      "slug": "finance-ai",
      "title": "Applied Agentic AI in Finance",
      "url": "https://vanducng.dev/series/finance-ai/",
      "posts": 14
    },
    {
      "slug": "langchain-langgraph",
      "title": "Mastering LangChain and LangGraph",
      "url": "https://vanducng.dev/series/langchain-langgraph/",
      "posts": 7
    },
    {
      "slug": "go-backend",
      "title": "Go Backend Development",
      "url": "https://vanducng.dev/series/go-backend/",
      "posts": 10
    }
  ],
  "posts": [
    {
      "slug": "software-factories-what-my-x-feed-taught-me",
      "title": "Software Factories: What My X Feed Taught Me This Month",
      "url": "https://vanducng.dev/2026/10/22/software-factories-what-my-x-feed-taught-me/",
      "markdown_url": "https://vanducng.dev/2026/10/22/software-factories-what-my-x-feed-taught-me.md",
      "date": "2026-10-22T18:00:00+00:00",
      "series": "agentic-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "background-agents",
        "agentic-coding",
        "platform-engineering",
        "software-factory"
      ],
      "summary": "Sources: posts I reposted on X between September and October 2026: Josh Rosen’s Software Factories for Skeptics (via Matt Stockton), Josh Rosen’s The Software Factory Debate: Build, Buy, Fork or Delegate, Lauren’s (@poteto) 2,500 PRs talk and Matt Pocock’s notes on it, and...",
      "headings": [
        "Light factory, not dark factory",
        "Coding agents already run tiny factories, then throw them away",
        "Software factories are data factories",
        "Build, buy, fork, or delegate",
        "Constraints and verification are the factory floor",
        "Security is part of the spec",
        "What I am taking away",
        "References"
      ]
    },
    {
      "slug": "background-agents-what-13-companies-actually-run",
      "title": "Background Agents: What 13 Companies Actually Run",
      "url": "https://vanducng.dev/2026/08/19/background-agents-what-13-companies-actually-run/",
      "markdown_url": "https://vanducng.dev/2026/08/19/background-agents-what-13-companies-actually-run.md",
      "date": "2026-08-19T01:50:00+00:00",
      "series": "agentic-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "background-agents",
        "agentic-coding",
        "platform-engineering"
      ],
      "summary": "Sources: Background Agents Summit session pages and the YouTube talks (6-7 May 2026). Definition from background-agents.com. I used Ona’s summit recap and llms-full.txt as indexes. Where a talk, a session page, and other Ona pages disagree, I leave the disagreement in. I have...",
      "headings": [
        "What a background agent is",
        "The false summit",
        "Coding agent vs background agent vs CI",
        "Five primitives, independently arrived at",
        "What 13 companies actually ran",
        "Peer numbers outside the playlist",
        "Trigger to output",
        "What I am taking from this",
        "References"
      ]
    },
    {
      "slug": "pi-coding-agent-field-guide",
      "title": "Pi Coding Agent Field Guide",
      "url": "https://vanducng.dev/2026/08/16/pi-coding-agent-field-guide/",
      "markdown_url": "https://vanducng.dev/2026/08/16/pi-coding-agent-field-guide.md",
      "date": "2026-08-16T14:00:00+00:00",
      "series": null,
      "categories": [
        "AI"
      ],
      "tags": [
        "agentic-coding",
        "pi",
        "coding-agents",
        "tui"
      ],
      "summary": "Pi is a terminal coding agent that starts almost empty and grows through packages, skills, hooks, and project files. That is the opposite of many agents that ship fully loaded. This post is a compact field guide: install and auth, security, sessions (/tree, clone, fork,...",
      "headings": [
        "What Pi is",
        "1. Install, auth, model",
        "2. Settings (two layers)",
        "3. Security model (critical)",
        "4. CLI startup flags worth memorizing",
        "5. Sessions (core mental model)",
        "6. Everyday TUI usage",
        "7. Packages (third-party extensions)",
        "8. AGENTS.md (always-on project brain)",
        "9. Skills (on-demand capability packs)",
        "10. Prompt templates (slash commands)",
        "11. Extensions / hooks (deep customization)",
        "12. Workflow patterns",
        "13. Pocket command map",
        "14. Layout on disk (cheat)",
        "15. Decision tree"
      ]
    },
    {
      "slug": "cli-proxy-api-keys-for-codex-desktop-on-macos",
      "title": "CLI Proxy API Keys for Codex Desktop on macOS",
      "url": "https://vanducng.dev/2026/08/15/cli-proxy-api-keys-for-codex-desktop-on-macos/",
      "markdown_url": "https://vanducng.dev/2026/08/15/cli-proxy-api-keys-for-codex-desktop-on-macos.md",
      "date": "2026-08-15T20:00:00+00:00",
      "series": null,
      "categories": [
        "AI"
      ],
      "tags": [
        "agentic-coding",
        "codex",
        "macos",
        "launchd",
        "cli-proxy"
      ],
      "summary": "Codex CLI was talking to my OpenAI-compatible gateway just fine. Codex Desktop was not. Same ~/.codex/config.toml. Same custom provider. Same machine. Desktop failed immediately with: The provider was not the problem. The process environment was.",
      "headings": [
        "Intent",
        "Why CLI worked and Desktop did not",
        "The fix: bridge the GUI session with launchctl",
        "Stow-managed LaunchAgent",
        "How we proved it",
        "Mental model",
        "Tradeoffs",
        "Takeaway"
      ]
    },
    {
      "slug": "bounded-autonomy-and-guardrails-for-claude-code",
      "title": "Bounded Autonomy and Guardrails for Claude Code",
      "url": "https://vanducng.dev/2026/08/15/bounded-autonomy-and-guardrails-for-claude-code/",
      "markdown_url": "https://vanducng.dev/2026/08/15/bounded-autonomy-and-guardrails-for-claude-code.md",
      "date": "2026-08-15T08:30:00+00:00",
      "series": "agentic-coding-with-claude-code",
      "categories": [
        "AI"
      ],
      "tags": [
        "agentic-coding",
        "claude-code",
        "agent-sdk",
        "hooks",
        "orchestration",
        "guardrails"
      ],
      "summary": "Part 5 ended with a debt: autonomy I am willing to grant, and guardrails that hold even when the model would rather keep going. This is Part 6 of 6 in my Agentic Coding with Claude Code series. The working model I am keeping is simple: eval tells me whether the loop did the...",
      "headings": [
        "Autonomy Is a Grant, Not a Vibe",
        "Multi-Agent Only When Isolation Is Cheaper or Safer",
        "Deterministic Hooks vs Prompts",
        "Hooks Sit First in the Permission Order",
        "Keel Ledger: a Review Desk",
        "The Six-Post Working Model",
        "Putting the Concepts into Practice",
        "Key Terms",
        "Final Thoughts",
        "References"
      ]
    },
    {
      "slug": "evaluation-and-observability-for-claude-agents",
      "title": "Evaluation and Observability for Claude Agents",
      "url": "https://vanducng.dev/2026/08/15/evaluation-and-observability-for-claude-agents/",
      "markdown_url": "https://vanducng.dev/2026/08/15/evaluation-and-observability-for-claude-agents.md",
      "date": "2026-08-15T08:00:00+00:00",
      "series": "agentic-coding-with-claude-code",
      "categories": [
        "AI"
      ],
      "tags": [
        "evaluation",
        "observability",
        "agentic-coding",
        "claude-code",
        "agent-sdk"
      ],
      "summary": "Part 4 ended with a debt: whether the loop is actually doing the job. When a skip was correct, when a tool lied, and when the audit trail is the only honest record. This is Part 5 of 6 in my Agentic Coding with Claude Code series. The working model I am keeping is simple:...",
      "headings": [
        "Silent Failures Hide in Free-Form Text",
        "Structured Output Is the Contract",
        "What I Measure",
        "Response, Step, Trajectory",
        "The Eval Loop",
        "Retry vs Escalate",
        "Three Small Analogs",
        "Putting the Concepts into Practice",
        "Key Terms",
        "Final Thoughts",
        "References"
      ]
    },
    {
      "slug": "mcp-and-tool-governance",
      "title": "MCP and Tool Governance",
      "url": "https://vanducng.dev/2026/08/15/mcp-and-tool-governance/",
      "markdown_url": "https://vanducng.dev/2026/08/15/mcp-and-tool-governance.md",
      "date": "2026-08-15T06:00:00+00:00",
      "series": "agentic-coding-with-claude-code",
      "categories": [
        "AI"
      ],
      "tags": [
        "mcp",
        "agentic-coding",
        "claude-code",
        "agent-sdk"
      ],
      "summary": "Part 3 ended with a debt: tools that live outside the process, MCP servers, how they enter the window, and how to keep that surface small. This is Part 4 of 6 in my Agentic Coding with Claude Code series. The working model I am keeping is simple: the model still reasons. The...",
      "headings": [
        "Why the Split Matters",
        "Server Primitives: Tools, Resources, Prompts",
        "Client Features I Will Name",
        "Transports, High Level",
        "Wiring MCP into Claude Code and the Agent SDK",
        "Keep the Surface Small",
        "An Audited Agent Loop",
        "Shelfwatch: Gather, Reconcile, Reason",
        "Putting the Concepts into Practice",
        "Key Terms",
        "Final Thoughts",
        "References"
      ]
    },
    {
      "slug": "the-harness-models-agent-sdk-and-stop-reason-loops",
      "title": "The Harness: Models, the Agent SDK, and Stop-Reason Loops",
      "url": "https://vanducng.dev/2026/08/15/the-harness-models-agent-sdk-and-stop-reason-loops/",
      "markdown_url": "https://vanducng.dev/2026/08/15/the-harness-models-agent-sdk-and-stop-reason-loops.md",
      "date": "2026-08-15T04:00:00+00:00",
      "series": "agentic-coding-with-claude-code",
      "categories": [
        "AI"
      ],
      "tags": [
        "agentic-coding",
        "claude-code",
        "agent-sdk"
      ],
      "summary": "Part 2 ended with a debt: when I own the runtime, I have to implement trim, a facts block, tiered compress, and placement myself. Claude Code already does a version of that. A product I ship does not get it for free. This is Part 3 of 6 in my Agentic Coding with Claude Code...",
      "headings": [
        "The Harness Is the Runtime Around the Model",
        "Model Choice Is an Engineering Decision",
        "Agentic Design, One Pointer",
        "The Agent SDK: Goal, Tools, Permissions, Structured Outputs",
        "`stop_reason` Drives the Loop",
        "Claims Intake: Clarify, Route, Escalate",
        "When You Own the Runtime, You Own Part 2",
        "Putting the Concepts into Practice",
        "Key Terms",
        "Final Thoughts",
        "References"
      ]
    },
    {
      "slug": "context-engineering-for-claude-code",
      "title": "Context Engineering for Claude Code",
      "url": "https://vanducng.dev/2026/08/15/context-engineering-for-claude-code/",
      "markdown_url": "https://vanducng.dev/2026/08/15/context-engineering-for-claude-code.md",
      "date": "2026-08-15T02:00:00+00:00",
      "series": "agentic-coding-with-claude-code",
      "categories": [
        "AI"
      ],
      "tags": [
        "context-engineering",
        "agentic-coding",
        "claude-code"
      ],
      "summary": "In Part 1, I treated Claude Code as a bounded loop: perceive, reason, act, then feed the evidence back in. The reasoning engine is only as good as the working set it sees. A precise goal still fails if the window is full of directory trees, stale chat, and a vague tool...",
      "headings": [
        "Context Is Assembled, Not Just the Prompt",
        "Progressive Disclosure",
        "Imports vs Rules vs Skills",
        "Long Conversations Need a Strategy",
        "Team Config for a Multi-Surface Repo",
        "Tool Descriptions Are Context Too",
        "How I Will Set This Up",
        "Putting the Concepts into Practice",
        "Key Terms",
        "Final Thoughts",
        "References"
      ]
    },
    {
      "slug": "what-cordis-does-inside-deepseek-harness",
      "title": "What Cordis Does Inside DeepSeek Harness",
      "url": "https://vanducng.dev/2026/08/15/what-cordis-does-inside-deepseek-harness/",
      "markdown_url": "https://vanducng.dev/2026/08/15/what-cordis-does-inside-deepseek-harness.md",
      "date": "2026-08-15T02:00:00+00:00",
      "series": "deepseek-harness",
      "categories": [
        "AI"
      ],
      "tags": [
        "ai-agents",
        "deepseek"
      ],
      "summary": "Source: Cordis 在做什么：从 DeepSeek Harness 看 by Antinomie on antinomie.org. The piece is the site’s current homepage post. DeepSeek Harness (DSH) is an agent harness built on Cordis. The first thing that clicks is not a privileged core loop. Model adapters, tool registries,...",
      "headings": [
        "1. Premise: Everything Is a Plugin",
        "2. One Boot: Five Lines, Every Concept",
        "3. Services: Where `ctx.shell` Comes From",
        "4. inject: Declare Dependencies, Infer Load Order",
        "5. Registration Is an Effect: Where Unload Comes From",
        "6. How to Write a Plugin: Cordis Hides the Complexity",
        "7. Composition Is Configuration: cordis.yml, Patch Layers, and Presets",
        "8. Mapping: Which Cordis Feature Each Usage Eats",
        "9. Developer View: Why DSH Is a Meta Harness"
      ]
    },
    {
      "slug": "core-concepts-of-agentic-coding-with-claude-code",
      "title": "Core Concepts of Agentic Coding with Claude Code",
      "url": "https://vanducng.dev/2026/08/09/core-concepts-of-agentic-coding-with-claude-code/",
      "markdown_url": "https://vanducng.dev/2026/08/09/core-concepts-of-agentic-coding-with-claude-code.md",
      "date": "2026-08-09T02:00:00+00:00",
      "series": "agentic-coding-with-claude-code",
      "categories": [
        "AI"
      ],
      "tags": [
        "agentic-coding",
        "claude-code",
        "ai-agents"
      ],
      "summary": "Most people first meet Claude Code as a chatbot in a terminal. That mental model is too small. Ask it to explain a bug and it may answer once. Give it a concrete engineering objective and permission to work, and it can read the repository, trace the code, edit files, run...",
      "headings": [
        "From a Prompt to an Agentic Loop",
        "The Perception-Reasoning-Action Loop",
        "A Sketchnote of the System",
        "The Core Components",
        "Choosing an Agentic Design Pattern",
        "Putting the Concepts into Practice",
        "Key Terms",
        "Final Thoughts",
        "References"
      ]
    },
    {
      "slug": "From-Theory-to-Gateway-Building-a-Production-AI-Agent-System-in-Go",
      "title": "From Theory to Gateway - Why Go Makes Sense for Production AI Agents",
      "url": "https://vanducng.dev/2026/02/28/From-Theory-to-Gateway-Building-a-Production-AI-Agent-System-in-Go/",
      "markdown_url": "https://vanducng.dev/2026/02/28/From-Theory-to-Gateway-Building-a-Production-AI-Agent-System-in-Go.md",
      "date": "2026-02-28T09:00:00+00:00",
      "series": "agentic-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "agents",
        "multi-agent",
        "production",
        "golang"
      ],
      "summary": "I learned agentic AI concepts in Python - agent loops, tool calling, multi-agent coordination, production patterns. I even built my own Python assistant - MiuBot - with 10 chat channels, Temporal workflows, and multi-tenant workspaces. Python works well for most of these...",
      "headings": [
        "Python Works - Until It Doesn't",
        "GoClaw: An AI Agent Gateway Built in Go",
        "The Agent Loop: Same Concept, Different Runtime",
        "Context Window: The Three-Layer Defense",
        "Tool Policy: Beyond Simple Registration",
        "Memory: Hybrid Search in Practice",
        "Concurrency: Lane-Based Scheduling",
        "Provider Abstraction",
        "Multi-Channel Delivery",
        "Two Modes: Standalone and Managed",
        "Subagents: Controlled Delegation",
        "What This Teaches",
        "Key Takeaways"
      ]
    },
    {
      "slug": "Building-MiuBot-A-Personal-AI-Assistant-From-Nanobot-to-Production",
      "title": "Building MiuBot - A Personal AI Assistant From Nanobot to Production",
      "url": "https://vanducng.dev/2026/02/20/Building-MiuBot-A-Personal-AI-Assistant-From-Nanobot-to-Production/",
      "markdown_url": "https://vanducng.dev/2026/02/20/Building-MiuBot-A-Personal-AI-Assistant-From-Nanobot-to-Production.md",
      "date": "2026-02-20T09:00:00+00:00",
      "series": "agentic-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "python",
        "agents",
        "multi-agent",
        "production"
      ],
      "summary": "After months of studying agentic AI patterns in theory - agent loops, tool calling, multi-agent coordination - I wanted to build something real. Not another tutorial project, but an AI assistant I could actually use daily, connected to the chat platforms I already live on....",
      "headings": [
        "Why Nanobot as a Starting Point",
        "From Fork to Rebuild",
        "10 Chat Channels",
        "3-Tier Memory: BASB-Inspired",
        "Durable Workflows with Temporal",
        "Multi-Tenant Workspaces",
        "MCP Integration",
        "13+ LLM Providers",
        "Subagent System",
        "Skills System",
        "Bot Identity",
        "What I Learned",
        "Key Takeaways"
      ]
    },
    {
      "slug": "Data-Agents-From-OpenAI-to-Open-Source",
      "title": "Data Agents: From OpenAI's 6 Layers to Open-Source Alternatives",
      "url": "https://vanducng.dev/2026/02/06/Data-Agents-From-OpenAI-to-Open-Source/",
      "markdown_url": "https://vanducng.dev/2026/02/06/Data-Agents-From-OpenAI-to-Open-Source.md",
      "date": "2026-02-06T15:00:00+00:00",
      "series": null,
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "agentic-ai",
        "data-agent",
        "analytics",
        "text-to-sql"
      ],
      "summary": "Every company sitting on a data warehouse wants the same thing: let anyone ask questions in plain English and get reliable answers. OpenAI published how they built their internal data agent, and the open-source community responded fast. Here’s a quick summary of three...",
      "headings": [
        "OpenAI's In-House Data Agent: 6 Layers of Context",
        "Dash: Open-Source Self-Learning Data Agent",
        "Nao: Open-Source Analytics Agent",
        "Comparison",
        "Takeaway",
        "References"
      ]
    },
    {
      "slug": "Applied-Agentic-AI-in-Finance-A-Complete-Guide",
      "title": "Applied Agentic AI in Finance: A Complete Guide",
      "url": "https://vanducng.dev/2026/01/30/Applied-Agentic-AI-in-Finance-A-Complete-Guide/",
      "markdown_url": "https://vanducng.dev/2026/01/30/Applied-Agentic-AI-in-Finance-A-Complete-Guide.md",
      "date": "2026-01-30T09:00:00+00:00",
      "series": "finance-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "python",
        "finance",
        "multi-agent"
      ],
      "summary": "This post brings together everything we’ve learned about applying agentic AI to financial services. From role-based prompting through multi-agent coordination, we’ve covered the complete spectrum of techniques for building intelligent financial systems. Here’s the...",
      "headings": [
        "Series Overview",
        "Part 1: Financial Prompting Fundamentals",
        "Part 2: Agentic Workflow Patterns",
        "Part 3: Building Financial Agents",
        "Part 4: Multi-Agent Financial Systems",
        "Production Patterns",
        "Architecture Summary",
        "Complete Series Index",
        "Key Takeaways"
      ]
    },
    {
      "slug": "Coordinated-Trading-Systems",
      "title": "Coordinated Trading Systems",
      "url": "https://vanducng.dev/2026/01/27/Coordinated-Trading-Systems/",
      "markdown_url": "https://vanducng.dev/2026/01/27/Coordinated-Trading-Systems.md",
      "date": "2026-01-27T09:00:00+00:00",
      "series": "finance-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "python",
        "finance",
        "multi-agent"
      ],
      "summary": "When multiple agents operate simultaneously on trading operations, they must share a consistent understanding of the world state. This post explores the coordination patterns that make multi-agent trading systems reliable: persistent state management, conflict resolution, and...",
      "headings": [
        "State Management in Multi-Agent Systems",
        "Persistent State with Interchangeable Managers",
        "Agent Separation: Decision vs Execution",
        "State Coordination Strategies",
        "Conflict Resolution Strategies",
        "Multi-Agent Trading System with Supervisor",
        "Multi-Agent RAG for Trading Intelligence",
        "Production Considerations",
        "Takeaways"
      ]
    },
    {
      "slug": "Multi-Agent-Architecture-for-Trading",
      "title": "Multi-Agent Architecture for Trading",
      "url": "https://vanducng.dev/2026/01/24/Multi-Agent-Architecture-for-Trading/",
      "markdown_url": "https://vanducng.dev/2026/01/24/Multi-Agent-Architecture-for-Trading.md",
      "date": "2026-01-24T09:00:00+00:00",
      "series": "finance-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "python",
        "finance",
        "multi-agent"
      ],
      "summary": "When building an AI hedge fund, the most critical element is understanding the flow of agent-to-agent communication. Does one agent need to work after another? Can agents work in parallel? What is the specific purpose of each agent? Multi-agent architecture answers these...",
      "headings": [
        "The Case for Agent Specialization",
        "Hedge Fund Agent Architecture",
        "Shared Context Architecture",
        "Orchestration Patterns",
        "Determinism in AI Workflows",
        "Routing Strategies",
        "Putting It All Together",
        "Takeaways"
      ]
    },
    {
      "slug": "RAG-and-Evaluation-for-Financial-Agents",
      "title": "RAG and Evaluation for Financial Agents",
      "url": "https://vanducng.dev/2026/01/21/RAG-and-Evaluation-for-Financial-Agents/",
      "markdown_url": "https://vanducng.dev/2026/01/21/RAG-and-Evaluation-for-Financial-Agents.md",
      "date": "2026-01-21T09:00:00+00:00",
      "series": "finance-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "python",
        "rag",
        "finance"
      ],
      "summary": "Financial agents need two critical capabilities that set them apart from simple chatbots: the ability to ground responses in authoritative documents through intelligent retrieval, and continuous evaluation to ensure accuracy in regulated environments. Agentic RAG transforms...",
      "headings": [
        "From Basic RAG to Agentic RAG",
        "Long-Term Memory for Financial Agents",
        "Agent Evaluation",
        "Takeaways"
      ]
    },
    {
      "slug": "Connecting-Agents-to-Financial-Data-Sources",
      "title": "Connecting Agents to Financial Data Sources",
      "url": "https://vanducng.dev/2026/01/18/Connecting-Agents-to-Financial-Data-Sources/",
      "markdown_url": "https://vanducng.dev/2026/01/18/Connecting-Agents-to-Financial-Data-Sources.md",
      "date": "2026-01-18T09:00:00+00:00",
      "series": "finance-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "python",
        "finance",
        "api"
      ],
      "summary": "Agents become truly useful when they stop just reasoning and start acting - interacting with real systems like market data feeds, financial news sources, and internal databases. This shift happens through three key integration patterns: external APIs for real-time data, web...",
      "headings": [
        "Why External Data Matters",
        "External APIs: Real-Time Market Data",
        "Web Search: Unstructured Financial Research",
        "Database Agents: Structured Internal Data",
        "Combining Data Sources",
        "Takeaways"
      ]
    },
    {
      "slug": "State-and-Memory-for-Trading-Agents",
      "title": "State and Memory for Trading Agents",
      "url": "https://vanducng.dev/2026/01/15/State-and-Memory-for-Trading-Agents/",
      "markdown_url": "https://vanducng.dev/2026/01/15/State-and-Memory-for-Trading-Agents.md",
      "date": "2026-01-15T09:00:00+00:00",
      "series": "finance-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "python",
        "finance"
      ],
      "summary": "LLMs are stateless by nature - each interaction is isolated, with no memory of prior prompts. But financial agents often need context to manage complex, multi-step tasks like loan approvals, insurance claims, or trading workflows. This requires two complementary mechanisms:...",
      "headings": [
        "The Stateless Problem",
        "Agent State: The Working Memory",
        "Applied Example: Insurance Claim Processing",
        "State vs Memory: Understanding the Difference",
        "Short-Term Memory: Simulating Continuity",
        "Applied Example: Financial Advisor with Memory",
        "Memory Architecture Patterns",
        "Financial-Specific Considerations",
        "Takeaways"
      ]
    },
    {
      "slug": "Google-Prototype-to-Production-Whitepaper-Summary",
      "title": "Summary: Google's AgentOps - From Prototype to Production",
      "url": "https://vanducng.dev/2026/01/14/Google-Prototype-to-Production-Whitepaper-Summary/",
      "markdown_url": "https://vanducng.dev/2026/01/14/Google-Prototype-to-Production-Whitepaper-Summary.md",
      "date": "2026-01-14T15:00:00+00:00",
      "series": "agentic-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "agentic-ai",
        "python",
        "agent-ops",
        "deployment",
        "ci-cd"
      ],
      "summary": "This post continues our coverage of Google’s agent whitepaper series, following Introduction to Agents, Agent Tools &amp; MCP, Context Engineering, and Agent Quality &amp; Evaluation. This fifth installment tackles the critical challenge: how do we move agents from demo to...",
      "headings": [
        "The \"Last Mile\" Production Gap",
        "People and Process",
        "Evaluation as a Quality Gate",
        "The CI/CD Pipeline",
        "Safe Rollout Strategies",
        "Building Security from the Start",
        "Operations in Production",
        "A2A Protocol: Agent-to-Agent Interoperability",
        "How A2A and MCP Work Together",
        "Registry Architectures",
        "The AgentOps Lifecycle",
        "Key Takeaways",
        "Connecting the Series",
        "References"
      ]
    },
    {
      "slug": "Google-Agent-Quality-Evaluation-Whitepaper-Summary",
      "title": "Summary: Google's Agent Quality & Evaluation Framework",
      "url": "https://vanducng.dev/2026/01/13/Google-Agent-Quality-Evaluation-Whitepaper-Summary/",
      "markdown_url": "https://vanducng.dev/2026/01/13/Google-Agent-Quality-Evaluation-Whitepaper-Summary.md",
      "date": "2026-01-13T15:00:00+00:00",
      "series": "agentic-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "agentic-ai",
        "evaluation",
        "agent-ops",
        "observability"
      ],
      "summary": "This post continues our coverage of Google’s agent whitepaper series, following Introduction to Agents, Agent Tools &amp; MCP, and Context Engineering. This fourth installment tackles perhaps the most critical challenge: how do we know if an agent is actually good? Source:...",
      "headings": [
        "Why Agent Quality Demands a New Approach",
        "The Evolution: From ML to Multi-Agent Systems",
        "The Four Pillars of Agent Quality",
        "The \"Outside-In\" Evaluation Framework",
        "The Evaluators: Methods of Judgment",
        "Observability: The Three Pillars",
        "The Agent Quality Flywheel",
        "Three Core Principles",
        "Key Takeaways",
        "Connecting the Series",
        "References"
      ]
    },
    {
      "slug": "Google-Context-Engineering-Sessions-Memory-Summary",
      "title": "Summary: Google's Context Engineering - Sessions & Memory",
      "url": "https://vanducng.dev/2026/01/12/Google-Context-Engineering-Sessions-Memory-Summary/",
      "markdown_url": "https://vanducng.dev/2026/01/12/Google-Context-Engineering-Sessions-Memory-Summary.md",
      "date": "2026-01-12T15:00:00+00:00",
      "series": "agentic-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "agentic-ai",
        "python",
        "memory",
        "context-engineering"
      ],
      "summary": "This is the third installment in our Agentic AI series, following Google’s Introduction to Agents and Agent Tools &amp; MCP. While those papers covered agent architecture and tool integration, this one focuses on how agents manage context across conversations through sessions...",
      "headings": [
        "Why Context Engineering Matters",
        "Sessions: The Conversation Container",
        "Session State Management Patterns",
        "Compaction Strategies for Efficiency",
        "Memory: Persistence Across Conversations",
        "The Memory Generation Pipeline",
        "Memory-as-a-Tool Pattern",
        "Multi-Agent Session Architectures",
        "RAG vs Memory: Complementary Roles",
        "Memory Provenance and Trust",
        "Framework Comparison: ADK vs LangGraph",
        "Production Considerations",
        "Connecting to the Agentic AI Series",
        "Key Takeaways",
        "References"
      ]
    },
    {
      "slug": "Financial-Tools-and-Structured-Outputs",
      "title": "Financial Tools and Structured Outputs",
      "url": "https://vanducng.dev/2026/01/12/Financial-Tools-and-Structured-Outputs/",
      "markdown_url": "https://vanducng.dev/2026/01/12/Financial-Tools-and-Structured-Outputs.md",
      "date": "2026-01-12T09:00:00+00:00",
      "series": "finance-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "python",
        "finance"
      ],
      "summary": "Language models are strong at reasoning, but without tools, they can only talk - not act. For financial applications requiring precise calculations, real-time data access, or system integrations, tool-augmented agents are essential. Combined with structured outputs using...",
      "headings": [
        "From Talking to Acting: Tool-Augmented Agents",
        "Function Calling: The Foundation",
        "Structured Outputs with Pydantic",
        "Financial Data Models",
        "Combining Tools and Structured Outputs",
        "Takeaways"
      ]
    },
    {
      "slug": "Google-Agent-Tools-MCP-Whitepaper-Summary",
      "title": "Summary: Google's Agent Tools & MCP Interoperability",
      "url": "https://vanducng.dev/2026/01/11/Google-Agent-Tools-MCP-Whitepaper-Summary/",
      "markdown_url": "https://vanducng.dev/2026/01/11/Google-Agent-Tools-MCP-Whitepaper-Summary.md",
      "date": "2026-01-11T15:00:00+00:00",
      "series": "agentic-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "agentic-ai",
        "tool-calling",
        "mcp"
      ],
      "summary": "Following our coverage of Google’s Introduction to Agents, this post dives into the companion whitepaper on Agent Tools and Model Context Protocol (MCP). While the first paper covered agent architecture, this one focuses on how agents interact with the world through tools and...",
      "headings": [
        "Why Tools Matter",
        "Types of Tools",
        "Tool Design Best Practices",
        "The N×M Integration Problem",
        "Model Context Protocol (MCP)",
        "MCP Primitives",
        "Tool Annotations",
        "Security Challenges",
        "Enterprise Readiness Gaps",
        "Connecting the Dots",
        "Key Takeaways",
        "References"
      ]
    },
    {
      "slug": "Google-Introduction-to-Agents-Whitepaper-Summary",
      "title": "Summary: Google's Introduction to Agents",
      "url": "https://vanducng.dev/2026/01/10/Google-Introduction-to-Agents-Whitepaper-Summary/",
      "markdown_url": "https://vanducng.dev/2026/01/10/Google-Introduction-to-Agents-Whitepaper-Summary.md",
      "date": "2026-01-10T22:00:00+00:00",
      "series": "agentic-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "agentic-ai",
        "multi-agent",
        "agent-ops"
      ],
      "summary": "As part of our journey exploring agentic AI systems, Google’s November 2025 whitepaper “Introduction to Agents” offers valuable industry perspective on production-grade agent architecture. This post summarizes the key concepts: core architecture, Agent Ops, security patterns,...",
      "headings": [
        "The Paradigm Shift: From Predictive AI to Autonomous Agents",
        "What is an AI Agent?",
        "The Agentic Problem-Solving Process",
        "A Taxonomy of Agentic Systems",
        "Core Agent Architecture Deep Dive",
        "Agent Ops: A Structured Approach to the Unpredictable",
        "Agent Interoperability",
        "Securing AI Agents",
        "How Agents Evolve and Learn",
        "Advanced Agent Examples",
        "Conclusion",
        "Related Reading"
      ]
    },
    {
      "slug": "Orchestrating-Financial-Operations",
      "title": "Orchestrating Financial Operations",
      "url": "https://vanducng.dev/2026/01/09/Orchestrating-Financial-Operations/",
      "markdown_url": "https://vanducng.dev/2026/01/09/Orchestrating-Financial-Operations.md",
      "date": "2026-01-09T09:00:00+00:00",
      "series": "finance-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "python",
        "finance",
        "multi-agent"
      ],
      "summary": "When financial workflows become too complex for simple parallel processing or chaining, the orchestrator-worker pattern provides dynamic coordination. Unlike fixed workflows, an orchestrator analyzes problems at runtime, breaks them into subtasks, and delegates work to...",
      "headings": [
        "The Orchestrator-Worker Pattern",
        "Orchestrator vs Simple Parallelization",
        "Applied Example: SWIFT Audit Report Generation",
        "Task Coordination Patterns",
        "LLM-Powered Advantages",
        "Complete SWIFT Processing Pipeline",
        "Production Considerations",
        "Takeaways"
      ]
    },
    {
      "slug": "Parallel-Processing-and-Quality-Control-in-Finance",
      "title": "Parallel Processing and Quality Control in Finance",
      "url": "https://vanducng.dev/2026/01/06/Parallel-Processing-and-Quality-Control-in-Finance/",
      "markdown_url": "https://vanducng.dev/2026/01/06/Parallel-Processing-and-Quality-Control-in-Finance.md",
      "date": "2026-01-06T09:00:00+00:00",
      "series": "finance-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "python",
        "finance"
      ],
      "summary": "Financial analysis often requires examining multiple dimensions simultaneously - market data, sentiment, risk factors, regulatory compliance. Rather than processing these sequentially, parallel workflows distribute work across multiple agents for speed and diverse...",
      "headings": [
        "The Power of Parallel Processing",
        "Task Decomposition Strategies",
        "Aggregation Strategies",
        "The Evaluator-Optimizer Pattern",
        "Applied Example: Investment Research Pipeline",
        "Financial-Specific Considerations",
        "Takeaways"
      ]
    },
    {
      "slug": "Prompt-Chaining-and-Routing-in-Trading-Systems",
      "title": "Prompt Chaining and Routing in Trading Systems",
      "url": "https://vanducng.dev/2026/01/03/Prompt-Chaining-and-Routing-in-Trading-Systems/",
      "markdown_url": "https://vanducng.dev/2026/01/03/Prompt-Chaining-and-Routing-in-Trading-Systems.md",
      "date": "2026-01-03T09:00:00+00:00",
      "series": "finance-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "python",
        "finance"
      ],
      "summary": "Trading systems process diverse request types - market orders, limit orders, options, compliance checks - each requiring specialized handling. Two fundamental patterns enable this: prompt chaining for sequential multi-step processing, and routing for intelligent task...",
      "headings": [
        "Prompt Chaining: The Assembly Line",
        "Validation Strategies",
        "Handling Validation Failures",
        "The Routing Pattern",
        "Applied Example: Trade Order Pipeline",
        "Context Management in Chains",
        "Takeaways"
      ]
    },
    {
      "slug": "Modeling-Agentic-Workflows-for-Finance",
      "title": "Modeling Agentic Workflows for Finance",
      "url": "https://vanducng.dev/2025/12/31/Modeling-Agentic-Workflows-for-Finance/",
      "markdown_url": "https://vanducng.dev/2025/12/31/Modeling-Agentic-Workflows-for-Finance.md",
      "date": "2025-12-31T09:00:00+00:00",
      "series": "finance-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "python",
        "finance",
        "multi-agent"
      ],
      "summary": "Moving from individual prompts to production systems requires thinking architecturally. Financial workflows aren’t just chains of prompts - they’re coordinated systems where multiple specialized agents work together. Understanding how to model these workflows is essential for...",
      "headings": [
        "From Automation to Agentic Systems",
        "Two Approaches to Workflow Modeling",
        "The Agent Complexity Spectrum",
        "Visual Workflow Modeling",
        "Applied Example: SWIFT Message Processing",
        "Deterministic vs Agentic: When to Use Which",
        "Design Principles for Financial Workflows",
        "Takeaways"
      ]
    },
    {
      "slug": "Building-Financial-Prompt-Pipelines",
      "title": "Building Financial Prompt Pipelines",
      "url": "https://vanducng.dev/2025/12/28/Building-Financial-Prompt-Pipelines/",
      "markdown_url": "https://vanducng.dev/2025/12/28/Building-Financial-Prompt-Pipelines.md",
      "date": "2025-12-28T09:00:00+00:00",
      "series": "finance-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "python",
        "finance"
      ],
      "summary": "Once you have effective prompts for individual tasks, the next challenge is connecting them into reliable workflows. Financial services demand more than single-shot responses - they require multi-stage pipelines with validation at every step. Prompt chaining and feedback...",
      "headings": [
        "From Single Prompts to Pipelines",
        "Prompt Chaining Fundamentals",
        "Gate Checks: Quality Control Between Steps",
        "LLM Feedback Loops",
        "Applied Example: Investment Advisory Pipeline",
        "Monitoring and Debugging Pipelines",
        "Best Practices for Financial Pipelines",
        "Takeaways"
      ]
    },
    {
      "slug": "Reasoning-Chains-for-Financial-Decisions",
      "title": "Reasoning Chains for Financial Decisions",
      "url": "https://vanducng.dev/2025/12/25/Reasoning-Chains-for-Financial-Decisions/",
      "markdown_url": "https://vanducng.dev/2025/12/25/Reasoning-Chains-for-Financial-Decisions.md",
      "date": "2025-12-25T09:00:00+00:00",
      "series": "finance-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "python",
        "finance"
      ],
      "summary": "Financial decisions require more than quick answers - they demand transparent, auditable reasoning. When an AI flags a transaction as fraudulent or recommends a portfolio rebalancing, stakeholders need to understand why. Chain-of-Thought and ReACT prompting techniques...",
      "headings": [
        "The Problem with Direct Answers",
        "Chain-of-Thought Prompting",
        "ReACT: Reasoning with Action",
        "Applied Example: Fraud Detection",
        "Prompt Refinement Best Practices",
        "Combining Techniques",
        "Why This Matters for Finance",
        "Takeaways"
      ]
    },
    {
      "slug": "Role-Based-Prompting-for-Financial-Analysts",
      "title": "Role-Based Prompting for Financial Analysts",
      "url": "https://vanducng.dev/2025/12/22/Role-Based-Prompting-for-Financial-Analysts/",
      "markdown_url": "https://vanducng.dev/2025/12/22/Role-Based-Prompting-for-Financial-Analysts.md",
      "date": "2025-12-22T09:00:00+00:00",
      "series": "finance-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "python",
        "finance"
      ],
      "summary": "When you ask an LLM to “help with financial planning,” you might get a generic response that misses the nuance your situation requires. But what if you could transform that same LLM into a specialized Certified Financial Planner with 10 years of experience in debt management...",
      "headings": [
        "The Problem with Generic AI Responses",
        "What is Role-Based Prompting?",
        "Crafting Effective Role-Based Prompts",
        "Progressive Refinement for Financial Personas",
        "Evaluating Persona Adherence",
        "Financial Domain Applications",
        "Key Principles for Financial Personas",
        "Connecting to Foundational Concepts",
        "Takeaways"
      ]
    },
    {
      "slug": "Building-Intelligent-AI-Systems-A-Complete-Guide-to-Agentic-AI",
      "title": "Building Intelligent AI Systems - A Complete Guide to Agentic AI",
      "url": "https://vanducng.dev/2025/12/18/Building-Intelligent-AI-Systems-A-Complete-Guide-to-Agentic-AI/",
      "markdown_url": "https://vanducng.dev/2025/12/18/Building-Intelligent-AI-Systems-A-Complete-Guide-to-Agentic-AI.md",
      "date": "2025-12-18T09:00:00+00:00",
      "series": "agentic-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "agentic-ai",
        "multi-agent"
      ],
      "summary": "Over the past few months, I’ve been exploring the world of agentic AI - systems where language models don’t just generate text, but reason, plan, and take action. This post serves as both an introduction and a roadmap to the complete series, sharing my thoughts on the key...",
      "headings": [
        "What is Agentic AI?",
        "The Complete Series",
        "Core Concepts That Matter Most",
        "Best Practices I've Learned",
        "Tools and Frameworks",
        "Final Thoughts"
      ]
    },
    {
      "slug": "Multi-Agent-RAG-and-Building-Complete-Systems",
      "title": "Multi-Agent RAG and Building Complete Systems",
      "url": "https://vanducng.dev/2025/12/15/Multi-Agent-RAG-and-Building-Complete-Systems/",
      "markdown_url": "https://vanducng.dev/2025/12/15/Multi-Agent-RAG-and-Building-Complete-Systems.md",
      "date": "2025-12-15T09:00:00+00:00",
      "series": "agentic-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "agentic-ai",
        "python",
        "rag",
        "multi-agent"
      ],
      "summary": "Standard RAG retrieves from a single source, but real problems often require information from multiple specialized domains. Multi-Agent RAG coordinates multiple retrieval specialists, each expert in querying specific data sources, then synthesizes their findings into coherent...",
      "headings": [
        "The Limits of Single-Source RAG",
        "Multi-Agent RAG Architecture",
        "Complete Multi-Agent RAG Implementation",
        "Parallel Retrieval Pattern",
        "Privacy-Aware Retrieval",
        "Building Complete Systems",
        "Production Best Practices",
        "Key Takeaways from the Series"
      ]
    },
    {
      "slug": "Multi-Agent-Routing-State-and-Coordination",
      "title": "Multi-Agent Routing, State, and Coordination",
      "url": "https://vanducng.dev/2025/12/12/Multi-Agent-Routing-State-and-Coordination/",
      "markdown_url": "https://vanducng.dev/2025/12/12/Multi-Agent-Routing-State-and-Coordination.md",
      "date": "2025-12-12T09:00:00+00:00",
      "series": "agentic-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "agentic-ai",
        "python",
        "multi-agent"
      ],
      "summary": "When multiple agents work together, three challenges emerge: how do requests reach the right agent (routing), how does information flow between agents (data flow), and how do agents maintain a consistent view of the world (state coordination). In this post, I’ll explore...",
      "headings": [
        "Routing in Multi-Agent Systems",
        "Three Core Routing Patterns",
        "Data Flow Management",
        "State Management in Multi-Agent Systems",
        "State Synchronization Strategies",
        "Conflict Resolution",
        "Failure Handling Patterns",
        "Key Takeaways"
      ]
    },
    {
      "slug": "6-Prompt-Engineering-Techniques-Used-by-Top-AI-Engineers",
      "title": "6 Prompt Engineering Techniques Used by Top AI Engineers",
      "url": "https://vanducng.dev/2025/12/10/6-Prompt-Engineering-Techniques-Used-by-Top-AI-Engineers/",
      "markdown_url": "https://vanducng.dev/2025/12/10/6-Prompt-Engineering-Techniques-Used-by-Top-AI-Engineers.md",
      "date": "2025-12-10T19:55:23+00:00",
      "series": null,
      "categories": [
        "Notes"
      ],
      "tags": [
        "llm",
        "prompt-engineering",
        "ai"
      ],
      "summary": "Top engineers at OpenAI, Anthropic, and Google don’t prompt like most people do. They use specific techniques that turn mediocre outputs into production-grade results. Here are 6 techniques that actually work, with templates you can steal and adapt for your own use.",
      "headings": [
        "Technique 1: Constraint-Based Prompting",
        "Technique 2: Multi-Shot with Failure Cases",
        "Technique 3: Metacognitive Scaffolding",
        "Technique 4: Differential Prompting",
        "Technique 5: Specification-Driven Generation",
        "Technique 6: Chain-of-Verification",
        "Key Takeaways",
        "Reference"
      ]
    },
    {
      "slug": "Designing-Multi-Agent-Architecture-From-Solo-to-Ensemble",
      "title": "Designing Multi-Agent Architecture - From Solo to Ensemble",
      "url": "https://vanducng.dev/2025/12/08/Designing-Multi-Agent-Architecture-From-Solo-to-Ensemble/",
      "markdown_url": "https://vanducng.dev/2025/12/08/Designing-Multi-Agent-Architecture-From-Solo-to-Ensemble.md",
      "date": "2025-12-08T09:00:00+00:00",
      "series": "agentic-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "agentic-ai",
        "python",
        "multi-agent"
      ],
      "summary": "A single agent can accomplish a lot, but complex real-world tasks often exceed what any one specialist can handle. Just as organizations divide work among departments, multi-agent systems distribute responsibilities across specialized agents that collaborate toward shared...",
      "headings": [
        "Why Multiple Agents?",
        "Two Primary Architecture Patterns",
        "Designing Your Architecture",
        "Implementing an Orchestrator Pattern",
        "Orchestration Patterns",
        "Building Effective Tools for Agents",
        "Design Best Practices",
        "Key Takeaways"
      ]
    },
    {
      "slug": "Agentic-RAG-and-Agent-Evaluation-Strategies",
      "title": "Agentic RAG and Agent Evaluation Strategies",
      "url": "https://vanducng.dev/2025/12/05/Agentic-RAG-and-Agent-Evaluation-Strategies/",
      "markdown_url": "https://vanducng.dev/2025/12/05/Agentic-RAG-and-Agent-Evaluation-Strategies.md",
      "date": "2025-12-05T09:00:00+00:00",
      "series": "agentic-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "agentic-ai",
        "python",
        "rag",
        "evaluation"
      ],
      "summary": "Traditional RAG (Retrieval-Augmented Generation) follows a fixed pattern: query in, documents out, response generated. But what if the agent could decide when and how to retrieve? Agentic RAG gives agents control over their own knowledge acquisition. In this post, I’ll...",
      "headings": [
        "The Limits of Traditional RAG",
        "Agentic RAG: The Agent Decides",
        "Implementing Agentic RAG",
        "Hybrid Search Strategies",
        "Agent Evaluation: Why It Matters",
        "Evaluation Dimensions",
        "Building an Evaluation Framework",
        "LLM-as-Judge Evaluation",
        "Continuous Monitoring",
        "Key Takeaways"
      ]
    },
    {
      "slug": "Connecting-Agents-to-the-World-External-APIs-and-Data",
      "title": "Connecting Agents to the World - External APIs and Data",
      "url": "https://vanducng.dev/2025/11/30/Connecting-Agents-to-the-World-External-APIs-and-Data/",
      "markdown_url": "https://vanducng.dev/2025/11/30/Connecting-Agents-to-the-World-External-APIs-and-Data.md",
      "date": "2025-11-30T09:00:00+00:00",
      "series": "agentic-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "agentic-ai",
        "python",
        "api"
      ],
      "summary": "An agent that can only process text is fundamentally limited. Real usefulness comes from connecting to external systems - fetching live data, querying databases, calling APIs, and triggering actions in the real world. In this post, I’ll explore how to build these connections,...",
      "headings": [
        "The Integration Challenge",
        "Web Search Integration",
        "Database Connections",
        "REST API Integration",
        "File System Operations",
        "Building a Multi-Tool Agent",
        "Security Considerations",
        "Error Handling Patterns",
        "Key Takeaways"
      ]
    },
    {
      "slug": "Agent-State-and-Memory-Beyond-Single-Interactions",
      "title": "Agent State and Memory - Beyond Single Interactions",
      "url": "https://vanducng.dev/2025/11/25/Agent-State-and-Memory-Beyond-Single-Interactions/",
      "markdown_url": "https://vanducng.dev/2025/11/25/Agent-State-and-Memory-Beyond-Single-Interactions.md",
      "date": "2025-11-25T09:00:00+00:00",
      "series": "agentic-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "agentic-ai",
        "python",
        "memory"
      ],
      "summary": "A stateless agent treats every interaction as its first - no memory of previous conversations, no awareness of ongoing tasks, no accumulated context. While this works for simple Q&amp;A, real-world applications demand more. In this post, I’ll explore how to give agents memory...",
      "headings": [
        "The Stateless Problem",
        "What is Agent State?",
        "State as a Graph",
        "Implementing Basic State Management",
        "Short-Term vs Long-Term Memory",
        "Memory Types: A Cognitive Perspective",
        "Memory Update Mechanisms",
        "State Machines with LangGraph",
        "Checkpointing: Saving and Restoring State",
        "Managing Context Windows",
        "Practical Pattern: Session Manager",
        "Key Takeaways",
        "References"
      ]
    },
    {
      "slug": "Extending-Agents-with-Tools-and-Structured-Outputs",
      "title": "Extending Agents with Tools and Structured Outputs",
      "url": "https://vanducng.dev/2025/11/20/Extending-Agents-with-Tools-and-Structured-Outputs/",
      "markdown_url": "https://vanducng.dev/2025/11/20/Extending-Agents-with-Tools-and-Structured-Outputs.md",
      "date": "2025-11-20T09:00:00+00:00",
      "series": "agentic-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "agentic-ai",
        "python",
        "tool-calling"
      ],
      "summary": "Language models are impressive reasoners, but without tools they can only generate text. They can’t check real-time data, perform precise calculations, or interact with external systems. In this post, I’ll explore how to extend agents with tools through function calling, and...",
      "headings": [
        "From Passive to Active AI",
        "Function Calling: The Bridge",
        "Building a Complete Agent Class",
        "The Problem with Unstructured Output",
        "Structured Outputs with Pydantic",
        "Common Tool Patterns",
        "Best Practices",
        "Key Takeaways"
      ]
    },
    {
      "slug": "Evaluator-Optimizer-and-Orchestrator-Worker-Patterns",
      "title": "Evaluator-Optimizer and Orchestrator-Worker Patterns",
      "url": "https://vanducng.dev/2025/11/15/Evaluator-Optimizer-and-Orchestrator-Worker-Patterns/",
      "markdown_url": "https://vanducng.dev/2025/11/15/Evaluator-Optimizer-and-Orchestrator-Worker-Patterns.md",
      "date": "2025-11-15T09:00:00+00:00",
      "series": "agentic-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "agentic-ai",
        "python"
      ],
      "summary": "Some tasks require iteration - generating, evaluating, and refining until quality standards are met. Others need dynamic orchestration - a central coordinator breaking down novel problems and delegating to specialists. In this post, I’ll cover two sophisticated patterns that...",
      "headings": [
        "The Evaluator-Optimizer Pattern",
        "The Orchestrator-Worker Pattern",
        "Combining Patterns",
        "Key Takeaways"
      ]
    },
    {
      "slug": "Routing-and-Parallelization-Patterns-for-AI-Agents",
      "title": "Routing and Parallelization Patterns for AI Agents",
      "url": "https://vanducng.dev/2025/11/10/Routing-and-Parallelization-Patterns-for-AI-Agents/",
      "markdown_url": "https://vanducng.dev/2025/11/10/Routing-and-Parallelization-Patterns-for-AI-Agents.md",
      "date": "2025-11-10T09:00:00+00:00",
      "series": "agentic-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "agentic-ai",
        "python"
      ],
      "summary": "Sequential chains work well when tasks have a clear order, but real-world problems often require more flexibility. Sometimes you need to route tasks to different specialists based on their content. Other times, multiple agents should work simultaneously on different aspects...",
      "headings": [
        "The Routing Pattern",
        "The Parallelization Pattern",
        "Combining Routing and Parallelization",
        "Key Takeaways"
      ]
    },
    {
      "slug": "Prompt-Chaining-Workflows-Sequential-Task-Decomposition",
      "title": "Prompt Chaining Workflows - Sequential Task Decomposition",
      "url": "https://vanducng.dev/2025/11/05/Prompt-Chaining-Workflows-Sequential-Task-Decomposition/",
      "markdown_url": "https://vanducng.dev/2025/11/05/Prompt-Chaining-Workflows-Sequential-Task-Decomposition.md",
      "date": "2025-11-05T09:00:00+00:00",
      "series": "agentic-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "agentic-ai",
        "python"
      ],
      "summary": "When a single prompt isn’t enough, we chain them together. Prompt chaining is one of the most practical patterns for building AI workflows - breaking complex tasks into focused steps where each agent’s output feeds into the next. In this post, I’ll explore how to design,...",
      "headings": [
        "The Assembly Line Analogy",
        "The Challenge: Error Propagation",
        "Validation Strategies",
        "Error Handling Approaches",
        "Context Management",
        "Implementation: Article Generation Chain",
        "Advanced Pattern: Multi-Source Convergence",
        "Best Practices for Prompt Chains",
        "Key Takeaways"
      ]
    },
    {
      "slug": "Anatomy-of-an-AI-Agent-Building-Blocks-and-Workflows",
      "title": "Anatomy of an AI Agent - Building Blocks and Workflows",
      "url": "https://vanducng.dev/2025/10/30/Anatomy-of-an-AI-Agent-Building-Blocks-and-Workflows/",
      "markdown_url": "https://vanducng.dev/2025/10/30/Anatomy-of-an-AI-Agent-Building-Blocks-and-Workflows.md",
      "date": "2025-10-30T09:00:00+00:00",
      "series": "agentic-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "agentic-ai",
        "python"
      ],
      "summary": "Moving beyond simple prompting techniques, it’s time to examine what actually makes an AI agent tick. In this post, I’ll break down the core components that transform a language model from a sophisticated autocomplete into an autonomous problem-solver, and explore how to...",
      "headings": [
        "From Functions to Agents",
        "The Modern AI Agent's Core Capabilities",
        "Five Core Components of an Agent",
        "Agent Sophistication Levels",
        "Modeling Agent Workflows",
        "Implementing a Simple Agent System",
        "Key Principles for Agent Design",
        "Key Takeaways"
      ]
    },
    {
      "slug": "Building-Reliable-AI-Chains-Gates-and-Self-Improvement",
      "title": "Building Reliable AI - Chains, Gates, and Self-Improvement",
      "url": "https://vanducng.dev/2025/10/25/Building-Reliable-AI-Chains-Gates-and-Self-Improvement/",
      "markdown_url": "https://vanducng.dev/2025/10/25/Building-Reliable-AI-Chains-Gates-and-Self-Improvement.md",
      "date": "2025-10-25T09:00:00+00:00",
      "series": "agentic-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "agentic-ai",
        "python"
      ],
      "summary": "AI systems that work once under ideal conditions are interesting. AI systems that work reliably in production are valuable. In this final post of the series, I’ll share techniques for building robust AI workflows - connecting multiple reasoning steps, validating outputs along...",
      "headings": [
        "The Limits of Single-Shot Prompts",
        "Breaking Work into Manageable Steps",
        "Connecting the Chain Programmatically",
        "The Problem: Errors Cascade",
        "Introducing Validation Gates",
        "Building Self-Improving Systems",
        "Monitoring and Observability",
        "Putting It All Together",
        "Key Takeaways"
      ]
    },
    {
      "slug": "Step-by-Step-Reasoning-How-AI-Learns-to-Think",
      "title": "Step-by-Step Reasoning - How AI Learns to Think",
      "url": "https://vanducng.dev/2025/10/20/Step-by-Step-Reasoning-How-AI-Learns-to-Think/",
      "markdown_url": "https://vanducng.dev/2025/10/20/Step-by-Step-Reasoning-How-AI-Learns-to-Think.md",
      "date": "2025-10-20T09:00:00+00:00",
      "series": "agentic-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "agentic-ai"
      ],
      "summary": "Language models are great at many things, but complex reasoning isn’t always their strong suit. Ask a straightforward question and you’ll get a decent answer. Ask something that requires multiple logical steps, and things get shaky. In this post, I’ll share two powerful...",
      "headings": [
        "The Problem with Direct Answers",
        "Teaching AI to Show Its Work",
        "When Thinking Isn't Enough: Adding Action",
        "Building a Financial Research Assistant",
        "Combining the Techniques",
        "Key Takeaways"
      ]
    },
    {
      "slug": "From-Chatbots-to-Agents-Understanding-Intelligent-AI-Systems",
      "title": "From Chatbots to Agents - Understanding Intelligent AI Systems",
      "url": "https://vanducng.dev/2025/10/15/From-Chatbots-to-Agents-Understanding-Intelligent-AI-Systems/",
      "markdown_url": "https://vanducng.dev/2025/10/15/From-Chatbots-to-Agents-Understanding-Intelligent-AI-Systems.md",
      "date": "2025-10-15T09:00:00+00:00",
      "series": "agentic-ai",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "agentic-ai"
      ],
      "summary": "Have you ever wondered why some AI assistants feel genuinely helpful while others just regurgitate generic responses? The difference often comes down to how we guide and structure their behavior. In this post, I’ll share what I’ve learned about building AI systems that go...",
      "headings": [
        "Beyond Simple Text Generation",
        "What Makes an AI System \"Agentic\"?",
        "Giving AI a Persona",
        "Measuring Persona Effectiveness",
        "Key Takeaways"
      ]
    },
    {
      "slug": "From-Prototype-to-Production-LangGraph-Systems",
      "title": "From Prototype to Production - LangGraph Systems",
      "url": "https://vanducng.dev/2025/07/24/From-Prototype-to-Production-LangGraph-Systems/",
      "markdown_url": "https://vanducng.dev/2025/07/24/From-Prototype-to-Production-LangGraph-Systems.md",
      "date": "2025-07-24T09:00:00+00:00",
      "series": "langchain-langgraph",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "python",
        "langchain",
        "langgraph",
        "agents"
      ],
      "summary": "A working prototype is maybe 20% of production effort. The remaining 80% involves error handling, monitoring, deployment, scaling, and building systems that fail gracefully. This post covers the gap between “it works on my machine” and “it handles thousands of users reliably.”",
      "headings": [
        "The Production Gap",
        "Error Handling Strategies",
        "Structured Logging and Tracing",
        "Cost Management",
        "Deployment Architecture",
        "Complete Production Agent",
        "Deployment Checklist",
        "Key Takeaways"
      ]
    },
    {
      "slug": "Multi-Agent-Architecture-with-LangGraph",
      "title": "Multi-Agent Architecture with LangGraph",
      "url": "https://vanducng.dev/2025/07/10/Multi-Agent-Architecture-with-LangGraph/",
      "markdown_url": "https://vanducng.dev/2025/07/10/Multi-Agent-Architecture-with-LangGraph.md",
      "date": "2025-07-10T09:00:00+00:00",
      "series": "langchain-langgraph",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "python",
        "langchain",
        "langgraph",
        "agents"
      ],
      "summary": "Single agents hit a ceiling. When tasks require diverse expertise - research, coding, analysis, writing - a single agent either becomes overloaded with tools or produces mediocre results across domains. Multi-agent systems solve this by decomposing work among specialized...",
      "headings": [
        "The Specialization Principle",
        "Why Multiple Agents?",
        "Multi-Agent Patterns",
        "Agent Communication",
        "State Management Across Agents",
        "Building a Complete Multi-Agent System",
        "Conflict Resolution",
        "Key Takeaways"
      ]
    },
    {
      "slug": "Agentic-RAG-and-Human-in-the-Loop-with-LangGraph",
      "title": "Agentic RAG and Human-in-the-Loop with LangGraph",
      "url": "https://vanducng.dev/2025/06/26/Agentic-RAG-and-Human-in-the-Loop-with-LangGraph/",
      "markdown_url": "https://vanducng.dev/2025/06/26/Agentic-RAG-and-Human-in-the-Loop-with-LangGraph.md",
      "date": "2025-06-26T09:00:00+00:00",
      "series": "langchain-langgraph",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "python",
        "rag",
        "langchain",
        "langgraph",
        "agents"
      ],
      "summary": "Traditional RAG is a one-shot process: retrieve documents, generate answer, done. Agentic RAG breaks this limitation - agents can evaluate retrieval quality, reformulate queries, and iterate until they find what they need. Combined with human-in-the-loop patterns, you build...",
      "headings": [
        "The Retrieval Paradox",
        "The Limits of Static RAG",
        "Agentic RAG Patterns",
        "Human-in-the-Loop Patterns",
        "Checkpointing for Persistence",
        "Observability with LangSmith",
        "Agent Evaluation",
        "Key Takeaways"
      ]
    },
    {
      "slug": "Connecting-LangGraph-Agents-to-APIs-and-Databases",
      "title": "Connecting LangGraph Agents to APIs and Databases",
      "url": "https://vanducng.dev/2025/06/12/Connecting-LangGraph-Agents-to-APIs-and-Databases/",
      "markdown_url": "https://vanducng.dev/2025/06/12/Connecting-LangGraph-Agents-to-APIs-and-Databases.md",
      "date": "2025-06-12T09:00:00+00:00",
      "series": "langchain-langgraph",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "python",
        "langchain",
        "langgraph",
        "agents"
      ],
      "summary": "Agents become truly useful when they can interact with the real world - fetching live data from APIs, querying databases, and writing results back. This post covers building production-grade integrations: API tools with proper error handling, SQL agents that translate natural...",
      "headings": [
        "The Grounding Problem",
        "API Integration: Beyond Simple HTTP Calls",
        "Text-to-SQL: Power and Peril",
        "Combining Data Sources",
        "Audit and Observability",
        "Key Takeaways"
      ]
    },
    {
      "slug": "LangGraph-State-Graphs-for-Agentic-Workflows",
      "title": "LangGraph - State Graphs for Agentic Workflows",
      "url": "https://vanducng.dev/2025/05/29/LangGraph-State-Graphs-for-Agentic-Workflows/",
      "markdown_url": "https://vanducng.dev/2025/05/29/LangGraph-State-Graphs-for-Agentic-Workflows.md",
      "date": "2025-05-29T09:00:00+00:00",
      "series": "langchain-langgraph",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "python",
        "langchain",
        "langgraph",
        "agents"
      ],
      "summary": "LCEL chains are powerful but limited - they can’t loop, branch dynamically, or maintain complex state between steps. LangGraph solves this by modeling agent workflows as state machines: graphs where nodes are processing steps and edges define control flow. This explicit...",
      "headings": [
        "From Chains to Graphs: Why the Shift Matters",
        "The Three Pillars: State, Nodes, and Edges",
        "Building Your First Graph",
        "The Tool-Calling Agent Loop",
        "Checkpointing: Persistence and Time Travel",
        "MessagesState: The Common Case",
        "Streaming: Real-Time Feedback",
        "Visualization and Introspection",
        "Key Takeaways"
      ]
    },
    {
      "slug": "Building-Agents-with-LCEL-and-Tool-Integration",
      "title": "Building Agents with LCEL and Tool Integration",
      "url": "https://vanducng.dev/2025/05/15/Building-Agents-with-LCEL-and-Tool-Integration/",
      "markdown_url": "https://vanducng.dev/2025/05/15/Building-Agents-with-LCEL-and-Tool-Integration.md",
      "date": "2025-05-15T09:00:00+00:00",
      "series": "langchain-langgraph",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "python",
        "langchain",
        "langgraph",
        "agents"
      ],
      "summary": "The LangChain Expression Language (LCEL) transforms how we build LLM workflows. Instead of managing execution flow manually, LCEL lets you compose components declaratively - like Unix pipes for AI. Combined with tool integration, LCEL enables building agents that reason and...",
      "headings": [
        "The Philosophy Behind LCEL",
        "The Runnable Protocol: A Universal Interface",
        "Composition Patterns in LCEL",
        "Tools: Giving LLMs Hands",
        "The ReAct Pattern: Reasoning and Acting",
        "The Limitations of LCEL for Agents",
        "Error Handling in Tool Execution",
        "Key Takeaways"
      ]
    },
    {
      "slug": "Mastering-LangChain-and-LangGraph-A-Practitioners-Guide",
      "title": "Mastering LangChain and LangGraph - A Practitioner's Guide",
      "url": "https://vanducng.dev/2025/05/01/Mastering-LangChain-and-LangGraph-A-Practitioners-Guide/",
      "markdown_url": "https://vanducng.dev/2025/05/01/Mastering-LangChain-and-LangGraph-A-Practitioners-Guide.md",
      "date": "2025-05-01T09:00:00+00:00",
      "series": "langchain-langgraph",
      "categories": [
        "AI"
      ],
      "tags": [
        "llm",
        "python",
        "langchain",
        "langgraph",
        "agents"
      ],
      "summary": "If you’ve been building with LLMs, you’ve likely encountered the gap between simple API calls and production-ready agent systems. LangChain and LangGraph bridge that gap, providing the abstractions and patterns needed to build reliable, maintainable AI applications. This...",
      "headings": [
        "What This Series Covers",
        "The Evolution from API Calls to Frameworks",
        "Why LangChain?",
        "Core Architecture",
        "Prompt Templates: Beyond String Formatting",
        "Managing Conversation State",
        "Structured Outputs: From Text to Data",
        "The Runnable Protocol",
        "Key Takeaways"
      ]
    },
    {
      "slug": "TIL-Setup-MCP-Server-in-Claude-Code",
      "title": "TIL: Setup MCP Server in Claude Code",
      "url": "https://vanducng.dev/2024/12/04/TIL-Setup-MCP-Server-in-Claude-Code/",
      "markdown_url": "https://vanducng.dev/2024/12/04/TIL-Setup-MCP-Server-in-Claude-Code.md",
      "date": "2024-12-04T23:30:00+00:00",
      "series": null,
      "categories": [
        "Notes"
      ],
      "tags": [
        "llm"
      ],
      "summary": "Quick guide to add a Model Context Protocol (MCP) server to Claude Code CLI.",
      "headings": [
        "The Command",
        "Example: Adding a Remote MCP Server",
        "Scope Options",
        "Useful Commands",
        "Note"
      ]
    },
    {
      "slug": "Securing-Go-APIs-OWASP-Best-Practices",
      "title": "Securing Go APIs: OWASP Best Practices",
      "url": "https://vanducng.dev/2024/05/03/Securing-Go-APIs-OWASP-Best-Practices/",
      "markdown_url": "https://vanducng.dev/2024/05/03/Securing-Go-APIs-OWASP-Best-Practices.md",
      "date": "2024-05-03T09:00:00+00:00",
      "series": "go-backend",
      "categories": [
        "Backend"
      ],
      "tags": [
        "go",
        "security",
        "api"
      ],
      "summary": "Security isn’t an afterthought - it’s a fundamental requirement for any production API. This post covers the OWASP API Security Top 10 vulnerabilities and practical Go implementations to protect your applications.",
      "headings": [
        "OWASP API Security Top 10",
        "SQL Injection Prevention",
        "Input Validation",
        "Mass Assignment Protection",
        "Security Headers",
        "Rate Limiting",
        "Structured Logging",
        "Security Audit Logging",
        "HTTPS and TLS",
        "Security Checklist",
        "Summary"
      ]
    },
    {
      "slug": "Authorization-Patterns-RBAC-ABAC-Go",
      "title": "Authorization Patterns: RBAC and ABAC in Go",
      "url": "https://vanducng.dev/2024/04/26/Authorization-Patterns-RBAC-ABAC-Go/",
      "markdown_url": "https://vanducng.dev/2024/04/26/Authorization-Patterns-RBAC-ABAC-Go.md",
      "date": "2024-04-26T09:00:00+00:00",
      "series": "go-backend",
      "categories": [
        "Backend"
      ],
      "tags": [
        "go",
        "security",
        "api"
      ],
      "summary": "After authentication confirms user identity, authorization determines what they can access. This post covers two powerful authorization models: Role-Based Access Control (RBAC) and Attribute-Based Access Control (ABAC), with practical Go implementations.",
      "headings": [
        "Authorization Models Overview",
        "Role-Based Access Control (RBAC)",
        "Attribute-Based Access Control (ABAC)",
        "Combining RBAC and ABAC",
        "Resource Ownership Check",
        "Summary"
      ]
    },
    {
      "slug": "JWT-Authentication-in-Go",
      "title": "JWT Authentication in Go",
      "url": "https://vanducng.dev/2024/04/19/JWT-Authentication-in-Go/",
      "markdown_url": "https://vanducng.dev/2024/04/19/JWT-Authentication-in-Go.md",
      "date": "2024-04-19T09:00:00+00:00",
      "series": "go-backend",
      "categories": [
        "Backend"
      ],
      "tags": [
        "go",
        "security",
        "api"
      ],
      "summary": "Authentication verifies who users are, while authorization determines what they can access. This post covers implementing JWT (JSON Web Token) authentication in Go - the most common approach for stateless API authentication.",
      "headings": [
        "Authentication vs Authorization",
        "Session vs Token Authentication",
        "JWT Structure",
        "Implementing JWT in Go",
        "Authentication Handlers",
        "Authentication Middleware",
        "Token Storage Best Practices",
        "Complete Auth Flow",
        "Summary"
      ]
    },
    {
      "slug": "Scaling-Go-APIs-Pagination-Caching-Rate-Limiting",
      "title": "Scaling Go APIs: Pagination, Caching, and Rate Limiting",
      "url": "https://vanducng.dev/2024/04/12/Scaling-Go-APIs-Pagination-Caching-Rate-Limiting/",
      "markdown_url": "https://vanducng.dev/2024/04/12/Scaling-Go-APIs-Pagination-Caching-Rate-Limiting.md",
      "date": "2024-04-12T09:00:00+00:00",
      "series": "go-backend",
      "categories": [
        "Backend"
      ],
      "tags": [
        "go",
        "api"
      ],
      "summary": "As your API grows, handling thousands of records and requests requires thoughtful scaling strategies. This post covers essential techniques for scaling Go APIs: pagination for large datasets, caching for performance, filtering and sorting for flexibility, and rate limiting...",
      "headings": [
        "Why Scaling Matters",
        "Pagination",
        "Filtering",
        "Sorting",
        "Caching",
        "Rate Limiting",
        "Load Balancing Concepts",
        "Performance Summary"
      ]
    },
    {
      "slug": "Go-Middleware-and-Concurrency-Patterns",
      "title": "Go Middleware and Concurrency Patterns",
      "url": "https://vanducng.dev/2024/04/05/Go-Middleware-and-Concurrency-Patterns/",
      "markdown_url": "https://vanducng.dev/2024/04/05/Go-Middleware-and-Concurrency-Patterns.md",
      "date": "2024-04-05T09:00:00+00:00",
      "series": "go-backend",
      "categories": [
        "Backend"
      ],
      "tags": [
        "go",
        "api"
      ],
      "summary": "Middleware and concurrency are two powerful features that make Go excellent for backend development. Middleware enables cross-cutting concerns like logging and authentication, while Go’s goroutines and channels provide elegant solutions for concurrent processing. This post...",
      "headings": [
        "Understanding Middleware",
        "Common Middleware Patterns",
        "Concurrency in Go",
        "Concurrency Patterns for APIs",
        "Context Propagation",
        "Error Handling in Concurrent Code",
        "Summary"
      ]
    },
    {
      "slug": "Building-REST-APIs-with-Go-and-Gin",
      "title": "Building REST APIs with Go and Gin",
      "url": "https://vanducng.dev/2024/03/29/Building-REST-APIs-with-Go-and-Gin/",
      "markdown_url": "https://vanducng.dev/2024/03/29/Building-REST-APIs-with-Go-and-Gin.md",
      "date": "2024-03-29T09:00:00+00:00",
      "series": "go-backend",
      "categories": [
        "Backend"
      ],
      "tags": [
        "go",
        "api"
      ],
      "summary": "Gin is Go’s most popular web framework, offering a martini-like API with up to 40x better performance. This post covers building production-ready REST APIs with Gin, from basic routing to data validation and CRUD operations.",
      "headings": [
        "HTTP and REST Fundamentals",
        "Getting Started with Gin",
        "Request Handling",
        "Data Validation",
        "Building CRUD API",
        "API Response Patterns",
        "Error Handling",
        "Testing APIs",
        "Summary"
      ]
    },
    {
      "slug": "Database-Migrations-in-Go",
      "title": "Database Migrations in Go",
      "url": "https://vanducng.dev/2024/03/22/Database-Migrations-in-Go/",
      "markdown_url": "https://vanducng.dev/2024/03/22/Database-Migrations-in-Go.md",
      "date": "2024-03-22T09:00:00+00:00",
      "series": "go-backend",
      "categories": [
        "Backend"
      ],
      "tags": [
        "go",
        "postgresql"
      ],
      "summary": "Database migrations are essential for managing schema changes in production applications. As your application evolves, your database schema must evolve with it - adding tables, modifying columns, creating indexes. This post covers migration strategies and tools for Go...",
      "headings": [
        "Why Migrations Matter",
        "Migration Tools for Go",
        "Creating Migrations",
        "Running Migrations",
        "Safe Migration Patterns",
        "Migration in Production",
        "Team Workflow",
        "Recovery Scenarios",
        "Best Practices Checklist",
        "Summary"
      ]
    },
    {
      "slug": "Mastering-GORM-Go-Powerful-ORM",
      "title": "Mastering GORM: Go's Powerful ORM",
      "url": "https://vanducng.dev/2024/03/15/Mastering-GORM-Go-Powerful-ORM/",
      "markdown_url": "https://vanducng.dev/2024/03/15/Mastering-GORM-Go-Powerful-ORM.md",
      "date": "2024-03-15T09:00:00+00:00",
      "series": "go-backend",
      "categories": [
        "Backend"
      ],
      "tags": [
        "go",
        "postgresql"
      ],
      "summary": "GORM is Go’s most popular Object-Relational Mapping (ORM) library, providing an elegant way to work with databases using Go structs. Instead of writing raw SQL, GORM lets you interact with database records as Go objects, handling the translation between your code and the...",
      "headings": [
        "Why Use an ORM?",
        "Getting Started with GORM",
        "GORM Models",
        "CRUD Operations",
        "Relationships",
        "GORM Hooks",
        "Advanced Queries",
        "Transactions",
        "Auto-Migration",
        "Error Handling",
        "Best Practices",
        "Summary"
      ]
    },
    {
      "slug": "PostgreSQL-Fundamentals-for-Go-Developers",
      "title": "PostgreSQL Fundamentals for Go Developers",
      "url": "https://vanducng.dev/2024/03/08/PostgreSQL-Fundamentals-for-Go-Developers/",
      "markdown_url": "https://vanducng.dev/2024/03/08/PostgreSQL-Fundamentals-for-Go-Developers.md",
      "date": "2024-03-08T09:00:00+00:00",
      "series": "go-backend",
      "categories": [
        "Backend"
      ],
      "tags": [
        "go",
        "postgresql"
      ],
      "summary": "PostgreSQL is one of the most powerful open-source relational databases, and it pairs exceptionally well with Go for backend development. This post covers PostgreSQL fundamentals and demonstrates how to connect and interact with Postgres from Go using the pgx driver - the...",
      "headings": [
        "Why PostgreSQL?",
        "Setting Up PostgreSQL",
        "PostgreSQL Data Types",
        "Constraints and Indexes",
        "Connecting Go to PostgreSQL with pgx",
        "CRUD Operations with pgx",
        "Working with Transactions",
        "Query Optimization",
        "Best Practices",
        "Summary"
      ]
    },
    {
      "slug": "Why-Go-for-Backend-Development",
      "title": "Why Go for Backend Development",
      "url": "https://vanducng.dev/2024/03/01/Why-Go-for-Backend-Development/",
      "markdown_url": "https://vanducng.dev/2024/03/01/Why-Go-for-Backend-Development.md",
      "date": "2024-03-01T09:00:00+00:00",
      "series": "go-backend",
      "categories": [
        "Backend"
      ],
      "tags": [
        "go",
        "api"
      ],
      "summary": "Go (or Golang) has emerged as one of the most compelling choices for backend development. Originally created at Google to address challenges in building large-scale, concurrent systems, Go combines the efficiency of compiled languages with the simplicity of modern programming...",
      "headings": [
        "Go's Core Strengths",
        "Go for API Development",
        "When to Choose Go",
        "Go Ecosystem for Backend",
        "Getting Started",
        "Series Overview",
        "Key Takeaways"
      ]
    },
    {
      "slug": "Airflow-on-EKS",
      "title": "Airflow on EKS",
      "url": "https://vanducng.dev/2021/08/20/Airflow-on-EKS/",
      "markdown_url": "https://vanducng.dev/2021/08/20/Airflow-on-EKS.md",
      "date": "2021-08-20T16:45:11+00:00",
      "series": null,
      "categories": [
        "Data"
      ],
      "tags": [
        "aws",
        "airflow",
        "docker"
      ],
      "summary": "Airflow is a powerful platform to automate and manage workflows. There are several options to deploy Airflow on AWS, including MWAA, ECS OR EKS: Deploying Airflow on AWS Managed Workflow for Apache Airflow (MWAA): This option provides a fully managed service for Apache...",
      "headings": []
    },
    {
      "slug": "Data-lake-on-AWS",
      "title": "Data Lake on AWS",
      "url": "https://vanducng.dev/2021/06/21/Data-lake-on-AWS/",
      "markdown_url": "https://vanducng.dev/2021/06/21/Data-lake-on-AWS.md",
      "date": "2021-06-21T16:45:11+00:00",
      "series": null,
      "categories": [
        "Data"
      ],
      "tags": [
        "aws",
        "spark"
      ],
      "summary": "In our last post, we explored the topic of the Data Platform on AWS. This post continues the discussion by offering an in-depth look into the central component of the data platform, the data lake, which serves as the single source of truth. A data lake is a centralized...",
      "headings": [
        "Ingestion",
        "Storage",
        "Processing",
        "Meta Data and Governance",
        "Orchestration"
      ]
    },
    {
      "slug": "Data-platform-on-AWS",
      "title": "Data Platform on AWS",
      "url": "https://vanducng.dev/2021/05/21/Data-platform-on-AWS/",
      "markdown_url": "https://vanducng.dev/2021/05/21/Data-platform-on-AWS.md",
      "date": "2021-05-21T13:45:13+00:00",
      "series": null,
      "categories": [
        "Data"
      ],
      "tags": [
        "aws",
        "spark"
      ],
      "summary": "As AI continues to impact the world, the importance of data in business decision making has become increasingly apparent. Data also offers the potential to deliver greater value with less effort. To fully realize these benefits, it is essential to prioritize the development...",
      "headings": [
        "Sources",
        "Ingestion and Transformation",
        "Analytics Workflow based on DL & DWH"
      ]
    },
    {
      "slug": "Churn-rate-prediction-on-Sparkify-service",
      "title": "Churn rate prediction on Sparkify service",
      "url": "https://vanducng.dev/2021/02/21/Churn-rate-prediction-on-Sparkify-service/",
      "markdown_url": "https://vanducng.dev/2021/02/21/Churn-rate-prediction-on-Sparkify-service.md",
      "date": "2021-02-21T16:45:11+00:00",
      "series": null,
      "categories": [
        "Projects"
      ],
      "tags": [
        "python",
        "ml",
        "spark"
      ],
      "summary": "Spakify is a music streaming sevice as similar to Spotify. Every users’ activities on Sparkify application are logged and sent to Kafka cluster. To improve the business, the data team will collect data to a Big Data Platform for further processing, analysing and extracting...",
      "headings": [
        "Business understanding",
        "Dataset",
        "Data cleaning and exploration",
        "Feature engineering",
        "Model training and evaluation",
        "Conclusion and potential improvement"
      ]
    },
    {
      "slug": "Stackoverflow-survey-insights",
      "title": "Stackoverflow survey insights",
      "url": "https://vanducng.dev/2020/12/20/Stackoverflow-survey-insights/",
      "markdown_url": "https://vanducng.dev/2020/12/20/Stackoverflow-survey-insights.md",
      "date": "2020-12-20T20:11:53+00:00",
      "series": null,
      "categories": [
        "Notes"
      ],
      "tags": [
        "analysis"
      ],
      "summary": "Have you ever wonder you are underpay at work?Or you are not sure how much should be your well-deserved deal to a job offer?In this post, we will walk through Stack Overflow survey from developer over the world in 2020 to clear out these questions.",
      "headings": [
        "Why the analysis?",
        "Conclusion"
      ]
    },
    {
      "slug": "Compact-multiple-small-files-on-HDFS",
      "title": "Compact multiple small files on HDFS",
      "url": "https://vanducng.dev/2020/12/05/Compact-multiple-small-files-on-HDFS/",
      "markdown_url": "https://vanducng.dev/2020/12/05/Compact-multiple-small-files-on-HDFS.md",
      "date": "2020-12-05T13:03:53+00:00",
      "series": null,
      "categories": [
        "Data"
      ],
      "tags": [
        "spark",
        "hadoop"
      ],
      "summary": "Hadoop can handle with very big file size, but will encounter performance issue with too many files with small size. The reason is explained in detailed from here. In short, every single on a data node needs 150 bytes RAM on name node. The more files count, the more memory...",
      "headings": [
        "How small files orginated & How to prevent?",
        "What is spark-kompactor",
        "How it works",
        "How to run it",
        "References"
      ]
    },
    {
      "slug": "Salary-survey-in-Vietnam-market-2021",
      "title": "Salary survey in Vietnam market 2021 by First Aliances",
      "url": "https://vanducng.dev/2020/11/21/Salary-survey-in-Vietnam-market-2021/",
      "markdown_url": "https://vanducng.dev/2020/11/21/Salary-survey-in-Vietnam-market-2021.md",
      "date": "2020-11-21T17:52:51+00:00",
      "series": null,
      "categories": [
        "Notes"
      ],
      "tags": [
        "analysis"
      ],
      "summary": "According to First Alliances, there is a rapidly rising demand for more IT talents which is still small pool in Vietnam. Working in Data Science segment, I’m more focusing on data-related positions. From experiences with sharing knowlege within my network, the survey reflects...",
      "headings": []
    },
    {
      "slug": "Getting-started-with-spark-structure-streaming",
      "title": "Getting started with spark structure streaming",
      "url": "https://vanducng.dev/2020/10/10/Getting-started-with-spark-structure-streaming/",
      "markdown_url": "https://vanducng.dev/2020/10/10/Getting-started-with-spark-structure-streaming.md",
      "date": "2020-10-10T20:45:20+00:00",
      "series": null,
      "categories": [
        "Data"
      ],
      "tags": [
        "spark",
        "kafka"
      ],
      "summary": "Spark is not only a powerful regarding data processing in batch but also in streaming. From version 2.x, Spark provides a new stream processing paradism called structure streaming based on Spark SQL library. This helps developer work with stream process easier compared to...",
      "headings": [
        "Programming model",
        "Anatomy of structured streaming",
        "Work with Kafka",
        "Window aggregation",
        "References"
      ]
    },
    {
      "slug": "Deserialize-Avro-Kafka-message-in-pyspark",
      "title": "Deserialize Avro Kafka message in pyspark",
      "url": "https://vanducng.dev/2020/09/23/Deserialize-Avro-Kafka-message-in-pyspark/",
      "markdown_url": "https://vanducng.dev/2020/09/23/Deserialize-Avro-Kafka-message-in-pyspark.md",
      "date": "2020-09-23T19:53:00+00:00",
      "series": null,
      "categories": [
        "Data"
      ],
      "tags": [
        "python",
        "spark",
        "kafka"
      ],
      "summary": "Recently, I worked on a project to consume Kafka message and ingest into Hive using Spark Structure Streaming. I mainly used python for most of the work with data pipeline construction, and this project is not exception. Everything moved smoothly at the beginning when...",
      "headings": [
        "Call java class via python function",
        "Using fastavro as a python library"
      ]
    },
    {
      "slug": "Spark-Kafka-docker-compose",
      "title": "Spark & Kafka docker-compose",
      "url": "https://vanducng.dev/2020/09/20/Spark-Kafka-docker-compose/",
      "markdown_url": "https://vanducng.dev/2020/09/20/Spark-Kafka-docker-compose.md",
      "date": "2020-09-20T20:54:04+00:00",
      "series": null,
      "categories": [
        "Data"
      ],
      "tags": [
        "docker",
        "spark",
        "kafka"
      ],
      "summary": "To quickly launch spark and kafka for local development, docker would be the top choice as of its flexibily and isolated environment. This save lot of time for manually installing bunch of packages as well as conflicting issues.",
      "headings": [
        "Prequesite",
        "Docker compose"
      ]
    },
    {
      "slug": "Setup-Spark-local-development",
      "title": "Setup Spark local development",
      "url": "https://vanducng.dev/2020/08/13/Setup-Spark-local-development/",
      "markdown_url": "https://vanducng.dev/2020/08/13/Setup-Spark-local-development.md",
      "date": "2020-08-13T19:56:17+00:00",
      "series": null,
      "categories": [
        "Data"
      ],
      "tags": [
        "spark",
        "tutorial"
      ],
      "summary": "This post provides a general setup to start with Spark development on local computer. This is helpful for getting started, experimenting the Spark functionalities or even run a small project.",
      "headings": [
        "Prepare development environment",
        "Install WSL (for Windows only)",
        "Run Spark application",
        "References"
      ]
    },
    {
      "slug": "Spark-hierarchy",
      "title": "Spark hierarchy",
      "url": "https://vanducng.dev/2020/07/12/Spark-hierarchy/",
      "markdown_url": "https://vanducng.dev/2020/07/12/Spark-hierarchy.md",
      "date": "2020-07-12T20:46:37+00:00",
      "series": null,
      "categories": [
        "Data"
      ],
      "tags": [
        "spark"
      ],
      "summary": "Understand Spark hierarchy in term of hardware and software design will help you better in develop an optimized Spark application.",
      "headings": [
        "Hardware hierarchy",
        "Data speed",
        "Software hierarchy",
        "References"
      ]
    },
    {
      "slug": "The-Kafka-Connect-API",
      "title": "The Kafka Connect API",
      "url": "https://vanducng.dev/2020/06/23/The-Kafka-Connect-API/",
      "markdown_url": "https://vanducng.dev/2020/06/23/The-Kafka-Connect-API.md",
      "date": "2020-06-23T19:10:12+00:00",
      "series": null,
      "categories": [
        "Data"
      ],
      "tags": [
        "api",
        "kafka"
      ],
      "summary": "Apart from core APIs which requires external systems to install Kafka client for the integration, Kafka also supports Kafka Connect API with REST API for the more flexibility in communicating with different systems. This note is to collect list of basic APIs on frequent useage.",
      "headings": [
        "Viewing Connectors",
        "Create a Connector",
        "List connectors",
        "Detailing connectors",
        "Pausing connectors",
        "Deleting connectors"
      ]
    },
    {
      "slug": "Kafka-CLI",
      "title": "Kafka CLI",
      "url": "https://vanducng.dev/2020/06/22/Kafka-CLI/",
      "markdown_url": "https://vanducng.dev/2020/06/22/Kafka-CLI.md",
      "date": "2020-06-22T17:00:16+00:00",
      "series": null,
      "categories": [
        "Data"
      ],
      "tags": [
        "kafka"
      ],
      "summary": "Once working with Kafka, I often need to quickly interact with Kafka cluster via command line. This post is my collection of frequent commands used in daily work with projects having Kafka integrated.",
      "headings": [
        "Listing topics",
        "Creating topics",
        "Producing data",
        "Consuming data",
        "Deleting topics",
        "Describe topic"
      ]
    },
    {
      "slug": "Spark-fundamental",
      "title": "Spark fundamental",
      "url": "https://vanducng.dev/2020/06/06/Spark-fundamental/",
      "markdown_url": "https://vanducng.dev/2020/06/06/Spark-fundamental.md",
      "date": "2020-06-06T19:50:52+00:00",
      "series": null,
      "categories": [
        "Data"
      ],
      "tags": [
        "spark",
        "tutorial"
      ],
      "summary": "Spark is an unified engine designed for large scale distributed data processing and machine learning on compute clusters, whether running on-premise or cloud. It replaces Hadoop MapReduce with its in-memory storage for intermediate computations, making it much faster (100x)...",
      "headings": [
        "Design philosophy",
        "Use cases",
        "Components & concepts",
        "Spark Execution",
        "References"
      ]
    },
    {
      "slug": "Kerberos-on-Hadoop",
      "title": "Kerberos on Hadoop",
      "url": "https://vanducng.dev/2020/06/01/Kerberos-on-Hadoop/",
      "markdown_url": "https://vanducng.dev/2020/06/01/Kerberos-on-Hadoop.md",
      "date": "2020-06-01T14:45:46+00:00",
      "series": null,
      "categories": [
        "Data"
      ],
      "tags": [
        "security",
        "hadoop"
      ],
      "summary": "The Kerberos is an authentication protocol which creates tickets to allow communication between nodes on non-secured network. Ticket must be periodically triggered by kinit command by each user. In Kerberos we call users as principals. We can divided principals basically into...",
      "headings": [
        "How it works?",
        "Terminology",
        "Resources"
      ]
    },
    {
      "slug": "Yarn-walkthrough",
      "title": "Yarn walkthrough",
      "url": "https://vanducng.dev/2020/05/22/Yarn-walkthrough/",
      "markdown_url": "https://vanducng.dev/2020/05/22/Yarn-walkthrough.md",
      "date": "2020-05-22T18:59:48+00:00",
      "series": null,
      "categories": [
        "Data"
      ],
      "tags": [
        "hadoop"
      ],
      "summary": "YARN stands for Yet Another Resource Negotiator. It was introduced in Hadoop version 2 to extend other data processing framework to not only Map Reduce such as Spark, Storm, etc.",
      "headings": [
        "Resource Manager",
        "Node Manager",
        "Application Master",
        "Container",
        "How it works?",
        "References"
      ]
    },
    {
      "slug": "Kafka-fundamental",
      "title": "Kafka fundamental",
      "url": "https://vanducng.dev/2020/03/20/Kafka-fundamental/",
      "markdown_url": "https://vanducng.dev/2020/03/20/Kafka-fundamental.md",
      "date": "2020-03-20T14:58:28+00:00",
      "series": null,
      "categories": [
        "Data"
      ],
      "tags": [
        "tutorial",
        "kafka"
      ],
      "summary": "Apache Kafka is a distributed streaming platform. It is used for building real-time data pipelines and streaming apps. It is horizontally scalable, fault tolerant, wicked fast, and runs in production in thousands of companies.",
      "headings": [
        "Introduction",
        "Use cases",
        "Terminologies summary",
        "Topic, partition, record and offset",
        "Broker",
        "Producer",
        "Consumer",
        "Zookeeper",
        "Resources"
      ]
    },
    {
      "slug": "Code-server-the-VSCode-for-cloud",
      "title": "Code-server, the VSCode for cloud",
      "url": "https://vanducng.dev/2019/12/31/Code-server-the-VSCode-for-cloud/",
      "markdown_url": "https://vanducng.dev/2019/12/31/Code-server-the-VSCode-for-cloud.md",
      "date": "2019-12-31T14:41:03+00:00",
      "series": null,
      "categories": [
        "DevOps"
      ],
      "tags": [
        "docker",
        "tutorial"
      ],
      "summary": "Along with the widely cloud adoption, integrated development environment (IDE) on browser is a need to boot developers’ productivity. People can collaboratively view, edit and commit on any devices with internet accessed browser. Additionally, you’re no longer worry about...",
      "headings": [
        "Getting started",
        "Desired features"
      ]
    },
    {
      "slug": "Kibana-the-elastic-stack-s-central-management",
      "title": "Kibana, the elastic stack's central management",
      "url": "https://vanducng.dev/2019/12/20/Kibana-the-elastic-stack-s-central-management/",
      "markdown_url": "https://vanducng.dev/2019/12/20/Kibana-the-elastic-stack-s-central-management.md",
      "date": "2019-12-20T15:43:25+00:00",
      "series": null,
      "categories": [
        "Data"
      ],
      "tags": [
        "elasticsearch"
      ],
      "summary": "Kibana is part of ELK stack to visualize data from elasticsearch. Further than that, Kibana is equipped with many features and plug-ins such as elastic nodes &amp; infrastructure monitoring, user roles or life cycle management and query experiment elasticsearch database....",
      "headings": [
        "Getting started",
        "Quick tour with Kibana"
      ]
    },
    {
      "slug": "Grafana-the-best-visualization-tool-for-monitoring",
      "title": "Grafana, the best visualization tool for monitoring?",
      "url": "https://vanducng.dev/2019/12/04/Grafana-the-best-visualization-tool-for-monitoring/",
      "markdown_url": "https://vanducng.dev/2019/12/04/Grafana-the-best-visualization-tool-for-monitoring.md",
      "date": "2019-12-04T07:11:08+00:00",
      "series": null,
      "categories": [
        "DevOps"
      ],
      "tags": [
        "docker"
      ],
      "summary": "Grafana is an open-source web application specialized in time-series visualization. Hence, it is suitable for the the purpose of monitoring. One of interesting facts is that Grafana is a fork from Kibana 3 to enhance the ability of dashboard editing and make it as a clean and...",
      "headings": [
        "Installation",
        "Setting Alert"
      ]
    },
    {
      "slug": "Quick-tour-with-Elasticsearch-6-x",
      "title": "Quick tour with Elasticsearch 6.x",
      "url": "https://vanducng.dev/2019/11/26/Quick-tour-with-Elasticsearch-6-x/",
      "markdown_url": "https://vanducng.dev/2019/11/26/Quick-tour-with-Elasticsearch-6-x.md",
      "date": "2019-11-26T15:23:21+00:00",
      "series": null,
      "categories": [
        "Data"
      ],
      "tags": [
        "tutorial",
        "elasticsearch"
      ],
      "summary": "When do researching to choose a good data storage technique for log collection, searching and analytic; I found elasticsearch is a ideal choice because of following reasons: Performance: fast query with million records within miliseconds, it is thanks to indexing document...",
      "headings": [
        "Installation",
        "Configuration",
        "Quick tour with Elasticsearch",
        "References"
      ]
    },
    {
      "slug": "Setup-LDAP-for-Apache-Nifi",
      "title": "Setup LDAP for Apache Nifi",
      "url": "https://vanducng.dev/2019/11/20/Setup-LDAP-for-Apache-Nifi/",
      "markdown_url": "https://vanducng.dev/2019/11/20/Setup-LDAP-for-Apache-Nifi.md",
      "date": "2019-11-20T09:48:31+00:00",
      "series": null,
      "categories": [
        "Data"
      ],
      "tags": [
        "airflow",
        "security"
      ],
      "summary": "Default Apache Nifi installation comes without security layer which exposes the development UI. As a result, users can freely access the Nifi project development with knowledge about the hostname and binding Port. You can see two potential security risks: Flow controller...",
      "headings": [
        "Implement strategy",
        "LDAP Server",
        "Authentication",
        "Authorization",
        "References"
      ]
    },
    {
      "slug": "Vietnam-stock-data-analysis",
      "title": "Vietnam stock data analysis",
      "url": "https://vanducng.dev/2019/08/11/Vietnam-stock-data-analysis/",
      "markdown_url": "https://vanducng.dev/2019/08/11/Vietnam-stock-data-analysis.md",
      "date": "2019-08-11T20:32:45+00:00",
      "series": null,
      "categories": [
        "Projects"
      ],
      "tags": [
        "python",
        "airflow",
        "finance"
      ],
      "summary": "The goal of this project is to collect and visualize the stock price of all tickers in Vietnam. There is quite limited access to API for a single business user, this project aim at scrap data from website, clean, extract and load into data warehouse. The final product is a...",
      "headings": [
        "Proposed Architecture",
        "Data sources",
        "Data model",
        "ETL Job"
      ]
    },
    {
      "slug": "Car-make-model-recognition",
      "title": "Car make & model recognition",
      "url": "https://vanducng.dev/2019/07/23/Car-make-model-recognition/",
      "markdown_url": "https://vanducng.dev/2019/07/23/Car-make-model-recognition.md",
      "date": "2019-07-23T19:38:49+00:00",
      "series": null,
      "categories": [
        "Projects"
      ],
      "tags": [
        "python",
        "ml"
      ],
      "summary": "This project aims at recognizing the car make and model based on a Stanford Cars Dataset with 16,185 images. This dataset includes information about car make, model, and year (Eg. 2012 Tesla Model S) with 196 different classes. However, in this project we target to identify...",
      "headings": [
        "Approach",
        "Result",
        "Usage"
      ]
    },
    {
      "slug": "Vietnamese-sign-language-reader",
      "title": "Vietnamese sign language reader",
      "url": "https://vanducng.dev/2014/03/23/Vietnamese-sign-language-reader/",
      "markdown_url": "https://vanducng.dev/2014/03/23/Vietnamese-sign-language-reader.md",
      "date": "2014-03-23T20:24:17+00:00",
      "series": null,
      "categories": [
        "Projects"
      ],
      "tags": [
        "ml"
      ],
      "summary": "This project describes a computer based system that utilizes a 3D sensor to bridge the communication barrier between hearing (and/or speech) impaired people and hearing ones. Above figure shows how I love Vietnam demonstrated in Vietnamese Sign Language.",
      "headings": [
        "Demo",
        "Results"
      ]
    },
    {
      "slug": "Entrance-checking-system",
      "title": "Entrance checking system",
      "url": "https://vanducng.dev/2013/04/13/Entrance-checking-system/",
      "markdown_url": "https://vanducng.dev/2013/04/13/Entrance-checking-system.md",
      "date": "2013-04-13T20:11:31+00:00",
      "series": null,
      "categories": [
        "Projects"
      ],
      "tags": [
        "ml"
      ],
      "summary": "This project aims at implementing an intelligent human resources management system which combines the RFID and face recognition method. The proposed system will have a camera to capture the faces of people and a RFID reader to check the ID numbers. If both of the verifying...",
      "headings": [
        "System overview",
        "Source code"
      ]
    },
    {
      "slug": "Mobile-autonomous-robot-using-the-Kinect",
      "title": "Mobile autonomous robot using the Kinect",
      "url": "https://vanducng.dev/2012/01/23/Mobile-autonomous-robot-using-the-Kinect/",
      "markdown_url": "https://vanducng.dev/2012/01/23/Mobile-autonomous-robot-using-the-Kinect.md",
      "date": "2012-01-23T20:29:22+00:00",
      "series": null,
      "categories": [
        "Projects"
      ],
      "tags": [
        "ml"
      ],
      "summary": "This project targets at applying the state-of-the-art technology in computer vision which is depth sensor equipped with RGB camera called Kinect. Kinect is not only normal camera sensor but also a special device can provide depth map. Depth map is acquired through OpenNI...",
      "headings": [
        "Paper and source code:"
      ]
    },
    {
      "slug": "Stereo-vision-experiment-on-Logitech-cameras",
      "title": "Stereo vision experiment on Logitech cameras",
      "url": "https://vanducng.dev/2011/05/28/Stereo-vision-experiment-on-Logitech-cameras/",
      "markdown_url": "https://vanducng.dev/2011/05/28/Stereo-vision-experiment-on-Logitech-cameras.md",
      "date": "2011-05-28T20:02:11+00:00",
      "series": null,
      "categories": [
        "Projects"
      ],
      "tags": [
        "ml"
      ],
      "summary": "This project provides an alternative way for robot to detect and estimate the distance to an object. The stereo vision technique is used as human eyes with the support of OpenCV library. The project was part of my subjects in University time back then in 2011 when I did so...",
      "headings": [
        "Demo video",
        "Source code",
        "Implementation steps"
      ]
    }
  ]
}
