Menu

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.