# Sythra Articles > Free, beginner-friendly tutorials on Python, OpenCV, MediaPipe, computer > vision, machine learning, and AI — published by Sythra. Every article is > readable without an account, a paywall, or a signup. - Site: https://articles.sythra.ai/ - Publisher: Sythra — https://sythra.ai - Product (learn-by-doing platform with an AI tutor): https://app.sythra.ai - Sitemap: https://articles.sythra.ai/sitemap.xml - RSS: https://articles.sythra.ai/rss.xml ## How to use this site - Append `.md` to any article URL for clean Markdown: `https://articles.sythra.ai/articles/` → `https://articles.sythra.ai/articles/.md` - `https://articles.sythra.ai/llms-full.txt` contains every published article in one file. - Content is free to quote and summarize. Please cite the canonical article URL so readers can reach the original. ## Articles - [ML model evaluation mistakes that make good numbers meaningless](https://articles.sythra.ai/articles/ml-model-evaluation-mistakes.md): Nine errors behind great offline metrics and bad production models: random splits on time series, threshold-free metrics, tuning on the test set. (vaibhavkothari, 2026-08-29, 9 min) - [Data leakage: the kinds that survive your train/test split](https://articles.sythra.ai/articles/data-leakage-in-machine-learning.md): Splitting correctly stops the obvious leak. Target encoding, feature stores, label windows and proxy features leak anyway — how to find each. (vaibhavkothari, 2026-08-29, 10 min) - [Production ML architecture: training-serving skew](https://articles.sythra.ai/articles/production-ml-architecture.md): The model is the small part. Training-serving skew, feature freshness, shadow deploys, drift detection, and monitoring that catches decay. (vaibhavkothari, 2026-08-29, 10 min) - [Embeddings mathematically: what cosine similarity measures](https://articles.sythra.ai/articles/embeddings-explained-mathematically.md): The geometry of embedding space: why you normalise, what dimensionality really buys you, and the anisotropy problem nobody mentions. (vaibhavkothari, 2026-08-29, 9 min) - [The attention mechanism, worked out by hand](https://articles.sythra.ai/articles/attention-mechanism-visualized.md): Queries, keys and values with real numbers. Why the scaling factor is sqrt(d_k), what multi-head attention buys, and how causal masking works. (vaibhavkothari, 2026-08-29, 9 min) - [Transformer from scratch in PyTorch, block by block](https://articles.sythra.ai/articles/transformer-from-scratch-pytorch.md): A working decoder-only transformer in 120 lines. Pre-norm, residual streams, why the MLP is 4x wide, weight tying, stable initialisation. (vaibhavkothari, 2026-08-29, 10 min) - [CNNs from scratch in NumPy: convolution as a matrix multiply](https://articles.sythra.ai/articles/cnn-from-scratch-numpy.md): Convolution forward and backward with no framework. The im2col trick that makes it fast, why the backward pass is a convolution too, and a net that trains. (vaibhavkothari, 2026-08-29, 11 min) - [Agentic AI architecture: the loop and what breaks](https://articles.sythra.ai/articles/agentic-ai-architecture.md): An agent is a loop with tools and a stopping condition. Context growth, error handling, termination — and when to write a chain instead. (vaibhavkothari, 2026-08-29, 12 min) - [MCP and tool calling: designing tools an LLM can use](https://articles.sythra.ai/articles/mcp-and-tool-calling-llm.md): Tool calling fails at the interface, not the model. Schema design, descriptions, error contracts, and what MCP actually standardises. (vaibhavkothari, 2026-08-29, 11 min) - [LLM evaluation: grading a model with no right answer](https://articles.sythra.ai/articles/llm-evaluation-guide.md): Vibes do not scale and BLEU measures nothing you care about. Eval sets, LLM-as-judge without fooling yourself, and the biases that corrupt it. (vaibhavkothari, 2026-08-29, 10 min) - [Building RAG properly: chunking, evaluation, reranking](https://articles.sythra.ai/articles/rag-chunking-retrieval-evaluation-reranking.md): Most RAG fails at retrieval, not generation. Build a golden set, measure recall@k, run chunking experiments, add a reranker when data says so. (vaibhavkothari, 2026-08-29, 12 min) - [Fine-tuning vs RAG: how to actually choose](https://articles.sythra.ai/articles/fine-tuning-vs-rag.md): Fine-tuning teaches behaviour, RAG supplies facts. A decision framework, the LoRA maths, real costs, and the cheaper ladder to climb first. (vaibhavkothari, 2026-08-29, 11 min) - [Vector databases under the hood: HNSW and IVF-PQ](https://articles.sythra.ai/articles/vector-databases-under-the-hood.md): ANN search trades accuracy for speed. How HNSW graphs and IVF-PQ quantisation work, which knobs move recall, and how to choose an index. (vaibhavkothari, 2026-08-29, 12 min) - [Matrix multiplication in NumPy: @ vs *, and the shape error everyone hits](https://articles.sythra.ai/articles/numpy-matrix-multiplication-shapes.md): Why A @ B and A * B give completely different answers, what "shapes not aligned" really means, and the one rule that makes matrix shapes click for good. (vaibhavkothari, 2026-08-26, 9 min) - [What matrices actually do in machine learning](https://articles.sythra.ai/articles/matrix-operations-for-machine-learning.md): Your dataset is a matrix, a model is a matrix, and training is matrix multiplication repeated. Six operations, drawn out, with the ML job each one does. (vaibhavkothari, 2026-08-26, 7 min) - [Build a chatbot that answers from your own PDFs in Python](https://articles.sythra.ai/articles/rag-chatbot-pdf-python-claude.md): Retrieval-augmented generation in plain Python: split a PDF into chunks, find the relevant ones, and let Claude answer using only those. No vector database required. (vaibhavkothari, 2026-08-26, 7 min) - [Get structured JSON out of an LLM — reliably](https://articles.sythra.ai/articles/llm-structured-json-output-python.md): Asking a model to reply in JSON works until it does not. Learn why tool schemas beat prompt begging, and how to validate every response before it reaches your code. (vaibhavkothari, 2026-08-26, 6 min) - [venv vs conda vs uv — which Python environment tool should you use?](https://articles.sythra.ai/articles/venv-vs-conda-vs-uv.md): Three ways to keep project dependencies apart. A straight comparison of speed, package coverage and complexity, plus a clear recommendation for each situation. (vaibhavkothari, 2026-08-26, 6 min) - [Jupyter vs VS Code vs Colab: where should you learn machine learning?](https://articles.sythra.ai/articles/jupyter-vs-vscode-vs-colab.md): Free GPUs, offline work, real debugging — each tool wins somewhere. An honest comparison plus the setup that gets you the benefits of all three. (vaibhavkothari, 2026-08-26, 6 min) - [Auto-organize your downloads folder with Python](https://articles.sythra.ai/articles/python-auto-organize-files.md): A script that sorts files into folders by type, handles name clashes safely, and can keep watching for new arrivals. Dry-run first, so nothing is ever lost. (vaibhavkothari, 2026-08-26, 6 min) - [Train your first machine learning model in 20 lines of Python](https://articles.sythra.ai/articles/first-machine-learning-model-scikit-learn.md): No maths degree required. Load data, split it, fit a model, check the score — the four steps every scikit-learn project uses, explained line by line. (vaibhavkothari, 2026-08-26, 6 min) - [Train/test split explained — and why your accuracy is a lie](https://articles.sythra.ai/articles/train-test-split-data-leakage.md): A 99% accurate model that fails in production usually has data leakage. Learn the four ways test data sneaks into training and how a scikit-learn Pipeline prevents all of them. (vaibhavkothari, 2026-08-26, 6 min) - [Confusion matrix, precision and recall — without the maths headache](https://articles.sythra.ai/articles/confusion-matrix-precision-recall-explained.md): Accuracy hides the mistakes that matter. Learn to read a confusion matrix, tell precision from recall, and pick the metric that fits what your model is actually for. (vaibhavkothari, 2026-08-26, 6 min) - [How to detect overfitting in your own model](https://articles.sythra.ai/articles/how-to-detect-overfitting.md): Overfitting means your model memorised the training data instead of learning from it. Here are the three checks that reveal it and the fixes that work, in order. (vaibhavkothari, 2026-08-26, 6 min) - [Clean a messy CSV with pandas before you train anything](https://articles.sythra.ai/articles/clean-messy-csv-pandas.md): Ten pandas fixes for the problems every real dataset has: broken headers, duplicate rows, mixed types, silly outliers and inconsistent categories. (vaibhavkothari, 2026-08-26, 6 min) - [Control your volume with hand gestures using Python](https://articles.sythra.ai/articles/hand-gesture-volume-control-python.md): Build a gesture volume controller with OpenCV and MediaPipe. Pinch your thumb and index finger together to turn the sound down, spread them apart to turn it up. (vaibhavkothari, 2026-08-26, 7 min) - [Real-time face detection in Python: MediaPipe vs Haar cascade](https://articles.sythra.ai/articles/face-detection-python-mediapipe-vs-haar.md): Two ways to detect faces in a webcam feed with Python. See the code for both, then a straight comparison of speed, accuracy and when each one is the right choice. (vaibhavkothari, 2026-08-26, 6 min) - [Count fingers with MediaPipe in Python](https://articles.sythra.ai/articles/count-fingers-mediapipe-python.md): Hold up three fingers and Python says three. Learn the landmark logic behind finger counting, including the thumb rule that trips everyone up. (vaibhavkothari, 2026-08-26, 6 min) - [Build an AI push-up counter with pose estimation in Python](https://articles.sythra.ai/articles/pushup-counter-pose-estimation-python.md): Use MediaPipe Pose to measure your elbow angle and count push-up reps automatically. The same state machine works for squats, curls and any repeated movement. (vaibhavkothari, 2026-08-26, 7 min) - [Extract text from an image with Python (OCR that actually works)](https://articles.sythra.ai/articles/extract-text-from-image-python-ocr.md): Tesseract plus a few lines of OpenCV preprocessing turns blurry photos into clean text. Learn the cleanup steps that take accuracy from unusable to reliable. (vaibhavkothari, 2026-08-26, 6 min) - [ModuleNotFoundError: No module named 'cv2' — how to fix it](https://articles.sythra.ai/articles/no-module-named-cv2-fix.md): Python cannot find OpenCV because the package was installed into a different Python than the one running your script. Here is how to find the right Python and fix it in under five minutes. (vaibhavkothari, 2026-08-26, 7 min) - ['pip' is not recognized — fix it on Windows in 5 minutes](https://articles.sythra.ai/articles/pip-not-recognized-windows-fix.md): Windows says pip is not recognized as an internal or external command because pip is not on your PATH. Use python -m pip for an instant fix, then repair PATH properly. (vaibhavkothari, 2026-08-26, 5 min) - [IndentationError in Python: what it means and how to fix it](https://articles.sythra.ai/articles/python-indentationerror-fix.md): Python uses spaces to decide which lines belong together, so indentation is part of the grammar. Here is how to read each IndentationError message and fix it fast. (vaibhavkothari, 2026-08-26, 6 min) - [TypeError: 'NoneType' object is not subscriptable — the debug recipe](https://articles.sythra.ai/articles/nonetype-not-subscriptable-fix.md): This error means a function handed you None and you tried to index it. Learn the three functions that return None most often and the two-line guard that fixes them. (vaibhavkothari, 2026-08-26, 5 min) - [ValueError: could not convert string to float — fix your data, not your code](https://articles.sythra.ai/articles/could-not-convert-string-to-float-fix.md): This error means one cell in your data is not a number. Learn how to find the exact bad row in pandas and clean commas, currency symbols, percent signs and blanks for good. (vaibhavkothari, 2026-08-26, 6 min) - [Build a Virtual Mouse with OpenCV and MediaPipe in Python](https://articles.sythra.ai/articles/virtual-mouse-opencv-mediapipe.md): Learn how to build a virtual mouse in Python using OpenCV and MediaPipe hand tracking. Move the cursor with your index finger and click with a pinch — beginner-friendly step-by-step tutorial. (vaibhavkothari, 2026-08-04, 13 min) - [Your first Python program: say hello in 5 minutes](https://articles.sythra.ai/articles/first-python-hello.md): The easiest possible start: install nothing fancy, type a few lines, and see Python talk back to you. (vaibhavkothari, 2026-07-24, 3 min) - [Stop renaming files by hand](https://articles.sythra.ai/articles/python-rename-files-script.md): A beginner-friendly Python script that renames messy files in a folder — with a safe dry-run mode so nothing breaks. (vaibhavkothari, 2026-07-24, 5 min) - [Talk to an AI from Python in about 20 lines](https://articles.sythra.ai/articles/python-talk-to-llm-20-lines.md): Send a prompt to an AI model from Python and print the reply — a short, beginner-friendly walkthrough with almost no setup drama. (vaibhavkothari, 2026-07-24, 5 min) - [Stop memorizing Python syntax](https://articles.sythra.ai/articles/seven-python-patterns-for-ml-notebooks.md): You don’t need every Python trick. Master these seven patterns and you’ll read — and write — almost any beginner ML notebook with confidence. (vaibhavkothari, 2026-07-24, 5 min) - [What is Sythra?](https://articles.sythra.ai/articles/what-is-sythra.md): Sythra is a machine learning education platform — structured courses, an AI tutor that teaches, in-browser labs, and Project Studio so you learn ML by building. (vaibhavkothari, 2026-07-24, 2 min) ## Topics - [Ai](https://articles.sythra.ai/topics/ai): every free Ai article. - [Announcements](https://articles.sythra.ai/topics/announcements): every free Announcements article. - [Architecture](https://articles.sythra.ai/topics/architecture): every free Architecture article. - [Coding](https://articles.sythra.ai/topics/coding): every free Coding article. - [Computer Vision](https://articles.sythra.ai/topics/computer-vision): every free Computer Vision article. - [Databases](https://articles.sythra.ai/topics/databases): every free Databases article. - [Deep Learning](https://articles.sythra.ai/topics/deep-learning): every free Deep Learning article. - [Errors](https://articles.sythra.ai/topics/errors): every free Errors article. - [Hand Tracking](https://articles.sythra.ai/topics/hand-tracking): every free Hand Tracking article. - [Learning](https://articles.sythra.ai/topics/learning): every free Learning article. - [Llm](https://articles.sythra.ai/topics/llm): every free Llm article. - [Machine Learning](https://articles.sythra.ai/topics/machine-learning): every free Machine Learning article. - [Mediapipe](https://articles.sythra.ai/topics/mediapipe): every free Mediapipe article. - [Numpy](https://articles.sythra.ai/topics/numpy): every free Numpy article. - [Opencv](https://articles.sythra.ai/topics/opencv): every free Opencv article. - [Pandas](https://articles.sythra.ai/topics/pandas): every free Pandas article. - [Product](https://articles.sythra.ai/topics/product): every free Product article. - [Python](https://articles.sythra.ai/topics/python): every free Python article. - [Rag](https://articles.sythra.ai/topics/rag): every free Rag article. ## Writers - [Vaibhav Kothari](https://articles.sythra.ai/writers/vaibhavkothari): Full-stack engineer · writing beginner-friendly Python, OpenCV & ML guides on Sythra ## Optional - [Full corpus](https://articles.sythra.ai/llms-full.txt): every published article, full text, single file. - [All articles](https://articles.sythra.ai/articles): browsable library with search. - [Sitemap](https://articles.sythra.ai/sitemap.xml): every indexable URL. - [RSS feed](https://articles.sythra.ai/rss.xml): newest 50 articles.