Assignment 1 : PRINCIPLES AND PRACTICES, PROJECT MANAGEMENT.

Making a website.

I got basic idea on how html works and knowledge about how to create and website in html from the online interative learning website: https://www.codecademy.com/learn/web
Since writing an html from the scratch will a lot time and

Different approaches I use:
-Go to a blog site and create a post and then using developers tools provided by the Firefox and chrome browsers, edit the content and look of the page and download it as html.
prefab.jpg
The html of my pre academy course documentation was created in blogspot.in. I chose a template that I liked and started creating the posts for each day. The index file was a part of my template. The post creation, formatting , attaching pictures etc was greatly simplified by using the blogspot.in editor. You get an option to choose between a graphic, word like editor and can change to an html version equivalent editor which converts the content you create into html. I saved these files into local folder, I used developer tools from firefox browser to change the look of the page, size and location of contents and connected links. you can download my webpage template and content from https://github.com/puneethrj/puneethrj.github.io and visit my github webpage at http://puneethrj.github.io .

-Use https://stackedit.io/editor# to write a content and export as a html file.
This page is written in stackedit online editor and exported as html.
- For most of my pages I used atom editor to write in markdown format of github flavor. Atom editor can be installed by the following command. I use Ubuntu 14.04.

sudo add-apt-repository ppa:webupd8team/atom
sudo apt-get update
sudo apt-get install atom

Atom editor has a feature which allows me to see the preview of the markdown I created. It can be activated through Ctrl+Shift+M. This is preview can be saved as a html page in the local drive. All my pages including this page were generated by this method. The generated html page has the css embeded inside the html file.

Pushing to class archive.

Yet again I used codeacdemy.com to learn some basics of git from https://www.codecademy.com/en/courses/learn-git/
I wrote my about page, a short bio of me in stackedit editor and exported as .html file.
Using the tutorial by our remote guru Francisco(Franc) in http://beachlab.org/fab2016/repo.html I was able to push my works to required folder in the fabacademy archive.

In a nutshell these are the steps in the process.
- Installed git.
- Added ssh keys which were given to me by Franc. SSH keys are a long string of characters which that can be generated and distributed to authorize a computer to access and make changes to a repo. Franc is the owner of the repo and he shared the keys with me so that I will be able to create and update content to the repo.
How ssh keys are generated? https://help.github.com/articles/generating-ssh-keys/
Adding ssh key to ssh agent. https://help.github.com/articles/adding-a-new-ssh-key-to-the-ssh-agent/
- Cloned the repo. Cloning is when you create a copy of the repo on you local system for the first time.(git clone [http or ssh link of the repo]). I used http link to clone the repo.
- Switched from default http protocol to ssh. https://help.github.com/articles/using-ssh-over-the-https-port/
- Made change in my local folder of the repo, added content related to me.
- Pulled any changes made in the while I made changes on the repo in the local system. Other students also updated the content of the repo hence it is required to be updated before you can push your changes. Pulling is when you want bring you repo up to date with the master repo located online to which others also make changes to.
- Pushed my changes to the repo, which in this case was to add an index.html and other web files in the folder allocated to me. Before pushing we add the changes to a staging area then we commit the changes which generates a unique id for that change so that it can be identified and traced in the history of the repo. Then it is pushed and changes are uploaded and finalized in the repo.

How to understand git. Tips and tricks

Git is essentially a software that manages project, its version and various other details so that you can manage development of your project easily and smoothly. Now git isn’t something you can play around with and make mistakes and learn or is it? No doubt you cant use important thigs like a fabacademy archive as play ground. You have understand clearly what git does and how it works before you can fully use git to its potential and most importantly how not to screw up. What if there is a simple and convenient way to understand git?
There is a very painless way to learn git which I figured out. Now git is just a project management system, it is usually used to collaborate between a team and over internet, what if you could do it in a local system? Git could act like a folder management system which handles history of files locally. This is what I did, I created a repo in my local system which could be clone into different spaces in my local system and I could experiment like anything with it. To do that
the following

Create a folder of your liking, navigate to that folder using the terminal in ubuntu and initiate a bare git repository

git init --bare

Now your sample remote repo or master repo is created.

To clone it use

git clone [path of the bare git repo] [destination folder and git repo name]

I was initially not sure of how git pull works what happens if I have a new file in my system in my folder will git pull erase it by syncing with files in the remote repo, what happens if same files are modified and pushed. All these experiments were done on my local master git repo and local cloned git repo.
I didnt know how to implement ssh keys etc.

Final project Sketch

For the final project my idea is to create a CNC that is able to scale large amount of space without restrictions. I call it the infinity CNC.
To scale an infinite area the CNC need to be a moving CNC. I plan to move it on 4 wheels. One of the axis is a parallel to the axis of motion of the 4 wheeled bot. And the other one perpendicular to the axis of the motion is mounted on the wheeled bot. The tool that this CNC can accommodate can be a non contact tool like a laser or inkjet head.
enter image description here