Blog

Making setTimeout return number instead of NodeJS.Timeout in TypeScript
Animating a pirate treasure map path
Service Class vs Service Module
Inconsistent JavaScript imports can lead to duplicate code
This blog is now a Progressive Web App!
Creating a tuple from the values of an enum in TypeScript
Exploiting ChatGPT
Exporting the Version of an NPM package
Typing a function wrapper with TypeScript
Apple doesn't care about Album Cover Art
Shaders Case Study: Pokémon Battle Transitions - Part II
Shaders Case Study: Pokémon Battle Transitions
regl: Rendering a Texture
Writing Good Test Descriptions
My Top Movies of the 2010s
Animated NBC Peacock Logo
Installing Gems per Project Directory
Using Bundler with System Ruby
Simplifying TypeScript code with Union Types
Null Object pattern, ES6 default params and React defaultProps
Using System Ruby
Validating Form Objects
Rails Quiz: XSS Edition
Saving multiple models with Form Objects and Transactions
Creating Form Objects with ActiveModel
D3: Encoding values as circles
D3: Animating between scales
YouTube's new morphing play/pause SVG icon
D3: Animating bars “going down”
Never remove CSS outlines