Juan García-Maestro Gil-Casares

FABLAB MADRID CEU


1. Principles and Practices, Project Management


Procedure:
0. Assignment
1. Getting used to Notepad++ and html commands.
2. HTML Tutorial + Analysing Fablab's web template.
3. New Challenge: looking for new templates + understanding.
4. Using Git - Main commands.
5. Gantt Calendar
6. Git Tutorial
7. Possible Final Project

0. Assignment



Build a personal site describing you and your final project

Plan and sketch a potential semester project and add it to your website.

Upload it to the class archive. Work through a git tutorial.

LEARNING OUTCOMES

Explore and use website development tools
Formulate a final project proposal
Identify version control protocols

HAVE YOU...?

...made a website and described how you did it
...introduced yourself
...described and made a sketch of your final project
...documented steps for uploading files to archive
...pushed to the class archive

1. Principles and Practices, Project Management


When the lecture finished with Neil Gershenfeld and our guru taught us in more detail the topics spoken on air, I was collapsed with so much code in my head. My knowledge in web development is very small and, although I had searched for tutorials these past months, it was getting really confusing. As I had my Notepad++ program already installed in my computer, I decided to use it instead of Sublime.

The next day, all the fablab team got together and started to play around with the website template of fabacademy. There were so many commands that I became even more confused than the day before. What I did was to play around with basic HTML commands to play with the template:

-changing the menu, giving priority to the "Final Project" menu, "Exercises" menu rather than "About" and "Contact" links.

Using different basic formatting tags such us: bold, italic, subscripted text, superscripted text and more basic commands.

-re-organising the years schedule, adding the date to each week lecture.

This 2-3hour work was orientated to introduce myself deep inside the HTML document and see what were my lacking skills. As I was startled of the many commands, so I decided to take a tutorial in HTML5 tags and print them all together. Later on I will continue learning CSS3.

The tutorial I used is an application for Iphone and Androir from the company "Solo Learn" (website: ) and the website

2. Tutorial Finished!



Once I finished, I came back to the HTML template: easier to read, easier to understand although there are still commands and tags that I do not know (especially those ones referred to JavaScript). I continued changing the content of the webpage. While I was adapting the content to my needs, I thought about searching for a new template on the Internet that had more complex structures. The one from the fab academy is too rigid for me, and I wanted a more interactive and visual website for the presentation of my final project

What I did was, open the browser and type in: "free html templates" and selected After searching for a while, I found the one that fitted with the design I wanted: "Arcadia Free Website Template". Having a reference has taught me the way HTML and CSS work, this new website template will make me learn even more in this area.

What I really liked from this new website design is the introduction image: "How To Built Almost Anything". The essence of the program is what I wanted to state at the first user's look.

3. NEW CHALLENGE



Understanding the new HTML document was more difficult than I expected. The introductory typed-in text at the beginning gave me a headache. Until I found and understood the new function element:

Your browser does not support this image

Then I continued to organise the website. Is the typical long website where everything is on the same page and the only thing the user has to do is scroll down. As mentioned above, I wanted something more visual and more interactive with the user, without being too long.

The strategy I used is to first create the index page based on the template, having a side-menu that appears if need to (also in case the user's browser doesn't support the interactive responsive buttons). Then, have a big screen introducing the fab academy and the program + button the scrolls your down to the main 4 parts of the website:

-Final Project

-Weekly Exercises

-About Me

-Contact

Your browser does not support this image

Once I understood the code, I just copied down the same code four times (one for each topic), re-arranging the tags and id used.

Just to finish the index page, I wanted a shortcut to my "Final Video Project" (although is not done yet), but to leave it ready for June.

As the original template had a similar button, I searched for it. Again, it was not that easy for me as I am new to this world. This is the code for the "scroll-down" button:

Your browser does not support this image

Re-arranging this button was kind of problematic until I understood that "#works" stands for an id mentioned in the division elemtent part that you want to go on the same page. The links to each topic have an id="works", so for future changes in the button, the only thing I need to add is a new id and match with the button of the page. Here the example with the id:
"div id="works"

YES! Home page finished! Now what I need to do is change the images with the suitable ones for my program.

Now, I continue with the creation of the new html pages: Final Project, Exercises, About Me, Contact.

One of the biggest problems I had was to link every website with one another. Although is simple with the command:
(a href="example.html">Example Page /a), it did not work out as expected.

There are certain rules that you need to know when linking from one html page to another:

-Empty spaces are not valid

-You may have problems with capital letter, so do not use them

-Please, finish the documents with ".html" (this one is VERY important)

So, the problem was not finishing with the proper document extension...problem SOLVED.

Once the links between pages have been successfully done, I started manipulating each one of them. I did not really have any problems while doing it, it was really copying and pasting commands and tags already done in the home page.

IMAGES



Once finished structuring all the page, I focused on the imagery design. I erased all the pictures that came with the original template except for two of them (the ones with the apple computer). As the FabAcademy program is based on digital design, a computer was ideal in the design of the webpage.

Then, I started creating my own images. I was looking for really simple and straightforward design that could let me to different expressions. This is the design I did in Photoshop:
Your browser does not support this image

Nice, simple, a geometrical game were a group of them together could let me to a cool web visualisation. Now, it was easy to link them to the page and upload them.

4. Git time!



Git installed and ready to be used on my computer. No problem accounted.

SYNC PROBLEMS WITH GIT



My first synchronization with GIT:
git pull (to refresh any modified documents in git)
git status (verify if any files have been uploaded in our lab)
git add --all (add documents, both new and modified)
git status (verify the documents than need to be updated)
git commit -m 'message' (are you sure? please leave a message describing the reason for your update)
git push (complete upload to git)

Everything perfect.

I opened my browser to have a look to my new designed webpage and verify if it had any problems, and guess what, there were.

Problems accounted: images did not appear where they should appear and contact.html page and aboutme.html page did not work.

Your browser does not support this image
After searching for the reason why this was happening, I realised Windows is not as good as I thought. The main problems why the images and the html pages did not upload were because of the capital letters.

Your browser does not support this image

Your browser does not support this image


Plus, the program I have used to save the pictures did it with a .JPG extension instead of .jpg.
So, during the weekend, while designing the website, Windows read the html links without differentiating the capital letters from the smaller ones. Therefore, these small details are not crucial while using windows, but once you upload it to GIT, it is completely different.

synchronising with git



Once I had changed all the files involved, I synchronized it to Git.
No changes.

WHY?



Although I went to each file changing its name and extension, that was not enough. Windows interprets the same name no matter if you have changed the capital to small letters. So, when uploading it to Git, the files are recognised as files that have not been changed.
In the end, what I did was erase the files involved, sync with Git. Make sure that the files involved are erased in Git, and then, copy the same files with small letters back to the folder. Sync again. DONE.
Your browser does not support this image Your browser does not support this image

This is how things should have been done from the beginning:

Your browser does not support this image

Your browser does not support this image

Everything CORRECT
DONE!
Now continue with Git Tutorial

5. Gantt Calendar Organisation



Your browser does not support this image

Right now I am working on my Final Thesis Architectural Project (PFC in Spanish), and not having time to the things I have proposed to do is not new. As Neil told us last Wednesday, there are different programs to help us organising our work.

The program selected to start with is 'Gantt Project'. In these 25 minutes I managed to visualize the principal dates of my calendar.

In one hand, all my Final Thesis Project dates are organised at the half-top of the document, being the green bar the process from today until the final date (May 10th). In red, special dates I cannot miss. In yellow, recommendations I have done myself and in blue different appointments I have with my tutors (these last ones will update as soon I have more meetings with them).

On the other hand, in black I have the FabLab calendar. Placed at the bottom, the whole process (until June 31st). The small bars represented in black are those weeks that I will need to spend more time as each one of them are topics that I have not done before such as 'Electronic Production', 'Embedded Programming', or the ones that will take me more time like 'Machine Design'.

All together helps me to set up a 'demand vs supply' rule each week so I can optimise my time as much as I can.


6. Git Tutorial



Git Tutorial's Website:


Important Commands that I will need to use:

'git help' - appears help menu

Your browser does not support this image

'git pull' - fetch and merge changes done on repository

'git push' - push changes

'git status' - report the repository status

Your browser does not support this image

In this case, as I have modified and added new files, it appears in red the ones that will be added/modified on the repository.

'git add' - stage all changes files to commit

Your browser does not support this image

'git commit -m 'commit message'' -

'git revert' - undo a commit

'git reset --hard' - undo uncommitted changes



The online tutorial shows you what is Git, how to create new branches, view project history and using Git for collaboration.

Your browser does not support this image

It shows the example of Alice and Bob, where they use the same branch while they work. In this case, Bob clones Alice's repository and makes changes. Finally he pushes back with the edited files, but the problems come when Alice wants to upload her edited files as well. She arrives to the situation where she cannot do it, as her 'push' will lead to erasing Bob's files. The execution of which files have been changed, and fetching and merging them successfully is what it is fully explained.

Other interesting commands that I may need:

'git log': shows history

'git log --name -status': shows names and status of changed files

'git log --graph --online --stat' -compact history view with graph and changes

'git push --mirror': mirrors a repository

'git init' - initialize a repository

'git config --system'

'git config --global user.name "Firstname Lastname"': sets name for commits

'git config --global "address@site": sets emails for commits

'git config --global': user's configuration

Git Tutorial Finished!

7. Concept



As I come from an architectural background, drawing and building 3d models is something that I usually do every year. Projects are born from time to time and, especially those nights where I am really inspired is when the projects come out smoothly.

One of the main disadvantages of working at night is the way artificial lamps handle how we work. Most of the time, our hands project on the paper (or on the 3d model) our own shadow, disrupting the works fluency having unnecessary interruptions during worktime.

Your browser does not support this image

In addition to this, if we want to prevent this from happening, we are forced to move the light from one place to another, being partially injured by the lamps high temperature. Plus, if we have dirty hands at any given time, we would mess up the lamp's grip and handle.

Your browser does not support this image

Where?


The idea is to have a workspace where I can modify position, quantity and temperature of the different light sources I will have: atmospheric light, direct light, indirect light; with both warm and cold temperatures.

Your browser does not support this image

The best part comes when I will be able to do all of these things without touching the device!

Whether I have my hands full of dust or I don't want to be burnt by the lamp, I just need to activate the different inputs to make the device move!