From 803bd79dc80a48c83befcf879fc74440f5187d61 Mon Sep 17 00:00:00 2001 From: Markus Graf Date: Mon, 19 Jan 2026 16:43:58 +0100 Subject: [PATCH] feat: add bilingual blog post about digital media literacy for children MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add new blog post "Ein alter Laptop, Linux und Pi-hole: Digitale Medienkompetenz für Kinder" in German and English, covering setting up a child's first computer with Ubuntu and Pi-hole, open source philosophy, and the balance between protection and freedom. Also adds i18n support for localized month names in date formatting across blog templates. Co-Authored-By: Claude Opus 4.5 --- content/blog/ubuntu-for-kids/index.en.md | 66 ++++++++ content/blog/ubuntu-fuer-kinder/index.de.md | 66 ++++++++ i18n/de.yaml | 12 ++ i18n/en.yaml | 12 ++ layouts/blog/list.html | 2 +- layouts/blog/single.html | 2 +- layouts/index.html | 4 +- .../add-ubuntu-kids-article/proposal.md | 53 ++++++ .../specs/blog-content/spec.md | 151 ++++++++++++++++++ .../changes/add-ubuntu-kids-article/tasks.md | 38 +++++ 10 files changed, 402 insertions(+), 4 deletions(-) create mode 100644 content/blog/ubuntu-for-kids/index.en.md create mode 100644 content/blog/ubuntu-fuer-kinder/index.de.md create mode 100644 i18n/de.yaml create mode 100644 i18n/en.yaml create mode 100644 openspec/changes/add-ubuntu-kids-article/proposal.md create mode 100644 openspec/changes/add-ubuntu-kids-article/specs/blog-content/spec.md create mode 100644 openspec/changes/add-ubuntu-kids-article/tasks.md diff --git a/content/blog/ubuntu-for-kids/index.en.md b/content/blog/ubuntu-for-kids/index.en.md new file mode 100644 index 0000000..18900f9 --- /dev/null +++ b/content/blog/ubuntu-for-kids/index.en.md @@ -0,0 +1,66 @@ +--- +title: "An Old Laptop, Linux, and Pi-hole: Digital Media Literacy for Kids" +date: 2026-01-19 +description: "How a refurbished laptop with Ubuntu and Pi-hole becomes a child's first computer - a reflection on open source, control vs. freedom, and digital accompaniment." +translationKey: "ubuntu-fuer-kinder-post" +--- + +**TL;DR:** A refurbished laptop with Ubuntu and Pi-hole as my child's first computer. Linux shows that there are alternatives to big tech corporations. But the real challenge isn't the technology, it's the accompaniment: cyberbullying, doom-scrolling, AI-generated content. My approach: accompany rather than control. + +## The Trigger + +When my child received login credentials for various digital learning tools from school, the moment came sooner than expected: it was time for their first own computer. + +Until then, we had a family tablet that we occasionally used for learning tools or listening to stories. I tried to limit its use – but I quickly became overwhelmed and lost track of the various settings and options, so I left it open. But then what? + +## The Technical Solution + +My answer: A refurbished second-hand laptop with Ubuntu 24.04, protected by Pi-hole. For those unfamiliar with these terms: Ubuntu is a free, open-source operating system – an alternative to Windows or macOS. Pi-hole is a network tool that acts as a DNS filter, blocking unwanted content, trackers, and ads at the network level by not resolving the names of unwanted servers in the first place. This keeps at least the roughest unsafe parts of the internet at bay. + +### Why Linux? + +The choice of Linux is deliberate. I'm a big fan of freely accessible information and open source. We live in a time when dependence on large technology corporations and proprietary software is becoming ever more pronounced. Subscription models and software-as-a-service in the cloud increasingly push users into dependency and surveillance. It's a scenario that's almost heading toward cyberpunk – and perhaps won't be science fiction for much longer. + +I want to show my child an alternative. With Linux, they learn that there are choices. That you don't have to rely on the systems of big corporations. That technology can also mean independence, assertiveness, and even rebellion. They should understand that they can control technology – and not the other way around. + +Why go to all this effort? Because I didn't want to simply give them a computer with unlimited internet access. At the same time, I want to gradually introduce them to the digital world – teach them programming, or rather the analytical thinking behind it. And show them that there are alternatives to the predetermined paths. + +## The Dilemma + +Of course, the key is to accompany the child, just like with homework. But soon comes the interest in everything else you can do with a computer. Always sitting nearby, especially when it's not for school, takes a lot of time. + +Another solution is naturally to regulate the operating system and access so that they can only do what I determine. But this is a very naive approach. Ultimately, children quickly learn to circumvent such tools. And honestly, I believe: if they manage to do that, they're also mature enough to take on more control themselves. Circumventing restrictions is itself a form of learning – it demonstrates technical understanding and problem-solving skills. + +It's a balancing act between protection and freedom, between control and trust. + +## The Bigger Questions + +In today's world, children no longer need to be shown how to use an electronic device – but there are entirely different challenges: + +- **Cyberbullying** – digital violence among children +- **Sexting and cyber-grooming** – dangers from strangers online +- **Doom-scrolling** – the pull of endless feeds +- **Information verification** – what's true, what's fabricated? +- **AI-generated content** – in the AI age, distinguishing between real and artificial becomes even harder + +The list is long. The challenges are real. And they're not getting fewer. + +Worse still: many adults have less media literacy than their offspring. They're not aware of the consequences – and become victims themselves. How are we supposed to teach our children to protect themselves when we ourselves willingly hand over our data to corporations every day, fall for phishing emails, or don't understand how algorithms manipulate us? + +## My Approach: Accompanying Rather Than Controlling + +My goal is not to protect my child from everything or to control every step. My goal is to accompany them. I want to foster curiosity in working with computers and help them find their own way to deal with the challenges. + +Learning to program doesn't just mean writing code – it means breaking down problems, thinking logically, being creative. It means understanding how the digital tools that shape our daily lives work. And those who understand how something works can better assess where dangers lurk. + +The old laptop with Linux and Pi-hole is a beginning for me. A protected playground where they can take their first steps. But it's just a tool. The most important thing is that I'm there – not as a supervisor, but as a companion. + +## Open Questions + +Despite all these considerations, many questions remain open: + +- When is a child truly ready for social media? Which ones and what? +- How much protection is too much, how much freedom too early? +- How do you prepare children for technologies that change faster than we can understand them? + +I don't have definitive answers. But I believe that dialogue is important – with your child, with the school, with other parents. And that we as parents don't have to be perfect, but present. diff --git a/content/blog/ubuntu-fuer-kinder/index.de.md b/content/blog/ubuntu-fuer-kinder/index.de.md new file mode 100644 index 0000000..bbaee51 --- /dev/null +++ b/content/blog/ubuntu-fuer-kinder/index.de.md @@ -0,0 +1,66 @@ +--- +title: "Ein alter Laptop, Linux und Pi-hole: Digitale Medienkompetenz für Kinder" +date: 2026-01-19 +description: "Wie ein restaurierter Laptop mit Ubuntu und Pi-hole zum ersten Computer eines Kindes wird - eine Reflexion über Open Source, Kontrolle vs. Freiheit und digitale Begleitung." +translationKey: "ubuntu-fuer-kinder-post" +--- + +**TL;DR:** Ein restaurierter Laptop mit Ubuntu und Pi-hole als erster Computer für mein Kind. Linux zeigt, dass es Alternativen zu den grossen Konzernen gibt. Aber die eigentliche Herausforderung ist nicht die Technik, sondern die Begleitung: Cybermobbing, Doom-Scrolling, KI-generierte Inhalte. Mein Ansatz: Begleiten statt kontrollieren. + +## Der Anlass + +Als mein Kind von der Schule Zugangsdaten für verschiedene digitale Lerntools bekam, kam der Moment schneller als erwartet: Es war Zeit für den ersten eigenen Computer. + +Bisher hatten wir ein Familientablett, das wir gelegentlich für Lerntools oder zum Geschichten hören nutzten. Ich versuchte, dessen Nutzung einzuschränken – doch schnell war ich selbst überfordert und verlor den Überblick über die verschiedenen Einstellungen und Möglichkeiten, so dass ich es offen liess. Aber was dann? + +## Die technische Lösung + +Meine Antwort: Ein restaurierter Occasions-Laptop mit Ubuntu 24.04, geschützt durch ein Pi-hole. Für alle, die mit diesen Begriffen nichts anfangen können: Ubuntu ist ein freies, quelloffenes Betriebssystem – eine Alternative zu Windows oder macOS. Pi-hole ist ein Netzwerk-Tool, das als DNS-Filter fungiert und unerwünschte Inhalte, Tracker und Werbung bereits auf Netzwerkebene blockiert, indem der Name unerwünschter Server gar nicht erst aufgelöst wird. So bleibt zumindest der gröbste unsichere Teil des Internets fern. + +### Warum Linux? + +Die Wahl für Linux ist bewusst. Ich bin ein grosser Fan von frei zugänglichen Informationen und Open Source. Wir leben in einer Zeit, in der sich die Abhängigkeit von grossen Technologiekonzernen und proprietärer Software immer weiter akzentuiert. Abo-Modelle und Software-as-a-Service in der Cloud drängen Nutzer zunehmend in Abhängigkeit und Überwachung. Es ist ein Szenario, das schon fast in Richtung Cyberpunk geht – und das vielleicht bald nicht mehr Science-Fiction ist. + +Ich möchte meinem Kind eine Alternative zeigen. Mit Linux lernt es, dass es Wahlmöglichkeiten gibt. Dass man nicht auf die Systeme der Grosskonzerne angewiesen ist. Dass Technologie auch Unabhängigkeit, Durchsetzungsvermögen und sogar Rebellion bedeuten kann. Es soll verstehen, dass es Technologie kontrollieren kann – und nicht umgekehrt. + +Warum dieser Aufwand? Weil ich nicht einfach einen Computer mit unbegrenztem Internetzugang geben wollte. Gleichzeitig möchte ich es langsam ans Digitale heranführen – das Programmieren beibringen, beziehungsweise das analytische Denken dahinter. Und zeigen, dass es Alternativen zu den vorgegebenen Pfaden gibt. + +## Das Dilemma + +Klar, das A und O ist, das Kind zu begleiten, so wie bei den Hausaufgaben. Aber schnell kommt dann das Interesse an allem anderen, was man mit dem Computer machen kann. Immer nebenbei zu sitzen, insbesondere wenn es nicht für die Schule ist, kostet viel Zeit. + +Eine andere Lösung ist natürlich, das Betriebssystem und die Zugänge so zu reglementieren, dass es nichts anderes machen kann als von mir bestimmt. Dies ist aber eine sehr naive Herangehensweise. Letztlich lernen Kinder schnell, solche Werkzeuge zu umgehen. Und ehrlich gesagt glaube ich: Wenn sie das schaffen, sind sie auch reif dafür, selbst mehr Kontrolle zu übernehmen. Das Umgehen von Beschränkungen ist ja selbst schon eine Form von Lernen – es zeigt technisches Verständnis und Problemlösungskompetenz. + +Es ist ein Balanceakt zwischen Schutz und Freiheit, zwischen Kontrolle und Vertrauen. + +## Die grösseren Fragen + +In der heutigen Welt muss Kindern zwar nicht mehr gezeigt werden, wie ein elektronisches Gerät zu bedienen ist – aber es gibt ganz andere Herausforderungen: + +- **Cybermobbing** – digitale Gewalt unter Kindern +- **Sexting und Cyber-Grooming** – Gefahren durch Fremde im Netz +- **Doom-Scrolling** – der Sog endloser Feeds +- **Verifikation von Informationen** – was ist wahr, was ist erfunden? +- **KI-generierte Inhalte** – im KI-Zeitalter wird die Unterscheidung zwischen echt und künstlich noch schwieriger + +Die Liste ist lang. Die Herausforderungen sind real. Und sie werden nicht weniger. + +Schlimmer noch: Viele Erwachsene haben weniger Medienkompetenz als ihre Sprösslinge. Sie sind sich der Konsequenzen nicht bewusst – und werden selbst zu Opfern. Wie sollen wir unseren Kindern beibringen, sich zu schützen, wenn wir selbst jeden Tag unsere Daten bereitwillig in die Hände von Konzernen legen, auf Phishing-Mails hereinfallen oder nicht verstehen, wie Algorithmen uns manipulieren? + +## Mein Ansatz: Begleiten statt kontrollieren + +Mein Ziel ist nicht, mein Kind vor allem zu schützen oder jeden Schritt zu kontrollieren. Mein Ziel ist, es zu begleiten. Ich möchte die Neugier am Umgang mit Computern fördern und helfen, selbst einen Weg zu finden, mit den Herausforderungen umzugehen. + +Programmieren lernen heisst nicht nur Code schreiben – es heisst, Probleme zu zerlegen, logisch zu denken, kreativ zu werden. Es heisst, zu verstehen, wie die digitalen Werkzeuge funktionieren, die unseren Alltag prägen. Und wer versteht, wie etwas funktioniert, kann auch besser einschätzen, wo Gefahren lauern. + +Der alte Laptop mit Linux und Pi-hole ist für mich ein Anfang. Ein geschützter Spielplatz, auf dem es erste Schritte machen kann. Aber es ist nur ein Werkzeug. Das Wichtigste ist, dass ich da bin – nicht als Aufseher, sondern als Begleiter. + +## Offene Fragen + +Trotz aller Überlegungen bleiben viele Fragen offen: + +- Ab wann ist ein Kind wirklich bereit für soziale Medien? Welche und was? +- Wie viel Schutz ist zu viel, wie viel Freiheit zu früh? +- Wie bereitet man Kinder auf Technologien vor, die sich schneller verändern, als wir sie verstehen können? + +Ich habe keine endgültigen Antworten. Aber ich glaube, dass der Dialog wichtig ist – mit seinem Kind, mit der Schule, mit anderen Eltern. Und dass wir als Eltern nicht perfekt sein müssen, sondern präsent. diff --git a/i18n/de.yaml b/i18n/de.yaml new file mode 100644 index 0000000..9f29305 --- /dev/null +++ b/i18n/de.yaml @@ -0,0 +1,12 @@ +month_1: "Januar" +month_2: "Februar" +month_3: "März" +month_4: "April" +month_5: "Mai" +month_6: "Juni" +month_7: "Juli" +month_8: "August" +month_9: "September" +month_10: "Oktober" +month_11: "November" +month_12: "Dezember" diff --git a/i18n/en.yaml b/i18n/en.yaml new file mode 100644 index 0000000..59a7454 --- /dev/null +++ b/i18n/en.yaml @@ -0,0 +1,12 @@ +month_1: "January" +month_2: "February" +month_3: "March" +month_4: "April" +month_5: "May" +month_6: "June" +month_7: "July" +month_8: "August" +month_9: "September" +month_10: "October" +month_11: "November" +month_12: "December" diff --git a/layouts/blog/list.html b/layouts/blog/list.html index c969fce..6b1ced2 100644 --- a/layouts/blog/list.html +++ b/layouts/blog/list.html @@ -17,7 +17,7 @@ {{ .Title }} diff --git a/layouts/blog/single.html b/layouts/blog/single.html index b7d11ac..cf118d2 100644 --- a/layouts/blog/single.html +++ b/layouts/blog/single.html @@ -7,7 +7,7 @@
diff --git a/layouts/index.html b/layouts/index.html index efdca7d..3f17a97 100644 --- a/layouts/index.html +++ b/layouts/index.html @@ -31,9 +31,9 @@
diff --git a/openspec/changes/add-ubuntu-kids-article/proposal.md b/openspec/changes/add-ubuntu-kids-article/proposal.md new file mode 100644 index 0000000..3fc03a6 --- /dev/null +++ b/openspec/changes/add-ubuntu-kids-article/proposal.md @@ -0,0 +1,53 @@ +# Proposal: Add Ubuntu for Kids Blog Post + +## Context + +Create a new bilingual blog post based on Notion content about setting up a child's first computer with Ubuntu and Pi-hole. The post reflects on digital media literacy, open source philosophy, and finding the balance between protection and freedom in the digital age. + +## Motivation + +This blog post: +- Shares a practical approach to introducing children to computers with Linux +- Explores the philosophical aspects of open source vs. proprietary software +- Addresses real parenting challenges around digital media literacy +- Discusses cyberbullying, doom-scrolling, AI content verification, and other modern challenges +- Provides both German and English versions for broader reach + +## Scope + +### In Scope +- Create new blog post page bundle with German directory `content/blog/ubuntu-fuer-kinder/` +- Create new blog post page bundle with English directory `content/blog/ubuntu-for-kids/` +- German version (original from Notion) +- English version (translated) +- Proper frontmatter with title, date, description, translationKey +- All formatting and structure preserved +- Validation that post renders correctly in Hugo + +### Out of Scope +- No changes to existing blog posts +- No template or layout modifications +- No Hugo configuration changes +- No new images or assets + +## Dependencies + +None. This is a new content addition that doesn't affect existing functionality. + +## Risks + +Low risk. Adding new content only, no structural changes. + +## Success Criteria + +- Blog post exists in both German and English with translated URL slugs +- Content accurately reflects Notion source +- English translation is natural and maintains meaning +- Hugo builds successfully +- Post displays correctly in both languages +- Language switcher works between versions +- OpenSpec validation passes + +## Related Changes + +Similar to 2025-11-25-add-dialogbasierte-anwendungen-post. diff --git a/openspec/changes/add-ubuntu-kids-article/specs/blog-content/spec.md b/openspec/changes/add-ubuntu-kids-article/specs/blog-content/spec.md new file mode 100644 index 0000000..faa584b --- /dev/null +++ b/openspec/changes/add-ubuntu-kids-article/specs/blog-content/spec.md @@ -0,0 +1,151 @@ +# Spec: Blog Post - Ubuntu for Kids + +## Overview + +Specification for the bilingual blog post about setting up a child's first computer with Ubuntu and Pi-hole. Uses translated URL slugs with separate directories linked via translationKey. + +## ADDED Requirements + +### Requirement: Blog post directory structure with translated slugs + +The blog post MUST exist in separate directories for German and English with appropriate URL slugs. + +**Rationale**: Using translated slugs provides better SEO and user experience, with language-appropriate URLs. + +#### Scenario: Directories created with translated slugs + +**Given** the Hugo content directory structure +**When** creating the new blog post +**Then** a directory `content/blog/ubuntu-fuer-kinder/` must exist for German +**And** a directory `content/blog/ubuntu-for-kids/` must exist for English +**And** German directory must contain `index.de.md` +**And** English directory must contain `index.en.md` +**And** both files must include `translationKey: "ubuntu-fuer-kinder-post"` in frontmatter + +--- + +### Requirement: German blog post content + +The German version MUST accurately represent the Notion source content. + +**Rationale**: Preserve the original German text exactly as written by the author. + +#### Scenario: German content matches Notion source + +**Given** the Notion page content at https://www.notion.so/a46ea17cfebb45f6bb0c1d4d516a5d66 +**When** creating the German blog post file +**Then** the content must match the Notion source text +**And** all formatting (headings, lists, emphasis) must be preserved +**And** all sections must be included (TL;DR, technical solution, Linux philosophy, etc.) + +#### Scenario: German frontmatter is correct + +**Given** the blog post requirements +**When** creating the German blog post +**Then** the frontmatter must use YAML format (three dashes) +**And** must include `title: "Ein alter Laptop, Linux und Pi-hole: Digitale Medienkompetenz fuer Kinder"` +**And** must include `date: 2026-01-19` +**And** must include `translationKey: "ubuntu-fuer-kinder-post"` +**And** must include a `description` field with appropriate summary text +**And** must be valid YAML syntax + +--- + +### Requirement: English blog post translation + +The English version MUST be a natural, accurate translation of the German content. + +**Rationale**: Make the content accessible to English-speaking readers while maintaining technical accuracy and readability. + +#### Scenario: English translation is natural and accurate + +**Given** the German blog post content +**When** creating the English translation +**Then** the translation must convey the same meaning as the German original +**And** must use natural English phrasing and idioms +**And** must maintain technical accuracy for all concepts (Ubuntu, Pi-hole, DNS) +**And** must preserve the same structure (sections, lists) + +#### Scenario: English frontmatter is correct + +**Given** the blog post requirements +**When** creating the English blog post +**Then** the frontmatter must use YAML format (three dashes) +**And** must include `title` with natural English translation +**And** must include `date: 2026-01-19` (same as German) +**And** must include `translationKey: "ubuntu-fuer-kinder-post"` +**And** must include a `description` field with English summary +**And** must be valid YAML syntax + +--- + +### Requirement: Content sections + +Both versions MUST include all main content sections from the source. + +**Rationale**: Preserve the complete narrative and arguments of the original post. + +#### Scenario: All sections are present + +**Given** the blog post content +**When** creating the blog post files +**Then** must include a TL;DR summary section +**And** must include "Die technische Loesung" / "The Technical Solution" section +**And** must include "Warum Linux?" / "Why Linux?" section +**And** must include "Das Dilemma" / "The Dilemma" section +**And** must include "Die groesseren Fragen" / "The Bigger Questions" section +**And** must include "Mein Ansatz" / "My Approach" section +**And** must include "Offene Fragen" / "Open Questions" section + +--- + +### Requirement: Hugo build compatibility + +The blog posts MUST build successfully with Hugo and render correctly. + +**Rationale**: Ensure the content integrates properly with the existing Hugo site. + +#### Scenario: Hugo builds successfully + +**Given** the new blog post files +**When** running `hugo build` +**Then** the build must complete without errors +**And** no warnings related to the new blog post must be generated + +#### Scenario: Blog posts are accessible at correct translated URLs + +**Given** a successful Hugo build +**When** viewing the site +**Then** the German version must be accessible at `/de/blog/ubuntu-fuer-kinder/` +**And** the English version must be accessible at `/en/blog/ubuntu-for-kids/` + +#### Scenario: Blog posts appear in blog listings + +**Given** a successful Hugo build +**When** viewing the blog index pages +**Then** the new post must appear in the German blog listing at `/de/blog/` +**And** the new post must appear in the English blog listing at `/en/blog/` +**And** the post must display with correct title and description + +#### Scenario: Language switcher works correctly + +**Given** both language versions with matching translationKey +**When** viewing either version of the blog post +**Then** the language switcher must link to the corresponding translation +**And** switching from German to English must navigate to `/en/blog/ubuntu-for-kids/` +**And** switching from English to German must navigate to `/de/blog/ubuntu-fuer-kinder/` + +--- + +### Requirement: Content validation + +The implementation MUST pass OpenSpec validation. + +**Rationale**: Ensure compliance with project standards and specification requirements. + +#### Scenario: OpenSpec validation passes + +**Given** the completed implementation +**When** running `openspec validate add-ubuntu-kids-article --strict` +**Then** validation must pass with no errors +**And** no warnings should be generated diff --git a/openspec/changes/add-ubuntu-kids-article/tasks.md b/openspec/changes/add-ubuntu-kids-article/tasks.md new file mode 100644 index 0000000..1e44c6d --- /dev/null +++ b/openspec/changes/add-ubuntu-kids-article/tasks.md @@ -0,0 +1,38 @@ +# Tasks: Add Ubuntu for Kids Blog Post + +## Implementation Tasks + +1. **Create blog post directory structure** + - Create `content/blog/ubuntu-fuer-kinder/` directory for German + - Create `content/blog/ubuntu-for-kids/` directory for English + - Set up page bundles for bilingual content with translationKey linking + +2. **Create German blog post** + - Create `content/blog/ubuntu-fuer-kinder/index.de.md` + - Add YAML frontmatter with title, date, description, translationKey + - Transfer content from Notion source + - Preserve all formatting, structure, and sections + - Verify markdown rendering + +3. **Create English blog post** + - Create `content/blog/ubuntu-for-kids/index.en.md` + - Add YAML frontmatter with translated title, date, description, translationKey + - Create natural English translation maintaining technical accuracy + - Adapt terminology appropriately for English readers + - Verify markdown rendering + +4. **Validate implementation** + - Run `openspec validate add-ubuntu-kids-article --strict` + - Resolve any validation issues + +5. **Test Hugo build** + - Run `hugo server` + - Verify no build errors + - Check both German and English versions render correctly + - Verify language switcher works between versions + - Test responsive layout + +6. **Review and commit** + - Review generated content + - Create git commit with conventional commit message + - Ready for user review before merging to main