Week01
Assignment¶
Principles and Practices (part 1 of 2)¶
- Plan and sketch a potential final project
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.
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.

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.

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.

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
and pasted on SSH Keys page on FabCloud GitLab.Also added a configuration below to my ~/.ssh/config.

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.

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

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,
and then to commit, at last, push change history on your local to remote origin by using by adding “-u” option, you just need to typegit 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
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.
image: python:alpine
before_script:
- pip install -r requirements.txt
pages:
script:
- mkdocs build
- mv _site public
artifacts:
paths:
- public
only:
- main
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