 So, hi, it's a lot of first times for me today. It's my first AmberConf. It's my first time speaking at an international conference, and it's also my first time here on the West Coast. So, yay. Uh, so my name is Drew. You can find me on 3RS Arcam with a four. As you probably can tell, I'm Italian. Whoa, whoa, whoa. I knew someone wouldn't believe me, so I'll just say something Italian, which is mamma buttalla pasta, which is what you say to your mom when you're hungry, and you want her to cook pasta. So two years ago, I moved to London, UK, and I still live there, so I guess I like it. There's no sun, but I've brought you a picture of our lovely queen, just as a token of friendship. I'm working at a company called AlphaSites, and the engineering team has offices both in London and New York. We're huge Rails and Amber fans, so come talk to me if you want to know more about that. A year ago, I started rock climbing, and this is me on the middle of a wall. Actually, I learned yesterday there's so many rock climbers here, and I think the plan is to go tomorrow after the end of the conference to a gym here in Portland. So if anybody wants to come, just let me know, I'll add you on Slack. So, yeah. So now, I think it's officially business time. So I'm here to tell you guys about the story, and it's the story on how I learned Amber and how I learned to love Amber in the process. So as all good stories, it actually starts a long time ago in a galaxy far, far away, actually, Italy. And I was a PhD student working on this project on packet field train in high speed networks. Yeah, it is boring as it sounds. I was hanging out with some friends of mine who just started a Rails consulting company, and they asked me if I wanted to join, and yeah, since I didn't really like academia that much, I was like, oh, well, sure, sounds fun, why not? Well, little did I know that actually I didn't really know anything about development. So I had sort of formal CSS training, but actually didn't really know what HTML was or JavaScript. I still don't think I know what CSS is, so yeah, there's that. I started learning this language, which is called Ruby. It's my favorite language, it's always been, so I've always been a Rubyist at heart, but apparently you can't really build websites using Ruby, you have to learn framework. So the first framework I learned was Ruby on Rails, and I really liked it, and I think that's something which is extremely common between backend developers to learn Ruby and then learn Rails. And then after you learn Rails, you learn about object-oriented parents, and then you learn about testing, and I think after that you get to a place which is mostly happy. So you're in this kind of paradise of the backend developer where you do what every backend developer loves to do, which is writing clean code, testing your code, writing stuff which just feels good, and so yeah, I was working in this consulting company, I was pretty happy with myself. But then one day came the JavaScript. So as a consulting company, you have to do pretty much everything, so as soon as you have to build something which is a bit fancier, something a bit more interactive, you have to use JavaScript. So I started learning this library which was called jQuery, and I really liked it, and then over the next two years after that, I went through a fair number of JavaScript frameworks, so I've just written down a couple of them now which are Knockout, Backbone.js, Marinette.js, Batman.js, I think it's that now. Angular.js, and even though I learned so many different types of JavaScript frameworks, I really wasn't that happy. It was like nearly not as happy when it was writing JavaScript, so why is that? I think I have to ask for help from Jenny Ive here, and it's something I like to call the Apple effect, which is if you tell three times every year that you're going to revolutionize everything and you're going to change everything, it starts to get harder and harder to be reasonable. So yes, no, actually it was a couple of days ago I went through the Apple website, and this is a couple of the things I found. Sorry. I really like the most powerful four-inch phone ever. That's the new iPhone. And I completely made this up, so. So I think I was pretty deep in this pit of JavaScript disillusionment, so I couldn't really believe that anything could come out in a nice way whenever I was writing JavaScript. But you know, as a back-end developer, you get inside your role, so I'm just writing back-end code. Okay, I know how to write a little bit of JavaScript, but even if I don't like it, and even if I don't do it, it's not the end of the world, because I have my Ruby, I have my object-oriented patterns, I have my tests, so everything is good, right? Well, I thought so. But one day, again, in the company I'm working for, we decided to rewrite a huge part of our Rails app into an Ember app. And at that time, I've never tried Ember before, so I was like, well, you know, I had a little bit of experience with JavaScript, so I wasn't really excited. I think something really close to my expression was this. But then I'm naturally curious, so I started poking around a little bit in the framework, starting writing some little apps. And you know, initially it's like, okay, this feels quite familiar. It has models, it has views, it has controllers. It just feels like everything I already know. Well, 15 minutes later after that, I think it was something like this. You know, all the names were the same, but actually the whole thing was just completely different. So my friends told me to leave this slide. This side was the best of the talk, so I'm just going to linger it for a while. Okay, time to move on. So even though I thought I knew Rails and I thought I knew JavaScript, I didn't really know anything in Ember. So I think one of the best reasons why I wasn't a huge fan of Ember is because it does a lot of different things. And I think in the keynote, Tom and Yehuda spoke about the Unix philosophy, which I think is one of the starting points for every web developer to be a Unix fan. And there's this very famous concept, which is kiss, which stands for keep it simple. Stupid. In the Unix community, which is basically the motto of Unix, which is also in the Zen of Python because they say a simple is better than complicated. The complex. And they also say, write programs, they do one thing and do it well. Also one of my favorite artists put it quite well, I think. So this was pretty much two years ago, and now two years later, I'm here. I actually really love Ember. And I think a couple of months ago, I was just working on a new feature. I just cut myself saying, well, I think I can do this in Ember. I think I can do everything in Ember. So my goal for today, if it's just one thing, is tell you what made me change my mind. I think over the years, as a Rails developer, you build a lot of apps and you value the simplicity of Rails. So you learn this way of programming, this way of writing code, this way of rendering a page, and you think that that is the solution of programming in general. But Google released this app, which is called Gmail. I'm sure you're familiar with it. So if you think as a Rails developer and you think, well, tomorrow I have to rebuild Gmail, how do I do it? And if you think about, like, the normal ways of writing code in Rails, there isn't really a good solution in it, because you're dealing with, this is actually my real emails, please don't take screenshots. Is it recorded? So, well, if you think about it, it's just like a modern application and you can do a lot of stuff. It's very interactive, it gives you a lot of feedback while you're using it. So if you're a Rails developer and you have to rebuild something like this, how do you do it? How do you keep it maintainable and how do you keep it simple at the same time? And the more I was working on Rails, the more I just realized, well, you can't. Some apps are just complex and there is no way of keeping it simple whenever you're writing something like that. Something funny I found is that on the Zen of Python, it says that simple is better than complex, but the sentence immediately after that is complex is better than complicated. And I guess I was lucky to find this framework which is really good for creating ambitious web applications. And I think that this is the only framework which now makes me comfortable in rebuilding Gmail. And matter of fact, a couple of weeks ago, I was just rebuilding our own apps a little bit of things I've seen in Gmail and just worked. So I think the good thing about real apps and ambitious apps is that they solve real problems and reality is full of complexity. So I think whenever you're thinking, well, I need a simple solution to a problem, sometimes a simple solution is not good enough. You need a more complicated solution. Actually, this is a real quote. I did my research. The majority of the experts agree that this is an unborn Einstein's quote. I couldn't come to a real quote, but most of the people seem to agree that this is actually a true quote, which is everything should be made as simple as possible, but not simpler. So I guess the main thing I learned when I was learning Amber is, well, just don't use simplicity as an excuse, or otherwise you're just going to make super simple apps and nobody uses super simple apps. Something I found out at the same time when I was working in Amber is that I figured out what I didn't really like in JS land and it wasn't really the syntax, even though I'm a Ruby at heart, so I like nice looking code. It wasn't handling state, so building a stateful app, yeah, it's tricky at the beginning, but it's not like super hard. It's not handling a sync. You just have to learn how promises work and you can take a couple of days, but then you're good. I think the biggest problem for me when I was learning all those JavaScript frameworks is this sort of mindset, which is what I call revolutionary cost, and I think another really good term is a hype fatigue. There's an awesome talk by Godfrey, which is called an antidote to the hype fatigue and it's one of my favorite talks about Amber. And the basic concept is that you hit a sort of, oh, whoa, whoa, whoa, that was a lot. So you see, you learn about the new technology, you think that this technology is gonna solve everything, it's gonna fix all your problems, and then after a while, after a couple of weeks, you actually use this technology, you realize, not really, it has problems, it doesn't really solve my actual use case perfectly, so you jump on another hype train and you're like, oh, well, that didn't work, but I'm sure that this will work and you try out something else and so on and so on and so on and so on, and the JavaScript board means 15 different frameworks in six months, I think. Last year I was at Barucho, and Matt, which is creator of Ruby, he talked about this syndrome, which is called the second system syndrome, and I think that every web developer has suffered of this syndrome at least once, and you know you're victim of the syndrome whenever you hear yourself saying, well, I think we need to rebuild this system from scratch, it's gonna make it easier to use, faster, more expressive, yeah, we're just gonna skimp a little bit on backwards compatibility, and it's not only us, but it's also huge open source projects per five to per six. I think it finally ended this year, after 10 years, something like that. Python 2 to Python 3, I think there's like 70% of the projects are still in Python 2, after a lot of years that Python 3 was released, and more recently the transition between Angular 1 and Angular 2. So I think it's really, really common to think that you figure out everything and you just need to build a new solution which is gonna fix all the previous problems you've ever met, and I think that if we think in biological terms, we already know what this is about, and in biology we call it intelligent design, and it's basically, I think it's either if you're a human being or a super human being, what you're thinking is, I have the perfect plan, now I just need to build it, and then if we do that, we're good. Luckily in the field of biology, we come to an agreement that there is something better. There's this theory which is called the theory of evolution, which tells us that nature doesn't really work in that way. It doesn't work through continuous revolutions. Something funny I found in the process of researching this is that this is a survey on a response to the statement human beings, as we know them, develop from earlier species of animals. And there's a bunch of countries here and something funny you can see it on the right. My friends told me it's better to live it like this, so I will do that. But it's 40%. Actually, I found this quote which was 100 years before Darwin wrote about the theory of evolution, and it's by Linnaeus. It's a Swedish, natural historian, I think. And he wrote this sentence in Latin. Apparently he used to write Latin all the time by then. And it says nature does not make jumps. And in natural history, like natural biology is just this idea that nature does not operate by big jumps. It operates by little steps. So step by step, millions of millions and millions of little steps, nature evolves. And I think what's cool about amber is that actually we're just doing the same thing. We just call it a different name. And something which I loved really was this quote by Waikats, is that eventually all the good ideas will end up in amber. And I think this is really great because it just tells you that there isn't a new revolution coming out tomorrow which is going to change everything because little by little, step by step, small idea by small idea, everything good will end up in amber. So when I started learning amber two years ago, I was just learning another framework. I was like, okay, I'm just going to pick up this new JavaScript library. I've learned a lot of them. And I think what changed in these two years is that I think there's a lot of good pieces of software living around. So if you want to learn a good framework, there's so many of them, and you can pick them up, and it's just like a new tool. But I think that whenever you're learning something, like a JavaScript framework, you tend to buy into a sort of religion. So I think this is quite common. I'm not sure this code is accurate either. But I think that what I really love about amber now that I've learned it is that it's much more than a frame of working. It's a frame of mind. So there are some things which I really appreciate about amber and, for example, it's having a truly open source process. I don't think there's any other project out there which has something as cool as the RFCs. There isn't another project which is so focused on backwards compatibility that every time there is a new version of Amber, the first thing that happens is that you know what you need to change first. And I don't think I've ever met another community which is so inclusive, and I'm not just talking about the normal sense of inclusion. I'm not sure if you guys have heard this, but Amber Silei Deploy, it was like five different projects at some point, and then all the different five maintainers just spoke, and he said, oh, maybe we should just come up with one solution for deploying Amber. And if you see that, I think it's really, really hard to find another example of that in the current community. So what I want to end up with is I think what really makes me love Amber is this idea of continuous mutation over short-lived revolutions. And I don't think there's anything more important than that. So the final thing I'll end up with is don't be a JS creationist, learn to love Amber. And that's it.