1. Project management

Principles of project management:

  • Work on schedule rather than working on tasks=> do planning "tasks based".
  • Apply triage principles like in hospital (too late /almost dead, injured seriously=> can be saved, very light injury=> not urgent
  • Apply the triage => find "injured tasks where stituation can be saved or recovered => this should be your focus
  • Serial vs parallel development
  • Apply spiral development principles: first spiral with limited features, second iteration / spiral: spirial is larger with more features
  • Iteration process / AGILE sprints: discover, design, develop, test
  • Bottom-up vs Top-down debugging.
  • Document your projects along the way !!! => if your work is nicely documented, your webpage should look like a notebook.
  • Useful project management links:

    Basic Terminal commands:

    A selection of the most useful commands to get started with.

  • $ pwd // print working directory
  • $ ls // to get the list of files in the working directory
  • $ ls - al // List of files in working directory (including hidden files)
  • $ rm // remove from working directory
  • $ rm –i // will ask confirmation before deleting file
  • $ rm // will delete the directory assuming it is empty
  • $ rm –r // will recursively delete a directory and all its contents
  • $ cd [OPTIONS] directory // will change directory
  • $ cp path_2_sourcefile/file path_2_destination // file copy
  • Basic Git commands:

    Gitlab is the tool yhat we will be using to manage the versioning of all the project files. The Git repos is essential to keep your work, manage SW releases of your website and also for any code we generate for the final project

    Gitlab will not only be used for control versioning but also as a project management (creation of issues, milestones and kanban boards

    Gitlab key functionalities

  • git init: to activate versioning control in a working directory
  • git add: to add files in the staging area
  • git add -u => to perform an add of all the files modified since the last commmit on the local Repo
  • git add . => to perform an add of all files that are “untracked"
  • Git commit -m "text to document commit" => to perform to add files to the local repository
  • Each "commit" operation will be associated to a pipeline
  • git push origin main => from local repo to main brabnch of the remote Repo
  • Illustration of the 3 local areas and remote area and key mechanisms between the levels

    SSH key creation:

    To ensure strong authentication in the connections, the preference is given to the SSH protocol that will be used in the connection between the SSH Client and the server. Given that the SSH provides strong encryption and integrity protection, it will enable secure automated transfer of the files between the local and the remote repositories

    SSH KEYS creation:

    step 1

    I have been using the Terminal commandline on the MAC OS platform.

    The SSH key generation process can be done using the command ssh-keygen. For full details, check the screenshot below

    step 2.

    step 3.

    At completion of these operations, an SSH key consisting of a pair of files has been generated

  • The private key: never share this SSH key !!!
  • The public key: which allows you to safely log-into remote containers
  • Early idea of the final project:

    My idea is to create a square panel covered with a patterm of flowers (fake ones made of paper or Vinyl)

    These flowers would open and close when the sun rises and humans in the room wish to shield the light in the room

    Overview of the high level architecture and concept:

    Link to the final project page:

    Final Project page