I'm a self-taught developer in Canada, currently working as a Staff Engineer for Cruise on autonomous vehicles. I work on the Remote Assistance platform, enabling the business to scale and operate globally.
I've been building software since I was in middle school, tinkering with Linux on old PCs. FIRST Robotics was where I got my real start, and my first taste of engineering discipline. I joined a team in its founding year, that turned out to be the best decision of my life - we went on to win a lot of competitions, awards, and most importantly, the group of us became lifelong friends. I continued mentoring the team for many years and owe a lot to it.
I've been lucky to work on some pretty cool things! From self-driving cars, health care applications, ID card scanners, follow-me drones, rendering engines, and more - my work has been rewarding. I get excited when there's a real problem to solve, no matter what it takes to get there.
I care deeply about the goals of Free Software & Open Source. This isn't a compromise to me, and I orient myself toward work that contributes to the common good. While my time for personal contributions fluctuates, I'm always looking for ways to pursue these goals.
At work, I value craftsmanship and durability. I deeply believe that creative work needs an "end" - wholly understanding a problem is the real start of solving it. Perfection is not a worthy goal.
I tend to be flexible. Sometimes, folks call this "full-stack".
Generally, I've been a "web developer" - meaning that I've worked on a lot of CRUD web apps (frontend and backend). This is more descriptive than it is prescriptive though - I've had the opportunity to build multiple products outside of that box.
I'm a polyglot, and always looking to learn another language. Lately, my projects are written in TypeScript and Rust. At work, I use a lot of Go as well. The first language I learnt was Java, and I've been influenced by Ruby, Python, C++, Swift and Go.
My most interesting projects:
For web UIs, I use React for most tasks nowadays (though Vue and Svelte interest me). My general approach is to build the data architecture before any presentation layer. I've used Redux (with RTK), MobX (+MobX State Tree), Zustland, and rolled my own - whatever gets the job done. Component libraries like tailwind, material UI, bootstrap all come and go, but I try to keep up.
On the backend, I'm most comfortable with Node.js, an ORM (I like Objection.js), and PostgreSQL databases. I've used a lot of Go, and recently worked a lot with Google Spanner. I've built complex systems with gRPC, WebSockets, and dabbled with GraphQL. Problems that should not be solved primarily with a relational database, in my experience, are few and far between.
I was well positioned to learn some management and leadership skills as well. I've led small teams, taught high-school CS fundamentals, and have assisted hiring for all my employers. I've also been involved in writing grant applications and 2 patents.
Otherwise, my work with FIRST Robotics gave me the opportunity to work with Solidworks (CAD) and 3D printing quite a bit. Electronics tinkering is a hobby of mine (I like Ben Eater's projects).
I'm proud to have built Open Source projects while I was at Launchcode - app-config and router were the bigger two. I continue to work on these in my spare time.
Send an email! Listed on my resume here.