68. Why Not Use Elixir?

On today’s show we welcome back our special and esteemed guest Steven Nuñez, as we ask, ‘Why not use Elixir?” Steven is an avid Elixir user and an expert on the question at hand. During the chat he details the switch he made from Ruby and what brought this about, describes some the stand out features of the language and then assesses Ruby and Elixir, side by side and notes their relationship to each other. From there we get into the importance of Erlang and the beam and look at some of the applications that these platforms have created. We also discuss the major positive that Elixir offers in terms of updates and servers.

Steven helps us to consider possible downsides of the language as well as hypothesize as to why it is not more commonly used in industry. So if you are like Steven and are already an Elixir convert, or you are inquisitive about what we think is potentially amazing arena in which to work, you are not going to want to miss this show!

Key Points From This Episode:

  • What led Steven to move from programming in Ruby to Elixir.
  • Elixir’s free distributive programming and other features.
  • Looking at the similarities between Ruby and Elixir and any connections there may be.
  • Elixir’s relationship to the beam and Erlang.
  • The amazing capability of Elixir to run online updates without knocking off users.
  • Some reasons Elixir is not used more in the industry.
  • When would be it a bad time to use Elixir?
  • Looking at the pending upgrades from Ruby and comparing them to Elixir and Myra.
  • Some teach and learns from the team!
  • And much more!

Transcript for Episode 68. Why Not Use Elixir?

[0:00:01.9] MN: Hello and welcome to The Rabbit Hole, the definitive developer’s podcast in fantabulous Chelsea, Manhattan. I’m your host, Michael Nunez. Our co-host today.

[0:00:09.8] DA: Dave Anderson.

[0:00:10.8] MN: Our producer.

[0:00:12.0] WJ: William Jeffries.

[0:00:12.7] MN: Today, we’ll be talking about Elixir, the programming language, there’s going to be pretty exciting because I don’t know much about Elixir and it sounds like and it sounds like items you get in the video game that revitalizes you and makes you a better person.

[0:00:29.5] DA: Right, always save it till the end, I never use them.

[0:00:34.0] MN: You have a ton of them in your inventory, don’t do anything with them after you beat the game. How does that work out?

[0:00:40.1] DA: Yeah, it’s a good question. Also like, why use it and maybe why not, I don’t know, I’m feeling lazy today so – if you don’t want to use elixir.

[0:00:49.3] MN: I mean, we’re about to find out right now with, introducing our special guest, Steven Nuñez. Hey Steve, how’s it going bro?

[0:00:56.6] SN: Hey guys, thanks for having me back again.

[0:00:58.0] DA: Yeah, it’s been a long time.

[0:01:00.5] MN: Glad to have you onboard and you are in the room right now, probably the Elixir expert. You’re like the Elixir mixer, you’re the chemist in the room, the code fixer, there you go, the elixir mixer, code fixer, is that your job title?

[0:01:17.1] SN: It is actually. Mr. Elixir, the code fixer.

[0:01:22.6] MN: today, I think it’s your job to enlighten us and our listeners into Elixir, it’s the programming language and why should we immediately go into just programming in Elixir at the end of the day.

[0:01:36.4] WJ: This is like the one programming language where Mike’s not better than you, right?

[0:01:42.9] SN: I think he’s better at me at Cobol and that’s about it.

[0:01:48.9] MN: Yeah.

[0:01:48.7] SN: And java, but who cares?

[0:01:49.8] MN: Yeah, exactly. I like my Cobol. Trust.

[0:01:54.2] DA: Sell me on Elixir, why – what’s the sales pitch, why should I learn it?

[0:01:57.2] SN: I’ll tell you sort of how I came to it and what sort made me fall in love with it. For a long time, I was a Rubyist and I know that term is a bit weird but I was almost like angry opposed to other programming languages, I fell in love with Ruby’s expressiveness and how it gave you the language to create. Gave you methods like end width on strings.

It gave you like each and map and things that did exactly what you expected them to do. I really liked that expressiveness and did that for a long time. Did exclusively Ruby. Some JavaScript because it’s the web but did Ruby, loved Ruby but I think the world around Ruby changed a good deal and you know, server architecture started to change where in order to get more performance, in a Ruby application, we would say, well, let’s just throw a more servers at it, right?

It was like, servers are cheap, developers are expensive, let’s optimize for developer happiness. But, architecture started to change, CPU’s thought individually, stopped getting faster and they started to put more cores on a single machine, on a single chip. Yeah, because of that -

[0:02:57.1] DA: That’s hard to take advantage of Ruby, like that’s classic global interpreter lock, issue.

[0:03:02.1] SN: Yeah, all the threads. The gill. The gill beat us up, right? Because to do that, you know, to start multiple process, to think imaginable and multiple courses, starting multiple Ruby processes, really expensive on memory but I didn’t – you don’t let go because Ruby’s great. I found out about Elixir through a screen cast, Jose Valim wrote the language and he was kind of like demonstrating some of the language and I was like, this is beautiful.

It has a lot of the things that I value in Ruby that expressive API , the really rich language for manipulating strings and lists and new things that I didn’t know I wanted, like pattern matching and multiple - having functional language and then on way of writing code, for free, you get to take advantage of multiple cores.

And, for free, you also get to take advantage of distributive programming.

[0:03:50.6] WJ: What do you mean by distributive programming?

[0:03:52.0] SN: Running code on multiple servers is from a code perspective, almost exactly the same as running it on one machine so I can say, there is a way where I can say, run this over there and verse name and I can run really expensive task on say, a server that maybe is more of a workhorse, maybe has like a proprietary library and calls out to C on this one license server.

Really easy to just make a call, right? We did that in Ruby, we did it in API, we’d have to make a web request.

[0:04:19.3] DA: Yeah, maybe a side kick or something like that.

[0:04:22.4] SN: Right, with this, you can just spin off processes. Elixir really just gets rid of a lot of these stuff that we’re used to having in the Rails world so there’s no concept of like a side kick in Elixir, you spin off a process and it runs in the background.

You can do way more on one server than you can because again, you’re just taking advantage of more of the hardware, it’s really cool.

[0:04:40.4] DA: Yeah, I like that idea of like a – for each programming language their designed with certain philosophies and those philosophies makes certain things a lot easier and certain things, maybe a little bit harder. But yeah, it’s kind of cool, it’s like, Ruby being something that’s design for programmer or happiness, makes it easier for programmers to be happy but maybe makes it harder for productivity with the respect of like concurrency and all that.

The center library, mission like for Elixir, it’s really robust and a lot of similar things going on in Ruby. Is that a coincidence, is it directly inspired by Ruby and like Mats philosophies?

[0:05:21.2] SN: Yeah, very much. I mean, I don’t know if it’s, I don’t know if there’s a clue enough like Mats is nice so we are nice for Elixir but the community sis very much in line with a lot of that stuff, like ease of use, what’s really cool is that, because of those similarities, because they’re kind of like programming cousins, a lot of people who develop ruby libraries wind up developing similar libraries for Elixir and the corresponding web frameworks, right? There’s a web framework called Phoenix that is kind of like Rails but better.

[0:05:49.3] DA: Shots fired.

[0:05:51.6] SN: Beautiful support for web sockets, automatic distribution of load. It has libraries that connect to AWS and look exactly like the ones you would use in a Rails product.

They have different device like libraries, they have them for Phoenix.

[0:06:07.4] DA: Okay, yeah, I kind of wish Travis was here so he could give a plug for a Remote Retro which has also done in Elixir with Phoenix.

[0:06:14.9] WJ: Yeah, everybody should use the Remote Retro, I’ll plug it on his bath, it’s a tool that you can use in order to run your retro remotely. It comes with a whole bunch of handy features, it’s also sort of its own facilitator. If you don’t have a facilitator handy, this tool will basically do it for you, it guides you through step by step. The whole thing runs on Elixir.

[0:06:36.0] MN: Yeah, Elixir back end and React front end.

[0:06:38.4] SN: Yup.

[0:06:38.6] MN: It’s open sourced too? If you’re interested in hacking soon after the episode when Steve’s done with the – explaining the amazingness.

[0:06:47.5] DA: As soon as the episode’s over.

[0:06:49.2] MN: We’re all going to make poll request to Remote Retro.

[0:06:52.3] SN: Pause the episode now. Well, let me give you instructions on pause. Go download rune stall Elixir then come back.

[0:07:01.5] WJ: That’s just some open source project, right? Why should we learn Elixir, given that nobody really uses it in production?

[0:07:09.1] SN: That’s sort of the interesting thing. We’re building some stuff in Elixir now but I guess one thing that’s important to understand is that Elixir is run on an underlying virtual machine called the beam. The beam runs Erlang.

And Erlang’s been around since 1986.

[0:07:23.6] DA: Wait, was it the bean or the beam?

[0:07:25.7] SN: Beam, like a beam of light. Not like a bean in like.

[0:07:28.8] DA: Not a java bean.

[0:07:29.9] MN: Nothing like a java bean.

[0:07:31.6] WJ: Laser beams.

[0:07:32.7] SN: As a result, there’s a ton of libraries that already exist and are in production so WhatsApp for instance is sort of the big one that people go to. One billion connections are managed all through the same virtual machine that Elixir runs on.

[0:07:44.2] DA: Wow, yeah.

[0:07:45.2] SN: This thing is sort of built to build these massive networks and Erlang is originally built to – for the telecom companies that kind of like route calls. You have this thing that is sitting with so much power but if you look at Erlang, it looks like something maybe micro did in a previous life.

[0:08:01.1] DA: I see what you did there.

[0:08:03.2] MN: Amazing, is that what you're saying?

[0:08:05.3] DA: Is not cool. What’s the deal here?

[0:08:07.6] SN: Mike is a natural Erlang developer now. No, it’s inspired by like prologue and other languages that aren’t as popular today so if you look at them it’s kind of like derived from something you don’t know the source of. It gets a little bit harder to get your head around.

[0:08:21.5] MN: Is WhatsApp actually built in Erlang or is it Elixir?

[0:08:25.4] SN: It’s built in Erlang, but they do have – I believe they have some Elixir since it’s the same VM. The concept extends to like in the JVM, you have java and you have Scala who are sitting side by side or closure sitting side by side, it’s the same run time so you could have both.

There have been a couple of cases, I forget there are sports website that went from an insane amount of rails servers to like a really small amount of elixir, of phoenix servers, just replacing their Rails infrastructure.

[0:08:51.4] DA: Just because they’re getting more bang for their buck for the service that they are running. That’s cool. It sounds like the concept of kind of taking a lot of advantage of concurrency like – does this like mesh with like serverless? Is this like, is this a good thing to run in the serverless environment? Or is it just really got a concurrency so you don’t even need to worry about like jumping on that bandwagon, you just have this other band wagon you can jump on?

[0:09:18.4] SN: Yeah, I mean, I guess this falls more on the tradition I run a server, it runs my code like you're still, this is still you owning and managing the code, it’s an alternative. One thing that’s kind of interesting, I wanted to talk about what a couple of things that are very different from, that you get that kind of excited me about Elixir.

One of them, I mentioned was the beautiful syntax and the attention to making a really expressive language. This is something that we do at work that is still mind-blowing. Today, if you upgrade an app, you have new code that you want to get up there, you know, maybe you want to not disturb users, you pull a couple of servers out of the load balancer and then you wave people to disconnect, you drain the pool. You upgrade the code, spin them back up, right? If we’re doing web applications, that’s kind of fine because it’s request response sort of finishes and starts.

As you start building more connected applications, connected over web sockets, connected over different channels. Bringing a server down is like a no, no. Right? Or very hard. With Elixir and other beam languages, you can do like in place upgrades of code. I have servers now at the Flatiron School that support our lording infrastructure for students so they connect to a remote environment, they have a terminal, file tree, sort of like the whole thing but it’s all hosted remotely and isolated like containers.

We have to fix bugs on it you know? Try as we might, sometimes we run a couple of bugs or we enhance the features and we cannot knock people off because they’re doing laps for some times like hours at a time. Imagine doing all that work and getting knocked off.

[0:10:49.7] MN: No save like no way to know where you left off or if the server just clips off.

[0:10:56.1] SN: You got all the tabs open, you’re in it.

[0:10:59.1] DA: The dog ate your homework. I was totally going to do this lab but man, the server went down, impossible, servers don’t go down.

[0:11:08.6] SN: To me, that’s really powerful too, right? Because now, you can start thinking about different kinds of applications and I think that’s one of the things that I was really surprised. I kind of fell in love with Elixir in concept and started doing it and then you start seeing different kinds of things you can build. Because now, you can have these long lived applications and you could upgrade them in place and you can do like really advanced inter server communication.

It’s just like hard to do without bringing Rabbit MQ or bringing in like workers and reedits and all these other dependencies, you just have it out of the box.

[0:11:35.7] DA: Red, green deploys.

[0:11:37.8] SN: You’re good, you’re just there.

[0:11:40.5] DA: What is the mechanism that really facilitates analyst or I seem to remember something like module swapping or something like that.

[0:11:49.5] SN: Yeah, when you provide an upgrade, when you build an upgrade and you apply it, it has like kind of a manifest saying like this thing is in memory, replace it with this one. The next time someone calls that function, it’s like, they’re calling the new one and the old one is still in memory till no one is using it and then it kind of drops off.

The good thing is that you don’t kind of have to worry about it, you just build the upgrade and deploy and that sort of just magically happens.

[0:12:12.6] DA: Cool, like I guess it’s like a built in thing from the early days from the telecoms? Not wanting to drop calls and all that important stuff?

[0:12:23.3] SN: We’re experiencing server maintenance from three to five so please don’t make any phone calls, it’s got to be up all the time. I’ve heard the beam is a Ferrari covered in scrap metal where it’s like, this amazing thing that is so good at doing programming things that we care about but it’s just awful to work with until now.

[0:12:43.2] DA: Until now.

[0:12:43.9] SN: Until now.

[0:12:45.4] MN: You mentioned beam languages, are there other languages that fall on under the beam of virtual machine or?

[0:12:51.4] SN: Yeah, I meant in Erlang, Elixir, there’s one which is a flavor of Lisp which I forget the name of it but there’s also, there’s that one where you can –

[0:12:59.5] DA: If you like parenthesis.

[0:13:00.8] SN: If you love those parenthesis, go for it.

[0:13:05.7] WJ: Why don’t you think that Elixir has caught on more industry?

[0:13:09.1] SN: That’s a question I ask myself a lot. I think part of it might be friction to change. I think just like having to learn a new thing is hard, generally hard. Where to get your head around, what problem to solve. I think that if you have someone who knows it, who’s gone through the trouble for whatever reason for just play or inspired by someone in the podcast, I think you’ll see that, you’ll see it has a tool you can reach for and probably want to reach for more often.

I think it’s that first exposure and then the learning. Because as a result, it’s not just – first off, it’s a functional programming language. That’s a first thing. Now you got to think about things outside of object orientation. If you’ve never done anything like that, that’s something like that, that’s something you have to kind of get your head around.

[0:13:49.5] DA: Yeah, like a Monad, right?

[0:13:51.5] SN: Okay, no.

[0:13:55.3] WJ: What’s a Monad.

[0:13:56.3] DA: This is Monad.

[0:13:59.1] MN: Hard pass.

[0:13:59.8] DA: I guess if you want to learn more about Monads, you can refer to the episode we have on that on another functional programming.

[0:14:05.0] MN: Yeah.

[0:14:05.5] SN: Right so then there’s that and then there’s the other part of Elixir which is a really powerful thing that just doesn’t exist in the world of Ruby. So you are essentially designing servers that respond to messages. So it’s been like if you ever heard Alan Kay’s description of what objects were supposed to be, you had said the metaphor of biological cells are sending messages to each other, not that we are reaching inside of one but just sending some chemical. It receives it, it responds so you wind up defining these servers that respond to messages and that’s how you encapsulate your programming.

And there’s these other counts of accounts. supervisors where you can have another process that monitors other processes and if they die, it just restarts them. You have strategies for restarting the servers and supervisors and then you get to the distributor part. So I think that that’s a steep hill to climb but that’s so good along the way.

Because the things you get beyond just a regular language that can take a request in and parse it and route it and hit a database that’s fine. And it does that really well. Phoenix is amazing. But the second you start looking into the underlying mechanisms and make it really, really cool that’s when I think it’s hard to take off. That’s when you start to see, “Oh my god everything is an Elixir app.”

[0:15:12.2] WJ: So why don’t you teach it at the Flatiron School?

[0:15:14.4] SN: I think I am the – I am currently lead engineering. That is taken up a lot of my time but I would love to write some curriculum if there is some interest. Send me a message on Twitter if you are interested in an Elixir course. It’s something that I am really excited to do at some point to sort of hard to figure out like when the right time is.

[0:15:31.8] WJ: What is your Twitter handle?

[0:15:33.0] SN: Oh @_stevennunez.

[0:15:35.8] WJ: @_stevennunez and is that with a V?

[0:15:38.4] SN: It’s a V, oh thank you. Yeah Steven with a V, it will be in the show notes.

[0:15:43.6] MN: We’ll make sure to put that there too.

[0:15:46.1] DA: Yeah, always.

[0:15:47.2] MN: We’ve been hearing a lot of good things about Elixir and I think I am going to play devil’s advocate here on why I should do Elixir. I think one thing that comes to mind and correct me if I am wrong because I know I am going to be but Ruby has gems and Elixir has I’m going to think potions? Like what is it?

[0:16:04.3] SN: Something to their hex packages so that is nice.

[0:16:05.4] MN: Okay so what’s the community behind the packages in Elixir versus something that’s been around for many years now like Ruby gems and whatnot?

[0:16:17.0] SN: That’s a really good point. One thing that I saw that was pretty interesting when something like NOJS came out is that the rate of package creation was really fast because at the time it came out with 2009. We had a very rich developer culture, GitHub was a thing. I think we had like a really easy way to collaborate but Elixir being a little bit newer, kind of benefits from that as well. We have patterns that we like, we implement it in our language.

But Ruby has something that Elixir doesn’t, time right? So Elixir has been around for I want to say five, six years at this point. Ruby was created in 1995. That’s a long time but I think the really cool thing is that Erlang has been around since 1986 and you can use every single Erlang library in Elixir. In fact, that’s not a concept that you should hide. You embrace it. So I mentioned that Phoenix framework, Phoenix leans on a library called Cowboy which has been out forever and handles like web request. It handles the web.

So why rebuild it when someone has been battle tested and then put through its paces when you can just use it. So I think that is something interesting to think about. It’s a new language but it exists in a world where things are available, well tested, well supported, have communities around them and essentially have had reps.

[0:17:33.2] WJ: So why not use Elixir? What is a situation where it would be a bad idea?

[0:17:38.1] SN: So the example that usually comes out, I have a couple in my head but the one they usually give us is if you need something that’s intense in number crunching, don’t use Elixir or Erlang. Write that see, write that in a super low level language.

[0:17:51.2] DA: Right or something that has a lot of community support for it like Python where it shells out two C libraries, to for TRAM libraries and has that muscle behind it.

[0:18:02.7] SN: Well I mean you can call out too. They have a thing called the NIF where you can connect to a C library from Elixir, the same kind of thing that Ruby does with FFI and Python does. So if you have access to that underlying library, you can call out to it.

[0:18:16.8] WJ: They call it a NIF?

[0:18:18.2] SN: NIF, native something.

[0:18:21.2] WJ: Hex packages NIFs.

[0:18:26.2] SN: So I mean that concept still exists. So write that in C, write that in your low level really fast language and then call out to it and then go back to being in the amazing world of Elixir.

[0:18:37.2] DA: Never leave.

[0:18:39.7] MN: Never leave, never leave.

[0:18:41.0] SN: One thing I will say is I guess if you need like a compiled binary is nice to have like GO compile a binary or like a C compiled binary. There is a compilation in Elixir where I can give you a binary but there are some conditions. I could give you something called an E-script which will run on your machine if you have the beam installed. If you have like the Erlang runtime installed, I can give you an executable and it will run, no problem.

There is also the concept of release. A release is just like an all in one package that has everything but it is not a binary. It is a collection of directories and stuff. So there’s not a really nice way to package up a single EXC file and send that over to you or just some binary. So if you need that look at, I don’t know, Crystal. Is that a thing yet that people are excited about Crystal?

[0:19:24.2] MN: I don’t know.

[0:19:25.4] SN: Next podcast.

[0:19:26.7] MN: Yeah, next podcast it will be on crystal. You’ll probably come back and start.

[0:19:31.3] SN: Guys forget about Elixir.

[0:19:33.3] MN: Yeah, Crystal’s the new thing.

[0:19:36.0] DA: Good news everyone.

[0:19:37.9] WJ: So I thought that was a strategically type diversion of Ruby.

[0:19:40.5] SN: Sort of, yeah. It runs something on the – it uses the LVM and is not Ruby like but super inspired by Ruby. The reason I say is that is there were languages like Myra which were Ruby-like. This one tries to be Ruby. It tries to keep the expressiveness, the blocks, the syntax, all the things and tries to be able while having types.

[0:20:03.0] WJ: Yeah, I heard that Ruby was actually moving in toward adding types in 3.0.

[0:20:07.9] SN: Yeah, Ruby three by three I think is what they’re calling it. So they want Ruby three to be three times faster than Ruby 2.0 and they are getting pretty close and think they have the jet, the new jet that is in 2-6 that’s supposed to have some pretty cool improvements pretty soon. They are experimenting some stuff but then they think types can help with some sort of optimizations.

[0:20:26.3] DA: Yeah, it’s funny how like all –

[0:20:27.6] SN: You know what doesn’t need optimizing? Elixir. That thing is fast guys.

[0:20:32.9] WJ: So even if Ruby gets faster, you wouldn’t switch. You wouldn’t go back.

[0:20:37.6] SN: You know, I was thinking about this the other day, I think I probably wouldn’t. Because I think the way that I could write applications now with just being in this Elixir ecosystem, spinning up processes and my supervisors and my supervisor tree and you essentially get to build this self-healing systems that if someone crashes downstream, it will fix itself and then just keep carrying on. Ruby is not just the speed, it is also that kind of additional layer of programming.

I now have all the tools that I had before as a programmer and then some. I now am essentially designing code the way I would design servers. I have a networking background. So like the way I would set up Nagios to look at things when they fail and then fire off a script and do this thing, it’s that on top of all the things you love in programming.

[0:21:27.6] DA: One thing that I feel like Ruby really has going for it, I think we talk about this a lot is like the developer friendliness like how it’s just really nice and it is a great language for a beginner to pick up and really sink their teeth into programming for the first time. If you were a beginner and you’re out there listening to this, would you say that they should pick up Elixir as a first programming language?

[0:21:51.7] SN: I think it can be. One thing that you will miss out on and this is something that I think just the industry of like bootcamps in general have helped a lot in Ruby is that now because we’ve had so many beginners in Ruby go from not knowing to knowing, we have a ton of material out there in the form of blogs and videos and a bunch of things that people have tried to pre-digest something, right?

One thing we sort of take for granted as seasoned programmers is that sometimes you just don’t see, you don’t - the metaphor that they use in the documentation is not the one that you would use. So by reading someone else’s interpretation of the difference between map and reduce in a blog post is super useful for a beginner. So it is just not a matter of if you’re the kind of beginner who could read documentation and just learn then yeah, go learn Elixir.

It’s the future of programming. If you are going to want to Google stuff and find things that are not just a documentation, Ruby still has it beat. I think that that’s a matter of –

[0:22:48.8] DA: It’s viewed with thick that really is a thick amount of answers on Stack Overflow. It can answer what a map is or what a block is in so many different ways that one is going to stick.

[0:23:02.0] SN: One is going to stick. And I mean like students take a lot of effort into making this really creative blog posts to explain things that I guess we take for granted like what is a class, right? We take classes for granted right? In the differences between instance methods, and class methods but they have like animations and drawings and they really take that extra step to digest in that body of material exists. So until maybe I get all of the tweets on the internet to start an Elixir course, it will be a little while before it becomes as approachable because of the ecosystem that it exists in.

[0:23:36.8] DA: Right, I guess like a devil’s advocate about that might be, “Hey if that appeals to you that you want to be that person who builds that ecosystem and writes that documentation and writes that silly blog post about what it means to do a four loop or whatever, a map reduce in Elixir.” That could be an argument to learn if we get.

[0:23:57.8] SN: Sure.

[0:23:58.2] MN: You could be the trend setter, you could be the first person to have those. I mean I am sure there are questions still in stack overflow but Ruby probably has so many different ways of asking the same question versus –

[0:24:11.3] SN: It’s just that I am going to do stuff in Elixir so there’s going to be less questions obviously.

[0:24:15.3] WJ: That and you can really score some really great stack overflow points by being one of those early adapters who answers that question that then ends up with a thousand dev votes.

[0:24:24.6] SN: There you go, internet points?

[0:24:25.7] MN: Internet points.

[0:24:26.9] SN: You want those internet points for sure.

[0:24:28.2] DA: Always cash them in. Do we have any teach and learns?

[0:24:30.9] MN: Yeah, I have one. Right now I am currently using UI Kit so we’re spinning up a green field application of front end, a front end app and we really didn’t want to deal with installing a grid framework or any boiler plate for CSS. So we are currently using UI Kit. I think it’s 3.0, beta and it’s a lot of fun. I mean to know that someone else took the headache of setting up a grid framework and just making it very easy for me to say like, “I’m going to have this container that has a grid, that will render cards and put them three in a row if it’s in a large break point and two in a row if it’s a small one and one in a row if it’s in mobile.”

[0:25:21.2] DA: Just like CSS framework basically?

[0:25:23.1] MN: Yeah, it’s a CSS framework and it just handles all that for you, it has all the documentation is really good, it’s like, it’s very helpful and it’s very well written, it’s amazing.

I would suggest anyone wanting to use a grid framework without having to – or rather, a CSS framework without having to dive in or deal with boiler plate to use UI Kit.

[0:25:43.6] DA: once this is a part from Bootstrap.

[0:25:46.2] MN: I think part of the reason why we use that kit is because everyone was familiar with bootstraps so I think we’re diving in to figure out what are some of the key differences or similarities. It’s very similar to Bootstrap though.It comes with its own icons and its own grid framework, you know, the whole thing you would get a boot strap, you can also get a new I kit and it’s actually, very well documented as well.

[0:26:07.5] DA: Cool.

[0:26:08.4] SN: You did look into CSS Grid, you want to look into that at all? In the last few, I guess, very recently, there’s like a native grid system in support, all supported browser like modern browsers.

[0:26:20.5] MN: Webkit I believe.

[0:26:21.1] SN: Yeah, well web kit, Firefox, Firefox is amazing support for developing with CSS Grid and it gives you stuff out of the box that lets you make really complicated and beautiful grids without – if you wanted to look at it without any libraries.

This is a really good book by, I forget, I think it’s probably called, CSS Grid. It’s published by a book apart, then it kind of breaks it down really well.

[0:26:41.5] MN: Awesome, learning about that CSS, that’s what I’m doing right now.

[0:26:45.8] DA: Cool.

[0:26:46.6] MN: Steve, how can people reach you on the twitters, I think I don’t, we going to reiterate some of that stuff, you mentioned your Twitter was @_stevennunez.

[0:26:56.1] SN: Right.

[0:26:57.4] MN: Is that correct?

[0:26:57.4] SN: That’s right.

[0:26:57.2] WJ: Tweet it that if you want to see an Elixir or course.

[0:27:02.5] SN: Yeah, holler at me. I also blog at hostiledeveloper.com.

[0:27:06.5] DA: Still intimidated by that.

[0:27:10.7] MN: Sounds good. Let’s keep the conversation going on twitter, follow us now @radiofreerabbit. Like what you hear, give us a five-star review, it helps developers just like you find their way into the rabbit hole and never miss an episode.

Subscribe now, however you listen to your favorite podcast, on behalf of our producer extraordinaire William Jeffries and my amazing co-host Dave Anderson and me, your host Michael Nunez. Thanks for listening to The Rabbit Hole.

Links and Resources:

The Rabbit Hole on Twitter

Steven Nunez on Twitter

Steven's Website




Jose Valim








Flatiron School

Rabbit MQ



Alan Kay




UI Kit



CSS Grid