Week 1
Assignment, Principles and Practices (part 1 of 2)
- Plan and sketch a potential final project
Assignment, Project Management (part 2 of 2)
- Read, sign (add your name to) the student agreement and commit it to your repo.
- Work through a git tutorial.
- Build a personal website in the class archive describing yourself and your final project. Refer to the lecture material for examples.
- Upload parts 1 and 2, to the class archive.
From Assignment Details
Final Project Ideas
For Week 1, here are my initial concepts to explore. They will be updated as the semester progresses.
Idea 1 - 3D Printing on a Normal 2D Printer
Based on an interesting idea of building up 3D models with paper, sort of like Laminated-Object-Modelling.
Idea 2 - Peripherals for BioGun Extruder
More equipment for systems like the BioGun(TM): material preparation, and supply, pressure and power, more…
Idea 3 - A Big Plotter
A wide-spanning machine to make large format illustrations.
Idea 4 - Ghost Bus Stop
deployable temporary bus stop, with various shelter and data solutions.
Idea 5 - 3D Printer enclosure
Accumulation of design ideas for FDM enclosures.
Idea 6 - Cat Academy Projects
A few ideas for cat owners.
Further Detail on Final Project Development Page
Student Agreement
- Agreed and Committed.
- See Agreement Page.
Git
I have a little experience with Git. I maintain this Gitbook instance for our Fab Lab, and we use a GitBook/Markdown workflow, that I will continue to use in Fab Academy.
Setting Up Git
I am on a MacBook, using Terminal and ZSH, with Git already installed.
I added SSH keys to GitLab. Generated Public/Private keys:
ssh-keygen -t rsa -C "$your_email". Useful command (Mac Only): cat ~/.ssh/id_rsa.pub | pbcopy.
And I configure my local user so that I can make pushes to GitLab, as follows.
git config user.name "Your Name"
git config user.email "your.email@example.com"
I hadn’t used Mkdocs. I read the Mkdocs documentation and, additionally, Madrus’ documentation. In case it overwrote everything, I kept the templated htmls, see the cp command below.
git clone {{repository link, SSH}}
cd repo
cp -r public/* old
mkdocs new
As it was mentioned in the Week 1, I first used the python http server. But reading about mkdocs build and mkdocs serve in the MKDocs documentations I started using them instead.
Workflow
Insert Workflow Diagram Here

-
The Zed Editor is new to me (former Atom and Sublime Text user, so immediately familiar).
-
Terminal (MacOS) builtin, with ZSH. I had ZSH, Oh-My-Zsh and various Aliases before the start of Fab Academy, but I took this as a good opportunity to review my workflow and aliases. Most useful is
gup 'comment', which adds changes, commits and pushes in one go. -
KDenLive
-
FFMPEG, GIMP, and https://squoosh.app/.
Common issues with Macs
- System Python vs. user Python – use
python3andpip3 - MkDocs themes not loading – Homebrew install mostly fixed this, though I did set up a python virtual environment to make it easier to use throughout the semester.
- Git reset – Hard vs soft reset explained here
MacOS already has Python, but the system’s python isn’t the same version, as you may want to use.
Initially I just replaced python with python3 whenever it came up, and pip with pip3, and added /usr/bin/ for safe measure. Sometimes a package would be installed globally, but, it isn’t seen by the instance of python I am using.
Then I started using venv Python’s Virtual Environment.
python -m venv ./fab.venv
source ./fab.venv/bin/activate/ (replace with location of venv folder)
…And to make it even easier, I added these two more alises, making a typical short workflow as follows:

Two aliases as follows:
alias fenv="source ~/Downloads/Fab_academy/fab.venv/bin/activate"
alias denv="deactivate"
Issue Number 2 - GIT RESET
At some point, I had to do a git reset command. It wasn’t clear to me, what the different arguments meant. Clarified a bit better for me in this Stack Overflow. I used a Hard reset, which put me back a little bit too far, but only had a few steps to redo.
Git Ignore
I was in the habit of using git add ., so I added a .gitignore file to keep from accidentally staging a few things in future:
echo "site/" >> .gitignore
echo "*/.DS_Store" >> .gitignore
The content of the file is as follows, which can be typed too:
site/
old/
.DS_Store
._.DS_Store
**/._.DS_Store
**/.DS_Store
Aliases and Shortcuts
From nano ~/.zshrc:
alias serve="mkdocs serve"
alias build="mkdocs build"
alias ga="git add ."
alias gc="git commit -m"
alias gp="git push --all"
alias serve_old="/usr/bin/python3 -m http.server 8000"
alias open="/usr/bin/open http://127.0.0.1:8000/public/"
alias fenv="source ~/Downloads/Fab_academy/fab.venv/bin/activate"
alias denv="deactivate"
Ok, so next, you can chain commands in a single alias using ; (From Stack Overflow, posted by @simont). But, in order to take an argument, you have to create it as a function. These follow the format:
some_function() {
if [-z "$1" ]; then
echo "don't forget to include your comment"
return 1
fi
echo "thnks xoxox"
}
Use of ChatGPT
I used ChatGPT to write a bash script and list all filenames within a directory (to prepare links to use in MarkDown).

I used ChatGPT to figure out why installed themes weren’t loading. I guess it was because Homebrew-installed Mkdocs is different than system python and user python. Having Homebrew install the theme instead of Pip was the fix.