API
A fixed doorway one program uses to call another
An API is an agreed doorway between programs: send a request in this exact shape and you get an answer in that exact shape. You never see the other program's inner workings, only the doorway. Using an AI through an API means your own app can ask the model a question instead of a person typing it.
API key
A secret string that identifies and bills you — never share it
An API key is a long secret string that tells the service who is calling, and whose account to charge. Treat it like a bank card number: never paste it into a chat, a screenshot, or a public repository. If it leaks, delete it in the provider's dashboard and issue a new one immediately.
Git
The tool that records every version of your files
Git keeps a full history of your project, so you can see what changed, when, and go back to any earlier state. It also lets several people work on the same files without overwriting each other. Git runs on your own machine; GitHub is a website that stores copies of Git projects, which is why the two names are often confused.
Learn more
Repository
One project folder together with its whole history
A repository, usually shortened to repo, is a project folder that Git is watching, plus the record of every change ever made in it. Cloning a repository copies both the files and that history onto your machine. When someone says the code is on GitHub, they mean there is a repository there you can copy.
Learn more
Commit
One saved point in the history, with a note about why
A commit is a snapshot of your project at one moment, saved with a short message explaining what you changed and why. Because each commit is kept forever, you can always return to one. Small commits with honest messages are what make a history worth having; one giant commit called update tells nobody anything.
Learn more
Branch
A side track where you can work without disturbing the main one
A branch lets you split off from the main line of work, try something, and leave the original untouched until you are happy with it. If the experiment fails you simply throw the branch away; if it works you merge it back in. This is why teams can build several features at once without stepping on each other.
Learn more
Command line (CLI)
Working by typing commands instead of clicking
A command-line interface is a program you drive by typing instructions, one line at a time, instead of clicking through menus. It looks bare, but it is precise and repeatable: the exact line you typed can be saved, shared, and run again tomorrow. Most developer tools, including Git and the AI coding assistants, offer one.
Learn more
Terminal
The black window where you type commands
The terminal is the application that gives you a place to type commands and shows what they print back. On a Mac it is called Terminal, on Windows it is Windows Terminal or PowerShell. Nothing you type there is dangerous by itself, and you can close the window at any time; the fear it inspires in beginners is out of all proportion to the risk.
Learn more
Algorithm
A recipe: fixed steps that always reach the same result
An algorithm is a finite list of steps that turns an input into an output, like a cooking recipe. Sorting names alphabetically or finding the shortest route are algorithms. The word sounds forbidding, but you already follow algorithms every day; a computer simply follows them without getting bored or skipping a line.
Library
Ready-made code someone else wrote that you can just use
A library is a bundle of code written and tested by other people that you pull into your project so you do not have to solve a solved problem again. Reading a date, drawing a chart, sending an email: someone has already done it well. Choosing good libraries is a real skill, since your program inherits both their strengths and their bugs.
Open source
Software whose code anyone may read, use and change
Open source software publishes its source code under a licence that lets anyone read it, run it, and modify it. That openness is why problems get found by strangers and why you are never locked in to one company. Open does not always mean free of obligations: each licence sets its own conditions, so it is worth reading which one applies.
Debugging
Tracking down why a program misbehaves, and fixing it
Debugging is the work of finding out why a program does something other than what you intended, and then correcting it. Most of it is not clever fixing but patient narrowing down: what exactly happens, what did you expect, where do the two first diverge. Beginners often assume debugging means they failed; in reality it is the larger half of programming.
Error message
The text a program shows when something went wrong
An error message is the text a program or browser shows when it cannot do what the code asks. It usually names what went wrong and where — often a line number. It looks scary, but it is the most useful clue you have: read the first line, or paste it to an AI and ask what it means.
Learn more
Python
A beginner-friendly language widely used for AI
Python is a programming language known for code that reads almost like plain English. It is the most common language for data analysis and AI, and most AI libraries, such as PyTorch and NumPy, are used from Python. On this site you can run real Python right in your browser, with nothing to install.
Learn more
Program
A set of instructions a computer carries out in order
A program is a list of instructions that tells a computer what to do, step by step. Apps, games, and websites are all programs, and so is an AI chatbot. A computer does only what the program says, so when a program misbehaves, the cause lies in its instructions or in the input it was given.
Code
Instructions written in a programming language
Code is the text of a program, written in a programming language such as Python or JavaScript. People write it and the computer runs it. Code must follow the language's rules exactly, so one missing bracket can stop it from running. Writing code is called coding; AI tools can write code too, but a person still has to check it.
Code editor
A program for writing and editing code
A code editor is a program for writing and changing code files. It colours the different parts of the code, points out mistakes as you type, and often has a terminal built in. VS Code (Visual Studio Code) is a popular free one, and many AI coding tools are added to it as extensions.
Flowchart
A diagram that shows the steps of a task in order
A flowchart draws the steps of a task as boxes joined by arrows. A round box marks the start or end, a rectangle is something to do, and a diamond asks a yes-or-no question that splits the path. Drawing one before you build a program makes it clear what should happen, and in what order.
Learn more
What goes into a program and what comes out
Input is what a program receives: keys you type, a mouse click, a file, or a question. Output is what it gives back: words on the screen, a sound, or a saved file. In between, the program processes the input. An AI chatbot follows the same pattern: your question is the input and its answer is the output.
Syntax
The exact rules for how code must be written
Syntax is the set of writing rules of a programming language: where brackets, colons, quotes, and spaces must go. A computer does not guess what you meant, so even one missing quote causes a syntax error and the code does not run at all. The error message usually points to the line, which is the first place to look.
Runtime
The program that actually runs your code or a model
A runtime is the program that actually runs something written elsewhere. Node.js runs JavaScript outside the browser, Pyodide runs Python inside the browser, and llama.cpp reads an AI model file and does its calculations. The word also means "while the program is running", so an error that only appears when you run the code is called a runtime error.
Framework
A ready-made skeleton that your code fills in
A framework is a large body of code that already decides how an app is organised; you write the pieces it calls at the right moment. A library is the other way round: your code calls it whenever you want. Web frameworks save a lot of work, but underneath they still read requests and write responses in plain HTTP, which is why this site shows that loop first.
Learn more
SDK
A kit of code and tools for building on one platform
SDK stands for software development kit. A platform hands it out so your program can use its features, such as cloud saves, leaderboards or sign-in, without writing them from scratch. It usually holds a library that calls the platform's API, plus documentation and examples. On this site it shows up with Cadeplay, which adds its SDK to your game for you.
Learn more
Build step
Turning source code into files ready to run or ship
To build is to turn the code you write into the finished files that will really be run — for example, squeezing a React project into plain HTML, CSS and JavaScript in a dist folder. A build tool does this step. The finished result is also called a build, so "a new build" means a new packaged version of a game or app. Build output is generated again each time, so it is kept out of Git.
Learn more
Game engine
Software that does the shared work of running a game
A game engine handles the work almost every game needs: drawing to the screen, reading input, playing sound, physics and loading images and sounds. You add your own game's rules and art on top. Godot, Unity, Unreal and Flame (built on Flutter) are well-known examples. Many engines can export one project to the web, phones and desktop computers.
Learn more
MVP
The smallest version that people can really use
MVP stands for minimum viable product. For a game it means a minimum playable game: small, but a stranger can pick it up and play from start to finish without help. It is not a demo or a sketch. Releasing an MVP early gives you honest feedback from real players, something months of working alone cannot.
Learn more
.env file
A file that keeps secrets out of your code
A .env file is a plain text file of NAME=value lines, such as tokens and passwords, kept in a project folder. The program reads each value by its name, so the secret itself never appears in the code. The file must be listed in .gitignore so it never enters the repository; if a secret was ever pushed, treat it as leaked and replace it.
CI (continuous integration)
Automatic tests that run on every code change
Continuous integration, or CI, means a server automatically builds the project and runs its tests every time someone sends code to a shared repository. If anything breaks, the team sees a red mark within minutes, before the change is merged. GitHub Actions is one widely used CI service.
Version control
Keeping a record of every change to your files
Version control is the practice of recording each change to a set of files, along with who made it, when, and why. With it you can compare any two versions, go back to an earlier one, and let several people edit the same project safely. Git is the most widely used version control tool today.
Learn more
GitHub
A website that hosts Git repositories online
GitHub is a website that stores copies of Git repositories on the internet, so a team can share one project. Besides storage, it offers pull requests for reviewing changes, issue lists, and automatic checks. Git is the tool on your computer; GitHub is one of several services, along with GitLab, that keep repositories online.
Learn more
Pull request (PR)
A request to review and merge your branch
A pull request, or PR, is a page on a site like GitHub that asks the team to merge the changes on your branch into the main branch. Reviewers read the diff, leave comments, and approve it; pushing more commits updates the same PR. It is less a code exam than a place to explain what you changed and why.
Learn more
Diff
A line-by-line view of what changed
A diff shows the difference between two versions of files: lines starting with - were removed and lines starting with + were added. git diff shows changes not yet staged, and git diff --staged shows what is about to be committed. Reading the diff before every commit is the easiest way to catch a mistake, including changes made by an AI.
Learn more
.gitignore
A file listing what Git should not track
.gitignore is a text file in the project that lists files and folders Git should ignore, such as node_modules, build output, and .env files holding secrets. Each line holds one pattern: a trailing / means a folder and * matches any name. It has no effect on files that are already committed; those need git rm --cached first.
Learn more
Snapshot
A full picture of all files at one moment
A snapshot records the state of every file in a project at one moment. Each Git commit is a snapshot, not just a list of changes; files that did not change simply point to the copy already stored, so snapshots stay small. That is why Git can jump to any commit instantly and compare two moments quickly.
Learn more
Working tree
The real files you see and edit
The working tree is the project folder as you see it: the actual files you open and edit. Git compares it with the last commit to tell you what changed. It is one of three places a change can be, along with the staging area and the repository, and git status shows where each change sits.
Learn more
Staging area
Where you gather changes for the next commit
The staging area, also called the index, holds the changes you have chosen for the next commit. git add moves a change there, and git commit saves only what is staged. Thanks to this middle step you can edit five files but commit just the two that belong together, which keeps the history easy to read.
Learn more
Clone
Copying a whole repository onto your computer
Cloning copies an existing repository, usually from GitHub, onto your computer: every file plus the full history. Git also remembers where it came from as a remote named origin, so you can later pull new changes and push your own. You clone only once; after that, git pull keeps you up to date.
Learn more
Remote
A copy of the repository on another computer
A remote is another copy of the same repository, usually on GitHub, that everyone agrees to share. By convention the main one is called origin. git push sends your commits to it, and git pull or git fetch brings in other people's commits. Your local work does not change; the remote is simply the meeting point.
Learn more
Push
Sending your commits to the remote
Pushing uploads the commits on your branch to a remote so others can see them. The first time, git push -u origin main also links your branch to the remote one, so plain git push works afterwards. If someone else pushed first, Git refuses until you pull their work. git push --force overwrites their commits, so avoid it on shared branches.
Learn more
Pull
Fetching remote commits and merging them in
Pulling downloads new commits from the remote and immediately combines them with your current branch. It is git fetch followed by a merge, so it can cause a conflict if you changed the same lines. git pull --rebase replays your own commits on top instead, keeping the history in a single line.
Learn more
Fetch
Downloading remote commits without merging
Fetching downloads the latest commits from a remote but leaves your own branch untouched. The new work waits under names like origin/main, so you can look at it before deciding to merge. That makes fetch the safe way to see what others have pushed; git pull is fetch plus an immediate merge.
Learn more
Merge
Combining the work of two branches
Merging joins the commits of one branch into another, usually a finished feature branch into main. If the two branches changed different parts, Git combines them on its own; if they changed the same lines differently, it stops with a conflict for you to resolve. A merge keeps the history as it really happened.
Learn more
Conflict
When two changes touch the same lines
A conflict happens when two branches changed the same lines of a file in different ways, so Git cannot decide which to keep. Git stops and marks the spot with <<<<<<<, =======, and >>>>>>>. Edit the file into the correct version, delete the markers, then git add and commit. A conflict is not an error; it is Git asking a person to decide.
Learn more
Fork
Your own copy of someone else's repository
A fork is a copy of another person's repository made under your own account, usually on GitHub. You cannot push to a project you do not own, so you push to your fork and then open a pull request back to the original. Forking is the usual way to contribute to open-source projects.
Learn more
Rebase
Moving your commits on top of another point
Rebasing takes your commits and replays them on top of another commit, so the history reads as one straight line. git rebase -i also lets you combine, reword, or reorder commits before sharing them. A rebase creates new commits in place of the old ones, so never rebase commits that others already have.
Learn more
HEAD
A pointer to where you are in the history right now
HEAD is Git's name for the commit you are on right now, usually the latest commit of your current branch. Many commands count from it: HEAD~1 is one commit before, HEAD~3 three before. git reflog lists every place HEAD has been, which is how lost commits are often recovered.
Learn more
Variable
A name that holds a value
A variable is a name you give to a value so you can use it later. In Python, name = value stores it, and the = means put this value into this name, not equals. You can change what a variable holds at any time and write its name wherever you would write the value.
Learn more
Function
A named block of code you can reuse
A function is a block of code with a name, so you can run it again whenever you need it. In Python you make one with def, list the values it takes inside the brackets, and use return to give a value back. print() and len() are functions that come with Python; def lets you make your own.
Learn more
Condition
A yes-or-no test that decides which code runs
A condition is a question whose answer is True or False, such as score >= 60. An if statement runs its lines only when the condition is True, and else covers the other case. The lines inside must be indented by four spaces; that is how Python tells where the if block ends.
Learn more
Loop
Code that runs again and again
A loop runs the same lines again and again. A for loop goes through items one at a time, such as each number in range(1, 11) or each item in a list. A while loop repeats as long as a condition stays True, so if the condition never becomes False, it never stops.
Learn more
Indentation
Spaces at the start of a line that group code
Indentation is the space at the start of a line. In Python it is part of the rules: the lines under if, for, or def must be indented, usually by four spaces, to show they belong inside. If a line that should be indented is not, or the widths do not line up, Python stops with an IndentationError.
Learn more
List
An ordered collection of values in [ ]
A list keeps several values in one place, in order, inside square brackets. Each item has a position number that starts at 0, so fruits[0] is the first item. You can add items with append(), count them with len(), and go through them one by one with a for loop.
Learn more
Dictionary
Pairs of keys and values in { }
A Python dictionary stores pairs of a key and a value inside curly braces, like {"math": 80}. You look a value up by its key instead of by position, so scores["math"] gives 80. Assigning to a new key adds a pair, and each key can appear only once. In code it is often shortened to dict.
Learn more
Access token
A secret string that lets a tool use your account
An access token is a long secret string a service gives you so that your tools can use your account without your password, for example to upload a game to Cadeplay. Treat it like a password: keep it in a .env file, never paste it into a chat or into code, and delete it in the service's console if it leaks. It has nothing to do with the tokens an AI counts in text.
Learn more
Game loop
The cycle a game repeats many times a second: read input, update the world, draw the screen.
The game loop is the heart of every game. In each round it reads the player's input, updates positions, collisions and score, and draws the new picture. One round makes one frame. Engines run the loop for you, and you write what happens inside it.
Learn more
FPS (frames per second)
How many new pictures a game draws every second.
FPS counts how many times per second the game loop finishes and shows a new frame. 60 FPS means a frame every 16.7 milliseconds and feels smooth; below about 30 the game starts to stutter. Heavy drawing or slow code in update lowers FPS.
Learn more
Sprite
A small picture that moves around in a game, such as a character, a coin or a bullet.
A sprite is a 2D image the game draws at a position every frame. A walking character is often one sprite sheet, a strip of pictures shown one after another to make an animation. Sprites usually carry a hitbox for collision checks.
Learn more
Collision detection
Checking every frame whether two things in a game touch, using invisible boxes called hitboxes.
Collision detection decides when a player lands on a platform, picks up a coin or gets hit. The simplest way is to give each sprite a rectangle (hitbox) and check if two rectangles overlap. Engines include physics systems that do this for you.
Learn more
Delta time
The time that passed since the last frame, used so a game runs at the same speed on every device.
Screens refresh at different speeds, so frames do not all take the same time. Multiplying speed by delta time (dt) moves things by distance per second instead of distance per frame. Without it, a game runs faster on fast monitors and slower on slow phones.
Learn more
Workflow
A fixed sequence of steps for getting a job done
A workflow is a set of steps that always runs in the same order. In AI design, a workflow follows a path written in advance, while an agent decides its own next step. On GitHub, a workflow is a YAML file in .github/workflows/ that runs steps automatically — for example, running tests or asking Claude to fix an issue when someone comments.
Privacy policy
A public page saying what personal data an app collects and why
A privacy policy is a public page that explains what personal data an app or site collects, why, who it is shared with and how users can delete it. App stores require its address before an app can be published, and reviewers check that it matches what the app really does. Many countries' laws also require one.
Learn more
Babylon.js
A free 3D game engine that runs inside the web browser
Babylon.js is an open-source engine for 3D games and scenes that run in a web page, with physics, animation, lighting and 3D model loading built in. It is written in TypeScript and can be used from JavaScript too. Because the browser is the runtime, players open the game from a link with nothing to install.
Learn more
Construct
A 2D game maker you use in the browser, mostly without code
Construct is a game engine for 2D games that runs in the web browser. Instead of typing code, you build the rules on "event sheets": when this happens, do that. JavaScript can be added when you need more. It exports games for the web and other platforms.
Learn more
C++
A fast, long-standing language used inside game engines and browsers
C++ is a programming language that is turned into machine code ahead of time, so programs run very fast and control memory directly. Game engines such as Unreal Engine, web browsers and many large games are written in it. The price is difficulty: mistakes with memory can crash a program, and it takes long to learn.
Learn more
C#
Microsoft's programming language, used for Unity games
C# (say "C sharp") is a programming language made by Microsoft. It is the language you write Unity game scripts in, and it is also used for Windows programs and web servers. It is easier than C++ because memory is cleaned up for you, but it still has a large world of tools to learn.
Learn more
Dart
Google's programming language, used to write Flutter apps
Dart is a programming language made by Google. Flutter apps are written in it, so learning Dart is the first step to building phone apps with Flutter. It looks similar to JavaScript and Java, and it can be turned into fast machine code for phones or into JavaScript for the web.
Learn more
Defold
A free, lightweight game engine scripted in Lua
Defold is a free game engine made mainly for 2D games, with small build sizes so games load fast on phones and the web. Game logic is written in Lua. It appears on the game-server page because servers such as Colyseus ship a Defold SDK.
Learn more
Flutter
Google's toolkit for building apps for phones, web and desktop from one code
Flutter is a free toolkit from Google for making apps. You write the app once in Dart, and the same code builds an iPhone app, an Android app, a web page or a desktop program. Every part of the screen is a widget, and widgets are put inside other widgets to build the whole screen.
Learn more
Flame
A free 2D game engine built on top of Flutter
Flame is an open-source 2D game engine that runs inside Flutter. It adds what Flutter lacks for games: a game loop, sprites, collision detection and input handling, while the menus around the game can still be normal Flutter widgets. It is for 2D only; do not plan a 3D game on it.
Learn more
Godot
A free, open-source engine for 2D and 3D games
Godot is a game engine anyone can use for free, with no fees on sales, because it is open source under the MIT license. It makes both 2D and 3D games, and you write game code in GDScript, a language that looks like Python, or in C#. It is light enough to run on an ordinary laptop.
Learn more
Go
Google's programming language, popular for servers
Go (also called Golang) is a programming language made at Google. A Go program compiles into one executable file that runs fast and handles many connections at once, so it is popular for servers. The Nakama game server is written in Go, and you can extend it with your own Go modules.
Learn more
Haxe
A programming language that turns one code into many other languages
Haxe is an open-source programming language whose compiler turns the same code into JavaScript, C++, C# and other targets. Game developers use it to ship one game to the web, desktop and phones. It appears on the game-server page because some servers ship a Haxe SDK.
Learn more
Lua
A small scripting language that is easy to put inside games
Lua is a light, simple scripting language that programs can carry inside themselves. Game engines and servers embed it so that game rules can be written and changed without rebuilding the whole program. Defold uses Lua, and the Nakama server accepts Lua modules next to Go and TypeScript.
Learn more
Phaser
A free JavaScript framework for 2D browser games
Phaser is an open-source framework for making 2D games that run in the web browser, written with JavaScript or TypeScript. It runs the game loop for you and gives you sprites, physics, sound and input, so you only write what happens each frame. Many first web games are made with it.
Learn more
PixiJS
A fast JavaScript library for drawing 2D graphics in the browser
PixiJS is an open-source library that draws 2D pictures and sprites very fast in a web page, using the graphics chip. It only draws: it has no physics, sound or game rules of its own, so it is a drawing library rather than a full game engine. Games add those parts themselves or use an engine such as Phaser.
Learn more
Unity
A widely taught game engine for mobile, PC and console games
Unity is a game engine used for a large share of mobile games and many PC and console games. You build scenes in its editor and write game scripts in C#. It exports to almost every platform, including the web (WebGL), which is why so many courses teach it. It is heavy for a very small first game.
Learn more
Unreal Engine
Epic Games' engine for high-quality 3D games
Unreal Engine is a game engine from Epic Games, chosen when the look matters most: realistic lighting, materials and large 3D worlds. Game code is written in C++ or built visually with Blueprints. It needs a powerful computer and is too big for a first small game.
Learn more
Blueprint
Unreal Engine's way of building game logic by connecting boxes
Blueprint is the visual scripting system of Unreal Engine. Instead of typing code, you place boxes (nodes) such as "when the key is pressed" or "play a sound" and draw wires between them. It lets you make game logic without writing C++, but big Blueprint graphs can become hard to read.
Learn more
glTF
The standard file format for sending 3D models
glTF is an open file format for 3D models, kept by the Khronos Group. One file holds the shape, materials, textures and animations, ready for an engine to load quickly, which is why it is often called "the JPEG of 3D". It comes as .gltf (text plus separate files) or .glb (everything in one binary file).
Learn more
TypeScript
JavaScript with types added, checked before the code runs
TypeScript is JavaScript plus types: you write which kind of value each variable holds, and a checker warns about mistakes before the program runs. Browsers run JavaScript, so TypeScript is first turned into plain JavaScript. Large web apps, Babylon.js and many game servers use it.
Learn more
Rust
A fast programming language that blocks many memory mistakes
Rust is a programming language that runs as fast as C++ but checks memory use while compiling, so whole kinds of crashes and security bugs are stopped before the program runs. It is used for servers, command-line tools and game backends such as SpacetimeDB modules. It is known for being strict and slow to learn.
Learn more
PHP
A programming language that builds web pages on the server
PHP is a programming language that runs on a web server and builds the HTML page before it is sent to the browser. A large part of the web runs on it, including WordPress, and SONUB itself is a PHP (Laravel) program. The visitor never sees PHP code, only the page it produced.
Learn more
Vite
A tool that starts and builds web projects quickly
Vite is a front-end build tool. It creates a ready-to-run project (React, Vue and others), runs a development server that updates the page as soon as you save, and with one command builds the final files into a dist folder that any web server can serve. It needs Node.js.
Learn more
Pyodide
Python that runs inside the web browser
Pyodide is the real Python interpreter turned into WebAssembly so it runs inside a web page. SONUB's Python lessons use it, so your code runs on your own computer with nothing to install. The first load takes a while because the runtime is downloaded. It cannot open normal network servers or run background services like Python on a computer.
Learn more
A/B testing
Showing two versions to different players to see which works better
In an A/B test, players are split into two groups at random: group A sees the current version and group B sees a changed one, such as a different price or tutorial. You then compare a number you chose in advance, like how many players come back the next day. It replaces guessing with measurement, but needs enough players for the difference to mean anything.
Learn more
Age rating
The age limit a store puts on a game based on its content
Before a game is published, the store asks a content survey: yes/no questions about violence, blood, gambling, chat with strangers and so on. Your answers decide the age rating shown on the store, such as "for ages 12 and up". A missing survey is a common reason a finished game cannot be submitted, and wrong answers can get the game removed later.
Learn more
Apache 2.0
A permissive open-source license that also covers patents
Apache License 2.0 is an open-source license: anyone may use, change, sell and share the code, even inside a closed commercial product. In return you keep the copyright and license notices and mark files you changed. It also grants the patents the contributors hold for that code, which is one reason companies like it.
Learn more
Asset
A picture, sound, model or other file a game uses
Assets are the files a game is built from besides its code: images, sprites, sounds, music, 3D models, fonts and level data. They are usually most of a game's size. You need the right to use every asset, including ones made with AI, so check the license before you ship.
Learn more
Battle pass
A season-long ladder of rewards unlocked by playing
A battle pass is a game item that runs for a season, often a few weeks or months. Playing and finishing challenges earns points that unlock reward tiers one by one. There is usually a free track and a paid track with more rewards, and it ends when the season ends, which gives players a reason to come back.
Learn more
Core loop
The short set of actions a player repeats over and over
The core loop is what the player does again and again in a game, for example: jump over an obstacle → collect a coin → speed up. If this loop is not fun, nothing added around it will save the game, so it is built and tested first. It is a design idea, not the same as the game loop in code that draws each frame.
Learn more
Ecosystem
All the tools, libraries and people around one technology
A technology's ecosystem is everything that grows around it: libraries, editors, tutorials, ready-made assets, forums and the people who answer questions. A large ecosystem means most problems already have an answer somewhere; a young one means you will build and solve more yourself. It is a big reason to choose one engine or language over another.
Learn more
Edge case
A rare or extreme situation where code often breaks
An edge case is an input or situation at the very end of what is possible: an empty name, a score of exactly zero, the phone losing signal while saving, or pressing two keys in the same frame. Code usually works for the normal case and breaks here, so listing edge cases and testing each one finds bugs early. AI is good at listing them.
Learn more
Frame
One still picture of the game screen, drawn once per loop
A game shows motion by drawing many still pictures quickly, like a flip book. Each picture is a frame: once per frame the game reads input, updates positions and draws the screen. At 60 frames per second each frame has about 16 milliseconds. Moving things a fixed amount per frame makes the game faster on faster screens, which is why delta time is used.
Learn more
Balancing
Tuning difficulty, rewards and numbers so a game feels fair and fun
Balancing is adjusting the numbers of a game: how high a jump goes, how many enemies a level has, how much a reward gives, how much an item costs. Small changes can make a game too easy, too hard or unfair. AI can simulate and suggest numbers, but whether it feels right is decided by people playing it.
Learn more
Game logic
The code that carries out a game's rules
Game logic is the part of the code that decides what happens: whether a hit lands, how points are counted, when a level ends, who wins. Drawing the screen and playing sounds are separate parts. In online games the server often runs the game logic so that players cannot cheat by changing their own copy.
Learn more
Go live
Switching an uploaded build to the one players actually get
On a game platform, uploading a build and making it live are two steps. An uploaded build that passed the checks waits until you promote it; from that moment it is the version players receive, and its play link opens. Keeping the steps apart lets you look at a build first, and a rollback can put the previous build back.
Learn more
Guild
A lasting group of players who play together inside a game
A guild (also called a clan) is a group that players create and join inside a game, with members, roles such as leader, join requests and a group chat. It keeps players coming back for each other. For the developer it is a community feature the game server has to store and manage, which is why the server choice matters.
Learn more
Hook
A fixed spot where your own code runs before or after a built-in action
A hook is a place a program leaves open so you can add code at a chosen moment. On the Nakama game server you can hook before and after every built-in call: for example, check a player's name before an account is created, or give a reward after a match ends. You extend the server without changing its own code.
Learn more
In-app purchase
Buying items or features inside an app through the store
An in-app purchase is a payment made inside an app or game, such as coins, an ad-free version or a battle pass. On phones it goes through the store's own payment system, and the store keeps a share of the price. The store gives back a receipt, which the game server should validate before granting the item.
Learn more
Inspector
A window for looking into a running scene and changing its values
An inspector is a debugging tool that lists the objects in a running game or page and shows their properties: position, size, colour, physics settings. You can change a value and see the result at once without restarting. Babylon.js, Unity and the browser's developer tools all have one.
Learn more
Interface
An agreed list of functions a piece of code promises to provide
In programming, an interface describes what something can do, not how: a list of functions with their inputs and outputs. Any code that has those functions can be used in that place. In Go, the Nakama server hands your modules typed interfaces, so the compiler checks you call them correctly.
Learn more
Leaderboard
A ranked list of players by score
A leaderboard ranks players by score, time or another number. Games often reset it daily or weekly so new players have a chance, and the server must decide how ties are broken and catch cheaters who send fake scores. Scores should be checked on the server, because anything the game client sends can be changed.
Learn more
License
The terms that say how code, art or data may be used
A license is the written permission that comes with code, images, sounds or data: whether you may use it, change it, sell it, and what you must do in return, such as credit the author. Finding something online does not mean you may use it. Open-source licenses such as MIT or Apache 2.0 allow a lot, but each has its own conditions.
Learn more
LiveOps
Running a game after launch with events, shop changes and updates
LiveOps (live operations) is the work of keeping a released game alive: weekend events, new shop items, seasons, balance changes and A/B tests, often changed from a dashboard without shipping a new build. Games that run for years depend on it, and some backends sell LiveOps tools so the team does not have to build them.
Learn more
Localization
Adapting a game's text and content to each language and culture
Localization is more than translation: besides the words, it fits dates, numbers, currencies, layout (some languages are longer, Arabic reads right to left) and cultural details to each market. AI can draft translations quickly, but a person who knows the language should check meaning, terms and tone before release.
Learn more
Matchmaking
Putting suitable players together into one match
Matchmaking is how an online game decides who plays with whom. The matchmaker collects players who want a match and groups them by rules such as similar skill, region, ping or game mode. Good matchmaking keeps matches fair and waits short; the two goals pull against each other.
Learn more
Everything around the match itself: accounts, friends, chat, saves, rankings
In game servers, the meta layer means the features outside the actual round of play: accounts and login, friends, guilds, chat, saved progress, leaderboards and shops. These are boring to build and easy to get subtly wrong, so many teams pick a game server that already has them instead of writing them over months.
Learn more
Module
A separate file or bundle of code you load into a program
A module is a piece of code kept in its own file or package so that other code can load and reuse it. In Python, `import json` loads the json module. On game servers such as Nakama or SpacetimeDB, you upload your own modules to add game rules. A bad module can still crash the program it runs inside.
Learn more
Native
Running directly as the device's own machine code
Native code has been compiled into the machine code of the processor it runs on, with no interpreter or extra layer in between, so it runs at full speed. A native app is built for one platform, such as iPhone. On a game server, running your logic natively in the same process is fast, but a crash there brings the whole server down.
Learn more
NPC
A character in a game controlled by the computer, not a player
An NPC (non-player character) is any character the game itself moves: a shopkeeper, a quest giver, an enemy guard. Its lines are written by the developers and its behaviour comes from rules in the code, often a state machine. AI can draft dialogue for many NPCs quickly, but someone still has to read and choose it.
Learn more
Physics
The part of a game engine that computes gravity, collisions and motion
In a game, physics is the code that moves objects the way the real world roughly does: gravity pulls things down, objects bounce, slide and stop when they collide. Engines include a physics system so you set mass, speed and shape instead of writing the maths. It is an approximation tuned to feel good, not an exact simulation.
Learn more
Presence
Information about who is online right now
Presence is the live status of each user: online, offline, in a match, away. Friends lists and guild lists use it to show a green dot next to a name. The server has to track every connection and tell others when it changes, usually over a WebSocket, which is harder at scale than it looks.
Learn more
QA
Checking a product for defects before release
QA (quality assurance) is the work of finding problems before players do: playing through levels, trying strange inputs, testing on different devices and writing down how to reproduce each bug. AI can list test scenarios, such as twenty ways to break a save system, but deciding what is good enough to ship is a person's job.
Learn more
Receipt validation
Checking that a store purchase is genuine before giving the item
After an in-app purchase, the store gives the game a receipt: proof of what was bought. A cheater can fake a receipt on their own device, so the game server sends it to Apple's or Google's servers to confirm it is real and not used before, and only then grants the item. Game servers such as Nakama do this check for you.
Learn more
Reducer
In SpacetimeDB, a function that runs inside the database and changes its tables
In SpacetimeDB, the database is also the server. You upload a module, and its functions, called reducers, run inside the database as one transaction each and change the tables. Clients call reducers instead of HTTP endpoints, and subscribers see the changed rows right away. The word means something else in web tools such as Redux.
Learn more
Rollback
Putting the previous version back after a bad release
A rollback undoes a release by switching back to the version that worked before. Platforms keep earlier builds so a broken update can be replaced in seconds instead of rushing a fix. It returns the code, but data that the bad version already changed, such as saved games, may need separate repair.
Learn more
Deterministic rollback
Rewinding and replaying the game when a late input arrives
In fast online games, waiting for every player's input would feel slow. With rollback, each game keeps running with the inputs it has; when a late input arrives, it rewinds to that frame and quickly replays to now. This only works if the simulation is deterministic: the same inputs always give exactly the same result on every machine.
Learn more
RPC
Calling a function on another computer as if it were local
RPC (remote procedure call) lets a program ask another computer to run a named function with some arguments and send back the result. On the Nakama server you register your own RPCs, and the game calls them by name. MCP messages use JSON-RPC 2.0, where each call is a small JSON object with a method name and parameters.
Learn more
Tick
One step in which the game server updates the match at a fixed rate
A game server does not update the world continuously; it moves forward in ticks. On each tick it reads the inputs that arrived, applies the game rules and sends the new state to players. A higher tick rate (for example 60 per second instead of 10) feels more responsive but costs more processing and network traffic.
Learn more
State machine
A design where something is in one state at a time and moves by rules
A state machine lists the states something can be in and the rules for moving between them. A game character might be idle, running, jumping or falling, and "jump pressed while running" moves it to jumping. Because only one state is active, the code avoids impossible mixes such as jumping and crouching at once.
Learn more
Steam
Valve's store for PC games
Steam is the largest store for PC games, run by Valve. Developers pay a fee per game rather than a yearly account fee, and build a store page with a trailer, screenshots and tags. Wishlists collected before launch matter a lot, because Steam tells those players when the game comes out.
Learn more
Subscribe
Asking to be told automatically whenever certain data changes
To subscribe is to register interest in some data so the server pushes every change to you, instead of you asking again and again. In SpacetimeDB a client subscribes to a query, and the rows it cares about arrive the moment they change. It needs a connection that stays open, such as a WebSocket.
Learn more
Test track
A release channel that gives a build only to chosen testers first
Google Play releases go through tracks: internal testing, closed testing, open testing and production. A test track sends a real, installable build only to the testers you list, so you can find problems before everyone gets it. New personal developer accounts must run a closed test with at least 12 testers for 14 days before applying for production. Apple's TestFlight plays a similar role.
Learn more
UI
The part of a program people see and touch
UI (user interface) is everything a user sees and operates: buttons, menus, text, icons, input boxes. Good UI makes it obvious what to do next. UX (user experience) is the wider question of how using it feels. In games, the UI is the score, health bar and menus drawn over the game world.
Learn more
One building block of a screen
A widget is one reusable part of a user interface: a button, a text label, a list, a card, or a box that holds other widgets. Screens are built by nesting widgets inside widgets. In Flutter everything on screen is a widget, and in Flame the game canvas sits among normal Flutter widgets.
Learn more
Wishlist
A list where players save games they want before release
On Steam, players can add an upcoming game to their wishlist. When the game launches or goes on sale, Steam notifies them, so wishlists turn into first-week sales. Collecting wishlists before launch, with a good store page and trailer, matters more than most first-time developers expect.
Learn more
App review
A store checking an app before it is published
Before an app or game appears in a store, the store reviews the build: does it crash, does it follow the rules on privacy, payments and content, are the store texts honest? Apple's App Review is known as strict. Review can take days and can reject a build, so plan time for it. Updates go through review again.
Learn more
Play Console
Google's website for publishing and managing Android apps
Google Play Console is where developers publish apps to Google Play. You pay a one-time registration fee and verify your identity, then create the app, upload a build signed with your upload key, fill in the store listing and data safety form, and send it through testing tracks and review. Sales and crash reports are shown there too.
Learn more
App store
An online shop where people find and install apps and games
An app store is the official place to find, buy and install apps: Apple's App Store on iPhone, Google Play on Android, Steam for PC games. The store handles payments and updates, and reviews each app before publishing. In return developers pay registration fees and a share of sales. A package manager is sometimes called an app store for code.
Learn more
Google Play
Google's app store for Android
Google Play is the main store for Android apps and games and reaches the largest number of phones. Developers publish through Play Console with a one-time registration fee. Builds go through testing tracks and review; new personal accounts must finish a closed test with real testers before their first production release.
Learn more
Prototype
A quick rough version made to test an idea
A prototype is built fast to answer one question, such as "is this jump fun?", and is expected to be thrown away. It can use placeholder art and messy code. It is not the same as an MVP: a minimum playable game is something a stranger can pick up and enjoy, while a prototype only has to teach you something.
Learn more
Binary
A file of machine-readable bytes, usually a ready-to-run program
In everyday developer talk, a binary is a compiled program: a file of bytes the computer runs directly, not text you can read. "Shipped as a single binary" means the whole server is one file you copy and run. Binary formats such as WebAssembly are made for machines, not people. Opening a binary in a text editor shows garbage.
Learn more
Executable
A file you can run as a program
An executable is a file the operating system can start as a program, by double-clicking it or typing its name. On Windows it usually ends in .exe; on Linux and macOS any file with execute permission can run, including scripts. Caddy, for example, is a single executable. Upload sites often reject executables because they can carry harmful code.
Learn more
Conventional Commits
A rule for commit messages: put the kind of change first, like feat: or fix:
Conventional Commits is a widely used convention for commit messages. Each message starts with a type and a colon, such as feat: for a new feature, fix: for a bug fix or docs: for documentation, then a short description. Because the format is fixed, tools can read the history to build change logs and version numbers.
Learn more
Updates were rejected
Git's message when the remote has commits you do not have yet
git push stops with "Updates were rejected" when someone else pushed to the same branch first, so the remote has commits missing from your copy. Git refuses because pushing would throw their work away. Do not reach for --force: run git pull --rebase to put your commits on top of theirs, fix any conflict, then push again.
Learn more
History
The record of commits stacked up one after another
In Git, the history is the chain of every commit made in a repository, each pointing to the one before it. git log shows it, newest first. Clear commit messages make the history readable months later. Rewriting history that others already pulled (rebase, force push) breaks their copies, so rewrite only your own unpushed commits.
Learn more
main
The usual name of a repository's default branch
main is the name most repositories give their default branch, the one that holds the finished, shared version. GitHub names it main for new repositories; older projects may call it master. In teams, nobody commits straight to main: you work on a branch and merge it through a pull request after review.
Learn more
Tracking
Git watching a file for changes because it is part of the repository
A tracked file is one Git already knows about because it was added and committed; Git reports every change to it. New files stay untracked until you git add them. Adding a file to .gitignore does not stop tracking a file that was already committed: remove it from tracking with git rm --cached first.
Learn more
Tracking branch
The remote branch a local branch is paired with
A local branch can be linked to a branch on the remote, called its tracking (upstream) branch. git push -u origin main sets this link once; after that, plain git push and git pull know where to go, and git status tells you how many commits you are ahead or behind. Without it, Git asks you which remote branch you mean.
Learn more
GitLab
A Git hosting service similar to GitHub
GitLab is a service for hosting Git repositories and working on them as a team, like GitHub. It calls a pull request a "merge request" and has its own CI/CD pipelines. Besides the gitlab.com website, a company can install GitLab on its own servers. The everyday flow of branch, push, review and merge is the same.
Learn more
GitHub Actions
GitHub's built-in automation that runs jobs when something happens in a repository
GitHub Actions runs workflows on GitHub's servers when an event happens: a push, a new pull request, a comment or a schedule. A workflow is a YAML file in .github/workflows/ listing steps such as installing, testing and deploying. Claude Code and Codex can run inside it, for example answering when someone writes @claude in a pull request.
Learn more
Code review
Teammates reading a change and commenting before it is merged
In a code review, other people read your change, usually as a pull request, before it joins the main branch. Reviewers look for bugs, unclear code and missing tests, leave comments and finally approve. Small pull requests get careful reviews; huge ones tend to be skimmed. AI reviews help, but a person still decides.
Learn more
Project root
The top folder of a project
The project root is the top-level folder that holds the whole project: the place where git init was run, and where files such as .gitignore, package.json, README.md or CLAUDE.md usually live. Tools look for their settings there, and many commands expect to be run from it.
Learn more
Markdown
A plain-text way to write headings, lists and code with symbols like # and -
Markdown is a simple text format: a line starting with # becomes a heading, - starts a list item, and text between two asterisks becomes bold. The file stays readable as plain text and can also be shown nicely formatted. README.md, CLAUDE.md, AGENTS.md and SKILL.md are all Markdown files, and AI chat answers are usually written in it.
Learn more
Read-only
Allowed to read but not to change anything
Read-only means something can be looked at but not changed: a read-only file cannot be edited, and a read-only disk cannot be written to. For AI coding tools it is the safest mode: in Codex's read-only sandbox the agent may read files and run harmless commands, but cannot edit files. It is a good start on a project you do not know yet.
Learn more
Standard library
The modules that come with Python, ready to use without installing
Python's standard library is the large set of modules installed together with Python itself: json for JSON, urllib.request for web requests, http.server for a small web server, math, random and many more. Because nothing needs to be installed with pip, a program that uses only the standard library runs anywhere Python runs.
Learn more
Config file
A file that holds the settings a program reads when it starts
A configuration file stores choices that change how a program behaves, such as ports, folders, model sizes or permissions, so you change behaviour by editing the file instead of the code. Common formats are JSON, YAML, TOML and .env. Secrets such as API keys belong in a file kept out of Git, not in a shared config file.
Learn more
Bug
A mistake in a program that makes it behave wrongly
A bug is a defect in a program: it crashes, shows the wrong result or does something nobody intended. Bugs come from mistakes in code, unexpected input or changed conditions. Fixing one starts with reproducing it reliably, then finding the cause (debugging), then adding a test so the same bug does not come back.
Learn more
Software test
Code that checks other code works as expected
A test is a small program that runs your code with a known input and checks the output is what you expect; it passes or fails. A set of tests is run after every change, so a fix that breaks something else is caught at once. With AI coding tools, tests are the safety net: you give the tests and ask the agent to change code until they pass.
Learn more
Reproduce
Making the same result or problem happen again on purpose
To reproduce something is to make it happen again under the same conditions. A bug you can reproduce step by step can be fixed and tested; one that "happens sometimes" is hard to fix. In AI experiments, reproducibility means another person gets the same result with the same code, data and random seed.
Learn more
Newline
The invisible character that ends a line, written \n
A newline is the character that moves text to the next line. You do not see it, but it is in the file: in code it is written \n. Linux and macOS end lines with \n, while Windows uses \r\n, which can confuse some tools. HTTP puts \r\n at the end of each header line and an empty line before the body.
Learn more
node_modules
The folder where npm puts the packages a project installs
When you run npm install, npm downloads every package listed in package.json, and the packages they need, into a node_modules folder in the project. It can grow to hundreds of megabytes. Never commit it: put it in .gitignore, because anyone can rebuild it from package.json and the lock file with npm install.
Learn more
Overhead
Extra memory or time spent besides the main job
Overhead is the cost that comes on top of the real work. When an AI model runs, memory holds not only the weights but also the KV cache, compute buffers and the runtime's own overhead, so a model whose weight file is 4 GB may need 5–8 GB or more. Plan for overhead, or a model that "fits" on paper will not fit in practice.
Learn more
Learn more about weights and parameters
Compute buffer
Temporary memory used while a calculation is running
A compute buffer is working space a program sets aside to hold intermediate results during a calculation. When a language model runs, each layer produces numbers that the next layer needs, and they are kept in these buffers. They are needed on top of the weights and the KV cache, which is one reason a model needs more memory than its file size.
Learn more
Learn more about weights and parameters
Parsing
Reading text or code and working out its structure
To parse is to read a piece of text and turn it into a structure a program can use. A browser parses HTML into a tree of elements before drawing the page; the shell parses a command line into the command and its arguments; json.loads parses JSON text into Python values. A parse error means the text breaks the expected format.
Learn more
Breakpoint
A mark that pauses the program at that line
A breakpoint tells a debugger to stop the program when it reaches a certain line. While it is paused you can read every variable, then step forward one line at a time to see exactly where things go wrong. In the browser, open DevTools → Sources and click a line number to set one.
Learn more
Input event
One thing a program is told happened, such as a key press or a click
An input event is a small message saying something happened: a key went down, the mouse moved, a finger touched the screen. The operating system turns the raw signal from the device into an event and queues it for the window in front, and the program reacts to each event in turn. Web pages handle them with listeners such as onclick.
Learn more
Roundtrip
Converting something and back to check nothing was lost
A roundtrip test converts data one way and then back again, and checks the result equals the original. In the XSLM course, roundtrip: OK means the whole training text was encoded into token numbers and decoded back to exactly the same text, so the tokenizer loses nothing. If a single character changes, the test fails.
Learn more
Python object
A value in a program together with the functions that belong to it
In Python every value is an object: a number, a piece of text, a list, a dictionary. An object has a type and comes with its own functions, called methods, used with a dot, such as fruits.append("pear"). Classes are how you design your own kinds of objects. Saving objects to a file needs converting them to text or numbers first.
Learn more
append
The list method that adds one value to the end
list.append(value) puts one new value at the end of a list and changes that list in place. It returns None, so write fruits.append("pear") on its own line, not fruits = fruits.append("pear"), which would leave fruits as None. To add several values at once, use extend.
Learn more
Class
A template that bundles data and functions to make objects
A class describes a kind of object: what data each one holds and what it can do. You write it once with class, then make as many objects (instances) from it as you need, each with its own values. Functions inside a class are methods and receive the object itself as self. A class is a design; nothing happens until you create an object.
Learn more
def
The Python keyword that creates a new function
def starts a function definition: the function's name, its parameters in brackets and a colon, then the body indented by four spaces. Defining a function does not run it; it runs only when you call it with brackets. Use return inside to send a value back.
Learn more
Key
The name used to find a value in a dictionary
A dictionary stores pairs of key and value, and the key is the label you look the value up by: in scores["math"], "math" is the key. Each key appears only once; giving an existing key a new value replaces the old one. Asking for a key that is not there raises KeyError, while .get() returns None instead.
Learn more
FileNotFoundError
Python's error when the file you try to open does not exist
FileNotFoundError appears when a program asks for a file or folder that is not where it looks, for example open("data/train.txt") run from the wrong folder. The path is relative to the current folder, not to the script. Check where you are with pwd, list files with ls, and check the spelling and capital letters.
Learn more
HTTPServer
The simple web server that comes with Python
HTTPServer is a small web server in Python's standard library (the http.server module). You give it a handler class that decides what to answer for GET or POST, and it serves requests one at a time. It is fine for learning and local tools, like the XSLM runner, but it is not built for a public site with many visitors.
Learn more
len
The function that counts how many items or characters there are
len(x) returns the length of x: the number of items in a list, characters in a text, or keys in a dictionary. It does not change x. Remember that positions start at 0, so the last item of a list is at len(x) - 1, not len(x).
Learn more
None
Python's value meaning "nothing here"
None is a special value that means "no value". A function without return gives back None, and dict.get() returns None for a missing key. Seeing None printed where you expected a number usually means a forgotten return. Check for it with "is None", and note it is different from 0 or an empty text.
Learn more
range
The function that makes a sequence of numbers for loops
range(start, stop, step) produces numbers from start up to, but not including, stop. range(1, 11) gives 1 to 10, and range(5) gives 0 to 4. It is used most with for loops. Forgetting that the end number is left out is the most common mistake.
Learn more
urlopen
A Python function that sends an HTTP request and reads the answer
urllib.request.urlopen(url) opens a web address, sends the request and returns the response, whose .read() gives the body as bytes. Pass a Request object to send JSON with POST. If the server cannot be reached or answers with an error code, it raises an error instead of returning a fake answer. It is part of the standard library, so nothing has to be installed.
Learn more
else
The branch that runs when the if condition is false
else gives an if statement a second path: if the condition is true the if block runs, otherwise the else block runs. elif (else if) checks another condition in between. else takes no condition of its own, ends with a colon, and its lines are indented like the if block.
Learn more
IndentationError
Python's error when lines are not indented correctly
IndentationError means the spaces at the start of a line do not match what Python expects: a block after a colon (if, for, def) is not indented, or lines in the same block use different amounts. Python uses indentation instead of brackets, so it matters. Use four spaces per level and do not mix tabs and spaces.
Learn more
print
The Python function that shows values on the screen
print() writes values to standard output, usually the screen, followed by a newline. It is the quickest way to see what a program is doing. It only displays: a function that prints a result but does not return it gives back None. In programs that talk over standard output, such as MCP servers, a stray print breaks the messages; write logs to stderr instead.
Learn more
return
The keyword a function uses to give a result back
return ends a function and hands a value back to the code that called it, so the result can be stored or used in more calculations. A function with no return gives back None. return is different from print: print only shows a value on screen, return passes it on.
Learn more
assert
A check line that stops the program if a condition is false
assert condition does nothing when the condition is true and raises AssertionError when it is false, stopping the program at that line. It is a quick way to state "this must be so", for example that a tokenizer gives back the original text, or that the text you are about to replace really exists. Python skips asserts when run with -O, so do not use them for checks a real program depends on.
Learn more
Android App Bundle
The .aab file you upload to Google Play to publish an app
An Android App Bundle (.aab) is the package you upload to Google Play. It holds all the code and resources of your app, and Google Play builds from it a smaller install file that fits each phone. New apps on Google Play must be uploaded as a bundle, not as an old-style .apk file.
Learn more
Upload key
The secret key you sign an app with before uploading it to Play
Google Play checks that every new version comes from the same developer. You sign the app bundle with your upload key, Google checks that signature and then signs the app again with its own app signing key. Keep the key file and its passwords outside the project, back them up, and never commit or share them. If it is lost, you must ask Google to reset it in Play Console.
Learn more
Code signing
A digital seal that proves an app really comes from you
Before an app can be published, it is signed with a secret key. The signature lets the store and the phone check two things: who made the app, and that nobody changed it after it was signed. Google Play uses your upload key; Apple uses a signing certificate and a profile, which Xcode can handle for you with automatic signing. Most upload errors about signing mean the wrong key or team was chosen.
Learn more
Provisioning profile
An Apple file that allows a signed app to install and run
A provisioning profile ties together your team, your app's bundle ID, your signing certificate and, for testing, the devices allowed to run it. An iPhone will not run an app whose profile does not match. With automatic signing turned on, Xcode creates and renews profiles for you. On the page it appears as just "profile", which has nothing to do with a user profile.
Learn more
Bundle ID
The one-of-a-kind name tag of an app, like com.company.app
Every Apple app has a bundle ID written like a reversed web address, such as com.example.notes. No two apps in the App Store can share one, and it links your Xcode project, your signing profile and your record in App Store Connect. Choose it with care: once a build is uploaded, it cannot be changed. On Android the same idea is called the application ID.
Learn more
App Store Connect
Apple's website for registering and managing App Store apps
App Store Connect is where an iPhone app lives before and after release. There you create the app's record with its bundle ID, name and screenshots, fill in the privacy details, see the builds Xcode uploaded, invite TestFlight testers and submit the app for App Review. It is Apple's counterpart to Google Play Console.
Learn more
Apple Developer Program
Apple's paid membership needed to publish on the App Store
To put an app on the App Store or hand it to testers through TestFlight, you join the Apple Developer Program with your Apple Account. Membership is paid yearly (US$99 for individuals in most countries) and gives access to App Store Connect, signing certificates and beta tools. You can build and run apps on your own iPhone with Xcode without it, but you cannot publish.
Learn more
TestFlight
Apple's service for giving testers an iPhone app before release
Every build you upload to App Store Connect can be sent to TestFlight. Testers install the free TestFlight app, accept your invitation and try the build before ordinary users do. Builds for outside testers get a short review first, and each build expires after 90 days. Fix what testers report, raise the build number and upload again.
Learn more
Xcode
Apple's free app for building iPhone and Mac apps
Xcode is the official tool for making apps for Apple devices. It runs only on a Mac and is free from the Mac App Store. Even if you write the app with Flutter or React Native, the final iPhone build is signed, archived and uploaded through Xcode or its command-line tools. It also contains the iPhone simulator.
Learn more
Archive
Xcode's step that packs an app into a release build to upload
An archive is the release version of an iPhone app, built and signed in one package. In Xcode you choose Product → Archive, then Distribute App to upload it to App Store Connect. Every upload needs a build number higher than the last one. The word is not about storing old files away.
Learn more
Release build
The final, optimized build made for publishing in a store
While you develop, apps run as debug builds: slower, larger and full of checking tools. A release build drops those tools, optimizes the code and is signed with your key, so it is the version users install from a store. Always test the release build before uploading, because some bugs show up only there.
Learn more
Store listing
The app's name, description and screenshots shown in a store
The store listing is the page people see before they install: app name, short and full description, icon, screenshots, category and a link to the privacy policy. You fill it in Play Console or App Store Connect, and reviewers check that it matches what the app really does. A misleading listing is one of the common reasons an app is rejected.
Learn more
The Play Console form that declares what data an app collects
Google Play asks every app to fill in the Data safety form: which kinds of user data it collects or shares, why, and whether the data is encrypted and can be deleted. The answers are shown to users on the app's store page. They must match the app's real behaviour and its privacy policy, including what third-party libraries collect.
Learn more
Version code
The internal number that must go up with every app upload
Besides the version name people see (like 1.2.0), each app build carries a whole number used by the store: the version code on Android, the build number on iPhone. Every upload must have a higher number than the last one, otherwise the store rejects it. In Flutter it is the number after + in the version line of pubspec.yaml.
Learn more
pubspec.yaml
A Flutter app's settings file: name, version and packages
Every Flutter or Dart project has a pubspec.yaml file at its root. It lists the app's name, its version (name and build number joined by +), the packages it depends on and assets such as images and fonts. After editing the package list you run flutter pub get. It is written in YAML, so indentation matters.
Learn more
React Native
A framework for building phone apps with React and JavaScript
React Native, made by Meta, lets you write a phone app once in JavaScript (or TypeScript) using React's component style and run it on both Android and iPhone. Unlike a web page in a box, it draws real native buttons and lists. It is one of the two most popular cross-platform choices, next to Flutter.
Learn more
iOS
The operating system of the iPhone
iOS is the software that runs every iPhone, made by Apple, just as Android runs most other phones. An app is built separately for each system, which is why stores ask for an iOS build and an Android build. iPhone apps are built with Xcode on a Mac and installed through the App Store or TestFlight.
Learn more
Binding
Glue code that lets one language call a library from another
Many fast libraries, such as llama.cpp, are written in C or C++. A binding wraps such a library so you can call it from another language like Python, Dart or JavaScript as if it were written there. The heavy work still runs in the original fast code. If a binding is older than the library, new features may be missing.
Learn more
Embed
Putting a file or model inside an app so it ships with it
To embed something is to pack it into your app, so the app can use it without fetching it from a server. A small language model can be embedded in a phone app together with a runner, and then it works offline. This is a different word from embedding, the list of numbers that stands for a word or sentence.
Learn more
Middleware
Code that sits between a request and the main work, adding a step
Middleware is a layer that every request or step passes through before (or after) the main code runs. It can check a login, write a log, shorten a long context or stop something unsafe, without the main code knowing. Web frameworks like Laravel use middleware for logins; agent harnesses use it around each model call.
Boundary value
A test value right on a limit, like a score equal to the cut-off
Bugs hide most often at the edges of a rule. If a program passes students with 60 or more, test 59, 60 and 61, not just 30 and 90. Writing >= where > was meant only shows up at exactly 60. Empty input, zero and the largest allowed number are boundary values too.
flush
Sending buffered output out right away instead of waiting
To save effort, a program collects what it prints in a buffer and sends it out in batches. When another program is waiting for each line, as an MCP client does, that delay looks like a freeze. print(..., flush=True) in Python pushes the line out at once. Without it, output may appear only when the buffer fills or the program ends.
Learn more
vendor folder
The folder holding outside code that tools download for a project
Package tools put code written by other people in a folder of its own: PHP's Composer uses vendor/, npm uses node_modules/. You never edit files there, because the next install overwrites them; change the version in the package list instead. That is why rules for an AI agent often say "do not touch vendor/".
elif
Python's "else if": test another condition when the first fails
In Python, if checks a condition, elif (short for else if) checks the next one only when the earlier ones were false, and else catches everything left. Python goes from top to bottom and runs only the first branch that is true, so put the most specific test first. Each line ends with a colon and the code under it is indented.
Learn more
KeyError
Python's error for looking up a key that is not in a dictionary
A dictionary finds values by key. Asking for a key that is not there, like scores["music"], stops the program with KeyError and the missing key. Check the spelling and capitals first. If a missing key is normal, use scores.get("music", 0), which returns a default value instead of failing.
Learn more
ValueError
Python's error for a value of the right type but the wrong content
ValueError means a function got the right kind of value but one it cannot use: int("abc") gets text, but not text that is a number. NumPy raises it when array shapes do not fit, for example when a @ b gets matrices whose inner sizes differ. Read the last line of the message, then print the value or its .shape.
Learn more
ModuleNotFoundError
Python's error "No module named …": the package is not installed
import numpy fails with No module named 'numpy' when Python cannot find that package. Usually it is not installed, or it was installed into another Python or another virtual environment. Turn on the project's venv, install with python3 -m pip install numpy, and run the program with the same python3.
Learn more
NameError
Python's error for using a name that was never defined
NameError: name 'x' is not defined means Python met a variable or function name it does not know. The usual causes are a typo, wrong capitals, using a variable before the line that sets it, or forgetting an import. Python reads names exactly, so Score and score are different.
Learn more
pytest
A tool that finds and runs Python tests
pytest runs every test in a project and reports which passed and which failed. It looks for files named test_*.py and functions whose names start with test_, and each test checks a result with a plain assert. Giving an AI agent the rule "run python -m pytest after every change" lets it check its own work.
Learn more
import
The Python statement that loads a module so you can use it
Python starts with only a few built-in functions; everything else lives in modules. import re loads the regular-expression module, and you then call its functions as re.search(...). from math import sqrt brings in one name directly. Modules that ship with Python always work; others must be installed with pip first.
Learn more
Raw string
A Python string written r"…" that keeps backslashes as they are
In a normal Python string a backslash starts a special character: "\n" is a new line and "\b" is a backspace. Putting r in front, as in r"\b\d+", keeps every backslash as typed. Regular expressions are full of backslashes, so write patterns as raw strings by habit.
Learn more
PyPI
The Python Package Index, the public store of Python packages
PyPI (pypi.org) is where pip downloads packages from. Anyone can publish there, which is why a package name with one wrong letter can be a trap. Check the exact name, the author and the number of downloads before installing something new. It plays the same role for Python as the npm registry does for Node.js.
Learn more
requirements.txt
A file listing the Python packages and versions a project needs
requirements.txt names every library a Python project uses, usually with a pinned version such as numpy==2.1.3. With it, anyone can rebuild the same environment in one command. Pinning matters because a newer version can change behaviour and break code that worked yesterday.
Learn more
Data type
The kind of a value, such as a whole number, a decimal or text
Every value has a data type, and the type decides what you can do with it. In Python, 3 is an int, 3.0 a float, "3" a str and True a bool. "3" + 4 fails because text and numbers do not add; convert first with int("3"). Picking the right type also matters for accuracy, as with money and floating point.
Learn more
console.log
JavaScript's function for printing a value
console.log prints whatever you give it. In a browser the text appears in the DevTools Console; in Node.js it goes to standard output in the terminal, so it can be piped to other commands like any program's output. It is the quickest way to see what a variable holds while debugging.
Learn more
JavaScript engine
The program inside a browser or Node.js that runs JavaScript
A JavaScript engine reads JavaScript code and turns it into instructions the computer can run, fast. Chrome and Node.js share Google's V8 engine; Firefox uses SpiderMonkey and Safari uses JavaScriptCore. Node.js is V8 taken out of the browser, with extra tools to read files and use the network instead of drawing pages.
Learn more
process.argv
The list of words a Node.js script was started with
process.argv is an array of the command line that started a Node.js script. Item 0 is the path of node, item 1 the path of the script, and from item 2 on come the arguments you typed. So node greet.js Mina puts "Mina" in process.argv[2]. Every item is text, so convert numbers with Number().
Learn more
npm audit
npm's check of installed packages for known security problems
After npm install, npm runs a short security check (audit) and reports how many installed packages have known vulnerabilities and how serious they are. npm audit shows the details, and npm audit fix upgrades what it can without breaking version rules. Not every warning affects your project, but read the high and critical ones.
Learn more
@latest
The npm tag that means "the newest published version"
Adding @latest after a package name asks npm for the version currently marked as latest. npm install -g firebase-tools@latest updates a global tool, and npx create-vite@latest makes sure a starter tool is the newest one rather than an older copy in the cache. You can also write an exact version, such as prettier@3.
Learn more
npm prefix
The npm setting for where global packages are installed
npm's prefix is the folder that holds globally installed packages and their commands. If it points to a system folder such as /usr/local, npm install -g fails with EACCES because you lack permission. Instead of using sudo, use nvm or move the prefix into your home folder and add its bin folder to PATH.
Learn more
npm registry
The online store of JavaScript packages that npm downloads from
The npm registry (registry.npmjs.org) holds millions of published JavaScript packages. npm install and npx fetch packages from it and keep a copy in a cache. Anyone can publish, so check a package's name, author and downloads before running it. It is a store of packages, not a Git repository.
Learn more
.nvmrc
A file that names the Node.js version a project uses
An .nvmrc file sits in a project folder and holds one line: a Node.js version such as 22. Anyone who opens the project runs nvm use and gets the same version, so "it works on my computer" problems shrink. nvm install with no number installs the version the file names.
Learn more
Package manager
A tool that finds, installs, updates and removes software
A package manager is an app store you use with typed commands. It downloads a program together with everything it needs, keeps track of versions and removes it cleanly. Operating systems have their own (apk on Alpine, apt on Ubuntu, Homebrew on macOS, winget on Windows), and languages have theirs (npm for JavaScript, pip for Python).
Learn more
Scaffolding
Automatically creating the starting skeleton of a new project
Scaffolding tools ask a few questions and then create the folders, settings files and sample code a new project needs, so you start from something that already runs. npx create-vite@latest and flutter create are common examples. The generated files are only a start; you change and delete them freely.
Learn more
Caret (^) version range
^4.17.21 means "this version or a newer compatible one"
npm versions have three parts, major.minor.patch. A caret in package.json, as in ^4.17.21, allows any version from 4.17.21 up to, but not including, 5.0.0, because a new major number may break things. The exact version that got installed is written in package-lock.json, and npm ci installs exactly that.
Learn more
--depth 1
A git clone that downloads only the latest version, not the history
A normal git clone copies every commit a project has ever had. git clone --depth 1 takes only the last one, so it is much faster and smaller, which is ideal when you just want to read or run the code. The catch: you cannot look at or go back to older commits until you fetch the rest with git fetch --unshallow.
Learn more
Hash
A short fingerprint computed from content; new content, new value
A hash function turns any amount of data into a short, fixed-length string. The same input always gives the same hash, and changing even one letter gives a completely different one. So a hash shows quickly whether a file has changed. Git names every commit by a hash, which is why one commit hash points to exactly one version of the code.
Plain text
Text with only characters — no fonts, colours or hidden formatting
A plain text file holds nothing but characters, which is why code, HTML and settings files must be saved as plain text. Word processors add hidden formatting that breaks code, so in TextEdit choose Format → Make Plain Text first. In security, plaintext also means data that is not encrypted, as with HTTP instead of HTTPS.
Logic
The rules and steps a program follows to decide and act
A program's logic is its decision-making: in what order things happen, which conditions are checked and what happens in each case. "Game logic" decides who scored and when the round ends; "tool logic" decides what a tool does with its input. Calling AI a machine of logic means it follows computed steps, without feelings or intentions.
Permission
What a person or program is allowed to read, change or run
A permission is a right to do something: read a file, change it, run a command, use the camera or post on someone's behalf. Files have permissions, phone apps ask for them, and AI agents get them from you: which folders they may edit and which commands they may run without asking. Give only what the task needs; it is easier to add a permission than to undo damage.
Linter
A tool that automatically finds mistakes and rule breaks in code
A linter reads code without running it and points out likely bugs and style problems: a variable that is never used, a missing quote, an unsafe pattern. Running it is called linting, or just lint, as in npm run lint. Because a machine gives a clear pass or fail, tests and lint are good finish lines for an AI agent working on its own. A linter finds problems; a formatter only rearranges layout.
Learn more
A tool that rewrites code layout to one fixed style
A formatter rewrites spacing, line breaks, quotes and indentation so that all code in a project looks the same, whoever (or whatever) wrote it. It does not change what the code does. Running one automatically after every edit, for example with a Claude Code hook, keeps AI-written code tidy and makes diffs easier to review.
Learn more
Prettier
A popular formatter for JavaScript, CSS, HTML and Markdown
Prettier is an npm package that reformats code to one consistent style with almost no settings to argue about. It is usually installed per project as a dev dependency and run with npx. --write changes the files; --check only reports which files are not formatted, which suits automatic checks.
Learn more
LTS
Long-term support: a version that gets fixes for years
An LTS release is a version its makers promise to keep fixing, especially for security, for a long time. In Node.js, even-numbered versions (22, 24 …) become LTS and are supported for about 30 months, while odd ones are short-lived. When you learn or run a server, choose the LTS version.
Learn more
README
The first document of a project: what it is and how to use it
README.md sits in a project's top folder and explains what the project does, how to install and run it and where to go next. GitHub shows it on the front page of the repository, so it is the first thing visitors read. A goal like "the README explains how to run the app" is also a clear finish line for an AI agent.
GitHub issue
A note on GitHub for one task, bug or idea
An issue is a numbered page in a GitHub repository that describes one piece of work: a bug, a feature or a question. People comment on it, assign it, label it and close it when done. A pull request can close an issue automatically with "Fixes #12". Issue boards like GitHub Projects or Jira line issues up as cards.
Learn more
Extension
An add-on program that gives Chrome or VS Code new features
An extension is a small program installed inside another app to add features to it. Browser extensions such as Claude in Chrome come from the Chrome Web Store; editor extensions such as the Claude Code or Codex extension come from the VS Code Marketplace. An extension can read what you see in that app, so install only ones from publishers you trust.
Learn more
Error log
The record of errors a program writes while it runs
Programs write what went wrong, with times and details, into an error log: a file, the terminal or a service. The log usually holds more than the short message on screen, such as the line number and the chain of calls. When asking AI for help, give the relevant lines of the log together with how to reproduce the problem and what you expected, rather than pasting thousands of lines.
The base a program runs on, like a browser, a phone or a service
A platform is whatever a program is built to run on: an operating system (Android, iOS, Windows), a browser, a game console or an online service with its own tools, such as a game platform's SDK. Each platform has its own rules and limits, so stores ask for a separate build per platform. "Cross-platform" means one codebase that runs on several.
Software
All the programs that run on a computer, as opposed to the machine
Software is the general word for programs and the data they need: apps, games, websites, operating systems and AI models alike. Hardware is the part you can touch; software is the instructions it follows. Changing software is cheap and fast compared with changing hardware, which is why most new features arrive as updates.
Automation
Making a computer do a set task by itself instead of a person
Automation turns a job you repeat by hand into something a computer does on its own: a shell script that renames 500 files, a scheduled task that runs every Monday, a test suite that runs on every push, or an AI agent that collects a weekly report. The first run takes effort; every run after that is free. Automate only steps you understand, and check the results.
Programming language
An agreed language for writing instructions a computer can run
A programming language has exact words and grammar for telling a computer what to do. Python, JavaScript, Bash, C and Rust are examples; each suits different jobs, from quick scripts to fast engines. Unlike a human language there is no room for guessing: one missing bracket stops the program. AI writes code in these languages too, so reading one is still a key skill.
Version
A numbered edition of a program, model or file
Programs, packages and models change over time, and each released state gets a version, often written major.minor.patch like 3.12.4. A bigger first number usually means changes that can break old code. Many "it works for me but not for you" problems come from different versions, so check them first and pin them in files like requirements.txt or .nvmrc.
Constant
A named value that cannot change once it is set
A constant is like a variable that is locked after its first value. In Bash, readonly PI=3.14 makes any later change an error; in JavaScript you write const. Python has no real constants, so people write the name in capitals, MAX_SIZE = 100, to say "do not change this". Use constants for values that must stay the same everywhere.
Learn more
Declaration
Announcing a variable (and its kind) before using it
A declaration tells the language that a name exists, sometimes with its kind. Bash usually needs none: name=Mina creates the variable on the spot. Some kinds must be declared first, such as an associative array with declare -A. In languages like Java or C every variable is declared with its type before use.
Learn more
Definition
Creating a function or variable so it can be used later
A definition is where a name gets its content: the lines that make a function, or the first assignment of a variable. Code can only use a name after it is defined, so in a script function definitions come before the lines that call them. set -u makes Bash stop when a variable that was never defined is used, which catches typos.
Learn more
.NET
Microsoft's free platform for building and running programs
.NET is Microsoft's open-source platform for running programs written in C#, F# and other languages, on Windows, macOS and Linux. PowerShell is built on .NET, which is why its regular expressions follow .NET's rules: \d, \w, \s and named groups work. You do not need to know .NET to use PowerShell.
Learn more
Function call
Running a function or command by its name
Defining a function only describes the work; calling it makes it run. You call a function by writing its name with arguments, like print("hi") in Python or greet Mina in Bash, and it may hand back a result. A program is mostly calls to functions written by you and by others. When an AI model asks a program to run a tool, that is called a tool call.
Nesting
Putting one thing inside another of the same kind
Nesting means placing a structure inside one like it: a loop inside a loop, an if inside an if, a list inside a list, or a command substitution inside another, as in $(dirname $(pwd)). $( ) nests cleanly, which is one reason it is preferred over backticks. Deep nesting is hard to read, so more than three levels is a sign to split the code.
Learn more
switch statement
Other languages' many-way branch, like Bash's case
In JavaScript, C and Java, switch compares one value with a list of cases and runs the matching block, which is tidier than a long chain of if/else if. Bash does the same job with case … esac, and also lets each case be a pattern such as *.txt. In JavaScript, forgetting break makes the next case run too.
Learn more
Block
A group of lines that run together as one unit
A block is a chunk of code that belongs together: the lines between then and fi in an if, between do and done in a loop, or inside { } of a function. awk also has special BEGIN and END blocks that run before the first line and after the last. Indent the lines inside a block so you can see where it ends; every block that opens must close.
Learn more
camelCase
Naming by joining words and capitalizing each after the first
camelCase writes a name of several words with no spaces, starting each word after the first with a capital: userName, totalPrice. JavaScript uses it for variables and functions; Python prefers snake_case (user_name); file and URL names often use kebab-case (user-name). Follow the style the project already uses, because names must match exactly.
CHANGELOG
A file that records what changed in each version
A CHANGELOG (usually CHANGELOG.md) lists every version of a project with its date and its additions, changes and fixes, newest first. Tools that change fast, such as Claude Code, publish one so users can catch up on new features. It is written for people, unlike the commit history, which records every small step.
Learn more
Release notes
A short note telling users what is new in a version
Release notes announce a new version to its users: new features, important fixes and anything they must do, such as changing a setting. They are shorter and friendlier than a CHANGELOG and are often drafted from the commits since the last release. Writing them is a good repeated task to turn into a skill for an AI agent.
Command injection
An attack that sneaks a command into input so it gets run
Command injection happens when a program builds a shell command from text it does not control, and that text contains extra commands. A file name like a.txt; rm -rf ~ can turn a harmless command into a destructive one. Quote variables, never pass untrusted text to the shell, and with AI agents watch for commands that came from web pages or files rather than from you.
Feedback loop
A repeating cycle of trying, checking the result and fixing
A feedback loop gives whoever is working a quick signal of whether the last change was right, then lets them try again. For an AI agent the signal comes from tests, linters, type checks or a screenshot, so the agent can correct itself without a person in every step. The faster and clearer the signal, the better the work gets.
Worktree
A second working folder of the same repository on another branch
git worktree checks out another branch of the same repository into a separate folder, sharing one history. Each folder has its own files, so two sessions of Claude Code or Codex can work in parallel without overwriting each other. When the work is merged, remove the worktree. Each worktree needs its own dependencies installed.
Learn more
Parallel
Running several tasks at the same time, side by side
Parallel work means several jobs progress at once instead of one after another. With AI agents you can run several sessions or sub-agents in parallel, each on its own task. The danger is two workers editing the same file, so give each its own worktree or its own files, and merge the results at the end.
Learn more
GitHub Project
GitHub's board for managing issues as cards, tables or timelines
A GitHub Project collects issues and pull requests from one or more repositories into a single board. You can view it as a kanban board with columns, as a table or as a roadmap, and add your own fields such as priority. The gh command-line tool can create and move items, which is how an AI agent manages the board for you.
Learn more
Kanban
A board where task cards move through columns like To do → Done
A kanban board shows work as cards in columns, usually To do, In progress and Done. Moving a card to the next column shows progress at a glance, and limiting how many cards sit in In progress keeps a team from starting too much at once. The method comes from Toyota's factories; GitHub Projects, Trello and Jira all offer kanban views.
Learn more
Jira
Atlassian's issue and project tracker, common in companies
Jira is a paid web service from Atlassian for tracking issues, bugs and tasks with boards, sprints and reports. Many companies use it instead of GitHub issues. Through an MCP server, an AI agent such as Claude Code can read and update Jira tickets as part of its work.
JetBrains
The maker of IDEs such as IntelliJ IDEA, PyCharm and WebStorm
JetBrains is a software company whose IDEs are widely used by professional developers: IntelliJ IDEA for Java and Kotlin, PyCharm for Python, WebStorm for JavaScript, PhpStorm for PHP and others. When a page says "VS Code or JetBrains", it means these editors. Claude Code has a plugin for them, and Android Studio is built on IntelliJ.
Learn more
IDE
An integrated development environment: edit, run and debug in one app
An IDE (integrated development environment) puts a code editor, a way to run the program, a debugger, search, Git and often a terminal into one window. VS Code becomes an IDE with extensions; JetBrains products and Xcode are full IDEs out of the box. AI coding tools run inside IDEs as extensions or plugins, or next to them in the terminal.
Handler
Code set up to run when a particular event happens
A handler waits for one kind of event and runs when it occurs: a click on a button, a request to an address, a file being saved. In Claude Code, a hook's handler can be a shell command, an HTTP address, an MCP tool, an LLM prompt or a sub-agent, and it runs every time its moment arrives. The model does not choose whether to run it.
Global
Applying to every project on this computer, not just one
A global setting or install works everywhere on your computer; a local (project) one works only inside one project folder. npx skills add … -g installs a skill globally, and ~/.claude/CLAUDE.md holds global instructions read in every project. When the same thing exists in both places, check which one wins; for skills, Claude Code uses the global (personal) one.
Learn more
MIT License
A short open-source licence: use freely, just keep the notice
The MIT License lets anyone use, copy, change, sell and share the software, as long as the copyright notice and the licence text stay with it. It also says the software comes without any warranty. It is one of the most common licences on GitHub because it is short and asks so little. The licence text usually sits in a file named LICENSE.
Learn more
pdfplumber
A Python library that pulls text and tables out of PDFs
pdfplumber opens a PDF and gives you its text, words with their positions, and tables, page by page. It works on PDFs that contain real text; a scanned PDF is only a picture, so it needs OCR instead. A skill that tells an agent "use pdfplumber; OCR only for scanned PDFs" gives one clear default instead of a list of options.
Learn more
P0 · P1
Priority labels: P0 is the most urgent, then P1, P2 …
Teams sort problems by priority with short labels. P0 means "fix now": the service is down, data is being lost or there is a security hole. P1 is serious and should be fixed soon; P2 and lower can wait. Codex's PR review reports only P0 and P1 findings by default, so you see what matters without noise.
Learn more
Template
A ready-made frame where you only fill in the blanks
A template is a prepared shape with blanks: a report outline, a starter project, an email with {name} to fill in. Skills often ship templates in an assets/ folder so an agent produces the same structure every time. A chat template is a special case: the exact layout of roles and messages a model was trained on, which a runner must use for the model to answer well.
TODO
A to-do note: in code, a marker for work left to do
TODO means "still to do". Developers leave comments such as # TODO: handle empty input in code, and search for them later with grep. In issues and boards, a TODO checklist breaks one task into small steps that are ticked off one by one, which also shows progress. Old TODOs pile up easily, so turn the important ones into issues.
Repository root
The top folder of a Git repository
The repository root is the top folder of a project kept with Git — the one that holds the hidden .git folder. Claude Code looks for CLAUDE.md files and .claude/skills from the folder where you start it up to this root, and no higher. git rev-parse --show-toplevel prints its path.
git config
Setting the name and email GIT writes into every commit
Every commit records who made it, so right after installing GIT you tell it your name and email once with git config. With --global the setting applies to every repository on this computer; without it, only to the repository you are in. git config --list shows what is set now.
Learn more
Force push
A push that overwrites the remote history with yours
A normal push is refused when the remote has commits you do not have. git push --force pushes anyway and replaces the remote branch with your version, so commits that others pushed can disappear and teammates' copies stop matching. Use it only on your own branch that nobody else has pulled; --force-with-lease is safer because it stops if the remote changed since you last fetched.
Learn more
reflog
GIT's log of every place HEAD has been — where lost commits are found
git reflog lists, newest first, every commit that HEAD pointed to in your repository, including commits that no branch shows any more after a reset or rebase. If you lost work with git reset --hard, find the commit there and go back to it. It is kept only on your computer and old entries expire after a while (90 days by default).
Learn more
reset
Move the current branch back to an earlier commit
git reset moves your branch back so the later commits are no longer part of it. --soft keeps their changes staged, the default --mixed keeps them as unstaged changes, and --hard throws them away along with any uncommitted work. Use it only on commits you have not pushed; for shared commits use git revert.
Learn more
git add
Put changed files into the staging area for the next commit
git add picks which changes go into the next commit by copying them into the staging area. Only what you add is committed, so one commit can hold one logical change even when you edited many files. git add -p lets you choose part of a file, and git add . adds everything in the current folder.
Learn more
revert
Undo an old commit by adding a new commit that reverses it
git revert makes a new commit that does the opposite of an earlier one, so the change is gone but the history keeps both commits. Because nothing is rewritten, it is the safe way to undo a commit that was already pushed and pulled by others. It can cause a conflict if later commits touched the same lines.
Learn more
git status
Show what changed and where each file is in the three areas
git status tells you which branch you are on, which files changed but are not staged, which are staged for the next commit, and which are new and not tracked yet. It changes nothing, so run it whenever you are unsure — before add, before commit and before risky commands. Its output also suggests the command for the next step.
Learn more
git log
List the commits of the history, newest first
git log shows the commits of the current branch from newest to oldest, each with its ID, author, date and message. Options make it easier to read: --oneline gives one line per commit and --graph draws how branches split and merged. Press q to leave the list when it fills more than one screen.
Learn more
restore
Throw away changes that are not committed yet
git restore puts a file back to how it was in the last commit, erasing your uncommitted edits to it. With --staged it only takes the file out of the staging area and keeps the edits. The discarded edits were never saved in GIT, so they cannot be brought back — check with git status or git diff first.
Learn more
cherry-pick
Copy just one commit from another branch onto this one
git cherry-pick takes the change made by one commit, wherever it is, and applies it as a new commit on the current branch. It is handy when only one fix from a feature branch is needed now, for example on a release branch. The copy gets a new ID, so picking many commits this way makes the history harder to follow than a merge.
Learn more
stash
Put unfinished work aside for a moment and bring it back later
git stash takes your uncommitted changes, saves them in a separate pile and leaves the working folder clean, so you can switch branches for an urgent fix. git stash pop brings the changes back and removes them from the pile. New files that GIT does not track yet stay behind unless you add -u.
Learn more
git tag
A fixed name label such as v1.0.0 put on one commit
git tag pins a name to a commit, usually a version number, so you can always find the exact code you released. Unlike a branch, a tag does not move when you make new commits. An annotated tag (-a) also stores who made it, when and a message; tags are not pushed unless you push them.
Learn more
git init
Turn the current folder into a new GIT repository
git init creates a hidden .git folder inside the current folder, and from then on GIT can record that folder's history. Nothing is saved until you add and commit. Run it in the project folder itself: in your home folder it would track every file you own.
Learn more
git apply
Apply changes from a diff (patch) file to your files
git apply reads a diff — the lines to remove and add — and makes those edits to the files in your working folder without committing. It is how a change made elsewhere, such as by Codex in the cloud, lands in your copy. git apply --check tells you first whether the patch fits.
Learn more
Git LFS
A Git add-on that keeps large files outside the repository
Git LFS (Large File Storage) keeps big files such as model weights out of the normal Git history. The repository holds only a small pointer file, and the real file goes to separate storage. After running git lfs install once, you use git add, commit and push as usual.
Learn more
Learn more about weights and parameters
Traceback
Python's error report that shows where an error happened
When a Python program fails, it prints a traceback: the chain of function calls that led to the error, from the outermost call down to the line that failed. Read it from the bottom — the last line names the error type and message, and the lines just above show the file and line number.
Learn more
uv
A fast tool that manages Python projects and packages
uv is a tool that creates a Python project, sets up its virtual environment and installs packages. It does the jobs of pip and venv together and is much faster. For example, uv add torch installs PyTorch into the project.
Learn more
async (asynchronous)
A way to keep working while waiting for something slow
Asynchronous code starts a slow task — such as waiting for a network reply — and handles other work until that task is done, instead of standing still. In Python you write it with async and await. A web server written this way can keep many connections open at once.
Learn more
.claude/agents/
The folder where Claude Code keeps sub-agent files
Each sub-agent is a Markdown file with a name, a description, the tools it may use and its instructions. Files in .claude/agents/ inside a project belong to that project and can be committed for the team; files in ~/.claude/agents/ are yours in every project. Claude Code reads the description to decide when to hand work to that sub-agent.
Learn more
~/.claude.json
Claude Code's personal settings file in your home folder
~/.claude.json holds Claude Code's own state for your user account: preferences, sign-in details, per-project data and MCP servers added with the local or user scope. It is different from the .claude folder and from settings.json. Edit it with care, or let commands such as claude mcp add change it for you.
Learn more
mcpServers
The settings key that lists MCP servers and how to start them
mcpServers is the key, in ~/.claude.json, a project's .mcp.json and similar files of other apps, that holds the list of MCP servers. Each entry has a name and tells the app how to start or reach the server: a command with arguments, or a URL. Where the entry sits decides where the server is available.
Learn more
.claude/skills/
The folder where Claude Code finds skills
Each skill is a folder with a SKILL.md file, and Claude Code looks for those folders here. .claude/skills/ inside a project is shared with the team through Git; ~/.claude/skills/ holds your personal skills for every project. Claude reads each skill's name and description and loads the full instructions only when a task needs them.
Learn more
.mcp.json
The project file that lists MCP servers the whole team shares
.mcp.json sits at the top of a repository and lists the MCP servers for that project. Because it is committed to Git, everyone who clones the project gets the same servers; Claude Code asks for approval before using them the first time. Running claude mcp add with --scope project writes to this file. Put secrets in environment variables, not in the file.
Learn more
.claude/settings.json
Claude Code's project settings file: permission rules, hooks and more
.claude/settings.json holds the shared settings of one project: permission rules (allow, ask, deny), hooks, environment variables and more. It is committed so the whole team works with the same rules. Personal changes go in .claude/settings.local.json, which is not committed, and settings for all your projects in ~/.claude/settings.json.
Learn more
@path import
Writing @path in CLAUDE.md to pull in another file's contents
In CLAUDE.md, a line such as @docs/architecture.md imports that file: its contents are read in at that spot, as if they were written there. A common use is @AGENTS.md, so Claude Code also follows the shared instructions other agents read. Imported files load into the context at the start of every session, so keep them short.
Learn more
CLAUDE.local.md
Personal project instructions for Claude Code that are not committed
CLAUDE.local.md sits in a project next to CLAUDE.md and holds instructions only for you — a local URL, your test data — and is listed in .gitignore so it is never committed. By default, if a CLAUDE.md, .claude/CLAUDE.md or CLAUDE.local.md exists in your working folder or above it, Claude Code does not read AGENTS.md (~/.claude/CLAUDE.md does not count). So if you rely on AGENTS.md, keep personal notes in ~/.claude/CLAUDE.md, or set Project instructions in /config to claude-md-and-agents-md to read both.
Learn more
Clipboard
Where the computer keeps what you last copied
When you copy text or a picture, the computer keeps it in the clipboard until you copy something else, and pasting puts it where your cursor is. A web page may read the clipboard only with your permission, so a browser can block a paste button — then click the box and press Ctrl+V (⌘V on a Mac) instead.
Ctrl+V (⌘V)
The keyboard shortcut that pastes what you copied
Ctrl+V pastes what is in the clipboard where the cursor is; on a Mac the same shortcut is ⌘V (Command+V). It pairs with Ctrl+C, which copies. In a terminal, Ctrl+C stops a running command instead, so many terminals paste with Ctrl+Shift+V.
Screenshot
A picture of what is on your screen
A screenshot saves what your screen shows as an image. On Windows, Win+Shift+S captures an area to the clipboard; on a Mac, Cmd+Shift+4 saves an area as a file, and adding Ctrl copies it instead.
Ctrl key
The Control key you hold with another key for a shortcut
Ctrl (Control) is a key at the bottom left of the keyboard. Held together with another key it gives a shortcut: in a terminal Ctrl+C stops a command. On a Mac many app shortcuts use Cmd instead, but terminal shortcuts still use Ctrl.
FizzBuzz
A classic practice problem: count up, saying Fizz, Buzz or FizzBuzz
FizzBuzz is a well-known practice problem: count from 1 and print each number, but print Fizz for multiples of 3, Buzz for multiples of 5 and FizzBuzz for multiples of both. It practices a loop, if conditions and the remainder operator `%`. A common mistake is checking 3 before 15 — then 15 prints only Fizz, so check the "both" case first.
Learn more
TextEdit
The text editor that comes with macOS
TextEdit is the simple text editor built into every Mac. By default it saves styled text (RTF), which adds hidden formatting. To write HTML or code, first choose Format → Make Plain Text so the file contains only the characters you typed.
Learn more
Notepad
The plain-text editor that comes with Windows
Notepad is the simple editor built into Windows. It saves only plain text, which is what HTML and code files need. When saving a web page, set the file type to "All files" so Notepad does not add .txt to the end of the name.
Learn more
os.replace
Python's way to swap in a finished file in one step
os.replace(src, dst) renames the file src to dst, replacing dst if it exists. On the same drive the swap is atomic: other programs see either the old file or the new one, never a half-written file. So programs write to a temporary file first, then call os.replace.
Learn more