I was having a conversation with a friend who is majoring in electrical and computer engineering and we were talking about extracurricular coding projects. He suggested that I try making a hangman game. A week later, I started the Elixir for Programmers course on Codestool which coincidentally had me make a hangman game so I could improve my knowledge of Elixir. Perfect timing!
Dave Thomas, who is a programmer, author, and editor, came out with Elixir for Programmers a few years ago. The course starts off by having the user download Elixir, install Hex, and introduces them to IEx. Dave is using Elixir 1.5 throughout the course and I was running on Elixir 1.9.4. After the installation, Dave walks the user through the process of creating a new project, writing a dictionary module, and running some code. He then runs the user through a quick tutorial on Elixir types such as integers, atoms, strings, tuples, etc. Since this course is for programmers, he just covers how certain types are handled in Elixir.
Next, we started making the hangman application. After the hangman file came the text interface. Then we made the dictionary a free standing application and talked about supervisors. We then moved on to creating the OTP server and the distributed text client, and got into Phoenix. After the installation, Dave went on to explain the basics of Phoenix. I found the provided explanations of its purpose and functionality to be very useful. After Phoenix was set up, we added some graphics to our application, wrote some java, and spent some time tidying up the entire program. He also talked about nodes and data binding.
Throughout the course, I ran into a handful of problems mostly dealing with small differences in syntax between versions. One of my biggest issues came when trying to load graphics into the text client. Dave provided a link that seemed to download an SVG file type. I had no experience with this type of file before and I was never quite able to figure out what was wrong. Phoenix also gave me a few problems during the installation but they were not hard to fix. I have had some experience with Phoenix before but this was my first time starting an app from scratch. Another complication with different versions was when I was working with atoms. The version of elixir Dave was using did not require quotation marks.
One of the helpful things that Dave provided was the complete code for certain functions which proved helpful when checking my work. He also had the complete code for the entire hangman project. Dave also asked the user questions at the end of each section. The best part was that they were not always things he showed you in the videos. This provided an extra challenge as well as variety throughout the entire program. Dave also took frequent breaks from coding to walk the user through the structure of the application and explain the importance of the API. All in all, I enjoyed Elixir for Programers by Dave Thomas. It taught me a great deal about Elixir, Phoenix, testing, API, and error handling. Go check it out!