Responsive Layouts, Informationsarchitektur, HTML, CSS und die Details, durch die eine Seite gestaltet statt zusammengesetzt wirkt.
Systems Tinkerer Webdesign, Automatisierung und digitale Systeme — verstanden bis unter die Oberfläche.
Ich gestalte Webseiten, automatisiere Prozesse und löse technische Probleme dort, wo mehrere Systeme, Datenquellen oder leicht widerspenstige Konfigurationen aufeinandertreffen.
Ich bin seit 1997 im Internet aktiv. Netscape Navigator war Alltag, AltaVista und das Yahoo-Verzeichnis waren brauchbare Wegweiser, die deutsche Btx-Welt war noch nicht ganz Geschichte und Amazon noch ein junger Online-Buchhändler statt Synonym für globalen E-Commerce. Mein 14,4-kbit/s-Modem kündigte jede Sitzung akustisch an; während sich eine Seite Zeile für Zeile aufbaute, konnte man problemlos Tee kochen, ohne den Arbeitsablauf zu stören.
Mehr von der Einwahlzeit bis heuteWebdesign ist für mich kein Baukastensport.
Page Builder können nützliche Werkzeuge sein. Sie ersetzen nur nicht das Verständnis für das Web. Wenn es nötig ist, gehe ich bis zu HTML, CSS, JavaScript, PHP, Datenbanken, DNS, Mailflow oder an die Schnittstelle zwischen Systemen.
Serverseitige Logik, strukturierte Daten, SQL-basierte Systeme und praktische Lösungen, für die ein visueller Editor nicht ausreicht.
Werkzeuge verbinden, wiederkehrende Arbeit reduzieren, Daten zuverlässig bewegen und Abläufe bauen, die den Alltag überstehen.
Shopify, Produktdaten, Marktplätze, Fulfilment, operative Prozesse und die technische Realität hinter einem laufenden Onlineshop.
SPF, DKIM, DMARC, Exchange, Connectoren, Domains und jene wenig glamourösen Ebenen, die sehr wichtig werden, sobald sie nicht funktionieren.
Ich folge dem Problem statt der Produktkategorie: Browser, Server, Daten, Konfiguration, Workflow oder menschlicher Prozess.
Nicht jede Webseite braucht ein CMS.
WordPress, Shopify, TYPO3 und Page Builder sind sinnvolle Werkzeuge, wenn ihre Funktionen tatsächlich gebraucht werden. Ich nutze sie ebenfalls. Für eine digitale Visitenkarte oder eine kompakte Unternehmensseite reichen jedoch oft sauberes HTML und CSS — ergänzt um JavaScript oder PHP nur dort, wo wirklich Dynamik nötig ist.
Das kann weniger Abhängigkeiten, weniger Update-Ketten, eine kleinere Angriffsfläche und einen Code bedeuten, der sich bei Fehlern leichter nachvollziehen lässt. Gleichzeitig bleibt mehr Kontrolle beim Betreiber: Kleine Module lassen sich gezielt ergänzen, ohne dass jede Änderung zuerst zu einer Plugin-Entscheidung wird.
Unverbindlich fragen, wie schlank es gehen kannVon Einwahlgeräuschen bis zu modernen Websystemen.
Zwei Screenshots reichen für den Punkt. Links: ein aktuelles JeCo-Layout mit moderner Hierarchie und responsivem Denken. Rechts: Linuxlog aus den frühen 2000ern, als handgebaute Seiten und Community-Projekte ganz normales Terrain waren. Ich habe das Internet nicht erfunden. Ich habe ihm nur lange genug beim Laden zugesehen, um in Ruhe Tee zu kochen.
Kein Dekowissen.
Das sind die eigentlichen Bauteile.
Design ist wichtig. Das Material dahinter ebenso. PHP, HTML, SQL, Excel-Logik und Terminal-Arbeit sind hier keine hübschen Schlagworte, sondern Werkzeuge, die ich tatsächlich benutze, wenn etwas gebaut, repariert, berechnet oder verstanden werden muss.
Läuft auf dem Server, spricht mit Datenbanken und APIs und liefert genau die Dynamik, die ein Projekt benötigt — ohne für eine einzelne Funktion gleich ein komplettes CMS installieren zu müssen.
<?php
declare(strict_types=1);
$statement = $pdo->prepare(
"SELECT sku, stock, updated_at
FROM products
WHERE active = :active
ORDER BY updated_at DESC
LIMIT 12"
);
$statement->execute(['active' => 1]);
$products = $statement->fetchAll(PDO::FETCH_ASSOC);
foreach ($products as $product) {
syncInventory($product);
}
// [OK] 12 Datensätze zugeordnet
// [OK] Datenebene erfreulich unspektakulär
Die browsernative Grundstruktur einer Webseite. Für einen kompakten Unternehmensauftritt kann sauberes semantisches HTML bereits die komplette Basis sein: schnell, nachvollziehbar und angenehm frei von Admin-Dashboards.
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="color-scheme" content="dark">
<title>Systems Tinkerer</title>
</head>
<body>
<main>
<section class="hero" aria-labelledby="hero-title">
<h1 id="hero-title">Systems Tinkerer</h1>
<p>Von Hand gebaut, wenn es sinnvoll ist.</p>
<a href="#contact">Kontaktiere mich</a>
</section>
</main>
</body>
</html>
Stellt einer Datenbank präzise Fragen und liefert verwertbare Antworten: Bestände, Produkte, Kunden, Auswertungen oder genau die Daten, die im Prozess gerade fehlen.
WITH live_stock AS (
SELECT sku, manufacturer, stock, updated_at
FROM products
WHERE archived = 0
AND stock IS NOT NULL
),
recent AS (
SELECT *,
ROW_NUMBER() OVER (
PARTITION BY manufacturer
ORDER BY updated_at DESC
) AS rn
FROM live_stock
)
SELECT manufacturer, sku, stock
FROM recent
WHERE rn <= 5
ORDER BY manufacturer, updated_at DESC;
-- Ergebnis: Nutzdaten statt Dashboard-Theater
Direkter Zugriff auf DNS, Laufzeiten, Logs und Systemwerkzeuge. Wenn ein grafisches Dashboard den interessanten Teil versteckt, tut es die Kommandozeile meistens nicht.
$ brew update
==> Updating Homebrew...
==> Pouring portable-ruby-4.x.catalina.bottle.tar.gz
==> Homebrew collects anonymous analytics.
$ dig robnet.dev MX +short
10 mail.protection.example.
$ php -v
PHP 8.x (cli) — erledigt weiterhin echte Arbeit
$ system-check --mode curious
[OK] DNS antwortet
[OK] Datenbank wach
[OK] Cache warm
[OK] Operator enthält Koffein
[AI] Muster erkannt: Problem lösen, bevor Plugin gekauft wird.
[DONE] Keine Marketingabteilung erforderlich.
Geschäftslogik, ohne zuerst eine Anwendung bauen zu müssen: verschachtelte Formeln, Verweise und dynamische Matrizen machen aus einer störrischen Arbeitsmappe ein erstaunlich leistungsfähiges Werkzeug.
=LET(
sku; A2:A500;
bestand; B2:B500;
preis; C2:C500;
knapp; bestand<5;
FILTER(HSTAPELN(sku;bestand;preis); knapp; "alles entspannt")
)
=XVERWEIS(G2; Produkte[SKU]; Produkte[Preis]; "nicht gefunden")
=SORTIEREN(EINDEUTIG(FILTER(Bestellungen[Kunde]; Bestellungen[Status]="offen")))
=SUMMENPRODUKT((Bestellungen[Kanal]="Amazon")*(Bestellungen[Land]="DE")*Bestellungen[Netto])
[OK] verschachtelte Logik aufgelöst
[OK] dynamische Matrix ohne Drama ausgespielt
[LEGACY] Ctrl+Shift+Enter-Matrixformel erkannt — mit Respekt genähert
[BUSINESS] Arbeitsmappe gerettet, bevor Hilfsspalte Nummer 17 entstand
Das Terminal bleibt.
Eine Webseite über technische Neugier darf sich einen unnötigen, aber erfreulichen Kommandozeilen-Moment leisten. Dieser führt zu meinem separaten Retro-Terminal-Projekt.
Mein interaktives Retro-Terminal verbindet technische Notizen, nützliche Befehle, kleine Werkzeuge und etwas Kommandozeilen-Nostalgie.
Gib start oder go ein und bestätige mit Enter.
Warte auf Befehl: start oder go
Die Terminal-Oberfläche ist derzeit nur auf Englisch verfügbar.
Du besprichst das Problem direkt mit demjenigen, der es analysiert und löst. Keine Vertriebsebene, keine Übergabe an eine mysteriöse Technikabteilung und keine automatische Annahme, dass die Antwort zwingend ein weiteres Abo enthalten muss.
Manchmal ist die richtige Lösung eine sauber gestaltete Webseite. Manchmal ist es PHP, eine Datenbankabfrage, eine DNS-Korrektur, ein kleines Skript oder ein Arbeitsablauf, der sich endlich wie erwartet verhält. Mir ist das Ergebnis wichtiger als das Etikett auf dem Werkzeug.
Kontaktiere mich direkt
Hast du eine Idee, eine Frage oder ein technisches Problem, das einen praktischen Blick benötigt? Schreib mir einfach unverbindlich, was gelöst werden soll. Ich sitze in Höchstadt an der Aisch und arbeite sowohl regional als auch überregional. Du kannst mich auf Deutsch oder Englisch kontaktieren.