Hi! I'm Ryan. I've been a software engineer for seven years.
I'm looking for senior+ roles where I am primarily doing front end web development.
I relish iterating on rich interactive web applications with quick user feedback cycles.
At Twilio, I led a cross-functional team shipping monthly educational technical content. I built features to support 30,000+ new developers’ learning in response to feedback and analytics.
At Nike, I worked on a highly tested, performant web app handling millions of visitors a month from all over the globe.
Software Engineer & Designer | Part-Time Contract, Remote
Designing and building a logic puzzle game for The Puzzle Society using React, mobx-state-tree, and TypeScript.
Technical Lead | Full-Time, Remote
Led cross-functional team creating educational role playing game, TwilioQuest, that taught people how to code.
Staff Software Engineer | Full-Time, Remote Jun. 2019 - Oct. 2022
Primary technical contributor to TwilioQuest. Built with React, Phaser, and Electron to ship to desktop. Also created numerous supporting services with front and backend tech.
Software Engineer | Full Time, Portland, OR
The Puzzle Society is a logic and word puzzle site with games like: USA TODAY Crossword, WonderWord, Sudoku, Jumble, and more!
I'm currently working on a part time contract for The Puzzle Society building and designing a new logic game. I'm working with React, mobx-state-tree, and TypeScript.
This project is not yet released, so I cannot share more details at this time! But, hopefully it'll be live soon!
TwilioQuest was an educational video game designed to teach a new generation of developers how to change the world with code.
Since it was a small team, I did all sorts of non development tasks too. From lesson planning educational content to helping new learners in Discord.
When I joined the team, content in TwilioQuest was siloed alongside core game logic. This made it challenging for anyone not a core developer to contribute educational content.
I architected and implemented an extension system to separate content and open source it. This allowed for community authored extensions and 3rd party collaborations with companies like Cloudinary. We also got a lot of additional benefits from community contributions to our newly open sourced content.
Read more about the extension system's architecture.
I was promoted to tech lead by the time I left. I was responsible for coordinating content from myself, an artist, and content developer. Additionally, I managed a contractor developer team that supported our secondary services.
Here's the announcement post for where we totally overhauled TwilioQuest's graphics and implemented an open source authoring tool system for the community.
Here's a post I wrote post highlighting cool extensions created by our community, a gallery to show off those extensions, and an extension created by a dev partner at Cloudinary.
Wildfire Swap is a self published puzzle game I made that received positive reception on Steam.
Swap tiles, fight fires! Consider your moves carefully: fire spreads fast, and an out-of-control fire is unstoppable.
I led the development, design, and prototyping of Wildfire Swap. I coordinated with my dev partner, Drew Gingerich, who did puzzle design and artwork for the game.
Official homepage and presskit
Wildfire Swap: A puzzle game inspired by fires in the Pacific Northwest...While showing Wildfire Swap to folks, I've gotten recurring questions about what inspired this game. This post dives into that inspiration story and looks at...
Using Design Pillars to Keep Wildfire Swap's Development on Track...Design pillars are the 3-5 core ordered ideas, concepts, or emotions that our game should embody...
Island Maker is a strategy game I created in 2022 for a game jam. I shipped a few updates after the original launch. It got some YouTube coverage and over 25,000 plays.
Build a thriving colony one building at a time. Click to place buildings in the right locations will generate new ones. Keep placing buildings until you run out. Your goal is to reach the highest population possible on your island.
Working on a big update!I'm very happy with how the current version of Island Maker has turned out. It's been a treat to see y'all get into sharing high scores and completing the journal...
Big 3.0.0 Update! New levels and buildings!Over the past couple months, I've been working on this update to make Island Maker even better. I hope you enjoy the changes...
The library was translated and internationalized to meet the needs of people and regulators all across the world.
I helped maintain a high test coverage with a robust unit and acceptance test suite.
I wrote custom ESLint rules for our team's specific needs.
I led a large code base migration using an Abstract Syntax Tree library JSCodeShift.
Create a Custom ESLint Rule: Automatically Share Your Team's Institutional Knowledge...Open-sourced rules allow teams to customize ESLint for their specific requirements. However, sometimes a rule doesn't exist or work in quite the right way for your use case. This article explores how to create custom ESLint rules for your team's unique situation...
You can check them out on my Itch.io profile.
I've been publishing post on various technical and non-technical topics on my personal blog for a few years. I've selected a few of them below.
Dealing with keyboard events in React can be tricky to figure out at first. I had a project recently where I wanted to trigger some code in response to a user's key presses. I ended up responding to their events with a combination of useEffect and document.addEventListener in a useKeyPress custom hook...