< back to home

Project Management

Goals

Version Control

There was a time, not so long ago, when I had to keep track of changes in my projects by hand, saving them in separate folders with deceptively different names; things used to get out of hand swiftly.

Those dreadful days are long past thanks to GIT, a version control system which allows you to keep track of changes in your files and to revert them to a previous state if you mess things up.

I won't bother you with step by step instructions on how to install and setup GIT, that is what tutorials are for; the only thing I can add is how to intruct your GIT to use a non defaul-named key.

By default GIT search for a key named "id_rsa" in your .ssh folder and must be given explicit instructions to look for a different key; you can set this on a per-host basis creating a file named "config" inside your ".ssh" directory and adding the following code:

              
host git.fabacademy.org
 HostName git.fabacademy.org
 IdentityFile ~/.ssh/gitfab
 User git
              
            
The code is pretty self explanatory, just remember to change the path pointing to your private key and you're golden.

Mandatory relevant xkcd comic:

Site development

As you may already have noticed this site is far from being finished; for this I blame my poor time management skills and a little mishap with Haml (more on this below).

TODO list

  • Make site responsive
  • Finish styling home page and week01 page
  • Insert a proper footer

NPM

My workflow is based on using NPM to dowload as much dependencies as possible and then use it as a build tool to automate boring stuff such as minifying images, .css and .js; there is a plethora of building tools, or task runners, the most well known being Grunt, Gulp and Broccoli; I like to stick to the KISS principle whenever I can, therefore avoiding a further layer of complexity seemed the right thing to do
My packages.json for NPM can be found here

Preprocessors

Stylesheets are a powerful tool (whoever has been around long enough to remember how sites where made before them, with tables and sliced background images, will have to agree), but writing them can quickly become a stale experience; that's why I like to use a prepocessor like SASS or LESS (Sass being my choice).
A preprocessor allows me to write a .scss file and then automatically automatically convert it in a valid .css. This gives me several quality of life improvements over plain css, including but not limited to variables, operators, nesting and mixins for easy code reuse.
For example, this scss code

              
$font-stack:    Helvetica, sans-serif;
$primary-color: #333;

body {
  font: 100% $font-stack;
  color: $primary-color;
}
              
            
will be compiled in this css
              
body {
  font: 100% Helvetica, sans-serif;
  color: #333;
}
              
            
For a detailed explanation of SASS and its features you can refer to the official documentation

Preprocessors are highly addictive so I tried to apply them to HTML, too; I was looking for a way to split my pages in reusables chunks, in order to avoid the tedius modification of recurring sections such as navigation, header and footer.
I tried HAML but soon realized that my hopes were to be dashed: the command line software provided by my linux distribution (Debian testing) can't compile my .haml files properly. The problem lies (or so it seems to me) in the "render" function that can't be executed out of the box; further researching the matter I stumbled upon what can be a workaround, but the regional review is upon us and I must put off this matter to a later time.

Final project proposal

This was a though one! The biggest problem I faced while thinking about a possible final project is my actual lack of skills in the field of digital fabrication.
Let me elaborate. In George Orwell's 1984 Newspeak (the official language) is strictly controlled, it has a limited vocabulary and set of rules, in order to severely limit the freedom of thought: an idea that can't be conveyed is no idea at all.

My initial idea was make a 3 axis machine holding a calligraphy pen with a flat nib. The machine would accept any text file as input and it would write its contents down on paper in gothic script.
Little I knew a very similar machine already exists, as pointed out by my local instructor: the AxiDraw is a pen plotter which can reproduce any vectorial file. To my defense I can say that this is not true calligraphy, for this machines outlines the bigger letter and then fills them up with subsequent strokes... anyway, I'm back to square one.

Right now I'm toying with the idea of making an "aumented" playing surface for pen and paper role play games, something to fill the void between the old "miniature and squared paper" system and the digital approach rapresented by tools like Roll20; unluckily I'm not able to provide any specific at the time of writing