How did you get into Elixir?
When I started working at Weedmaps there were a few guys that were really looking into it seriously, and they mentioned it during the interview. I had seen it before and installed it and played with it but not too seriously. In December of 2016 there was a Meetup group started up in Boulder so I decided to go there and check it out. The format of the Boulder Meetup, because they were just starting, was to focus on the basics, assuming that a lot of us there didn’t know much. So rather than walk into an existing Meetup where some of the stuff is over your head and some of the stuff isn’t, they really geared all the content to beginners and allowed the environment to facilitate questions. We had some experienced guys for the first couple months and the more I thought about it the more I thought “this is pretty cool.” I’d done some Node.js stuff before and when I learned more about Elixir, it has all the syntax that I like about Ruby but it fixes a lot of the runtime problems with OTP, and I thought “well that seems like a pretty good solution.” So I kept going to the Meetups and learning more and the more I learned the more I liked it.
How many people were attending these Meetups when you first started going?
There were about 20–30.
That’s a pretty good size.
Yeah, a year prior to that I’d been going to the Boulder Ruby Meetup and when I first started attending there were between 90–100 people. My last month attending — that was November 2016 — about 12–15 people were showing up. So I saw the numbers going down at the Ruby Meetup. Maybe a sign of things to come.
What’s the most promising Elixir app you’ve heard of?
Well the one I work on the most is Hex, so I don’t know if you’d call that an app, exactly. It’s part of the ecosystem. But the biggest app that’s running on Elixir that could be running on anything is Bleacher Report. I had a chance to meet some of those guys at ElixirConf and I read a blog post they wrote about when they switched from Rails to Elixir and moved from 50 AWS instances down to 5 instances and they said “we could probably get away with 2 but we should have 5 just for safety.” And I thought “well that’s freaking awesome!” And I’m sure their finance team isn’t mad that they’ve dropped down to 5 and reduced 90% of their infrastructure costs while getting essentially the same product out of it.
How did you choose the subject for your talk?
A little backstory on that. At the first Meetup I was asking one of the guys there if there’s an analog to Rubygems and he told me yeah, Hex. So I went home after that first Meetup and checked out Hex and went right away into porting one of my Ruby gems over to Hex just to get to know what the ecosystem was like and see what the differences would be in the code, and to give me a goal to take something I knew how to do in Ruby and make myself do it in Elixir. So I did that and Ithought “well that’s pretty cool” and ever since then I’ve been following the Hex repo and whenever issues come in that I can handle I try to submit PRs for them.
Hex is one of those things that most developers don’t notice. It’s part of the plumbing. We type a few commands to pull our dependencies down and don’t really think about it. But you think about it.
Yeah that’s where I’ve positioned my talk. You don’t have to think about it. And you saw this weekend that huge issue with NPM again where they had about 95 packages that just got wiped. If you’re trying to build a server and you have all those dependencies then you’re just totally effed. As I continue to dive into Hex, I see all these problems that have come up in other package managers that they’ve built in solutions for. These problems could never happen in Hex. It’s impossible.
Like you’re saying, you probably never think about NPM until you try to build something and you think “oh I can’t get this dependency anymore, what’s going on.” Probably most people will never use most of the features in Hex. They’re happy just to pull down their deps and take it for granted. But there’s a lot of other stuff in there that’s pretty cool and if you get yourself into a bind it’s probably nice to understand how it works or at least a little bit about how it works.
Your talk was the only one submitted about Hex. We all looked at each other and realized we didn’t know anything about Hex and maybe there was some fertile ground in this area we keep overlooking.
Well I hope so. And maybe it’ll just be totally boring! But it’s a huge piece of software and there certainly is a lot you can do with it. If there’s nothing else, hopefully you’ll get some insight into how it works internally when you put in those basic commands that you take for granted. Even just things like it does for security to prevent the NPM issue or typo squatting or name squatting, things like that that you probably never considered. Maybe it’ll pique some interest in that.
It’s only 20 minutes. I’m going to get the highlights, the most exciting stuff. Or what I think is the most exciting stuff. And hopefully if anybody is interested it’ll pique their interest a little more.
Back to the larger community, what do you think are some of the challenges the community faces? What do you think’s in store in the next year or two?
Because it’s new there doesn’t seem to be a documented or preferred deploy strategy right now. There’s a lack of reading material on deploys and everybody’s working their way in parallel. Probably in the next year or two years hopefully there will come to be a standard. Rails came off the ground pretty quickly with Capistrano — I think it came out before the 1.0 release — so they had that in the bag.
So one challenge is deployment and then other challenges are around adoption. It’s still pretty new and a lot of people aren’t familiar with it yet. I think we still have to continue to educate the decision makers that this is a potential option when choosing an ecosystem. [note: EMPEX LA will have panels on both adoption and deployment. — DB]
At your company, Weedmaps, everyone’s on board. The decision-makers have said yes.
Yeah it’s kind of the opposite. Normally you’d have the bottom-up “hey can we use this new thing,” but yes, most of the decision makers already wanted to use Elixir. Just to give some background, we had a CTO that really wanted to move everything to Node about a year and a half ago. Pretty much all of the senior devs said “dude that’s going to suck, we would rather do it in Elixir, that’s going to be much better” and it ended up being a coup. There’s probably still some Ruby devs at the company that I don’t mingle with thinking “I don’t want to switch to a new language and framework” but we worked that out in a lot of the interviews. When they interviewed me they brought it up and asked if I was interested in Elixir. Hopefully everybody has some interest in it. The guys that I’ve talked to that are Ruby devs, most of them are really excited to learn something and also excited at the opportunity that the company’s going to pay us to learn Elixir. For me, like I was saying about the Meetups, Ruby seems to be waning a little bit. I thought “I gotta get experience because 3 years from now there’s going to be a lot more Elixir jobs out there and it’d be great to have 3 years experience in it rather than being one of the Ruby devs that just checked it out and still wants to learn it more.”