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.

Why I set this up this way

Week 1 is mostly infrastructure: I needed a reliable loop from this laptop to Fab Cloud GitLab so the documentation site and assignment pages stay versioned like any other project. Before doing that I had no SSH key on the machine, so the first small hurdle was generating one and learning where GitLab expects it in the UI—not difficult once mapped, but easy to mix up with HTTPS remotes if you are new to Git.

Another practical snag was connectivity: the first ssh -T test sometimes sits until the network cooperates. I noted that here because it is a normal field issue, not a sign that the key is wrong. After the path worked once, the recurring habit became status → add → commit → push, then glance at the pipeline for Pages.

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.