Blog
Subscribe to my RSS feed to stay up to date with my posts.
Browse by tag
All posts
JS context managers
See how to adapt Python's context managers for use in JavaScript. Break free from clunky try...finally blocks with this one weird trick.
Cool 3D buttons
A nice collection of buttons you'll want to push over and over again. These 3D buttons call back to a time of shiny silver plastic and tactile experiences.
Introducing: The Toybox
The Toybox is a new section of my site for web toys, jokes, and experiments.
Making a theme selector
How to make a theme selector for your website, and why you might want to have more than one theme.
I made a new 88×31 site button
I made a new site button GIF for folks who want to link to my website.
10 years of themes
An image gallery and reflection of 10 years of themes I've made for wavebeem.com
JS compare function
Exploring a small but mighty function that supercharges the JS Array sort method to rival Lodash's orderBy
Querying shadow DOM
Examples of how to query shadow DOM, and when you actually don't want to.
Flashlight
Turns the lights off and navigate the page using a flashlight.
Flashlight: Making toys for the web
I made a toy flashlight for the web. It simulates darkening the web page and following the cursor. It looks somewhat convincingly like a flashlight. Enjoy!
JS Proxy and private properties
The default Proxy implementation doesn't work well with private properties, but we can fix this! I also explore other approaches to private data in JS.
Developing with web components
Thoughts on developing with web components from scratch; no UI libraries. This covers custom elements and very basic use of the <template> element. Shadow DOM is mentioned but not used.
Windows Vista in CSS
Originally posted on cohost.org
What pronouns does a jester use?
Originally posted on cohost.org
You deserve to be happy, or: the web wasn't a mistake
A discussion of why people hate JS, Electron, and the web. Also a plea about how excessive negativity hurts you and those around you.
The web is an app platform
The web has been an app platform for most of its life. I discuss the history of the web and my definition of "app".
ザ・ワールド (The World)
Originally posted on cohost.org
I made a Geocities site button
88×31 GIFs were all the rage back on Geocities; I decided to finally make one for my own site.
Recipe: Best dip ever
My favorite IBS-friendly dip to make at home.
Why I don't like useState
Why useState is so hard to use correctly, and what we can do about it.
Recipe: Buttermilk biscuits
Detailed instructions on how to make fluffy biscuits at home.
Adventures in de-Googling
My successes and failures in trying to de-emphasize Google's presence in my life.
Recipe: Crispy tofu
How to make delicious crispy tofu at home.
Tagged unions in JavaScript
A disciplined approach to state management and domain modeling for JavaScript and TypeScript. Also known as algebraic data types / discriminated unions.
SeaGL 2019
Building Your own keyboard with free software.
Mechanical keyboards 201
Thinking beyond pre-built gear, this guide will help prepare you to build your own keyboard.
Mechanical keyboards 101
An introduction to the exciting world of mechanical keyboards.
7 tips for better bash
You'll be writing better bash code after following these 7 tips.
JavaScript iterators and more
A comparison and overview of generators, iterators, and iterables in JS.
React without JSX
A quick overview on using React without JSX or any build tools.
Broken promises
How to use promises effectively (written before async/await existed)
Compiler code generation
How to make code generation for a compiler.
Making a language
How to make a programming language from scratch in JS.
The leaning tower of Babel
An exploration of Babel's caveats.
JS gotchas with this and new
How JS's 'this' and 'new' work, and how to avoid issues with them.
Squiggle: a JS language
An introduction to Squiggle, a compile-to-JS programming language I made.