Blog
Writing on AI, machine learning, software engineering, and the engineering behind real-world ML systems.
202612 posts
I gave my website tools for AI agents with WebMCP — and thought hard about the attack surface
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.
The Bottleneck Moved to Review: My SDLC After AI Writes Most of the Code
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't compress and never will.
Plan Once, Then Act: When the ReAct Loop Is the Wrong Harness for Small Local Models
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.
Building EdgeVox: Chaining STT → Local LLM → TTS Without Touching the Cloud
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.
I put an AI version of myself online, then tried to break it
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.
Vietnam's Sovereign AI Conversation Is Stuck One Layer Too High 🇻🇳
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 starting March 2026.
AI Is Making Us Faster Learners and Worse Thinkers at the Same Time
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.
NVIDIA OpenShell: Policy-Enforced Sandboxes for Autonomous Coding Agents
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. Here is how it actually works and what it solves that nothing else does.
Securing Vibe-Coded Apps: A Practical Guide to Not Getting Hacked
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.
Coding is not fun anymore?
Coding isn't what it used to be. AI implements faster than we can type, and agents are automating our tasks. But there's a bright side: we're evolving from implementors into architects and reviewers. Here's how to survive the shift.
Agent Sandboxes: A Practical Guide to Running AI-Generated Code Safely
AI agents don't just talk—they execute code. This guide covers the essential sandbox technologies (microVMs, gVisor, WebAssembly) and platforms (E2B, Modal, Northflank) that keep your systems safe while letting agents do their work.
OpenClaw: Security is the Final Boss
OpenClaw (formerly Clawdbot) changed the game for local-first AI agents, effectively giving 'Claude with hands.' But great power comes with great responsibility. In this post, I dive into the architecture of OpenClaw, the security risks of 'vibe-coding', and how we can build safe autonomous ecosystems.
20253 posts
NoteSetup Different Fractional Scaling for Different Screens in Ubuntu
Recently, I needed to configure fractional scaling for two displays: my laptop's 4K screen and my external 2K monitor. I quickly discovered that Ubuntu 24.04 doesn't support different fractional scaling settings across multiple displays. Reference. Solution: - Step 1: Upgrade to Ubuntu 24.10. This version replaces X11 ...
NoteHow to Install Kazam 2 on Ubuntu 24.04: The Best Easy Screen Recorder
Have you tried Kazam 2? Share your experience in the comments below!
NoteFreeing NVIDIA GPU Memory for AI Training: A Practical Guide
Did this guide help you reclaim GPU memory? Let me know in the comments how much VRAM you recovered and which approach worked best for your setup!
20243 posts
Fine-tuning Llama 3.2 (1B, 3B) and Using It Locally with Llama Assistant 🌟
Hey there, AI enthusiasts! Ready to dive into the exciting world of Llama 3.2? This guide is your ticket to turning this powerful but pint-sized AI model into your very own customized assistant. We'll walk you through every step – from playing with pre-trained models to fine-tuning them to your specific needs, and deploying it locally with Llama Assistant.
NoteNavigating Git History: A Tale of Commit Message Redemption
I needed to rewrite multiple commit messages that contained typos — not just one, but several. Here's how I did it and what I learned. The Situation Picture this: You've been coding away, committing changes left and right, when suddenly you realize something's amiss. Your commit messages are missing crucial information...
Privacy in AI: Why I Created Llama Assistant
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'll share my motivation behind creating Llama Assistant and how it differs from other AI assistants.
20238 posts
NoteSharing: 15 Productivity Tips from Dr. Milan
These are 15 productivity tips from DR. MILAN MILANOVIĆ, a productivity expert. I found them very useful and want to share them with you. 1\. Focus on ONE thing. You can block your time in the calendar for everything and try to focus on the current task only. 2\. Use 3:3:3 Plan. 3h to work on your most important projec...
Performant Django - How to optimize your Django application?
Django is a powerful and popular Python web framework known for its ease of use and flexibility. However, as your web application grows in complexity and traffic, it's crucial to optimize it for high performance to ensure responsiveness and scalability, especially if you're building data-intensive or large-scale applications. In this blog post, we'll explore various strategies and best practices for optimizing Django for peak performance.
Note♪♪♪ Highly Motivating Performance from Vinh Khuat
<Youtube id="i6iSoGeo7k" /> This video from Vinh Khuat inspired me a lot by his passion for music and his top performance. He is really a talent in music. Working with many musical intrusments at the same time must require a lot of time practicing. It has something very similar to high-quality software development. It ...
NoteLesson note: Teaching is an essential skill for software engineers
Today, I attended a Technical lesson in the Gemo Engineering Program. The session was delivered by Mr.Minh Vu - Staff Engineer at LinkedIn. And, I was so impressed by his presentation about the importance of the teaching skill to everyone. Tech leaders need to teach and keep motivating their team members. Sales, Startu...
NoteSwitched from Vercel to Cloudflare Pages
We have just moved Viet-Anh on Software from Vercel to Cloudflare Pages. The reason is that Vercel has a limit of 100GB bandwidth per month for the Hobby plan. This blog has reached that limit in the last few days of May. As you can see, the Image Optimization service is also approaching the limit very fast. Although V...
Review YOLO-NAS - Search for a better YOLO
A short review of advancements in YOLO-NAS - a new YOLO architecture born from Neural Architecture Search.
AnyLabeling - Smart image labeling with Segment Anything and YOLO
Let's see the magic of Segment Anything and YOLO to create a smart image labeling tool in my newest open-source project - AnyLabeling.
NoteDatabase connection in Django
By default, Django re-establish a new connection to the database in each request. That will be overhead and increase the request time, especially when your database is not on the same server/cluster as your backend server. Fortunately, Django provides us “persistent connection” option to keep and reuse the database con...
20222 posts
Airflow, MLflow or Kubeflow for MLOps?
Comparing Airflow, MLflow, and Kubeflow for MLOps: what each does, how Airflow plus MLflow stacks up against Kubeflow, and which to pick by scale.
With Daisykit – Everyone can build AI projects!
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.
202121 posts
Install OpenCV 4 on macOS using Homebrew
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.
My development environment on macOS - Macbook Air M1
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.
Install ROS 2 on Raspberry Pi 4 (SD card image available)
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.
Paper review: "YOLOX: Exceeding YOLO Series in 2021" and application in traffic sign detection - VIA Autonomous
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.
Paper review: CenterTrack - CenterPoint - CenterPoint++
Reading notes on three papers: CenterTrack for 2D tracking, CenterPoint for 3D detection and tracking, and CenterPoint++ for the Waymo real-time challenge.
NotePaper review: CenterTrack - CenterPoint - CenterPoint++
This is my note for 3 papers: CenterTrack - 2D object tracking, CenterPoint - 3D object detection and tracking, and CenterPoint++ - submission to the Waymo Real-time 3D Detection Challenge. CenterTrack applies a detection model to a pair of images and detections from the prior frame. Given this minimal input, CenterTra...
Paper review: SECOND - Sparsely Embedded Convolutional Detection
A paper review of SECOND, the sparse-convolution 3D LiDAR detector: its GPU rule generation, angle loss, and point-cloud data augmentation.
NoteESP32-CAM Video Streaming over HTTP and Face Detection
Today I had some experience with ESP32 camera module. I was really surprised that it can stream camera over HTTP quite well with a very cheap price. I had an ESP32 CAM board + a USB programmer from my friend to upload program onto the chip and I decided to write this note to introduce this board to you. This is my ESP3...
NoteInstall Fira Code Font for Ubuntu
This tutorial provides instructions for installing the Fira Code font in various versions of Ubuntu. This is my favorite font due to its various ligatures. Ubuntu 16.04 ```shell sudo apt-install git cd /tmp git clone https://github.com/tonsky/FiraCode.git sudo mv -i /tmp/FiraCode/distr/ttf /usr/share/fonts/truetype/fir...
NoteHow do I install Ubuntu on a new machine?
Viet-Anh maintains this note as an instruction to install Ubuntu on a new machine and setup development environment as fast as possible. This note contains my autonomous scripts, and instructions to install necessary packages that I often use. - Supported Ubuntu versions: 20.04 -> 24.04. These instructions may work wit...
NoteInstall Zsh and Auto suggestion plugin for Ubuntu
ZSH, also called the Z shell, is an extended version of the Bourne Shell (sh), with plenty of new features, and support for plugins and themes. Since it's based on the same shell as Bash, ZSH has many of the same features, and switching over is a breeze. This short tutorial guide you to install zsh and auto-suggestions...
Build a Pushup counter app with OpenCV and Deep learning
Building a desktop pushup counter that combines human keypoint detection with signal processing to count reps from a webcam, no sensors needed.
Note[MOOC] Autoware Course - Lecture 1 - Setup the environment
This is my note for lesson 1 of MOOC course: Self-Driving Cars with ROS and Autoware. You should follow the instructions in the course. I only write some notes here to highlight the best practices and how to fix some errors. - Autoware course: https://www.apex.ai/autoware-course - Lecture 1 tutorial: https://gitlab.com...
Note[MOOC] Apollo Lessons on Self-Driving Cars
This is an introduction course to self-driving cars and Apollo platform - The Android of Self-Driving Car. Through this course, you will be able to identify key parts of self-driving cars and get to know Apollo architecture. You will be able to utilize Apollo HD Map, localization, perception, prediction, planning and c...
Note[MOOC] Apollo Lesson 7: Control
This is my note for lesson 7 of MOOC course: Self-Driving Fundamentals - Featuring Apollo. Content: Understand how to use steering, throttle and brake to execute our planned trajectory and master different types of controllers in Apollo. The control module goal is to use variable control inputs to minimize the deviatio...
Note[MOOC] Apollo Lesson 6: Planning
My note for lesson 6 of MOOC course: Self-Driving Fundamentals - Featuring Apollo. Content: Identify several different approaches Apollo uses to develop trajectories for autonomous vehicles. In planning, we incorporate HP maps, localization and prediction to build a trajectory for the vehicle. The first step is route n...
Note[MOOC] Apollo Lesson 5: Prediction
My note for lesson 5 of MOOC course: Self-Driving Fundamentals - Featuring Apollo. Content: Study different ways to predict how other vehicles or pedestrians might interact with Apollo self-driving cars.. After perceiving the world using sensors, we need to predict how the world is going to look in the future. It's imp...
Note[MOOC] Apollo Lesson 4: Perception
My note for lesson 4 of MOOC course: Self-Driving Fundamentals - Featuring Apollo. Content: Identify different perception tasks such as classification, detection, segmentation. Intro Perception module is much like our brain. It receives data from car sensors such as cameras, LiDARs, radars and use AI models and algorit...
Note[MOOC] Apollo Lesson 3: Localization
This is my note for lesson 3 of MOOC course: Self-Driving Fundamentals - Featuring Apollo. Content: How the vehicle localizes itself with a single-digit-centimeter-level accuracy. Localization methods in Apollo - The RTK (Real Time Kinematic) based method which incorporates GPS and IMU (Inertial Measurement Unit) infor...
Note[MOOC] Apollo Lesson 2: HD Maps
This is my note for lesson 2 of MOOC course: Self-Driving Fundamentals - Featuring Apollo. Content: High Definition maps for self driving cars. HD Maps have a high precision and contain a lot of information than your ordinary map on smartphone, such as lane line markings, 3D representation of the road network, traffic ...
Note[MOOC] Apollo Lesson 1: SDC Fundamentals
| | High traffic accident rate | More reliable driving | | Learn to drive from scratch | Learnable driving system | | Parking trouble | No parking trouble | Six levels of self-driving car - Level 0: Base level - No autonomous task - Level 1: Driver assistance - Driver Fully Engaged - Level 2: Partial Automation - Autom...
202014 posts
Cài đặt và sử dụng VS Code trên Google Colab
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.
Tìm hiểu mô hình YOLO cho phát hiện vật - Từ YOLOv1 đến YOLOv3
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ể.
Advanced driver-assistance system on Jetson Nano Part 3 - Deep neural networks
The three deep networks behind my Jetson Nano ADAS: CenterNet detection, a ResNet-18 sign classifier, U-Net lane segmentation, plus TensorRT tuning.
Advanced driver-assistance system on Jetson Nano Part 2 - Software design
Software design of an ADAS on Jetson Nano: forward collision warning, lane departure detection, and speed-limit sign over-speed alerts.
Advanced driver-assistance system on Jetson Nano Part 1 - Intro & Hardware design
Building an ADAS prototype on a Jetson Nano: the motivation, feature scope, and hardware design for collision, lane-departure, and speed-limit warnings.
Hackathon: Xây dựng giải pháp biến đổi, stream giấy viết cho giáo dục từ xa
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.
Chúng tôi đã xây dựng xe tự hành trên giả lập thế nào?
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.
Tìm hiểu mô hình CenterNet - Objects as Points
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.
Thiết lập ban đầu cho Jetson Nano
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.
NoteCác tài liệu và khoá học về học máy
Việc học về học máy của tôi đã được giúp ích rất nhiều bởi các khoá học online. Ở trang này tôi sẽ tổng hợp lại các tài liệu và các khoá học hay về học máy kèm một vài đánh giá. Hi vọng các tài liệu / khoá học này sẽ phần nào giúp ích được cho các bạn mới làm quen với học máy / học sâu. Các khoá học Khoá nhập môn học m...
Gọi hàm Python trên C++ với OpenCV
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ó.
Linear Regression - Hồi quy tuyến tính cơ bản
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.
Configure integrated GPU for rendering and NVIDIA GPU for CUDA works in Ubuntu 18.04
Set an Intel integrated GPU as the display renderer on Ubuntu 18.04 so your NVIDIA GPU's full VRAM stays free for CUDA and model training.
Note[Concepts] Classification metrics
Classification is a basic family of models in machine learning. In very naive logic, people can use accuracy to evaluate how good a model is. However, do we really want accuracy as a metric for our performance? Actually, there are many metrics to evaluate a classification model depending on our problem in a real situat...
20198 posts
Phát hiện đường thẳng với Hough Transform - OpenCV
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ế.
Thiết kế thùng rác thông minh tự phân loại rác với Raspberry Pi 3
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.
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
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%.
Thị giác máy tính và những gì cần học để bắt đầu
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.
Các hàm kích hoạt (activation function) trong neural network
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.
Xây dựng bộ phân loại chó, mèo hay gấu trúc với k-NN
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ả.
Locked myself out of SSH port Ubuntu AWS server using ufw
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.
ReactJS lifecycle method inside a functional Component
How to attach lifecycle methods like componentDidMount to a React functional component using the react-pure-lifecycle package.
20184 posts
Những package cần có cho Ubuntu
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.
Lọc ảnh (Image Filtering)
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.
Các thao tác cơ bản với ảnh trên OpenCV
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.
Ảnh số và các không gian màu trong xử lý ảnh
Ả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.
20177 posts
Xây dựng một cấu hình Emacs từ đầu
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.
Install mysql2 gem on macOS using MAMP as mySQL server
Fix the mysql2 gem compile error on macOS when using MAMP by pointing gem install at the right mysql_config path.
Minify multiple Javascript files in a folder with UglifyJS
Minify every JavaScript file in a folder with a short UglifyJS plus Bash loop, no Grunt setup required.
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
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.
Lấy địa chỉ IP thật của client trên Heroku với Nodejs
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.
Tạo contact form đơn giản với Nodejs - nodemailer
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.
Một số kĩ thuật xử lí tiếng Việt trong Javascript
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.
201615 posts
Kinh nghiệm ban đầu với Fedora Linux
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.
Thuật toán loang ứng dụng trong game dò mìn
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.
Xây dựng thuật toán sinh mìn trong trò chơi dò mìn Minesweeper viết bằng C
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 ô.
Thay đổi độ phân giải màn hình Raspberry Pi
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
A very simple guide to GNU Emacs
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
Cấu hình Emacs để lập trình C
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
Lập trình viên nên tạo website cá nhân
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
Cấu trúc rẽ nhánh trong C
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
Biến, hằng và nhập xuất dữ liệu trong C
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
Toán tử trong C
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
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
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
Cấu trúc chương trình C cơ bản
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
Giới thiệu serie học lập trình C
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
Thiết lập Sublime Text 3 để biên dịch và chạy ngôn ngữ C
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
Sống với đam mê hoặc một cuộc đời nhàm chán
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
