
I’m a software engineer and educator based in Denver. Previously, I led Front-End Engineering and Developer Tools at Temporal, where I tackled the fascinating challenge of building interfaces for distributed systems—which is just a fancy way of saying “making complex things simple enough that people actually want to use them.”
My work at Temporal centered on building intuitive UIs that helped developers manage workflows across distributed systems. I joined as the founding front-end engineer and built the foundation for their open source and cloud experiences before scaling up the team that handles all of Temporal’s UI, websites, and developer tooling.
Before that, I served as the very first Front-End Architect™ at Twilio and SendGrid. These roles taught me how to build consensus across global teams and lead through influence rather than authority—a skill that turns out to be surprisingly useful when you’re trying to convince people that your approach to front-end architecture is the right one.
I actually started my career in public education. I was NYC public school teacher in high-need schools across Manhattan, Brooklyn, and Queens. I technically had my principal’s license, but I never ended up using it. Today, I’m an instructor at Frontend Masters and founded the Front-End Engineering program at Turing School.
I’ve co-founded DinosaurJS, a JavaScript conference in Denver, spoken at events like JSConf and RailsConf, and authored ”Electron in Action“—though technology moves faster than books, so consider that a historical artifact at this point.
I am lucky enough to teach a bunch of courses with my friends at Frontend Masters. We've been working together since 2016. Before I was a teacher, I was a customer back when I was learning the ropes. I can't recommend them highly enough. You can find the most up-to-date list here.
Learn to build robust React apps with TypeScript by typing hooks, reducers, and component APIs for safer, more maintainable code.
Profile and optimize React apps with modern tools and patterns to reduce re-renders, speed up interactions, and improve perceived performance.
Build a practical AI-assisted developer workflow with Cursor and Claude Code, from quick edits to larger delegated implementation tasks.
Learn hands-on AI development with Python and Hugging Face, including image generation, fine-tuning, and model pipelines.
Master Tailwind CSS 4 with utility-first styling, design tokens, responsive layouts, and maintainable patterns for modern UI development.
Learn fullstack TypeScript across frontend and backend, including API design, schema validation with Zod, and shared type-safe contracts.
Boost your productivity with advanced VS Code workflows, debugging tools, customizations, and features that speed up daily development.
Build confidence in your codebase with practical testing techniques, including assertions, mocks, integration tests, and testing strategy.
Learn modern web security fundamentals including authentication, authorization, common vulnerabilities, and practical mitigation techniques.
Learn to create scalable design systems with Storybook. Build reusable UI components, test components, implement dark mode, and generate comprehensive documentation.
Learn to use Figma's developer-friendly features like constraints, auto layout, component properties and CSS generation to efficiently build and translate designs to code.
Master Vite, the modern build tool for faster and leaner web development. Learn to integrate with React, optimize assets, and extend with plugins.
Explore the essence of Scratch programming. Delve into game mechanics, craft interactive stories, and grasp computer science fundamentals. This course inspires fun projects tailored for young learners.
Tie the physical and digital worlds together, and see what's possible with hardware and JavaScript! Craft circuits, wire up LEDs, buttons, and sensors, and leverage sensors to change browser actions based on real-world data, all with web-based technologies.
Use Electron to build native, cross-platform desktop applications using web technologies (e.g. HTML, CSS, and JavaScript). Learn inter-process communication, UI customization, native features, and performance optimization.
Ideal for lead UI developers: learn unit testing, continuous integration, accessibility testing, mocking, and coding standards enforcement. Guide your team toward coding scalability!
Write more performant and maintainable Redux at scale. In this course, you'll use Redux Toolkit to simplify reducer logic and actions, use TypeScript with Redux, add tests, and use RTK Query to fetch data in real-world projects.
Cypress is the fastest and easiest way to write end-to-end tests for your client-side applications. Learn the selector engine, test runners, assertion library, and write your own custom commands.
Build an enterprise-grade deployment infrastructure on AWS using S3, Route 53, CloudFront, lambda@edge, and more!
Master the basics of Rx.js by creating an observable from scratch, manipulate data arriving over time with Rx.js operators.
Learn the Redux API from scratch, then learn to hook the Redux React application. You'll also learn how to extend Redux with various tools from its ecosystem.
Learn language building techniques: Lexing, Parsing, Tokenization, Traversing Abstract Syntax Trees, and Transpiling to JavaScript and make your own language now!
Learn about structuring your data with front-end architect Steve Kinny. Start the "State Management with Redux & MobX" course today!
Write more efficient JavaScript, optimize rendering performance, load assets faster with a CDN, split loading resources with Webpack, and more!