Joseph Kain bio photo

Joseph Kain

Professional Software Engineer learning Elixir.

Twitter LinkedIn Github

It’s been one year since my first post on Learning Elixir. I thought I would take this opportunity to look back over the last year and reflect and to look forward to the next year.


My goals for this blog were to learn Elixir and post about my learnings once a week. I’ve definitely learned a lot about Elixir. I’ve written a basic app and published a small tool as a Hex package. In terms of posting consistency I’ve posted 36 posts over the last year - so I hit about 70% of my goal. I’m happy with that level of consistency for the first year.

Over this next year I my goals are to develop more in depth Elixir knowledge by working on a larger Elixir application. I, again, plan to post about my experiences once a week.


Over the last year I have explored a number of different topics.

Functional programming

When I first started learning Elixir I began by studying functional programming and I started off with a Scala text. The text was a good one and I learned a lot of theory from it.


Performance analysis has been a large part of my career in the past and I would like to come back to this again in the future on Learning Elixir. So far I have only explored performance within a local computation. The critical parts of Elixir and Erlang performance are between Erlang processes. I would like to look into this in more detail. One important part of this is in how the application is designed - how it is composed of processes.

Publishing a Hex Package

While exploring Elixir performance analysis I needed a tool to compare benchmark results. I ended up writing bmark and then published it as a Hex package. There were several things I learned about releasing a tool and publishing it as a Hex package and I documented them in a series of posts.

Patterns in Elixir

I looked at how Stream and reduce are used in pratice in Elixir.

Application Design

I spent some time researching application design in a couple of Elixir and Erlang projects. This was a step for me toward building a larger application in Elixir. It was also a step toward building a better understanding of how an Elixir application should be structured in order to achive good performance.

Type safety

This is a bit of a departure from the previous two topics. I’ll admit that I looked at type specs because I’d been looking at the PureScript language. If you are not familiar with PureScript it is a Haskell like language that compiles to JavaScript. PureScript and Haskell have very strong typing and intricate type systems. Studying these languages inspired me to look more closely at typing in Elixir.


While working on a new project I learned to parse YAML with yamerl.

Topics for this year

Over the next year I would like to start working on a larger Elixir application and sharing what I learn. Topics I hope to learn more about in the process include

  • Hands on experience with application design by designing an application.
  • Phoenix
  • Hands on experience with application performance in terms of concurrency and scalability
  • Tools used to analyze application behavior and performance.
  • Posts on how to use other packages

Anyway, it should be an exciting year. I hope you’ll join me here in Learning Elixir.