Back to Home Page

Introduction

This week we started the Fab Academy. The topics/goals for the week were to:

Project Management

I think project management is an important tool for prototype development, it allows to keep track of milestones and the resources needed to achieve them. Also it allows to keep track of projects/tasks that are inputs for other projects, therefore avoiding mobilization of resources when this inputs are not ready. Some tools in project management for tracking tasks and milestones are gant charts. I have have been in projects that have been managed by one or more project manager in the past jobs.

As I data analyst I have had some previous exposure to git. We used this tool for version management and to work in the development of factory models. The main idea was that different teams members could roll out modifications for a particular module of the model in which they were working on. These allowed to work with the most up to date version of the project and also allow to roll back to former versions if the new version ended not being a viable alternatives. Similarly, branching was an option for untested features were investigated without having to implement them in a main version.

SHH key generation

Since we had to clone our gitlab repository I had to create a SHH key for authentication. For this I followed a great tutorial for mac by Valentin Despa at:

https://www.youtube.com/watch?v=_qDJ0W1wR5w

The SHH key that was used in the the tutorial RSA defined as:

RSA, short for Rivest-Shamir-Adleman, is an asymmetric cryptographic algorithm widely employed to secure network communication. The algorithm uses a pair of keys – a public key for encryption and a private key for decryption. This dual-key system forms the foundation of secure communication, ensuring that the private key remains confidential even if the public key is widely distributed.

from:

Tuxcare blog

The commands used in the terminal follow.


% ssh-keygen -t rsa
% cd /Users/alfredorios/.ssh
% .ssh % ls
id_rsa      id_rsa.pub

Above we see that the keys is saved in a hidden directory. The file with the pub extension is the one we should use to connect to our local repository. Using the cat command and id_rsa.pub we can print the key to be entered in Gitlab in order to authenticate our computer. Once we have copied the key we can go to our profile on gitlab and then to the preferences in order to enter the key.

Repository Cloning

I followed a second tutorial from Valentin Despa.

https://www.youtube.com/watch?v=4lxvVj7wlZw


(base) alfredorios@Alfredos-MacBook-Air Documents % mkdir FabAcademy_Rep
(base) alfredorios@Alfredos-MacBook-Air Documents % cd FabAcademy_Rep
(base) alfredorios@Alfredos-MacBook-Air FabAcademy_Rep % git status
fatal: not a git repository (or any of the parent directories): .git
(base) alfredorios@Alfredos-MacBook-Air FabAcademy_Rep % git init   ### Initializing a repository

% git config --global user.email "alfredo.a.rios@gmail.com"
% git config --global user.name "Alfredo RIOS"             

Initialized empty Git repository in /Users/alfredorios/Documents/FabAcademy_Rep/.git/

  (base) alfredorios@Alfredos-MacBook-Air FabAcademy_Rep % git status
On branch main

No commits yet

nothing to commit (create/copy files and use "git add" to track)
(base) alfredorios@Alfredos-MacBook-Air FabAcademy_Rep % 

git clone git@gitlab.fabcloud.org:academany/fabacademy/2025/labs/cuenca/students/alfredo-rios.git

Note that the location in the last line was taken from gitlab.

The mantra…


(base) alfredorios@Alfredos-MacBook-Air ~ % git add . # note . is for all
(base) alfredorios@Alfredos-MacBook-Air ~ % git status
(base) alfredorios@Alfredos-MacBook-Air ~ % git commit -m "about and about images"
(base) alfredorios@Alfredos-MacBook-Air ~ % git push      

Nuking your local repository and resetting untracked files.

Here we can find the commands that can be use to do a hard reset of the local repository


git reset --hard origin/master

and the commands for resetting untracked files


git clean -d --force

Some reflections in regards to git..

I started working on my repository files and I ran in some troubles as I was not methodical in my work. There problems were caused apparently as I had files in gitlab that were not present in my local repository. I think modifying work from both ends before doing a pull or push is not a great idea. I had to do a hard reset and a pull to restore my work.

Another reflection is to keep pushing our local repos constantly as way to ensure that we do not loose any work in the event of computer failure.

Also it is important to keep repositories light as it saves money, energy and allows fast loading of our web pages. I remember that a data engineering I worked with made point of the cost of running facilities that kept servers that housed data.

Markdown

I have had previous exposure to markdown through R Studio, specifically rmarkdown. I found a packages provided nice templates that were light in the following website.

https://github.com/yixuan/prettydoc?tab=readme-ov-file

I knitted the files I developed and used the html files for my website. Mostly I used symbols for headers (##) bullet points(-) second level bullet points(4spaces plus a -) and image tags to direct markdown to images I wanted to display.I used relative directories as this is to be loaded into the gitlab cloud.

Terminal commands

There is some terminal commands that I usually forget:

vim => reading files, note i will allow you tu insert and : followed by quit will exit from the editor.
mkdir => create a new directory.
ls => list files.

Time management (reflection)

I spent an inordinate amount of time trying searching on the web how to build a navigation bar from rmarkdown and finally gave up, until I decided to avoid this feature. I ended up generating and html page and then adding the navigation bar originally provided in our gitlab repository. This was a good example of serial development as it did not allow me to continue with other parts of this weeks work. Also a good example of Triage as I should have know this was not entirely relevant to the success of this week work.