FrankBro
Remote: YES PLEASE
Willing to relocate: No
Technologies: F#, Erlang and Go are top but I've touched pretty much everything.
Resume/CV:
https://www.linkedin.com/in/francois-brodeur-49587837/
Email: [email protected]
Backend/system mostly. 8+ years of experience, 3 years in adtech.
Remote: Yes please
Willing to relocate: No
Technologies: F#, Golang, Erlang, C
Resume/CV: https://www.linkedin.com/in/francois-brodeur-49587837/ https://github.com/frankbro
Email: [email protected]
Backend/system mostly. Three years of experience in adtech which I feel is very valuable.
1. I think you have to see typing as helpful information. Like:
-spec add(integer(), integer()) -> integer(). add(A, B) -> A + B.
Technically, nothing prevents add from accepting number() or float(). It's too much specification.
2. I was surprised how much there actually is but also disappointed that a lot of errors were in until OTP 23. Gradualizer also overrides some definitions [2]
3. Haven't encountered a problem with this yet with gradualizer, would need to test.
[1] https://github.com/josefs/Gradualizer [2] https://github.com/josefs/Gradualizer/blob/master/priv/prelu...
Discovered it last year and started using it. The refinement portion handles unions and guards very well. It's not perfect but I'm integrating it in our codebase with some interesting successes. I'm hoping more people use it on their codebase and can find any bugs they have with it so it can be improved further.