Hey! My name is Joel.
I'm a self-taught software developer in Canada, currently working for Cruise on autonomous vehicles.
A little bit about me, if you care:
FIRST Robotics, the Rust programming language, Secular Buddhism, travel, and family are all important to me. I've spent a lot of time teaching and mentoring others, especially in FIRST Robotics (I led and mentored my former team 4334 for a few years). I tend to be obsessed with a new hobby or new interest at any given time.
I care deeply about the social and political goals of Free Software (FOSS). Software is a social technology, and users of programs should not be artificially limited in its use. I've tried to push these goals anywhere I go.
At work, I value craftsmanship and durability. I deeply believe that creative work needs an "end" - wholly understanding a problem is most of the work of solving it. This is taken too far without context though - perfectionism isn't the goal. My work comes down to understanding and helping real human beings.
I tend to be very flexible in my technical skills. Generally, I've been a "web developer" - meaning that I've worked on a lot of CRUD back office web apps. This is more descriptive than it is prescriptive though - I've had the opportunity to work on a lot more than that.
I'm a polyglot, and always looking to learn another language. Lately, my projects are written in TypeScript and Rust. The first language I learnt was Java, and I've been influenced by Ruby, Python, C++, Swift and Go.
The fanciest things I've worked on have been embedded realtime computer vision on a quadcopter, a payroll rule-based scheduling algorithm, interactive photoshop-esque user interfaces, and many REST backends. I really like plumbing and scaffolding more than the average developer, and tend to help with devops as well. Boring isn't bad, and I try to spend the majority of my time on improvement, not just "new" stuff.
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 worrying about presentation layer. Libraries like mobx-state-tree make a ton of sense to me.
For CRUD/REST applications, I'm most comfortable with Node.js, an ORM (I like Objection.js), and PostgreSQL databases. I've built complex systems with gRPC, WebSockets, and dabbled with GraphQL. Problems that shouldn't be solved with a relational database, in my experience, are few and far between.
I was well positioned to learn management and leadership skills as well. I've led small teams, taught many juniors and high-school students CS fundamentals, and have led hiring for my employers. I'm interested in continuing this trajectory, and intend to build a business one day. I've also been involved in writing grant applications and 2 patents.
Otherwise, my work with FIRST Robotics has given me the opportunity to work with Solidworks (CAD) and 3D printing quite a bit. Along these lines, electronics are 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.
I figure that while I have you're attention, I'll write down a list of some of the influential writing and media I've taken note of. I'm always reading a new book, watching conference talks and indulging in podcasts, so send any recommendations my way!