hunter.loftis.dev
I'm a software engineer who loves building creative tools and real-time systems.
I work at Adobe on Photoshop Web and on Adobe's design system, Spectrum.
Projects
- Date Night Questions
- Tarot-inspired card deck web-app for mobile, tablet, and desktop.
- 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.
- Storj
- Distributed file streaming in Go ala storj.io.
- Salesforce Evergreen
- I managed the runtime control-plane engineering team for Evergreen through 2019.
- Stoppable
- Zero-downtime HTTP shutdown for Node.js with about 7 million annual installs.
- Throng
- 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.
- PBR
- Physically-Based Rendering in Go.
- Jackrabbit
- 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)
- Simple games built in vanilla JavaScript for presentations and workshops.
- Awaiting
- Async/await utility for JavaScript.
- Newton
- Toy JS physics engine.
Writing
- 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.
- Playful JavaScript (2014)
- Raycasting, physics, and fractals.
Presentations
- Let's Build a Game
- Music City Tech 2019
- JavaScript Objects, from Beginner to Expert
- 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
- Stop JavaScripting Like It's 1999
- NCDevCon 2017, Connect.Tech 2017, CharlotteJS 2017
- Playing with Pixels
- RevolutionConf 2017, Refresh Charlotte 2017
- Wine and Design with JavaScript
- 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