
  <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
      <title>Viet-Anh on Software</title>
      <link>https://www.vietanh.dev/blog</link>
      <description>Viet-Anh Nguyen builds and evaluates AI systems under real constraints: hardware, latency, cost, privacy, and security. Measured studies, open-source implementations, and production lessons.</description>
      <language>en-us</language>
      <managingEditor>vietanh.dev@gmail.com (Viet-Anh Nguyen)</managingEditor>
      <webMaster>vietanh.dev@gmail.com (Viet-Anh Nguyen)</webMaster>
      <lastBuildDate>Sun, 13 Sep 2026 14:00:00 GMT</lastBuildDate>
      <atom:link href="https://www.vietanh.dev/feed.xml" rel="self" type="application/rss+xml"/>
      
  <item>
    <guid>https://www.vietanh.dev/blog/2026-09-13-ai-can-write-the-code-but-code-was-writing-us</guid>
    <title>AI Can Write the Code. But Code Was Writing Us.</title>
    <link>https://www.vietanh.dev/blog/2026-09-13-ai-can-write-the-code-but-code-was-writing-us</link>
    <description>Writing software helped shape how we think as engineers. As AI takes over more implementation, I worry about discovery debt: the questions and insights we miss when we skip the work that might have revealed them. Here is how I want to preserve understanding, curiosity, and judgment while working with coding agents.</description>
    <pubDate>Sun, 13 Sep 2026 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>AI Agents</category><category>Software Engineering</category><category>Learning</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2026-09-13-ai-viet-code-nhung-code-tao-nen-chung-ta</guid>
    <title>AI có thể viết code. Nhưng chính code từng tạo nên chúng ta.</title>
    <link>https://www.vietanh.dev/blog/2026-09-13-ai-viet-code-nhung-code-tao-nen-chung-ta</link>
    <description>Lập trình từng đồng thời tạo ra phần mềm và người kỹ sư. Khi AI tách hai quá trình ấy, chúng ta có thể tích lũy một loại nợ khó nhìn thấy: những hiểu biết không bao giờ xuất hiện vì không còn phải vật lộn với việc triển khai. Làm thế nào để giữ lại những va vấp tạo nên khả năng phán đoán?</description>
    <pubDate>Sun, 13 Sep 2026 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>AI Agents</category><category>Software Engineering</category><category>Learning</category><category>Tiếng Việt</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2026-08-18-gpu-van-nam-do-bon-loi-am-tham</guid>
    <title>GPU có sẵn mà không dùng: bốn lỗi âm thầm khi huấn luyện trên máy người dùng</title>
    <link>https://www.vietanh.dev/blog/2026-08-18-gpu-van-nam-do-bon-loi-am-tham</link>
    <description>Huấn luyện đang dần quay về máy của người dùng, nơi phần cứng nằm ngoài tầm kiểm soát của nhà phát triển. Tôi đã để GPU trên máy Mac bị bỏ không suốt hai năm vì ứng dụng vẫn chạy được, chỉ là chậm. Khi bật Metal và đo đạc nghiêm túc, tôi phát hiện bốn lỗi hiệu năng không hề báo lỗi: is_bf16_supported() nhận nhầm khả năng phần cứng, gradient scaler âm thầm bỏ qua optimizer step, 16-bit chậm hơn 32-bit trên Apple Silicon, và giao diện báo dùng GPU trong khi mô hình thực tế chạy trên CPU.</description>
    <pubDate>Tue, 18 Aug 2026 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>PyTorch</category><category>CUDA</category><category>Apple Silicon</category><category>Mixed Precision</category><category>Computer Vision</category><category>On-Device AI</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2026-08-17-the-gpu-was-already-there</guid>
    <title>The GPU Was Already There: Four Silent Bugs in On-Device Training</title>
    <link>https://www.vietanh.dev/blog/2026-08-17-the-gpu-was-already-there</link>
    <description>Training is moving back onto the machines people own, and those machines are not a fleet you control. Apple GPU support sat on my plan for two years because nothing looked broken; the runs finished, they were just slower. Turning Metal on was worth 1.7x to 4.2x per epoch on the one M1 I own, and much less end to end. The measuring is what found the real bugs, three of which never raised anything: is_bf16_supported() answering True on a card that only emulates it, a gradient scaler silently dropping optimiser steps and halving a mAP, and 16-bit being slower than 32-bit on Apple Silicon even though everything works.</description>
    <pubDate>Mon, 17 Aug 2026 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>PyTorch</category><category>CUDA</category><category>Apple Silicon</category><category>Mixed Precision</category><category>Computer Vision</category><category>On-Device AI</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2026-08-08-ask-or-it-will-guess</guid>
    <title>Ask, or It Will Guess: Question-Asking Is the Core Skill of Agentic Work</title>
    <link>https://www.vietanh.dev/blog/2026-08-08-ask-or-it-will-guess</link>
    <description>Models almost never ask you what you meant: across ambiguous questions, answer rates run above 95% and clarification barely registers. Repairing that in conversation makes it worse: underspecified multi-turn runs measure a 39% average performance drop, driven by a 112% jump in unreliability, and the effect shows up from two turns onward. The leverage is no longer in writing better prompts. It is in forcing the questions out before the first answer attempt, and in asking the questions afterward that prove you understood what you shipped.</description>
    <pubDate>Sat, 08 Aug 2026 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>AI Agents</category><category>Agentic Workflow</category><category>Software Engineering</category><category>LLM</category><category>Prompt Engineering</category><category>Productivity</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2026-07-06-webmcp-agent-ready-website</guid>
    <title>I gave my website tools for AI agents with WebMCP, and thought hard about the attack surface</title>
    <link>https://www.vietanh.dev/blog/2026-07-06-webmcp-agent-ready-website</link>
    <description>WebMCP lets a web page hand callable tools to browser AI agents instead of making them scrape the DOM. I wired three read-only tools into this site. The interesting part was not the API. It was deciding what an agent, or a prompt injection riding one, is allowed to do.</description>
    <pubDate>Mon, 06 Jul 2026 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>AI-Security</category><category>WebMCP</category><category>LLM</category><category>Autonomous Agents</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2026-07-05-the-bottleneck-moved-to-review</guid>
    <title>The Bottleneck Moved to Review: My SDLC After AI Writes Most of the Code</title>
    <link>https://www.vietanh.dev/blog/2026-07-05-the-bottleneck-moved-to-review</link>
    <description>When a machine writes most of your diff, the constraint stops being how fast you type and becomes how well you review. Here is the SDLC I actually run (the provenance audit, the sandbox, the CI backstops, and the three questions I ask every AI-authored change) plus the parts of review that don&#39;t compress and never will.</description>
    <pubDate>Sun, 05 Jul 2026 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>AI Agents</category><category>Code Review</category><category>DevSecOps</category><category>Software Engineering</category><category>AI Security</category><category>SDLC</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2026-06-15-plan-once-then-act-small-model-agents</guid>
    <title>Plan Once, Then Act: When the ReAct Loop Is the Wrong Harness for Small Local Models</title>
    <link>https://www.vietanh.dev/blog/2026-06-15-plan-once-then-act-small-model-agents</link>
    <description>On small local models, the standard ReAct loop has a failure mode nobody warns you about: the model calls one tool, declares victory, and stops. What we measured across 12 GGUF models in EdgeVox, why we added a plan-once dispatcher, and how to decide which loop your task actually needs.</description>
    <pubDate>Mon, 15 Jun 2026 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Edge AI</category><category>AI Agents</category><category>Agent Harness</category><category>On-device AI</category><category>Tool Calling</category><category>Local-First AI</category><category>Robotics</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2026-05-30-edgevox-offline-voice-agent</guid>
    <title>Building EdgeVox: Chaining STT → Local LLM → TTS Without Touching the Cloud</title>
    <link>https://www.vietanh.dev/blog/2026-05-30-edgevox-offline-voice-agent</link>
    <description>A first-hand build narrative of EdgeVox, a fully offline voice agent that chains speech-to-text, a local LLM, and text-to-speech on one device. The architecture in plain language, ROS2 integration, the latency budget, and the failure modes nobody warns you about.</description>
    <pubDate>Sat, 30 May 2026 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Edge AI</category><category>On-device AI</category><category>Voice AI</category><category>Local-First AI</category><category>Speech Recognition</category><category>Text-to-Speech</category><category>ROS2</category><category>Privacy</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2026-05-23-i-red-teamed-the-ai-version-of-myself</guid>
    <title>I put an AI version of myself online, then tried to break it</title>
    <link>https://www.vietanh.dev/blog/2026-05-23-i-red-teamed-the-ai-version-of-myself</link>
    <description>Building a represent-me chatbot is a weekend project. Treating it like a production security surface is the part nobody writes about. Here is the architecture, the prompt leak I found by attacking my own bot, and the reusable suite that keeps it honest.</description>
    <pubDate>Sat, 23 May 2026 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>AI-Security</category><category>RAG</category><category>LLM</category><category>Inference-Economics</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2026-05-04-chu-quyen-ai-viet-nam</guid>
    <title>Câu chuyện chủ quyền AI của Việt Nam đang mắc kẹt ở một tầng quá cao 🇻🇳</title>
    <link>https://www.vietanh.dev/blog/2026-05-04-chu-quyen-ai-viet-nam</link>
    <description>Việt Nam đã có chip, có ba nỗ lực làm mô hình nền tảng tiếng Việt đang chạy, và bộ luật AI ràng buộc nhất Đông Nam Á. Vậy mà câu chuyện chủ quyền AI cứ xoay quanh một mô hình 70B. Khoảng trống thật nằm thấp hơn một tầng: đánh giá mở, dữ liệu sạch về giấy phép, mô hình chuyên biệt gắn với tuân thủ, và runtime chạy thẳng trên thiết bị. Từ 15/8/2026, Quyết định 33/2026/QĐ-TTg với 46 hệ thống AI rủi ro cao đã biến tầng đó thành nghĩa vụ pháp lý.</description>
    <pubDate>Mon, 04 May 2026 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Sovereign AI</category><category>Vietnamese NLP</category><category>Edge AI</category><category>On-device AI</category><category>AI Policy</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2026-05-03-sovereign-ai-vietnam</guid>
    <title>Vietnam&#39;s Sovereign AI Conversation Is Stuck One Layer Too High 🇻🇳</title>
    <link>https://www.vietanh.dev/blog/2026-05-03-sovereign-ai-vietnam</link>
    <description>Vietnam already has the chips, three meaningful Vietnamese model attempts in flight, and the most binding AI law in Southeast Asia. The conversation about sovereign AI keeps demanding a 70B foundation model. The actual gap is one layer down: open evaluation, license-clean data, compliance-aware specialized models, and on-device runtimes that operationalize Law 134/2025 from March 2026.</description>
    <pubDate>Sun, 03 May 2026 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Sovereign AI</category><category>Vietnamese NLP</category><category>Edge AI</category><category>On-device AI</category><category>AI Policy</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2026-04-30-ai-education-paradox</guid>
    <title>AI Is Making Us Faster Learners and Worse Thinkers at the Same Time</title>
    <link>https://www.vietanh.dev/blog/2026-04-30-ai-education-paradox</link>
    <description>A 2025 RCT found students who studied with ChatGPT scored 11 points lower on a retention test six weeks later, even though their work during the sessions was higher quality. Better results, worse thinking. Here is what the cognitive science says, and how it changed my own AI habits.</description>
    <pubDate>Thu, 30 Apr 2026 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>AI in Education</category><category>Learning</category><category>Lifelong Learning</category><category>Critical Thinking</category><category>Productivity</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2026-03-17-nvidia-openshell-agent-sandboxes</guid>
    <title>NVIDIA OpenShell: Policy-Enforced Sandboxes for Autonomous Coding Agents</title>
    <link>https://www.vietanh.dev/blog/2026-03-17-nvidia-openshell-agent-sandboxes</link>
    <description>NVIDIA just open-sourced OpenShell, a policy-enforced sandbox for autonomous AI agents. Four security layers, a privacy router that decides which LLM sees which data, and hot-reloadable YAML policies. How it works and what it solves that nothing else does.</description>
    <pubDate>Tue, 17 Mar 2026 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>AI Agents</category><category>Security</category><category>Sandboxing</category><category>NVIDIA</category><category>Infrastructure</category><category>DevSecOps</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2026-03-12-bao-mat-ung-dung-vibe-coding</guid>
    <title>Bảo mật ứng dụng viết bằng vibe coding: hướng dẫn thực tế để tránh bị tấn công</title>
    <link>https://www.vietanh.dev/blog/2026-03-12-bao-mat-ung-dung-vibe-coding</link>
    <description>Vibe coding giúp đưa ứng dụng ra thị trường nhanh hơn, nhưng cũng làm tăng nguy cơ phát hành lỗ hổng bảo mật. Bài viết phân tích các sự cố thực tế, quy trình phòng thủ nhiều lớp và những phương pháp rà soát bảo mật mới với AI.</description>
    <pubDate>Thu, 12 Mar 2026 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Vibe Coding</category><category>Security</category><category>AI Agents</category><category>DevSecOps</category><category>Code Review</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2026-03-12-securing-vibe-coded-apps</guid>
    <title>Securing Vibe-Coded Apps: A Practical Guide to Not Getting Hacked</title>
    <link>https://www.vietanh.dev/blog/2026-03-12-securing-vibe-coded-apps</link>
    <description>Vibe coding is shipping apps faster than ever, but also shipping vulnerabilities at alarming rates. This guide covers real disasters, practical security measures from secret scanning to endpoint hardening, and SOTA AI-powered review methods to keep your vibe-coded apps from becoming the next breach headline.</description>
    <pubDate>Thu, 12 Mar 2026 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Vibe Coding</category><category>Security</category><category>AI Agents</category><category>DevSecOps</category><category>Code Review</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2026-02-06-coding-is-not-fun-anymore</guid>
    <title>Coding is not fun anymore?</title>
    <link>https://www.vietanh.dev/blog/2026-02-06-coding-is-not-fun-anymore</link>
    <description>Coding isn&#39;t what it used to be. AI implements faster than we can type, and agents are automating our tasks. But there&#39;s a bright side: we&#39;re evolving from implementors into architects and reviewers. Here&#39;s how to survive the shift.</description>
    <pubDate>Fri, 06 Feb 2026 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Future of Work</category><category>AI Agents</category><category>Software Engineering</category><category>Career Growth</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2026-02-06-lap-trinh-khong-con-vui-nua</guid>
    <title>Lập trình không còn vui nữa?</title>
    <link>https://www.vietanh.dev/blog/2026-02-06-lap-trinh-khong-con-vui-nua</link>
    <description>AI có thể viết mã nhanh hơn tốc độ chúng ta gõ và đang tự động hoá ngày càng nhiều công việc thường ngày. Vai trò của kỹ sư vì thế chuyển dần từ người trực tiếp triển khai sang người thiết kế, đánh giá và chịu trách nhiệm cho toàn hệ thống.</description>
    <pubDate>Fri, 06 Feb 2026 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Future of Work</category><category>AI Agents</category><category>Software Engineering</category><category>Career Growth</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2026-02-02-agent-sandboxes</guid>
    <title>Agent Sandboxes: A Practical Guide to Running AI-Generated Code Safely</title>
    <link>https://www.vietanh.dev/blog/2026-02-02-agent-sandboxes</link>
    <description>AI agents don&#39;t just talk. They execute code, which makes isolation the whole problem. The sandbox technologies that matter (microVMs, gVisor, WebAssembly) and the platforms built on them (E2B, Modal, Northflank).</description>
    <pubDate>Mon, 02 Feb 2026 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>AI Agents</category><category>Sandboxes</category><category>Security</category><category>MicroVMs</category><category>Firecracker</category><category>gVisor</category><category>Code Execution</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2026-02-02-sandbox-cho-ai-agent</guid>
    <title>Sandbox cho AI agent: chạy code do AI sinh ra sao cho an toàn</title>
    <link>https://www.vietanh.dev/blog/2026-02-02-sandbox-cho-ai-agent</link>
    <description>AI agent không chỉ sinh văn bản mà còn trực tiếp thực thi mã. Bài viết phân tích các công nghệ sandbox như microVM, gVisor và WebAssembly, cùng những nền tảng phổ biến được xây dựng trên chúng.</description>
    <pubDate>Mon, 02 Feb 2026 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>AI Agents</category><category>Sandboxes</category><category>Security</category><category>MicroVMs</category><category>Firecracker</category><category>gVisor</category><category>Code Execution</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2026-02-01-openclaw-security-autonomy</guid>
    <title>OpenClaw: Security is the Final Boss</title>
    <link>https://www.vietanh.dev/blog/2026-02-01-openclaw-security-autonomy</link>
    <description>OpenClaw, formerly Clawdbot, runs a personal AI agent locally and wires it straight into your messaging apps. Its gateway architecture, the security failures that followed, and what building a safe autonomous ecosystem would actually take.</description>
    <pubDate>Sun, 01 Feb 2026 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>OpenClaw</category><category>Autonomous Agents</category><category>AI Security</category><category>Local-First AI</category><category>Agentic Workflow</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2024-10-06-finetuning-llama-3.2-for-llama-assistant</guid>
    <title>Fine-tuning Llama 3.2 (1B, 3B) and Using It Locally with Llama Assistant 🌟</title>
    <link>https://www.vietanh.dev/blog/2024-10-06-finetuning-llama-3.2-for-llama-assistant</link>
    <description>Fine-tuning Llama 3.2 at 1B and 3B, then running the result locally in Llama Assistant. From the pre-trained models through tuning on your own data to on-device deployment.</description>
    <pubDate>Sun, 06 Oct 2024 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>LLM</category><category>Llama Assistant</category><category>Llama</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2024-09-29-building-llama-assistant</guid>
    <title>Privacy in AI: Why I Created Llama Assistant</title>
    <link>https://www.vietanh.dev/blog/2024-09-29-building-llama-assistant</link>
    <description>Privacy in AI is a hot topic. I created Llama Assistant to provide a privacy-focused alternative to popular AI assistants like ChatGPT or Claude AI. In this blog post, I&#39;ll share my motivation behind creating Llama Assistant and how it differs from other AI assistants.</description>
    <pubDate>Sun, 29 Sep 2024 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>LLM</category><category>Llama Assistant</category><category>Llama</category><category>privacy-first AI</category><category>offline AI</category><category>local LLM</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2023-09-19-performant-django</guid>
    <title>Performant Django - How to optimize your Django application?</title>
    <link>https://www.vietanh.dev/blog/2023-09-19-performant-django</link>
    <description>Where a Django app actually slows down as traffic grows. Benchmark first, then fix the database queries, add the right caching layer, and scale instances with Docker and Kubernetes.</description>
    <pubDate>Tue, 19 Sep 2023 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Backend</category><category>Django</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/yolo-nas</guid>
    <title>Review YOLO-NAS - Search for a better YOLO</title>
    <link>https://www.vietanh.dev/blog/yolo-nas</link>
    <description>A short review of advancements in YOLO-NAS - a new YOLO architecture born from Neural Architecture Search.</description>
    <pubDate>Mon, 08 May 2023 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Object Detection</category><category>YOLO</category><category>Computer Vision</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2023-04-22-anylabeling-gan-nhan-anh-thong-minh</guid>
    <title>AnyLabeling - gán nhãn ảnh thông minh với Segment Anything và YOLO</title>
    <link>https://www.vietanh.dev/blog/2023-04-22-anylabeling-gan-nhan-anh-thong-minh</link>
    <description>Câu chuyện xây dựng AnyLabeling trên nền Labelme: từ việc tích hợp Segment Anything và YOLO vào quy trình gán nhãn cho đến hỗ trợ dữ liệu OCR.</description>
    <pubDate>Sat, 22 Apr 2023 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>AnyLabeling</category><category>Segment Anything</category><category>YOLO</category><category>image labeling</category><category>computer vision</category><category>annotation tool</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2023-04-22-create-a-segment-anything-labeling-tool-any-labeling</guid>
    <title>AnyLabeling - Smart image labeling with Segment Anything and YOLO</title>
    <link>https://www.vietanh.dev/blog/2023-04-22-create-a-segment-anything-labeling-tool-any-labeling</link>
    <description>How I built AnyLabeling on top of Labelme: why the tool needed to exist, how Segment Anything and YOLO inference is wired into the labeling loop, and how text OCR labeling works.</description>
    <pubDate>Sat, 22 Apr 2023 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>AnyLabeling</category><category>Segment Anything</category><category>YOLO</category><category>image labeling</category><category>computer vision</category><category>annotation tool</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2022-03-26-airflow-mlflow-or-kubeflow-for-mlops</guid>
    <title>Airflow, MLflow or Kubeflow for MLOps?</title>
    <link>https://www.vietanh.dev/blog/2022-03-26-airflow-mlflow-or-kubeflow-for-mlops</link>
    <description>Comparing Airflow, MLflow, and Kubeflow for MLOps: what each does, how Airflow plus MLflow stacks up against Kubeflow, and which to pick by scale.</description>
    <pubDate>Sat, 26 Mar 2022 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Airflow</category><category>MLflow</category><category>Kubeflow</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2022-01-13-daisykit</guid>
    <title>With Daisykit – Everyone can build AI projects!</title>
    <link>https://www.vietanh.dev/blog/2022-01-13-daisykit</link>
    <description>Daisykit, a graph-based C++ and Python toolkit for deploying AI pipelines, from face detection to pose estimation and barcodes, in a few lines of code.</description>
    <pubDate>Thu, 13 Jan 2022 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Deployment</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/install-opencv4-homebrew-macos</guid>
    <title>Install OpenCV 4 on macOS using Homebrew</title>
    <link>https://www.vietanh.dev/blog/install-opencv4-homebrew-macos</link>
    <description>How to install OpenCV 4 on macOS with Homebrew for C++, plus the pip and conda routes for Python, tested on an Apple M1 Macbook Air.</description>
    <pubDate>Wed, 29 Dec 2021 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>OpenCV</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/macos-installation</guid>
    <title>My development environment on macOS - Macbook Air M1</title>
    <link>https://www.vietanh.dev/blog/macos-installation</link>
    <description>My macOS setup note for a Macbook Air M1: Homebrew, daily apps, coding IDEs, and a ZSH plus iTerm2 terminal for a full development environment.</description>
    <pubDate>Wed, 29 Dec 2021 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Shell</category><category>macOS</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2021-08-17-install-ros2-pi4</guid>
    <title>Install ROS 2 on Raspberry Pi 4 (SD card image available)</title>
    <link>https://www.vietanh.dev/blog/2021-08-17-install-ros2-pi4</link>
    <description>Two ways to get ROS 2 Foxy running on a Raspberry Pi 4: flash my prebuilt Ubuntu image, or set up Ubuntu, the desktop, and ROS 2 from scratch.</description>
    <pubDate>Tue, 17 Aug 2021 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Embedded</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2021-07-28-yolox</guid>
    <title>Paper review: &quot;YOLOX: Exceeding YOLO Series in 2021&quot; and application in traffic sign detection - VIA Autonomous</title>
    <link>https://www.vietanh.dev/blog/2021-07-28-yolox</link>
    <description>A review of YOLOX, the anchor-free YOLO with a decoupled head and SimOTA, plus a hands-on traffic-sign detection experiment on the VIA dataset.</description>
    <pubDate>Mon, 26 Jul 2021 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Object tracking</category><category>Object detection</category><category>LiDAR</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2021-07-20-centertrack-centerpoint-centerpointpp</guid>
    <title>Paper review: CenterTrack - CenterPoint - CenterPoint++</title>
    <link>https://www.vietanh.dev/blog/2021-07-20-centertrack-centerpoint-centerpointpp</link>
    <description>Reading notes on three papers: CenterTrack for 2D tracking, CenterPoint for 3D detection and tracking, and CenterPoint++ for the Waymo real-time challenge.</description>
    <pubDate>Tue, 20 Jul 2021 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Object tracking</category><category>Object detection</category><category>LiDAR</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2021-07-11-paper-3d-od-second</guid>
    <title>Paper review: SECOND - Sparsely Embedded Convolutional Detection</title>
    <link>https://www.vietanh.dev/blog/2021-07-11-paper-3d-od-second</link>
    <description>A paper review of SECOND, the sparse-convolution 3D LiDAR detector: its GPU rule generation, angle loss, and point-cloud data augmentation.</description>
    <pubDate>Sun, 11 Jul 2021 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Object detection</category><category>LiDAR</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2021-02-15-build-a-pushup-counter</guid>
    <title>Build a Pushup counter app with OpenCV and Deep learning</title>
    <link>https://www.vietanh.dev/blog/2021-02-15-build-a-pushup-counter</link>
    <description>Building a desktop pushup counter that combines human keypoint detection with signal processing to count reps from a webcam, no sensors needed.</description>
    <pubDate>Mon, 15 Feb 2021 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Keypoint Detection</category><category>Signal Processing</category><category>Counter</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2020-11-11-su-dung-vs-code-tren-google-colab</guid>
    <title>Cài đặt và sử dụng VS Code trên Google Colab</title>
    <link>https://www.vietanh.dev/blog/2020-11-11-su-dung-vs-code-tren-google-colab</link>
    <description>Hai cách cài VS Code chạy ngay trên Google Colab để dùng trình soạn thảo quen thuộc mà vẫn tận dụng GPU miễn phí: qua ColabCode và thiết lập thủ công.</description>
    <pubDate>Wed, 11 Nov 2020 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Colab</category><category>Training</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2020-10-11-tim-hieu-mo-hinh-yolo</guid>
    <title>Tìm hiểu mô hình YOLO cho phát hiện vật - Từ YOLOv1 đến YOLOv3</title>
    <link>https://www.vietanh.dev/blog/2020-10-11-tim-hieu-mo-hinh-yolo</link>
    <description>Chặng đường phát triển của YOLO từ v1 đến v3: ý tưởng cốt lõi và các cải tiến kiến trúc, kỹ thuật qua từng phiên bản phát hiện vật thể.</description>
    <pubDate>Sun, 11 Oct 2020 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Realtime</category><category>Object detection</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2020-09-21-adas-jetson-nano-experimental-results</guid>
    <title>Advanced driver-assistance system on Jetson Nano Part 3 - Deep neural networks</title>
    <link>https://www.vietanh.dev/blog/2020-09-21-adas-jetson-nano-experimental-results</link>
    <description>The three deep networks behind my Jetson Nano ADAS: CenterNet detection, a ResNet-18 sign classifier, U-Net lane segmentation, plus TensorRT tuning.</description>
    <pubDate>Mon, 21 Sep 2020 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>ADAS</category><category>Jetson Nano</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2020-09-12-adas-jetson-nano-software</guid>
    <title>Advanced driver-assistance system on Jetson Nano Part 2 - Software design</title>
    <link>https://www.vietanh.dev/blog/2020-09-12-adas-jetson-nano-software</link>
    <description>Software design of an ADAS on Jetson Nano: forward collision warning, lane departure detection, and speed-limit sign over-speed alerts.</description>
    <pubDate>Sat, 12 Sep 2020 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>ADAS</category><category>Jetson Nano</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2020-09-10-adas-jetson-nano-intro-and-hardware</guid>
    <title>Advanced driver-assistance system on Jetson Nano Part 1 - Intro &amp; Hardware design</title>
    <link>https://www.vietanh.dev/blog/2020-09-10-adas-jetson-nano-intro-and-hardware</link>
    <description>Building an ADAS prototype on a Jetson Nano: the motivation, feature scope, and hardware design for collision, lane-departure, and speed-limit warnings.</description>
    <pubDate>Thu, 10 Sep 2020 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>ADAS</category><category>Jetson Nano</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2020-09-02-xay-dung-giai-phap-stream-giay-viet-ibm-hackathon-2020</guid>
    <title>Hackathon: Xây dựng giải pháp biến đổi, stream giấy viết cho giáo dục từ xa</title>
    <link>https://www.vietanh.dev/blog/2020-09-02-xay-dung-giai-phap-stream-giay-viet-ibm-hackathon-2020</link>
    <description>Giải pháp giành giải Nhì IBM Hackathon 2020: dùng mã ARUCO và xử lý ảnh tách nét viết trên giấy, stream thành webcam ảo cho học trực tuyến.</description>
    <pubDate>Wed, 02 Sep 2020 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Aruco</category><category>Image processing</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2020-08-24-chung-toi-da-xay-dung-xe-tu-hanh-tren-gia-lap-the-nao</guid>
    <title>Chúng tôi đã xây dựng xe tự hành trên giả lập thế nào?</title>
    <link>https://www.vietanh.dev/blog/2020-08-24-chung-toi-da-xay-dung-xe-tu-hanh-tren-gia-lap-the-nao</link>
    <description>Cách nhóm xây xe tự hành trong giả lập Cuộc Đua Số: ENet phân đoạn đường, FaceBoxes phát hiện biển báo và điều khiển lái bằng PID.</description>
    <pubDate>Mon, 24 Aug 2020 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Semantic segmentation</category><category>Object detection</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2020-04-23-tim-hieu-ve-centernet</guid>
    <title>Tìm hiểu mô hình CenterNet - Objects as Points</title>
    <link>https://www.vietanh.dev/blog/2020-04-23-tim-hieu-ve-centernet</link>
    <description>Phân tích CenterNet - Objects as Points: đưa phát hiện vật về ước lượng keypoint trên heatmap, các hàm loss và cách huấn luyện mạng.</description>
    <pubDate>Thu, 23 Apr 2020 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Object detection</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2020-04-02-thiet-lap-ban-dau-cho-jetson-nano</guid>
    <title>Thiết lập ban đầu cho Jetson Nano</title>
    <link>https://www.vietanh.dev/blog/2020-04-02-thiet-lap-ban-dau-cho-jetson-nano</link>
    <description>Kinh nghiệm thiết lập Jetson Nano cho dự án AI nhúng: chọn nguồn, cài LXDE tiết kiệm RAM, tạo swap file và cài đặt TensorFlow.</description>
    <pubDate>Thu, 02 Apr 2020 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Hardware</category><category>Jetson</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2020-03-31-goi-ham-python-tren-cpp-voi-opencv</guid>
    <title>Gọi hàm Python trên C++ với OpenCV</title>
    <link>https://www.vietanh.dev/blog/2020-03-31-goi-ham-python-tren-cpp-voi-opencv</link>
    <description>Hướng dẫn gọi hàm Python xử lý ảnh từ C++ bằng Boost.Python, chuyển đổi qua lại giữa cv::Mat và NumPy array để tái dùng code sẵn có.</description>
    <pubDate>Tue, 31 Mar 2020 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Python</category><category>C++</category><category>OpenCV</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2020-01-10-linear-regression</guid>
    <title>Linear Regression - Hồi quy tuyến tính cơ bản</title>
    <link>https://www.vietanh.dev/blog/2020-01-10-linear-regression</link>
    <description>Giới thiệu hồi quy tuyến tính từ lý thuyết toán học đến cài đặt bằng NumPy và scikit-learn, kèm phân tích điểm yếu nhạy cảm với nhiễu.</description>
    <pubDate>Mon, 20 Jan 2020 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Linear Regression</category><category>Linear Fitting</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2020-01-01-config-igpu-for-rendering-nvidia-gpu-for-cuda-works</guid>
    <title>Configure integrated GPU for rendering and NVIDIA GPU for CUDA works in Ubuntu 18.04</title>
    <link>https://www.vietanh.dev/blog/2020-01-01-config-igpu-for-rendering-nvidia-gpu-for-cuda-works</link>
    <description>Set an Intel integrated GPU as the display renderer on Ubuntu 18.04 so your NVIDIA GPU&#39;s full VRAM stays free for CUDA and model training.</description>
    <pubDate>Wed, 01 Jan 2020 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Hardware</category><category>Ubuntu</category><category>CUDA</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2019-10-24-hough-transform-phat-hien-duong-thang</guid>
    <title>Phát hiện đường thẳng với Hough Transform - OpenCV</title>
    <link>https://www.vietanh.dev/blog/2019-10-24-hough-transform-phat-hien-duong-thang</link>
    <description>Giải thích nguyên lý Hough Transform và cách dùng OpenCV để phát hiện đường thẳng trong ảnh, từ không gian tham số cực đến code Python thực tế.</description>
    <pubDate>Thu, 24 Oct 2019 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Hough Transform</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2019-10-10-thiet-ke-thung-rac-thong-minh-tu-phan-loai-rac-raspberry-pi-3</guid>
    <title>Thiết kế thùng rác thông minh tự phân loại rác với Raspberry Pi 3</title>
    <link>https://www.vietanh.dev/blog/2019-10-10-thiet-ke-thung-rac-thong-minh-tu-phan-loai-rac-raspberry-pi-3</link>
    <description>Thiết kế thùng rác thông minh dùng Raspberry Pi 3 và SSD MobileNetV2 để nhận dạng chai lọ qua camera, tự động phân loại rác tái chế bằng servo.</description>
    <pubDate>Thu, 10 Oct 2019 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Raspberry Pi</category><category>SmartBin</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2019-10-03-xay-dung-bo-phan-loai-vgg-16-voi-keras-ap-dung-phan-loai-cho-meo</guid>
    <title>Xây dựng bộ phân loại VGG16 với Tensorflow Keras và áp dụng phân loại chó mèo</title>
    <link>https://www.vietanh.dev/blog/2019-10-03-xay-dung-bo-phan-loai-vgg-16-voi-keras-ap-dung-phan-loai-cho-meo</link>
    <description>Tự viết lại kiến trúc VGG16 bằng Tensorflow Keras và huấn luyện phân loại chó mèo trên dataset Kaggle, đạt độ chính xác 95.34%.</description>
    <pubDate>Thu, 03 Oct 2019 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Keras</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2019-09-27-cv-review-gioi-thieu-computer-vision-va-cach-hoc</guid>
    <title>Thị giác máy tính và những gì cần học để bắt đầu</title>
    <link>https://www.vietanh.dev/blog/2019-09-27-cv-review-gioi-thieu-computer-vision-va-cach-hoc</link>
    <description>Giới thiệu ngành thị giác máy tính, các ứng dụng thực tế và lộ trình kiến thức cần học để bắt đầu làm việc trong lĩnh vực này.</description>
    <pubDate>Wed, 25 Sep 2019 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Computer Vision</category><category>Machine Learning</category><category>Deep Learning</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2019-09-23-cac-ham-kich-hoat-activation-function-trong-neural-networks</guid>
    <title>Các hàm kích hoạt (activation function) trong neural network</title>
    <link>https://www.vietanh.dev/blog/2019-09-23-cac-ham-kich-hoat-activation-function-trong-neural-networks</link>
    <description>So sánh các hàm kích hoạt Sigmoid, Tanh, ReLU, Leaky ReLU và Maxout trong mạng nơ-ron: ưu, nhược điểm và cài đặt Python.</description>
    <pubDate>Mon, 23 Sep 2019 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Activation function</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2019-09-02-xay-dung-bo-phan-loai-cho-meo-gau-truc</guid>
    <title>Xây dựng bộ phân loại chó, mèo hay gấu trúc với k-NN</title>
    <link>https://www.vietanh.dev/blog/2019-09-02-xay-dung-bo-phan-loai-cho-meo-gau-truc</link>
    <description>Xây dựng bộ phân loại chó, mèo, gấu trúc bằng k-NN với scikit-learn, so sánh trực tiếp điểm ảnh và đánh giá kết quả.</description>
    <pubDate>Mon, 02 Sep 2019 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>k-NN</category><category>Image Classification</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2019-04-07-locked-myself-out-of-aws-ec-2-using-ufw</guid>
    <title>Locked myself out of SSH port Ubuntu AWS server using ufw</title>
    <link>https://www.vietanh.dev/blog/2019-04-07-locked-myself-out-of-aws-ec-2-using-ufw</link>
    <description>How to regain SSH access to an AWS EC2 Ubuntu instance after ufw locks you out, by disabling the firewall via a user-data script.</description>
    <pubDate>Wed, 17 Apr 2019 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>SSH</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2019-04-01-react-lifecycle-method-inside-a-functional-component</guid>
    <title>ReactJS lifecycle method inside a functional Component</title>
    <link>https://www.vietanh.dev/blog/2019-04-01-react-lifecycle-method-inside-a-functional-component</link>
    <description>How to attach lifecycle methods like componentDidMount to a React functional component using the react-pure-lifecycle package.</description>
    <pubDate>Mon, 01 Apr 2019 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>React</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2018-11-25-nhung-package-can-co-cho-ubuntu</guid>
    <title>Những package cần có cho Ubuntu</title>
    <link>https://www.vietanh.dev/blog/2018-11-25-nhung-package-can-co-cho-ubuntu</link>
    <description>Danh sách các phần mềm và package tôi hay cài trên Ubuntu cho công việc lập trình, kèm lệnh cài đặt cho từng gói.</description>
    <pubDate>Sun, 25 Nov 2018 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Ubuntu</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2018-09-29-loc-anh-image-filtering</guid>
    <title>Lọc ảnh (Image Filtering)</title>
    <link>https://www.vietanh.dev/blog/2018-09-29-loc-anh-image-filtering</link>
    <description>Nguyên lý lọc ảnh và các bộ lọc trung bình, Gauss, trung vị, Bilateral, Sobel và Laplacian trong OpenCV kèm code Python.</description>
    <pubDate>Sat, 29 Sep 2018 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>OpenCV</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2018-09-25-cac-thao-tac-co-ban-voi-anh-tren-opencv</guid>
    <title>Các thao tác cơ bản với ảnh trên OpenCV</title>
    <link>https://www.vietanh.dev/blog/2018-09-25-cac-thao-tac-co-ban-voi-anh-tren-opencv</link>
    <description>Thao tác cơ bản với ảnh trong OpenCV bằng C++: tạo cv::Mat, đọc/ghi ảnh, truy cập từng điểm ảnh và sao chép ma trận ảnh.</description>
    <pubDate>Tue, 25 Sep 2018 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>OpenCV</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2018-09-19-anh-so-va-cac-khong-gian-mau-trong-xu-ly-anh</guid>
    <title>Ảnh số và các không gian màu trong xử lý ảnh</title>
    <link>https://www.vietanh.dev/blog/2018-09-19-anh-so-va-cac-khong-gian-mau-trong-xu-ly-anh</link>
    <description>Ảnh số raster và vector, các không gian màu RGB, CMYK, HSV, CIE Lab và cách chuyển đổi không gian màu trong OpenCV.</description>
    <pubDate>Wed, 19 Sep 2018 07:48:59 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Ảnh số</category><category>Không gian màu</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2017-08-25-tu-viet-mot-file-cau-hinh-emacs</guid>
    <title>Xây dựng một cấu hình Emacs từ đầu</title>
    <link>https://www.vietanh.dev/blog/2017-08-25-tu-viet-mot-file-cau-hinh-emacs</link>
    <description>Hướng dẫn xây dựng file cấu hình Emacs từ đầu: theme, package manager, Ivy, company, neotree và các phím tắt hữu ích.</description>
    <pubDate>Fri, 25 Aug 2017 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>editor</category><category>Emacs</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2017-08-19-install-mysql2-gem-macos-mamp</guid>
    <title>Install mysql2 gem on macOS using MAMP as mySQL server</title>
    <link>https://www.vietanh.dev/blog/2017-08-19-install-mysql2-gem-macos-mamp</link>
    <description>Fix the mysql2 gem compile error on macOS when using MAMP by pointing gem install at the right mysql_config path.</description>
    <pubDate>Sat, 19 Aug 2017 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Web Development</category><category>Database</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2017-08-17-minfy-all-js-files-in-folder-with-uglifyjs</guid>
    <title>Minify multiple Javascript files in a folder with UglifyJS</title>
    <link>https://www.vietanh.dev/blog/2017-08-17-minfy-all-js-files-in-folder-with-uglifyjs</link>
    <description>Minify every JavaScript file in a folder with a short UglifyJS plus Bash loop, no Grunt setup required.</description>
    <pubDate>Thu, 17 Aug 2017 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>javascript</category><category>jekyll</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2017-05-30-nhap-xau-ki-tu-trong-c-linux-mac-windows</guid>
    <title>Một cách nhập xâu kí tự trong C - giải quyết vấn đề của fflush cho Linux, Mac OS</title>
    <link>https://www.vietanh.dev/blog/2017-05-30-nhap-xau-ki-tu-trong-c-linux-mac-windows</link>
    <description>Cách nhập chuỗi trong C chạy được trên Linux, macOS và Windows, xử lý lỗi trôi lệnh mà fflush không giải quyết được.</description>
    <pubDate>Tue, 30 May 2017 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>C-Language</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2017-05-27-lay-dia-chi-ip-that-client-nodejs-heroku</guid>
    <title>Lấy địa chỉ IP thật của client trên Heroku với Nodejs</title>
    <link>https://www.vietanh.dev/blog/2017-05-27-lay-dia-chi-ip-that-client-nodejs-heroku</link>
    <description>Cách lấy đúng IP thật của client trên Heroku bằng Node.js qua header x-forwarded-for thay vì req.ip.</description>
    <pubDate>Sun, 28 May 2017 05:30:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Web Development</category><category>IP</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2017-05-27-tao-contact-form-don-gian-voi-nodejs-nodemailer</guid>
    <title>Tạo contact form đơn giản với Nodejs - nodemailer</title>
    <link>https://www.vietanh.dev/blog/2017-05-27-tao-contact-form-don-gian-voi-nodejs-nodemailer</link>
    <description>Tự xây backend Node.js gửi mail bằng nodemailer để xử lý contact form cho web tĩnh, kèm hướng dẫn deploy Heroku.</description>
    <pubDate>Sat, 27 May 2017 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Web Development</category><category>NodeJS</category><category>Jekyll</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2017-03-29-xu-li-tieng-viet-javascript</guid>
    <title>Một số kĩ thuật xử lí tiếng Việt trong Javascript</title>
    <link>https://www.vietanh.dev/blog/2017-03-29-xu-li-tieng-viet-javascript</link>
    <description>Các hàm JavaScript để xoá dấu tiếng Việt, lọc ký tự không hợp lệ và chuẩn hoá khoảng trắng khi xử lý chuỗi.</description>
    <pubDate>Wed, 29 Mar 2017 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Web Development</category><category>javascript</category><category>ngôn ngữ</category><category>tiếng Việt</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2016-10-27-kinh-nghiem-ban-dau-voi-fedora</guid>
    <title>Kinh nghiệm ban đầu với Fedora Linux</title>
    <link>https://www.vietanh.dev/blog/2016-10-27-kinh-nghiem-ban-dau-voi-fedora</link>
    <description>Kinh nghiệm cài đặt và thiết lập Fedora Workstation 24: gõ tiếng Việt, phím tắt, quản lý gói dnf và kho RPM Fusion.</description>
    <pubDate>Thu, 27 Oct 2016 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Linux</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2016-10-08-thuat-toan-loang-trong-do-min</guid>
    <title>Thuật toán loang ứng dụng trong game dò mìn</title>
    <link>https://www.vietanh.dev/blog/2016-10-08-thuat-toan-loang-trong-do-min</link>
    <description>Thuật toán loang (flood fill) đệ quy để mở vùng ô trống trong game dò mìn, kèm ví dụ minh hoạ và code C.</description>
    <pubDate>Sat, 08 Oct 2016 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Dò mìn</category><category>loang</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2016-10-07-thuat-toan-sinh-min-trong-tro-choi-do-min-minesweeper</guid>
    <title>Xây dựng thuật toán sinh mìn trong trò chơi dò mìn Minesweeper viết bằng C</title>
    <link>https://www.vietanh.dev/blog/2016-10-07-thuat-toan-sinh-min-trong-tro-choi-do-min-minesweeper</link>
    <description>Thuật toán sinh mìn ngẫu nhiên cho game dò mìn viết bằng C, kèm code đặt mìn và đếm số mìn quanh mỗi ô.</description>
    <pubDate>Fri, 07 Oct 2016 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Dò mìn</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2016-09-30-thay-doi-do-phan-giai-man-hinh-raspi</guid>
    <title>Thay đổi độ phân giải màn hình Raspberry Pi</title>
    <link>https://www.vietanh.dev/blog/2016-09-30-thay-doi-do-phan-giai-man-hinh-raspi</link>
    <description>Hướng dẫn thay đổi độ phân giải màn hình Raspberry Pi qua tệp config.txt với các giá trị hdmi_group và hdmi_mode</description>
    <pubDate>Fri, 30 Sep 2016 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Linux</category><category>Raspberry Pi</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2016-09-06-very-simple-guide-to-emacs</guid>
    <title>A very simple guide to GNU Emacs</title>
    <link>https://www.vietanh.dev/blog/2016-09-06-very-simple-guide-to-emacs</link>
    <description>A beginner guide to GNU Emacs: why use it for coding, how to install it on Ubuntu, and the essential file, edit and cursor shortcuts</description>
    <pubDate>Tue, 06 Sep 2016 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Editor</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2016-09-02-cau-hinh-emacs-de-lap-trinh-c</guid>
    <title>Cấu hình Emacs để lập trình C</title>
    <link>https://www.vietanh.dev/blog/2016-09-02-cau-hinh-emacs-de-lap-trinh-c</link>
    <description>Hướng dẫn cài bộ cấu hình Emacs cho lập trình C trên Ubuntu và viết Makefile cơ bản để biên dịch, chạy chương trình</description>
    <pubDate>Fri, 02 Sep 2016 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>C-Language</category><category>Emacs</category><category>editor</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2016-09-01-lap-trinh-vien-nen-tao-website-ca-nhan</guid>
    <title>Lập trình viên nên tạo website cá nhân</title>
    <link>https://www.vietanh.dev/blog/2016-09-01-lap-trinh-vien-nen-tao-website-ca-nhan</link>
    <description>Vì sao lập trình viên nên có website cá nhân: xây thương hiệu, giữ động lực, rèn kỹ năng và gợi ý cách bắt đầu tạo web</description>
    <pubDate>Thu, 01 Sep 2016 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Web Development</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2016-07-29-cau-truc-re-nhanh</guid>
    <title>Cấu trúc rẽ nhánh trong C</title>
    <link>https://www.vietanh.dev/blog/2016-07-29-cau-truc-re-nhanh</link>
    <description>Cấu trúc rẽ nhánh trong C: cú pháp if, if...else, if...else if và switch case kèm các ví dụ minh họa chạy được</description>
    <pubDate>Fri, 29 Jul 2016 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>C-Language</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2016-07-28-bien-hang-va-nhap-xuat-du-lieu-trong-c</guid>
    <title>Biến, hằng và nhập xuất dữ liệu trong C</title>
    <link>https://www.vietanh.dev/blog/2016-07-28-bien-hang-va-nhap-xuat-du-lieu-trong-c</link>
    <description>Cách khai báo biến, hằng và các kiểu dữ liệu trong C, cùng nhập xuất dữ liệu bằng printf và scanf với các đặc tả định dạng</description>
    <pubDate>Thu, 28 Jul 2016 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>C-Language</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2016-07-28-toan-tu-trong-c</guid>
    <title>Toán tử trong C</title>
    <link>https://www.vietanh.dev/blog/2016-07-28-toan-tu-trong-c</link>
    <description>Tổng hợp các toán tử trong C: số học, quan hệ, logic, thao tác bit, gán, tăng giảm, bảng thứ tự ưu tiên và cách ép kiểu</description>
    <pubDate>Thu, 28 Jul 2016 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>C-Language</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2016-07-26-cai-dat-geany-gcc-bien-dich-c-tren-linux-ubuntu</guid>
    <title>Cài đặt Geany – gcc làm môi trường soạn thảo và biên dịch ngôn ngữ C trên Ubuntu</title>
    <link>https://www.vietanh.dev/blog/2016-07-26-cai-dat-geany-gcc-bien-dich-c-tren-linux-ubuntu</link>
    <description>Hướng dẫn cài Geany và gcc trên Ubuntu để soạn thảo, biên dịch và chạy chương trình C, dùng phím F9 để dịch và F5 để chạy</description>
    <pubDate>Wed, 27 Jul 2016 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>C-Language</category><category>editor</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2016-07-27-cau-truc-chuong-trinh-c-co-ban</guid>
    <title>Cấu trúc chương trình C cơ bản</title>
    <link>https://www.vietanh.dev/blog/2016-07-27-cau-truc-chuong-trinh-c-co-ban</link>
    <description>Giải thích cấu trúc một chương trình C cơ bản qua ví dụ Hello World: lệnh tiền xử lí, hàm main, biến và comment</description>
    <pubDate>Wed, 27 Jul 2016 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>C-Language</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2016-07-26-gioi-thieu-serie-hoc-lap-trinh-c</guid>
    <title>Giới thiệu serie học lập trình C</title>
    <link>https://www.vietanh.dev/blog/2016-07-26-gioi-thieu-serie-hoc-lap-trinh-c</link>
    <description>Giới thiệu chuỗi bài học lập trình C từ cơ bản: công cụ Geany, gcc trên Ubuntu và cách học hiệu quả cho người mới bắt đầu</description>
    <pubDate>Tue, 26 Jul 2016 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>C-Language</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2016-07-26-thiet-lap-sublime-text-3-de-bien-dich-va-chay-ngon-ngu-c</guid>
    <title>Thiết lập Sublime Text 3 để biên dịch và chạy ngôn ngữ C</title>
    <link>https://www.vietanh.dev/blog/2016-07-26-thiet-lap-sublime-text-3-de-bien-dich-va-chay-ngon-ngu-c</link>
    <description>Cách cấu hình build system trong Sublime Text 3 với gcc để biên dịch và chạy chương trình C ngay trong trình soạn thảo</description>
    <pubDate>Tue, 26 Jul 2016 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>C-Language</category><category>Sublime Text</category><category>editor</category>
  </item>

  <item>
    <guid>https://www.vietanh.dev/blog/2016-04-01-song-voi-dam-me</guid>
    <title>Sống với đam mê hoặc một cuộc đời nhàm chán</title>
    <link>https://www.vietanh.dev/blog/2016-04-01-song-voi-dam-me</link>
    <description>Suy nghĩ về đam mê: phân biệt sở thích với đam mê, cách tìm ra sở trường và theo đuổi đam mê để cuộc sống có ý nghĩa</description>
    <pubDate>Fri, 01 Apr 2016 14:00:00 GMT</pubDate>
    <author>vietanh.dev@gmail.com (Viet-Anh Nguyen)</author>
    <category>Life</category>
  </item>

    </channel>
  </rss>
