planet.debianforum.de

der Planet der debianforum.de-Benutzer

Zum Inhalt


 
 
 

10.06.2025

Lars Moelleken (voku1987)

From Survival to Strategy

From Survival to Strategy

If your value ends at syntax, AI already replaced you.


The system prompt: coding_workflow_for_llms.json

Quick Start: Use the coding llm framework and wait for my first request: [copy&past the current coding_workflow_for_llms.json content here]


In the last post, we dropped a hard truth:
LLMs aren’t replacing developers — they’re exposing the ones who were already replaceable.

I argued that value no longer comes from typing code. It comes from thinking clearly, making deliberate decisions, and taking ownership over outcomes. AI doesn’t kill your job — but it does kill your shortcuts.

That post left one big question hanging:

So how do you build software in a world where AI can generate anything — but still understands nothing?

This post is a possible answer.
Meet SYNC — a rigorously structured, fact-enforced framework designed for developers who still give a damn.

SYNC doesn’t make AI smarter.
It provides a system prompt that makes your LLM coding process strong enough to survive dumb ideas, fast code, and thoughtless automation.

We’re going to break it down:

  1. Phases

  2. Agents

  3. Tasks

So I’m currently trying to build an LLM coding framework by try & error — but keep in mind that not every problem needs a hammer ;-) and give feedback. :-)

1. SYNC in 5 Phases 


1.1. 🧩 ALIGN – Because Prompting ≠ Planning

Before any code is written, SYNC forces a brutal question:
“Do you even know what you’re building?”

You can’t just dump “make a task service” into a prompt and hope for gold.
SYNC requires:

  • A verifiable problem

  • Clear, measurable success

  • Known facts and constraints

  • And a list of what’s missing

Can’t answer those? You don’t get to move on. Period.

This is your project kickoff — minus the vague user stories and JIRA hell.


1.2. 🧠 IDEATE – Think Before You Type (or Prompt)

AI loves jumping to conclusions. SYNC doesn’t let it.

Instead, it:

  • Generates multiple solution paths

  • Scores them on DX, security, maintainability

  • Forces a trade-off decision — backed by facts

No “that looks good” commits. No “vibe-based” engineering.

This is what devs mean when they say “thinking in systems.”
SYNC makes that non-optional.


1.3. 🔧 PROTOTYPE – Generate Code That Doesn’t Suck

Now, and only now, do we code. But not like the usual Copilot fanfare.

Every line must:

  • Follow a verified plan

  • Pass static analysis (max level, no warnings)

  • Enforce DX clarity (no hidden state, no weird side-effects)

  • Respect OWASP, type safety, clean structure, documentation

  • Be reviewed by a MandateAuditorAgent — think of it as your most paranoid tech lead

SYNC doesn’t care if it works. It cares if it’s safe, readable, and maintainable.


1.4. 🔍 REFLECT – Find the Blind Spots Before They Find You

This is where most AI-based workflows stop. SYNC doesn’t.

It demands:

  • Fact-based reflection

  • Side-effect inspection

  • “WTF checks” (yes, that’s real)

  • Architectural delta analysis

Reflection is how you debug thinking, not just code.

Bad engineering isn’t usually broken — it’s just thoughtless.
This phase catches that before prod does.


1.5. 📚 LEARN – Ship, Review, Codify, Evolve

If you’re not learning across projects, you’re repeating mistakes in cleaner syntax.

SYNC documents:

  • What worked

  • What failed

  • What patterns can be reused

  • What rules need to be tightened

This is where engineering culture is built — not in all-hands, but in feedback loops.


🔁 These 5 phases form a tight feedback loop. No skipping. No guessing. No “just ship it” by default.


2. Agents — SYNC’s Execution Layer


2.1. Specialized Roles, Not Generic Personas

Instead of one LLM trying to “do everything,” SYNC splits responsibility across clear, non-overlapping roles. Each one acts like a focused expert in your dev team.

Agent Role / Analogy
PlannerAgent Project Architect – breaks the work into slices, defines scope, constraints, and success.
ExecutorAgent Implementation Dev – takes the plan and codes it with strict adherence to facts, security, and DX.
ReflectionAgent Senior Reviewer – evaluates what was built, finds blind spots, forces systemic improvements.
KnowledgeSynthesizerAgent Staff Engineer / Systems Thinker – extracts reusable patterns, proposes framework evolution.
MandateAuditorAgent Tech Lead / Compliance – blocks progress if rules (e.g. security, verifiability) are violated.
InteractionAgent Team Facilitator / QA – handles human check-ins, verifies clarity, enforces decision checkpoints.

“We don’t need smarter output — we need clearer ownership.”

✅ These agents represent exactly that. SYNC operationalizes the separation of thinking, building, reflecting, and enforcing.


2.2. Persona Modes

SYNC defines two execution modes for agents:

Mode Description
strict No ambiguity. Everything must be verifiable and mandate-compliant before progressing.
adaptive Allows temporary ambiguity but logs it. Prioritizes progress with risk awareness.

This flexibility is key when working with real humans or messy specs — you can choose how “rigid” the AI behaves.


3. Tasks — By Non-Negotiable Laws


These aren’t style suggestions — they’re enforced constraints. Every phase must comply.

Mandate What It Ensures
Security No unvalidated inputs or insecure outputs. Based on OWASP Top 10.
DX Code must be typed, clear, maintainable. Predictable naming. No “magic”.
StaticAnalysis Static-Analysis must pass at the highest level — no known warnings.
Documentation Full CodeDoc coverage using modern syntax.
Style Consistent formatting, whitespace, and layout. Enforced via fixer.
Verifiability All decisions must have traceable, factual reasoning.
PhaseEnforcement You can’t skip steps. Every phase must be explicitly completed or justified.

SYNC doesn’t assume trust. It requires evidence.


How this works together: e.g.

  • Planning = PlannerAgent → Add success criteria to issues.

  • Execution = ExecutorAgent → Code must pass security + static analysis gates.

  • Review = ReflectionAgent → Comments require fact-based reasoning.

  • Merge = MandateAuditorAgent → No merge if DX/security rules violated.


 

von voku am 10.06.2025 10:07


09.06.2025

Bernd Dau (whisper)

Der kleine Unterschied

Der kleine Unterschied – oder wie man Pfostenleisten perfekt falsch herum einlötet

Heute ging eigentlich alles gut. Zumindest fast.

Ein kleines Modul sollte auf eine Rasterplatine verlötet werden. Zwei Stück hatte ich bereits korrekt positioniert, das dritte... tja. Es sah perfekt aus – ausgerichtet, gesichert, sauber gelötet.

Erst als ich die USB-Buchse betrachtete, dämmerte es mir: Das Modul war um 180 Grad verdreht eingelötet. Links war rechts, oben war unten. Perfekte Symmetrie – leider logisch falsch.

Was war passiert?

Ich hatte zum Ausrichten der Pfostenleisten einen bewährten Trick benutzt: Das Modul lose auf die Steckleiste setzen, alles sauber in die Platine einlegen, festhalten oder einklemmen – und dann verlöten. Die Ausrichtung war mechanisch tadellos – elektrisch jedoch fatal.

Die Ursache: Die Steckplatine ist vollkommen symmetrisch. Ohne klaren optischen Marker (z. B. Pfeil Richtung USB oder LED-Seite) merkt man nicht, dass man das Modul von der Rückseite betrachtet und verkehrt herum einsetzt.

Lektion des Tages

  • Symmetrie ist schön – aber gefährlich.
  • Pfostenleisten können leicht falschherum verlötet werden, wenn die Orientierung unklar ist.
  • Hätte auffallen müssen, das Modul hat zwei Taster, wie man deutlich nicht sieht.
  • Ein kleiner Marker (z. B. Filzstift-Punkt, Klebezettel, Pfeil auf der Platine) hätte gereicht.

Die gute Nachricht

Es war kein teures Modul, und mit Entlötstation ist vielleicht sogar eine Rettung möglich.

Das nächste Mal:

  • Marker setzen (Pfeil, Schrift, Foto)
  • Genau gucken. Doppelt, wenns recht ist.
  • Bedienungselemente bedienbar?
    Oben sieht man es Rechts genau: Zwei Taster, um die zu drücken, sollten die schon zugängig sein 💡

Fazit

 

Mechanik ist manchmal überzeugender als Logik – aber nicht immer richtig. Fehler wie diese gehören dazu, wenn man nicht nur baut, sondern auch benutzen will.

 

Kommentare willkommen – wer solche Fehler kennt, hat meist die besseren Tipps.

von bed (nospam@example.com) am 09.06.2025 17:32


Joerg Kastning (Tronde)

Was ist das Red Hat Offline Knowledge Portal und wie betreibt man es als systemd.service?

In diesem Tutorial erkläre ich, worum es sich beim Red Hat Offline Knowledge Portal handelt, unter welchen Voraussetzungen man es nutzen kann und wie man es als systemd.service auf dem eigenen Rechner betreibt.

An einigen Stellen verweise ich auf die offizielle Red Hat Dokumentation, um das Tutorial nicht unnötig zu verlängern.

Was ist das Red Hat Offline Knowledge Portal?

Wie der Name suggeriert, handelt es sich um eine offline nutzbare Version des Red Hat Customer Portal und unserer Knowledge Base, Errata, Produktdokumentation, CVE-Datenbank und Red Hat Security Data API. Das folgende Bildschirmfoto zeigt die Startseite.

Startseite des Red Hat Offline Knowledge Portal

Ausgeliefert wird es als OCI-kompatibles Container-Image über registry.redhat.io (Authentifizierung erforderlich). Informationen zum aktuellen Image und den Vorgängerversionen finden sich auch im Red Hat Ecosystem Catalog. Der Inhalt wird wöchentlich aktualisiert und als aktualisiertes Container-Image bereitgestellt.

Wofür soll das gut sein?

Als Systemadministratoren oder Technical Account Manager (TAM) möchten wir auch auf die im vorstehenden Abschnitt genannten Informationen zugreifen können, wenn wir uns in einer Umgebung befinden, in der ein Internetzugriff nicht möglich ist. Darunter fallen zum Beispiel:

  • Vom Internet getrennte bzw. isolierte IT-Umgebungen
  • Einige Züge der Deutschen Bahn
  • Besprechungsräume und Büros mit bescheidener Signalstärke für das Diensttelefon
  • Umgebungen, in denen der Zugriff auf die Online-Informationen ermüdend langsam ist

Ich persönlich möchte das Offline Knowledge Portal zum Beispiel gerne auf meinem Arbeitslaptop dabei haben, um unterwegs jederzeit auf die darin enthaltenen Informationen zugreifen zu können. Es ist so schnell, dass ich nicht mehr auf Zug-WLAN, langsame Mobilfunkverbindungen oder die langsame Online-Version (an einer Verbesserung wird gearbeitet) warten muss.

Wer kann das benutzen?

Folgende Voraussetzungen müssen erfüllt sein, um das Offline Knowledge Portal nutzen zu können:

  • Es wird eine aktive Red Hat Satellite Subscription benötigt
  • Gültige Customer Portal, Red Hat Developer oder Registry Service Account -Zugangsdaten
  • Internetzugang, um das Container-Image herunterladen zu können
  • Eine rootless Podman Umgebung in Version 4.4 oder aktueller, welche diese Anforderungen erfüllt
  • Ein gültiger Offline Knowledge Portal access key
  • Zugangsdaten für registry.redhat.io in einer Datei für eine automatisierte Anmeldung liegen vor; siehe container-auth.json(5) für weitere Informationen

Wie kann man das dann benutzen?

Wer die schnelle Lösung sucht, findet diese in Chapter 1. Launching Red Hat Offline Knowledge Portal. Ich zeige an dieser Stelle, wie man das Offline Knowledge Portal als systemd.service konfigurieren und dann wie einen normalen Dienst steuern kann. Im folgenden Codeblock findet ihr mein Podman Quadlet, mit dessen Hilfe der systemd.service generiert wird. Die Datei habe ich in diesem Pfade abgelegt: ~/.config/containers/systemd/rhokp.container.

:~$ cat .config/containers/systemd/rhokp.container
[Unit]
Description=Red Hat Offline Knowledge Portal

[Container]
AutoUpdate=registry
ContainerName=RHOKP
Image=registry.redhat.io/offline-knowledge-portal/rhokp-rhel9:latest
PublishPort=127.0.0.1:8080:8080
PublishPort=127.0.0.1:8443:8443
Pull=newer
Secret=rhokp_access_key,type=env,target=ACCESS_KEY

[Service]
# Extend Timeout to allow time to pull the image
TimeoutStartSec=900

[Install]
# Start by default on boot
# WantedBy=multi-user.target default.target

Erklärung des Abschnitts [Container]:

  • AutoUpdate=registry
    • Aktiviert automatische Updates für den Container
    • Podman prüft dabei, ob in der Container-Registry eine neuere Version des Container-Images vorhanden ist, wenn der podman-auto-update.timer abgelaufen ist
  • ContainerName=RHOKP
    • Gibt dem Container einen Namen
    • Dieser wird in der Ausgabe von podman ps angezeigt
  • Image=registry.redhat.io/offline-knowledge-portal/rhokp-rhel9:latest
    • Fully qualified container reference
    • Der Tag latest ist zu verwenden, damit automatische Updates funktionieren
  • PublishPort=
    • Da ich das Offline Knowledge Portal auf meinem Arbeitslaptop ausführe und nur selbst nutze, binde ich den Dienst an die IP-Adresse 127.0.0.1
    • Soll der Dienst im Netzwerk angeboten werden, ist eine entsprechend erreichbare IP-Adresse zu verwenden
  • Pull=newer
    • Mit dieser Pull-Policy wird bei jedem Container-Start geprüft, ob eine neue Image-Version in der Container-Registry verfügbar ist und lädt diese ggf. herunter
    • Auf diese Weise muss ich nicht auf den Ablauf von podman-auto-update.timer warten
    • Es macht es mir einfacher, das Image auf meinem Laptop aktuell zu halten
  • Secret=rhokp_access_key,type=env,target=ACCESS_KEY
    • Ich habe meinen Offline Knowledge Portal Access Key in einem Podman-Secret namens rhokp_access_key gespeichert, welches beim Container-Start in die Umgebungsvariable ACCESS_KEY gemappt wird
    • So stelle ich sicher, dass mein Zugangstoken nicht in der Ausgabe von podman inspect auftaucht oder mit dem Container in eine Datei gespeichert wird und ggf. unkontrolliert mein System verlässt

Weitere Informationen finden sich in den Manpages podman-systemd.unit(5) und podman-secret(1).

Bitte beachtet, dass ich die letzte Zeile mit WantedBy= auskommentiert habe, da ich den Service auf meinem Laptop nur bei Bedarf starte. Wenn ihr den Dienst auf einem Server laufen lassen möchtet, der automatisch mitstartet, kommentiert die Zeile einfach ein.

Mit den folgenden Befehlen wird aus dem Quadlet ein systemd.service generiert und gestartet.

:~$ systemctl --user daemon-reload
:~$ systemctl --user start rhokp.service
:~$ systemctl --user is-active rhokp.service
active

Zusammenfassung

  • Ich muss mir nicht mehr den CLI-Befehl zum Start des Offline Knowledge Portal merken
  • Ich habe es auf meinem Arbeitslaptop stets dabei und griffbereit
  • Gesteuert wird es über vertraute systemctl-Befehle
  • Automatische Updates sind ebenfalls möglich

Wenn euch die Idee gefällt und ihr die Vorraussetzungen erfüllt, probiert es selbst aus.

PS: Es ist erfreulich schnell!

von Jörg Kastning am 09.06.2025 05:00


07.06.2025

Steffen Rumberger (inne)

Mozilla Firefox-Profile direkt aus dem Anwendungsmenü starten: Desktop-Starter mit Desktop-Actions erstellen

Wer mehrere Mozilla Firefox- oder Thunderbird-Profile nutzt (z.B. eins für Beruf und eins für Privat), möchte diese vielleicht direkt aus dem Anwendungsmenü, Dash und Dock heraus starten. Das lässt sich ganz einfach umsetzen, indem der jeweilige Desktop-Starter um [Desktop Actions %s]-Sektionen erweitert und ins Benutzerverzeichnis installiert wird.
Die Desktop-Actions stehen dann via Rechtsklick im Kontextmenü zur Auswahl.

Vorgehensweise

  • Desktop-Starter ins Benutzerverzeichnis kopieren
    Erstelle zunächst ein Verzeichnis und kopiere die .desktop-Datei aus dem System als Ausgangspunkt:

    mkdir MyDesktopStarter
    cd MyDesktopStarter
    cp /usr/share/applications/firefox-esr.desktop .
    
  • Desktop Actions hinzufügen
    Bearbeite die .desktop-Datei und ergänze die folgenden Einträge:

    [Desktop Entry]
    	…
    	Actions=1;2;3;
    	…
    [Desktop Action 1]
    	Name=Local
    	Exec=/usr/lib/firefox-esr/firefox-esr -P ”Local”
    [Desktop Action 2]
    	Name=Default User
    	Exec=/usr/lib/firefox-esr/firefox-esr -P ”Default User”
    [Desktop Action 3]
    	Name=Profilemanager
    	Exec=/usr/lib/firefox-esr/firefox-esr -P
    

    Hinweis: Dies sollte selbsterklärend sein: Jede [Desktop Action %s]-Sektion benötigt eine eigene ID (action identifier), die im Schlüssel Actions der Hauptsektion [Desktop Entry] als Wert aufgelistet wird.

  • Angepassten Starter installieren
    Installiere die angepasste .desktop-Datei ins Benutzerverzeichnis:

    xdg-desktop-menu install –mode user –novendor *.desktop
    xdg-desktop-menu forceupdate –mode user
    

    Mittels xdg-desktop-menu –mode user uninstall kann ein Starter wieder deinstalliert werden.

Es sind hierfür keine Root-Rechte erforderlich, einzig einmal neu Anmelden kann nötig sein.

Ein Beispiel aus der offiziellen Dokumentation

  • Additional applications actions
  • A Example Desktop Entry File

Weitere Ideen für Desktop-Actions

  • Medienplayer mit TV- oder Radiostream starten
  • Editor mit NOTES.txt starten
  • Zenmap mit einem bestimmten Profil starten

07.06.2025 01:13


Mozilla Firefox-Profile direkt aus dem Anwendungsmenü starten: Desktop-Starter mit Actions erstellen

Wer mehrere Mozilla Firefox- oder Thunderbird-Profile nutzt (z.B. eins für Beruf und eins für Privat), möchte diese vielleicht direkt aus dem Anwendungsmenü, Dash und Dock heraus starten. Das lässt sich ganz einfach umsetzen, indem der jeweilige Desktop-Starter um [Desktop Actions %s]-Sektionen erweitert und ins Benutzerverzeichnis installiert wird.
Die Desktop-Actions stehen dann via Rechtsklick im Kontextmenü zur Auswahl.

Vorgehensweise

  • Desktop-Starter ins Benutzerverzeichnis kopieren
    Erstelle zunächst ein Verzeichnis und kopiere die .desktop-Datei aus dem System als Ausgangspunkt:

    mkdir MyDesktopStarter
    cd MyDesktopStarter
    cp /usr/share/applications/firefox-esr.desktop .
    
  • Actions hinzufügen
    Bearbeite die .desktop-Datei und ergänze die folgenden Einträge:

    [Desktop Entry]
    	…
    	Actions=1;2;3;
    	…
    [Desktop Action 1]
    	Name=Local
    	Exec=/usr/lib/firefox-esr/firefox-esr -P ”Local”
    [Desktop Action 2]
    	Name=Default User
    	Exec=/usr/lib/firefox-esr/firefox-esr -P ”Default User”
    [Desktop Action 3]
    	Name=Profilemanager
    	Exec=/usr/lib/firefox-esr/firefox-esr -P
    

    Hinweis: Dies sollte selbsterklärend sein: Jede [Desktop Action %s]-Sektion benötigt eine eigene ID (action identifier), die im Schlüssel Actions der Hauptsektion [Desktop Entry] als Wert aufgelistet wird.

  • Angepassten Starter installieren
    Installiere die angepasste .desktop-Datei ins Benutzerverzeichnis:

    xdg-desktop-menu install –mode user –novendor *.desktop
    xdg-desktop-menu forceupdate –mode user
    

    Mittels xdg-desktop-menu –mode user uninstall kann ein Starter wieder deinstalliert werden.

Es sind hierfür keine Root-Rechte erforderlich, einzig einmal neu Anmelden kann nötig sein.

Ein Beispiel aus der offiziellen Dokumentation

  • Additional applications actions
  • A Example Desktop Entry File

Weitere Ideen für Desktop-Actions

  • Medienplayer mit TV- oder Radiostream starten
  • Editor mit NOTES.txt starten
  • Zenmap mit einem bestimmten Profil starten

07.06.2025 01:13


05.06.2025

Lars Moelleken (voku1987)

Who Survives in the Age of AI Code?

Who Survives in the Age of AI Code?

If your value ends at syntax, AI already replaced you.


Let’s get something straight:

If you think of LLMs as “copilots,” you’re still giving them too much credit.

They’re not copilots.
They’re autopilot systems — ruthlessly fast, dangerously obedient, and totally unaware of what matters.

Feed them incomplete specs, fuzzy goals, or mismatched priorities?

They won’t challenge you.
They won’t hesitate.
They’ll execute — confidently, fluently — exactly the wrong thing.

They don’t know your business.
They don’t know your constraints.
They don’t know what not to build.

What’s missing isn’t syntax.
It’s ownership. Intent. Engineering judgment.

And unless you provide it —
you’re not flying the plane.
You’re luggage and replacable with AI.


Part I: Automation Always Eats the Bottom

This has happened before. Every decade. Every role.

  • Punch card operators (1950s–1960s): Once essential for running programs. Replaced by terminals and interactive computing. By the mid-‘70s, gone.
  • Typists & secretarial pools (1960s–1980s): Entire floors dedicated to document production. WordPerfect, then Microsoft Word, ended that. By the early ‘90s, obsolete.
  • Sysadmins (1990s–2010s): SSH into boxes, hand-edit configs, restart crashed daemons. Then came Puppet, Chef, Ansible, Terraform… Cloud abstractions finished the job. The manual server “ssh”-based work. Retired.
  • Manual QA testers (2000s–2010s): Clicking through forms, comparing results by eye. Replaced by Selenium, Cypress, and CI pipelines. QA is now design-driven. The button-clicker job didn’t survive.

Every wave started the same way:
The job wasn’t eliminated.
The repetitive part of it was.

If you couldn’t rise above the routine — you were gone.

Now it’s happening to developers.

Not the ones architecting resilient, auditable systems.
The ones chaining together plugin-generated CRUD and calling it “done.”

LLMs are just the latest wave. But it moves very fast …

And here’s the reality:

  • A carpenter refusing to use a circular saw isn’t defending craftsmanship — they’re bottlenecking it.
  • But give that saw to someone with no skill, and they’ll still ruin the wood — just faster — If you currently see many post of non-coders who “vibe”-code there stuff, that’s what I am talking about here. ;-)

Same with LLMs.

They don’t replace skill.
They amplify whatever’s already there — good or garbage.

LLMs aren’t replacing software engineers.
They’re replacing the illusion that the bottleneck was ever syntax or tools.


Part II: Complexity Wasn’t Removed. It Was Repositioned.

There’s a dangerous myth floating around that LLMs “simplify software development.”

They don’t.

They just move the complexity upstream — away from syntax, into strategy.

LLMs are great at building what you ask for.
But they’re terrible at knowing if what you asked for actually makes sense.

They don’t understand:

  • They don’t understand the business.

  • They don’t understand tradeoffs.

  • They don’t understand you.

They just build. Fast.

And that means your job as a developer is no longer about typing — it’s about thinking upstream.

Because the real work now is:

  • Framing prompts like functional specs

  • Embedding constraints into system design

  • Validating output against business goals

  • Catching side effects before they cascade

None of that lives in syntax.
It lives in system boundaries, architecture, and clear thinking.

So here’s the shift:

If your job is just to write the code — you’ll be replaced by the thing that does that faster.
But if your job is to design the system — you’re now more critical than ever.


Part III: The ELIZA Effect Isn’t Dead — But LLMs Are Waking Up

In 1966, Joseph Weizenbaum built one of the first “AI” programs: ELIZA.

It wasn’t smart.
It didn’t understand anything.
It just rephrased your input using simple pattern matching.

You: I’m feeling anxious.
ELIZA: Why do you say you’re feeling anxious?

It used tricks — not intelligence.
But people still believed in it. Some even refused to accept it was a machine.

That’s the ELIZA Effect:
Our instinct to see intelligence where there’s only mimicry.

Fast-forward to today.
LLMs don’t just mimic. They generate.
They write code. Plan modules. Suggest architectural patterns.

But here’s the risk:

We still project too much intelligence into the output.

When an LLM writes a function that looks correct, we tend to assume it is correct — because it sounds confident.
When it uses a pattern, we assume it understands the context.

But it doesn’t.
And that’s not its fault — it’s ours.

The real danger isn’t hallucination.
It’s over-trusting surface-level coherence.

Today, it’s not a chatbot fooling a user.
It’s a system generator fooling a team.

But let’s be clear: Modern LLMs aren’t ELIZA anymore.
They can plan. Refactor. Respond to constraints. Incorporate feedback.

The difference is this:

ELIZA tricked you into thinking it was smart.
LLMs require you to be smart — to guide them properly.

If you bring judgment, context, and validation to the loop, LLMs become an architectural power tool.
But if you don’t? You’ll scale the same flawed design — just faster.


Part IV: Code Quality Is Becoming a Mirage

LLMs make it absurdly easy to generate code.

A few prompts, and boom:
Endpoints scaffolded.
Unit tests written.
CRUD flows spinning up in seconds.

But here’s the real question:

What do you do with all that saved time?

Do you…

  • Refactor legacy architecture?

  • Fix broken boundaries?

  • Document edge cases and invariants?

Or do you just move on to the next ticket?

Let’s be honest — for most teams, the answer is: ship more.

But here’s the catch:

Productivity without reflection is just accelerated entropy.

The illusion of quality isn’t in the code — it’s in the pace.
We used to write bad code slowly.
Now we write bad code faster.

LLMs don’t inject tech debt.
They just make it easier to scale whatever process you already have.

This is how LLMs become quiet killers in modern software:

  • More output. Less ownership.

  • Faster shipping. Sloppier systems.

  • Progress that isn’t progress at all.

Because without validation, speed is just a prettier form of chaos.


Part V: The Architect Is the Pilot

LLMs are not copilots.

They don’t make decisions.
They don’t check alignment.
They don’t steer the system.

They’re autopilot — optimized for syntax, blind to strategy.

Which means your role isn’t shrinking — it’s elevating.

You’re the pilot.

And if you’re not flying the plane — someone else is programming it to crash.

What does the real pilot do?

  • Sets the course

  • Defines the constraints

  • Monitors the signals

  • Prepares for failure

  • Owns the outcome

Autopilot builds. But it can’t see.
It won’t:

  • Catch abstraction leaks

  • Detect architectural drift

  • Flag a misaligned dependency

  • Or recognize when a “working” feature breaks the user journey

That’s your job.

Not “prompt engineering.”
Not code generation.
Systems thinking.

And not in hindsight — up front.

The modern software engineer isn’t typing faster.
They’re designing better.
And validating deeper.

Because LLMs don’t ship systems.
People do.

And if you can’t explain how your choices align with product, people, and long-term stability?

Then you’re not the architect.
You’re just the operator.


 

Conclusion: Stop Writing Code. Start Owning Systems.

If your job was just to “write the code,” then yes — that part is already being done for you.

But if your job is to engineer the system — with intent, constraints, validation, foresight, and grounded execution —
then you just became irreplaceable.

LLMs don’t remove the need for developers.
They reveal who was actually doing engineering — and who was just typing faster than the intern.

The future of software isn’t syntax.
It’s systems thinking. Boundary design. Constraint management. Communication at scale.

And that’s not generated.
That’s your job.


TL;DR

  • LLMs are autopilot, not copilots. They follow, they don’t lead.

  • They move complexity upstream. The value is no longer in typing.

  • They amplify output — good or bad. Skill is still required.

  • They don’t replace good engineers. They replace bad workflows.

  • System thinking is the new baseline. If you’re not owning structure, you’re already behind.

von voku am 05.06.2025 14:39


03.06.2025

Jörg Kruse (4A4B)

Firefox und Thunderbird fügen beim Pasten mit xdotool zusätzliches „>“ mit ein

Da auf einer ergomischen Maus das Scrollrad als mittlere Maustaste etwas schwerfällig reagierte, hatte ich die mittlere Maustaste mithilfe von xdotool auf eine Tastaturkombination gelegt. In den Tastatur-Einstellungen von Xfce hatte ich hierzu dem Befehl „xdotool click 2“ den Shortcut Ctrl + Insert zugeordnet (auf meiner US-amerikanischen Tastatur liegen diese beiden Tasten praktischerweise direkt nebeneinander). Das funktionierte soweit wie gewünscht: einen zuvor markierten Textabschnitt konnte ich statt mit der mittleren Maustaste auch mit der Tastaturkombination Ctrl + Insert in ein anderes Programm einfügen.

Nur Thunderbird und Firefox verhielten sich da merkwürdig: vor dem kopierten Textabschnitt wurde jeweils ein „> “ eingefügt. Bei anderen Programmen gab es dieses Problem jedoch nicht. Ich behalf mich damit, die überflüssigen Zeichen nach dem Pasten zu entfernen, auf Dauer nervte das Verhalten aber. Nach einiger Recherche kam ich dann auf die simple Ursache: xdotool übersetzt den Shortcurt nicht nur in einen Mausklick, sondern reicht auch die übersetzten Tastatureingaben weiter. Bei den jeweiligen Programmen kam also an: mittlerer Mausklick + Ctrl + Insert. Die beiden Mozilla-Anwendungen haben nun die Eigenart, dass bei einem Einfügen mit mittlerer Maustaste und gedrückter Ctrl- bzw. Strg-Taste ein „> “ mit eingefügt wird, um Zitate zu kennzeichnen.

Gelöst habe ich das Problem schließlich dadurch, dass ich in den Tastatur-Einstellungen von Xfce dem Befehl „xdotool click 2“ den einfachen Shortcut Insert (ohne Ctrl) zugewiesen habe. Da ich die Insert-Taste ansonsten nie in Gebrauch habe, war das für mich praktikabel.

von Jörg Kruse am 03.06.2025 13:54


01.06.2025

Sabine Becker (AtariFrosch)

Kamera auf Reisen

Das ist auch mal eine interessante Aktion: Holger D. kam im April auf die Idee, sich eine einfache Kamera zu kaufen und diese auf Reisen zu schicken, also für jeweils etwa eine Woche an interessierte Menschen zu verleihen. Obwohl Schwarzweiß-Fotografie eigentlich nicht so mein Ding ist, war ich neugierig genug, um mich in die Liste eintragen zu lassen. Kürzlich war seine Camp Snap 103B also für eine Woche bei mir, und ich habe damit ein wenig herumgespielt.

Camp Snap im Überblick

Die Camp Snap mutet paradox an: Eine schlichte und sehr leichte Sucher-Kamera aus Billig-Plaste in der Optik der 1960er Jahre, digital und mit USB-C-Anschluß, aber ohne Display, nur mit Sieben-Segment-Anzeigen für drei Zeichen.

Positiv

  • Die Kamera ist klein und leicht und paßt daher fast überall rein, wohin man auch ein Smartphone reinstecken kann.
  • Die Bilder sind gestochen scharf.
  • Auflösung: 3264 x 2448 px, also etwa 8 mpx.
  • Nach etwa 10 Minuten ohne Nutzung geht die Kamera aus, um Akku zu sparen.
  • Dadurch, daß man nichts einstellen kann/muß, ist die Kamera extrem schnell schußbereit.
  • Die Kamera ist mir unterwegs zweimal auf Steinboden gefallen. Das machte ihr offenbar nichts aus. Ist natürlich trotzdem nicht zur Nachahmung empfohlen. 😉

Negativ

  • Im Sucher wird kein Begrenzungsrahmen als Hilfsmittel gegen das Parallaxen-Problem angezeigt.
  • Da die Kamera mit dem Auslöser auch ein- und ausgeschaltet wird, kann es sein, daß man versehentlich ungeplant auslöst. Ist mir zweimal passiert.
  • Die gedruckte Anleitung ist weniger als minimal, es fehlen relevante Angaben. Außerdem ist sie nur auf englisch.
  • Um von Farbe auf s/w und umgekehrt zu wechseln, muß man umständlich einen Software-Filter von der Hersteller-Website einspielen. Mal eben unterwegs geht das also nicht.
  • Ein Video, das im Blogartikel bei Holger verlinkt ist, spricht außerdem davon, daß man beim Wechsel des Filters die Kamera kaputtmachen kann. Das ist … unschön.
  • Dasselbe Video zeigt, daß der Akku-Füllstand beim Einschalten kurz angezeigt wird. Die Kurzanleitung erwähnt das nicht. Mir war die Zahl zwar aufgefallen, aber mir fehlte jegliche Zuordnung.
  • Der Preis. 80 € finde ich definitiv zu viel für diese Kamera, zumal die Anleitung unvollständig ist und die Software offenbar noch Bugs hat (Zeitstempel, Filtereinspielung).

Fotografieren mit der Camp Snap

Zuerst hatte ich sie dabei gehabt, als ich am 21. Mai nach Kamp-Bornhofen gefahren war, um von dort aus am Mittelrhein entlang nach Kestert zu wandern. Natürlich hatte ich auch die „große“ dabei gehabt und damit auch die meisten Bilder gemacht, aber zwischendurch habe ich die Plaste-Kamera aus der Tasche gezogen und damit fotografiert, teilweise die gleichen Motive wie mit der „großen“.

Zunächst hatte mich etwas irritiert, daß im Sucher keine Begrenzungslinien zu sehen sind, wie ich das von Sucher-Kameras gewohnt bin. Stattdessen franst das Bild im Sucher am Rand optisch aus. Da sich der Sucher ein kleines Stück neben der eigentlichen Linse befindet, sieht man im Sucher nicht exakt das, was auf den Sensor kommt. Offenbar muß man das selbst herausfinden, wo jetzt der genaue Bildausschnitt liegt.

Außerdem ist das Bild im Sucher farbig. Auch das fand ich erstmal seltsam, denn es sollten ja Schwarzweiß-Bilder herauskommen. Aber das liegt natürlich daran, daß der Filter für s/w direkt am Sensor eingestellt wird, und der hat mit dem einfachen Sucher keinerlei Verbindung. Zu diesem Zeitpunkt wußte ich auch noch nicht, daß die Kamera nur deshalb s/w fotografiert, weil ein entsprechender Software-Filter eingespielt worden war, und sie von Haus aus Farbfotos macht.

Daheim wollte ich die Bilder mit gphoto2 von der Kamera ziehen, aber das Programm behauptete, die Kamera nicht finden zu können. Am Ende ging es aber ganz einfach damit, die Karte in der Kamera zu mounten und die Bilder auf Dateisystem-Ebene auf die Festplatte zu ziehen. Bei der Gelegenheit schaute ich mich auf der Karte noch ein wenig um und fand in einem Verzeichnis namens ./Trashes weitere Bilder, die ganz offensichtlich nicht von mir waren – die Zeitstempel der Dateien waren von der vorhergehenden Woche. Sie waren wohl bei meiner direkten Vorgängerin auf der Reise-Route nicht wirklich gelöscht, sondern nur in einen „Mülleimer“ verschoben worden. Diese Bilder zog ich sicherheitshalber ebenfalls auf meine Platte und löschte sie damit endgültig von der Speicherkarte. Nach Rücksprache mit der Person habe ich sie ganz gelöscht.

Bei meinen eigenen Bildern mußte ich allerdings erstmal feststellen, daß die Zeitstempel der Dateien wie auch die in den Exif-Daten auf ein Datum im Oktober 2024 zeigten und die Uhrzeiten auch nicht stimmen konnten. Also mußte ich Datum und Zeit selbst neu setzen. Normalerweise bearbeite ich neu von meinen Kameras gezogene Fotos mit einem eigenen Python-Script, welches die Zeitstempel aus den Exif-Daten abgreift und daraus einen neuen Dateinamen baut, in welchen der Zeitstempel eingearbeitet ist (aus The Big Renaming). Ich hätte das Script zwar für das Dateinamensformat der Camp Snap anpassen können, aber nicht für die Zeitstempel in den Exif-Daten. Also mußte ich sie einzeln händisch umbenennen.

Im Fall dieser Serie vom Mittelrhein war die Zuordnung von Datum und Zeit relativ einfach. Anhand der Fotos aus der Canon EOS 750D, die korrekte Zeitstempel trugen, konnte ich die aus der Camp Snap einordnen. Trotzdem ist es natürlich nervig, und in den Exif-Daten stehen immer noch die falschen Zeitstempel. Da muß ich wohl mal gelegentlich ein Python-Script zur Korrektur schreiben (ein ähnliches habe ich bereits geschrieben und setze es für die Korrektur von Zeitstempeln ein, wenn ich mal wieder vergessen hatte, die DSLR auf Sommer- bzw. Normalzeit umzustellen; es ist ebenfalls im Big-Renaming-Projekt enthalten).

Die mitgelieferte Mini-Anleitung erklärt immerhin, wie man in der Kamera Datum und Zeit einstellen kann. Dazu braucht man einen kleinen Kreuzschraubendreher, um eine Platte am Boden abnehmen zu können, unter der sich drei Knöpfe befinden. Danach ging ich vor und stellte die Daten entsprechend ein.

Positiv überrascht war ich von der Schärfe der Bilder. Holger hatte zwar davor gewarnt, daß die Kamera nach dem Auslösen kurz verzögern würde – ich vermute, wegen des Autofokus', der erst nach dem Auslösen „anspringt“ –, aber davon habe ich nichts gemerkt. Mein erstes Smartphone, das HTC Desire, hatte diese Eigenart, den Autofokus erst in Bewegung zu setzen, wenn der Auslöser gedrückt worden war, auch gehabt, brauchte aber teils deutlich länger, um den Fokus anzupassen. Da kamen dann gelegentlich durchaus ziemlich unscharfe Bilder bei raus.

Da man an der Camp Snap aber nichts einstellen kann, ist das Einsatzgebiet natürlich begrenzt. Die Kurzanleitung sagt zwar nichts über die Bereiche, welche die Kamera-Automatik bei Blende, Belichtungszeiten und ISO-Werten abdecken kann. Aber wenn's zu dunkel wird, hat man vermutlich quasi die Wahl zwischen verwackelten, verrauschten und viel zu dunklen Bildern. Im Prinzip halte ich sie für eine Schönwetter-Kamera. – Den Blitz hatte ich nicht benutzt, dessen Reichweite dürfte aber nicht sehr groß sein. Ich tippe auf einen bis zwei Meter.

In den darauffolgenden Tagen ging es mir nicht gut genug, um gleich nochmal fotografieren zu gehen. Daher fotografierte ich damit nur ein paarmal aus meinem Fenster. Aber als ich am letzten Sonntag zur Packstation am Hauptbahnhof fuhr, hab ich sie nochmal eingesteckt und noch eine kleine Serie damit geschossen.

Als ich diese Bilder von der Kamera zog, mußte ich feststellen, daß sich die interne Uhr schon wieder auf Oktober 2024 zurückgestellt hatte. Das ist schon etwas nervig. Vermutlich passiert das jeweils beim Aufladen. Ich hatte die Kamera nach dem Auspacken erstmal an den Strom gehängt, und nach dem Verschieben der Bilder aus der ersten Serie nochmal. Holger schrieb zwar, daß eine Akku-Ladung etwa 500 Bilder lang hält, aber ich hatte keine „Füllstandsanzeige“ gefunden. Bezüglich der Zeitstempel hat die Kamera-Software dann wohl einen Bug; das sollte nicht passieren.

Ich stellte Datum und Uhrzeit also nochmal ein, bevor ich die Kamera an die nächste Person weiterschickte. Außerdem schrieb ich einen Zettel, den ich mit ins Paket legte, um auf dieses Problem hinzuweisen und erklärte darauf auch gleich, wie man die Bilder unter Linux von der Kamera ziehen kann. In der Kurzanleitung kennen sie da nur Klickbunt.

Fazit

Es war ein interessantes Experiment. Wenn diese Kamera keine knapp 80 € kosten würde, könnte ich mir vorstellen, mir eine zuzulegen, zumal sie mit einem anderen Filter ja auch farbig fotografieren kann (wobei ich die Qualität solcher Fotos ja nicht gesehen habe, also nicht beurteilen kann). Für „mal eben“ ist sie deutlich schneller bereit als eine DSLR, und auch schneller als mein Smartphone, da ich letzteres immer erst entsperren muß. Andererseits bekomme ich für 80 € auch bereits ein Smartphone mit brauchbarer Kamera; das Nokia 2.2 hatte im Jahr 2020 nur 65 € gekostet, und auch wenn die Standard-Kamera-App nur beschränkte Einstellmöglichkeiten hat, ist es schon deutlich mehr als bei der Camp Snap.

Diese Erfahrung hat mir gezeigt, daß Schwarzweiß-Aufnahmen durchaus interessant sein können. Ich finde aber weiterhin, daß mit den Farben wichtige Bildinformationen fehlen. Das Motiv muß halt passen, und das ist in meinen Augen oft nicht der Fall.

Zwei meiner Fotos und jeweils eines bis zwei anderer teilnehmender Personen sind in Holgers Blog zu sehen.

von Atari-Frosch am 01.06.2025 13:02


31.05.2025

Sabine Becker (AtariFrosch)

Bundeskanzler Friedrich Merz

Meine Rede bei #IchBinArmutsbetroffen am 17. Mai 2025 in Köln (Video):

Jetzt haben wir ihn, den neuen Bundeskanzler, und er heißt Friedrich Merz. Ich hab mal so ein paar Fakten über den sauberen Herrrn Merz zusammengesucht, insbesondere (aber nicht nur) aus dem Blickwinkel von Armutsbetroffenen und anderen marginalisierten Gruppen, und dabei habe ich sicher noch einiges übersehen:

  • 2018 erklärte sich der zwölffache Millionär Merz zu einem Angehörigen der „gehobenen Mittelschicht“.
  • Anfang 2020 machte sich Merz mit einem sexistischen Witz über Annegret Kramp-Karrenbauer lustig, die gerade aus dem CDU-Vorsitz ausgeschieden war. Zitat: „Es ist übrigens reiner Zufall, dass Tiefs im Augenblick Frauennamen tragen“ – zeitgleich war das Orkantief „Sabine“ unterwegs gewesen.
  • Im ersten Corona-Jahr, 2020, ließ Friedrich Merz verlauten, daß sich viele erwerbsfähige Menschen während der Corona-Krise an ein Leben ohne Arbeit gewöhnt hätten. Er wird zitiert mit dem Satz: „Wir müssen ein bißchen aufpassen, daß wir uns nicht alle daran gewöhnen, daß wir ohne Arbeit leben können.“ – und das, während Menschen schwer krank zu Hause oder in Krankenhäusern lagen und noch mehr verzweifelt versuchten, sich vor einer Infektion zu schützen, obwohl es noch keine Impfungen gab. In jenem Jahr wurden rund 600.000 zusätzliche Menschen erwerbslos (selbe Quelle), mehrere Millionen waren auf Kurzarbeit. Er forderte außerdem, daß die Schulen offen bleiben sollten und fand, daß Lehrkräfte, die nicht „ernsthaft“ erkrankt seien, zur Arbeit gehen müßten (selbe Quelle).
  • Im selben Jahr stellte er in einem Interview einen Zusammenhang her zwischen Homosexualität und Pädophilie. Als er deswegen kritisiert wurde, wies er diese Kritik zurück und wiederholte gleichzeitig genau das, was kritisiert worden war.
  • Im Jahr 2021 forderte Merz zusammen mit weiteren Unionspolitikern, man solle Erwerbslose zu „gemeinnützer Arbeit“ verpflichten. Alle Medien, durch die Bank, verschwiegen in der Berichterstattung dazu, daß Art. 12 GG Zwangsarbeit verbietet. Bei dieser Arbeitspflicht solle es beispielsweise um Müllsammeln oder das Auffegen von Laub gehen. Damit sollten Menschen angeblich für den Arbeitsmarkt fit gemacht werden. Wie Müllaufsammeln oder Laubfegen dafür qualifizieren sollen, hat er uns nicht verraten. Wie man damit die sogenannten Vermittlungshemmnisse wie Krankheit, Behinderung, Drogensucht, Kindererziehung oder Angehörigen-Pflege beseitigen soll, auch nicht.
  • Im Jahr 2022 behauptete Merz, man könne die Erwerbslosenzahlen einfach mal halbieren, genug Arbeitsplätze gäbe es ja. Es würde nur an „Anreizen“ fehlen. Dazu muß man wissen, daß Leute wie Merz unter Anreizen nicht etwa einen ordentlichen Lohn verstehen, sondern Zwang bis zum vollständigen Entzug der Existenzgrundlage. Was er dabei ignoriert: Das Bundesverfassungsgericht hat entschieden, daß Sanktionen über mehr als 30 % des Regelsatzes verfassungswidrig sind. Aber das hat den Herrn Merz nicht gestört, er fordert immer noch.
  • Ebenfalls im Jahr 2022 äußerte sich Merz hinsichtlich der Geflüchteten aus der Ukraine mit der Behauptung, sie seien „Sozialtouristen“. Zitat: „Wir erleben mittlerweile einen Sozialtourismus dieser Flüchtlinge nach Deutschland, zurück in die Ukraine, nach Deutschland, zurück in die Ukraine.“ Das bezeichnete sogar Abschiebe-, äh, Innenministerin Nancy Faeser (SPD) als „schäbig“. „Sozialtourismus“ war übrigens im Jahr 2013 „Unwort des Jahres“.
  • Im April 2023 brachte der Privatjet-Pilot Merz im Hinblick auf die Klimakatastrophe den Spruch, „es ist eben gerade nicht so, daß morgen die Welt untergeht.“ Und nun stehen wir laut Vorhersagen vor einem „Höllen-Sommer“. Wieviele Menschen und Tiere wohl sterben werden, und wie wohl die Ernten aussehen werden?
  • Auch 2023 hetzte er gegen Geflüchtete, die deutschen Patienten angeblich die Arzttermine „wegnehmen“ würden. Zitat: „Auch die Bevölkerung, die werden doch wahnsinnig, die Leute. Wenn die sehen, daß 300.000 Asylbewerber abgelehnt sind, nicht ausreisen, die vollen Leistungen bekommen, die volle Heilfürsorge bekommen. Die sitzen beim Arzt und lassen sich die Zähne neu machen, und die deutschen Bürger nebendran kriegen keine Termine.“ Zum Realitätsabgleich: Geduldete erhalten eine reduzierte medizinische Versorgung nach dem Asylbewerberleistungsgesetz. „Zähne neu machen“ gehört da nicht dazu. Merz hat also gelogen, denn das hätte er wissen können. Und wenn man sowas nicht weiß, guckt man gerade als Jurist mit zwei Staatsexamen – das heißt, er hat die Qualifikation zum Richteramt – vielleicht besser erstmal in die Gesetze, bevor man solche Behauptungen aufstellt.
  • Ebenfalls 2023 machte er den Gebrauch gendergerechter Sprache für den Aufstieg der AfD verantwortlich. Zitat: „Mit jeder gegenderten Nachrichtensendung gehen ein paar hundert Stimmen mehr zur AfD.“ Gegenderte Sprache werde als übergriffig empfunden, sie würde von der Mehrheit in Deutschland abgelehnt. Den Grünen unterstellte er in diesem Zusammenhang eine „Volkserziehungsattitüde“.
  • Außerdem holte er den von ihm selbst im Jahr 2000 erfundenen Begriff der „deutschen Leitkultur“ im Dezember 2023 wieder aus der Mottenkiste und meinte, daß der Kauf eines Weihnachtsbaumes unbedingt dazuhöre.
  • Im März 2024 plädierte Friedrich Merz für ein „kulturelles Minimum“ als „Leitkultur“ und erklärte, das „C“ im Parteinamen der CDU meine Toleranz gegenüber allen christlichen Religionsgemeinschaften.
  • Im gleichen Jahr behauptete Merz, das Bürgergeld sei ein wesentlicher Faktor für die „Schwäche am Arbeitsmarkt“ (und nicht etwa die Folgen der Corona-Pandemie). Das größte Problem sei, daß die Mehrheit der Bevölkerung das Bürgergeld mittlerweile als bedingungsloses Grundeinkommen verstehe. In jedem zweiten Betrieb würden Arbeitsleistende sagen: „Ich gehe jetzt ins Bürgergeld“. Merz wurde vielfach bewiesen, daß er damit gelogen hat und seine Behauptungen keine sachliche Grundlage haben.
  • Im Rahmen ihres Bundestags-Wahlkampfes ab dem Spätjahr letzten Jahres setzte sich die CDU unter Merz dafür ein, den 8-Stunden-Tag abzuschaffen. Der 8-Stunden-Arbeitstag ist eine hart erkämpfte Errungenschaft der Arbeitsleistenden. Nun soll es nach Merz eine flexible Wochen-Arbeitszeit geben. Glaubt Herr Merz im Ernst, daß sich Firmen daran halten werden? Natürlich nicht: Seine Kuschelfreunde werden ihren Arbeitsleistenden sagen, entweder Ihr arbeitet mehr, oder wir holen uns Ersatz vom Arbeitsamt. Kündigungsgründe finden sich immer. Und: Flexibilität heißt hier natürlich nicht flexibel für Arbeitsleistende, sondern nur für die Firmen. In anderen Ländern führt man derweil ohne Produktivitätsverlust die 4-Tage-Woche ein. (Ergänzung zur Rede: In Deutschland wurde das auch schon mehrfach erfolgreich getestet.)
  • Auch flexibel sollten wohl Arbeitsleistende ab 53 Jahren sein. Direkt nach dem Bruch der Ampel-Koalition forderte Merz, daß für Menschen, die mit 53 oder älter einen neuen Arbeitsvertrag abschließen, der Kündigungsschutz abgeschafft werden solle. Selbst Markus Söder lehnt diese Forderung, die Merz schon einmal im Jahr 2004 gestellt hatte, ab; das will was heißen.

Hier muß ich mich im Nachhinein korrigieren. Die Forderung stammte von 2004, danach hatte er sie wohl nicht mehr wiederholt. Ich vermute, daß ich bei einem Artikel nicht auf das Datum geachtet hatte:

Im Jahr 2004 hatte Merz eine Abschaffung des Kündigungsschutzes erwogen. “In der Schweiz gibt es gar keinen Kündigungsschutz – und Vollbeschäftigung”, verteidigte Merz damals das Arbeitsmarktkonzept seiner Partei. Darin sollte der Kündigungsschutz für Arbeitnehmer fallen, die bei der Einstellung älter als 53 Jahre alt waren. Das Ziel: Arbeitslosen zwischen 50 und 65 Jahren eine Chance auf Wiedereinstellung geben. Die Begründung lautete: “Lieber befristet beschäftigt als unbefristet arbeitslos.”

heißt es zum Beispiel in einer Übersicht zur Person Friedrich Merz vom 26.02.2020.

  • Zusätzlich solle das Renteneintrittsalter auf 70 Jahre steigen – eine Forderung, die Merz bereits seit 25 Jahren propagiert. Also: Ohne Kündigungsschutz bis zu 17 Jahre lang Hire & Fire, bis eins endlich in die – besteuerte! – Rente gehen darf. Falls eins dann noch lebt.
  • Denn das schwebt ihm auch vor: Spätestens seit 2004 – nach anderen Quellen bereits im Jahr 2000 – forderte er die volle Besteuerung der Renten. Dies entspreche seiner Ansicht nach dem „Grundsatz der Besteuerung nach der Leistungsfähigkeit“.
  • Mit der sogenannten Aktiv-Rente will er dann dafür sorgen, daß diejenigen, die es trotzdem in die Rente geschafft haben, noch weiter arbeiten „dürfen“. Es ist bereits nach heutigen Erfahrungen davon auszugehen, daß das „dürfen“ für viele Armutsrentny eher ein „müssen“ sein wird.
  • Des weiteren forderte Merz, ebenfalls im Wahlkampf, daß bei erwerbslosen Menschen der Vermittlungsvorrang wieder eingeführt werden soll. Das hieße zum Beispiel, daß Menschen, die gerade eine sinnvolle Weiterbildung machen – nicht daß es davon allzu viele gäbe –, diese abbrechen müßten, um einen Job anzufangen, gerne auch schlecht bezahlt. Es heißt auch, daß Menschen in Jobs vermittelt werden, die unterhalb ihrer Qualifikation liegen, Hauptsache raus aus der Statistik, auch wenn sie damit die letzten Chancen, wieder in ihr eigentliches Berufsfeld einzusteigen, verlieren. Auch Menschen, die für einen ordentlichen Job erstmal ihre Bildung bzw. Qualifikation verbessern oder auch nur auf den aktuellen Stand bringen wollen bzw. müßten, werden dann halt in unqualifizierte Billig-Jobs gepreßt. Wer braucht schon qualifizierte Fachkräfte?
  • Auch will er die Zuverdienstgrenzen in seiner „Neuen Grundsicherung“ erhöhen, damit sich Arbeit lohne. Nur: für wen? Denn damit würde der Staat auch weiterhin schlecht bezahlte Arbeit subventionieren, so daß Firmen größere Gewinne einfahren können, statt die Arbeitsleistenden anständig zu bezahlen. Die zusätzliche Arbeit mit den meist monatlichen Abrechnungen mit dem ARGE, die auf die Aufstockenden abgedrückt wird, interessiert ihn natürlich nicht, genauso wenig wie er sich dafür interessiert, was geschieht, wenn dem ARGE mal wieder lustige Gründe einfallen, um kein Geld ausbezahlen oder auch welches zurückfordern zu dürfen. Auf die Idee, eine bessere Bezahlung für diejenigen zu fordern, die die eigentliche Leistung erbringen, kommt der Herr Merz natürlich nicht, das schmälert ja schließlich die Gewinne seiner Kuschelfreunde.

Zwischenbemerkung: Mit ARGE meine ich das Amt für Repression, Grundrechtsentzug und Existenzvernichtung, offiziell „Jobcenter“ genannt.

  • Was Friedrich Merz weder im Wahlkampf noch im Koalitionsvertrag mit der SPD auch nur erwähnte: Die Milliarden aus den CumEx- und CumCum-Steuertricks zurückzuholen. Da geht es ja schließlich um Reiche, das geht natürlich nicht. Angeblich will seine Regierung laut Koalitionsvertrag (Zeilen 1515/1516) zukünftig Steuerhinterziehung bekämpfen, aber offenbar nicht die bereits begangenen Fälle aufarbeiten lassen.
  • Wenn Herr Merz von Bürokratieabbau spricht, meint er natürlich nicht uns Zwangsverarmte. Wir sollen uns gefälligst weiterhin mit Formularen, Dokumenten, Beweisen, mit seitenlangen Rechtsmittelbelehrungen in winziger Schrift und mit Behörden herumschlagen, die Geld wichtiger finden als Menschen und gerne mal behaupten, Unterlagen seien halt einfach nicht bei der Akte. Was Merz tatsächlich meint: Weniger oder gar keine Kontrolle von Daten-, Arbeits- und Umweltschutz, Lieferketten und sonstigen, Störfaktoren bezüglich Gewinnsteigerungen.
  • So nebenbei läßt er die interessierte Öffentlichkeit wissen, daß er den Datenschutz generell als Störfaktor sieht und Menschen lieber mit allem überwacht, was die moderne Technik so hergibt. Daten sollen weniger geschützt und mehr genutzt werden. Da sticht insbesondere der Vorschlag seines Parteikollegen Carsten Linnemann heraus, der eine Datenbank über psychisch kranke Menschen anlegen und dazu unter anderem auch Daten aus der – sowieso datenschutzmäßig dysfunktionalen – elektronischen Patientenakte abgreifen wollte. Die Aktion T 4, das Programm zur Auslöschung „lebensunwerten Lebens“ unter der Hitler-Diktatur ab 1939 begann – mit einer Datensammlung! Und sagt hinterher nicht, das hätte niemand wissen können! (Der Herr Linnemann selbst wollte nach der Wahl dann übrigens doch kein Ministeramt – das war ihm wohl zu viel Arbeit.)
  • Im Dezember 2024 behauptete Friedrich Merz, daß zwei Drittel der aus Syrien geflüchteten Menschen in Deutschland nicht arbeiteten. Der MDR prüfte das nach und stellte fest: Das ist falsch. Die offizielle Beschäftigungsquote von Menschen aus Syrien betrug zu diesem Zeitpunkt 42 %. Allerdings wurden Menschen, die aus unterschiedlichen Gründen gar nicht arbeiten können, mit einberechnet, so auch Kinder. Bei bereits eingebürgerten Menschen aus Syrien liegt die Erwerbstätigen-Quote deutlich höher, nämlich bei 68 %. Nicht mitgerechnet sind dabei diejenigen, die sich selbständig gemacht haben, die kommen noch obendrauf. Friedrich Merz hat also schon wieder gelogen.
  • Zugleich forderte er, daß diejenigen syrischen Menschen, die nicht arbeiten könnten (wegen Traumatisierung, Krankheit etc.), wieder nach Syrien abgeschoben werden sollten. Diejenigen, die arbeiten, könnten natürlich bleiben, die würden wir ja brauchen. Er sortiert Menschen also in nützliche und nutzlose und will die seiner Meinung nach nutzlosen loswerden. Das, liebe Kinder, nennt man Wirtschaftsfaschismus!
  • Ebenfalls im Dezember 2024 forderte Merz, daß bei sozialleistungsberechtigten Menschen die Miete pauschalisiert werden solle, also nur ein fester Betrag, und dann guckt mal schön, wo Ihr eine Wohnung findet. Es könne nicht sein, so erklärte er uns, daß Sozialämter in den Städten Wohnkosten mit bis zu 20 € pro Quadratmeter finanzieren müßten. Die Zwangsverarmten sollen daher gefälligst ihr gewohntes Umfeld verlassen und ins günstigere Umland umziehen. Ihn interessiert dabei weder, ob und wie die Leute zu ihren Ärzten kommen, noch wie sie in diesem Umland bei schlechter Verkehrsanbindung eine Arbeit finden sollen, oder ihre Kinder eine Schule besuchen können.
  • Im Januar 2025 fiel die „Brandmauer“ gegenüber der AfD (sofern sie überhaupt je wirklich bestanden haben sollte). Die Merz-CDU brachte einen Antrag zur Verschärfung der Migrationspolitik in den Bundestag ein, wissend, daß sie dafür die Stimmen der AfD brauchen und bekommen würden. Die Umsetzung dieses Antrags war erstmal nicht zu erwarten. Tatsächlich ging es eindeutig darum, in den Koalitionsverhandlungen die SPD damit zu erpressen, daß man Politik mit der AfD machen werde, wenn sich die SPD nicht den Vorgaben der CDU beugt – wissend, daß die SPD so gerne umfällt. Die bundesweiten Demonstrationen mit Millionen von Teilnehmenden haben den demokratischen Herrn Merz natürlich nicht interessiert.
  • Mit diesem Antrag hat er außerdem so nebenbei sein Versprechen vom November 2024 gebrochen, vor dem Ende der Rest-Ampel-Koalition keine Abstimmung ins Parlament einzubringen, ohne sich vorher mit SPD und Grünen in der Sache abgesprochen zu haben. Angela Merkel kritisierte ihn mit den Worten: Er habe „sehenden Auges erstmalig bei einer Abstimmung im Deutschen Bundestag eine Mehrheit mit den Stimmen der AfD ermöglicht.“
  • Im Februar 2025 behauptete Friedrich Merz im sogenannten Kanzlerduell unter anderem, daß während der Ampel-Regierung in der Industrie 300.000 Arbeitsplätze weggefallen seien. Correct!v prüfte das nach und stellte fest: Die Zahl der Beschäftigten in der Industrie war in diesem Zeitraum stabil. Und wieder: Friedrich Merz hat gelogen.
  • Ebenfalls im Februar 2025 meinte er, daß er Donald Trumps Erklärung, es gebe nur Männer und Frauen, „nachvollziehen“ könne. Damit stellte er sich auch gegen den LSU, die Lesben und Schwulen in der CDU. Er will das Selbstbestimmungsgesetz zurücknehmen, angeblich zum Schutz von Kindern und Jugendlichen. Außerdem würde damit das Erziehungsrecht der Eltern untergraben. Natürlich kam auch das unsinnige Nicht-Argument von Männern in der Frauensauna und anderen Frauenschutzräumen – gerade als ob Männer einen weiblichen Geschlechtseintrag bräuchten, um Frauen belästigen zu können. Die CDU-Vizevorsitzende Silvia Breher redete in diesem Zusammenhang außerdem von einem „Geschlechtswechsel“, den trans Menschen vollziehen würden. Es sollte sich mittlerweile auch bis in die CDU-Spitzen herumgesprochen haben, daß trans Menschen ihr Geschlecht nicht wechseln oder ändern, sondern ihnen von vornherein ein falsches zugewiesen worden war und sie dieses nur korrigieren wollen. Den Geschlechtseintrag „divers“ dagegen wolle man nicht angreifen – OK, kann man ja eigentlich auch nicht, denn das Bundesverfassungsgericht hat diesbezüglich bereits geurteilt.
  • Ansonsten will er die gesichert rechtsextreme AfD immer noch „inhaltlich stellen“ – also, angeblich. Tatsächlich übernimmt er immer mehr von deren Forderungen.
  • Als Sahnehäubchen habe ich gerade gestern in der taz gelesen: Das Kabinett Merz ließ sich zur Abholung der Ernennungs-Urkunden, jede Person einzeln, in einem vermutlich gepanzerten SUV mit Fahrer die 1,6 km Weg vom Bundestag zum Schloß Bellevue und danach wieder zurück fahren. Bei sonnigem Wetter. Auf Steuerzahlerkosten. Und danach schafften sie in einer ersten Sitzung den Radverkehrsbeauftragten ab. Besser kann man nicht demonstrieren, wie scheißegal einem die Klimakatastrophe und wie heilig das Auto ist.

Und jetzt sagt mir: Ist es falsch, wenn ich den derzeitigen deutschen Bundeskanzler Friedrich Merz als

  • Lügner,
  • Hetzer,
  • Sexisten,
  • Rassisten,
  • Klimazerstörer,
  • Armenhasser,
  • als geldgeil
  • und als Wirtschaftsfaschisten

bezeichne?


Nachtrag zur Selbstkorrektur: Ich hatte zur Vorbereitung einiges an Quellen aufgerufen, diese aber nicht sofort notiert, weil ich die Rede ja erstmal gedruckt auf Papier brauchte. Dabei sind mir wohl zwei Fehler unterlaufen:

Zum einen der bereits genannte Fehler bezüglich der Forderung, Menschen, die mit 53 oder älter einen neuen Arbeitsvertrag abschließen, keinen Kündigungsschutz mehr zu gewähren. Das war 2004 und war seitdem wohl nicht mehr wiederholt worden. Vermutlich hatte ich bei dem entsprechenden Artikel nicht auf's Datum geachtet (das wird aber auch bei einigen Medien versteckt, wenn man auf die Leseansicht umschaltet, um Werbung und vor allem Tracking zu umgehen). Ich kann natürlich nicht ausschließen, daß er die Idee immer noch mit sich herumträgt, aber öffentlich geäußert hat er sie seitdem wohl nicht mehr. Damit ist auch der Absatz über die Kombination mit der Rente ab 70, also 17 Jahre lang „hire & fire“ hinfällig. Da ich das aber in der Rede so vorgetragen hatte, wollte ich das nicht kommentarlos rauslöschen.

Zum anderen finde ich die wörtliche Äußerung, man müsse die AfD „inhaltlich stellen“, nur immer wieder von Markus Söder (CSU), einmal auch von einem einzelnen Kandidaten der CDU zur Bundestagswahl. Merz hat diese genaue Formulierung wohl nicht selbst benutzt, Söder darin aber auch nicht widersprochen.

von Atari-Frosch am 31.05.2025 14:42


27.05.2025

Christoph Langner (Chrissss)

Ob wir es wollen oder nicht: WordPress setzt auf KI

Ich betreibe meinen Blog seit vielen Jahren mit WordPress. Es war nie perfekt, aber die Kombination aus einfacher Bedienung, riesigem Plugin-Ökosystem und der Möglichkeit, die Software komplett selbst zu hosten, hat damals überzeugt. Ich mag es, wenn ich Kontrolle über meine Inhalte habe und WordPress hat mir diese Kontrolle lange gewährt.

Mit der Ankündigung eines eigenen WordPress-AI-Teams macht das Projekt aber jetzt klar: KI wird in Zukunft nicht nur ein Randthema, sondern ein fester Bestandteil der Plattform werden. Die Frage ist nicht mehr, ob KI in WordPress integriert wird, sondern nur noch, wie schnell und tiefgreifend die künstliche „Intelligenz“ in WordPress Einzug erhält.

Was plant das neue AI-Team?

Laut offizieller Mitteilung soll das neue „WordPress AI Team““ alle Entwicklungen rund um künstliche Intelligenz im WordPress-Ökosystem bündeln und vorantreiben. Die Strategie folgt dabei dem „Plugin-First“-Ansatz: Neue KI-Funktionen sollen zuerst als sogenannte Canonical Plugins erscheinen, also offiziell empfohlene Erweiterungen, die später in den Core übernommen werden könnten.

Dazu gehören etwa:

  • Textvorschläge beim Schreiben von Beiträgen
  • Automatische Bildunterschriften und Barrierefreiheitshilfen
  • „Intelligente““ SEO-Optimierung
  • Unterstützung für Übersetzungen mithilfe neuronaler Modelle

Man will die Entwicklung offen und gemeinschaftlich gestalten, heißt es, allerdings stehen mit Mitarbeitern von Google und Automattic zwei Schwergewichte ganz vorne auf der Liste der Teammitglieder. Es fällt schwer, darin keinen Interessenkonflikt zu sehen.

Warum das nicht nur gute Nachrichten sind

Ich sehe KI nicht grundsätzlich negativ. In vielen Bereichen kann sie uns Arbeit abnehmen – besonders bei repetitiven Aufgaben oder sprachlichen Barrieren. Aber wenn KI zum Standard wird, stellt sich zwangsläufig die Frage: Wer hat eigentlich noch die Kontrolle?

Denn: KI-Funktionen basieren oft auf Modellen, die nicht lokal, sondern auf fremden Servern laufen – meist bei großen Cloudanbietern wie OpenAI, Google oder Amazon. Wer diese APIs nutzt, überträgt Daten dorthin. Das ist nicht nur ein Datenschutzproblem, sondern auch eine Frage der digitalen Souveränität.

Noch muss man Artikel in WordPress selber tippen oder Inhalte extern von ChatGPT und Co. aufbereiten lassen. In Zukunft will WordPress KI-Tools direkt in das CMS einbetten.

Außerdem droht eine zunehmende Abhängigkeit von kommerziellen Diensten: Wenn WordPress-Plugins plötzlich ohne Abo oder API-Schlüssel gar nicht mehr richtig funktionieren, verlieren wir als Nutzende ein Stück unserer Freiheit und das in einem System, das sich bislang auf Offenheit und Selbstbestimmung berufen konnte.

Was könnt ihr tun?

Wenn ihr WordPress nutzt und euch fragt, wie ihr mit dieser Entwicklung umgehen sollt, hier ein paar Ideen:

1. KI-Funktionen kritisch prüfen

Nicht jedes neue Feature ist ein Fortschritt. Wenn Plugins plötzlich KI-Module einführen, fragt euch: Was wird da automatisiert? Welche Daten fließen wohin? Könnt ihr das Verhalten nachvollziehen oder kontrollieren?

2. Selbst gehostete Alternativen bevorzugen

Viele Aufgaben lassen sich auch ohne Cloud-KI erledigen. Für Barrierefreiheit oder SEO gibt es Tools, die lokal arbeiten. Und wer maschinelle Übersetzung will, kann etwa LibreTranslate oder Bergamot ausprobieren. Beides sind Open-Source-Projekte, die keine Daten ins Silicon Valley schicken.

3. Community-Projekte unterstützen

Die WordPress-Welt ist groß. Wenn ihr Entwicklerinnen oder Entwickler kennt, die an datenschutzfreundlichen Plugins arbeiten, gebt ihnen Rückmeldung, bewertet ihre Projekte oder spendet ein paar Euro. Auch kleine Gesten helfen. Im deutschen Sprachraum gehört beispielsweise das Pluginkollektiv zu solchen Initiativen.

4. Den AI-Entwicklungsprozess beobachten

Die Make-WordPress-Seite zum Thema KI und der zugehörige Slack-Kanal #core-ai sind öffentlich zugänglich. Wer mitlesen oder mitdiskutieren will, kann das tun, auch ohne Google- oder Automattic-Logo im Profil.

WordPress will in Sachen KI-Entwicklung auf der Höhe der Zeit sein. Das mag aus Sicht des Projekts verständlich sein, immerhin verändert KI die Art, wie wir Inhalte erstellen, rasant. Aber aus Sicht der Nutzer bedeutet das vor allem eines: Wir müssen genauer hinschauen, wofür diese Technik eingesetzt wird und ob sie uns wirklich hilft oder nur weiter entmündigt.

von Christoph Langner am 27.05.2025 22:45


WordPress wird 22: Und ich bin seit 2006 dabei

Junge, junge. Die Zeit verfliegt. Heute, am 27. Mai 2025, wird WordPress 22 Jahre alt. Ich erinnere mich noch gut an meinen Einstieg – im Januar 2006, als ich auf meinem frisch installierten Ubuntu Breezy Badger eine WLAN-Karte von 3Com zum Laufen bringen wollte und das dokumentieren wollte. Mein Beitrag dazu war der erste Artikel auf linuxundich.de – und mein erster Blogpost überhaupt mit WordPress.

Damals lief die Version 2.0 mit dem Codenamen Duke. Das Backend war noch recht schlicht, Plugins wirkten oft wie Bastellösungen, Themes mussten von Hand angepasst werden – und von Gutenberg oder APIs war keine Rede. Trotzdem: Es hat funktioniert. Wesentlich besser als meine ersten Schritte mit Drupal oder Joomla, die ich damals ebenfalls ausprobiert hatte. Und das tut es bis heute.

Ein Dinosaurier, der sich bewegt

WordPress ist längst kein reines Blogsystem mehr. Die Zahlen sprechen für sich: Rund 43 Prozent aller Websites weltweit setzen auf WordPress, es gibt über 70.000 Plugins, mehr als 30.000 Themes und mit WooCommerce eine E-Commerce-Plattform, die ein Drittel des Markts abdeckt. Das CMS ist in über 200 Sprachen verfügbar – darunter auch viele, die in rein proprietären Plattformen keine Beachtung finden.

Klar, WordPress ist von der Technik her nicht (mehr) perfekt. PHP als Basis ist aus heutiger Sicht nicht jedermanns Sache, und ohne Caching gerät selbst ein mittelgroßer Blog schnell ins Schlingern. Aber es gibt Lösungen. Ich setze auf ein Setup mit WP Super Cache – eines der wenigen Cache-Plugins für WordPress, das keine jährliche Zahlung verlangt. Damit bleibt das System schnell und zugänglich, auch ohne großartige Serverinfrastruktur im Rücken.

So stabil WordPress als System auch wirkt – rundherum kriselt es. In den letzten Jahren gab es mehrfach Berichte über Entlassungen bei Automattic, der Firma hinter WordPress.com und vielen zentralen Projekten im WordPress-Ökosystem. Auch der Führungsstil von Matt Mullenweg, Mitgründer von WordPress und CEO von Automattic, steht zunehmend in der Kritik: zu viel Macht in einer Hand, intransparente Entscheidungen, eine wachsende Kluft zwischen kommerziellem Kurs und Community-Anspruch.

Viele in der Community fühlen sich übergangen, wenn Funktionen wie der Gutenberg-Editor oder neue Standards eingeführt werden, ohne ausreichende Diskussion auf Augenhöhe. WordPress ist ein offenes Projekt – aber die Realität fühlt sich manchmal anders an. Das schmälert für mich nicht den Wert der Plattform, zeigt aber, dass wir auch bei freier Software genau hinschauen müssen, wer die Richtung vorgibt.

WordPress oder statischer Seitengenerator?

Viele Entwickler zieht es heute zu Generatoren wie Hugo, Jekyll oder Ghost, die statische Seiten erzeugen und den klassischen LAMP-Stack umgehen. Ich verstehe das gut. Ich schreibe meine Texte fast ausschließlich im Markdown-Format, oft direkt in Apostrophe auf GNOME. Statische Generatoren passen da hervorragend ins Bild – kein Datenbankserver, keine PHP-Engine, keine laufenden Prozesse. Reine HTML-Dateien lassen sich bequem per rsync oder über GitHub Pages veröffentlichen.

Dieser Artikel entsteht in Apostrophe, einem schlanken Editor für Markdown. Er bietet eine reduzierte Schreibumgebung direkt unter Linux mit GNOME.

Trotzdem bin ich bei WordPress geblieben. Warum? Weil es einfach läuft. Die Verwaltung ist bequem, das Backend ist durch Gutenberg aufgeräumt und mit Markdown-Unterstützung gut nutzbar. Auch mobil kann ich Beiträge pflegen oder Kommentare moderieren. Und durch die schier unendliche Plugin-Landschaft lässt sich das System flexibel anpassen, ohne dass man jedes Feature selbst programmieren müsste.

In den letzten 20 Jahren hat sich allerdings leider auch viel verändert. Inzwischen ist so gut wie jedes Plugin kommerziell. Die kostenlosen Varianten sind oft auf wenige Grundfunktionen reduziert. Und statt einmaliger Käufe gibt es bei vielen Plugins nur noch Abo-Modelle. Es gibt nur noch sehr wenige Entwickler\:innen oder Gruppen wie das Pluginkollektiv, die mit Plugins wie Antispam Bee oder Statify grundsolide, datenschutzfreundliche Werkzeuge anbieten – vollumfänglich kostenlos und unter freien Lizenzen.

Der gleiche Artikel im Gutenberg Editor von WordPress. Mit Blöcken, Vorschau und einfacher Medienintegration vereinfacht der Editor das „Bauen“ des Artikels für das Web.

Fazit: Alt, aber bewährt

WordPress ist heute so relevant wie eh und je. Es mag altmodisch erscheinen, vor allem im Vergleich zu minimalistischen, Markdown-basierten Generatoren – doch genau das ist seine Stärke: Stabilität, Flexibilität und eine Community, die auch nach über zwei Jahrzehnten aktiv bleibt. Ich habe viel mit anderen Systemen experimentiert, bin aber immer wieder zurückgekehrt. Es läuft einfach.

Von daher: Herzlichen Glückwunsch, WordPress. Auf weitere 22 Jahre – und darauf, dass wir unsere Inhalte weiterhin unabhängig veröffentlichen können. Egal ob mit CMS, statischen Generatoren oder anderen Werkzeugen. Hauptsache: selbstbestimmt, offen, unter unserer Kontrolle. Irgendwie müssen wir ja weiterhin für ein freies und unabhängiges Netz ohne große Konzerne kämpfen.

von Christoph Langner am 27.05.2025 06:05


26.05.2025

Joerg Kastning (Tronde)

Linux-Server mit oder ohne Swap-Partition bereitstellen?

Wir schreiben das Jahr 2025. Die Frage, ob man Linux-Server mit oder ohne Swap-Partition betreiben sollte, spaltet die Linux-Gemeinschaft in einer Weise, wie wir es seit dem Editor War nicht mehr gesehen haben…

So könnte ein spannender Film für Sysadmins anfangen, oder? Ich möchte aber keinen Streit vom Zaun brechen, sondern bin an euren Erfahrungen und Gedanken interessiert. Daher freue ich mich, wenn ihr euch die Zeit nehmt, folgende Fragen in den Kommentaren zu diesem Beitrag oder in einem eigenen Blogpost zu beantworten.

  • Stellt ihr Linux-Server mit Swap-Partition bereit und wie begründet ihr eure Entscheidung?
  • Hat euch die Swap-Partition bei sehr hoher Speicherlast schon mal die Haut bzw. Daten gerettet?
  • War der Server während des Swapping noch administrierbar? Falls ja, welche Hardware wurde für die Swap-Partition genutzt?

Eine kleine Mastodon-Umfrage lieferte bisher folgendes Bild:

Quelle: https://social.anoxinon.de/@Tronde/114485601894007649

Schaue ich mir meine eigenen Server an, so ergibt sich ein gemischtes Bild:

  • Debian mit LAMP-Stack und Containern: 16 GB RAM & kein Swap
  • RHEL-KVM-Hypervisor 1: 32 GB RAM & 4 GB Swap
  • RHEL-KVM-Hypervisor 2: 128 GB RAM & kein Swap
  • RHEL-Container-Host (VM): 4 GB RAM & 4 GB Swap

Bis auf den Container-Host handelt es sich um Bare-Metal-Server.

Ich kann mich nicht daran erinnern, dass jemals einem dieser Systeme der Hauptspeicher ausgegangen ist oder der Swapspeicher genutzt worden wäre. Ich erinnere mich, zweimal Swapping auf Kunden-Servern beobachtet zu haben. Die Auswirkungen waren wie folgt.

Im ersten Fall kamen noch SCSI-Festplatten im RAID zum Einsatz. Die Leistung des Gesamtsystems verschlechterte sich durch das Swapping so stark, dass bereitgestellten Dienste praktisch nicht mehr verfügbar waren. Nutzer erhielten Zeitüberschreitungen ihrer Anfragen, Sitzungen brachen ab und das System war nicht mehr administrierbar. Am Ende wurde der Reset-Schalter gedrückt. Das Problem wurde schlussendlich durch eine Vergrößerung des Hauptspeichers gelöst.

Im zweiten Fall, an den ich mich erinnere, führte ein für die Nacht geplanter Task zu einem erhöhten Speicherverbrauch. Hier hat Swapping zunächst geholfen. Tasks liefen zwar länger, wurden aber erfolgreich beendet und verwendeter Hauptspeicher wurde anschließend wieder freigegeben. Hier entstand erst ein Problem, als der Speicherbedarf größer wurde und die Swap-Partition zu klein war. So kam es zum Auftritt des Out-of-Memory-Killer, der mit einer faszinierenden Genauigkeit immer genau den Prozess abgeräumt hat, den man als Sysadmin gern behalten hätte. Auch hier wurde das Problem letztendlich durch eine Erweiterung des Hauptspeichers gelöst.

Ich erinnere mich auch noch an die ein oder andere Anwendung mit einem Speicherleck. Hier hat vorhandener Swap-Speicher das Leid jedoch lediglich kurz verzögert. Das Problem wurde entweder durch einen Bugfix oder den Wechsel der Anwendung behoben.

Nun bin ich auf eure Antworten und Erfahrungsberichte gespannt.

von Jörg Kastning am 26.05.2025 05:00


16.02.2025

Christian Imhorst (immi)

Minecraft auf dem Raspberry Pi 5 installieren

Minecraft auf dem Raspberry Pi 5 zu installieren war etwas tricky, aber dafür läuft es erstaunlich gut. Der Raspberry Pi ist das Modell mit 8GB RAM und natürlich mit einem Lüfter versehen. Statt von einer SD-Karte startet das aktuelle Raspberry Pi OS (64-bit) dabei von einer SSD. Die SSD habe ich mit einem USB3 zu SATA-Adapter an den Raspi 5 angeschlossen und dann mit „SD Card Copier“ den Inhalt der SD-Karte auf die SSD übertragen. Den Pi heruntergefahren, SD-Karte entfernt und anschließend ist er von der SSD neu gestartet. Das ist für mich erstmal ausreichend, weil beides schon vorhanden war, wobei es direkt mit einem NVMe Shield und Festplatte vermutlich noch besser läuft.

Für Minecraft habe ich dann die Pi-Apps installiert:

wget https://raw.githubusercontent.com/Botspot/pi-apps/master/install
less install # Skript überprüfen
bash ./install # Installation starten

Außerdem wird noch eine aktuelle Java-Version benötigt, die aber leider nicht in der Paketverwaltung von Raspberry Pi OS vorhanden ist und manuell installiert werden muss. Aktuell ist OpenJDK 23, benötigt wird der Build Linux/AArch64. Wenn OpenJDK 24 aktuell ist, würde ich die Version herunterladen, bei 25 dann die und so weiter.

Das heruntergeladene Archiv habe ich in das Verzeichnis /opt entpackt:

sudo tar -xzf openjdk-23.0.2_linux-aarch64_bin.tar.gz -C /opt/

Und dann die Java-Version zur aktuellen Version auf dem Pi gemacht (hier ist der gesamte Befehl wichtig, inklusive der 1 am Ende):

sudo update-alternatives --install /usr/bin/java java /opt/jdk-23.0.2/bin/java 1
sudo update-alternatives --config java

Mit einem java --version kann man dann die aktuelle Java-Version prüfen, die in diesem Fall 23.0.2 sein sollte.

Bevor wir Minecraft starten können, muss noch der Launcher installiert werden. Dazu startet man die Pi-Apps vom Desktop und wählt in der Kategorie „Games“ den Launcher. Hier habe ich den Prism Launcher genommen, weil Open Source und weil er im Gegensatz zum „GDL Launcher“ funktioniert hat. Beim „GDL Launcher hatte ich diese Fehlermeldung:

LinkageError aufgetreten javalang. UnsupportedClassVersi onError: net/minecraft/client/main/Main has been compiled by a more recent version of the Java Runtime (class file version 65.0), this version of the Java Runtime only recognizes class file versions up to 61.0

Angeblich passen die Java-Versionen nicht zusammen. Da Prism funktioniert, habe ich GDL wieder deinstalliert und mich mit dem Problem nicht weiter beschäftigt.

Nach dem Start des Launchers muss man noch seine „Microsoft Login“-Daten eingeben. Besitzt man Minecraft bereits kann man sich einfach anmelden. Wenn nicht, muss man es kaufen, da es sich um ein kostenpflichtiges Spiel handelt. Nachdem du dich angemeldet hast, klickst du auf das Pluszeichen links unten und wählst die neueste Version von Minecraft (in meinem Fall war es 1.21.4). Der Launcher beginnt jetzt mit der Installation der Spieldateien, was eine Weile dauern kann. Wenn das erledigt ist, klickst du auf den Start-Button, um das Spiel zu starten.

Happy Minecrafting! :)

von Christian Imhorst am 16.02.2025 12:48


14.02.2025

Jörg Kruse (4A4B)

DNS-Records für Domain ohne E-Mail-Empfang und -Versand

Nicht selten werden Domains nur als Web-Domain füs die eigenen Webseiten verwendet, jedoch nicht als E-Mail-Domain. Im Impressum wird dann beispielsweise die E-Mail-Adresse einer anderen Domain angegeben. Im Zonefile der Domain gibt es entsprechend keinen MX Record, welcher auf einen Server verweist, der Mails entgegennimmt. Allerdings probieren viele sendende Mailserver dann ersatzweise den Versand an den Server, welcher im A- bzw. im AAAA-Record aufgeführt ist.

Mit einem „Null MX Record“ im Zonefile kann klar zum Ausdruck gebracht werden, dass es keinen empfangenden Mailserver gibt, so dass solche überflüssigen Versuche an anderer Stelle künftig ausbleiben:

@		IN	MX	0 .

Wenn unter der betreffenden Domain keine Mails versendet werden, dann kann mit Einträgen im Zonefile auch das Absender-Spoofing durch Dritte effektiver unterbunden werden, sofern die folgenden Records von empfangenden Mailservern berücksichtigt werden. Mit einem SPF-Reford werden global alle Hosts als Sender ausgeschlossen:

@		IN	TXT	"v=spf1 -all"

Zusätzlich kann eine DMARC-Policy „reject“ klarstellen, dass Mails entsprechend dem SPF-Record und mangels DKIM-Record unbedingt zurückzuweisen sind.

_dmarc		IN	TXT	"v=DMARC1; p=reject"

von Jörg Kruse am 14.02.2025 14:20


05.02.2025

Malte Schmidt (maltris)

webh.pl VPS Review

Vergangene Woche wurde ich auf webh.pl aufmerksam, einen Internet Service Provider mit Standort Lodz, Polen. Nach kurzer Anfrage erhielt ich die Möglichkeit, eins ihrer VPS-Pakete für über eine Woche unter die Lupe zu nehmen. Generell bin ich hin und wieder auf der Suche nach kleinen, effizienten, zumeist virtuellen Systemen, auf denen unter anderem diese Webseite gespeichert und ausgeliefert werden kann. Bislang fuhr ich mit servercow.de, einem Dienst vom mailcow-Entwickler André Peters, sehr gut. Und auch weiterhin bin ich von seinem Service begeistert und werde ihm keineswegs den Rücken kehren. Dennoch schadet es sicher nicht, einmal einen Ausflug zu anderen Anbietern zu wagen und deren Benutzerfreundlichkeit und Leistungen in ein Verhältnis zu setzen.

Im weiteren Verlauf dieses Artikels werde ich die einzelnen Komponenten ausgiebig testen und versuchen, die Ergebnisse relativ mit früheren Tests vergleichen.

Sollte euch der Test gefallen haben und solltet ihr euch für webh.pl entscheiden, würde ich mich freuen, wenn ihr meinen Referral-Link oder -Code bei der Registration/Bezahlung verwenden würdet. Vorteil für euch: 20% Rabatt auf die erste Bezahlung:

Für den Referral-Link hier klicken oder den Promo-Code “PROMO46344” verwenden.

Intro

Bei dem Test-VPS handelt es sich um das Paket “KVM Standard” mit folgenden Leistungsmerkmalen:

  • 4 vCPUs
  • 8GB RAM
  • 80GB SSD Speicher (500GB/1000GB HDD Speicher für 40/80 Zloty zubuchbar)
  • keine Limitierung für Datentransfers

Der Preis liegt in dieser Ausstattung bei 90 Zloty pro Monat, derzeit sind das 19,64 Euro. Ist man mit 2 vCPUs zufrieden, drückte das den Monatspreis auf 60 Zloty pro Monat, etwa 13,09 Euro.

Zusätzliche Daten

  • Standort Polen (Lodz)
  • SLA von 99,9%
  • Root-Zugriff
  • Jederzeit Zugriff via VNC
  • Installation von individuellen ISO-Dateien
  • Skalierbarkeit (die Grundpakete können später im Webinterface beliebig skaliert werden)
  • Automatische, stündliche Snapshots
  • Snapshots werden 14 Tage rückwirkend aufbewahrt
  • Snapshots können vom vmmanager aus wiederhergestellt werden
  • Der Kunde erhält einen zusätzlichen virtuellen Server für die Wiederherstellung von Daten aus Snapshots
  • Snapshots haben keinen Einfluss auf die Performance des Servers
  • Angegebene Ressourcen werden garantiert
  • Keine Einschränkungen für Gameserver oder andere netzwerkintensive Anwendungen, keine Blockade von Torrents

Bezahlmöglichkeiten

  • EU-Banküberweisung
  • PAYU (VISA und MasterCard)
  • PayPal

Die Webinterfaces

Registration und Billing

Die Registration erfolgte unter https://ssl.webh.pro/ und war äußerst schnell und unkompliziert erledigt.

Das “ISPsystem billmanager“-basierte Interface ist übersichtlich, wirkt jedoch etwas altbacken. jedoch bietet es in übersichtlicher Form alle notwendigen Einstellungen und Übersichten. Einen sehr positiven Eindruck erhalte ich von der Geschwindigkeit des Interfaces.

VPS-Management

Die Steuerung des VPS ansich erfolgt im “ISPsystem vmmanager”-basierten Webinterface. Dieses passt designtechnisch zum Billing-Interface, dient jedoch explizit der Verwaltung von VPS.

Mein Test-VPS wurde bei Erstellung sofort mit CentOS 7 eingerichtet. Eine Neuinstallation ist über das Interface leicht zu erreichen, dabei konnte ich zwischen folgenden Presets wählen:

  • CentOS 7
  • CentOS 8
  • Debian 8
  • Debian 9
  • Debian 10
  • FreeBSD 11
  • FreeBSD 12
  • Ubuntu 16.04
  • Ubuntu 18.04

Diese wiederum bieten unterschiedliche “Recipes”, also “Rezepte”, mit denen ich automatisiert bestimmte Anwendungen vorinstallieren lassen kann:

  • Bitrix CRM
  • Django
  • ISPmanager Lite
  • LAMP
  • OpenVPN
  • Redmine
  • Teamspeak
  • Tomcat
  • VMmanager

Hier merke ich: Es wird sich Mühe gegeben, indem man aktuelle Betriebssysteme fertig zur Installation anbietet und dem Kunden so Zeit und Aufwand spart.

Zum Test entschied ich mich für ein aktuelles Ubuntu 18.04 “bionic”, da ich mir hiermit neben einem aktuellen Kernel auch aktuelle Versionen der Tools für Netzwerk- und Performancetests erhoffte. Leider stellte sich später heraus, dass diese Entscheidung einen teil meiner Netzwerk-Performancetests stören würde.

Bequeme Zusatzfunktion: Ich kann im vmmanager direkt meinen SSH-Pubkey angeben, sodass dieser direkt hinterlegt wird und ich mir somit einen lästigen Passwort-Login spare. Leider führt im Fall Ubuntu 18.04 diese Funktion dazu, dass eine Reinstallation sich aufzuhängen scheint – hier besteht noch Verbesserungsbedarf.

Nützlich: webh.pl erlaubt es dank entsprechender Virtualisierungstechnologie, Systeme mit individuellen vom Kunden hochladbaren ISO-Dateien zu installieren. Wollte ich also Fedora installieren, welches webh.pl nicht als fertiges Image anbietet, könnte ich dies über diese Funktion recht einfach tun. Mit entsprechender Konfiguration (Festplattentreiber, Netzwerktreiber) ließ sich im Test sogar ein uraltes Windows XP Pro SP3 installieren:

Um von den nützlichen Logging-Funktionen, auch dem Performance-Logging, beider Interfaces gebrauch zu machen, empfiehlt es sich, die Zeitzone im Interface korrekt zu konfigurieren. Diese stand per default auf “Afrika/Windhoek”, was einen Zeitversatz bedeutet und unter Umständen für Verwirrung sorgen könnte.

Allgemeines

Reinstallationen

Ubuntu 18.0453 Minuten (mit SSH-Key, abgebrochen)
Ubuntu 18.0434 Minuten (mit SSH-Key, abgebrochen)
Ubuntu 18.046 Minuten (ohne SSH-Key)
Ubuntu 16.045 Minuten
CentOS 75 Minuten
CentOS 85 Minuten
FreeBSD 1212 Minuten
FreeBSD 1115 Minuten
Debian 105 Minuten
Debian 94 Minuten
Debian 85 Minuten
Tabelle: Dauer von Reinstallationen unterschiedlicher Betriebssysteme

Die Reinstallationen funktionieren zuverlässig, sauber und schnell. Wird jedoch über das Webinterface ein SSH-Pubkey eingegeben, so hängt sich das System bei der Installation auf und reagiert nicht mehr. Startet man es dann manuell neu, wird man automatisch in die GRUB2-Kommandozeile eingeloggt, da GRUB nicht vollständig konfiguriert wurde.
Eine Reinstallation ohne vorher eingegebenem SSH-Key funktioniert fehlerfrei.

Nach der erfolgten Installation kann ich nun also meinen SSH-Key unter Zuhilfenahme des Passworts auf die Maschine kopieren und mit der Einrichtung meines Servers fortfahren:

ssh-copy-id root@91.205.75.239
ssh root@91.205.75.239

IP-Adressen

Eine Recherche der mir zugewiesenen IPv4 ergab, dass die IP bereits von anderen vorherigen Kunden genutzt wurde. Ein Blacklist-Check lieferte jedoch ein sauberes Ergebnis. Eine entsprechende Bereinigung und Cooldown-Periode wird von entsprechend guten Internet Service Providern nach Kündigung vorgenommen.

Support

webh.pl bietet Support unter anderem in ihrer Muttersprache Polnisch, aber auch in Englisch und Deutsch an. 4 mal habe ich den Support unvermittelt kontaktiert und die Reaktionszeit aufgezeichnet.

Die Antworten kamen zügig und man kann in diesem Preissegment und ohne zugesicherte Support-Antwortzeiten wirklich nichts bemängeln:

27.03.2020 20:32 -> 20:342 Minuten
28.03.2020 07:54 -> 09:15159 Minuten
29.03.2020 20:41 -> 20:454 Minuten
02.04.2020 08:58 -> 09:3335 Minuten
webh.pl Support-Reaktionszeiten

Hostsystem und Virtualisierungslösung

Laut dmidecode kommt ein Red Hat Enterprise Linux 7 auf dem Hostsystem zum Einsatz. Zugewiesen sind der VM wie bereits erwähnt 4 vCPU-Kerne mit Taktraten von je 2793 MHz.

/proc/cpuinfo verrät in diesem Fall nicht den konkreten Typ der CPU, jedoch lässt sich erahnen, um welchen es sich handelt (Skylake Model 85, 4 MiB L2 Cache, 2793 MHz, Stepping 4):

4112 Xeon Silver $ 473.00 11 July 2017 4 8 2.6 GHz 3 GHz 85 W 4 MiB 8.25 MiB DDR4-2400 768 GiB

CPU-Vulnerability Mitigations

root@m:~# tail /sys/devices/system/cpu/vulnerabilities/*
==> /sys/devices/system/cpu/vulnerabilities/itlb_multihit <==
KVM: Vulnerable

==> /sys/devices/system/cpu/vulnerabilities/l1tf <==
Mitigation: PTE Inversion

==> /sys/devices/system/cpu/vulnerabilities/mds <==
Vulnerable: Clear CPU buffers attempted, no microcode; SMT Host state unknown

==> /sys/devices/system/cpu/vulnerabilities/meltdown <==
Mitigation: PTI

==> /sys/devices/system/cpu/vulnerabilities/spec_store_bypass <==
Vulnerable

==> /sys/devices/system/cpu/vulnerabilities/spectre_v1 <==
Mitigation: usercopy/swapgs barriers and __user pointer sanitization

==> /sys/devices/system/cpu/vulnerabilities/spectre_v2 <==
Mitigation: Full generic retpoline, STIBP: disabled, RSB filling

==> /sys/devices/system/cpu/vulnerabilities/tsx_async_abort <==
Not affected

Konkret ist es so, dass die potenziellen Sicherheits- und Denial of Service-Lücken itlb_multihit, MDS und spec_store_bypass laut Gastsystem nicht abgeschaltet scheinen und daher potenziell ausgenutzt werden können. Da es sich jedoch um eine virtualisierte Lösung handelt, ist es durchaus denkbar, dass diese Lücken in Wirklichkeit umgangen werden, dies aber vom Gastsystem nicht feststellbar ist.

“I have received information that we’re not showing patches in /sys/devices/system/cpu/vulnerabilities/* for security reasons.”

webh.pl Support

Besonderheit ext4 reserved space bei vergleichsweise kleinen Festplattenspeichern

Aufgrund der per Standard knapp bemessenen 40/80G an Speicherplatz, ist es sinnvoll, Speicher zu sparen wo möglich. Empfehlenswert ist hierbei unter anderem, bei ext4-Dateisystemen den “Reserved Space” (normal 5%) zu verkleinern oder, wenn möglich, sogar komplett abzuschalten.

tune2fs -m 0.5 /dev/vda2 # Reservierter Speicher auf 0,5%
tune2fs -m 0 /dev/vda2 # Reservierter Speicher deaktiviert

Besonderheit Swapfile

Im neuesten Ubuntu LTS wurde begonnen, nicht mehr länger SWAP-Partitionen zu erstellen, sondern auf Swapfiles zu setzen. So auch im Standardsetup von webh.pl: Ein 2G großes Swapfile wird erstellt, welches selbstverständlich von dem zugesicherten Festplattenspeicher abgezogen wird. Möchte man diesen Speicher freigeben, kann man das Swapfile deaktivieren und entfernen. Es ist keine Rekonfiguration der Partitionstabelle mehr notwendig.

Routing

Das Routing spielt bei einem Server meist eine wichtige Rolle, da mit jedem Hop, der nicht passiert werden muss, die Latenz sinkt, was sich wiederum auf Anwendungen und deren Kommunikation auswirkt. Daher testete ich das Routing aus den Netzen unterschiedlicher Internetanbieter und von unterschiedlichen Standorten aus.

tkchopin.pl – webh.pl

servercow.de (meerfarbig Gmbh & Co. KG) – webh.pl

hetzner FSN1-DC1 (Falkenstein) – webh.pl

Vodafone DSL (Stuttgart) – webh.pl

Die Maps wurden generiert mit dem Leaflet Traceroute Mapper von Peter Thomson, welcher wiederum auf dem Traceroute Mapper von Stefan Sundin basiert, die Kartendaten stammen von OpenStreetMap.

Zumindest im Fall des Endkunden-Zugangs über tkchopin.pl, einem lokalen Internet- und Kabel-TV-Anbieter, erhielt man zum Zeitpunkt des Tests ein vergleichsweise direktes Routing. Für den Zugriff aus Deutschland war zweimal das Routing über Warschau und Stettin unumgänglich.

Das Routing von hetzner in Falkenstein nach webh.pl in Lodz war absurder, der fünfte Hop erfolgte über Großbritannien, was jedoch auch auf einen Fehler in der Datenbank von ipinfo.io zurückzuführen sein kann.

Netzwerkkonfiguration

Es handelt sich auf dem Server um eine statische Netzwerk-Konfiguration, welche im Fall von Ubuntu 18.04 nicht netplan/networkd-basierend ist, sondern auf die ältere ifupdown-Konfigurationsmethode in /etc/network/interfaces setzt.

auto ens3
iface ens3 inet static
address 91.205.75.239/24
gateway 91.205.75.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 1.1.1.1 8.8.4.4
dns-search webh.me

DNS

Ein Blick in die /etc/resolv.conf zeigt, da es sich um Ubuntu 18.04 handelt, dass systemd-resolved zum Einsatz kommt. Das war zu erwarten. Um also die wirklich genutzten DNS-Resolver herauszufinden, ist es notwendig, “systemd-resolve –status” auszuführen oder die /etc/systemd/resolved.conf oder die /etc/network/interfaces zu konsultieren.

Per default sind auf dem Testsystem die DNS-Resolver 1.1.1.1 (Cloudflare) und 8.8.4.4 (Google Public DNS Secondary) hinterlegt.

IPv6

Während des Tests fiel mir auf, dass das Testsystem über keine IPv6 verfügte. Auch der Versuch, eine solche über den vmmanager aufzuschalten schlug fehl. Eine Nachfrage bei webh.pl sorgte dann für Klarheit:

“We’re not offering ipv6 for now, but we’re going to offer it in the future.”

webh.pl Support

Demnach wird webh.pl IPv6 in Zukunft anbieten, was meiner Meinung nach im Jahre 2020 auch ein Muss darstellt.

Reverse-DNS

Im Test wurde nicht klar, wie Reverse-DNS-Einträge zu ändern sind. Zwar bietet der vmmanager eine solche Funktion, jedoch sorgte eine Anpassung dort nicht für das gewünschte Ergebnis. Auf Anfrage teilte der Support mit

“We’re using different IP subnets for our clients. For some of them, clients can change revdns using control panel, for rest we can change it upon request.”

webh.pl Support

Es handelt sich hierbei also offenbar um eine IP aus einem der Subnetze, für die eine Änderung der Reverse-DNS-Einträge nur aufschließlich über den webh.pl-Support erfolgen kann.

Performancetests

Netzwerk-Datentransferraten

Für die Datentransfers nutzte ich weiterhin speedtest-cli und wählte daher folgende Peers gewählt:

  • 30907) Deutsche Telekom Technik GmbH (Berlin, Germany) [394.94 km]
  • 4886) Stadtwerke Neumünster GmbH (Neumunster, Germany) [538.44 km]
  • 18667) meerfarbig GmbH & Co. KG (Frankfurt, Germany) [818.46 km]
  • 21514) Contabo GmbH (Munich, Germany) [855.26 km]

Diese werden im Abstand von 20 Minuten jeweils doppelt sequenziell getestet und die Ergebnisse mittels –csv Parameter und entsprechender Ausgabeumleitung als CSV in eine Tabelle zur späteren Verarbeitung geschrieben, etwa so:

30907,Deutsche Telekom Technik GmbH,Berlin,2020-03-28T07:17:20.127799Z,422.89016707081726,27.723,189797326.6667173,4150220.759736613,,91.205.75.239
30907,Deutsche Telekom Technik GmbH,Berlin,2020-03-28T07:17:41.287859Z,422.89016707081726,23.271,188071670.36669397,4150181.2915712413,,91.205.75.239
20478,Contabo GmbH,Nuremberg,2020-03-28T07:18:02.505737Z,646.0977991623539,35.526,182002432.52288514,4067378.244187205,,91.205.75.239

Leider birgt die von Ubuntu paketierte speedtest-cli einen Bug, welcher hier dokumentiert ist und dafür sorgt, dass Upload-Tests bei etwa 4 Mbit/s limitiert werden. Unglücklicherweise wurde ich auf diesen Umstand erst nach dem Test von einer Woche Testdauer aufmerksam. Aus diesem Grund beinhalten die folgenden Graphen lediglich Download-Datenpunkte.

Downloadraten aus Richtung der 4 unterschiedlichen Peers, Angaben in Mbit/s

Die Transferraten sind relativ stabil zwischen 192 und 177 Mbit/s jenach Peer. Vereinzelt gab es Streuung nach unten in den Abendstunden und einigen Ausreißern, welche hauptsächlich auf die Gegenstellen zurückzuführen sind.

Zuvorkommend: Bereits nach dem Testzeitraum bot mir webh.pl auf Nachfrage an, den Server zwei weitere Tage testen zu können, um zumindest einige Ergebnisse zu den Uploadraten zu sammeln.

RAM-Benchmark

Für den RAM-Benchmark mache ich mir wieder sysbench und dessen memory-Modul zunutze. Ich teste den Datendurchsatz von Schreib- als auch den von Lesevorgängen.

sysbench --threads=4 memory run

Pro Testdurchlauf erhalte ich damit folgenden Output:

Total operations: 39587238 (3958095.14 per second)
38659.41 MiB transferred (3865.33 MiB/sec)
Durchsatzraten lesend und schreibend (Datenpunkte “lesend” wurden seltener und erst später gesammelt)

Im Test zeigte sich, dass die Durchsatzraten lesend zwischen 16000 MiB/s und 18000 MiB/s lagen und nur sehr selten unter 16000 MiB/s fielen.
Die Durchsatzraten schreibend hingegen lagen meist bei 5000 MiB/s und fielen nur selten unter 4500 MiB/s.

Im Ranking liegt das Testsystem von webh.pl damit hinter meinem in die Jahre gekommenen ThinkPad T420 (wenn ausgestattet mit zwei DDR3-1333-Riegeln) und dem performantesten meiner Servercow-vServer. Absolut betrachtet bietet webh.pl jedoch trotzdem vernünftige und auch über längere Zeiträume stabile RAM-Durchsatzraten.

“All servers have ddr4 ecc ram bands.”

webh.pl Support

CPU-Benchmark

sysbench CPU Benchmark über die gesamte Testdauer

Der CPU-Test fiel kleiner aus, da ich hierzu diesmal nur die “events per second” aufnahm. Hier zeigte sich, dass dieser Wert über den gesamten Testzeitraum hinweg zwischen 3600 und 4400 Events lag. Während dieser Wert ansich keine Aussage über die absolute CPU-Leistung zulässt, zeigt er doch die Abweichungen in bestimmten Lastsituationen (beispielsweise nachts, wenn CPU-intensive Anwendungen wie zur Kompression von Logs laufen).

Da ich zu dieser Metrik derzeit keine weiteren Vergleichswerte habe, fällt es hier schwer, die Ergebnisse ins Verhältnis zu setzen. Mein mittelmäßig ausgelasteter i5-2520M im ThinkPad T420 schaffte im Schnitt 2500 events pro Sekunde.

Bessere CPU-Tests bietet beispielsweise die Phoronix Test Suite, indem sie echte Anwendungsfälle (beispielsweise das kompilieren einer bestimmten Kernel-Version) abdeckt und die benötigte Zeit misst und aufzeichnet.

“In our infrastructure we use different processors within Intel Xeon Scalable gen 1 and gen 2 series.”

webh.pl Support

IO-Benchmark

Auch für den IO-Benchmark habe ich Daten über mehrere Tage hinweg aufgezeichnet. Im Schnitt erreichte ich hier für die folgenden Modi die folgenden Performancewerte:

seq read cached/direct5900/183
rnd read cached/direct7500/171
seq write cached/direct174/48
rnd write cached/direct111/114
Angaben in MiB/s

“We have infrastructure where our hosts and storage are on different nodes. We’re attaching our working nodes to storage nodes. We’re using both ssd and nvme drives within our storage nodes and we’re currently moving everything to nvme.”

webh.pl Support

Fazit

Für wen die Systeme von webh.pl geeignet sind

Wer auf der Suche nach einem VPS mit stabiler Internetanbindung, gutem Standort und äußerst schnellem, freundlichem und zuvorkommendem Support ist, ist mit webh.pl gut bedient. Die Angebote sind nicht die billigsten, aber das Preis/Leistungs-Verhältnis stimmt definitiv.

webh.pl kommt in meinem Fall für zukünftige Projekte definitiv in die engere Auswahl.

Anmerkungen

Derzeit wird die Webseite von webh.pl in die englische und russische Sprache übersetzt. Deutsch soll laut webh.pl anschließend auch folgen. Es zeigte sich jedoch auch, dass eine automatische Übersetzung mit Google Translator völlig ausreichend ist, da die anschließenden Webinterfaces in vielen unterschiedlichen Sprachen, darunter Deutsch, verfügbar sind.

Bis auf die hängende Installation mit vorab eingegebenen SSH-Keys, die Tatsache, dass es noch kein IPv6 gibt und in manchen Fällen die Änderung von Reverse-DNS-Einträgen nicht durch den Kunden möglich ist, bin ich positiv beeindruckt.

Während dieses Tests …

Für diesen Test wurden insgesamt circa 1810G an Daten herunter- und 90G an Daten hochgeladen. Ferner wurden 203296740 ms (~56h) CPU-Zeit verbraucht und 211.680.000 IOPS durchgeführt.

von maltris am 05.02.2025 08:00


16.01.2025

Bernd Dau (whisper)

Spam-Score Auswertung

Ich weiß nicht, ob an dem dahinter liegenden Script Interesse besteht...

Einfach melden.

 

von bed (nospam@example.com) am 16.01.2025 08:56


15.01.2025

(c3f2o)

Radikalisierung und Strategie: Der AfD-Bundesparteitag in Riesa als Zäsur

Am 11. und 12. Januar fand im sächsischen Riesa der Bundesparteitag der AfD statt, begleitet von massiven Protesten. Rund 600 Delegierte wählten unter anderem Partei- und Fraktionschefin Alice Weidel zur Kanzlerkandidatin und beschlossen die Aufnahme des Begriffs „Remigration“ ins Wahlprogramm. Weidels Rede sowie zahlreiche Anträge enthielten radikale Positionen, die öffentlich als Zeichen der weiteren Radikalisierung […]

von invia1200 am 15.01.2025 13:23


09.01.2025

(c3f2o)

Herr Merz: Schnauze halten!

Friedrich Merz will härter gegen straffallige Migrantenvorgehen. Warum? Weil ihm nichts Besseres einfällt, um in Schlagzeilen zu kommen. Der Mann, der einst „mehr Porsche wagen“ wollte, entdeckt plötzlich seine Liebe zum Polizeistaat – zumindest, wenn es um die anderen geht. Deutsche Täter? Steuerhinterzieher?Wirtschaftskriminelle? Keine Erwähnung. Aber der „kriminelle Ausländer“ – das zieht immer. Merz, der […]

von invia1200 am 09.01.2025 12:30


15.09.2024

Dominik Kupschke (bommi)

Protect against Display Name Spoofing with Rspamd

Email security is an ever-evolving field, and one of the persistent threats is display name spoofing. This attack involves forging the display name in an email to trick recipients into thinking the message is from a trusted source. While Rspamd is a powerful tool for combating spam and improving email security, it can be fine-tuned […]

von Dominik Kupschke am 15.09.2024 18:08


21.08.2024

Daniel Gestl (mcdaniels)

Wiki für Linuxinteressierte und Einsteiger – wiki.techgamegeek.com

In den letzten Wochen habe ich mich dazu entschieden, ein WIKI für Linuxinteressierte und Linuxanfänger zu bauen. Mittlerweile denke ich, dass ich die bisher eingepflegten Inhalte online stellen kann. Ich hoffe, dass ich damit dem einen oder anderen Umstiegswilligen etwas Starthilfe geben kann. Ihr könnt mir gerne hier oder auch auf Youtube eure Meinung, aber ... Weiterlesen

von Daniel am 21.08.2024 17:54


26.07.2024

Dominik Kupschke (bommi)

New Quad9 SSL Certificate – Mikrotik Devices Must Import New Root Certificate by July 29th

The DNS Provider Quad9 will change the certificates used by its „DNS over HTTPS“ service, those new certificates are signed from a different DigiCert Root CA as the one used before. For most systems and devices it will not be a problem, except for systems using Mikrotiks RouterOS. As Mikrotik RouterOS doesn’t ship a root […]

von Dominik Kupschke am 26.07.2024 07:07


18.07.2024

Daniel Gestl (mcdaniels)

Headtracking mit einer Webcam unter Linux – Opentrack / Neuralnet-Tracker (DEB-File / DEB-Installer Opentrack)

Ich habe mich in letzter Zeit, nicht zuletzt wegen Xplane 12, recht intensiv mit dem Thema Headtracking unter Linux beschäftigt. Leider ist es ja noch immer so, dass Naturalpoint (Thema TrackIR) Linux nicht berücksichtigt und somit Track IR meines Wissen nicht ohne Weiteres unter Linux in Betrieb zu nehmen ist und der „Linuxer“ deshalb eine ... Weiterlesen

von Daniel am 18.07.2024 17:48


16.12.2023

Stephan Tetzel (zefanja)

Einführung in Anki 23.10

Anki ist eine Karteikarten-App mit einem sehr sehr guten Algorithmus, der einem hilft, das Gelernte nicht mehr zu vergessen. Wie man lernt ohne zu Vergessen habe ich bereits in meinem letzten Artikel kurz beschrieben. Vor kurzem habe ich den Schülern meiner Schule eine Einführung in Anki gegeben. Dazu habe ich auch einige Videos und Tutorials aufgenommen.

Anki 23.10

Vor kurzem wurde eine neue Version von Anki veröffentlicht, die mindestens zwei tolle Features enthält.

Das eine ist ein neuer Algorithmus (FSRS), der aktuell einer der besten Spaced-Repetition-Algorithmen ist. Im Prinzip ist dieser Algorithmus das Herzstück von Anki, da er dafür verantwortlich ist, mir genau die Karten zu zeigen, die ich am vergessen bin. Je genauer eine App diesen Zeitpunkt berechnen kann, umso länger kann ich Dinge in meinem Gedächtnis behalten, ohne das ich sie vergesse.

Ein weiteres tolles Feature ist der neue Notiztyp „Bildverdeckung“, der jetzt nativ integriert wurde. Damit kann ich Teile von von Zeichnungen, Tabellen, Vorlesungsfolien etc. einfach abdecken und damit lernen. Auf die 3 wichtigsten Typen gehe ich in folgenden Video ein:

Einführung in Anki

Anki hat eine etwas steile Lernkurve, d.h. es dauert ein bisschen, bis man die App verstanden und durchdrungen hat. Auf der einen Seite ist sie sehr simpel aufgebaut, auf der anderen gleichzeitig sehr flexibel und erweiterbar. Daher ist es hilfreich, wenn man sich zu Beginn die ersten 5 Kapitel der Dokumentation durchliest.

Für meine Schüler habe ich ein paar einleitende Videos erstellt, die die Schritte von der Installation bis zur ersten Benutzung beschreiben. Weitere folgen noch in den nächsten Wochen und Monaten.

Fazit

Anki ist eine tolle App, die das Lernen sehr effektiv und effizient macht. Es liegt nicht so sehr an der App an sich, sondern eher daran, dass sie auf einer wissenschaftlich sehr gut untersuchte Lerntechnik basiert. Die Meta-Studie von John Dunlosky vergleicht verschiedene beliebte Lerntechniken und kommt ganz klar zu dem Ergebnis, dass verteiltes Wiederholen und Selbsttests die Lerntechniken sind, die den größten Effekt habe.

Ich möchte jeden ermutigen, egal welchen Alters, sich einmal mit dieser App auseinanderzusetzen und den sogenannten „spacing effect“ an sich selbst zu erfahren. Lernen (fast) ohne zu vergessen ist möglich 🙂

Der Beitrag Einführung in Anki 23.10 erschien zuerst auf zefanjas.

von zefanja am 16.12.2023 07:37


09.10.2023

Stephan Tetzel (zefanja)

Lernen ohne zu vergessen mit Anki

In den letzten Jahren habe ich mich immer wieder mit Erkenntnissen aus der Lernforschung auseinandergesetzt, um mein persönliches Lernen aber auch das Lernen an unserer Schule stetig zu verbessern. Ein Begriff, der mir dabei immer wieder begegnete, ist „Spaced Repetition“. Was das mit „Lernen ohne zu vergessen“ und mit Anki zu tun, möchte ich in diesem Artikel kurz beschreiben.

Was ist „Spaced Repetion“?

Spaced Repetition kann man am besten mit „zeitlich verteilte Wiederholung“ oder „verteilte Wiederholung“ übersetzen. Im Grunde geht es darum, dass ich Lerninhalte idealerweise dann wiederhole, kurz bevor ich sie vergessen habe. Wenn man Lernen als einen Kampf gegen das Vergessen bezeichnet, ist genau das wichtig: Wiederholen bevor mein Gedächtnis das Gelernte vergessen hat.

Immer dann, wenn ich Gelerntes wiederhole und mich daran erinnern kann, verlängert sich die „Speicherdauer“ in meinem Gedächtnis.

Wir alle kennen diesen Effekt. Wenn ich in meiner Schulzeit für einen Vokabeltest gelernt habe (meist am Tag davor 🙂 ), habe ich die meisten Vokabeln nach 3 Tagen wieder vergessen. Dass ist auch der Grund, warum ich mich nur noch an ganz wenige Französischvokabeln erinnern kann, obwohl ich 5 Jahre Sprachunterricht hatte. Hätte ich jedoch jeden Tag eine kleine Menge an Vokabeln gelernt und wiederholt, hätte ich mich wesentlich länger an sie erinnern können. Hier mal eine Grafik, die das Prinzip veranschaulicht:

Zusammenfassung: Wenn ich etwas Gelerntes im richtigen Moment wiederhole, kann ich die „Speicherdauer“ im Langzeitgedächtnis deutlich verlängern.

Doch woher weiß ich, wann der richtige Zeitpunkt ist, um etwas zu wiederholen? Ich möchte ja nur die Dinge wiederholen, die ich gerade am Vergessen bin und nicht die, die ich noch weiß. Das ist eine sehr wichtige Frage. Wenn ich zu viele Dinge wiederhole (v.a. Lerninhalte, die ich noch weiß), steigt mein zeitlicher Aufwand für die Wiederholungen. Wenn ich zu wenige Lerninhalte wiederhole, steigt die Chance, dass ich Dinge vergesse und ich sie letztendlich neu lernen muss.

Anki

Genau an diesem Punkt kommt Anki ins Spiel. Anki ist eine Open Source Karteikartensoftware, die mir die Arbeit der Berechnung der richtigen Intervalle abnimmt, sodass ich nur noch das wiederhole, was ich kurz vor dem Vergessen bin. Das genau ist es, was diese Lernmethode so effizient macht, denn nun kann ich Dinge in weniger Zeit lernen bzw. mehr in der gleichen Zeit, die ich bisher zum Lernen aufgewendet habe.

Anki ist eine sehr mächtige und flexible Anwendung, die sich durch viele Erweiterungen anpassen lässt. Das sorgt auch dafür, dass die Lernkurve für diese App etwas steiler ist. Deshalb empfehle ich, dass man sich am besten ein paar einführende Videos anschaut.

Karteikarten kann man sich entweder selbst erstellen oder nutzt eines der fertigen Lernpakete.

Lernen ohne zu vergessen – eine Utopie?

Persönlich nutze ich Anki seit ca. 1 Jahr. Hauptsächlich lerne ich damit Vokabeln (ja, auch wieder Französisch…), Bibelverse / -texte, Markierungen / Zitate aus Büchern, die ich gelesen habe und alles, was mich sonst noch so interessiert. Ich bin total begeistert von den Ergebnissen. Ich hätte nicht gedacht, dass es so leicht ist, sich Dinge langfristig im Gedächtnis zu behalten.

Wo ist der Haken? Damit das mit den Wiederholen zum richtigen Zeitpunkt auch klappt, muss ich meine Wiederholungen jeden Tag machen. Je nachdem wie viele Karten man lernt, können das 5 Minuten am Tag sein oder auch 2 Stunden. Der Schlüssel zum Erfolg ist die tägliche Wiederholung. Es dauert vielleicht ein paar Wochen bis man diese neue Gewohnheit in seinen Alltag integriert hat, aber man wird belohnt mit der Erfahrung, dass dieses Prinzip der verteilten Wiederholung wirklich funktioniert und unser Gedächtnis sich viele (sehr viele) Dinge merken kann.

Der Beitrag Lernen ohne zu vergessen mit Anki erschien zuerst auf zefanjas.

von zefanja am 09.10.2023 05:00


06.05.2023

Martin Dosch (Dogge)

System-Mails von Linux über XMPP empfangen (v2)

2017 beschrieb ich wie man System-Mails von Linux über XMPP empfangen kann. Da ich mittlerweile sendxmpp nicht mehr nutze, weil ich damit viele Probleme hatte und mir selbst die Alternative go-sendxmpp geschrieben habe möchte ich mein neues Setup vorstellen.

⚠️ Warnung ⚠️
Auch 2023 gilt: Es könnte sein, dass wichtige oder sensible Informationen in den Systemmails enthalten sind. Deshalb würde ich davon abraten diese über fremde Server zu senden.
Außerdem speichere ich das Passwort des XMPP-Kontos im Script, weshalb ich dazu rate einen dezidierten XMPP account dafür zu nutzen und nicht etwa den eigenen privaten account.

Diese Anleitung geht von einem Debiansystem aus, kann aber sicherlich auch für andere Distributionen adaptiert werden. Ich selbst habe dieses Setup mit Debian bookworm eingerichtet.

Go-sendxmpp kann man entweder selbst bauen, als binary herunterladen oder aus den repos einiger distros installieren. Ich habe es aus den Debian repos installiert, da go-sendxmpp ab bookworm in den Debian repos vorhanden ist.

Nun wird das script /usr/local/bin/mail2xmpp mit folgendem Inhalt angelegt:

#!/bin/bash                   
go-sendxmpp -u $user -p $password recipient@example.org

Dabei sind $user und $password durch Benutzer und Passwort des Kontos, das zum Versand verwendet wird, zu ersetzen und recipient@example.org durch die eigene Adresse, auf der man die Nachrichten erhalten will. Es ist natürlich auch möglich mehrere Zieladressen anzugeben.

Danach wird exim zum Eigentümer der Datei gemacht:

# chown Debian-exim:Debian-exim /usr/local/bin/mail2xmpp

Ebenso werden die Berechtigungen angepasst:

# chmod 700 /usr/local/bin/mail2xmpp

Um zu definieren wie die Mails zugestellt werden muss die Datei /etc/aliases bearbeitet werden, wobei $user natürlich anzupassen ist (ich nutze dafür meinen Hauptbenutzer, man kann aber natürlich auch extra einen Benutzer für diesen Zweck anlegen):

# /etc/aliases
mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: root
root: $user
$user:,|/usr/local/bin/mail2xmpp

Damit die Systemmails per pipe weitergereicht werden können muss die Datei /etc/exim4/exim4.conf.localmacros ngelegt und diese Zeile eingetragen werden:

SYSTEM_ALIASES_PIPE_TRANSPORT = address_pipe

Anschließend werden die neuen Aliase eingelesen und exim4 neu gestartet:

# newaliases
# systemctl restart exim4.service

Abschließend wird noch getestet ob der Mailtransport über XMPP funktioniert:

$ echo "Das ist ein Test" | mail -s testmail root

Update 2023-05-06

Ein anonymer Kommentator (der Kommentar ist mittlerweile verschwunden. Wo ist er hin? Ich habe ihn wissentlich nicht gelöscht…) hat mich darauf hingewiesen, dass der Teil vor der pipe im script unnötig war und ich habe es dementsprechend angepasst.

06.05.2023 08:33


31.03.2023

Martin Dosch (Dogge)

Kurztipp: Zugriff auf WiFi captive portal bei Nutzung eines eigenen DNS (v2)

2019 habe ich hier beschrieben, wie man Zugriff auf ein captive portal bekommt wenn man einen eigenen DNS server (z.B. per DoT) nutzt. Mittlerweile habe ich ein tool gefunden, dass das deutlich komfortabler macht: captive browser.

Da ich statt Chrome Chromium aus den Debian repositories nutze, musste ich nach Ausführung der allgemeinen Installationshinweise in der Datei $(go env GOPATH)/src/github.com/FiloSottile/captive-browser/captive-browser-ubuntu-chrome.toml1 in dieser Zeile lediglich google-chrome durch chromium ersetzen. Danach folgte ich den Anweisungen für Ubuntu.

Nun genügt es captive-browser aufzurufen und es öffnet sich ein chromium Fenster mit dem captive portal zur Anmeldung im WiFi und es ist nicht nötig die Datei /etc/resolv.conf zu editieren um kurzzeitig einen anderen DNS server zu nutzen.


  1. Üblicherweise ~/go/src/github.com/FiloSottile/captive-browser/captive-browser-ubuntu-chrome.toml ↩︎

31.03.2023 10:40


24.10.2022

Christian Imhorst (immi)

PowerShell und Jupyter Notebooks unter Linux in VS Code

Jupyter Notebook ist eine Open Source-Webanwendung, mit der man Dokumente erstellen und teilen kann, die Live-Code, mathematische Gleichungen, Visualisierungen von Daten und beschreibenden Text enthalten können. Ein Jupyter Notebook ist ein praktisches Werkzeug für die interaktive Erstellung von Präsentationen, um Code, dessen Ausführung und daraus resultierende Daten darzustellen. Die meisten Jupyter Notebooks laufen mit Python, man kann aber auch andere Sprachen benutzen, z.B. aus dem .NET-Umfeld wie C# oder auch PowerShell. Jupyter Notebooks laufen im Browser, es gibt mit Jupyter eine sehr schöne Erweiterung für VS Code. Und um die Notebooks noch um die .NET-Sprachen zu erweitern, kann man auch gleich noch die Erweiterung .NET Interactive Notebooks aus dem Marketplace von VS Code installieren.

Damit man überhaupt Jupyter Noteboos erstellen kann, wird das entsprechende Python-Modul benötigt:

python3 -m pip install --upgrade pip
python3 -m pip install jupyter

Um ein Jupyter Notebook im Browser zu starten, gibt man dann einfach jupyter notebook im Terminal ein. Im VS Code reicht es dagegen, eine neue Datei mit der Endung .ipynb zu erstellen und man kann loslegen und den beschreibenden Text mit Markdown erstellen und den Code in Python. Um eine Sprache aus dem .NET-Framework zu verwenden, muss natürlich .NET unter Linux installiert sein und für PowerShell am besten die neuste Version.

Wenn das erledigt ist, und die Befehle dotnet für .NET und pwsh für die PowerShell über die Pfad-Variable erreichbar sind, wird noch das Microsoft.dotnet-interactive-Paket benötigt, ein Befehlszeilen-Tool für die interaktive Programmierung mit C# oder PowerShell, inklusive Unterstützung für Jupyter Notebooks:

dotnet tool install --global Microsoft.dotnet-interactive

Anschließend führt man den folgenden Befehl aus, um dotnet-interactive zum Jupyter Notebook hinzuzufügen:

dotnet interactive jupyter install

Jetzt kann man im VS Code Jupyter Notebooks erstellen und PowerShell Cmdlets ausführen. Allerdings muss man darauf achten, dass der Kernel des Notebooks unter .NET Interactive läuft (also nicht Python) und der Programm-Code als „PowerShell (.NET Interactive)“ ausgeführt wird, so wie in der Abbildung:

Das schöne an .NET-Interactive als Kernel für Jupyter Notebooks ist, dass noch weitere Sprachen unterstützt werden, so dass man neben PowerShell auch Code-Blöcke in C#, JacaScript oder auch SQL erstellen kann.

von Christian Imhorst am 24.10.2022 17:11


14.06.2017

Vinzenz Vietzke (vinz)

Mein XFCE Desktop im Juni 2017

Es wird Zeit, mal wieder meinen Desktop zu zeigen und wie ich ihn für mich angepasst habe. Sean hat das hier mit Xubuntu gemacht, ich übernehme die übersichtliche Struktur gerne.
Das Gerät ist ein ThinkPad x220 mit i5-2520M und 16GB RAM, einer 120GB Samsung 840 SSD, “gemoddetem” BIOS und 9-Zellen/73,3Wh Nachbauakku.

Konfiguration

  • Desktop
    • Distribution: Debian Testing (Stretch)
    • Desktopumgebung: Xfce
    • Window Manager: Xfwm4
  • Themes
    • GTK: Arc-Grey-Darker (GitHub)
    • Window Manager: Arc-Grey-Darker (GitHub)
    • Icons: Arc Limon (GitHub)
    • Cursors: Adwaita
    • Firefox: Arc-Darker (GitHub)
  • Schriften
    • Standard: Lato Regular 10
    • Window Manager: Lato Bold 10
    • Monospace: Monospace Regular 10
  • Wallpaper: Incense Stick in balinese rainforest (CC0, Artem Beliaikin)
  • Panel Plugins
    • Whisker-Menü (Homepage)
    • Benachrichtigungsfläche
    • Energieverwaltung
    • PulseAudio Plugin
    • Orage-Uhr
  • Programme im Tray
    • Audacious
    • Gajim
    • Liferea
    • Nextcloud Client (HowTo)
    • Redshift
    • Thunderbird (plus Firetray)

 

Tipps & Tricks

  • Symbol des Whisker-Menü auf debian-emblem-white setzen (siehe Screenshot)
  • Desktopsymbole deaktivieren
  • Panel: Alpha auf 85% setzen
  • Fensterknöpfe: Knopfbeschriftungen anzeigen deaktivieren, Griff anzeigen deaktivieren, Flache Knöpfe aktivieren (siehe Screenshot)
  • Super Key auf das Whiskermenu legen (ksuperkey installieren)
  • In der Fensterverwaltung unter “Anordnung der Knöpfe” alle außer Schließen entfernen.

 

Mehr Screenshots

von vinzv am 14.06.2017 00:10


04.05.2012

Thorsten Sperber (TRex)

Windows ist doof, Linux funktioniert nicht

Momentan kommen mir im debianforum [1] immer öfter Menschen unter die Nase, die fast, aber nicht ganz auf das Schema linux-ist-nicht-windows [2] passen. Sie wissen, dass Linux anders ist, sie wollen es nicht alle wie Windows bedienen, aber sie haben ihre schlechten Windowsgewohnheiten noch nicht vergessen/abgelegt. Eigentlich schade, denn sie verpassen die Hälfte. Als Hilfesuchende punkten sie auch nicht, denn sie gehen Probleme nach Windows-Art an: Beschreibe das Verhalten, hoffe, dass das jemand kennt und eine Lösung dafür hat. Unter Windows gehts halt nicht anders...hoffentlich ergiebige Fehlermeldung ("Vorgang fehlgeschlagen") mit Vorgeschichte ("Programm XY installiert", "Windows Updates durchgeführt", ..) in Google suchen oder Forum posten und auf Leidensgenossen hoffen, die das Problem gelöst haben.

In den meisten open source Programmen gibt es irgendeine Art von Logging oder (Debug-)Ausgaben. Dazu führt man das Programm auf einem Terminal aus, ruft es anders auf oder schaut in der Logging-Datei der X-Session (ausgehend davon, dass es sich um ein grafisches Programm handelt), in der Regel zu finden in ~/.xsession-errors oder für SLIM in /var/log/slim.log. Dort gibt es dann ganz viele Informationen, die zielführend für eine Lösung sind. Ich behaupte ja nicht, dass da steht "du musst noch libbanana-2.4 installieren", und wenn derjenige mit dem Problem mit den Informationen nichts anfangen kann (weil sie zu technisch sind), dann gibts andere, die es können.

Bis es sich rumgesprochen hat, werd ich wohl öfters darauf hinweisen.

Für die meisten grafischen Programme:
~/.xsession-errors
Für Serverdienste:
/var/log/syslog
Für Kernelfragen und Treiberprobleme:
/var/log/kern.log /var/log/messages

Und die meisten Programme, grafisch als auch nicht grafisch (und letztere besonders) haben eine Ausgabe auf dem Terminal, auf dem sie ausgeführt werden. Es wäre doch durchaus hilfreich, sowohl verursachendes Kommando als auch die Ausgabe dazu (abzüglich empfindlicher Daten, die sind erkennbar als solche zu zensieren) unverfälscht zu sehen.

Und diese Dateien (die in /var/log/ sind übrigens nur als root lesbar, also entweder ein root-Terminal öffnen oder sudo vor den Befehl setzen) werden am besten mit Hilfe von tail -f Datei gelesen (was die Ausgabe weiterlaufen lässt), woraufhin die fehlerverursachende Aktion wiederholt wird oder mit less komplett geöffnet. tail ohne -f zeigt einfach bloß die letzten 10 Zeilen an.

Damit wäre das hoffentlich vom Tisch. Das soll übrigens kein rant sein, sondern ein fester Schubser in die richtige Richtung, in Zukunft selbst Lösungen zu finden. Bei Windows hat man doch auch viel Durchhaltevermögen ;) Und neu installieren muss man bei $linuxdistribution auch nicht sonderlich oft.

Und ein letzter Hinweis: solange man nichts gekauft oder bezahlt hat, gibt es auch keinen "Anspruch". Das schließt auch "schließlich ist das doch ein Hilfeforum, ihr müsst mir helfen" ein. Das ist Freizeit, die wir "opfern", meist, weil es uns Spaß macht zu helfen oder wir dabei selbst noch lernen (gemeinsames Problemlösen). Entsprechend schwach ist die Motivation, eine nur schwach oder garnicht recherchierte Frage zu beantworten oder "Hausaufgaben" zu erledigen, die man wahlweise schnell zusammengesucht oder nachgelesen hat. Da hagelts dann schnell ein genervtes RTFM.

Update: falsche Datei angegeben, danke an up ausm dfde

[1]http://debianforum.de
[2]http://www.felix-schwarz.name/files/opensource/articles/Linux_ist_nicht_Windows/

von Thorsten am 04.05.2012 13:20


30.10.2016

Jürgen Braun (jaybe)

Frankfurt Marathon

Rückblick: 25.10.2015 findet der Frankfurt Marathon statt, ich sitze gespannt vom Fernseher als Arne Gabius zu einem neuen deutschen Rekord läuft und finde es sehr interessant und spannend, zugleich aber auch verrückt und unmöglich, dies selbst einmal zu absolvieren. Einige Tage später wird der Termin für 2016 auf Facebook veröffentlicht und ich klicke auf „interessiert mich“, einfach um den Termin nicht zu verpassen, absolut ohne den Hauch eines Gedankens daran, dort vielleicht selbst zu starten. Entsprechend verblüfft reagiere ich auf beim nächsten Lauftraining auch auf die Frage eines Trainingspartners „Und, schon angemeldet“? Ich? Nein, das traue ich mir nicht zu. Andere schon: „Komm, bei Deinem Training, ein paar lange Läufe noch zur Vorbereitung, ist das kein Problem“. Soll ich wirklich? Könnte das klappen? Warum eigentlich nicht. Am 06.12.2015 war ich dann so weit:

Lieber Jürgen Braun,
vielen Dank für Deine Anmeldung zum Frankfurt Marathon 2016. Hier befinden sich alle wichtigen Daten und Angaben zu Deiner Anmeldung.

Die Bestätigungsmail des Veranstalters war da. Es kann los gehen…

Die Vorbereitung ist gut gelaufen, bei Lauftipps.ch habe ich mir einen Trainingsplan erstellen lassen, an den ich mich zumindest in den letzten 7 Wochen vor dem Wettkampf zu 100% gehalten habe. Die Wochen davor fanden noch Wettkämpfe in der Hessischen Triathlon-Liga statt und ich war noch eine Woche im Urlaub, hier musste ein wenig improvisiert und lange Läufe durch schnelle 10km im Wettkampf werden.

Nach meinen Problemen im Frühjahr mit ISG und Schienbeinkante achtete ich sehr auf irgendwelche Zeichen meines Körper und tatsächlich, drei Wochen vorm Wettkampf, am Ende des längsten Laufes über 33km waren sie da, Rückenschmerzen 🙁 Wie würden wohl im Wettkampf die noch ausstehenden 9km zu bewältigen sein, lies sich der Wettkampf überhaupt erfolgreich beenden? Durch die Erfahrung aus dem Frühjahr, war eigentlich klar, dass es vermutlich das ISG bzw. die Lendenmuskulatur sein muss, also wurde in der verbleibenden Zeit noch mehr Wert auf Übungen zur Rumpfstabilisierung gelegt.

Sonntag, 30.10.2016; Es ist so weit. Der Frankfurt Marathon steht an und ich stehe am Start.

Es ist frisch, vielleicht 7 oder 8°, jedoch bei strahlend blauem Himmel. Ich fühle mich gut vorbereitet, habe vier Gels für die Verpflegung dabei, plane mit einer Zielzeit von 3:45:00 h, also einem Schnitt von 5:20 min/km. Dann geht es los, ich starte mit einem Laufpartner aus dem Verein, doch er hat sich wohl umentschieden und will doch schneller als die 3:45:00 ins Ziel, nach ca. 2,5 km verabschiede ich mich und lasse ihn laufen, suche mir selbst mein Wohlfühltempo, das sich bei ca. 5:10 min/km einpendelt. Ich genieße die Atmosphäre an der Strecke, die Zuschauer – einige erkenne ich, als sie meinen Namen rufen – Marina und André, Cornell, Wolfgang, Thomas, …

WhatsApp Image 2016-10-30 at 12.38.51

Bis km 30 fühlt es sich gut an, sehr gut sogar, ich muss mich bremsen um nicht schneller zu werden, ich brauche die Kraft noch am Ende. Dann fängt es an, etwas zäher zu werden, bei km 35 stehen meine Frau und meine beiden Töchter, Ihre Rufe spornen mich an, noch 7km, ich versuche schneller zu werden, muss den Versuch aber aufgeben, noch 6km, noch 5km, ich hangle mich von km-Schild zu km-Schild, ab wann soll ich alles geben, sind 3:40:00 noch möglich? Plötzlich kommt Frank auf die Strecke gelaufen „Jürgen, Du hast es gleich geschafft. Du siehst etwas angestrengt aus, bist Du etwa gelaufen?“ :-D, spornt mich nochmals an und wünscht mir viel Erfolg. Ich beschleunige nochmals etwas und gebe alles was geht. Dann der Einlauf in die Festhalle, die Musik, die vielen Menschen, die Lichter, ich krame das #meinerstermarathon Band aus der Tasche, recke es in die Höhe und überquere die Ziellinie. GESCHAFFT!

Ich bin völlig außer Atem, langsam bewege ich mich in den Verpflegungsbereich, dehne Oberschenkel und Waden. Dann die Finisher-Medallie, 42,195 km in einer Zeit von 3:41:10. Ich bin sehr zufrieden, die Zielzeit unterboten, komplett durchgelaufen ohne Gehpausen (außer beim Trinken) und keine Schmerzen in den Gelenken oder der Muskulatur, auch der Rücken hat problemlos mitgemacht.

Im Verpflegungsbereich dann ein paar Becher Iso-Getränke, ein paar Apfelstückchen gegessen, etwas Mohnkuchen, alkoholfreies Weizenbier, mit den Vereinskollegen getroffen und abgeklatscht, dann zur Familie die mich schon freudig und stolz erwarten. Auf dem Weg zur S-Bahn merke ich schon, dass das Gehen etwas schwer fällt, Treppen steigen unangenehm ist und das Aufstehen nach dem Sitzen etwas länger dauert als sonst. Aber wie lautet der Spruch:

„Der Schmerz vergeht, der Stolz bleibt“


von jaybe am 30.10.2016 14:45


20.06.2020

Gerrit Kruse (MrGerardCruiz)

CentOS mit unklarem Supportstatus

LTS Distributionen sind für mich das Maß der Dinge. Lange Produktlaufzeiten, wenig Wartungsaufwand und hohe Funktions- und Laufzeitstabilität sind nicht nur im Servereinsatz wichtig. Trotz hunderter Distributionen gibt es nur wenige LTS-Varianten (siehe: Linux - Eine sichere Basis). Mit CentOS steht hier ein weiteres Projekt vor dem Ausfall.

Natürlich sind Arch, Manjaro, Tumbleweed und wie sie alle heißen tolle Projekte und für den individuellen Desktopeinsatz gut geeignet. Ich glaube auch gerne, dass viele nie oder nur extrem selten Probleme bei Updates haben. Sie taugen aber kaum für den wartungsarmen Masseneinsatz, wo der Anwender nicht selbst die Administration übernehmen kann oder will.

Es braucht diese ständigen Updates eigentlich auch nicht. Linux auf dem Desktop ist im Wartungsmodus (siehe auch: Kein Ubuntu 20.04 Test). Ob ich nun GNOME Shell 3.32 oder 3.28 verwende macht weder funktional, noch von der Stabilität einen Unterschied. Das gleiche gilt für Plasma, LibreOffice und viele weitere Projekte. Relevant sind über eine lange Laufzeit lediglich neue Treiber für neue Hardware (entweder über massive Kernel-Modifikation durch den Distributor oder neue Kernel-Versionen) und neue Browser-Versionen.

Ich habe deshalb - sofern der Anwender mit GNOME klar kam - CentOS auch für den Desktop immer gemocht. 10 Jahre Ruhe am System sind einfach eine Hausnummer. Im Serverbereich dürfte CentOS neben Ubuntu LTS und Debian ebenfalls für viele eine maßgebliche Rolle spielen.

Wie Michael Kofler in seinem Blog aber zu recht thematisiert fällt CentOS 8 inzwischen für den Produktiveinsatz eigentlich aus. 71 und 48 Tage ohne Updates sind indiskutabel. Das Projekt scheint hier leider auch nicht willens oder fähig etwas zu ändern.

Im LTS Bereich wird es jetzt eng. Die sehr lange Supportdauern von 10 Jahren bietet nun nur noch SLED gegen eine - preislich allerdings vollkommen akzeptable - Subscription. Wer mit circa 3-5 Jahren leben kann hat noch Debian, openSUSE Leap und Ubuntu LTS zur Auswahl. Viel ist das nicht mehr. Gegebenenfalls muss man sich wirklich mit Oracle Linux beschäftigen, auch wenn sich dabei alle Nackenhaare aufstellen.


Bilder:
Einleitungsbild und Beitragsbild von von mohamed Hassan via pixabay

"

von Gerrit (postfach@curius.de) am 20.06.2020 11:27


09.07.2017

Bjoern Schiessle (BeS)

Welcome to my new Homepage

Finally I moved my homepage a a complete static page powered by Hugo. Here I want to document some challenges I faced during the transition and how I solved them.

Basic setup

As already said I use Hugo to generate the static sites. My theme is based on Sustain. I did some changes and uploaded my version to GitLab.

I want to have all dependencies like fonts and JavaScript libraries locally, so this was one of the largest changes to the original theme. Further I added a easy way to add some share buttons to a blog post, like you can see at the end of this article. The theme also contains a nice and easy way to add presentations or general slide shows to the webpage, some examples can be seen here. The theme contains a example site which shows all this features.

Comments

This was one of the biggest challenges. I had some quite good discussion on my old blog powered by Wordpress so I don’t want to lose this feature completely. There are some solutions for static pages but non of these are satisfying. For example Staticman looks really promising. Sadly it only works with GitHub. Please let me know if you know something similar which doesn’t depend on GitHub.

For now I decided to do two things. By default I add a short text at the end of each article to tell people to send me a e-mail if they want to share or discuss their view on the topic. Additionally I can add to the meta data of each posts a link to a Friendica post. In this case the link will be added at the end of the article, inviting people to discuss the topic on this free, decentralised and federated network. I have chosen Friendica because it allows users to interact with my blog posts not only with a Friendica account but also with a Diaspora, GNU Social, Mastodon or Hubzilla account. If you have a account on one of these networks and want to get updates about new blog posts in order to participate in conversations around it, follow this Friendica account. I also created a more detailed description for people new to the world of free social networking.

Deployment

After all the questions above where answered and a first version of the new webpage was in place, I had to find a easy way to deploy it. I host the source code of my homepage on GitLab which has a nicely integrated CI service which can be used to deploy the webpage on any server.

Therefore we need to add a CI script called .gitlab-ci.yml to the root of the repository. This script needs to contain following (please adjust the paths):

image: publysher/hugo

before_script:
  - apt-get update
  - apt-get --yes --force-yes install git ssh rsync
  - git submodule update --init --recursive

pages:
  script:
  - hugo
  - mkdir "${HOME}/.ssh"
  - echo "${SSH_HOST_KEY}" > "${HOME}/.ssh/known_hosts"
  - echo "${SSH_PRIVATE_KEY}" > "${HOME}/.ssh/id_rsa"
  - chmod 700 "${HOME}/.ssh/id_rsa"
  - rsync -hrvz --delete --exclude=_ public/ schiesbn@schiessle.org:/home/schiesbn/websites/schiessle.org/htdocs/
  artifacts:
    paths:
    - public
  only:
  - master

We need to create a ssh key-pair to deploy the webpage. For security reasons it is highly recommend to create a ssh key used only for the deployment.

The variables SSH_HOST_KEY and SSH_PRIVATE_KEY need to be set at GitLab in the CI settings. SSH_PRIVATE_KEY contains the private ssh key which is located in the ~/.ssh directory.

To get the right value for SSH_HOST_KEY, we run ssh-keyscan <our-webpage-host>. Once we executed that command, we should see something similar to schiessle.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCtwsSpeNV.... Let’s copy this to the SSH_HOST_KEY value in our GitLab settings.

Finally we need to copy the public ssh key to the .ssh/authorized_keys file on the web-server to allow GitLab to access it.

Now we are already done. The next time we push some changes to the Github repository GitLab will build the page and sync it to the web-server.

Using the private key stored in the GitLab settings allows everyone with access to the key to login to our web-server. Something we don’t want. Therefore I recommend to limit the ssh key to only this one rsync command from the .gitlab-ci.yml file. In order to do this, we need to find the exact command send to the web-server by adding -e'ssh -v' to the rsync command.

Executing the rsync command with the additional option should result in something like:

debug1: Sending command: rsync --server -vrze.iLsfxC --delete . /home/schiesbn/websites/schiessle.org/htdocs/

we copy this command to create following .ssh/authorized_keys entry:

command="rsync --server -vrze.iLsfxC --delete . /home/schiesbn/websites/schiessle.org/htdocs/",no-pty,no-agent-forwarding,no-port-forwarding,no-X11-forwarding ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7Sf/PDty0d0SQPg9b+Duc18RxPGaBKMzlKR0t1Jz+0eMhTkXRDlBMrrkMIdXJFfJTcofh2nyklp9akUnKA4mRBVH6yWHI+j0aDIf5sSC5/iHutXyGZrLih/oMJdkPbzN2+6fs2iTQfI/Y6fYjbMZ+drmTVnQFxWN8D+9qTl49BmfZk6yA1Q2ECIljpcPTld7206+uaLyLDjtYgm90cSivrBTsC4jlkkwwYnCZo+mYK4mwI3On1thV96AYDgnOqCn3Ay9xiemp7jYmMT99JhKISSS2WNQt2p4fVxwJIa6gWuZsgvquP10688aN3a222EfMe25RN+x0+RoRpSW3zdBd

Now it is no longer possible to use the private key, stored at GitLab to login to the web-server or to perform any other command than this specific rsync command.

Interesting observation

I run this static webpage now for a few weeks. During this weeks I got quite some email from people interested in some topic I write about in my blog. This are not new blog articles, but posts which where already online for quite some time. Somehow it looks like more people find this articles after the transition to a static site. Maybe search engines rate the static site higher than the old Wordpress page? I don’t know, maybe it is just a coincidence… but interesting.

von Björn Schießle (bjoern@schiessle.org) am 09.07.2017 09:04


08.04.2018

Gerrit Kruse (MrGerardCruiz)

Datenabfluss bei Facebook - Eine Nachbetrachtung

Bild von geralt via pixabay / Lizenz: CC0 Creative Commons

Facebook hatte jüngst mit schlechter Presse zu kämpfen. Länder- und medienübergreifend artikulierte sich massive Kritik an der Praxis wie dort mit Daten umgegangen wird. Manche Journalisten sehen darin die größte Krise in der nicht mehr ganz so jungen Geschichte des sozialen Netzwerks. Die Aktienmärkte sahen das vergangene Woche nicht unähnlich wenn man sich die Entwicklung des Kurses von Facebook anschaut.

Viele Datenschützer konnten sich eine gewisse Häme nicht verkneifen. Gehört umfassende Kritik an Facebook doch zum Standard-Repertoire von datenschutzbewussten Menschen (und solchen, die sich dafür halten). Die empfohlene Lösung war dann natürlich wie erwartet radikal. Verlasst endlich Facebook schallte es aus allen Kommentarspalten und Blogs.

In der Printausgabe der Süddeutschen Zeitung konnte man dazu vergangene Woche einen schönen Vergleich lesen. Sinngemäß ging es darum, dass die Aufforderung Facebook zu verlassen, weil man mit der Datenhandhabung moderner IT-Unternehmen unzufrieden ist, genau so erfolgversprechend ist wie das Essen einzustellen, weil man mit der Lebensmittelindustrie unzufrieden ist. Konsequent aber letztlich aussichtslos weil es an der Lebenswirklichkeit vorbei geht.

Genau dies beschreibt den Einfluss der Datenschützer auf das Verhalten der Masse. Radikal, konsequent und weitestgehend ignoriert, da wirklichkeitsfern. Bei diesem Thema und bei vielen anderen auch.

Es ist keineswegs so, dass Facebook das Verlangen für sein Produkt erst bei den Menschen wecken musste. Etwas was man den Silicon Valley Firmen gerne nachsagt. In einer hochgradig mobilen Gesellschaft bedient Facebook einfach ein Bedürfnis. Es vereinfacht soziale Vernetzung über große Zeiträume und Distanzen einfach enorm, viele Menschen leben halt nicht mehr in einer Welt, in der man alle Freunde im Vereinslokal trifft. Ein Verlassen des sozialen Netzwerks ist daher für viele Anwender mit einem nicht unerheblichen sozialen Einschnitt verbunden. Das betrifft nicht nur die Selbstdarsteller auf der Timeline, sondern eben auch die Gruppen und den Messenger.

Außerdem ist ein großer Trugschluss, dass man Facebook einfach den Rücken kehren kann. Man muss auch alle zugehörigen Dienste, am bekanntesten darunter sind sicher WhatsApp und Instagram, verlassen und trotzdem kann Facebook über die Vernetzung mit unzähligen Internetseiten - der Like-Button macht es möglich - noch ein Profil erstellen.

Letztlich übt man sich zwar in digitaler Selbstverstümmelung, erzielt aber nicht mal den erwünschten Effekt.

Zielführender sind da sicher Maßnahmen wie der kürzlich vorgestellte Mozilla Facebook Container. Er ermöglicht Teilhabe aber kontrolliert ein bisschen besser, was Facebook außerhalb des Netzwerks noch über einen sammeln kann. Viele weitere Maßnahmen wie ein Mehr-Browser-Konzept, sinnvoll ausgewählte Addons und reflektierte Handhabung des Netzwerks können es Facebook erschweren unerwünscht Daten zu sammeln.

Keine dieser Maßnahmen hätte den Datenabfluss von Facebook an Dritte verhindern können. Es ist auch nicht die Aufgabe des Bürgers paranoid seine Aktivitäten gegenüber den IT-Giganten zu verschleiern, sondern die Politik muss die Daten der Bürger entschieden gegen Missbrauch schützen und Verstöße hart bestrafen. Dafür kann der Bürger an der Wahlurne stimmen. Einfach mal bei der Wahl den Digitalthemen mehr Priorität einräumen, anstatt in den Kommentarspalten gegen Facebook zu wettern. Die deutsche Regierung ist nämlich keineswegs so rigoros im Datenschutz, wie sie sich jetzt medial gibt.

von Cruiz (mailer@curius.de) am 08.04.2018 13:05


01.02.2009

Bjoern Schiessle (BeS)

An awesome event is over: KDE 4.2 Release Party and Fellowship Meeting at Stuttgart

At Friday, 30.Jan.09 we had a joint event between KDE and the Fellowship of the Free Software Foundation Europe (FSFE) and it was simply awesome! Beside a lot of KDE and FSFE people we had a lot of visitors and at the end we were about 40 people! All interested in KDE 4.2 and Free Software.

At the beginning Frederik started with an introduction and showed all the new and cool things in KDE 4.2. After that i gave a talk about the work of FSFE, especially in 2008, explained the role of the Fellowship for FSFE and highlighted some cool activities from our Fellows. My slides can be found here (German). I think i could attract some people and would be really happy to see some new faces at our next Fellowship meeting (probably somewhen in March). If you don’t want to miss it, subscribe to our mailing list for South Germany.

After my talk we made a small break and than Frank continued with a very interesting talk about the KDE community and how to get involved as a developer, writer, artist or user. Last but not least Sven talked about the new version of Amarok and what we can expect from the new release.

This was the official part. Now the party started and we had a lot of fun and many interesting discussions between KDE developers and users, FSFE Fellows and all the other people who joined us at this evening. We also discussed some possible activities for the Fellowship Group Stuttgart. Some Fellows seems to be quite interested in the topic “Free Software in school and education”. I also think that this is a really important topic. Remember, the pupils from today are the decision makers from tomorrow.

As it becomes later a small group of people survived. One of them was Martin Konold, a KDE Developer from the very first days of KDE. He told us a lot of interesting and funny stories about the beginning of KDE and the development of the Free Software desktop.

At 2:30 at night a great event was over. I really want to thank Frederik for his great help in organising this event and all the other KDE people who helped to make this event that awesome! It was a lot of fun and a great cooperation between KDE and FSFE people! Looking forward for the next opportunity to organise such a great event!

More pictures can be found here.

von Björn Schießle (bjoern@schiessle.org) am 01.02.2009 16:30


04.07.2018

(Meillo)

2018-07-05

2018-07-05



A new ssh login attack wave after the previous one had ended ...




http://marmaro.de/lue/        markus schnalke <meillo@marmaro.de>

04.07.2018 22:00


07.12.2019

Malte Kiefer (beLI3VeR)

Threema Lizenzen zu verschenken

Wie in den letzten Jahren werde ich auch dieses Jahr wieder Threema Android Lizenzen verschenken. Dieses Jahr werde ich 5 Lizenzen verschenken. Dazu erhalten die Gewinner oder Glücklichen von mir einen Lzenzschlüssel, mit dem sie auf der Webseite von Threema dann den Android Client nach Eingabe des Lizenzschlüssel herunterladen können.

Es ist nicht möglich, damit Threema vom PlayStore sondern nur aus dem Threema Store herunterzuladen.

Teilnahme

Die Teilnahme ist ganz einfach. Die ersten 5 Nutzer die mich via XMPP / Jabber anschreiben wird (pr3ach3r@trashserver.net) und die folgenden Fragen richtig beantworten kann:

1.) Aus welchem Land kommt Threema? 2.) Was bedeuten die 3 grünen Punkte bei einem Threema Kontakt? 3.) Was ist der Threema Safe?

Ich freue mich auf eure Einsendungen. Ich möchte festhalten ich stehe in keine Zusammenhang mit Threema. Ich kaufe die Lizenzen zum vollen Preis und dieses soll auch keine Werbaktion für mich oder Threema sein. Ich will nur einen kleinen Teil zu mehr Datenschutz und Sicherheit beitragen.

von Malte Kiefer (malte.kiefer@mailgermania.de) am 07.12.2019 00:00


18.01.2019

(thoys)

Sprachassistenten und Datenschutz

https://www.heise.de/newsticker/meldung/Datenkraken-im-Wohnzimmer-Ist-die-Privatsphaere-noch-zu-retten-4270545.html

Momentan werden sämtliche (fast) Spracheingaben an die Hersteller übermittelt und dort verarbeitet. Dieser Artikel zeigt, dass es auch anders gehen könnte.

von Timotheus am 18.01.2019 21:01


07.03.2018

(Meillo)

2018-03-08

2018-03-08



If you want PCRE on the command line but your  grep(1)  does  not
offer  `-P'  (*not* offering it is what it *should* do!), you can
use this one:

     perlgrep() {
             perl -e 'my $re = shift; print grep { /$re/ } <>;' "$@"
     }

[0]



Discovered  some interesting facts about the GIF format.  [1] You
*are* able to use more than 256 colors, just not within one block
...  but  you can use multiple blocks for building True Color GIF
images!


[0]  https://debianforum.de/forum/viewtopic.php?f=34&t=168942#p1167421
[1]  https://debianforum.de/forum/viewtopic.php?f=29&t=168943&p=1167436#p1167436


http://marmaro.de/lue/        markus schnalke <meillo@marmaro.de>

07.03.2018 23:00


18.01.2013

Vinzenz Vietzke (vinz)

Tor und Tor-Browser in Fedora 17/18 installieren

Jamie Nguyen hat Tor und Tor-Browser für Fedora paketiert. Um diese Pakete über sein Repository zu bekommen, installiert ihr euch entweder das Release-Package oder macht das von Hand:

wget https://jamielinux.com/pub/jamielinux-tor-release.noarch.rpm
yum install ./jamielinux-tor-release.noarch.rpm

Danach installiert ihr alle nötigen Pakete, aktiviert und startet Tor. Alle Pakete sind GPG-signiert.

yum install tor tor-browser tor-browser-selinux
systemctl enable tor.service
systemctl start tor.service

Optional könnt ihr mit "tor-browser-selinux" die Unterstützung für SELinux installieren.

von vinzv am 18.01.2013 09:52


25.07.2017

Christian Schmitt (slater)

WTF

16 Grad C im Juli!???!

von Slater am 25.07.2017 09:02


23.03.2020

(thoys)

Corona? Da gibts doch sicher was von Moodle

Dann folge ich doch mal dem Aufruf von Jürgen von BITBlokes und haue in die Tasten.
Ich bin Medieninformatiklehrer an einer einzügigen Privatschule und meine Coronaferien (achtung Sarkasmus) begannen folgendermaßen:

Am Freitag, den 13. März wurde klar, dass Präsenzunterricht an unserer Schule die nächsten Wochen nicht mehr stattfinden wird.

Freitag 13. März, ab 19 Uhr
Die Lernplattform Moodle (Learning Management Plattform) wurde aus anderen Gründen bereits auf unserem neuen Server installiert, jedoch in keiner Weise konfiguriert. Diese Arbeit stand nun an und es zeigt sich, dass keine Benutzer/innen, außer dem Admin, in Moodle registriert sind.
Fachlich: Keine LDAP-Anbindung an unsere bestehende Benutzerdatenbank.

Samstag 14. März
Die Konfiguration von Moodle stand im Vordergrund. Es ist nachvollziehbar, dass sich das Gefühl von „wir haben nur eine Chance“ im Bauch breit machte. Denn eine nicht funktionierende Plattform wäre nach wenigen Tagen so leer, wie unsere Schulgebäude.
Es findet eine Gesamtkonferenz statt, die Beschließt, dass Moodle offiziell zur Lernplattform wird.

Sonntag 15. März
Von nun an sind Mitglieder der Schüleradmins tatkräftig mit an Bord. Die Daten der Schüler/innen der Oberstufe und die Zugangsdaten der Lehrer/innen werden aufbereitet und in Tabellen übertragen, damit sie in Moodle eingefügt werden können.
Fachlich: CSV Dateien mit der richtigen Syntax erstellen.
Ohne die LDAP Anbindung haben wir keinen Zugriff auf aktuelle Passwörter des Schüler-Lehrer-Netzwerks. Zudem werden nur bestimmte Arten von Nachrichten von Moodle per Mail versendet, andere stranden im Postausgang. Mit viel Hirnschmalz, viel Einsatz und wenig Mittagessen wurden jedoch alle Probleme soweit gelöst oder umgangen, dass am Montag die Schüler/innen und Kolleginnen kommen können.
Stand jetzt: Die Plattform und die App, sowie die Bedienung per Browser funktionieren für Schüler/innen und Lehrer/innen. Alle, in der Oberstufenkonferenz besprochenen Kurse, sind angelegt und mit den entsprechenden Trainern (Ausdruck für Lehrer/innen in Moodle) versehen.

Montag 16. März
8:30 Uhr
Die Schüler/innen kommen. Jeweils eine Halbe klasse zur Installation und Einrichtung der App und die andere Hälfte zur Einführung in die Bedienung von Moodle am Computer. Nach einer halben Stunde werden die Gruppen getauscht und nach wieder eine halben Stunde kommt die nächste Klasse.
Was ist das eigentlich: Pause?

13:30 Uhr
Bis auf wenige Ausnahmen installierten alle Schüler/innen der Oberstufe die App, änderten ihr Passwort und lernten den rudimentären Umgang mit Moodle.

14:15 Uhr
Erste Schulung der Kolleg/innen.

17:45 Uhr
Vorstandssitzung – hier wurden im Vorgespräch und auch während des Sitzung mögliche Datenschutzbedenken durch Moodle in den Blick genommen. Da die Plattform auf unserem eigenen Server läuft und auch das Nachrichtensystem das eigene Haus nicht verlässt, deckt unser – in dieser Konferenz verabschiedete – allgemeines Datenschutz-Konzept alle datenschutzrechtlichen Bedenken ab.

Dienstag 17. März
Die ersten Schüler/innen starten in die Kurse, schreiben Nachrichten mit Fragen und geben erste Ergebnisse ab. Es scheint vieles zu funktionieren – Puh!
Eine zweite, gut besuchte Einführung für Lehrer/innen findet statt.
Kurse werden mit viel Fleiß von Lehrer/innen mit Inhalten befüllt und Schüler/innen arbeiten sich in die Plattform und die Inhalte ein.

Mittwoch 18. März
Verschnaufen von Seiten der Moodle-Verantwortlichen. Die Plattform läuft nicht perfekt, aber sie läuft so gut, dass sie genutzt werden kann. Ausschlafen!

Die Todo-Liste beinhaltet nun die Hilfestellung für Lehrer/innen und Schüler/innen und die Beschäftigung mit der Technik hinter Moodle. Backup, PHP- und andere Server-Einstellungen und die Konfigurationen der Plattform werden nun in Ruhe angegangen.

Donnerstag 19. März
Es läuft einfach.

Freitag 20. März
07:20 Uhr
„The service is not available. Please try again later.“
Das bedeutet so viel, wie die Hölle friert ein. Moodle ist down. Aber die Supportfirma das erste Mal in der Woche erreichbar. Schön ist, dass sie vor 10 Minuten noch ging, die Ausfallzeit ist also gering, wenn es jetzt schnell repariert wird. Bis ca. 12:30 Uhr.

Mal sehen, wie es weiter geht….

Bildquelle von Wikipedia: Von Moodle.org – https://moodle.org/logo/ https://moodle.org/logo/moodle-logo.svg, GPL, Link

von Timotheus am 23.03.2020 16:08


24.03.2014

Manuel Kaderli (suntsu)

Be careful using ThreadStatic in Visual Studio unit tests

Given is a ThreadStatic field which is set to empty in the static constructor, and set by a public instance method:

    public class TestClass
    {
        [ThreadStatic] 
        private static string threadStaticValue;
        static TestClass()
        {
            threadStaticValue = "";
        }
        public void SetThreadStaticValue(string value)
        {
            threadStaticValue = value;
        }
        public string GetThreadStaticValue()
        {
            return threadStaticValue;
        }
    }

Now two unit tests check whether the threadStaticValue is set correct.

    [TestClass]
    public class ThreadStaticTest
    {
        [TestMethod]
        public void WithThreadStaticValueSetTest()
        {
            Debug.WriteLine("Thread id: {0}", System.Threading.Thread.CurrentThread.ManagedThreadId);
            TestClass tc = new TestClass();
            tc.SetThreadStaticValue("foo");
            Assert.AreSame(tc.GetThreadStaticValue(), "foo");
        }
        [TestMethod]
        public void WithThreadStaticValueNotSetTest()
        {
            Debug.WriteLine("Thread id: {0}", System.Threading.Thread.CurrentThread.ManagedThreadId);
            TestClass tc = new TestClass();
            Assert.AreSame(tc.GetThreadStaticValue(), "");
        }
    }

Those tests will fail(good) or pass(bad) depending of whether the test engine will reuse the same thread.

Executed a second time, the result could be different.

Solution:

  1. Don't use ThreadStatic at all
  2. Make sure the ThreadStatic fields are initialized correctly before using them

von suntsu (nospam@example.com) am 24.03.2014 11:28


13.11.2017

Christian Schmitt (slater)

Amazone Prime Video mit Linux Mint

Hej zusammen…

Ich habe heute mit meiner frischen installation von Linux Mint gekämpft… Prime Vido wollte nicht so wie ich es wollte…

Erst mal das was nicht geklappt hat:

Die ganzen Tips mit installiere HAL Lib über verschiedene wege…
Silverlight mit Wine…
Diverse Einstellung (hatten auch alle mit hal-libery zu tun)

Geholfen hat zum Schluss Mint selber!

Über das Start-Menü habe ich den Menüpunkt Multimedia ausgewählt. Dort wurde angeboten das Mint alles was Multimedia zu tun hat von alleine installiert… Jetzt läuft das mit Amazone Prime Video. Leider weiß ich nicht was alles am System jetzt geändert wurde von alleine… Mehdienwiedergabe, Rythmbox und VLC Player sind als einziges über das Multimedia Menü zusätzlich sichtbar und vorerst die einzigen Änderung die durchgeführt wurden.

Wenn ich noch was finde, was geädert wurde, werde ich es hier aktualisieren…

von Slater am 13.11.2017 19:00


08.05.2018

Malte Kiefer (beLI3VeR)

Kommentare mit Github

Ich bin ein großer Freund vom Datenschutz, leider unterstützt Hugo nur disqus, was alles andere als freundlich zum Datenschutz ist. Also gab es die letzten Monate nie eine Kommentar Funktion, das hat sich jetzt geändert.

Ich bin durch Zufall auf den Artikel von Don Williamson gestoßen, der es mir erlaubt eine Kommentar Funktion für meine Artikel durch Github anzubieten.

Konfiguration

Als erstes legen wir eine Datei comments.html im Ordner themes/THEME_NAME/layouts/partials/ mit folgenden Inhalt an:

<div id="gh-comments">
          <h2>Kommentare</h2>
              <div id="gh-comments-list"></div>
                  <a href="javascript:void(0)" id="gh-load-comments" class="btn" style="display:none">Load more comments</a>
</div>

   <script type="text/javascript" data-ghid="{{ $.Params.ghcommentid }}" src="{{ .Site.BaseURL }}js/github-comments.js"></script>

Als nächstes brauchen wir jetzt noch die JS Datei, die für uns die ganze Arbeit macht themes/THEME_NAME/static/js/github-comments.js mit folgenden Inhalt:

// use of ajax vs getJSON for headers use to get markdown (body vs body_htmml)
// todo: pages, configure issue url, open in new window?
//

var this_js_script = $('script[src*=github-comments]');


var ghid = this_js_script.attr('data-ghid');   
if (typeof ghid === "undefined" ) {
   var ghid = '0';
}

DoGithubComments(ghid);

var CurrentPage = 0;

function ParseLinkHeader(link)
{
    var entries = link.split(",");
    var links = { };
    for (var i in entries)
    {
        var entry = entries[i];
        var link = { };
        link.name = entry.match(/rel=\"([^\"]*)/)[1];
        link.url = entry.match(/<([^>]*)/)[1];
        link.page = entry.match(/page=(\d+).*$/)[1];
        links[link.name] = link;
    }
    return links;
}

function DoGithubComments(comment_id, page_id)
{
    var repo_name = "beli3ver/malte-kiefer.de";

    if (page_id === undefined)
        page_id = 1;

    var api_url = "https://api.github.com/repos/" + repo_name;
    var api_issue_url = api_url + "/issues/" + comment_id;
    var api_comments_url = api_url + "/issues/" + comment_id + "/comments" + "?page=" + page_id;

    var url = "https://github.com/beli3ver/malte-kiefer.de/issues/" + comment_id;

    $(document).ready(function ()
    {
        $.getJSON(api_issue_url, function(data) {
            NbComments = data.comments;
        });

        $.ajax(api_comments_url, {
            headers: {Accept: "application/vnd.github.v3.html+json"},
            dataType: "json",
            success: function(comments, textStatus, jqXHR) {

                // Add post button to first page
                if (page_id == 1)
                    $("#gh-comments-list").append("<a href='" + url + "#new_comment_field' rel='nofollow' class='btn'>Füge eine Kommentar hinzu</a>");

                // Individual comments
                $.each(comments, function(i, comment) {

                    var date = new Date(comment.created_at);

                    var t = "<div id='gh-comment'>";
                    t += "<img src='" + comment.user.avatar_url + "' width='24px'>";
                    t += "<b><a href='" + comment.user.html_url + "'>" + comment.user.login + "</a></b>";
                    t += " posted at ";
                    t += "<em>" + date.toUTCString() + "</em>";
                    t += "<div id='gh-comment-hr'></div>";
                    t += comment.body_html;
                    t += "</div>";
                    $("#gh-comments-list").append(t);
                });

                // Setup comments button if there are more pages to display
                var links = ParseLinkHeader(jqXHR.getResponseHeader("Link"));
                if ("next" in links)
                {
                    $("#gh-load-comments").attr("onclick", "DoGithubComments(" + comment_id + "," + (page_id + 1) + ");");
                    $("#gh-load-comments").show();
                }
                else
                {
                    $("#gh-load-comments").hide();
                }
            },
            error: function() {
                $("#gh-comments-list").append("Kommentarfunktion für diesen Beitrag nicht aktiviert!");
            }
        });
    });
}

Jetzt müssen die Links in der Datei angepasst werden. Ihr müsst eine eigne Repo anlegen bei Github und hier in der Datei anpassen. Achtung: Wir brauchen auch jQuery!. jQuery sollte umbedingt im <head></head> geladen werden.

Zum Schluss noch das Template für die Beitragsdatei anpassen (themes/THEME_NAME/layouts/_default/single.html) und den folgenden Teil for dem Aufruf des <footer></footer> Tags einfügen:

{{ partial "comments.html" . }}

Um jetzt die Kommentarfunktion zu nutzen, ein entsprechendes issue bei Github eröffnen, die ID merken. Wenn ihr dann einen neuen Beitrag erstellt, müsst ihr vor den "---" folgendes einfügen:

ghcommentid: ID

Und das wars, nun habt ihr und ich eine Kommentarfunktion.

CSP

Damit ihr diese Funktion mit CSP nutzen könnt, müssen folgende Einstellungen gesetzt sein:

img-src 'self' https://*.githubusercontent.com;
connect-src 'self' https://*.github.com

von Malte Kiefer (malte.kiefer@mailgermania.de) am 08.05.2018 00:00


24.06.2016

Helmut Roewer (Dunkelangst)

HKG✈KHH

Trip 35

Flight KA 450 from HKG to KHH

  • Flight 89: Hong Kong International Airport to Kaohsiung International Airport
  • Airbus A 330-300 – Dragonair
  • planed duration: 1h 25min
  • See also the itinerary to get an overview.

von Helmut am 24.06.2016 19:46


18.08.2010

Jürgen Braun (jaybe)

Android Tablet

Auch wenn ich den Hype um das Apple iPad nicht nachvollziehen kann (es funktioniert gut und sieht schick aus, ist mir aber zu teuer und bevormundet einen bei der Nutzung), so finde ich das Konzept eines Tablets doch ganz reizvoll. Wichtig ist jedoch, dass man sich über den Einsatzzweck klar wird. Für mich soll es keinen Ersatz für PC/Notebook/Netbook darstellen, sondern ein Gerät sein, mit dem man gemütlich auf der Couch seine Mails checken, in Foren stöbern, Facebook Nachrichten lesen, … also hauptsächlich Daten im Internet konsumieren kann.
Für 179.-€ war nun ein Tablet mit Android 2.1 angekündigt. Die Beschaffung gestaltete sich ein wenig schwierig und dauerte etwas länger, da das Gerät nicht wie angekündigt bereits montags erhältlich war, sondern erst eine Woche später als verfügbar gelistet wurde und bestellt werden konnte. In der Zwischenzeit waren auch erste Erfahrungsberichte von Benutzern aufgetaucht. Die Bandbreite war gewohnt groß und begann bei „der letzte Schrott“. Das folgende Fazit eines Benutzers ermutigte mich jedoch dazu, mir solch ein Gerät zu bestellen:

..ich sags mal ganz unverblümt
Das Ding ist nichts für Leute die den Ipad Killer erwartet haben und davon ausgehen das alles „out of the box“ für €179.- funktioniert..

Für alle anderen, die spaß an linux haben, lässt sich da sicher noch einiges machen bzw. fehlende funktionen nachrüsten.

Am Wochenende wurde das Gerät dann geliefert, die Inbetriebnahme musste jedoch bis Sonntag Abend warten.
Einloggen in das WLAN, Einrichten von Googlemail, Zugriff auf den eigenen Mailserver, Surfen im Web und die installierten Applikationen für Google Maps und YouTube funktionierten problemlos. Das Touch-Display lässt sich schwer bedienen, vor allem das Scrollen ist etwas umständlich, mit resistiver Technologie aber auch nur schwer umsetzbar, das funktioniert bei meinem Garmin-Navi aber auch nicht besonders.
Hardware

Billig wirkendes Plastik, vier Buttons auf der Gehäuserückseite für Zurück, Home, Suchen und Menü fühlen sich nicht besonders an und man muss sich die Position merken, da man sie nicht sieht.
Software

  • Browser: Eingabe über Touchscreen hakelig auch bei Verwendung des Eingabestiftes. Lädt und stellt die Webseiten recht flott dar.
  • Mail: Konfiguration von mehreren Mailservern möglich, Zugriff per POP3 oder IMAP
  • Google Maps: schnelle Darstellung der Karten, Layer für Satellitenbild und Wikipedia einblendbar. Bei Wikipedia werden „W“s eingeblendet, auf die man direkt klicken und Infos aus Wikipedia abrufen kann
  • Google Mail: direkte Verknüpfung mit meinem Google Mail Account, funktioniert einfach.
  • YouTube Player: direkte Verknüpfung mit meinem YouTube Account: Playlisten, Favoriten, … werden angezeigt. Suche ist möglich, Abspielen in voller Auflösung funktioniert sehr gut.
  • Android Market: Zuerst nicht gestartet, dann zwar gestartet, man konnte suchen und „installieren“, der Download kommt aber nicht zum Ende und es wird nichts installiert. Ein bekanntes Problem, es liegt wohl keine offizielle Google-ID vor.

Bisheriges Fazit: Wenn man nicht tippen muss, sondern sich auf Lesen/Sehen/Hören beschränkt, funktioniert das Tablet. Für die eingeschränkte mitgelieferte Software hätte ich es wohl nicht gekauft, ABER es gibt eine Seite mit Howtos, da wird erklärt, wie man das Gerät patchen, den Market aktivieren, auf alternative Markets umsteigen oder direkt die APKs installieren kann. Und wenn das dann funktioniert, kann es ein ganz brauchbares Gerät werden.


von jaybe am 18.08.2010 18:24


29.12.2011

Manuel Kaderli (suntsu)

Authenticate to smugmug with oAuth and c#

Some weeks ago, i tried to create a windows phone 7 smugmug app(photo browser). I had some problems with oAuth at the beginning, First, I tried the google oAuth implementation in c# with the result that the first request(AcquireRequestToken) worked, but the second request(AcquireAccessToken) failed with an invalid signature. Then i tried to implement it myself with the same result.

Even with the smugmug oAuth documentation, i found it quite hard to get it done. Some parts like the authorize parameters(public/full/read/modify) i had to figure out myself.

After some time, i found an c# oAuth class written for twitter access for cropperplugins.codeplex. With this code, i was at least able to get a proper AccessToken for smugmug. I've written a little demo application if someone else has the same problems.

To get this sample working, you only have to set you apiKey and secret. This sample will do: 1. Get a request token and a request token secret 2. Authorize the request token 3. With the request token secret, acquire a access token 4. This access token and access token secret are used for all further authentication, and should not expire until the user revokes them.

        private void AuthenticateSmugmug()
        {
            const string apiKey = "YOURAPIKEY";//apikey from your smugmug account
            const string secret = "YOUR_SECRET";//secret from your smugmug account

        Console.WriteLine("Create new instance of OAuth Manager");
        Manager manager = new Manager(apiKey, secret);

        Console.WriteLine("Aquire a request token from smugmug");
        OAuthResponse requestToken = manager.AcquireRequestToken("http://api.smugmug.com/services/oauth/getRequestToken.mg", "GET");

        string oauthToken = requestToken["oauth_token"];
        Console.WriteLine(string.Format("oauthToken: {0}", oauthToken));
        string oauthTokenSecret = requestToken["oauth_token_secret"];
        Console.WriteLine(string.Format("oauthTokenSecret: {0}", oauthTokenSecret));

        //Opens your default browser and authorize your request token
        //Parameters: Access=[Public|Full], Permissions=[Read|Add|Modify]
        System.Diagnostics.Process.Start(string.Format("http://api.smugmug.com/services/oauth/authorize.mg?oauth_token={0}&Access=Full&Permissions=Modify", oauthToken));

        Console.WriteLine("Please enter you credentials into the browser before continuing");
        Console.WriteLine("Press any key to continue...");
        Console.ReadLine();

        OAuthResponse accessToken = manager.AcquireAccessToken("http://api.smugmug.com/services/oauth/getAccessToken.mg", "GET", oauthTokenSecret);

        Console.WriteLine(string.Format("accessToken: {0}", accessToken["oauth_token"]));
        Console.WriteLine(string.Format("accessTokenSecret: {0}", accessToken["oauth_token_secret"]));
        Console.WriteLine("Press any key to quit the application");
        Console.ReadLine();
    }

This is the complete source code for the oAuth sample. It's c# written in Visual Studio 10: To get this sample working, just enter your Api Key and Secret. SmugmugOAuthSample.zip

von suntsu (nospam@example.com) am 29.12.2011 09:31


11.06.2020

Darian (thoys)

Projektstart – die Ausgangssituation

Am Anfang eines jeden Projekts muss man erst einmal schauen, was überhaupt Stand der Dinge ist. Also machen wir das mal und schauen, wo ich Funkverbindungen benutze, bevor ich starte, meine Funk-Bilanz zu reduzieren. Ich zeige euch meinen Arbeitsplatz und mein Zuhause. Denn an meinem Arbeitsplatz stehen zwar die meisten Geräte, aber mittlerweile nutze ich fast in jedem Raum ein Gerät, das einem den Alltag versüßt.

Mein Arbeitsplatz und mein Zuhause

Ich habe einen aufgeräumten Arbeitsplatz. Das brauche ich, sonst versinke ich im Chaos. Einiges ist noch mit Kabel verbunden, beispielsweise die Tastatur, die Maus und der Lautsprecher am Bildschirm.
An Funktechniken verwende ich:

  • DECT (Hausintern – Schnurlostelefon)
  • W-LAN (Hausintern – Daten vom Router)
  • Bluetooth (Nahbereich – Verbindungen zu Kopfhörern, Lautsprechern usw.)
  • 1G – 4G Mobilfunk (Fernbereich – Das durchgestrichene Flugzeug soll in diesem Fall die Verbindung zum Mobilfunkturm ohne Mobile Daten darstellen)
  • Mobile Daten (Fernbereich – Daten von Mobilfunktürmen)
Mein Arbeitsplatz und die verwendeten Funktechniken

Viele andere Geräte sind per Funk mit Sendern im Haus oder mit dem Funkturm verbunden. Es ist viel, aber es hält sich noch im Rahmen dessen, was heute als normal gilt – oder?

  1. An erster Stelle steht natürlich das Smartphone. Funkverbindung (4G) und Mobile Daten sind an. Für Zuhause ist das W-LAN und Bluetooth für den Kopfhörer aktiviert.
  2. Mein Smartphone und die genannten Verbindungen sind immer an – somit bin ich immer erreichbar.
  3. Das Handy von meinem Nebenjob ist alt aber funktioniert zum Telefonieren wunderbar und der Akku hält mehrere Tage – es kann ja auch nichts.
  4. Das Notebook ist per W-LAN mit dem Router zwei Stockwerte weiter unten verbunden, Bluetooth für die Kopfhörer und UMTS (3G).
  5. Das Tablet ist ebenfalls mit W-LAN verbunden und hat ab und zu Bluetooth an.
  6. Das Schnurlostelefon arbeitet mit DECT. Damit habe ich mich noch nicht weiter beschäftigt.
  7. Der Drucker ist ebenfalls per W-LAN eingebunden, er kann auch Bluetooth, aber das habe ich noch nie verwendet.
  8. Das W-LAN ist beim Router immer eingeschaltet.
  9. Ich habe einen Receiver für den Fernseher, der ebenfalls per W-LAN eingebunden ist.
  10. Die Musik kommt per Spotify.
  11. Ich habe ein Medienwiedergabegerät von Noxon, dies hat eine Antenne und auch W-LAN.
  12. Meine Internetgeschwindigkeit ist mit 50 Mbit/s ganz ordentlich für meine Gegend. Wenn ich schnelleres haben wollte, wäre das noch möglich. Den Stadtwerken sei dank, die Telekom hat nur 6 Mbit/s hinbekommen – abgesehen von Hybrid Tarifen, bei denen Kabel und 4G – Funk gemeinsam genutzt wird.
  13. Alle Programme, die auf dem Handy laufen (Messenger, soziale Medien und praktische Programme, wie der Bahn-Navigator) nutze ich ausschließlich auf dem Smartphone.
  14. Vor dem Fenster sehen wir in 150 Metern den nächsten Funkmast. Wir haben schnelles Internet per Mobile Daten.

Ich habe als 6 W-LAN Endgeräte, einen W-LAN Router, 4 Endgeräte mit Bluetooth und einen nahestenden Funkmast. Dazu zwei Geräte, die per Funkverbindung zum Funkturm Telefonieren und ein Schnurlostelefon.

Projektstart

Termin

Mein Plan ist, dass ich in zu allererst schaue, was ich durch Einstellungen von Geräten und durch kleine Verhaltsänderungen meinerseits machen kann.

Los gehts am 1. Juli.

Folgt mir per Mail oder RSS und sagt mein Projekt euren Freunden weiter. Je mehr Menschen mir Tipps geben können, umso besser. Und natürlich freue ich mich auf deine Meinung, denn manches wird ganz einfach und manches etwas… sagen wir, nicht-alltagstauglich werden.

Wie sieht’s bei euch so aus? Schreibt’s mir in die Kommentare!

-<-,–{@ Euer Darian

von Darian am 11.06.2020 07:09


14.11.2016

Sebastian Feltel (feltel)

Identitätsdiebstahl auf pi-news.net

Wie ich durch eine Google-Suche erfahren musste, gibt es auf der rechtspopulistischen und in *GIDA-Kreisen beliebten Webseite pi-news.net * ein Fakeprofil mit meinem vollen Namen. Mit diesem Profil wurden und werden weiterhin zahlreiche Kommentare gepostet, von deren Inhalt, Zielrichtung und Tonalität ich mich in entschiedener Weise distanzieren möchte. Das Profil wurde selbstredend nicht durch mich […]

von feltel am 14.11.2016 18:56


03.08.2017

Sebastian Feltel (feltel)

(fast) zwei Jahre Sachspendenzentrale

Mit dem heutigen Tage endet -vorerst- mein fast zweijähriges ehrenamtliches Engagement in der Leipziger Sachspendenzentrale. Es endet nicht, weil ich nicht mehr helfen möchte oder ich darin keinen Sinn mehr sehen würde, auch nicht weil es keine Hilfebedürftigen oder Sachspenden mehr gäbe. Nein, es endet, weil zum 31.07. die einzige Angestellte des Trägervereins, die sich […]

von feltel am 03.08.2017 15:19


Willkommen!
Forum
Chat
Wiki/Tipps
Planet
Bildergalerie
Links
Twitter
dieses und jenes
Blogger
(BigOlly) (feed)
(Lord_Carlos und mweinelt) (feed)
(Meillo) (feed)
(Trurl) (feed)
(c3f2o) (feed)
(emge) (feed)
(thoys) (feed)
(trompetenkaefer) (feed)
Andre Nitschke (gnude) (feed)
Axel Hellinger (cryptolegal) (feed)
Beni Goll (Bennerl) (feed)
Bernd Dau (whisper) (feed)
Bert Radke (bert) (feed)
Bjoern Schiessle (BeS) (feed)
Christian Imhorst (immi) (feed)
Christian Schmitt (slater) (feed)
Christoph Langner (Chrissss) (feed)
Christoph Wickert (raoul) (feed)
Daniel Gestl (mcdaniels) (feed)
Darian (thoys) (feed)
Dominik George (Natureshadow) (feed)
Dominik Kupschke (bommi) (feed)
Dominik Pieper (nachtwandler) (feed)
Felix Schmeing (gimbar) (feed)
Gerrit Kruse (MrGerardCruiz) (feed)
Helmut Roewer (Dunkelangst) (feed)
Hendrik Richter (Hendi) (feed)
Holger Reinmann (codeaeffchen) (feed)
Jan Hauke Rahm (jhr-online) (feed)
Jochen Skulj (feed)
Jochen Welzel (jeff84) (feed)
Joerg Kastning (Tronde) (feed)
Jörg Kruse (4A4B) (feed)
Jürgen Braun (jaybe) (feed)
Lars Moelleken (voku1987) (feed)
Malte Kiefer (beLI3VeR) (feed)
Malte Schmidt (maltris) (feed)
Manuel Kaderli (suntsu) (feed)
Marc Nowak (TCA) (feed)
Marco Laspe (rockiger) (feed)
Marco Scholtyssek (marco_s) (feed)
Marco Scholtyssek (marco_s) (feed)
Marius M. M. (devilx) (feed)
Markus Matuszczak (konsumer) (feed)
Markus W. Kropp (Musix) (feed)
Martin Dosch (Dogge) (feed)
Mirko Weber (tylerD) (feed)
Nico Hartung (xyznico) (feed)
Oliver Groschopp (beetlefrosch) (feed)
Patrick Schmid (compr00t) (feed)
René Hering (ReneH) (feed)
Roman Hanhart (Thurgau) (feed)
Sabine Becker (AtariFrosch) (feed)
Sebastian Feltel (feltel) (feed)
Sebastian Moors (mauser) (feed)
Stefan J. Betz (encbladexp) (feed)
Steffen Moeller (smoe) (feed)
Steffen Rumberger (inne) (feed)
Stephan Tetzel (zefanja) (feed)
Sven S. (FearFactor) (feed)
Thorsten Sperber (TRex) (feed)
Tobias Dols (TobsenD) (feed)
Tom Karasek (Natas12) (feed)
Torsten Werner (bollin) (feed)
Viktor Bindewald (Vitei) (feed)
Vinzenz Vietzke (vinz) (feed)
posativ (feed)
Feeds
ATOM Feed
RSS 1.0 Feed
RSS 2.0 Feed
FOAF
OPML
Letztes Update
10.06.2025 10:15 (GMT+1)
Planetarium
Planet Debian
Planet Debian Administration
Planet Skolelinux
Planet Ubuntu
Planet RootForum
Planet symlink
Planet GNOME
Planet KDE
Planet Apache
Planet freedesktop.org
mehr ...
top
Zum Seitenanfang
Diese Webseite ist keine offizielle Webseite des Debian Projekts.
Haftungsausschluss und Impressum –Datenschutzrichtlinie – debianforum.de Verhaltensregeln

Powered by Planet Venus
Template entwickelt von Timo Salmen, basierend auf dem Debian Live Template, entwickelt von Christoph Haas.