Responsive layouts, information architecture, HTML, CSS and the details that make a site feel deliberate rather than assembled.
Systems Tinkerer Web design, automation and digital systems — understood beyond the surface.
For small and medium-sized businesses, I design websites, automate processes and solve technical problems where several systems, data sources or slightly stubborn configurations meet.
I have been online since 1997. Netscape Navigator was normal, AltaVista and the Yahoo directory were useful signposts, Germany's Btx world had not quite disappeared yet, and Amazon was still a young online bookseller rather than shorthand for global e-commerce. My 14.4 kbit/s modem announced every session acoustically; a slowly assembling page left enough time to make tea without disturbing the workflow.
More of the route from dial-up to todayDoes the website actually need WordPress or another CMS?
I first look at what the site genuinely needs. If editorial workflows, user accounts, complex content management or other CMS functions add practical value, I use an appropriate system. If they do not, a lean HTML and CSS foundation — with JavaScript or PHP only where it is actually needed — can be the better choice.
That can reduce page overhead, update and maintenance effort, and ongoing cost. Just as importantly, the code should remain understandable and easy to hand over. Another competent developer can take over later; ongoing support from me is not a technical requirement. If there is nothing to do after the project, there is no need for a standing maintenance arrangement.
Ask which technical foundation actually makes senseWeb design is not a page-builder sport for me.
Page builders can be useful tools. They are simply not a substitute for understanding the web. When necessary, I go down to HTML, CSS, JavaScript, PHP, databases, DNS, mail flow or the interface between systems.
Server-side logic, structured data, SQL-backed systems and practical solutions that need more than a visual editor.
Connecting tools, reducing repeated work, moving data reliably and building workflows that survive everyday use.
Shopify, product data, marketplaces, fulfilment, operational processes and the technical realities behind a running shop.
SPF, DKIM, DMARC, Exchange, connectors, domains and the less glamorous layers that become very important when they stop working.
I follow the problem rather than the product category: browser, server, data, configuration, workflow or human process.
Useful systems leave evidence.
These are not fictional portfolio exercises. They grew out of real operational, technical or communication problems — then became tools, websites and workflows that are actually used. Four examples are shown here; the complete selection can be browsed in the project viewer.
Finance & Document Verification Workspace
A purpose-built workspace that checks financial records against supplier documents, highlights missing files and turns repeated verification work into a clear routine.
Invoice & Payment Workspace
A lean internal interface for capturing invoices, preparing payments and keeping document-based processes structured without the ballast of a full accounting platform.
B2B Website Rebuild
A company website rebuilt on a leaner technical foundation: clearer information, cleaner design and easier maintenance without unnecessary CMS overhead.
Editorial Photography Stories
A portfolio and story format that gives photographs more space than a simple grid — combining imagery, editorial rhythm and a quieter reading experience.
More than four projects. Browse the complete selection without leaving the page.
From dial-up nostalgia to modern web systems.
Two screenshots are enough for the point. On the left: a current JeCo layout with modern hierarchy and responsive thinking. On the right: Linuxlog from the early 2000s, when hand-built pages and community projects were perfectly normal territory. I did not invent the internet. I merely watched it load slowly enough to allow tea.
Not decorative knowledge.
The actual building blocks.
Design matters. So does the material behind it. PHP, HTML, SQL, Excel logic and terminal work are not abstract buzzwords here; they are tools I actually use when something needs building, fixing, calculating or understanding.
Runs on the server, talks to databases and APIs, and creates exactly the dynamic behaviour a project needs — without installing a whole CMS just to change one value.
<?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 records mapped
// [OK] data layer remains pleasantly boring
The browser-native structure of a website. For a compact company presence, clean semantic HTML can be the entire foundation: fast, inspectable and pleasantly free of admin dashboards.
<!doctype html>
<html lang="en">
<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>Built by hand when it makes sense.</p>
<a href="#contact">Contact Me</a>
</section>
</main>
</body>
</html>
Asks a database precise questions and returns useful data: stock, products, customers, reports or whatever the business actually needs to know.
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;
-- result: useful data, zero dashboard theatre
Direct access to DNS, runtimes, logs and system tools. When a graphical dashboard hides the interesting part, the command line usually does not.
$ 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) — still doing actual work
$ system-check --mode curious
[OK] DNS answers
[OK] database awake
[OK] cache warm
[OK] operator contains caffeine
[AI] Pattern recognised: solve problem before buying plugin.
[DONE] No marketing department was required.
Business logic without building an application first: nested formulas, lookups and dynamic arrays can turn a stubborn workbook into a surprisingly capable tool.
=LET(
sku, A2:A500,
stock, B2:B500,
price, C2:C500,
lowStock, stock<5,
FILTER(HSTACK(sku,stock,price), lowStock, "all good")
)
=XLOOKUP(G2, Products[SKU], Products[Price], "not found")
=SORT(UNIQUE(FILTER(Orders[Customer], Orders[Status]="open")))
=SUMPRODUCT((Orders[Channel]="Amazon")*(Orders[Country]="DE")*Orders[Net])
[OK] nested logic resolved
[OK] dynamic array spilled without drama
[LEGACY] Ctrl+Shift+Enter matrix formula detected — approached respectfully
[BUSINESS] workbook rescued before someone added a seventeenth helper column
The terminal stays.
A website about technical curiosity is allowed to have one unnecessary-but-delightful command prompt. This one leads to my separate retro terminal project.
My interactive retro terminal combines technical notes, useful commands, small tools and a little command-line nostalgia.
Type start or go and press Enter.
Waiting for command: start or go
The terminal interface is currently available in English only.
You discuss the problem directly with the person who analyses and solves it. No sales layer, no handover to a mysterious technical department, and no automatic assumption that the answer must involve another subscription.
Sometimes the right solution is a polished website. Sometimes it is PHP, a database query, a DNS correction, a small script or a workflow that finally behaves as expected. I care more about the result than the label on the tool.
Contact Me Directly
Have an idea, a question or a technical problem that needs a practical look? Send me a brief, no-obligation description of what needs solving. I am based in Middle Franconia, Germany, and work independently of location — regionally as well as internationally. You can write to me in English or German.