Skip to content
HomeHome
DE
WhatsAppMailPhone

EMIT Solution Blog

Practical knowledge,
not boilerplate.

Niche articles on web, AI and accessibility - from real work, not a content template.

Finding ads clicks in the Umami API when type=utm_source answers with 400

Finding ads clicks in the Umami API when type=utm_source answers with 400

How to break Google Ads traffic down to campaign and keyword in a cookieless Umami, why the obvious metrics call fails, which time zone the API returns and when filtered views show wrong session durations.

August 6, 20268 min
The Core Web Vitals thresholds did not change in 2026

The Core Web Vitals thresholds did not change in 2026

A fact check on the claims circulating about Core Web Vitals in 2026. Thresholds, Chromium changelogs, CrUX figures and a timeline of what actually changed.

August 5, 20268 min
With Astro server rendering, the platform decides cost, cold start and data protection

With Astro server rendering, the platform decides cost, cold start and data protection

Vercel, Netlify, Cloudflare Workers or your own Node process. What the four Astro adapters really change under the hood, which unit each one bills by, and how long the chain of processors gets.

August 4, 20268 min
PageSpeed Insights does not measure your LCP, it calculates it

PageSpeed Insights does not measure your LCP, it calculates it

Why the default mode simulates through Lantern, how the last node in the dependency graph sets the LCP value, and how to put observedLargestContentfulPaint next to the simulated number.

August 3, 20268 min
Deferring loading until after the LCP, gated by the PerformanceObserver

Deferring loading until after the LCP, gated by the PerformanceObserver

Why loading=lazy, requestIdleCallback and window.load do not reliably keep decorative layers out of the LCP chain, and how a gate on the largest-contentful-paint entry solves it.

August 2, 20268 min
The focusgroup attribute replaces the hand-written roving tabindex

The focusgroup attribute replaces the hand-written roving tabindex

Chrome 150 and Edge 150 ship focusgroup: arrow-key navigation, one tab stop and a focus memory, declared in HTML. What the syntax actually looks like, which roles the browser hands out along the way, and what is still open on the assistive technology side.

August 1, 20268 min
Without the APP_KEY a Coolify restore only brings back an empty interface

Without the APP_KEY a Coolify restore only brings back an empty interface

Coolify backs databases up to S3, but its own database holds SSH keys, environment variables and S3 credentials in encrypted form only. Where the APP_KEY lives, what exactly fails without it, what the documented restore path looks like, and how to assemble a restore drill from it.

July 31, 20268 min
Swapping tools mid-conversation without losing the prompt cache

Swapping tools mid-conversation without losing the prompt cache

Claude Opus 5 brought along a beta header that adds or withdraws tools between the turns of a conversation without expiring the prompt cache. How it works technically, which placement rules trigger 400s, and when Tool Search is the better choice.

July 30, 20268 min
The Next.js July patch only hits your project under six conditions

The Next.js July patch only hits your project under six conditions

Nine CVEs in the Next.js security release of 20 July 2026. Which of them actually affect a normal installation comes down to six conditions that you can check in five minutes against package.json, next.config and your codebase.

July 29, 20268 min
Your build strips the AI marker out of the image

Your build strips the AI marker out of the image

sharp removes all metadata by default when it converts to WebP and AVIF. Astro and Next.js call sharp in exactly that way. What gets lost along the way, and which configuration saves the marker.

July 28, 20268 min
Finding vulnerabilities with AI: the workflow decides, not the model

Finding vulnerabilities with AI: the workflow decides, not the model

An AI finds 19 zero-days in Redis in 90 minutes while open source projects drown in worthless AI security reports. Both are the same phenomenon. How an AI code audit needs to be structured so you end up with verified findings instead of a list that is 80 percent noise.

July 27, 20267 min
Dependabot now waits three days: setting up dependency cooldowns properly

Dependabot now waits three days: setting up dependency cooldowns properly

Since July 2026 GitHub delays Dependabot version updates by three days by default. Why that waiting period protects against supply chain attacks, why security updates still arrive immediately, and how to tune the cooldown in dependabot.yml for your project.

July 26, 20267 min
Testing Hetzner's free AI on German: Qwen3.6 against real office tasks

Testing Hetzner's free AI on German: Qwen3.6 against real office tasks

How good is the model now running for free on German servers when it comes to the German language? I tested Qwen3.6-35B through Hetzner's inference API with seven typical office tasks, from email classification to formal replies. With my own measurements, verbatim outputs, one reproducible language bug and two undocumented API traps.

July 25, 20268 min
Hetzner now hosts OpenClaw: free AI assistant instances as an experiment

Hetzner now hosts OpenClaw: free AI assistant instances as an experiment

Quietly and without any announcement, Hetzner is offering hosted OpenClaw instances at experiments.hetzner.com, in three sizes from Shrimp to Lobster, free for the duration of the experiment. I spun one up. What works, what is locked, what the confusing cost display means and who this experiment is for.

July 25, 20268 min
Hetzner Inference: the new AI API serving Qwen3.6, OpenAI-compatible on EU servers

Hetzner Inference: the new AI API serving Qwen3.6, OpenAI-compatible on EU servers

Since July 2026 Hetzner has been running an experimental AI inference API. OpenAI-compatible, servers in Germany and Finland, free during the test phase. What the offering can do today, what it is already good for, and why the missing data processing agreement is the one limitation that matters most.

July 25, 20267 min
Disclosing AI-edited listing photos without spoiling the listing

Disclosing AI-edited listing photos without spoiling the listing

Virtually staged and AI-optimised photos have long been routine in property listings. From 2 August 2026 the EU AI Act requires them to be recognisable as AI-edited, and New York is proposing the same for rental listings. Where the note belongs so it meets the duty without disfiguring the listing: in the caption, discreetly on the image, in the description text, or as a quiet info symbol on your own website.

July 22, 20268 min
Astro 7.1: setting up a Content Security Policy without hand-maintaining the header

Astro 7.1: setting up a Content Security Policy without hand-maintaining the header

Astro 7.1 shipped on 16 July 2026 - a minor release with no breaking changes. The practical win: the built-in Content Security Policy is now more granular. How to set it up step by step, plus the smaller changes to pagination, content collections and the dev server.

July 21, 20268 min
Where's my replacement part? How a kitchen studio shows complaint status instead of calling back

Where's my replacement part? How a kitchen studio shows complaint status instead of calling back

A scratch in the worktop, the replacement is on order with the manufacturer - and the customer calls every few days asking where it is. Each call costs office time, and despite a perfectly normal process the customer grows unhappier. How a status page on the parcel-tracking principle catches the queries and turns the complaint back into a satisfied customer.

July 20, 20268 min
Nothing new in weeks? How a climbing gym keeps its routes visible instead of losing them in the story

Nothing new in weeks? How a climbing gym keeps its routes visible instead of losing them in the story

New boulders are the reason regulars come back - but the news about them sits in an Instagram story for 24 hours and is then gone. Why the gym software and the climbing app don't solve this, and how a permanent sector page on your own site shows what's freshly set and when the next section is due.

July 19, 20268 min
Thinking through your own funeral in peace: a pre-planning form that doesn't feel like a contract

Thinking through your own funeral in peace: a pre-planning form that doesn't feel like a contract

Many people want to arrange their funeral in advance, before their families have to guess in the moment. But online they land on anonymous calculators and insurer forms that feel like signing a contract. How a funeral director can instead offer a calm, dignified wishes questionnaire - one that orders your own ideas rather than selling something.

July 18, 20268 min
Today's flavours: how an ice cream parlour shows its rotating menu and allergens online

Today's flavours: how an ice cream parlour shows its rotating menu and allergens online

An artisan gelateria rotates which 15 of its 30 flavours are in the counter each day. Anyone with an allergy or a favourite flavour has to call or drive on the off chance. Why the Instagram story and off-the-shelf menu tools don't solve it - and how a lean page shows the day's flavours and allergens while handling the labelling duty at the same time.

July 17, 20268 min
When a winery opens for the season: reaching the regulars who drive to you

When a winery opens for the season: reaching the regulars who drive to you

A seasonal tavern opens only a few weeks a year, the dates shift and are often fixed only shortly beforehand. The most loyal guests, the ones who travel to get there, are exactly the ones who miss it. Why regional listings and newsletters don't solve this - and how a lean, own solution reaches your regulars without handing the relationship to a portal.

July 16, 20268 min
The bank details question, asked for the hundredth time: how a tenant self-service portal retires the noticeboard

The bank details question, asked for the hundredth time: how a tenant self-service portal retires the noticeboard

At 7pm a tenant asks for the bank details for the rent - the IBAN is in the lease, on the last service charge statement, and has been pinned to the noticeboard for three weeks. The phone still rings. Why noticeboards and circular letters fail structurally as a channel, which ten questions make up most routine calls, and how a lean tenant self-service portal catches them without turning into a full-blown tenant portal.

July 15, 202610 min
The View Transitions API: smooth page transitions without a framework

The View Transitions API: smooth page transitions without a framework

Soft transitions between two pages used to be an SPA luxury you bought with React or GSAP. The native View Transitions API delivers them in a few lines of CSS - now on classic multi-page websites too. What works in 2026, with runnable code, the browser limits, and when the effort is actually worth it.

July 14, 202611 min
Sold three weeks ago, the phone still rings: keeping property listings in sync instead of updating four forms by hand

Sold three weeks ago, the phone still rings: keeping property listings in sync instead of updating four forms by hand

A prospective buyer calls about a flat that sold three weeks ago - one portal never got the memo. Why a listing is a copy, not a live view, what the German OpenImmo data standard actually solves, and how portals, your own site and Facebook Marketplace can all stay in sync from a single source.

July 14, 202610 min
Twenty invoices, one wrong account: why coding errors in property management only surface in autumn

Twenty invoices, one wrong account: why coding errors in property management only surface in autumn

Every morning brings twenty to thirty incoming invoices - contractors, heat cost allocators, insurers, waste haulers - and each one needs three decisions before it can even be paid: which building, which cost category, which budget year. The mistake rarely shows up right away; it surfaces in autumn, when the advisory board reviews the annual statement. How to secure that assignment before the error happens - and where a human still has to decide.

July 13, 202612 min
AI virtual staging: what works in 2026 for listing photos

AI virtual staging: what works in 2026 for listing photos

Empty or cluttered apartments can be furnished digitally for listing photos within minutes - far cheaper and faster than traditional home staging. What the technology genuinely delivers in 2026, the details that give a bent chair leg or an invented window away, and why real estate photos in particular now fall under the EU AI Act's disclosure duty and the older question of misleading advertising.

July 13, 20268 min
Fifteen rental applications, fifteen formats: when the most sensitive applicant data arrives in chaos

Fifteen rental applications, fifteen formats: when the most sensitive applicant data arrives in chaos

For a sought-after flat, 15 of 25 applicants often send a full tenant self-disclosure - as a scan, a phone photo or a filled-in form, in completely different formats. How to compare income, credit history and completeness fairly, without the most sensitive documents sitting for weeks in someone's personal inbox.

July 12, 20268 min
Embed Google reviews on your website - without an expensive widget, GDPR-compliant

Embed Google reviews on your website - without an expensive widget, GDPR-compliant

Google reviews on your website build trust - but the usual widgets cost a monthly subscription, slow the page down and load third parties unasked. The better way: fetch the reviews yourself once a day, cache them and render them. Fast, free, no consent banner - with the code and the pitfalls from practice.

July 12, 20269 min
Scrollytelling like TikTok: a website you swipe through instead of scrolling past

Scrollytelling like TikTok: a website you swipe through instead of scrolling past

Plain scrolling is boring. How scrollytelling brings the TikTok experience - one moment after another, snapping, interactive - to a website: the right stack, the building blocks (pin, scrub, snap) and the bugs most people trip over, above all the snapping that fights the smooth scrolling.

July 11, 202611 min
The Saturday-night call: how a property manager handles out-of-hours emergencies without picking up

The Saturday-night call: how a property manager handles out-of-hours emergencies without picking up

A dripping pipe at 9 p.m., and the private phone rings. The real problem isn't being reachable, it's the chain of decisions that has to happen in the first five minutes: emergency or not, which trade, which on-call partner, which building. How to structure that first contact - and where a human still has to step in.

July 11, 20268 min
Recreating Apple's Liquid Glass in CSS: the physics, the code and the pitfalls

Recreating Apple's Liquid Glass in CSS: the physics, the code and the pitfalls

Apple's Liquid Glass looks magical and is a minefield on the web. How the effect really works with CSS and SVG, from light refraction to working code to the three Chromium quirks that quietly break the effect without you noticing.

July 10, 202614 min
The same buyer questions every time: automating replies without going cold

The same buyer questions every time: automating replies without going cold

A sought-after flat draws 40 to 60 enquiries in two days - nearly all asking the same five questions. How an estate agent catches that flood automatically and still stays personal: what can actually be automated, why the off-the-shelf chatbot is the wrong reflex, and where data protection has a say.

July 10, 20269 min
Entire: the former GitHub CEO's new Git network

Entire: the former GitHub CEO's new Git network

Former GitHub chief Thomas Dohmke has launched Entire, a distributed Git network. What it really does today, why AI agents are the actual reason behind it, and who it's already worth watching for.

July 10, 202610 min
AI in the trades: what saves a business time

AI in the trades: what saves a business time

Almost every AI-for-tradespeople list comes from someone selling a subscription. A web developer sorts it honestly: which AI actually saves a trade business time, what's just costly marketing - and when your own system beats yet another subscription.

July 9, 20269 min
Labelling AI content on your website: turn the obligation into a trust signal

Labelling AI content on your website: turn the obligation into a trust signal

From 2 August 2026, published AI-generated content must be labelled under the EU AI Act. But the law prescribes neither a wording nor a specific badge. How to meet the duty without it sounding like a warning - with an honest, positive frame instead of an off-putting AI stamp.

July 8, 202610 min
Upgrading to Astro 7 in practice: build time halved, zero code changes

Upgrading to Astro 7 in practice: build time halved, zero code changes

I migrated this website from Astro 6 to Astro 7: one command, not a single code fix, build time down from 22 to 11 seconds. What the Rust compiler and Rolldown actually deliver, which breaking changes matter, and how to test the whitespace trap properly.

July 7, 20268 min
WebMCP: AI agents can now act on your website - what you have to secure first

WebMCP: AI agents can now act on your website - what you have to secure first

WebMCP lets AI agents do more than read your site - they book, submit, order. What you as the operator have to secure, and what GDPR and the confirm-to-pay rule mean here.

July 5, 202610 min
WebGL and Accessibility: How 3D Websites Become Compliant Without Dropping Three.js

WebGL and Accessibility: How 3D Websites Become Compliant Without Dropping Three.js

A canvas is invisible to screen readers. How 3D websites built with WebGL and Three.js still become accessible and compliant - with code patterns and a checklist.

July 5, 20268 min
Vibe Coding in technical due diligence: what investors really check

Vibe Coding in technical due diligence: what investors really check

Your product is vibe-coded, the funding round is close - and the investor checks code quality. What technical due diligence looks for, and how to get ahead of it.

July 5, 20269 min