Prerequisites
This chapter lists the tools you’ll need throughout the book. Rather than installing everything at once, you’ll set up each tool as it becomes relevant. This approach lets you start quickly and spreads the installation work across the book.
Here’s the full toolchain in the order you’ll install each one:
- Homebrew (macOS) or WinGet (Windows): Package managers that automate installing everything else. See Appendix A — Homebrew or Appendix B — WinGet.
- Zed: A modern code editor with syntax highlighting, autocomplete, and an integrated terminal. See Appendix C — Zed.
- Quarto: A publishing system that renders Markdown documents into HTML, PDF, and presentations. Installed via package manager.
- Git: A version control system that tracks changes to files and enables collaboration. See Appendix D — Git Configuration.
- GitHub: A platform for hosting Git repositories and collaborating on projects (free account). See Appendix E — GitHub Configuration.
- DuckDB: An embedded analytical database that runs SQL queries on local files without server setup. Installed as a CLI tool first, then as a Python library later. See Appendix G — DuckDB.
- uv: A Python project manager that handles Python installation, virtual environments, and dependencies in a single tool. See Appendix H — uv.
- Marimo: A reactive notebook tool for interactive data exploration with native SQL support. See Appendix I — Marimo.
- Ruff: A Python linter and formatter that enforces code style and catches bugs automatically. Zed runs it out of the box; added as a project dependency in 23 Code Quality: Ruff, basedpyright, & Language Servers. See Appendix J — Ruff.
- basedpyright: A static type checker that verifies your type hints before you run your code. Zed runs it out of the box; added as a project dependency in 23 Code Quality: Ruff, basedpyright, & Language Servers. See Appendix K — basedpyright.
Each tool listing below includes what it does, when you’ll need it, and a reference to installation instructions. If you encounter problems during installation, check the corresponding appendix for troubleshooting steps specific to your operating system.
Before You Begin
You’ll need a computer running Windows 11, macOS, or Linux. Most tools work across all platforms, though installation steps differ. The book provides instructions for both Windows and macOS; Linux users can generally follow the macOS instructions with minor adjustments.
You should have administrator access to install software. If you’re using a managed computer (such as a university lab machine), verify that you can install programs or contact your IT department for assistance.
A stable internet connection is required for downloading tools and, later, for pushing code to GitHub and accessing online data sources.
Unit 1: The Professional Toolkit
These tools should be installed before or during the first week of work.
GitHub Account
What it is: A free account on github.com, the platform for hosting Git repositories and collaborating on projects.
When you need it: 6 Collaboration with GitHub (Collaboration with GitHub), though creating the account early is recommended.
How to get it: Visit github.com and sign up with your email address. Choose a professional username since this account may become part of your portfolio. Enable two-factor authentication for security.
Notes: Use your personal email rather than an institutional email, so you retain access if you change organizations. GitHub’s free tier is sufficient for everything in this book; you don’t need a paid plan.
Package Manager (Homebrew or WinGet)
What it is: A tool that automates installing, updating, and managing software from the command line.
When you need it: Immediately, before installing other tools.
How to get it:
- Windows: WinGet comes pre-installed on Windows 11 and recent Windows 10 versions. Open Windows Terminal and type
winget --versionto verify it’s available. - macOS: Install Homebrew by following instructions at brew.sh. This requires running a command in Terminal.
Notes: While technically optional (you can install everything manually), a package manager makes installation and updates dramatically easier. The small upfront investment pays off immediately.
Git
What it is: A version control system that tracks changes to files and enables collaboration.
When you need it: 5 Version Control with Git (Version Control with Git).
How to get it:
- Windows:
winget install Git.Git - macOS:
brew install git
After installation, configure your identity:
terminal
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"Notes: Use the same email address you used for your GitHub account. This links your commits to your GitHub profile.
Zed
What it is: A modern text editor designed for programming, with features like syntax highlighting, auto-completion, and an integrated terminal.
When you need it: 1 Computer Fundamentals (Computer Fundamentals) and throughout the book.
How to get it:
- Windows:
winget install Zed.Zed - macOS:
brew install --cask zed
Alternatively, download from zed.dev.
Notes: Other text editors (VS Code, Sublime Text, etc.) work fine if you have a strong preference. The book uses Zed for examples because of its clean interface and excellent Git integration, but the concepts transfer to any editor.
Windows Terminal (Windows Only)
What it is: Microsoft’s modern terminal application, providing a clean interface for command-line work.
When you need it: 4 The Command Line (The Command Line).
How to get it: Install from the Microsoft Store or via winget install Microsoft.WindowsTerminal.
Notes: Windows Terminal should be your default terminal application while working through this book. Avoid using the legacy Command Prompt or standalone PowerShell applications.
Quarto
What it is: A publishing system that renders Markdown documents into HTML, PDF, presentations, and other formats.
When you need it: 3 Professional Documents with Quarto (Writing with Quarto), and again in 24 Computational Documents for executable code cells.
How to get it:
- Windows:
winget install Posit.Quarto - macOS:
brew install --cask quarto
Notes: Quarto is what renders this book. You’ll start using it as a Markdown writing tool in Unit 1, then return to it for computational documents in the capstone unit.
Unit 2: Data with SQL
These tools support the SQL and database chapters.
DuckDB
What it is: An embedded analytical database that runs SQL queries on local files without server setup.
When you need it: 7 Databases (Databases) through 11 Data Modeling (Data Modeling).
How to get it:
- Windows:
winget install DuckDB.cli - macOS:
brew install duckdb
Notes: DuckDB can query CSV, Parquet, and JSON files directly, making it ideal for learning SQL without database administration overhead. You’ll later add duckdb as a Python library (uv add duckdb) when connecting SQL to Python in 18 Python Meets SQL. See Appendix G — DuckDB for the distinction between the CLI tool and the Python library.
Unit 3: Python
These tools support the Python chapters.
Python (via uv)
What it is: The Python programming language, installed and managed through the uv tool for reliable dependency management.
When you need it: 12 Python Fundamentals (Python Fundamentals) through 17 Objects & Type Hints (The Python Object Model).
How to get it:
- Windows:
winget install astral-sh.uv - macOS:
brew install uv
Then install Python: uv python install 3.13
Notes: We use uv rather than installing Python directly because uv handles virtual environments and dependencies more reliably. This avoids the “it works on my machine” problems that plague Python development.
Unit 4: Building Data Products
These tools support the capstone chapters on combining SQL, Python, notebooks, and professional tooling.
Marimo
What it is: A reactive notebook tool for interactive data exploration, with native SQL cells that connect directly to DuckDB.
When you need it: 24 Computational Documents (Computational Documents).
How to get it: uv tool install marimo initially, then uv add marimo as a project dependency later.
Notes: Marimo notebooks are stored as .py files, so they produce clean diffs in Git and can be run as scripts. See Appendix I — Marimo for details.
Ruff
What it is: A Python linter and formatter that automatically enforces code style and catches common bugs.
When you need it: Zed runs Ruff in the background from 12 Python Fundamentals onward, no installation required. You’ll add it as a project dependency in 23 Code Quality: Ruff, basedpyright, & Language Servers.
How to get it: Nothing to install initially. Zed handles it. Later: uv add --dev ruff
Notes: Adding Ruff as a project dependency gives you command-line access (uv run ruff check), which is essential for AI-assisted workflows and CI pipelines. See Appendix J — Ruff for the full explanation of the three installation modes.
basedpyright
What it is: A static type checker that verifies your type hints and catches type errors before you run your code.
When you need it: Zed runs a type checker in the background from 12 Python Fundamentals onward, no installation required. You’ll add basedpyright as a project dependency in 23 Code Quality: Ruff, basedpyright, & Language Servers.
How to get it: Nothing to install initially. Zed handles it. Later: uv add --dev basedpyright
Notes: Zed already bundles basedpyright, so you get type checking for free. Adding it as a project dependency gives you command-line access (uv run basedpyright) and pins the version for your team. See Appendix K — basedpyright for the full explanation.
Verification Checklist
After installing tools for each unit, verify they’re working:
Unit 1: The Professional Toolkit
terminal
git --version # Should print version number
zed --version # Should print version number (or open Zed)
quarto --version # Should print version numberUnit 2: Data with SQL
terminal
duckdb --version # Should print version numberUnit 3: Python
terminal
uv --version # Should print version number
python --version # Should print Python 3.13.x (after uv python install)Unit 4: Building Data Products
terminal
uv run marimo --version # Should print version number
uv run ruff --version # Should print version number (after uv add --dev ruff)
uv run basedpyright --version # Should print version number (after uv add --dev basedpyright)If any command fails with “command not found” or similar, revisit the installation instructions or check the troubleshooting appendix.
Getting Help
Installation problems are common and usually solvable. If you encounter issues:
- Read the error message carefully. It often contains clues about what went wrong.
- Search the error message online. Someone has likely encountered the same problem.
- Check the tool’s official documentation for platform-specific instructions.
- If you’re working through this book with others, ask for help and bring the exact error message.
Don’t let installation friction discourage you. Setting up a development environment is genuinely tricky, even for experienced developers. Once configured, these tools will serve you throughout this book and beyond.