Web

Should Your Website Serve Markdown to AI Agents?

Content negotiation is making a comeback as a way to serve clean Markdown to AI agents. Here's how it works, why developers are split on it, and whether it's worth implementing. [...]

GLM-5.2's Open-Weights Lead, DeepSeek Gains Vision & Lore Challenges Git — The Weekly Diff #4

GLM-5.2 takes the open-weights crown at a fraction of the price, DeepSeek finally gains vision, Lore emerges as a version control system built to challenge Git at scale, MCP ships enterprise-managed OAuth, and Charity Majors argues AI demands more engineering discipline, not less. [...]

React2Shell Vulnerabilities — What to do?

React2Shell (CVE-2025-55182) is a highly critical vulnerability reported by Lachlan Davidson on November 29th, 2025. React2Shell has a CVSS score of 10.0 (most critical on the scale of 0-10), and is a pre-authentication remote code execution (RCE) vulnerability in which the vulnerable RSC (React Server Components) code unsafely deserializes payloads from HTTP requests to Server Function endpoints. [...]

Reflections on the AWS & Azure Outages

AWS and Azure, two of the largest cloud providers having a market share of ~30% and ~23% respectively (as of 2025), experienced large scale outages recently. These outages affected multiple interdependent services. In this post, I will explore what are the implications of these outages, what can be done about them, and how fragile the web really is. [...]

Fixing the overscroll "bounce" effect with CSS

A quick fix for the vertical overscroll "bounce" effect for the page is to apply overscroll-behavior-y: none; to the body element. The CSS property overscroll-behavior defines what the browser will do once it reaches the end of the scroll area both vertically (Y-axes) and horizontally (X-axes). overscroll-behavior can be broken down into overscroll-behavior-x and overscroll-behavior-y properties, allowing developers to control the X and Y scroll separately. [...]

Vite 7: Breaking Changes and How to Migrate

Vite 7.0 drops support for Node.js 18, sets "baseline-widely-available" as the default browser target, and removes the legacy Sass API. Here's a summary of the breaking changes in Vite 7 and what to check before upgrading from Vite 6. [...]

5 Best Places To Learn React For Free

In this guide, I am sharing five of the best places to learn React. Doesn't matter if you are a newbie in React or advancing your journey as a React developer, these resources will help you at every step of your React journey. I wish I came across these resources while I was new to React. [...]

Create React App (CRA) is Officially Deprecated: What to Use Instead in 2026

Create React App a.k.a CRA is officially deprecated. Here's why it happened and how to pick a replacement for your React project, whether that's Vite, Next.js, TanStack Start, or Expo for native React apps. [...]

App Defaults 2025 - with some AI stuff

A list of curated apps I use and will probably keep using for the rest of 2025 - continuing my spree of documenting app defaults which I started in 2023. [...]

Server Sent Events 101

Server Sent Events (SSE), as the name suggests, are a way to communicate with the client by keeping a persistent connection in which the server sends text messages to the client whenever they are available. In this guide, you'll build an SSE endpoint in Node.js with event emitters, subscribe to it using the EventSource API, and handle reconnections. [...]

I tried "window.ai" in Chrome

At the time of this writing, Google Chrome has started shipping experimental AI features such as "built-in AI" in Chrome's Dev/Canary channels. In this tutorial, you will get to know how you can try the built-in AI model in chrome dev. [...]

Static Sites Are Good

For the most part, static-first sites are the go to thing if your application doesn't involve much complexity. However, you are free to choose the right tool for your application — but choose wisely. [...]

App Defaults 2023 — What I use

The other day, I stumbled upon a post by robb about app defaults. Following the spree, here's my list of all the apps I use for the following categories. [...]

WebSockets 101

WebSockets implement a full-duplex, bi-directional, TCP-based protocol, denoted by ws(s)://, which enables a persistent connection between the client and the server. Here's how the protocol works under the hood, and how to build a websocket-powered chat app using Node.js and the ws library. [...]

What is DOM diffing?

DOM, also known as the Document Object Model, is a programmatic representation of the contents of a web page. In other words, the content of a web page is represented in the form of objects and nodes. [...]

Setting Background Color of Body Dynamically in React

You can specify the background color of body in a global stylesheet, but it's not easy to update the background color dynamically for different pages in your website. So, I went on to code a hacky but working patch using CSS custom properties. [...]