Last week, I announced that Samurails had been renamed as Devblast. In this post, I’m explaining the change of name, but also more importantly, why I decided to build this new version of the website from scratch using Elixir and Phoenix rather than Ruby (which I’ve been using for the past few years).
The short story of Samurails
Samurails was the programming blog I created 3 years ago to publish tutorials about web development, and more specifically Ruby. I’ve had many ups and downs with it, sometimes forgetting about it for months on end. When I first set it up, I used Wordpress. After all, it was the easiest solution and I wanted to get started writing ASAP (to avoid losing my motivation). I wasn’t aware of static generators at that time.
My Wordpress installation was good enough at first; I was writing some articles and tutorials once in awhile. But eventually I started to be annoyed by some stuff that I couldn’t really fix. I mean, I could have if I had really wanted to, but I would rather not use PHP or touch the code of a Wordpress theme. So I hacked what I could together and used external services for everything else.
But recently, I realized I’d had enough. I was stuck with a website I didn’t like and couldn’t easily expand on.
Going forward, I also didn’t want to limit myself to Ruby on Rails - therefore, “Samu-Rails” wasn’t a fitting name anymore.
So, there I was, sick of my Wordpress blog and wanting to build something else. Something fast, cool and entirely customizable.
But I also didn’t want to use a static generator - there are too many limitations, and I have a long list of features to build that need a dynamic backend.
Since I’m a software engineer by profession, this shouldn’t have been a problem - except that I wanted to learn a new technology along the way. I reviewed some of my options and in the end, decided to go with Elixir.
Elixir looks pretty close to Ruby, is functional (something new for me), and has a web framework people sometimes compare to Ruby on Rails. Why not give it a try?
You see, the only times I learned a technology and ended up proficient in were times when I had to build a complete project for work. That’s because learning a new language or framework is hard, and the resulting frustration pushes you to go back to what you know. If it’s for a personal project, it’s too easy to say “I can’t learn Elixir, so I’ll build it with Ruby instead”.
I would be lying if I said the same thing didn’t happen while I was building Devblast. When I hit a wall, I would just stop working on it for the day (or take a long break), and my excitement would be back the following day. Usually after taking break, it only took me a few minutes to figure out the problem that led to my frustration. Duh.
Now that I have a nice Phoenix application powering my website, I’m able to move back the stuff I externalized over time. For example, the landing pages for my books - which are currently on Unbounce - feel slow and are annoying to edit. I’m currently migrating them to Devblast and should be done soon.
I can also create the online interactive tutorials I’ve been thinking about creating for a while. While I’m not a huge fan of videos for learning in general, I understand they work well for some people. For me, they are too passive and I can’t keep my focus. However, with a good written resource, I can just dive in and actively keep reading. For me, it’s a better way to learn (and I don’t think I’m the only one).
Am I the only person who never watched a complete Railscast and just went directly for the ASCIIcast?
That’s why I want to create better tutorials to learn web development actively, using written and interactive content (to validate that a lesson was assimilated). Very soon, I’ll start working on these new tutorials, ranging from the fundamentals (what web development is and why you might want to learn it, HTML, CSS, etc.) to more advanced stuff (JS Frameworks, Ruby, Elixir, etc.).
Why not use Ruby?
Many people have been surprised about my choice to go with Elixir; after all, they know me for having a website about Ruby and having written two books about Ruby.
But as is the case with most things in life, we need to keep learning new stuff or we stagnate.The main reason to make the switch was that I wanted to add a new language to my toolbox. I still use Ruby for work purposes and will probably keep using it for a while - Ruby is definitely not dead (not to mention, it’s still way easier to find a job as a Ruby dev than as an Elixir dev).
There’s a few other advantages - for one, Elixir is faster, and that’s a fact. You might be less productive with Phoenix than you are with Rails, simply because the ecosystem is not mature enough; but eventually, this will improve too.
In short, Ruby certainly isn’t on its way out. However, I do believe that Elixir (and Phoenix) will become more common in the coming years and I want to be ready to help people learn about it.
Why I’m glad I picked Elixir and Phoenix
In the end, I’m super happy I went with Elixir. Devblast feels so, so much faster than Samurails ever was thanks to Elixir itself, caching, CDNs, etc. As a reminder, that’s a comparison between an optimized Phoenix setup and an unoptimized Wordpress, not Ruby.
FYI, the website runs with Dokku on a $20 Droplet from Digital Ocean where I will be adding more applications in the future. I tried to go with eDeliver to have Hot Code Reload, but the deployment process was just way too slow.
What about my next application?
I have two web applications I’m planning to build in the coming weeks/months. One of them will have a React/Node.js stack so I can refresh my skills with these two technologies. For the other, I will most likely use Phoenix, and maybe Elm, after extracting some features from Devblast and turning them into libraries for reusability.