Building Content-Adaptive Interfaces with Google's A2UI

29th December 2025

Learn how to build adaptive interfaces where the AI decides not just what to show, but how to style it. Discover Google's A2UI protocol, an open-source standard that enables AI agents to dynamically generate and style UI components based on content analysis. This guide walks you through building a content-driven blog application using Gemini 2.5 Flash and Lit Web Components.

Making a Face Follow Your Cursor with AI‑Generated Images

20th December 2025

Learn how to create an interactive face-tracking effect using AI-generated images. This tutorial covers generating face variations with the fofr/expression-editor model on Replicate, building a Node.js script to automate image generation, and implementing smooth cursor and device motion tracking in the browser using vanilla HTML, CSS, and JavaScript.

Make Your Audio Play with Real-Time Transcript Highlighting

16th November 2025

Learn how to build a fully interactive audio player with real-time transcript highlighting using simple HTML, CSS, and JavaScript. This tutorial walks you through syncing audio with precise caption timestamps, automatically highlighting each spoken line, smooth auto-scrolling, and letting listeners jump to any moment by clicking the transcript. Perfect for podcasts, tutorials, and spoken-word content.

Why You Shouldn’t Use localStorage for Transactions - and What to Use Instead

4th November 2025

localStorage may be convenient, but it’s not built for handling complex operations, concurrent writes, or large volumes of data. What seems simple at first can quickly lead to frozen UIs and unreliable transactions. In this article, we dive into the hidden limitations of localStorage and explore how modern, asynchronous storage solutions like IndexedDB and localForage deliver the speed, safety, and scalability that today’s web apps need.

The Right Way to Handle Hover in CSS Across Devices

21st September 2025

Learn the right way to handle hover effects in CSS across devices. Discover why methods like screen-size queries, touch detection, and user-agent sniffing fail, and how @media (hover) provides a cleaner, more reliable solution for responsive, accessible designs.

How to Bind Props in Vue Correctly

2nd March 2025

Master Vue props binding with this in-depth guide! Learn how to correctly pass strings, numbers, booleans, objects, arrays, and functions as props. Avoid common mistakes, understand prop types, and follow best practices to write clean, efficient, and error-free Vue components.

Understanding JavaScript Reactivity with Proxy and TypeScript

4th January 2025

Learn how to create a reactive system in JavaScript using Proxy, step-by-step, from monitoring changes to implementing a Vue.js-inspired ref function. This guide covers everything from simple examples to advanced TypeScript integration, culminating in a practical demo of two-way HTML bindings. Perfect for developers exploring reactivity concepts and building modern web apps.

Reload Child component in Vue 3

18th Apr 2022

Components in Vue are reusable custom elements that can be reused in Vue templates throughout the app. In a large scale application, we will come across a situation where we have nested components such as parents and children. In recent work, I faced the challenge of having to reload the child component only. This article will explain the intricacies to the challenge. Looking back, it took me unbelievably long to figure out a solution. Nevertheless, my blog post will provide quick and easy, short, sharp steps to any developer who might be faced with the same challenge. Let's get started. We can easily scaffold our Vue 3 project using Vite with the following command

Suspense feature in Vue 3 with SFC Script Setup

25th Sep 2021

<Suspense> is a special component in Vue 3 that lets us wait for some data to be loaded, before our component can be rendered. In other words, Suspense allows us to render some fallback content. A good example will be a loading spinner while waiting for an asynchronous API call to fetch some data from the server. Once the data has been loaded, the main content will show up. This feature allows us to create a smooth user experience. The <script setup> has top-level await, this means that the reactive variable msg won't be shown in the template until the fetch is completed. To improve the user experience, it would be nice if we displayed a loading message before the data has been loaded. This is where Suspense comes handy.

Watch JavaScript Variables for Change

7th Sep 2021

We all know that in JavaScript there is no event that fires when a value of a variable changes. But by defining getters and setters in the object this is now possible. First, define a new property on an object with "Object.defineProperty" method. As a first argument, we pass the object on which to define the property. If the object is defined in the global scope, "this" will refer to the window object. In the second argument, we will define the name of the property. In our case, we define a property with name "name". The third argument is the descriptor for the property being defined.