Today on the show we are joined by Michal Muskala, who is currently a freelance software engineer and he is here to talk to us about his work on the Ecto and jason libraries. With Ecto we continue our journey into Elixir and Michal explain how he became involved in the project and the work he did on it. He explains a little of its inner workings, issues and what excited him about it initially. We then turn to jason, a widely popular library that Michal created for parsing JSON. Michal unpacks its particulars, differentiating for us between the driver and adapter and the lessons he learned working on them. The last bit of our conversation is spent talking about open source and Michal's commitment to its philosophy. We discuss making time to work on projects, buy in from employers and and why getting involved can be scary yet is so important! For all this and more, join us for this great episode!
Key Points From This Episode:
- A little bit about Michal's work background and how he got started on Elixir.
- The parts of Ecto that Michal worked on at Google Summer of Code.
- Differentiating between the driver and the adapter; communicating with the database.
- Structuring the code and what Michal would do differently now.
- Creating jason, the default JSON parser and the impetus behind it.
- Understanding lexing and tokenizing; largely the same thing with different names.
- Macros on jason and forcing the VM to use optimizations in particular cases.
- Performance on jason; how Michal achieved the speeds he did.
- Michal's path to open source software and what followed his work in MongoDB.
- Finding time to work on open source projects while employed.
- BEAM, alternative implementations and why they are important.
- Michal's call to action for our listeners!
- And much more!
Links Mentioned in Today’s Episode:
SmartLogic — https://www.smartlogic.io/
Elixir — https://elixir-lang.org/
Michal Muskala — https://michal.muskala.eu/
Michal Muskala on Twitter — https://twitter.com/michalmuskala?lang=en
Ecto — https://hexdocs.pm/ecto/Ecto.html
jason — https://github.com/michalmuskala/jason
Google Summer of Code — https://summerofcode.withgoogle.com/
MondoDB — https://www.mongodb.com/
Erlang — https://www.erlang.org/
Binary Optimization in Erlang Documentation — https://rhye.org/post/erlang-binary-matching-performance/ (Please verify link)
BEAM — https://blog.stenmans.org/theBeamBook/
Erjang — https://jaxenter.com/introducing-erjang-erlang-for-the-jvm-108005.html
Atom VM — http://atomvm.sourceforge.net/