welcome to

Website-Bastelstunde I

with nyakob (they/them/none) :3

08 Jun '26, maschinenraum

slides: http://jakob.ruckel.de/slides/www-i/

<slide page="1/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

Why Have A Website In --current-year?

<slide page="2/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

Why Have A Website In --current-year?

  • Expression, put yourself out there!
    • No one tells you what shape your website has to be, so it’s kinda a sandbox where you can do whatever
  • not (really) subject to algorithms and social media shenanigans
    • posting on social media: “oh no what will people think of this?”
      • and the metrics
    • website: “i guess if anyone sees this it’s their fault”
      • i have no idea if anyone even does that*
    • this gives me peace of mind :)
  • It’s fun!
  • Art
<slide page="3/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

webdev

<slide page="4/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

What?

  • Today:
  • Next time (in 3 weeks, i.e., 29 june ‘26, 15:30, maschinenraum)
    • Static site generators (jekyll in particular)
      • a.k.a. how to build a blog (with an RSS/Atom feed!!)
    • Hosting (magically) with CI
<slide page="5/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

How did we get here?

image source: https://redd.it/1fpgddo

<slide page="6/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

How did we get here?

image source: https://redd.it/1fpgddo

<slide page="7/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

How did we get here?

image source: https://redd.it/1fpgddo


<slide page="8/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

How did we get here?

<slide page="9/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

Internet (old, as in pre-WWW)

  • IRC (Discord)
  • Usenet (Reddit)
  • E-Mail (E-Mail)
<slide page="10/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

Enter: The Web

“what if we, like, organized our science information, but better?”
  – Tim Berners-Lee (1989) (paraphrased)

Photograph by Mike Peel (www.mikepeel.net), CC-BY-SA-4.0

<slide page="11/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

Traditions

first ever web server (CERN, 1990)        second vr lab domain controller (BUW, 2025)

Photograph by Mike Peel (www.mikepeel.net), CC-BY-SA-4.0

<slide page="12/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

Technology

HTML
http://
hypertext transfer protocol
<slide page="13/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

Hypertext

  • text that links to other text
  • not just text? → hypermedia
  • invented in 1965 by a man named Ted Nelson who stuck his hand in water on a boat and realized that it’d be cool if media was interconnected and not sequential (paraphrased)
  • foreshadowed in 1941 in a short story by an Argentine writer named Borges
<slide page="14/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

Hypertext (cont’d)

  • three clicks from my home page (~96k other sites)
<slide page="15/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

What is the Web, anyway?

The Web is a global, interconnected information system, consisting of many, many hypertext documents.

<slide page="16/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

Technology (cont’d)


CSS


  • This tells the browser what the document should look like
  • Can even be used for print documents
  • “Cascading” = more specific declarations have priority
  • CSS is a programming language (demonstrated by rebane et al.)
<slide page="17/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />













</infodump>
<slide page="18/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

Resources

<slide page="19/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

Dev Setup

you’ll need:

  1. a text editor (Vim, VS code, Notepad, Butterflies, …)
  2. a web browser
  3. optional but nice to have: automatic reloading
    • via some server, e.g., live-server:
      • install: npm i -g live-server, run: live-server
    • vs code has an extension for that:
<slide page="20/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

Let’s do something

  1. create a directory somewhere (on ur computer)
  2. create and open a file called index.html in there
  3. write something (i.e., anything) in there
  4. open in your browser (or in your text editor, or via live-server, …)

<slide page="21/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

Hello, Web!

<!DOCTYPE html>
<html>
    <head>
        <title>My site</title>
    </head>
    <body>
        <h1>Hello!</h1>
        <p>this is so cool!</p>
        <img src="https://http.cat/200"/>
    </body>
</html>

Hello!

this is so cool!

<slide page="22/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

<h1>HTML Things</h1>

<h2>Heading 2</h2>

<h3>Heading 3</h3>

<p> Paragraph with <b>bold</b>, <i>italic</i>, and <u>underlined</u> text </p>

<ul>

  • <li>list item</li>
  • <li>list item</li>

</ul>

<slide page="23/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

More HTML Things

  • Links: <a href="https://example.com">Link</a>
  • Images: <img src="https://http.cat/200"/>
  • Line break: <br/>
  • A span of text: <span>hello!</span>
  • The best HTML element: <marquee>The best HTML element</marquee>
    • big browser is deprecating this, so have fun with it while it lasts
  • comments: <!-- i am a comment -->
  • and many more
<slide page="24/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

I can hardly contain myself!

<div style="padding: 0.5em; background-color: lightblue">
    <div style="padding: 0.5em; background-color: pink">
        <div style="padding: 0.25em; background-color: white">
            <marquee>hello!</marquee>
        </div>
    </div>
</div>


hello!
<slide page="25/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

Style 😎

  • this is css:
p { background-color: red; }
  • p is the selector, selecting all <p> elements, and
  • background-color is a property…
  • …which is set to the value red
<slide page="26/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

Selectors

<p class="my-cool-class">hi</p>
<p id="my-cool-id">hi</p>
  • in CSS, we select things like this:
p { background-color: red; }
.my-cool-class { background-color: green; }
#my-cool-id { background-color: blue; }
<slide page="27/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

More Selector Stuff

  1. combinators
    • span.rainbow selects <span> with the rainbow class
    • p img selects all <img> that are (somewhere) inside a <p>
      • p > img only selects ones that are direct children
  2. pseudo-classes
    • a:hover selects all #foo that the user is hovering over
      • #link-pseudo-classes:hover {background-color: black; color: white}
  3. pseudo-elements
    • #bar:hover::before { content: "i am a link to " }
  4. attribute selectors

this is some crazy stuff, all w/o javascript!

<slide page="28/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

More Important things

  • You can set font-size, width, height, padding, margin, …
    • common units:
      • 1 em = size of the font
      • 1 px = 1 pixel
      • 1 vh (1 vw) = height (width) of the viewport
      • 0 (nothing)
      • % (relative to parent)
<slide page="29/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

Hosting

Legal disclaimer for when u put a website on the internet:

  • technically there is Impressumspflicht
    • (unless your website is only for u & ur friends? it’s complicated)
    • the same criteria also apply for things like youtube channels

Options (a very much non-exhaustive list):

<slide page="30/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

Uni Hosting

  • uni username: abcd1234
  • note: this is ancient stuff, btw!
    • unix, 70s: ~ became synonymous with home
    • ~abcd1234/ = /home/abcd1234/
    • people had home directories on the webserver
    • stuff goes in ~abcd1234/public_html/

Apache 1.3 Documentation, 2001

<slide page="31/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

Uni Hosting (how 2)

  1. grab some ftp client, e.g. FileZilla
  2. connect to uni vpn
  3. connect the ftp client:
    • host: webuser.uni-weimar.de
    • username: abcd1234
    • password: *******
  4. upload your html!

there’s also some more detailed documentation from SCC

<slide page="32/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

Neocities

  • neocities.org
  • goes back to GeoCities (‘94 – ‘09)
  • kinda community focused, webrings and stuff
  • also cool to just browse
  • <your-name-here>.neocities.org
<slide page="33/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

GitHub Pages

  • documentation
  • <your-name-here>.github.io
  • GitHub is owned by microsoftslop
    • then again, if it enshittifies too much, just take ur website somewhere else *shrug*
<slide page="34/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

enough of that.

<slide page="35/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />

Happy webseiten-basteln!!

slides online at: http://jakob.ruckel.de/slides/www-i/

<slide page="36/36" what="website-bastelstunde i" who="nyakob" when="08 jun '26" where="maschinenraum" />