feat: add hakken themes and schedule

This commit introduces the concept of a set schedule and themes for our
hakken.irl events. Themes for 2024 are proposed, together with short
descriptions.
pull/19/head
Benjamin Bädorf 2023-12-26 22:11:36 +01:00
parent 3c09203534
commit d06f9d1245
No known key found for this signature in database
GPG Key ID: 1B7BF5B77A521346
8 changed files with 474 additions and 152 deletions

155
_data/hakken.yml Normal file
View File

@ -0,0 +1,155 @@
dates:
- name: Winter 2024
theme: org-mode
location:
en: Berlin
de: Berlin
description:
en: |
This hakken will include our yearly general assembly. This is the perfect opportunity to get to know the internals of the organization, and to get involved!
de: |
Auf diesem hakken wir die Mitgliederversammlung stattfinden. Dies ist die perfekte Gelegenheit die Internalien der Organisation kennenzulernen, und mit zu machen!
extraSchedule:
- day: friday
time: '20:00'
id: cm
title:
en: Critical Mass
de: Critical Mass
- day: saturday
time: '14:00'
title:
en: General Assembly pub.solar n.e.V.
de: Mitgliederversammlung pub.solar n.e.V.
- name: Spring 2024
theme: Push for privacy
location:
en: Cologne @ [MiOM space](https://miom.space)
de: Köln @ [MiOM Kreativraum](https://miom.space)
description:
en: |
Let's push for more privacy! During this hakken we want to improve our datacollection and privacy policies however we can.
Ideas for projects:
* automate old account deletion
* thorougly analyze all the kinds of data we keep and how we can reduce this
* update our privacy policy
* seeing if we can get our hands on our own hardware
de: |
Lass für mehr Privatsphäre arbeiten! Dieses hakken wollen wir unseren Datenschutz verbessern und unsere Datensammlung verringern.
Ideen für Projekte:
* Löschen von alten Accounts automatisieren
* eine Analyse unserer Datenspeicherung erstellen; was speichern wir und wo? Können wir das reduzieren?
* unsere Datenschutzerklärung auffrischen
* schauen ob wir eigene Hardware kriegen könnten
- name: Summer 2024
theme: Hot CPU Summer
location:
en: Cologne @ [MiOM space](https://miom.space)
de: Köln @ [MiOM Kreativraum](https://miom.space)
description:
en: |
Summer is hot and will be getting hotter. CPUs are overheating in the new CO2 normal, can we do better?
Ideas for projects:
* Look for ways to reduce the pub.solar carbon footprint
* Create an open source bicycle computer
de: |
Der Sommer ist heiß und wird immer heißer werden. CPUs überhitzen in dem neuen CO2 normal, können wir da besser werden?
Ideas für Projekte:
* Mittel und Wege finden pub.solar nachhaltiger zu gestalten
* Einen open source Fahrradcomputer bauen
- name: Autumn 2024
theme: no theme yet
location:
en: Cologne @ [MiOM space](https://miom.space)
de: Köln @ [MiOM Kreativraum](https://miom.space)
description:
strings:
when:
en: 'When'
de: 'Wann'
where:
en: 'Where'
de: 'Wo'
comingDates:
en: 'The following dates are scheduled:'
de: 'Folgende Termine stehen an:'
friday:
en: 'friday'
de: 'Freitag'
saturday:
en: 'saturday'
de: 'Samstag'
sunday:
en: 'sunday'
de: 'Sonntag'
until:
en: 'until'
de: 'bis'
theme:
en: 'Theme'
de: 'Thema'
schedule:
en: 'Schedule'
de: 'Zeitplan'
months:
- en: 'January'
de: 'Januar'
- en: 'February'
de: 'Februar'
- en: 'March'
de: 'März'
- en: 'April'
de: 'April'
- en: 'May'
de: 'Mai'
- en: 'June'
de: 'Juni'
- en: 'July'
de: 'Juli'
- en: 'August'
de: 'August'
- en: 'September'
de: 'September'
- en: 'October'
de: 'Oktober'
- en: 'November'
de: 'November'
- en: 'December'
de: 'Dezember'
baseSchedule:
- day: friday
time: '13:12'
id: start
title:
en: Opening
de: Eröffnung
- day: friday
time: '17:30'
id: cm
title:
en: Critical Mass
de: Critical Mass
- day: sunday
time: '15:30'
id: wrapup
title:
en: Wrap-up get-together
de: Abschliessendes zusammenkommen
- day: sunday
time: '16:20'
id: end
title:
en: Official end
de: Offizielles Ende

View File

@ -1,4 +1,107 @@
export default ({ lang, className }) => <div
id={`dates-list-${lang}`}
className={`ps-hakken-dates ${className}`}
></div>;
import { md, mdi } from '../filters.ts';
const days = {
'friday': 0,
'saturday': 1,
'sunday': 2,
};
const day = 24 * 60 * 60 * 1000;
const week = 7 * day;
const endOfWeekend = 2 * day;
const getStartAndEnd = (date) => {
const [ version, year ] = date.name.split(' ');
const startingMonth = {
Winter: 1,
Spring: 4,
Summer: 7,
Autumn: 10,
}[version];
// We start searching on the 20th of that specific month
const d = new Date();
d.setFullYear(parseInt(year, 10));
d.setMonth(startingMonth - 1);
d.setDate(20);
for (let i = 0; i < 14; i++) {
const dateToTry = new Date(d.valueOf() + (i * day));
if (dateToTry.getDay() !== 5) {
continue;
}
const oneWeekLater = new Date(dateToTry.valueOf() + week);
if (dateToTry.getMonth() === oneWeekLater.getMonth()) {
continue;
}
return {
start: dateToTry,
end: new Date(dateToTry.valueOf() + endOfWeekend),
};
}
};
export default ({ data, lang, className }) => {
const strings = data.strings;
const dates = data.dates;
const t = (o) => o?.[lang] || '';
console.log(dates);
return <div
id={`dates-list-${lang}`}
className={`ps-hakken-dates ${className}`}
>
<p>{t(strings.comingDates)}</p>
<ul className="ps-hakken-dates--list">
{dates.map(date => {
const { start, end } = getStartAndEnd(date);
const showStartMonth = start.getMonth() !== end.getMonth();
const untilString = [
t(strings.friday),
start.getDate() + '.',
showStartMonth ? t(strings.months[start.getMonth()]) : null,
t(strings.until),
t(strings.sunday),
end.getDate() + '.',
t(strings.months[end.getMonth()]),
].filter(n => n !== null).join(' ');
const extraSchedule = date.extraSchedule || [];
const schedule = [
...data.baseSchedule.filter(bs => !extraSchedule.find(es => bs.id === es.id)),
...extraSchedule,
].sort((a, b) => {
const dayDiff = days[a.day] - days[b.day];
if (dayDiff !== 0) {
return dayDiff;
};
return a.time.localeCompare(b.time);
});
return <li className="ps-hakken-dates--item">
<h3>{date.name} [{date.theme}]</h3>
<div dangerouslySetInnerHTML={{ __html: md(t(date.description)) }}></div>
<p class="ps-hakken-dates--meta">
<span className="ps-hakken-dates--times">{t(strings.when)}: {untilString}.</span>
<span className="ps-hakken-dates--location">
{t(strings.where)}:{' '}
<span dangerouslySetInnerHTML={{ __html: mdi(t(date.location))}}></span>
</span>
</p>
<details className="ps-hakken-dates--schedule">
<summary>{t(strings.schedule)}</summary>
{schedule.map(entry => <div className="ps-hakken-dates--schedule-entry">
<h5>{t(strings[entry.day])}{' '}{entry.time}</h5>
<div dangerouslySetInnerHTML={{ __html: md(t(entry.title)) }}></div>
</div>)}
</details>
</li>;
})}
</ul>
</div>;
};

View File

@ -14,6 +14,7 @@ export default ({
cacheBust,
showHakkenDates,
hakken,
}) => <>
<html>
<Head
@ -48,7 +49,7 @@ export default ({
className="ps-page--section-contents"
></div>
{showHakkenDates ? <HakkenDates lang="en" className="ps-page--section-contents" /> : null}
{showHakkenDates ? <HakkenDates lang="en" className="ps-page--section-contents" data={hakken} /> : null}
</section>
<section
@ -69,7 +70,7 @@ export default ({
className="ps-page--section-contents"
></div>
{showHakkenDates ? <HakkenDates lang="de" className="ps-page--section-contents" /> : null}
{showHakkenDates ? <HakkenDates lang="de" className="ps-page--section-contents" data={hakken} /> : null}
</section>
</main>
</body>

View File

@ -1,4 +1,39 @@
.ps-hakken-dates {
margin: 5vw;
margin-top: 0;
&--list {
list-style: none;
padding: 0;
}
&--item {
border-left: 3px solid var(--accent);
padding-left: 1rem;
}
&--meta {
font-weight: bold;
}
&--times {
margin-right: 1rem;
}
&--schedule {
summary {
margin-bottom: 0.5rem;
}
}
&--schedule-entry {
display: flex;
align-items: center;
> * {
margin: 0;
margin-left: 0.5rem;
font-size: 1.4rem;
}
}
}

149
deno.lock
View File

@ -11,6 +11,7 @@
"npm:postcss-import@15.1.0": "npm:postcss-import@15.1.0_postcss@8.4.24",
"npm:postcss-nesting@11.3.0": "npm:postcss-nesting@11.3.0_postcss@8.4.24_postcss-selector-parser@6.0.13",
"npm:postcss@8.4.24": "npm:postcss@8.4.24",
"npm:react": "npm:react@18.2.0",
"npm:react-dom@18.2.0": "npm:react-dom@18.2.0_react@18.2.0",
"npm:react@18.2.0": "npm:react@18.2.0",
"npm:sass@1.63.6": "npm:sass@1.63.6",
@ -453,6 +454,19 @@
}
},
"remote": {
"https://deno.land/std@0.170.0/_util/asserts.ts": "d0844e9b62510f89ce1f9878b046f6a57bf88f208a10304aab50efcb48365272",
"https://deno.land/std@0.170.0/_util/os.ts": "8a33345f74990e627b9dfe2de9b040004b08ea5146c7c9e8fe9a29070d193934",
"https://deno.land/std@0.170.0/encoding/base64.ts": "8605e018e49211efc767686f6f687827d7f5fd5217163e981d8d693105640d7a",
"https://deno.land/std@0.170.0/fmt/colors.ts": "03ad95e543d2808bc43c17a3dd29d25b43d0f16287fe562a0be89bf632454a12",
"https://deno.land/std@0.170.0/path/_constants.ts": "df1db3ffa6dd6d1252cc9617e5d72165cd2483df90e93833e13580687b6083c3",
"https://deno.land/std@0.170.0/path/_interface.ts": "ee3b431a336b80cf445441109d089b70d87d5e248f4f90ff906820889ecf8d09",
"https://deno.land/std@0.170.0/path/_util.ts": "d16be2a16e1204b65f9d0dfc54a9bc472cafe5f4a190b3c8471ec2016ccd1677",
"https://deno.land/std@0.170.0/path/common.ts": "bee563630abd2d97f99d83c96c2fa0cca7cee103e8cb4e7699ec4d5db7bd2633",
"https://deno.land/std@0.170.0/path/glob.ts": "81cc6c72be002cd546c7a22d1f263f82f63f37fe0035d9726aa96fc8f6e4afa1",
"https://deno.land/std@0.170.0/path/mod.ts": "cf7cec7ac11b7048bb66af8ae03513e66595c279c65cfa12bfc07d9599608b78",
"https://deno.land/std@0.170.0/path/posix.ts": "b859684bc4d80edfd4cad0a82371b50c716330bed51143d6dcdbe59e6278b30c",
"https://deno.land/std@0.170.0/path/separator.ts": "fe1816cb765a8068afb3e8f13ad272351c85cbc739af56dacfc7d93d710fe0f9",
"https://deno.land/std@0.170.0/path/win32.ts": "7cebd2bda6657371adc00061a1d23fdd87bcdf64b4843bb148b0b24c11b40f69",
"https://deno.land/std@0.192.0/_util/asserts.ts": "178dfc49a464aee693a7e285567b3d0b555dc805ff490505a8aae34f9cfb1462",
"https://deno.land/std@0.192.0/_util/os.ts": "d932f56d41e4f6a6093d56044e29ce637f8dcc43c5a90af43504a889cf1775e3",
"https://deno.land/std@0.192.0/async/abortable.ts": "fd682fa46f3b7b16b4606a5ab52a7ce309434b76f820d3221bdfb862719a15d7",
@ -566,6 +580,88 @@
"https://deno.land/std@0.192.0/yaml/schema/mod.ts": "4472e827bab5025e92bc2eb2eeefa70ecbefc64b2799b765c69af84822efef32",
"https://deno.land/std@0.192.0/yaml/stringify.ts": "fffc09c65c68d3d63f8159e8cbaa3f489bc20a8e55b4fbb61a8c2e9f914d1d02",
"https://deno.land/std@0.192.0/yaml/type.ts": "1aabb8e0a3f4229ce0a3526256f68826d9bdf65a36c8a3890ead8011fcba7670",
"https://deno.land/x/cliffy@v0.25.7/_utils/distance.ts": "02af166952c7c358ac83beae397aa2fbca4ad630aecfcd38d92edb1ea429f004",
"https://deno.land/x/cliffy@v0.25.7/ansi/ansi.ts": "7f43d07d31dd7c24b721bb434c39cbb5132029fa4be3dd8938873065f65e5810",
"https://deno.land/x/cliffy@v0.25.7/ansi/ansi_escapes.ts": "885f61f343223f27b8ec69cc138a54bea30542924eacd0f290cd84edcf691387",
"https://deno.land/x/cliffy@v0.25.7/ansi/chain.ts": "31fb9fcbf72fed9f3eb9b9487270d2042ccd46a612d07dd5271b1a80ae2140a0",
"https://deno.land/x/cliffy@v0.25.7/ansi/colors.ts": "5f71993af5bd1aa0a795b15f41692d556d7c89584a601fed75997df844b832c9",
"https://deno.land/x/cliffy@v0.25.7/ansi/cursor_position.ts": "d537491e31d9c254b208277448eff92ff7f55978c4928dea363df92c0df0813f",
"https://deno.land/x/cliffy@v0.25.7/ansi/deps.ts": "0f35cb7e91868ce81561f6a77426ea8bc55dc15e13f84c7352f211023af79053",
"https://deno.land/x/cliffy@v0.25.7/ansi/mod.ts": "bb4e6588e6704949766205709463c8c33b30fec66c0b1846bc84a3db04a4e075",
"https://deno.land/x/cliffy@v0.25.7/ansi/tty.ts": "8fb064c17ead6cdf00c2d3bc87a9fd17b1167f2daa575c42b516f38bdb604673",
"https://deno.land/x/cliffy@v0.25.7/command/_errors.ts": "a9bd23dc816b32ec96c9b8f3057218241778d8c40333b43341138191450965e5",
"https://deno.land/x/cliffy@v0.25.7/command/_utils.ts": "9ab3d69fabab6c335b881b8a5229cbd5db0c68f630a1c307aff988b6396d9baf",
"https://deno.land/x/cliffy@v0.25.7/command/command.ts": "a2b83c612acd65c69116f70dec872f6da383699b83874b70fcf38cddf790443f",
"https://deno.land/x/cliffy@v0.25.7/command/completions/_bash_completions_generator.ts": "43b4abb543d4dc60233620d51e69d82d3b7c44e274e723681e0dce2a124f69f9",
"https://deno.land/x/cliffy@v0.25.7/command/completions/_fish_completions_generator.ts": "d0289985f5cf0bd288c05273bfa286b24c27feb40822eb7fd9d7fee64e6580e8",
"https://deno.land/x/cliffy@v0.25.7/command/completions/_zsh_completions_generator.ts": "14461eb274954fea4953ee75938821f721da7da607dc49bcc7db1e3f33a207bd",
"https://deno.land/x/cliffy@v0.25.7/command/completions/bash.ts": "053aa2006ec327ccecacb00ba28e5eb836300e5c1bec1b3cfaee9ddcf8189756",
"https://deno.land/x/cliffy@v0.25.7/command/completions/complete.ts": "58df61caa5e6220ff2768636a69337923ad9d4b8c1932aeb27165081c4d07d8b",
"https://deno.land/x/cliffy@v0.25.7/command/completions/fish.ts": "9938beaa6458c6cf9e2eeda46a09e8cd362d4f8c6c9efe87d3cd8ca7477402a5",
"https://deno.land/x/cliffy@v0.25.7/command/completions/mod.ts": "aeef7ec8e319bb157c39a4bab8030c9fe8fa327b4c1e94c9c1025077b45b40c0",
"https://deno.land/x/cliffy@v0.25.7/command/completions/zsh.ts": "8b04ab244a0b582f7927d405e17b38602428eeb347a9968a657e7ea9f40e721a",
"https://deno.land/x/cliffy@v0.25.7/command/deprecated.ts": "bbe6670f1d645b773d04b725b8b8e7814c862c9f1afba460c4d599ffe9d4983c",
"https://deno.land/x/cliffy@v0.25.7/command/deps.ts": "275b964ce173770bae65f6b8ebe9d2fd557dc10292cdd1ed3db1735f0d77fa1d",
"https://deno.land/x/cliffy@v0.25.7/command/help/_help_generator.ts": "f7c349cb2ddb737e70dc1f89bcb1943ca9017a53506be0d4138e0aadb9970a49",
"https://deno.land/x/cliffy@v0.25.7/command/help/mod.ts": "09d74d3eb42d21285407cda688074c29595d9c927b69aedf9d05ff3f215820d3",
"https://deno.land/x/cliffy@v0.25.7/command/mod.ts": "d0a32df6b14028e43bb2d41fa87d24bc00f9662a44e5a177b3db02f93e473209",
"https://deno.land/x/cliffy@v0.25.7/command/type.ts": "24e88e3085e1574662b856ccce70d589959648817135d4469fab67b9cce1b364",
"https://deno.land/x/cliffy@v0.25.7/command/types.ts": "ae02eec0ed7a769f7dba2dd5d3a931a61724b3021271b1b565cf189d9adfd4a0",
"https://deno.land/x/cliffy@v0.25.7/command/types/action_list.ts": "33c98d449617c7a563a535c9ceb3741bde9f6363353fd492f90a74570c611c27",
"https://deno.land/x/cliffy@v0.25.7/command/types/boolean.ts": "3879ec16092b4b5b1a0acb8675f8c9250c0b8a972e1e4c7adfba8335bd2263ed",
"https://deno.land/x/cliffy@v0.25.7/command/types/child_command.ts": "f1fca390c7fbfa7a713ca15ef55c2c7656bcbb394d50e8ef54085bdf6dc22559",
"https://deno.land/x/cliffy@v0.25.7/command/types/command.ts": "325d0382e383b725fd8d0ef34ebaeae082c5b76a1f6f2e843fee5dbb1a4fe3ac",
"https://deno.land/x/cliffy@v0.25.7/command/types/enum.ts": "2178345972adf7129a47e5f02856ca3e6852a91442a1c78307dffb8a6a3c6c9f",
"https://deno.land/x/cliffy@v0.25.7/command/types/file.ts": "8618f16ac9015c8589cbd946b3de1988cc4899b90ea251f3325c93c46745140e",
"https://deno.land/x/cliffy@v0.25.7/command/types/integer.ts": "29864725fd48738579d18123d7ee78fed37515e6dc62146c7544c98a82f1778d",
"https://deno.land/x/cliffy@v0.25.7/command/types/number.ts": "aeba96e6f470309317a16b308c82e0e4138a830ec79c9877e4622c682012bc1f",
"https://deno.land/x/cliffy@v0.25.7/command/types/string.ts": "e4dadb08a11795474871c7967beab954593813bb53d9f69ea5f9b734e43dc0e0",
"https://deno.land/x/cliffy@v0.25.7/command/upgrade/mod.ts": "17e2df3b620905583256684415e6c4a31e8de5c59066eb6d6c9c133919292dc4",
"https://deno.land/x/cliffy@v0.25.7/command/upgrade/provider.ts": "d6fb846043232cbd23c57d257100c7fc92274984d75a5fead0f3e4266dc76ab8",
"https://deno.land/x/cliffy@v0.25.7/command/upgrade/provider/deno_land.ts": "24f8d82e38c51e09be989f30f8ad21f9dd41ac1bb1973b443a13883e8ba06d6d",
"https://deno.land/x/cliffy@v0.25.7/command/upgrade/provider/github.ts": "99e1b133dd446c6aa79f69e69c46eb8bc1c968dd331c2a7d4064514a317c7b59",
"https://deno.land/x/cliffy@v0.25.7/command/upgrade/provider/nest_land.ts": "0e07936cea04fa41ac9297f32d87f39152ea873970c54cb5b4934b12fee1885e",
"https://deno.land/x/cliffy@v0.25.7/command/upgrade/upgrade_command.ts": "3640a287d914190241ea1e636774b1b4b0e1828fa75119971dd5304784061e05",
"https://deno.land/x/cliffy@v0.25.7/flags/_errors.ts": "f1fbb6bfa009e7950508c9d491cfb4a5551027d9f453389606adb3f2327d048f",
"https://deno.land/x/cliffy@v0.25.7/flags/_utils.ts": "340d3ecab43cde9489187e1f176504d2c58485df6652d1cdd907c0e9c3ce4cc2",
"https://deno.land/x/cliffy@v0.25.7/flags/_validate_flags.ts": "16eb5837986c6f6f7620817820161a78d66ce92d690e3697068726bbef067452",
"https://deno.land/x/cliffy@v0.25.7/flags/deprecated.ts": "a72a35de3cc7314e5ebea605ca23d08385b218ef171c32a3f135fb4318b08126",
"https://deno.land/x/cliffy@v0.25.7/flags/flags.ts": "68a9dfcacc4983a84c07ba19b66e5e9fccd04389fad215210c60fb414cc62576",
"https://deno.land/x/cliffy@v0.25.7/flags/mod.ts": "b21c2c135cd2437cc16245c5f168a626091631d6d4907ad10db61c96c93bdb25",
"https://deno.land/x/cliffy@v0.25.7/flags/types.ts": "7452ea5296758fb7af89930349ce40d8eb9a43b24b3f5759283e1cb5113075fd",
"https://deno.land/x/cliffy@v0.25.7/flags/types/boolean.ts": "4c026dd66ec9c5436860dc6d0241427bdb8d8e07337ad71b33c08193428a2236",
"https://deno.land/x/cliffy@v0.25.7/flags/types/integer.ts": "b60d4d590f309ddddf066782d43e4dc3799f0e7d08e5ede7dc62a5ee94b9a6d9",
"https://deno.land/x/cliffy@v0.25.7/flags/types/number.ts": "610936e2d29de7c8c304b65489a75ebae17b005c6122c24e791fbed12444d51e",
"https://deno.land/x/cliffy@v0.25.7/flags/types/string.ts": "e89b6a5ce322f65a894edecdc48b44956ec246a1d881f03e97bbda90dd8638c5",
"https://deno.land/x/cliffy@v0.25.7/keycode/key_code.ts": "c4ab0ffd102c2534962b765ded6d8d254631821bf568143d9352c1cdcf7a24be",
"https://deno.land/x/cliffy@v0.25.7/keycode/key_codes.ts": "917f0a2da0dbace08cf29bcfdaaa2257da9fe7e705fff8867d86ed69dfb08cfe",
"https://deno.land/x/cliffy@v0.25.7/keycode/mod.ts": "292d2f295316c6e0da6955042a7b31ab2968ff09f2300541d00f05ed6c2aa2d4",
"https://deno.land/x/cliffy@v0.25.7/mod.ts": "e3515ccf6bd4e4ac89322034e07e2332ed71901e4467ee5bc9d72851893e167b",
"https://deno.land/x/cliffy@v0.25.7/prompt/_generic_input.ts": "737cff2de02c8ce35250f5dd79c67b5fc176423191a2abd1f471a90dd725659e",
"https://deno.land/x/cliffy@v0.25.7/prompt/_generic_list.ts": "79b301bf09eb19f0d070d897f613f78d4e9f93100d7e9a26349ef0bfaa7408d2",
"https://deno.land/x/cliffy@v0.25.7/prompt/_generic_prompt.ts": "8630ce89a66d83e695922df41721cada52900b515385d86def597dea35971bb2",
"https://deno.land/x/cliffy@v0.25.7/prompt/_generic_suggestions.ts": "2a8b619f91e8f9a270811eff557f10f1343a444a527b5fc22c94de832939920c",
"https://deno.land/x/cliffy@v0.25.7/prompt/_utils.ts": "676cca30762656ed1a9bcb21a7254244278a23ffc591750e98a501644b6d2df3",
"https://deno.land/x/cliffy@v0.25.7/prompt/checkbox.ts": "e5a5a9adbb86835dffa2afbd23c6f7a8fe25a9d166485388ef25aba5dc3fbf9e",
"https://deno.land/x/cliffy@v0.25.7/prompt/confirm.ts": "94c8e55de3bbcd53732804420935c432eab29945497d1c47c357d236a89cb5f6",
"https://deno.land/x/cliffy@v0.25.7/prompt/deps.ts": "4c38ab18e55a792c9a136c1c29b2b6e21ea4820c45de7ef4cf517ce94012c57d",
"https://deno.land/x/cliffy@v0.25.7/prompt/figures.ts": "26af0fbfe21497220e4b887bb550fab997498cde14703b98e78faf370fbb4b94",
"https://deno.land/x/cliffy@v0.25.7/prompt/input.ts": "ee45532e0a30c2463e436e08ae291d79d1c2c40872e17364c96d2b97c279bf4d",
"https://deno.land/x/cliffy@v0.25.7/prompt/list.ts": "6780427ff2a932a48c9b882d173c64802081d6cdce9ff618d66ba6504b6abc50",
"https://deno.land/x/cliffy@v0.25.7/prompt/mod.ts": "195aed14d10d279914eaa28c696dec404d576ca424c097a5bc2b4a7a13b66c89",
"https://deno.land/x/cliffy@v0.25.7/prompt/number.ts": "015305a76b50138234dde4fd50eb886c6c7c0baa1b314caf811484644acdc2cf",
"https://deno.land/x/cliffy@v0.25.7/prompt/prompt.ts": "0e7f6a1d43475ee33fb25f7d50749b2f07fc0bcddd9579f3f9af12d05b4a4412",
"https://deno.land/x/cliffy@v0.25.7/prompt/secret.ts": "58745f5231fb2c44294c4acf2511f8c5bfddfa1e12f259580ff90dedea2703d6",
"https://deno.land/x/cliffy@v0.25.7/prompt/select.ts": "1e982eae85718e4e15a3ee10a5ae2233e532d7977d55888f3a309e8e3982b784",
"https://deno.land/x/cliffy@v0.25.7/prompt/toggle.ts": "842c3754a40732f2e80bcd4670098713e402e64bd930e6cab2b787f7ad4d931a",
"https://deno.land/x/cliffy@v0.25.7/table/border.ts": "2514abae4e4f51eda60a5f8c927ba24efd464a590027e900926b38f68e01253c",
"https://deno.land/x/cliffy@v0.25.7/table/cell.ts": "1d787d8006ac8302020d18ec39f8d7f1113612c20801b973e3839de9c3f8b7b3",
"https://deno.land/x/cliffy@v0.25.7/table/deps.ts": "5b05fa56c1a5e2af34f2103fd199e5f87f0507549963019563eae519271819d2",
"https://deno.land/x/cliffy@v0.25.7/table/layout.ts": "46bf10ae5430cf4fbb92f23d588230e9c6336edbdb154e5c9581290562b169f4",
"https://deno.land/x/cliffy@v0.25.7/table/mod.ts": "e74f69f38810ee6139a71132783765feb94436a6619c07474ada45b465189834",
"https://deno.land/x/cliffy@v0.25.7/table/row.ts": "5f519ba7488d2ef76cbbf50527f10f7957bfd668ce5b9169abbc44ec88302645",
"https://deno.land/x/cliffy@v0.25.7/table/table.ts": "ec204c9d08bb3ff1939c5ac7412a4c9ed7d00925d4fc92aff9bfe07bd269258d",
"https://deno.land/x/cliffy@v0.25.7/table/utils.ts": "187bb7dcbcfb16199a5d906113f584740901dfca1007400cba0df7dcd341bc29",
"https://deno.land/x/deno_dom@v0.1.38/build/deno-wasm/deno-wasm.js": "98b1ad24a1c13284557917659402202e5c5258ab1431b3f3a82434ad36ffa05a",
"https://deno.land/x/deno_dom@v0.1.38/deno-dom-wasm.ts": "bfd999a493a6974e9fca4d331bee03bfb68cfc600c662cd0b48b21d67a2a8ba0",
"https://deno.land/x/deno_dom@v0.1.38/src/api.ts": "0ff5790f0a3eeecb4e00b7d8fbfa319b165962cf6d0182a65ba90f158d74f7d7",
@ -672,6 +768,11 @@
"https://deno.land/x/imagemagick_deno@0.0.24/src/virtual-pixel-method.ts": "ae2f0520e05b382299e4d41f4d7e2c67baf727ef7c816037e601c978948b1451",
"https://deno.land/x/imagemagick_deno@0.0.24/src/wasm/magick.ts": "b5ec7d6c3c7379f8f9ba0c23238f7024aa35f3a15edb2d1cbca4ccc44a186ac9",
"https://deno.land/x/imagemagick_deno@0.0.24/src/wasm/magick_native.js": "ce63e9894f66443624d09f8d9524d3c985e4174d6848b0e0c77a09d5d5b4759e",
"https://deno.land/x/lume@v1.18.0/cli.ts": "0abaeb7a2fc59e1ec0f6742485a3df599e36263894cf622e3f606eb326e827bb",
"https://deno.land/x/lume@v1.18.0/cli/build.ts": "eda0271fc01685951c01961e19b5eca64f7fabfe6777a4caf670077a1481d44a",
"https://deno.land/x/lume@v1.18.0/cli/create.ts": "3b5ed82e4c81858b53f929502ab3dc7c3e2f63be80c1d41011bc566442bbb4e9",
"https://deno.land/x/lume@v1.18.0/cli/run.ts": "ee2813fe642f22f311f578ef0c6bc0f007e592f82be4d77d4c0b8923b8708d6c",
"https://deno.land/x/lume@v1.18.0/cli/upgrade.ts": "abb558253778b5fa75159eeeb69214fd1f51feabd1e9e12e8e9c1f5b934bf37d",
"https://deno.land/x/lume@v1.18.0/core.ts": "be7573baa55a0e34a0cbaf95405bcbeca95e2004d532b07052af51f466d6c143",
"https://deno.land/x/lume@v1.18.0/core/cache.ts": "6d770debcedbb7441c2a9d14096ed518907e6615e0d5d014b83d4f5be52a7b3a",
"https://deno.land/x/lume@v1.18.0/core/component_loader.ts": "b95db6b450fb71dc3fc0464e806515e4fde59a4d6341042e014b3199a2b3ac5d",
@ -699,6 +800,7 @@
"https://deno.land/x/lume@v1.18.0/core/watcher.ts": "be43625025dcedc68fcb2e2e4f63cceb2d3a82f6c1c13107518035e613726016",
"https://deno.land/x/lume@v1.18.0/core/writer.ts": "e5f3f1659900c2500f1f25870e98ad8207f236bf350f83aa99acd74c84cf6291",
"https://deno.land/x/lume@v1.18.0/deps/base64.ts": "bac5ee693f82fe967295ae98c6dcf4f1dfba6ae2f158057a1a94c8395cba549b",
"https://deno.land/x/lume@v1.18.0/deps/cliffy.ts": "faff0c2ca187ec9fd1ad8660141f85b9d05b5c36bab25b40eb5038c02590a310",
"https://deno.land/x/lume@v1.18.0/deps/colors.ts": "ae078b149896c2e6bf810938f7f812fc5adf6595d96c9864897fbe775de6041b",
"https://deno.land/x/lume@v1.18.0/deps/crypto.ts": "8b596129bf45a6f23887f2e28e8bb96f1ae9b28c34b4e1a33d229a4c293ba612",
"https://deno.land/x/lume@v1.18.0/deps/date.ts": "a9320999733700f106ddffa9b457e38e879cc86acfcd51a3d9bd2c6d847aef45",
@ -718,6 +820,11 @@
"https://deno.land/x/lume@v1.18.0/deps/sass.ts": "e5f149865d08ae6223cd4517c9a492a7fcd1771d62d5340e248569e2d8bf79f8",
"https://deno.land/x/lume@v1.18.0/deps/terser.ts": "0ba786fd4a31dfcf1e0bc4589836c5e7c89bb1a6fc2e9874251c280faf3cbd18",
"https://deno.land/x/lume@v1.18.0/deps/yaml.ts": "007f31d978072d721a3923a7d269c558811118a7e81c5499e90876ad8a124d72",
"https://deno.land/x/lume@v1.18.0/middlewares/logger.ts": "69e69099a2e3a8c62d0bb62014381337f6e855c6b330e210e4a705fe8111e10a",
"https://deno.land/x/lume@v1.18.0/middlewares/no_cache.ts": "95fb11d820d931b6aca268fa30aee22e315c556bd214e135bb9b5ddbcbe039d6",
"https://deno.land/x/lume@v1.18.0/middlewares/not_found.ts": "8a2b7d78d0dd4f441cee909682faac9387ca3b801f8e4ae0f6695a007313732e",
"https://deno.land/x/lume@v1.18.0/middlewares/reload.ts": "1162ee5fc3c7e1f6b5fb3da73a648fc71f0a64d30ca48f05ed066c8cb80adbb6",
"https://deno.land/x/lume@v1.18.0/middlewares/reload_client.js": "34d75e01503fae8180796de882af42b1125fac88f22a010a99d5548de1ba7d72",
"https://deno.land/x/lume@v1.18.0/mod.ts": "829abdd9fe45f04a6db27caa9e3bcc7f72b65c3810b67ad498582bc05b5e743d",
"https://deno.land/x/lume@v1.18.0/plugins/date.ts": "5b5b4a5715db86c39b4342366d3cc1e5ee67fd57d58acc0d0d793f90de4d53f6",
"https://deno.land/x/lume@v1.18.0/plugins/imagick.ts": "68fd0fee4f6ff26d0494b1792311ad84a863618d3d3e5af2701b99abceccd1be",
@ -735,6 +842,46 @@
"https://deno.land/x/lume@v1.18.0/plugins/terser.ts": "f7364724e7d1744f9155cb7b6c0c5673155fa834bf6b06d79ae9b1cda1f20005",
"https://deno.land/x/lume@v1.18.0/plugins/url.ts": "43d3d47896a7322a8dd34572dedb4baa6f73a382594a2ff7c34a3a064dcc6c9e",
"https://deno.land/x/lume@v1.18.0/plugins/utils.ts": "6435d164539d9e408e7e818b080cc1a96ff76ed3c376160577a7df751b57fa07",
"https://deno.land/x/lume@v1.18.0/plugins/yaml.ts": "df24aac4098dba258f1ac331a3b16ba488a336eb63c51afed8f59201228d583c"
"https://deno.land/x/lume@v1.18.0/plugins/yaml.ts": "df24aac4098dba258f1ac331a3b16ba488a336eb63c51afed8f59201228d583c",
"https://jspm.dev/markdown-it": "7fd1292527c2ed524afcc67abcd7ae4c26d2d0a468e98b1f0bd417ca217c9d9a",
"https://jspm.dev/npm:@jspm/core@2.0.1/_/0545670c.js": "468e254a0e5f7801333f217fcee046141186bd0a960018c893d73910bd754b71",
"https://jspm.dev/npm:@jspm/core@2.0.1/nodelibs/punycode": "de15b3b865f8196f62e2100731590c1d499cfffedef3d682861aff306b1f69dc",
"https://jspm.dev/npm:@jspm/core@2/nodelibs/punycode": "0ef16b3299b3928a3b26b7152c99a2bfa6a024189c9c62b769a81b7c931b25e0",
"https://jspm.dev/npm:entities@3.0.1/lib/maps/entities.json!cjs": "cc32e6ad7900d4f2b2f03a2ba983cec31e2a52f7cccac04ddb11e014b75a5842",
"https://jspm.dev/npm:entities@3.0/lib/maps/entities.json!cjs": "808f033fa7e69a2c341b3273d6ec8b5b794a6580ff0567d67d28d61878160c31",
"https://jspm.dev/npm:linkify-it@4!cjs": "2ba478ff45c86cc57f608274348cdd0ddf2e3107c6d28398e94f8b438fa47b47",
"https://jspm.dev/npm:linkify-it@4.0.1!cjs": "4260b67db5f69f3f5f4cdc6fe3c9ffc488bda8cf76637b54e1cec274f1e875b2",
"https://jspm.dev/npm:markdown-it@13.0.1/_/3a9a73fc.js": "e96843bf7f1e4e005c32702e51b7fe95b00f3865dc199c26c7973a63fc769d8d",
"https://jspm.dev/npm:markdown-it@13.0.1/lib!cjs": "3abc8797e2ce94c0b82e3f08e9968285232714382173f9059e58bd11f7fcfa82",
"https://jspm.dev/npm:markdown-it@13.0.1/lib/common/html_blocks!cjs": "443cd7d049a4c203c248677bc531d57ac480ed1f93d5a6e8beec06aa6675be01",
"https://jspm.dev/npm:markdown-it@13.0.1/lib/common/html_re!cjs": "34a455877b2b58b17fafa947fd8f2b859493dca65d430b4ff364cbea3a0ae1b8",
"https://jspm.dev/npm:markdown-it@13.0.1/lib/helpers/parse_link_destination!cjs": "ae2fbae800cd838d1060493878f7bb325c1f799731d58e14321f1da00236b9aa",
"https://jspm.dev/npm:markdown-it@13.0.1/lib/helpers/parse_link_label!cjs": "9b279c83b0d83d4eefbc44d3bf19c4f7a250f540c55bf5e4b85ef1801e05c852",
"https://jspm.dev/npm:markdown-it@13.0.1/lib/helpers/parse_link_title!cjs": "8bd5288ddac2c9d1111e5118ec6087363277687e83bcc957c298edf627a854a9",
"https://jspm.dev/npm:markdown-it@13.0.1/lib/presets/default!cjs": "546880ed70cb9d59113d36c5e243c74da796349dde43fb58c24c3e6492ae9a3a",
"https://jspm.dev/npm:markdown-it@13.0.1/lib/renderer!cjs": "6daff2c7771b3d62d474d192c836fe498dfc0914b18b6157ee060cc3e071c1c8",
"https://jspm.dev/npm:markdown-it@13.0.1/lib/rules_block/fence!cjs": "c75e26f66fe02bcd2a9873a7fc4c7dbfa36bd1703bab6ece4cb58d7ea9f587eb",
"https://jspm.dev/npm:markdown-it@13.0.1/lib/rules_block/state_block!cjs": "1b105f2265adb04ecf418a3d433769f524cd586d1cda76a2a8ecf0365e85462a",
"https://jspm.dev/npm:markdown-it@13.0.1/lib/rules_core/replacements!cjs": "e08f4c08d7375c6c6d7acffd671c566ed898cc74b6b744478dfeb0094e03d12a",
"https://jspm.dev/npm:markdown-it@13.0.1/lib/rules_core/smartquotes!cjs": "776938de2d38bc461ac8a36dbc8a9ce6dbe266465d4c218d537d580c379338e5",
"https://jspm.dev/npm:markdown-it@13.0.1/lib/rules_core/state_core!cjs": "74c572fb1720608480f313c9071f94920aba8cbd40d5b6444d9df034ca3f52ca",
"https://jspm.dev/npm:markdown-it@13.0.1/lib/rules_inline/state_inline!cjs": "515c90218dd6ebdd1edd4af7a5e6595e8787f0503fd4fe73a8f7a571172bb03c",
"https://jspm.dev/npm:markdown-it@13.0.1/lib/token!cjs": "b062e3122d946da2443fac66bc9cdd479898d85ac049ba5ceffb6bc6dbfb7e54",
"https://jspm.dev/npm:mdurl@1!cjs": "79d7e9befa635671886e663b8a295f79032a89da9c39a595b065cf36e953e6d4",
"https://jspm.dev/npm:mdurl@1.0.1!cjs": "7b55713117a89c7777130898abe12354d1e57a50cf5c3f704e21f493736e1b07",
"https://jspm.dev/npm:mdurl@1.0.1/decode!cjs": "c0d3880b8ad68820cc1eb74c438b2298df17d502f23906c90dd41658fbcd7659",
"https://jspm.dev/npm:mdurl@1.0.1/encode!cjs": "5f726382c9e0abacaf6a66f1a279ffb4285a9eda19094a62ff4b54925c381e32",
"https://jspm.dev/npm:mdurl@1.0.1/parse!cjs": "4d42ccc1191b4f78fafca4a37cffe01b9e49bf63e912f303b1133319d6a02fe4",
"https://jspm.dev/npm:uc.micro@1!cjs": "d1f95936ac3ec842fc714b183b9b48d947254e1444346b1cc47ddd9b52e16537",
"https://jspm.dev/npm:uc.micro@1.0.6!cjs": "7a8e688a06110b5b776dbfb75668c9ad541b15c45ca0f48980f99b0039fa6a92",
"https://jspm.dev/npm:uc.micro@1.0.6/categories/Cc/regex!cjs": "5d38e85df8a965f04ad3200f082741d0d946ec6006779c0b34be89b035dc742c",
"https://jspm.dev/npm:uc.micro@1.0.6/categories/Cf/regex!cjs": "3559322645cd5498059936ab622bfec1ad526340cae70f0b81c3a515335fc8f9",
"https://jspm.dev/npm:uc.micro@1.0.6/categories/P/regex!cjs": "1aa197d899ed79eba5d13ad6d5e3d71f5eb78d0af8527a3c16b771db382bd65d",
"https://jspm.dev/npm:uc.micro@1.0.6/categories/Z/regex!cjs": "8cd611ab13531ef42f483b7de5d3f920f2cd59e6f81d5784f8fe01062f2243e6",
"https://jspm.dev/npm:uc.micro@1.0.6/properties/Any/regex!cjs": "563fc432c9071c3902dc1ec804bcf82e21b0753b951b97c45cb28b469036277b",
"https://jspm.dev/npm:uc.micro@1/categories/Cc/regex!cjs": "82e4c2b20918b32106a354344c1c906e78a8834011dc2f0164fb2046ab5f25e9",
"https://jspm.dev/npm:uc.micro@1/categories/P/regex!cjs": "847ab064f5ba7659453a219c69d53973831cd2ae0027c533ee887ec14b4395dc",
"https://jspm.dev/npm:uc.micro@1/categories/Z/regex!cjs": "c65ea2fc5ad9aeef6a8dabdd0d174b83b439938059fa4b64cb3c09b837254fdd",
"https://jspm.dev/npm:uc.micro@1/properties/Any/regex!cjs": "e1656c86b86e5d59376e1b7305675171d4b69296afd6a685d9476a87534e1f9b"
}
}

View File

@ -27,5 +27,6 @@ const mdIt = new MarkdownIt({
});
export const md = (string) => mdIt.render(string);
export const mdi = (string) => mdIt.renderInline(string);
export const title = (value = '') => value + (value ? " | " : "") + "pub.solar";

View File

@ -3,28 +3,26 @@ layout: layouts/default.tsx
title: hakken.irl
showHakkenDates: true
extraScripts:
- /scripts/hakken-dates.js
content:
en: |
# hakken.irl
You're invited!
We meet (almost) every three months in Cologne for hakken.irl, a small three-day (Friday to Sunday) hackathon that's just about having fun and nerding around.
We meet (almost) every three months for hakken.irl, a small three-day (Friday to Sunday) hackathon that's just about having fun and nerding around.
## What will we be doing?
There is only one set agenda point: riding with Critical Mass. In general, we'll be hakking on pub.solar related stuff like [PubSolarOS](/os "PubSolarOS git repo") or [our Infra](https://git.pub.solar/pub-solar/infra "pub.solar infra repo").
There is only one set agenda point: riding with Critical Mass. In general, we'll be hakking on pub.solar related stuff like [our Infrastructure](https://git.pub.solar/pub-solar/infra "pub.solar infra repo").
Stuff we've done so far:
Examples include:
* [configured Matrix monitoring with Prometheus](https://git.pub.solar/pub-solar/infra/commit/c682a97746770121b419a9ad2c8c94688e5fa0f8),
* [refactored the core module of PubSolarOS](https://git.pub.solar/pub-solar/os/pulls/115),
* [started sway as a systemd service](https://git.pub.solar/pub-solar/os/commit/159ae86722bc706ff42d4d3e4b0f49ede2f253de),
* [added a "paranoid" option that always uses encrypted hibernation instead of sleep](https://git.pub.solar/pub-solar/os/pulls/74),
* [removed nonfree software from PubSolarOS](https://git.pub.solar/pub-solar/os/pulls/113),
* [updating the infrastructure nodes to NixOS 23.11](https://git.pub.solar/pub-solar/infra/pulls/74),
* [migrating our website to a new node](https://git.pub.solar/pub-solar/infra/pulls/20),
* [defining the default directory contents for new Nextcloud users](https://git.pub.solar/pub-solar/infra/pulls/73),
* [configuring nginx to serve Matrix vhosts](https://git.pub.solar/pub-solar/infra/pulls/33),
* creating digital animations,
* touching up photographs and making music,
* played Wizard, cards and board games,
* cooked, ordered, and ate together,
* and made fun of neoliberals.
@ -39,7 +37,7 @@ content:
## Where do I sleep?
If you cannot find an (affordable, cool, safe) place to stay in Cologne, then talk to us. We'll surely be able to set you up with a place to stay somewhere.
If you cannot find an (affordable, cool, safe) place to stay, then talk to us. We'll surely be able to set you up with a place to stay somewhere.
## Where do I sign up?
@ -47,7 +45,7 @@ content:
## When will this happen?
hakken.irl always starts on the last Friday of the month at 13:12 and ends on Sunday 16:20.
hakken.irl starts on the last Friday of the month at 13:12 and ends on Sunday 16:20.
We're meeting up every three months, typically on January, April, July and October.
@ -56,22 +54,23 @@ content:
Du bist eingeladen!
Wir treffen uns (fast) alle drei Monate in Köln zum hakken.irl, ein kleiner 3-Tägiger (Freitag bis Sonntag) Hackathon bei dem es nur darum geht Spaß zu haben und ab zu nerden.
Wir treffen uns (fast) alle drei Monate zum hakken.irl, ein kleiner 3-Tägiger (Freitag bis Sonntag) Hackathon bei dem es nur darum geht Spaß zu haben und ab zu nerden.
## Was machen wir denn so?
Es gibt nur einen festen Programmpunkt: bei der Critical Mass mitradeln. Tendenziell hakken wir danach an pub.solar relatierten sachen wie z.B. [PubSolarOS](/os "PubSolarOS git repo") oder [unsere Infra](https://git.pub.solar/pub-solar/infra "pub.solar infra repo").
Es gibt nur einen festen Programmpunkt: bei der Critical Mass mitradeln. Tendenziell hakken wir danach an pub.solar relatierten sachen wie [unsere Infrastruktur](https://git.pub.solar/pub-solar/infra "pub.solar infra repo").
Was wir bisher so gemacht haben:
Ein paar Beispiele:
* [Matrix monitoring per Prometheus konfiguriert](https://git.pub.solar/pub-solar/infra/commit/c682a97746770121b419a9ad2c8c94688e5fa0f8),
* [das core module in PubSolarOS gerefactored](https://git.pub.solar/pub-solar/os/pulls/115),
* [sway als systemd service starten](https://git.pub.solar/pub-solar/os/commit/159ae86722bc706ff42d4d3e4b0f49ede2f253de),
* [eine "paranoid" Option für PubSolarOS hinzugefügt, bei dem der PC immer in encrypted hibernation locked](https://git.pub.solar/pub-solar/os/pulls/74),
* [nonfree software aus PubSolarOS entfernt](https://git.pub.solar/pub-solar/os/pulls/113),
* Wizard, Karten und Brettspiele gespielt,
* zusammen gekocht, bestellt, und gegessen,
* und über die FDP her gezogen.
* [die Infrastruktur auf NixOS 23.11 heben](https://git.pub.solar/pub-solar/infra/pulls/74),
* [unsere website auf einen neuen Server umziehen](https://git.pub.solar/pub-solar/infra/pulls/20),
* [die Standardinhalte vom Nextcloud Verzeichnis für neue User definieren](https://git.pub.solar/pub-solar/infra/pulls/73),
* [nginx mit den Matrix vhosts konfigurieren](https://git.pub.solar/pub-solar/infra/pulls/33),
* digitale Animationen kreieren,
* Fotos bearbeiten und Musik machen,
* Wizard, Karten, und Brettspiele zocken,
* kochen, bestellen, und gemeinsam essen,
* und über die FDP herziehen.
## Ist das also nur für über-nerds?
@ -83,7 +82,7 @@ content:
## Wo schlafe ich?
Falls du keine (bezahlbare, coole, sichere) Übernachtungsmöglichkeit in Köln finden kannst, dann rede mit uns. Wir kriegen garantiert einen Schlafplatz organisiert.
Falls du keine (bezahlbare, coole, sichere) Übernachtungsmöglichkeit finden kannst, dann rede mit uns. Wir kriegen garantiert einen Schlafplatz organisiert.
## Wo melde ich mich an?
@ -91,6 +90,6 @@ content:
## Und wann soll das sein?
hakken.irl startet immer am letzten Freitag der Monats um 13:12 und geht bis Sonntag 16:20.
hakken.irl am letzten Freitag der Monats um 13:12 und geht bis Sonntag 16:20.
Wir treffen uns alle drei monate, üblicherweise im Januar, April, Juli und Oktober.

View File

@ -1,119 +0,0 @@
const skippedMonths = [
{ m: 8, y: 2022 },
{ m: 12, y: 2022 },
{ m: 4, y: 2023 },
{ m: 5, y: 2023, repeat: true },
{ m: 6, y: 2023, repeat: true },
{ m: 8, y: 2023, repeat: true },
{ m: 9, y: 2023, repeat: true },
{ m: 11, y: 2023, repeat: true },
{ m: 12, y: 2023, repeat: true },
{ m: 2, y: 2024, repeat: true },
{ m: 3, y: 2024, repeat: true },
];
const i18n = {
en: {
comingDates: 'The following dates are scheduled:',
friday: 'friday',
sunday: 'sunday',
until: 'until',
months: [
'Jan.',
'Feb.',
'Mar.',
'Apr.',
'May',
'Jun.',
'Jul.',
'Aug.',
'Sep.',
'Oct.',
'Nov.',
'Dec.',
],
},
de: {
comingDates: 'Folgende Termine stehen an:',
friday: 'Freitag',
sunday: 'Sonntag',
until: 'bis',
months: [
'Jan.',
'Feb.',
'Mär.',
'Apr.',
'Mai',
'Jun.',
'Jul.',
'Aug.',
'Sep.',
'Okt.',
'Nov.',
'Dez.',
],
},
};
const datesLists = {
en: document.getElementById('dates-list-en'),
de: document.getElementById('dates-list-de'),
};
const day = 24 * 60 * 60 * 1000;
const week = 7 * day;
const endOfWeekend = 2 * day;
const start = new Date();
const hakkens = [];
// We'll be looking about a year into the future
for (let i = 0; i < 366; i++) {
const dateToTry = new Date(start.valueOf() + (i * day));
if (dateToTry.getDay() !== 5) {
continue;
}
const oneWeekLater = new Date(dateToTry.valueOf() + week);
if (dateToTry.getMonth() === oneWeekLater.getMonth()) {
continue;
}
const m = dateToTry.getMonth() + 1;
const y = dateToTry.getFullYear();
if (skippedMonths.find((s) => s.m === m && s.y === y)) {
continue;
}
if (skippedMonths.find((s) => s.repeat && s.m === m && s.y <= y)) {
continue;
}
hakkens.push(dateToTry);
}
// Helper function to add leading zeros to dates
const d = (num) => ('0' + num).slice(-2);
const writeText = (lang) => {
const p = document.createElement('p');
p.innerHTML = i18n[lang].comingDates;
datesLists[lang].appendChild(p);
}
const writeDateList = (lang) => {
const ul = document.createElement('ul');
hakkens.forEach(hakken => {
hakkend = new Date(hakken.valueOf() + endOfWeekend);
const showFirstMonth = hakken.getMonth() !== hakkend.getMonth();
const li = document.createElement('li');
li.innerHTML = `
${i18n[lang].friday} ${d(hakken.getDate())}. ${showFirstMonth ? i18n[lang].months[hakken.getMonth()] : ''}
${i18n[lang].until}
${d(hakkend.getDate())}. ${i18n[lang].months[hakkend.getMonth()]}
`;
ul.appendChild(li);
});
datesLists[lang].appendChild(ul);
}
writeText('de');
writeText('en');
writeDateList('de');
writeDateList('en');