Hey, I'm Stephen

I'm a founder, engineer, designer, and game developer in Southern California.

2022

WorkOS acquired my startup Modulz. At WorkOS I led product engineering from early PMF into high-growth scale-up and launched AuthKit, the world's best login.

2018

I co-founded Modulz to bridge the gap between designers and developers. Along the way we created Radix, accessibility-first React components, and Stitches, a styling library with excellent DX.

2015

I was as an Engineering Manager at Marmot, launching ecommerce sites and eventually moving to NYC to lead the front-end engineering efforts across Newell Rubbermaid.

I also wrote my first book:
Game Development with Swift

Stephen Haney backpacking in the Sierras. A mountain lake is in the background.

Projects

Summoners.io

Browser-based trading card game based on Hearthstone and Slay the Spire

Games Babylon.js WebGL

ZooDrop.io

A fun take on the suika watermelon game, published by Poki

Games Three.js WebGL

DearDiary AI

Turn your journal into music.
A first-place winner of the Google Magenta hackathon.

Machine Learning NLP Music

Technical Posts

Self-hosting plausible web analytics

Get predictable flat pricing for web analytics by self-hosting

Analytics Self-hosting

Saving AVIF images from Photoshop on MacOS in 2023

AVIF is amazing: better file size, image quality, and transparency

Photoshop AVIF

Get contenteditable plaintext with correct linebreaks

Browser bugs lead to incorrect results from the .innerText API

Browsers

React Styled Components in IFrames

How to use Styled Components inside nested IFrames

React CSS-in-JS

SKSpriteNodes anchorPoint in Swift and SpriteKit

A how-to guide on using anchorPoint in SpriteKit

Swift SpriteKit

Upside Down SKPhysicsBody when Loaded From Texture

Working around a bug in SpriteKit's physics engine

Swift SpriteKit

Event Triggers and Event Listeners in Swift, Updated Swift 6.2

Introducing a library for event based patterns in Swift

Swift

Camera Shake with SpriteKit in Swift

Creating a juicy camera shake effect in SpriteKit

Swift SpriteKit