I'm a software engineer/manager who loves building tools and real-time systems.
I work at Salesforce, where I've focused primarily on the Heroku cloud since 2014.
GitHub, LinkedIn, Twitter, E-Mail
- Table of Sending
- Real-time distributed tabletop gameplay via WebRTC, WebSockets, WebGL, and Web Components.
- Node.js on Heroku
- I was responsible for Heroku's node platform from 2015-2018.
- Distributed file streaming in Go ala storj.io.
- Salesforce Evergreen
- I managed the runtime control-plane engineering team for Evergreen through 2019.
- Zero-downtime HTTP shutdown for Node.js with about 7 million annual installs.
- Simple process clustering for Node.js with about 2 million annual installs.
- Ray Tracing in One Weekend
- A chapter-by-chapter Go port of Peter Shirley's excellent C++ books.
- Physically-Based Rendering in Go.
- A RabbitMQ library for Node.js.
- Space Snake (left/right arrows)
- Ludum Dare 38 entry that placed third in the graphics category.
- Asteroids (arrows + shift), Flappy (any key or tap), Breakout (mouse)
- Toy JS physics engine.
- A Go Roguelike (2020)
- Entity-component systems, generics, structure.
- Renamed Types in Go (2017)
- Maintainability through types.
- 10 Habits of a Happy Node Hacker (2016)
- The Heroku Blog.
- Raycasting, physics, and fractals.
- Let's Build a Game
- Music City Tech 2019
- TriadJS 2018, Connect.Tech 2018
- Painting with Light
- GopherCon 2018, GopherCon EU 2018, Scenic City Summit 2018
- Making Sense of Multiplayer
- Connect.Tech 2018, RevolutionConf 2018
- Production-Ready Node.js
- Connect.Tech 2017
- NCDevCon 2017, Connect.Tech 2017, CharlotteJS 2017
- Playing with Pixels
- RevolutionConf 2017, Refresh Charlotte 2017
- TriadJS 2017
- Promises are terrible; start using them!
- Nodevember 2016
- Nobody Wants Junior Developers
- Nodevember 2015, Skookum Night Shift 2015
- We Will All Be Game Developers
- JSConf EU 2014, Nodevember 2014, ForwardJS 2015, ConvergeSE 2015
- Production-Ready Node Architecture
- Nodevember 2014
- Mobile Development with HTML5
- ConvergeSE 2012
- Beyond Toys: Deploying a production node app to the cloud
- NYC Node.js Meetup July 2012