Joel Gallant
Software Developer

Who am I?

I'm a curious, life-long learner. I'm self-taught in programming, and have been using code to build things for as long as I can remember. I'm Canadian, male (he/him), and this is the only place on the internet where you'll find much from me (delete Facebook).

In particular, I care deeply about the social and political goals of Free Software (FOSS). The Linux community enabled me to learn and grow, in many ways that would have been inaccessible to me. I try to encourage this philosophy and openness anywhere I go.

Some of the most important things in my life have been FIRST Robotics, the Rust programming language, Financial Independence, Secular Buddhism, travel, and family. I've spent a lot of time teaching others, especially with FIRST Robotics. I tend to be obsessed with something at any given time - at the moment it's Formula 1 racing.

In work, I value craftsmanship and durability. I deeply believe that creative work needs an "end" - understanding a problem is most of the work in solving it. This can be taken too far without context though - perfectionism without reasoning is just wasting time. My work comes down to understanding and helping actual human beings.

Skills

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++, and (recently) Go.

I've worked on embedded real-time computer vision tasks, scheduling algorithms, interactive (photoshop-like) user interfaces, and many REST backends. I like plumbing and scaffolding more than the average dev, and tend to help with devops as well.

When building UIs, I use React for most tasks nowadays (though Vue interests me a lot). My general approach is to build the data architecture before worrying about presentation layer. Libraries like mobx-state-tree make a lot of sense to me. Identity maps make a lot of sense to me as an organizing principle. Orbit.js seems close to my ideal. I try to be a rigorous pragmatist, as I've seen a lot of disagreement with no clear winner.

For CRUD/REST applications, I'm most comfortable with Node.js, an ORM (I like Objection.js), and PostgreSQL databases. I've built systems with gRPC, WebSockets, and dabbled with GraphQL. Problems that should not 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 a lot of 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.

Recommendations

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!