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.
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.
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.)
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.
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.
origin/main.
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.
git add for the new image and index.html, then
push with a message describing the image on the home page.
Day-to-day commands I use look like this:
git status → git 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.