insideout Get Pro
Learn
AI engineering · Optional

Engineering Toolkit

The working basics that AI and quant teams expect you to know.

Start here · Lesson 01

Files and folders in the shell

Find your way around, look inside files, and move them about safely.

Start lesson

LessonsAll lessons

  1. 01 Files and folders in the shellFind your way around, look inside files, and move them about safely. Free
  2. 02 Pipes, variables and scriptsJoin small commands into one, and save the steps as a script. Free
  3. 03 Commits and the staging areaSave work in small, named steps you can always go back to. Free
  4. 04 Branches, merges and conflictsWork on a branch, merge it back, and settle a conflict by hand. Pro
  5. 05 Rebasing, remotes and pull requestsShare a branch, keep it current, and get it reviewed and merged. Pro
  6. 06 Undoing things in GitMatch each mistake to the undo that fixes it without losing work. Pro
  7. 07 Setting up a Python projectA project anyone can install, run and test the same way anywhere. Pro
  8. 08 SQL queries: filter, join and groupAsk a database questions with SELECT, WHERE, JOIN and GROUP BY. Pro
  9. 09 Window functions, indexes and safe queriesRunning totals and ranks, why a query is slow, and SQL from Python. Pro
  10. 10 HTTP APIs with FastAPIHow programs talk over HTTP, and a small API that checks its input. Pro
  11. 11 Containers and deployingPackage an API with Docker, keep secrets out, and read its logs. Pro
  12. 12 Capstone: a script becomes a deployed APIA word counter, tested, packaged, containerised and deployed. Pro

Build it yourself · on your own machine

A small data API, from repo to container

A Git repository holding a tested Python package, a SQLite database built by a script, and a FastAPI service that starts in a container with one command.
  1. Start a Git repository with a .gitignore, and make one small commit for each step that follows.
  2. Download a public CSV, check it with head, wc and a cut | sort | uniq -c pipeline, and save those checks as a script with set -euo pipefail.
  3. Load it into SQLite from a package laid out with pyproject.toml, and write three pytest tests for the loader, one with an awkward row.
  4. Add a FastAPI endpoint that answers one question with a parameterised SQL query and checks its input with Pydantic.
  5. Write a Dockerfile that builds the database and starts the service.
  6. Do the work on a branch and merge it back once the tests pass.

How you'll know it worksFrom a fresh clone, one command builds and starts the container, curl returns the answers you checked by hand for three queries, and pytest passes.

Git, a terminal, Python with FastAPI and pytest, SQLite and Docker, all free and local. Uses lessons 01 to 12.