Skip to content

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

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

Zed Editor Terminal Oh My ZSH

  • 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 python3 and pip3
  • 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:

Workflow Screenshot

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).

Script Screenshot

Log File


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.

Log File