Week 01 assignments:

  • Work through a git tutorial
  • Build a personal site in the class archive describing you and your final project

Setting up my website git repo

To publish our FabAcademy websites/portfolios we need to learn how to use version control systems, Fabcloud infrastructure is based on git/GitLab and luckly I already have some exprerience with these tools.
First of all i need to create a new SSH key pair:

$ ssh-keygen -t ed25519

ed25519 is a newer option than DSA (OpenSSH intruduced it in January 2014) but nowadays is well supported and offer excellent security level with better performance.
ssh-keygen generated a private key to be stored in a user-only readable directory:

$ mv id_ed25519 ~/.ssh/
$ chmod 600 ~/.ssh/

OpenSSH can handle different keys on the same computer, but wants to know which keys is related with each specific address.

$ vim ~/.ssh/config

#FabCloud - FabAcademy
Host gitlab.fabcloud.org
HostName gitlab.fabcloud.org
IdentityFile ~/.ssh/id_ed25519

Now i need to upload my public key in Gitlab, so i copied it into my desktop enviroment clipboard:

$ xclip -sel clip < ~/id_ed25519.pub

And pasted it in my account settings page:

In modern linux distributions it's hard to not have git pre-installed, anyway i use ArchLinux in my daily "desktop routine" and you have to manually install it if you haven't done it before.

# pacman -Sy git

Then i configued my identity in git configuration:

$ git config --global user.name 'Gianluca "Bigshot" De Rossi'
$ git config --global user.email "bigshot@antani.com"

Ok, now i'm good to go and clone my website project!

$ git clone git@gitlab.fabcloud.org:academany/fabacademy/2018/labs/fablabcrunchlab/students/gianluca-derossi.git
$ mv gianluca-derossi/

The directory is empty with only a README.md template.
Time to write some pages... :)


To add new file to the project i can use:

$ git add lorem_ipsum.html

Or get all new and modified files from the working directory:

$ cd /path/to/local/repo/gianluca-derossi
$ git add .

And then commit the changes:

$ git commit -m "nice_changes_description_here"

This repo has only one remote address so to upload new commits and let GitLab CI publish my pages i can simply use:

$ git push

I don't want to upload too much stuff, expecially big images, so i used a gitignore file:

$ vim .gitignore

#Untracked big images

I can check the gitignore is well formatted with a simple:

$ git status

And checking there are no untracked files in my "keep-out" directories.

Building the website

I created from scratch a template based on bootstrap 4 for my personal website.
Since we can't use server-side scripts for our sites and this is a simple portfolio layout i think it's not worth the hassle using some JavaScript/Ruby "wizardry" to render static pages from a CMS or to translate markdown files into my HTML template.
But if i find an really interesting and easy to set up js framework i will change my mind.

I use Atom as my text-editor of choice

but i'm also a Vim affecionado!


In the end i succumbed to Jekyll... it's not as bad as it seemed to me in the beginning.
Anyway i'm still not using kramdown to translate md files to html because it seems not flexible enough to adapt to my personal html template.

Describe my final project

Have a look at my (OLD!!!) final project page.