final project -- weekly assignments -- about me -- fab academy

Week 00: Website, GIT

Phase 0: Building My Own Website

Websites are sent to your browser in a format called html, which is... basically, glorified text. There are literally millions of tutorials of vastly different quality out there to learn html and all the cruft that can be involved.

Since I initially started learning html from a (now very outdated) German tutorial, I have no beginners' course to link to here. There are a few things to consider, though:

The general format is pretty simple: Text is just text, and <tags> say what it's supposed to look and behave like:

<html>
<head>
  <title>Hello World!</title>
</head>
<body>
Hello new internet-world!
</body>
</html>

This really minimal example is basically a website, it just doesn't do much. It shows a bit of text, and it has a title, to be displayed in the handle of your browser tab. To do all of that, it tells your browser that it is, indeed, html (the <html> tag), sets general information about the file (the <title> tag, in the <head> tag) and displays a line of text (which is, in this simple case, just text, in the <body> tag).

All those tags just tell the browser "from now on, treat what I write as...", so they have a second form to tell the browser that their influence has to end - That is what all those </tags> with a slash are for.

The general appearance of your text will be pretty bland - It is, by now, unformatted. HTML has multiple sets of tools to change that, one of which is really important: CSS or cascading style sheets (not to be confused with cross site scripting, that is an entirely different beast). CSS allows you to define how any kind of formatting actually looks, and under which circumstances it will have a different look - It might be better to not have that second set of navigation links when printing a page. As a basic example,
<a style="color:hotpink" href="http://www.bing.com">Advertisement Galore!</a>
will result in a really pink link to a not very well known advertisement platform.

To make matters simpler, that formatting is usually put into its own file, and then just loaded into every page, so you don't have to type or copy all of that formatting into every element of your page. I did that, too, and you can of course have a look at the css file behind this whole site.

I don't use any kind of automation in making the individual pages, just a set of template files that I fill in whenever I need a new one - Those have the basic layout and the links at the top and bottom already defined. I also don't use any kind of fancy IDE for filling them in, just whatever text editor I have available when I work on them. Mostly, that has been sublime text, but it works with anything that can open text, like Apple's textedit or even windows notepad.

Also, someone absolutely wanted to have a screenshot of a text editor, so here is one:

A screenshot of a texteditor

Phase 1: Getting Into GIT

Basics

GIT is a powerful versioning tool and can do a lot more than the old subversion client we used at my old uni. So, I'm off into learning something new (and rather useful, it seems) here. As you can read this, I have done:

Down the ragit hole...

While the above points will be a good start to just do some simple stuff with git, there is a point when stuff just breaks. At that point, it helps to know the underlying model - How git actually works inside, because while boxes are great, thinking in black boxes not always is.

Git kind of lives in its own world (don't we all?), a world made up of (usually) four distinct spaces:

the structure of a git repository

The "outside world" can either be an online repository (or a different copy of your repository, like on a thumbdrive) or a larger "master" repository - or both. The gitlab server we're working on here hosts a lot of those online repositories.

What the schematic doesn't show is how branches work. Branches are important the moment you start to work on larger projects, or working together with others. I don't nearly know enough about them myself to explain them.

final project -- weekly assignments -- about me -- fab academy

Creative Commons License
This work by Christoph Nieß is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.