Skip to content

Week01

Assignment

Principles and Practices (part 1 of 2)

Video

  • Plan and sketch a potential final project

Project Management (part 2 of 2)

Text Video

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

Reference: https://fabacademy.org/2026/nueval/principles_and_practices,_project_management.html


Final project idea

The thing I personally want to make these days is a real Cessna 172 cockpit for my PC flight simulator. I started to receiving private pilot license training and since I don’t have my own Cessna 172 yet, I’d like to have a real simulator to keep maintain my skill. “Real” mean physical location, shape and touch are very close to actual cockpit of Cessna 172.

So, I purchased actual levers and console panels from a supplier of actual Cessna 172. For instruments, I may use LCD panel. For flap lever, trim wheel and fuel selector, I may use others design to reduce my design workloads. I will use mass production item for Yoke and rudder pedal.

FlightSim

This is a Cessna 172 flight simulator cockpit mede by my friend. He’s running a small company that develop and manufacture cockpit for flight simulator.

For my final project of Fab Academy, I’d like to make “throttle control” of Cessna 172 simulator. There are several mass produced controller but typical controllers have three levers as same as my friend’s simulator. You can see three black, light blue and red knob lever in the center of picture above. Black knob is throttle, light blue is pitch control - Cessna 172 doesn’t have variable-pitch propeller, red knob is mixture control.

Cockpit

This is a actual cockpit. You can see I have control. 😄 As this picture, there are no light blue knob. Black knob and red knob is very important but also “carburetor heat” is important to avoid carburetor icing. Typical throttle control for flight simulator have needless light blue knob but lack of black square carburetor heat knob. This is why I want to make my own throttle control for simulator with actual Cessna 172 parts.

final_project_sketch

This is a sketch of my throttle control unit. There are possibly three potentiometer and USB speaking microcontroller inside enclosure.


Setting up my homepage

First of all, I thoughtlessly sat up this site before this class. 💦 When I looked around seniors’ sites, I found most of they are using static site generator and I decided to write my homepage with markdown. So, I did as blow.

Tools

  • macOS - I’m using macOS because it can use both desktop application and Unix application.
  • Visual Studio Code - The earlier option was CotEditor - a text editor I’m usually using, and GitKraken. But I canceled this plan since I need to apply for subscription if I want to handle private repository with GitKraken. When I think about Markdown editor that has version control system capability, I remember VSCode.
  • Photoshop - This is my familiar photo retouch software.

To access FabCloud GitLab

I skiped git tutorial because I’m using git for long time. - Evidence

Since I’m authenticated with SSO, GitLab noticed I need to set password or personal access token. I don’t want to have passwords as possible as I can, so I prefer to use my existing pubkey to push and pull. So I copied my pubkey as like this

% cat ~/.ssh/id_rsa.pub | pbcopy
and pasted on SSH Keys page on FabCloud GitLab.

Also added a configuration below to my ~/.ssh/config.

Host fabcloud.org
 User ytsuboi
 HostName gitlab.fabcloud.org
 IdentityFile ~/.ssh/id_rsa

W1_clone_repository_1.jpg

The address to clone the repository can be obtained from your project page. Click the inverted triangle next to “Code” and then click a copy button next to the address you want to obtain.

W1_clone_repository_2.jpg

Then launch Visual Studio Code and click “Clone Git Repository” and paste it onto the text box marked by red rectangle.

When I try to clone my repository, VSCode noticed Git: Host key verification failed. so that I solved this issue by using command on Terminal.

% ssh -T git@gitlab.fabcloud.org

Finally, I successfully cloned my repository from FabCloud to my local. I put it inside my Dropbox directory to be able to write from anywhere and reduce the number of commit.

If I do cloaning in command line, it could be like,

% git clone git@gitlab.fabcloud.org:academany/fabacademy/2026/labs/nagoya/students/yoshihiro-tsuboi.git
Cloning into 'yoshihiro-tsuboi'...
Enter passphrase for key '/Users/yoshi/.ssh/id_rsa': [ENTER MY PASSPHRASE]
remote: Enumerating objects: 264, done.
remote: Counting objects: 100% (232/232), done.
remote: Compressing objects: 100% (215/215), done.
remote: Total 264 (delta 108), reused 0 (delta 0), pack-reused 32 (from 1)
Receiving objects: 100% (264/264), 6.63 MiB | 5.75 MiB/s, done.
Resolving deltas: 100% (117/117), done.

W1_VSCode

To add a file to the repository, you just need to press a button highlighted by red circle on VSCode. To remove, right click a filename. Or you can drag and drop the file to the left pane of VSCode.

If I do adding file in command line, it could be like,

% git add example.md
and then to commit,
% git commit
at last, push change history on your local to remote origin by using
% git push -u origin main
by adding “-u” option, you just need to type git push from next time.

Static Site Generator

I heve many experience to write documents with Markdown on Wiki or GitHub Pages but I’ve never used static site generator. When I looked aroung, most of they are using MkDocs on here. MkDocs was written in Python ( I love Python more than JS. 😛 ) and this is first time for me to use CI on GitLab so that I prefer established way.

mkdocs.yml

mkdocs.yml
site_name: Yoshihiro Tsuboi - Fab Academy 2026 documentation
site_description: Fab Academy documentation
site_url: https://fabacademy.org/2026/labs/nagoya/students/yoshihiro-tsuboi

site_author: Yoshihiro Tsuboi
docs_dir: docs
site_dir: _site
copyright: "© 2026 Yoshihiro Tsuboi - Creative Commons Attribution Non Commercial"

theme:
  name: material
  palette:
    primary: grey
    accent: deep orange
  icon:
    logo: material/school
    favicon: file/favicon.ico

features:
  - navigation.instant
  - navigation.tracking
  - navigation.sections
  - navigation.tabs

extra:
  generator: false

markdown_extensions:
  - extra
  - smarty
  - admonition
  - codehilite:
      guess_lang: false
  - toc:
      permalink: true
  - pymdownx.emoji:
      # https://squidfunk.github.io/mkdocs-material/reference/icons-emojis/#search
      emoji_index: !!python/name:materialx.emoji.twemoji
      emoji_generator: !!python/name:materialx.emoji.to_svg
  - pymdownx.tasklist:
      custom_checkbox: true
  - pymdownx.highlight:
      anchor_linenums: true
      line_spans: __span
      pygments_lang_class: true
  - pymdownx.inlinehilite
  - pymdownx.snippets
  - pymdownx.superfences
  - attr_list
plugins:
  - mkdocs-video:
      is_video: True
      video_muted: True
      video_controls: True

Reference: https://www.mkdocs.org/user-guide/configuration/

I don’t want to install MkDocs on every computers I’m usually using, so that I decided to use GitLab CI to run MkDocs. To use GitLab CI, I just need to write configuration in YAML.

.gitlab-ci.yml
image: python:alpine

before_script:
  - pip install -r requirements.txt

pages:
  script:
  - mkdocs build
  - mv _site public
  artifacts:
    paths:
    - public
  only:
  - main
requirements.txt
mkdocs
mkdocs-material
mkdocs-video

Reference: The basics of CI: How to run jobs sequentially, in parallel, or out of order

If you have FabCloud account, you may able to see my repository on here.

Note

At my first commit and push, I had a problem. CI doesn’t run even if I push something!! After some hassle, I finally found the roots of problem. It was branch name!! I wrote master as target branch name. For me, the name of main branch is master not main. 😆


Student Agreement

Fab Academy Student Agreement

The Fab Academy is responsible for:

  • Teaching principles and practices of digital fabrication
  • Arranging lectures, recitations, meetings, and events for the class
  • Evaluating and providing feedback on student work
  • Offering clear standards for completing assignments
  • Certifying and archiving student progress
  • Supervising class preparation
  • Reviewing prospective students, instructors, and labs
  • Providing central staff and infrastructure for students, instructors, and labs
  • Fund-raising for costs not covered by student tuition
  • Managing and reporting on the program’s finances, results, and impacts
  • Publicizing the program
  • Promoting a respectful environment free of harassment and discrimination
  • Encourage a diverse, accessible, and equitable community

I am a Fab Academy student, responsible for:

  • Attending class lectures and participating in reviews
  • Developing and documenting projects assigned to introduce and demonstrate skills, in enough detail to be able to reproduce them
  • Honestly reporting on my work, and appropriately attributing the work of others (both human and machine, including AI prompts)
  • Being prepared to answer questions about my work
  • Allowing the Fab Academy to share my work (with attribution) in the class for purposes compatible with its mission
  • Working safely
  • Leaving workspaces in the same (or better) condition than I found them
  • Participating in the upkeep of my lab
  • Ensuring that my tuition for local and central class costs is covered
  • Following locally applicable health and safety guidance
  • Recognizing limits on lab and staff time
  • Promoting a respectful environment free of harassment and discrimination

Signed by committing this file in my repository,

Yoshihiro Tsuboi


Checklist

  • Sketched your final project idea(s) - here
  • Described briefly what it will do and who will use it - here
  • Made a website and described how you did it - here
  • Created a section about yourself on that website - here
  • Added a page with your sketch and description of your final project idea(s) - here
  • Documented steps for setting up your Git repository and adding files to it - here
  • Pushed to your class GitLab repository - This site amd repository
  • Signed and uploaded Student Agreement - here