I babysit a few of my pet projects, including moviestowatch site that used to query IMDB for ratings & reviews and compare both (used to, after IMDB redesigned their page and everything broke).

I wrote it 4 years ago in Crystal based on simple kemal web framework. As you can imagine, a four-year-old app written in a language that wasn’t even stable at that point is next to impossible to maintain. I took this as an opportunity to rewrite it using Elixir and Phoenix framework. Just for the sake of the learning experience.

For the time being, I only rewrote a portion of the web interface and didn’t have a chance to work on the scrapers just yet. It took me eight days of ad-hoc work from the initial commit to deployment using Nomad (via Docker). The complexity was mostly in SQL queries (usage of materialized views, various aggregate selects), once I got that out of the way rest was fairly straightforward.

It’s still too early to tell if I will encounter that wow factor. In terms of tedious web development (the lens I’m looking at), it still feels like another language and framework. I was excited about Crystal because it was efficient compiled Ruby. The promise was pretty simple, and it was delivered. I suppose I need to give Elixir a bit more time to surprise me (maybe real use of GenServer will be it?). Also general long-term maintainability plays a big part of the whole experience and my hopes are high here due to it’s pretty mature ecosystem.

Regarding learning materials, I read Elixir in Action, Programming Phoenix and currently reading Programming Ecto, but frankly speaking, I end up searching for particular problems anyway. Unfortunately, it seems a lot of folks and companies tried to grab that free SEO traffic on the wave of Phoenix/Elixir hype period, and a lot of the results will be just, um, not so helpful. To give you an example: it’s like when you look for recipe X, you lang on a site with three pages of content about how somebody’s grandma inherited that recipe from their grandma, and it was cherished for generations? So it’s the same but with, for example, Ecto.