Hello, you found me.

I'm Pow. Welcome to my digital home.

This isn’t a portfolio. It’s not a blog. It’s a quiet little corner where I collect thoughts, tinker with ideas, and keep pieces of who I am.

Little Brain Dumps

Things I’ve Written Down

Stop Using the vh Unit in CSS, Use svh, lvh, and dvh

Still using vh in your layout? Here's why svh, lvh, and dvh are better for modern responsive design.

3 min read
Stop Using the vh Unit in CSS, Use svh, lvh, and dvh thumbnail

The New Way to Build Plugins in Tailwind CSS v4

Tailwind CSS v4 removes plugins, but don’t worry. You can still create powerful custom styles directly from your CSS with a simpler, more intuitive approach.

8 min read
The New Way to Build Plugins in Tailwind CSS v4 thumbnail

Frontend vs Backend vs Fullstack: A Beginner’s Guide to Web Development

Confused about frontend, backend, and fullstack? This beginner-friendly guide explains them clearly.

7 min read
Frontend vs Backend vs Fullstack: A Beginner’s Guide to Web Development thumbnail
See More Articles
Things I've Made (and Broke)

Projects I’ve Been Building

Open Series thumbnail
Web App

Open Series

A comprehensive Math & Physics cheatsheet website. I contributed by developing the website.

HTML-CSS by Bellshade thumbnail
Other

HTML-CSS by Bellshade

An open-source repository for learning HTML and CSS in Indonesian, specifically for beginners. I contribute as a maintainer.

Nametopia thumbnail
Web App

Nametopia

A simple and fast name generator for various countries and genders.

PalettePix thumbnail
Web App

PalettePix

A website that extracts color palettes from uploaded photos.

See More Projects
Memory Hacks

Tiny Code Things

cn

A utility function to merge Tailwind CSS class names using clsx and tailwind-merge.

import { clsx, type ClassValue } from 'clsx' import { twMerge } from 'tailwind-merge' export function cn(...inputs: ClassValue[]) { return twMerge(clsx(inputs)) }

Prisma Instance

A singleton instance of Prisma Client to prevent multiple database connections in non-serverless environments.

import { PrismaClient } from '@prisma/client'; const globalForPrisma = globalThis as unknown as { prisma: PrismaClient | undefined; }; export const prisma = globalForPrisma.prisma ?? new PrismaClient({ log: ['query', 'error', 'warn'], }); if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma;

Inner Container Utility

A custom Tailwind component for a centered container. I really like this size, it’s my go-to and also used on this website.

@layer components { .inner { @apply mx-auto w-9/10 max-w-272; } }
See More Snippets