Places
- Terminal
- The text window where you type commands. On a Mac, it's an app called Terminal (or iTerm, or the one built into VS Code). Everything you type here goes directly to the machine.
- Shell
- The program running inside your terminal. On a Mac it's
zsh. It reads what you type, runs it, and shows you what happened. Terminal is the window. Shell is the brain inside it.
- Repo — repository
- A project folder that git tracks. Every change is recorded. You can go back in time, branch off, merge work together. If someone says "clone the repo," they mean "download the project."
- Local
- On your machine. "Run it locally" means run it on your laptop, not on the internet. Nothing leaves your computer.
- Remote
- Someone else's machine. GitHub is a remote. A server you deploy to is a remote. When you
push, you're sending from local to remote.
- Server
- A computer that's always on and connected to the internet. It serves files, runs your app, responds to requests. Your laptop is not a server (until you run
python3 -m http.server and temporarily make it one).
- Localhost
- Your own machine pretending to be a server. When you see
localhost:3000 in your browser, you're talking to a program running on your laptop. Nobody else can see it.
- PATH
- A list of folders your shell searches when you type a command. If you type
node and get "command not found," node isn't in your PATH. Most install problems are PATH problems.
Git verbs
git commit
- Save a snapshot of your work. Like a save point in a game. You can always come back to it. A commit has a message that says what changed:
git commit -m "add login page".
git push
- Send your commits to the remote (usually GitHub). Your work goes from your machine to the internet. Other people can now see it.
git pull
- Download other people's changes from the remote and merge them into yours. The opposite of push.
git fetch
- Check what's changed on the remote without merging anything. Like peeking at the mail without opening it. Pull = fetch + merge.
git clone
- Download an entire repo for the first time.
git clone https://github.com/someone/project gives you the full project with all its history.
git branch
- A parallel version of your project. You branch off to try something without risking the main version. If it works, you merge it back. If not, you delete the branch.
git merge
- Combine two branches. Usually merging your branch back into
main after your work is done.
git diff
- Show what changed. Line by line, what was added (green) and what was removed (red).
Package management
- Package
- Someone else's code that you use in your project. Instead of writing an image resizer from scratch, you install a package that does it. Packages have packages inside them — it's packages all the way down.
- Dependency
- A package your project needs to work. "Add it as a dependency" means "install this package and record that we need it." If you delete your
node_modules folder, npm install puts them all back.
brew install
- Install a system tool via Homebrew (the Mac package manager).
brew install node installs Node.js. brew install --cask installs desktop apps.
npm install
- Install a JavaScript/Node.js package.
npm install express adds it to your project. npm install -g something installs it globally (available everywhere, not just this project).
node_modules
- The folder where npm puts all your dependencies. It gets huge. Never commit it to git. If something breaks, delete it and run
npm install again.
package.json
- The manifest for a Node.js project. Lists the project name, its dependencies, and scripts you can run. If a folder has a
package.json, it's a Node project.
Building and running
- Build
- Turn your source code into something that runs. Sometimes this means compiling TypeScript to JavaScript. Sometimes it means bundling files together. Sometimes there's no build step at all — you just run the file.
- Deploy
- Put your project somewhere other people can use it. Copy files to a server, push to a hosting service, upload to an app store. "It works on my machine" is not deployed.
rsync
- Copy files from one place to another, only sending what changed. The workhorse of simple deployment.
rsync -avz ./site/ server:/var/www/html/ pushes your site.
- Dev server
- A local server that watches your files and reloads the browser when you change something. Makes development fast. Not for production — just for building.
- Port
- A number that identifies which program should receive network traffic.
localhost:3000 means "talk to the program listening on port 3000." If a port is "already in use," another program is sitting on it.
- Environment variable
- A value stored outside your code. API keys, database passwords, configuration. Set with
export API_KEY=abc123. Read in code. Never commit secrets to git.
AI and agents
- Agent
- An AI that can take actions — read files, run commands, write code, browse the web. Not just chat. Claude Code, Codex CLI, and Gemini CLI are agents.
- CLI — command-line interface
- A program you run by typing in the terminal. No windows, no buttons. Just text in, text out.
claude, codex, and gemini are CLIs.
- Prompt
- What you say to the AI. A question, an instruction, context, a file. Everything you give it is the prompt. Better prompts get better results.
- Context
- What the AI knows right now. The files it's read, the conversation so far, the instructions you gave it. More context = better answers. Too much context = confused answers. Read the chapter →
- Steering file — CLAUDE.md, .codex, etc.
- A file in your project that tells the agent how to behave. Preferences, conventions, things to remember. The agent reads it automatically when it starts. Like a briefing document for a new team member. Read the chapter →
- Handoff
- When you point an agent at a URL or file and say "follow these instructions." The page becomes the prompt. The agent takes over from there.
- Token
- The unit AI models think in. Roughly one word or part of a word. Models have a context window measured in tokens — that's how much they can hold in mind at once.
- Corpus
- A collection of text used as source material. Your emails, documents, notes, chat logs. The raw data a chatbot or FAQ is generated from. Build one →
Web basics
- HTML
- The structure of a web page. Headings, paragraphs, links, images. Every web page is HTML. You can write it in a text editor and open it in a browser.
- CSS
- The style of a web page. Colors, fonts, layout, spacing. HTML says what's there. CSS says how it looks.
- JavaScript — JS
- The behavior of a web page. Click handlers, animations, fetching data. Also runs on servers (Node.js). The most widely used programming language.
- TypeScript — TS
- JavaScript with types. You declare that a variable is a number, a string, a list of users. Catches bugs before you run the code. Compiles down to regular JavaScript.
- API — application programming interface
- A way for programs to talk to each other. When your chatbot asks Claude a question, it's calling an API. When your app checks the weather, it's calling an API. URLs in, data out.
- Static site
- A website that's just files — HTML, CSS, JavaScript. No database, no server-side code. Fast, simple, cheap to host. This site is a static site.
- SSH — secure shell
- A way to log into a remote machine securely.
ssh myserver.com gives you a terminal on that machine. Also used for authentication — SSH keys prove who you are without passwords.