Personal Website
Next.js · React · CSS
My content home on the web. It features my blog, portfolio, and some fun experiments. Built with Next.js and lots of custom CSS.
Visit site

Next.js · React · CSS
My content home on the web. It features my blog, portfolio, and some fun experiments. Built with Next.js and lots of custom CSS.
Visit site

React · Next.js · CSS
A portfolio that looks and works like Google Search. It's a playful way to explore my projects using a familiar interface.
Visit site

JavaScript
Need practice problems? this tool generates random, complex math expressions for you to solve.
Visit site

Next.js · React · CSS · Design
A collection of free logos I designed for open source projects.
Visit site

JavaScript · Python · Flask
A simple web tool that converts your JPG images into scalable SVG vectors.
Visit site

Python · SVG · Random Art
A Python script that generates cute, random blob characters. Each one is unique!
Visit site

JavaScript
Visualizing the connections between math theorems using data from Wikipedia.
Visit site

CSS · HTML · UI Design
A library of cool, modern button styles. Copy the CSS and use them in your own projects.
Visit site

Want to follow my work or talk to me?
Every button, error message, and tooltip you write is a tiny conversation with your users. Get it right and they flow through your interface without thinking. Get it wrong and they get confused, frustrated, or just leave. You don't need to be a professional...
Regular expressions are patterns that describe text. They look cryptic at first, but once you understand the building blocks, they become surprisingly intuitive. In this post, I'm going to walk through how regex works, step by step, with interactive examples...
After drawing to the canvas, you may want to download and save the canvas drawing as an image. To do this, you can use the `toDataURL()` method of the canvas object. Let's say you have a "Download" button in your HTML: html <input type="button" id="downl...