---
author: "Umesh Malik"
canonical: "https://umesh-malik.com/blog/tag/web-engineering"
description: "Explore articles tagged with Web Engineering by Umesh Malik — AI Engineer, LLM & GenAI Developer. Learn Web Engineering best practices, practical tips, and in-depth guides."
title: "Umesh Malik's Blog - Web Engineering Articles | Web Engineering Tutorials"
tokens: 1245
generator: "scripts/generate-page-markdown.mjs"
---

[← Back to Blog](https://umesh-malik.com/blog)

# Web Engineering

9 articles

 [![A browser tab converting an animated SVG into an MP4 video entirely client-side using a 30MB ffmpeg.wasm build, with no server round trip](https://umesh-malik.com/blog/svg-to-mp4-in-the-browser-cover.png)

Web Engineering • Aug 19, 2026

### SVG to MP4 in the browser: a two-step workflow, no server

SVG to MP4 in the browser needs no server: paste a URL and 30MB of ffmpeg.wasm renders every frame in your tab. The one catch that trips people up.

8 min read

Read more →](https://umesh-malik.com/blog/svg-to-mp4-in-the-browser)

 [![A map of five infrastructure components replaced by PostgreSQL features, each annotated with the threshold where the swap stops working](https://umesh-malik.com/blog/use-postgres-for-everything-cover.png)

Web Engineering • Aug 19, 2026

### Use Postgres for everything in production: 5 swaps, 1 cliff

Use Postgres for everything and four of the five swaps hold. The queue is the one that death-spirals: 383,000 dead tuples and 300ms locks at 800 jobs/sec.

8 min read

Read more →](https://umesh-malik.com/blog/use-postgres-for-everything)

 [![Cloudflare's edge injecting the beacon.min.js analytics script into an HTML response before it reaches the browser](https://umesh-malik.com/blog/remove-cloudflare-beacon-min-js-cover.png)

Web Engineering • Aug 17, 2026

### Remove Cloudflare beacon.min.js: you must opt in to opt out

Remove Cloudflare beacon.min.js for good: the disable toggle hides behind adding your site to Web Analytics first, and no-transform is the stronger lever.

9 min read

Read more →](https://umesh-malik.com/blog/remove-cloudflare-beacon-min-js)

 [![Diagram of the Datasette filter injection — a query-string column name flows unquoted into generated SQL and returns rows from a private table](https://umesh-malik.com/blog/datasette-sql-injection-patch-cover.png)

Web Engineering • Aug 7, 2026

### Fix the Datasette SQL Injection: Why execute-sql Won't Save You

The Datasette SQL injection patched in 1.0a38 and 0.65.3 leaks private tables via unescaped filter columns. The check, upgrade, and why execute-sql is no fix.

8 min read

Read more →](https://umesh-malik.com/blog/datasette-sql-injection-patch)

 [![The four agentic web layers — readable, discoverable, callable, payable — mapped to concrete URLs on a static site](https://umesh-malik.com/blog/make-your-site-agent-readable-cover.png)

Web Engineering • Aug 7, 2026

### How to Make Your Site Agent-Readable: 4 Layers, One Worker

Make your site agent-readable in four layers — readable, discoverable, callable, payable. Three are build-time files; only /mcp needs a Worker.

10 min read

Read more →](https://umesh-malik.com/blog/make-your-site-agent-readable)

 [![Ads for AI agents: TIME serves markdown with sponsored FAQ blocks to AI crawlers and HTML to humans](https://umesh-malik.com/blog/ads-for-ai-agents-time-markdown-crawlers-cover.png)

AI Engineering • Aug 6, 2026

### Ads for AI Agents: TIME Serves Crawlers a Different Site

Ads for AI agents are live. TIME serves crawlers a 42 KB markdown site with sponsored blocks; humans and Googlebot get 1.2 MB of HTML. I measured all of it.

10 min read

Read more →](https://umesh-malik.com/blog/ads-for-ai-agents-time-markdown-crawlers)

 [![React Server Components and the use client boundary: server graph, client graph, and where the line is drawn](https://umesh-malik.com/blog/react-server-components-guide-cover.png)

Web Engineering • Jul 21, 2026

### React Server Components in 2026: The Mental Model, the use client Boundary & When Not to Use Them

React Server Components in 2026: the mental model that finally clicks, the use client boundary rules, and when NOT to use them — with the Web Vitals payoff.

7 min read

Read more →](https://umesh-malik.com/blog/react-server-components-guide)

 [![Cover showing an HTML document streaming placeholder markers that get filled out of order by template-for elements, with no JavaScript](https://umesh-malik.com/blog/streaming-html-out-of-order-without-javascript-cover.png)

Web Engineering • Jul 14, 2026

### Streaming HTML Out of Order Without JavaScript (2026)

Streaming HTML out of order without JavaScript: how Declarative Partial Updates and Declarative Shadow DOM reorder content natively in Chrome 148.

13 min read

Read more →](https://umesh-malik.com/blog/streaming-html-out-of-order-without-javascript)

 [![Cover showing FastAPI's new app.frontend() method mounting a built SPA directory alongside API routes](https://umesh-malik.com/blog/fastapi-spa-app-frontend-explained-cover.png)

Web Engineering • Jun 21, 2026

### FastAPI Finally Has Native SPA Support: app.frontend() Explained

FastAPI 0.138.0 ships app.frontend() — a native way to serve React, Vue, and Svelte SPA builds. How it works, real use cases, and what it still can't do.

8 min read

Read more →](https://umesh-malik.com/blog/fastapi-spa-app-frontend-explained)
