# 1. Principles and practices / Project management ## Site - [Class](https://fabacademy.org/2022/) - [Schedule](https://fabacademy.org/2022/schedule.html) - [Jan 26: principles and practices, project management](http://academy.cba.mit.edu/classes/principles_practices/index.html) - Assignment - (Weekly) Group Assignment - [Students](https://fabacademy.org/2022/people.html) - [Kannai (Yokohama, Japan)](https://fabacademy.org/2022/labs/kannai/) - Lab site - Weekly Group Assignment - Machine Building - Instruction - Tips - Student name - Student site - [Documents](https://fabacademy.org/2022/doc/index.html) - [**Assessment**](https://fabacademy.org/2022/nueval/) - Introduction - General Essentials 1. Design files and code must be present in the archive in generically readable forms such as DXFs, STLs, etc., as well as in the original editable format (antimony, solidworks, eagle, CAD, etc). 2. Your files must be hosted in your gitlab repository. Large files, greater than 10 MB discuss with instructor first. 3. Take photos, notes and screenshots as you work - compress and resize your images for web - Commercial Board Policy - Acceptable use of Commercial Boards - In any case remember that Commercial Boards are not evaluated. They are not considered as your own work, but a necessary item for your work. - Embedded processor boards - More advanced processors than AVR microcontrollers can be used. They might come in different form factors (chips, modules). You can solder them to your board or connect them with connectors. The key to be accepted as part of your design is that these commercial processors are embedded in your board. - Single board computers: Raspberry Pi, Beaglebone etc - These can be used as a substitute for your desktop/laptop computer. You still need to design your own embedded board for your projects. - Principles and Practices - Project Management - [**Final project requirements**](https://fabacademy.org/2022/nueval/project_requirements.html) - [nueval](https://nueval.fabacademy.org/#/login) ## Schedules Day|JST|Name|Where|PW| -- |--- |-- |--- |---| Wed|23:00-02:00|Class|[Zoom class](http://fabacademy.org/2022/video.html)|1xxx| Sat|10:00-18:00|Local session|@kannai or video conference || Sat|24:00-02:00|Global Open Time|[Zoom mcu](https://zoom.us/j/9699009392)|| Mon|23:00-24:00|Recitation|[Zoom class](http://fabacademy.org/2022/video.html)|| Tue|12:00, 21:00|Regional Review(Asia)|http://fabacademy.org/2022/video.html |1xxx| ## (Individual) Assignment ### Principles and Practices > plan and sketch a potential final project #### Have you answered these questions? - Sketched your final project idea/s - Described briefly what it will do and who will use it ### Project Management > work through a git tutorial > build a personal site in the class archive describing you and your final project #### Have you answered these questions? - Made a website and described how you did it - Created a section about yourself on that website - Added a page with a sketch and description of your final project idea(s) - Documented steps for creating your Git repository and adding files to it - Pushed to the class GitLab - Signed and uploaded Student Agreement ## ToDo ### git - [git](http://git-scm.com/) > Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. - GitLab - [fabcloud](https://gitlab.fabcloud.org/) - Sign in: ID from [fablabs.io](https://fablabs.io/) - Academany / Fab Academy / 2022 / Fab Academy 2022 Labs / Kannai / Kannai site - Academany / Fab Academy / 2022 / Fab Academy 2022 Labs / Kannai / Kannai students / student-name - Academany / Fab Academy / 2022 / Fab Academy 2022 Class - **Notification** -> **Watch** - Issue -> Email - git tutorial [class archive](http://academy.cba.mit.edu/classes/project_management/archive.html) - [tutorial](http://git-scm.com/docs/gittutorial) - [Pro Git Book](http://git-scm.com/book/en/v2) ### Install (macOS) ``` % git --version git version 2.24.3 (Apple Git-128) % brew --version Homebrew 3.3.9 //% brew -v // If no git and homebrew // Install Homebrew from https://brew.sh/ % /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" // Install github % brew install git ``` ### Git setup ``` % git config -l user.name=your_user_name user.email=your@email.com % git config --global user.name your_user_name % git config --global user.email your@email.com // If no user name and email % git config --global user.name "Your Name" % git config --global user.email "you@example.org" ``` ### SSH key setup ``` % cd ~ % ls -la .ssh % cd .ssh % ls id_rsa id_rsa.pub // If no .ssh folder or keys % cd ~ % ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/Users/yuichi/.ssh/id_rsa): // syntax % ssh-keygen -t rsa -f id_rsa -C "comment" % cd ~ % cd .ssh % ls id_rsa id_rsa.pub % cat id_rsa.pub ssh-rsa AAA....this_is_your_public_key....@.local % cat id_rsa.pub | pbcopy // or use command+C to copy ssh-rsa........to_end ``` GitLab > your icon(right up) > Edit profile > SSH Keys(left) > command + v to paste public key !!! notes If you want to make more secured ED25519 format key pair % cd ~/.ssh % ssh-keygen -t ed25519 -C "your@email" % ls id_ed25519 id_ed25519.pub Ref. https://docs.gitlab.com/ee/ssh/index.html ### Local repository ``` % ssh -T git@gitlab.fabcloud.org Welcome to GitLab, @your_name! % cd ~ % mkdir repos % cd repos // clone your repo from gitlab to your pc // Girlab > your repo > Clone > Clone with SSH > copy "git@gitlab.fabcloud.org:your/project/path.git" % git clone git@gitlab.fabcloud.org:your/project/path.git student_site Cloning into 'student_site'... % ls student_site ``` ### Install Mkdocs in local PC ``` % pip -V pip 21.2.4 from /usr/local/lib/python3.9/site-packages/pip (python 3.9) % python3 -V Python 3.9.7 // If no pip % cd Downloads/ % curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py % ls get-pip.py % python3 get-pip.py % cd ~ % cd student_site % ls README.md mkdocs.yml docs requirements.txt % pip install -r requirements.txt % mkdocs serve INFO - Building documentation... INFO - Cleaning site directory INFO - Documentation built in 0.68 seconds INFO - [14:47:34] Serving on http://127.0.0.1:8000 // to stop mkdocs server Control +C ``` Open in Browser [http://127.0.0.1:8000](http://127.0.0.1:8000) !!! notes You may need to install mkdocs separately % brew install mkdocs % pip install -r requirements.txt ### Editter #### ATOM - [site](https://atom.io/) - Tips 2021: [Useful packages samples](http://tatsuro.homma.fabcloud.io/fabacademy/tips/content/atom/#useful-packages-samples) ``` % cd ~/repos/student_site % atom . ``` ### Git ``` // Copy agreement text from https://fabacademy.org/2022/doc/students.md // docs > about > New file > agreement.md // pase text // read and sign your name // save % cd ~/repos/student_site % ls -la .git % git status % git add . % git status % git commit -m "first commit agreement" % git status % git push // cap 10M/push // Go to GitLab // docs > about > index.md > Edit Hi! I am <your name> . // Commit changes % cd ~/repos/student_site % git pull % mkdocs serve ``` Tips 2021 [How to recover after rejected large files commit](http://academany.fabcloud.io/fabacademy/2021/labs/kannai/site/instruction/tips/git_manage_large_commit/) ### File size #### ffmpeg ``` % cd ~ % brew install ffmpeg // video // http://academy.cba.mit.edu/classes/computer_design/video.html // variable bit rate 1080p MP3: % ffmpeg -i input_video -vcodec libx264 -crf 25 -preset medium -vf scale=-2:1080 -acodec libmp3lame -q:a 4 -ar 48000 -ac 2 output_video.mp4 // image % cd path/to/image % ffmpeg -i input.jpg -vf scale=-1:1080 output.jpg ``` Tips 2021 [FFmpeg_test](http://academany.fabcloud.io/fabacademy/2021/labs/kannai/site/instruction/tips/ffmpeg_test/) Tips 2020 [ffmpeg example](https://fabacademy.org/2020/labs/kannai/students/tatsuro-homma/project/ffmpeg.html) ``` % cd path/to/image % du -ha | sort | head 1.0M input.jpg 0.5M output.jpg ``` #### imagemagic ``` % cd ~ % brew install imagemagick ``` [week2](./week02.md#compress images and videos) ## The Fab Charter !!! Attention The Fab Charter https://fab.cba.mit.edu/about/charter/