maxlapdev
Joined 8 years ago
Joined 8 years ago
Senior engineer with 12 years of experience in Ruby on Rails. I'm a strong generalist who quickly builds deep understanding of codebases, systems, and product context.
I care about quality, reliability, and maintainability, and I particularly enjoy refactoring existing code improve those aspects. I aim to solve immediate problems in ways that also support the broader product vision.
I consistently look for opportunities to reduce friction, improving the experience for both users and developers. For example, I built [activerecord_where_assoc](https://github.com/MaxLap/activerecord_where_assoc), a Ruby library with over 1.5 million downloads.
Open to full-time and part-time engagements.
Location: Montreal, Canada
Remote: Yes, or hybrid in Montreal
Willing to relocate: No
Technologies: Ruby/Rails, PostgreSQL, Tailwind, Python, Dart/Flutter, Go, Linux, AWS, Docker. Interested in learning Rust
Email: maxhlap [at] gmail.com
Résumé/CV: https://drive.google.com/file/d/1eNWRWWzNVbUFse3LhkDydAw9YdF...Senior engineer with 12 years of experience in Ruby on Rails. I'm a strong generalist who quickly builds deep understanding of codebases, systems, and product context.
I care about quality, reliability, and maintainability, and I particularly enjoy refactoring existing code improve those aspects. I aim to solve immediate problems in ways that also support the broader product vision.
I consistently look for opportunities to reduce friction, improving the experience for both users and developers. For example, I built https://github.com/MaxLap/activerecord_where_assoc, a Ruby library with over 1.5 million downloads.
Open to full-time and part-time engagements.
It's all about perspectives, or you really just never had to deal with it.
The happy path ain't a big deal. But think of the unhappy ones:
* What if a server gets rebooted (maybe it crashed) for any reason anywhere in the process. Maybe you lost internet while doing the update. Were you still dropping tarballs? Did the server get it? Did it start with the new version while the other servers are still on the old one?
* What about a broken build (maybe gem problem, maybe migration problem, may other). All your servers are on it, or only one? How do you revert (push an older tarball)
A lot more manual processes. Depends on the tool you had. Good tooling to handle this is more prevalent nowadays.
I think the "Building an intuition" section of my blog post[1] makes a good case for that.
When dealing with loops, you have 3 nested constructs interacting: a wrapping function, a loop statement and the loop's body; and you have 3 keywords to choose where the flow of the code goes.
return returns from the wrapping function
break leaves the loop statement
next / continue leaves loop's body
When dealing with blocks or anonymous functions, it's instead 3 nested "functions" that are interacting: a wrapping function, a called function and an anonymous functions (or block).
Ruby's blocks, let you use the same 3 keywords to choose where the flow of the code goes.
return returns from the wrapping function (ex: my_func)
break returns from the called function (ex: each, map)
next returns from the block
Quite consistent. But since we are talking about functions instead of statements (loop), return values are also involved. Allowing both break and next to provide a return value fits well in that model and is quite useful. The 3 keywords are basically return, but they have different targets.
[1] https://maxlap.dev/blog/2022/02/10/what-makes-ruby-blocks-gr...Care to share an example problem?
I made a post about the niceties of blocks: https://maxlap.dev/blog/2022/02/10/what-makes-ruby-blocks-gr...
In Ruby, you always use the global name (with caps) that normally matches the library with possibly some nesting. (exceptions exists, but its also possible to add globals in Python)
Unless you are talking about include, but thats for mixins, which are snippets of reusable coee you can add to you class.
It doesn't feel at all as dirty as `from blah import *`.
So the trick here is that if you are at the focus point, you get all that light in a small area "for free". But if you try to catch the light on the way, you now need to catch eveywhere in a whole massive circle, which is basically impossible, so you only catch a minuscule amount of the light. And then have to deal with interferometry.
But "source available", english-wise, sounds like you can only read it.
This pushes some to avoid the term and say open source since that's much closer to their what the license does, even if they are not exactly open source.
The argument is that "fair source" would be a much clearer term for most of the "source available with extra freedoms" stuff, and I agree.