Week 1 — Principles and practices, presentations

Project management: Git, SSH, Fab Cloud GitLab, GitLab Pages, and documenting the student agreement. This write-up follows the Fab Academy recitation on version control & GitLab. The live site is plain HTML/CSS; pushing to main runs CI that copies the repo root into public/ for Pages (see .gitlab-ci.yml). Final-project sketches are documented on final-project.html instead of this page.

Individual assignment

Notes, screenshots, and workflow for Week 1: SSH keys, cloning the documentation repo, commits and pipelines, image compression, and the signed student agreement.

There was no ~/.ssh folder yet, so I created an Ed25519 key with ssh-keygen and copied the public key to the clipboard for GitLab.

Terminal: ssh-keygen and copy public key with pbcopy
Generating the key and copying id_ed25519.pub (newline stripped) on macOS.

In GitLab I opened Preferences → SSH Keys, pasted the key, set a title, and saved it so the server trusts this laptop.

GitLab Add SSH key form filled in
GitLab “Add SSH Key” with the pasted public key and usage type.

I tested the setup with ssh -T git@gitlab.fabcloud.org. On the first try I had to type yes to store the host fingerprint; then GitLab returned “Welcome to GitLab”, which confirms SSH authentication works. (On some networks the command can hang until the connection improves.)

Terminal: ssh -T success Welcome to GitLab
Host added to known_hosts and successful welcome message.

I used the SSH clone URL from the project page, cloned into a folder named john-yu, ran cd john-yu, and checked git status on branch main.

Terminal: git clone, cd, git status
Clone finished; working tree clean before the first edit.

I edited index.html at the repository root, then ran git add index.html, git commit, and git push. The CI job copies HTML and assets into public/ for GitLab Pages. I opened GitLab CI/CD → Pipelines and verified the latest pipeline passed for that commit.

Terminal: git add commit push for index.html
Staging the HTML change, committing with message “Week 1: update HTML”, and pushing to origin/main.
GitLab pipeline passed for HTML update
Pipeline status after the first content push — green check means the Pages job succeeded.

I shrank a screenshot in Squoosh (MozJPEG), saved it under images/, linked it from index.html, and pushed the image and HTML together. Small files keep the documentation site quick to load.

Squoosh image compression UI
Squoosh preview: strong size reduction before adding the file to Git.
Terminal: git add image and index commit push
git add for the new image and index.html, then push with a message describing the image on the home page.
GitLab pipeline passed after image commit
Second successful pipeline — the live site now serves the new image.

Day-to-day commands I use look like this: git statusgit add …git commit -m "…"git push.

git add .
git commit -m "describe changes"
git push

For Week 1 I committed the Fab Academy student agreement as assignments/students.md, following the official template at fabacademy.org/2026/doc/students.md, and signed it as John Yu.

References: Fab Academy — version control & GitLab, GitLab SSH, GitLab Pages, and Squoosh.