Compare commits

..

2 commits

Author SHA1 Message Date
Lyn Fugmann c32bbb3149 nerd101: hide livestream for now 2024-10-04 13:55:23 +02:00
Lyn Fugmann 1340f4a772 add nerd101 2024-10-04 13:54:40 +02:00
9 changed files with 247 additions and 8 deletions

View file

@ -1,3 +1,12 @@
html {
scroll-padding-top: 108px;
}
@media (width < 1024px) {
html {
scroll-padding-top: 84px;
}
}
header { header {
z-index: 1000; z-index: 1000;
display: flex; display: flex;

42
_includes/nerd101.css Normal file
View file

@ -0,0 +1,42 @@
table {
width: 100%;
background-color: #f5f5f5;
}
@media (width < 640px) {
table {
display: block;
overflow-x: scroll;
}
}
thead tr,
tbody tr:nth-of-type(even) {
background: #efefef;
}
tbody td {
vertical-align: top;
padding: 3px 6px;
}
p .icon,
td .icon {
height: 1.1em;
vertical-align: text-bottom;
fill: currentColor;
}
.annotation {
background-color: rgba(255, 139, 0, 0.06);
border: 1px solid #ff8b00;
border-radius: 3px;
width: fit-content;
padding: .5em 1em;
font-weight: 500;
}
.annotation .icon {
color: #ff8b00;
margin-right: .5em;
}

79
_includes/nerd101.njk Normal file
View file

@ -0,0 +1,79 @@
---
layout: page.njk
---
{{ content | safe }}
<section>
<h2>
{{ "Schedule" if lang == "en" else "Zeitplan" }}
</h2>
<p>
{% icon "solid:video", title="Livestream" %}
{% if lang == "en" %}
indicates, that the talk will be live streamed.
{% else %}
zeigt an, dass der Vortrag gestreamt wird.
{% endif %}
</p>
<table>
<thead>
<tr>
<th scope="column">{{ "Topic" if lang == "en" else "Thema" }}</th>
<th scope="column">{{ "Level" if lang == "en" else "Niveau" }}</th>
<th scope="column">{{ "Language" if lang == "en" else "Sprache" }}</th>
<th scope="column">{{ "Time" if lang == "en" else "Zeit" }}</th>
<th scope="column">{{ "Room" if lang == "en" else "Raum" }}</th>
</tr>
</thead>
<tbody>
{% for talk in nerd101.talks %}
<tr>
<td>
{% if talk.livestream %}
{% icon "solid:video", title="Livestream" %}
{% endif %}
<a href="#{{talk.title | localized | slugify}}">
{{ talk.title | localized }}
</a>
</td>
<td>{{ talk.level| localized }}</td>
<td>{{ talk.language | localized }}</td>
<td>{{ talk.start }}</td>
<td>
<a href="{{ nerd101.rooms[talk.room] }}" target="_blank" rel="noreferrer">
{{ talk.room }}
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</section>
<section>
<h2>
{{ "Descriptions" if lang == "en" else "Beschreibungen" }}
</h2>
{% for talk in nerd101.talks %}
<h3 id="{{ talk.title | localized | slugify }}">
{{ talk.title | localized }}
</h3>
<p>{{ talk.description | localized | mdInline | safe }}</p>
{% if talk.annotation %}
<p class="annotation">
{% icon "solid:exclamation", title=("Notice" if lang == "en" else "Hinweis") %}
{{ talk.annotation | localized | mdInline | safe }}
</p>
{% endif %}
{% endfor %}
</section>
{% css %}
{% include "nerd101.css" %}
{% endcss %}

View file

@ -114,6 +114,7 @@ a.btn:hover {
} }
:root { :root {
scroll-behavior: smooth;
font-size: 12px; font-size: 12px;
--page-width: 1280px; --page-width: 1280px;
--color-text: #495057; --color-text: #495057;

View file

@ -1,10 +1,6 @@
---js ---js
{ {
layout: "page.njk", layout: "page.njk",
getLocalized: function(item) {
if (typeof item === "string") return item;
return item[this.ctx.lang];
},
toDate: function(dateStr) { toDate: function(dateStr) {
return new Date(dateStr); return new Date(dateStr);
} }
@ -23,7 +19,7 @@
<div class="timeslot-container"> <div class="timeslot-container">
<h3 id="{{date}}_{{loop.index}}"> <h3 id="{{date}}_{{loop.index}}">
{% if event.livestream %}{% icon "solid:video", title="Livestream" %}{% endif %} {% if event.livestream %}{% icon "solid:video", title="Livestream" %}{% endif %}
{{ getLocalized(event.title) }} {{ event.title | localized }}
</h3> </h3>
<div class="timeslot-time"> <div class="timeslot-time">
@ -34,19 +30,19 @@
<span class="full">{{ event.start }}{{ " " + event.end if event.end }}</span> <span class="full">{{ event.start }}{{ " " + event.end if event.end }}</span>
</div> </div>
<p>{{ getLocalized(event.description) | mdInline | safe }}</p> <p>{{ event.description | localized | mdInline | safe }}</p>
{% if event.annotation %} {% if event.annotation %}
<p class="annotation"> <p class="annotation">
{% icon "solid:exclamation", title=("Notice" if lang == "en" else "Hinweis") %} {% icon "solid:exclamation", title=("Notice" if lang == "en" else "Hinweis") %}
{{ getLocalized(event.annotation) | mdInline | safe }} {{ event.annotation | localized | mdInline | safe }}
</p> </p>
{% endif %} {% endif %}
{% if event.location %} {% if event.location %}
<p class="location"> <p class="location">
{% icon "solid:location-dot", title=("Location" if lang == "en" else "Veranstaltungsort") %} {% icon "solid:location-dot", title=("Location" if lang == "en" else "Veranstaltungsort") %}
{{ getLocalized(event.location) | mdInline | safe }} {{ event.location | localized | mdInline | safe }}
</p> </p>
{% endif %} {% endif %}

View file

@ -0,0 +1,98 @@
rooms:
E009: https://navigator.tu-dresden.de/etplan/apb/00/raum/542100.2140
E010: https://navigator.tu-dresden.de/etplan/apb/00/raum/542100.2150
talks:
- title: Git
start: 12:00
room: E009
# livestream: true
level:
de: schonmal eine Konsole gesehen
en: have seen a console before
language:
de: Deutsch, Englisch auf Nachfrage
en: German, English on request
description:
de: programm3_neu.py oder programm3_temp_final.py? Und welche Version war nochmal die mit dem Bugfix? Solche und ähnliche Fragen wirst du dir als Informatikstudent früher oder später sicher stellen. Außer du nutzt Git!
en: program3_new.py or program3_temp_final.py? And which version was the one with the bugfix again? As a computer science student, you are bound to ask yourself these and similar questions sooner or later. Unless you use Git!
annotation:
de: Laptops erwünscht (erlauben ein direktes Ausprobieren)
en: A laptop is recommended (allows you to try things out directly)
- title: KI intuitiv erklärt
start: 12:00
room: E010
# livestream: true
level: keine Mathematik Vorkenntnisse notwendig
language: TBA
description: Nicht viele Dinge haben unseren Alltag so viel verändert wie die aktuellen Fortschritte im Bereich KI. Jeder von uns und ihre Mutter hat von Transformer Modellen wie ChatGPT gehört. Doch was macht du, um eine Maschine menschlich und intelligent zu machen? Hiermit lade ich dich ein auf ein Abenteuer in den Kern der Frage, was es eigentlich heißt zu lernen, und was wir tun um es einer Maschine zu ermöglichen.
- title: Smartphone Privacy Guide (iOS + Android)
start: 13:00
room: E009
level:
de: keine Vorkenntnisse
en: no prior knowledge
language:
de: Deutsch, Englisch auf Nachfrage
en: German, English on request
description:
de: Wenn du oft dein Smartphone nutzt und etwas gegen nervige Werbung und Tracking tun möchtest, dann komm vorbei. Wir zeigen dir Tools und Einstellungen, um deine Privatsphäre zu verbessern.
en: If you use your smartphone a lot and want to do something about annoying advertising and tracking, then come along. We'll show you tools and settings to improve your privacy.
annotation:
de: Smartphones erwünscht. iOS und Android möglich
en: Smartphones appreciated. iOS and Android possible
- title:
de: Open Source Lizenzen
en: Open Source Licenses
start: 14:00
room: E009
# livestream: true
level:
de: keine Vorkenntnisse
en: no prior knowledge
language:
de: Deutsch, Englisch auf Nachfrage
en: German, English on request
description:
de: Open Source wird heutzutage von jedem genutzt, jedoch braucht auch solche Software Lizenzen. Ob MIT, Apache 2 oder GPL 3, Lizenzen für Open Source gibt es mit vielen verschiedenen Bedingungen und Variationen. Was sie genau bedeuten und was man bei ihnen beachten muss erfahrt ihr in diesem Vortrag.
en: Open source is used by everyone these days, but even such software needs licenses. Whether MIT, Apache 2 or GPL 3, there are licenses for open source with many different conditions and variations. In this presentation, you will find out exactly what they mean and what you need to bear in mind.
- title: LaTeX
start: 14:00
room: E010
level:
de: keine Vorkenntnisse
en: no prior knowledge
language:
de: Deutsch, Englisch auf Nachfrage
en: German, English on request
description:
de: "LaTeX ist wie Word, nur besser. Ob ihr es für wissenschaftliche Arbeiten im Studium oder für viel abgefahrenere Sachen verwendet: Ihr werdet es brauchen."
en: "LaTeX is like Word, only better. Whether you use it for scientific papers in your studies or for much wackier things: You'll need it."
annotation:
de: Laptops empfohlen (sonst kein eigenes Ausprobieren)
en: Laptops recommended (otherwise no hands-on testing)
- title:
de: Reguläre Ausdrücke
en: Regular Expressions
start: 15:00
room: E009
# livestream: true
level:
de: keine Vorkenntnisse
en: no prior knowledge
language:
de: Deutsch, Englisch auf Nachfrage
en: German, English on request
description:
de: Wolltest du schon immer mal magische Zaubersprüche lernen, mit welchen du Text schnell und flexibel durchsuchen kannst? Falls ja besuche diesen Vortrag um mehr über eine der unleserlichsten Sprachen der Informatik zu erfahren.
en: Have you always wanted to learn magic spells that allow you to search text quickly and flexibly? If so, attend this talk to learn more about one of the most illegible languages in computer science.
annotation:
de: Laptops optional, ausprobieren geht auch mit Smartphone
en: Laptops optional, trying out with a smartphone is also possible
- title:
de: Nextbike API und advanced Support
en: Nextbike API and advanced support
start: 15:00
room: E010
level: TBA
language: TBA
description: TBA

4
content/de/nerd101.md Normal file
View file

@ -0,0 +1,4 @@
---
layout: nerd101.njk
---
# Nerd101

4
content/en/nerd101.md Normal file
View file

@ -0,0 +1,4 @@
---
layout: nerd101.njk
---
# Nerd101

View file

@ -100,6 +100,12 @@ module.exports = function(eleventyConfig) {
return value.filter(item => item.page.lang === this.page.lang) return value.filter(item => item.page.lang === this.page.lang)
}); });
// translations
eleventyConfig.addFilter("localized", function(item) {
if (typeof item === "string") return item;
return item[this.ctx.lang];
});
const md_link_open = function (tokens, idx, options, env, self) { const md_link_open = function (tokens, idx, options, env, self) {
const href = tokens[idx].attrGet('href'); const href = tokens[idx].attrGet('href');