Blog
I typically write about web development, video games, or my own life.
2025
- Pokémon Legends: Z-A trapped me in a Potemkin village
- What's new? (October)
- Everdeep Aurora lets you explore the apocalypse as a cute kitty
- Pipistrello and the Cursed Yoyo felt like an identity crisis
- Pokémon Type Calculator: Pokédex sorting & UI updates
- SHINOBI: Art of Vengeance failed to excite me
- DELTARUNE Chapter 4 cements this series as one of my favorites
- NINJA GAIDEN: Ragebound sliced its way to my heart
- Stop giving me the finger: An argument against the pointer cursor on buttons
- DELTARUNE Chapter 3 spreads its wings with increased time and budget
- Playdate Season 2 asked me to dig holes and help a dog poop
- What's new? (July)
- Pokémon Type Calculator: UI updates
- I need juicier interfaces
- CSS obfuscation and userstyles
- Jade & Lime: A new theme is unveiled
- A Balatro-style holographic card hover effect
- Min-maxing dinner with my Zojirushi and Dutch oven
- I played Pokémon Crystal for the first time, 24 years after its release
- In defense of the “for...of” Loop
- Enhancing the Pokédex: Input lag, React, and monitor refresh rates
- Creating a colorized disjoint union of graphs
- I actually had to use algebra at work one time
- Simulating JS await with generator functions
- Pokémon Type Calculator updates
- Ittle Dew 2 failed to nail everything I love about 2D Zelda
- Automated image manipulation with ImageMagick
- Blog questions challenge
- Cobalt Core does basically everything right
- Goodboy Galaxy is an authentic GBA game, down to its faults
- Video games roundup (2024)
- Editorial style & shrines progress
2024
- A memorial for Curry
- Tidying up the website again
- Very Verdant: Even More Green
- Creating a fresh new green theme
- A memorial for Cory
- Health is temporary
- Home page update
- Creating an HTML “spoilers” element with no JS
- Diagnosing a common source of race conditions in JS
- Getting weirder with fonts, and: Too much of a good thing
- Becoming an Astro-not
- Experiment: Puffy 3D mode
- wavebeem 2.0: Slime Mode
- Open world fatigue
- JS context managers
- Cool 3D buttons
- Introducing: The Toybox
- Making a theme selector
- I made a new 88×31 site button
- 10 years of themes for wavebeem.com
- JS compare function
- How to query shadow DOM, and why you might not want to
- Turning your mouse cursor into a flashlight
- Making an interactive flashlight toy for the web
- JS proxy and private properties
2023
- Developing With web components
- Windows Vista in CSS
- What pronouns does a jester use?
- You deserve to be happy, or: The web wasn't a mistake
- The web is an app platform
2022
2021
2020
2019
2018
2017
2016
- Broken promises: how to use promises effectively
- Compiler code generation
- Making an Lisp-style programming language interpreter in JS
- The leaning tower of Babel