Small tools and notes for people who build.
A space for meaningful builds, thoughtful notes, and ongoing experiments. Find a utility, save a snippet, or read how something works.
Recent tools
Converters, calculators and utilities. Made for specific needs, left here for general use.
Convert pixel values to relative em units and vice versa based on parent font size.
Open toolConvert pixel dimensions to responsive percentages based on base container width.
Open toolConvert screen pixels to physical print dimensions (inches, cm, mm) with customizable DPI.
Open toolConvert typographic points (pt) to pixels (px) and vice versa across screen resolutions.
Open toolCheck contrast ratios between text and background colors against WCAG standards.
Open toolTurn pixel values into rem units, or go the other way with customizable root font size.
Open toolRecent snippets
Bite-sized, battle-tested code snippets, custom hooks, and utility functions.
A type-safe debounce implementation that delays executing a function until a specified wait time has elapsed.
Deeply copy nested JavaScript objects and arrays using native structuredClone and fallback recursion.
A robust React hook for syncing component state with window.localStorage across tabs.
Recent articles
Thoughts on building things, lessons from projects, and ideas worth writing down.
Discover what security misconfiguration means, why it puts your systems at risk, and how to avoid common configuration mistakes to secure your web applications. Security misconfiguration occurs when security settings in your web servers, applications, databases, or networks are incorrect or incomplete. This leaves systems vulnerable to attacks. It is one of the most common issues in web security and can happen at any level of an application stack.
Insecure design refers to flaws or weaknesses in the way an application or system is planned and built. Unlike bugs or coding errors, insecure design problems come from poor or missing security controls during the early stages of development.This means that even if the code is written correctly, the overall system may still be vulnerable because the design did not consider security risks properly.
Understand what injection attacks are, how they happen, and how to prevent them. This guide explains OWASP Top 10's #3 most dangerous web security risk. Injection attacks happen when untrusted data is sent to a program or database as part of a command or query. If the system fails to properly handle or filter this input, the attacker can trick it into running harmful code. The most common type is SQL Injection, but there are others like Command Injection, LDAP Injection, and XML Injection. These attacks can lead to stolen data, data loss, or complete system compromise.