VLC Source Tour: One Binary That Plays Everything, Built From Loadable Parts
You hand VLC a strange file — a 4 GB ISO, an HLS playlist from a network camera, a half-corrupted AVI — and it just plays. No codec pack, no “install a plugin to continue”, no format picker. The usual...
OBS Studio source tour: where a dropped frame actually dies in libobs
Your stream sits at 20 fps. The OBS stats window says “skipped frames due to rendering lag,” your GPU is nowhere near 100%, and none of your sources report errors. You are not alone in finding this maddening, because the...
Inside mpv's playloop: the player core that skips frames instead of stuttering
Your video stalls for a tenth of a second, and most players respond by freezing the picture while the audio buffer runs dry — you get the ugly double-jerk of a paused frame followed by a sound hiccup. mpv almost...
Inside Kodi's application loop: one thread renders the skin while a 50 GB rem...
A Raspberry Pi 4 is playing a 50 GB remux — HEVC, 4K, a full bitstream at 40 Mbps — and at the same time you arrow down through its skin menus at 60 fps with animations that never hitch....
Inside FFmpeg: A Source Tour of the Demux, Decode, Filter, Encode and Mux Thr...
Run ffmpeg -i fourk.mov -c:v libx264 -crf 23 out.mp4 on a long 4K clip and the machine hums for an hour. The only visible feedback is that one line ticking upward: frame= 48211 fps= 41 q=23.0 size= .... It looks...
Inside three.js: From Scene Graph to WebGL Draw Calls
Every three.js developer eventually hits the same three walls. First, a mesh you just added simply does not render — no error, no warning, just an empty canvas. Second, you change a single material flag like needsUpdate and the frame...
Inside SFML: How the Module System Turns Vertices into Pixels
If you have ever written a 2D game against raw SDL, you know the ritual: create a window, create a renderer, fill a rect, call SDL_RenderPresent, and only then start worrying about textures, blending, and scaling. SFML hides all of...
Inside SDL3: How the Cross-Platform Media Layer Absorbs Every OS
Ask anyone who has shipped a native app on three operating systems: the windowing layer is where optimism goes to die. On Windows you fight message loops and DPI, on macOS you fight the main thread and lifecycle events, on...
Inside raylib: How the Minimal C Game Library Draws a Frame
Every newcomer hits the same wall with a full engine: to draw one red circle you inherit a scene tree, an asset importer, an editor layout, and a build system you did not choose. Engines like Godot earn that complexity...
Inside PixiJS: How the Batcher Turns Thousands of Sprites into One Draw Call
Thousands of moving sprites are where naive canvas-2D code goes to die. A loop of drawImage calls crosses the JavaScript-to-native boundary thousands of times per frame, re-sends state on every call, and gives the GPU nothing it can chew on...
Inside Phaser: The Scene Lifecycle and Step Loop Behind 2D Web Games
A Phaser game ships as one JavaScript bundle and then runs on a five-year-old Android phone, a school Chromebook, and a desktop browser at 144 Hz. That is a strange engineering target for a game engine: no install step, no...
Inside MonoGame: The XNA Successor's Game Loop, SpriteBatch, and Content Pipe...
Stardew Valley, Celeste, Streets of Rage 4, and Carrion were all built on MonoGame — an open-source re-implementation of Microsoft’s discontinued XNA Framework. The deal XNA offered is seductive: you subclass Game, override Update and Draw, call base.Run(), and a...
Inside LÖVE: How Lua Callbacks Drive the Simplest 2D Game Framework
A complete LÖVE game fits in a single main.lua that is often shorter than this article. You define love.load(), love.update(dt), and love.draw(), run love, and a window opens with a running game. After configuring scenes and build settings in bigger...
Inside Godot: How the Scene Tree, Servers, and GDScript VM Actually Work
You write a small func _process(delta) in GDScript, press play, and a character moves across the screen at a smooth sixty frames per second. It feels like magic, but the whole thing is a precisely choreographed C++ routine that runs...
Inside Bevy: How the ECS Scheduler Runs Your Systems in Parallel
Every engine built around a god-object eventually hits the same wall. A GameObject grows a transform, a mesh, a collider, a health value, a script slot, and suddenly every subsystem walks a pointer-chasing object graph, and “can this object move...
Inside tmux: How the Client-Server Model Keeps Sessions Alive
You know the moment: the hotel Wi-Fi hiccups, your SSH connection freezes, and the shell you spent an hour setting up dies with it. Except — if you had started that shell inside tmux, nothing died. You reconnect, type tmux...
Inside Starship: How a Cross-Shell Prompt Renders in Milliseconds
Open a terminal inside a huge monorepo and watch a traditional prompt choke: the git-status segment shells out to git status, the directory scan blocks, and every draw costs hundreds of milliseconds. Starship’s problem is harsher than most, because in...
Inside ripgrep: The Crate Architecture That Makes Search This Fast
You type rg 'fn walk_builder' in a checkout of ripgrep itself and the answer is on screen before your finger has left the Enter key. Run grep -r 'fn walk_builder' . on the same tree and you can hear the...
Inside Neovim: How the RPC Core and Lua Host Actually Work
Run nvim --headless +'lua print(vim.api.nvim_buf_line_count(0))' +qa on a file and you get an answer with no window, no terminal, no user. That is a strange property for an editor: the same binary you use interactively is also a scriptable service...
Inside Helix: The Selection-First Editor Architecture Explained
If you have ever spent a weekend assembling a modal editor out of parts — a plugin manager, an LSP config, a tree-sitter setup, a colorscheme written in a DSL — you know the failure mode. The editor itself is...
Inside Git Internals: How the Object Model, Packfiles, and Commit Walks Actua...
Run git status in a huge repository — say the CPython tree after its move to GitHub — and it answers instantly, while some other tools on the same machine take seconds. Run git log in two repos of comparable...
Inside fzf: The Fuzzy Matching Architecture Behind Instant Interactive Search
Type three characters into fzf while a million lines stream through it, and the best match appears before your finger leaves the key. That is not a shortcut: every keystroke triggers a full pass over every candidate, scoring each one...
Inside the fish Shell: How Typed Characters Become Running Jobs
Open fish for the first time, type git che, and a gray ghost of a full command appears at the end of your line — a real suggestion pulled from your history, not a canned prefix. Press the right-arrow key...
Inside fd: How the Fast Rust Find Replacement Walks Your Filesystem
Every developer knows the ritual: you want the file named foo, and out comes find . -iname "*foo*" -not -path "*/node_modules/*". Quotes because find’s argument order is a trap, -iname because you do not remember the casing, and a -not...