The CSV format comes up all the time. It's a convenient and time-honored way to transfer tabular data textually. If you're going to have to deal with this sort of data, what's the best way to do it? I'm going to propose that you use a particular library, and I'm suggesting it because the level of detail in the code is overwhelming.

Upon reading the code for the Elixir CSV parsing library, I felt a sense of awe. The person that wrote this code is unbelievably serious about parsing CSV very well, and we're all better off for it. I'm not going to dig into the code in this episode, but I can't stress enough how nice it is to read.

We'll start a new project.

mix new csv_playground cd csv_playground

I'm pulling in 2 dependencies - the csv library itself, and the Faker library for generating fake data.

vim mix.exs
 defp deps do [ {:faker, "~> 0.5"}, {:csv, "~> 1.2.0"} ] end
mix deps.get

We're just going to decode and...