I think this is my best season in the Grand Prix so far, you know. I had a couple of good meetings, you know, also a couple of bad ones, but that one I already forget it. So yeah, I just enjoy being in the Grand Prix part of this series, part of this great atmosphere, you know, I very like it and I very enjoy every moment. So just appreciate it to be part of it. It's been way too inconsistent so far, really all year. So hopefully I can make a strong finish here in Turin and really finish the season on a high. We'll be grand to the Grand Prix! It's better than last year, so I'm really happy about that and just keep my position and try to catch Bartos Marzlik and try to beat him, so that's my plan. Being upside down, I have a couple of very good results and injury and that was a very hard season, but I'm happy we're here and probably the atmosphere will be much warmer. I will try to put 100% of myself and try to finish the season on the top. I think it's been a good season, I've done very good. I won the Warsaw GP and the Cardiff, so that was pretty big and now we're at the end of the season here in Turin and everything is on the line for the first, second and third place and I'll definitely do my best to see how it goes. Rollies has not been too bad. I wish I was a bit closer to the medal chase but I still have a chance so I'm going to go out and give everything I have in the last round and see if I can make up some points on the Gaspers in front of me. It's been an up-and-down year, the last couple of Grand Prixs have been good, making some good points but I really let myself down in the first few Grand Prixs not scoring the points to be in the right position so that's going to be a good Grand Prix in Turin and it's my home track in the league racing and hopefully I can score some good points. No bad season for me. This season is the last round and we'll see what happens.


So perfect blue skies almost no win beautiful sunshine These are in the conditions for the beautiful game the backdrop here picturesque idyllic no doubt one of the best days of the footballing calendar and it has Added to a really jovial happy mood in the stands helping to raise the level of sound by more than a few decibels shirts leave order very much the dress code The question that this is one of the most striking structures in all of sport the Allianz Arena There are plenty looking forward to seeing this a capacity crowd here. Yes, Peter. It's a shame It's only a friendly but then again that may help us see a more expressive attacking contest and I'd be prepared to settle for a clash of lesser intensity in favor of lots of flair skill and Plenty of tricks and a few goals. I suspect I've probably overstretched my my level of greed here As you can see we've already started here Jim you've played in games of this nature. You can make the difference Yeah, Pierre Emerick Obama and Peter. It's his pace. That's his main attribute Especially over those first few yards or he just seems to glide away from defenders Gets himself into great positions and likes to hit it big chance Kettier finds himself offside Hector bearing Hector bearing


The second season of 13 Reasons Why is just around the corner, so let's take a look at what we know so far. Ladies and gentlemen, this is Matt Rogers, and before we start, possible spoiler warnings. Now it's been over a year since season 1 dropped, so if you're in desperate need for a recap, you can check it out here. Now, back a couple of months ago at the end of March, Netflix started a YouTube campaign called Tell Them, where people who were affected by the show told their personal stories of depression and suicide, plus some of the cast members reading viewers' letters. We got the first season in March of last year, so fans were sort of confused that we hadn't heard anything at that point. But even after these few videos, there was still no official promo for season 2. Until last week, that is, when they finally dropped a date amongst a teaser trailer. A camera moving through frozen moments show that Hannah might have a bigger part in this season than I first thought. The ongoing theory was that the show would change focus to Tyler or Alex and leave Hannah's story behind, but at the end we see that Clay has a summons to appear at the inquiry into Hannah's death, and apparently Hannah's tapes were just the beginning. Alongside this, we got a bunch of promo posters. But something caught my eye on the Spanish website for the show. There's a poster of Sherry, which shows a Polaroid of her in jail, which isn't exactly a shock, but it's interesting to see that she was definitely locked up after coming clean about the car accident that killed Jeff. Another promo pic that's a bit of a spoiler was on Netflix Instagram, who posted a brunette Alex looking alive and well listening to presumably Hannah's tapes, or who knows, maybe even a new tape. We also see him in the teaser for the season 2 soundtrack at the beach with Jessica. Obviously a bit of a rekindled romance going on there. Last we saw Alex was in intensive care after a gunshot to the head. Again, not a huge surprise because if he was going to die, then they would have killed him in the final episode instead of leaving him in the hospital. This week they finally dropped the trailer very very close to the release date, only a couple of weeks from the premiere. Now let's break down a couple of shots. Already we can see Hannah and Clay talking, which obviously means Clay's conscience isn't letting him move on, and he is still haunted by her memory. It was interesting to see Mr. Porter slam Bryce against a wall. I guess he's finally taking Hannah's accusation seriously. Clay gets his hands on a gun, which I think we can conclude is to kill Bryce for his injustice against Hannah. And speaking of guns, the theory of Tyler shooting up the school is still in play. Let's take a look at a couple of shots to support it. We see Tyler holding a big black bag with a friend in tow, then fleeing a scene. They aren't exactly dressed for shooting up a school, but maybe they just wanted to avoid suspicion. I feel like this will be a key event in season 2, much like the dark climax that Hannah's suicide was in season 1. School shootings are obviously a sensitive subject at this point in time, but the producers now that they've concentrated on suicide in season 1 might want to draw people's attention to a different issue that they're facing in America, being school shootings for season 2. School shootings are a tricky scene to pull off in the entertainment industry. A dark rendition was in the first season of American Horror Story, which didn't sense a much and was quite confronting. Some part of me thinks that they definitely won't be censoring Tyler's shooting either if it comes to fruition. Now there's been a few official screenshots released showing a court hearing with Hannah's mum making a press statement out the front of the court, as well as an emotional Tony beside his totaled prize possession. Finally, there's been a few Instagram stories, which are posing as the fictional characters' real-life Instagram stories, which already sounds cringy, but you have no idea. We're finally going back to school. You sound more excited than you should. Yeah, I'm thinking we make like a triumphant return. Maybe I break the door down with my cane. My hero. But let me know, what are your theories for season 2? I'll be chatting with you guys in the comments. Now, I'll be posting my review for season 2 a week after the premiere date, so stay tuned for that. But I think we can all agree, let's just hope we get a strong season 2. But thanks so much for hanging out. If you had a good time, then spank that like button. And if you're subscribed during this video, then walk on the board. This is Matt Rogers, and that is all.


So why don't you, why don't each person on the panel introduce yourself? Who you are, what you're doing? Francesco, founder of Erlang Solutions, I've been dabbling with Erlang for a long time now. Oh, okay. I'm Jose Valin, creator of Elixir, co-founder of Plataform Attack. Robert Villing, one of the original creators of Erlang, and our work for Erlang Solutions. I'm Eric Morris Johnson, I'm on the court team, and I created Exo and Hicks. I'm Dave Thomas, I'm a programmer. I'm Chris McCord, I created Enix, and I'm the lead developer at Little Lines. I think we'll start this off by asking what you see as the biggest barrier to adoption for Erlang or Elixir, your choice, whichever one you work with the most.  Good question. Why don't we start with Jose? I don't know. Okay, okay, let's use. Yeah, so. This isn't a clear conference, so let's start with Jose after the floor. Okay. Yeah, so I think we actually talked about those things throughout the conference, which is exactly thinking functionally and thinking concurrently. So for example, today, the Elixir material in particular on the website is mostly a language reference, the intro to our material, and then we go to a defensive guide. There isn't really an intro to tour guide about thinking functionally. The only material I can recall is Introducing Elixir by Simon St. Laurent, and he also wrote Introducing Erlang. He actually wrote Introducing Elixir, and then we got Introducing Elixir, which is really start at the foundation how you need to think about pattern matching and everything and so on, and then builds at some point to concurrency. And I think this is how we, as you said in your talk, right, is how we can push. I think just to add to what Jose was saying, we were translating our Erlang training material to Elixir, and Jose was giving us feedback and his first reaction was, oh, interesting, you're focusing on the concurrency aspect of the language, which is, in our words, what the whole Erlang virtual machine and the beam emulator are all about. Yeah, I'll say it's not running on the JVM. And worst thing. Best thing and worst thing, yes. I think that's seriously a problem. I think a lot of places, the using the JVM in the system and that's what they want to continue using it, seeing it start running on it, it's really not interesting. There are alternatives. There is our JVM, which is our language on the JVM, which I'm guessing would probably run Elixir straight off. It does. It does. Okay, yeah, well, yeah, it does, it does do that. So yeah, there are alternatives, but I think I honestly see that as a real problem. Right, a great package winner, of course. No, but I really think that something that can help the ecosystem grow and flourish can help, of course. I think that's really important right now, now that 8.0 is coming, that we get a good ecosystem and that people start creating things, basically. Yeah. Okay. So I see one of the big problems that the sweet spot for Elixir and Erlang are applications which are non-trivial. And non-trivial doesn't have to mean massive, but it means complicated, highly connected, or whatever else. And the problem with that is it doesn't really lend itself to 12 line examples on a blog post somewhere. And so it's really, really hard to come up with compelling examples to show people the benefits. And that's why talks like the ones we had this afternoon about the game system architecture and Chris's stuff, all of these things are really vitally important because they illustrate how it helps, right? Everybody talks about, oh, it has concurrency and oh, it has immutable whatever and everything. Yeah, but what people really wanna know is how is this gonna help me in my day job? And those things are the kind of things that help people understand that. So the more of those we do, the more use reports, the more sort of blog post videos, everything you do, but not on just like, this is how pattern matching works, but this is how Erlang saved my butt, this is how Elixir made my life happy. Those are the kind of things that we need to see. Chris, two mics. Yeah, so just to, I think Eric said it, I think very much if you build it, they will come atmosphere right now. I think that we have awesome technology and awesome standard library. It's just a matter of building compelling libraries and that's what I'm trying to do with Phoenix. And I think another issue is some people are so outside of the ecosystem that they don't understand what it can actually do. I think what I try to show is like no.connect and showing how easy distributed programming is. I usually like blows people's minds. And I think for me coming outside into Elixir, when I first saw that, it clicked in my head the possibilities, but I think people on the outside don't actually really think the fundamental shift that the ecosystem allows. So if we could address that without saying it's distributor fault tolerant that really doesn't drive home, being able to set up your laptop, someone across from you be able to do node connect and be running code distributedly just with no fanfare. So I think if we could address that to really drive home the benefits somehow with some specific vocabulary or video or blog posts that would be really beneficial. So there have been some comments or blog posts about tension between the Erlang and Elixir communities. Could you give me a take on that? Okay, there have been, well, if you look at it the way I see it, if you look at the online community, there is a small portion of the online community which are pretty negative to Elixir. And some of those are pretty loud. And they're usually loud about everything, right? So they're not allowed specifically about Elixir. If they don't like something they're very loud about it. There's a small portion here which are quite favorable and I'm guessing quite a few of them are here. And there's a large block in the middle which are neither, really. They're not, some might know about it. Some just aren't interested in changing. They're working with, they're happy with what they've got. They're not interested. Do you agree, Francesco? Absolutely, just to add to what Robert said, those who are negative, not necessarily negative, they're critical and they're just as critical towards internal airline libraries and towards other activities, internal people within the airline community are doing. And I think that's sometimes the price you pay when you start growing to a certain amount, you start attracting characters. And looking at some of the blog posts I've read from the Elixir side, I think a lot of it was based on misunderstandings. I think there was a lot of writings about videos on the airline factory not being released immediately and that they were forgotten or filmed on iPhones and other serial stuff. And well, I mean, none of that is correct. There were two tracks which the producers were able to actually process whilst they were filming and release the same day, pretty much. And there were two tracks which we had to process ourselves which took about two weeks to do after the conference and after you've recovered. And same camera teams, and we didn't even tell the camera teams which rooms to pick. You've got so many things when you're running a conference on your mind, telling them to go in and pick one track or the other is the last thing on your mind at these points. And yeah, I mean, that's, so there's no, there's no conspiracy theories behind that. It's just trying to get as much done as possible within possible time frames yet. Of course we're out for them, right? So I'm suggesting, I'm warning, should I say, and Eric, to be very careful when you're out, we've got these exit teams out ready to send you a shutdown signal, right? So, yeah, no, of course not. Sorry. Let's take the first question from the audience. So I think that Elixir is a larger thing than just something that would lend itself to one killer application or one specific purpose. But I think that sort of thing can really help to drive awareness of and adoption of something like DHH's famous 10 minute blog, a video that he did for Rails. I think that really helped propel it forward in a lot of people's minds. And in my mind, one of the big things that Elixir could make more accessible would be concurrency. But I have a hard time thinking of a good example that you could do a short problem or demonstration of it to show concurrency solving or a concurrent processing in a short period of time. Like when I did concurrent processing in one of my classes, we did the model of a fake video store. And I'm not sure if having a 10 minute video of a fake video store or of growing food in fields and having it harvested would have quite the same impact because it's not quite as imminently practical as the 10 minute blog post. Can you think of an example of concurrent processing that might be a good demonstration of that? You should look at having the movie part two. Well, in less than 10 minutes, the demo a chat server which scales to tens of thousands of users. Maybe you said a video store or something like Netflix. All right, thank you. Yeah, I can just one comment to that. I think you're absolutely right. I think every time someone does something serious, the product which is actually being used and the company's happy with it and makes money, it's a benefit. In this case, I'm saying both Verilex here and Alling, in one sense it doesn't make any difference when it's sort of in the same ecosystem. So if you do make something and it's successful and it works and it helps you, tell the world about it, literally. I think all too many times you saw the list of icons I had on my last slide. Most of those companies don't say anything. Now they're not being secretive, they're just not saying anything. They just don't think it's interesting, which means we lose these free ads, right? So yeah, so if you do something, when you do something that's successful, tell the world about it. I think that's a big help. And Dave, do you have something to add? And the next question from the audience. So right now, Phoenix doesn't have a model layer because you want to be flexible, but as far as I know, there's not a good, even a GitHub project to do validation. And so validation is, it doesn't really work with paramension because the whole point of validation is to gather all your errors and present them nicely to the end user. So there's not a good way to do validation. I think there was one library that was, when there are silver records, and the author abused the fake methods that records allow to do validation. And so I don't know if there's a good migration path for having active model-style validations from Rails. Yeah, I think Josie or Eric may be able to answer. I know Ecto has validations now, right? And I know that there's some, I forgot the name of the library now, some kind of valid EX. There is a standalone library that just handles data validation without any kind of model layer that you can just include into your model and it has some nice rules set up for you. So there's definitely a couple options today. Is there anything? I'll echo what Chris said and also what Dave said, in that there are some models that are springing up that do validation much like Active Record did, that I would love to see an approach that didn't mirror the Rails approach to validation. Yeah, so that's what Ecto does. We focused, we actually, I think, borrowed from, was it from a closure library? I think so, yeah. That focused more on composition. You should not be forced to write a macro with a pretty name just because you want to validate something, right? Yeah, so there is something in Ecto and we plan to have to put more sources into Ecto after Alexi will know it's out. So, yeah. Is there any integration with the I-18 sub? The way Rails validation works is all the error messages are actually from the I-18 end. Right, there isn't any right now. It's just a matter of time. We'll get there, yeah. Okay, and does the I-18 end integration in Phoenix now read the YAML files from Rails? So, right. Yes, one question per person. Oh, sorry. Hi there. Apologies if this is a bit of a beginner question, but I just started learning Elixir two days ago. I'm having a good time with it so far. Welcome to the team. Thank you. On the website, a lot is made of Elixir's metaprogramming capabilities and as a Rubyist, that's a big draw for me. What I haven't been able to tell since I'm trying to learn Erlang simultaneously and I haven't quite gotten that far in my studies yet, are Elixir's metaprogramming capabilities the same as Erlang's macros or does Elixir also add metaprogramming capabilities that Erlang itself does not have? Okay, so, no, they are very different. So, you are calling me from Ruby? Ruby and a number of other procedural languages before. This is my first functional language. Okay, awesome. So, yeah, so, Erlang once is closer to templates, right? In the sense. C macros. Yeah, I can say. Stash define and C. Yeah. They're C macros. They're literally modeled on C macros. It's basically, you define a macro and you kind of go get the variables and you just inject in there. In Elixir it's actually different because, so it's closer to least macros because you're actually passing code representation from one place to the other. And that's different from Ruby too because in Ruby, all you do evolving, you do string evaluation, you do class evolve to define functions in the class or you do something like define a method where you rely on the binding. Yeah, so they have three different approaches between them and Elixir is closer to this because it's about, so in my talk, I talk about the code representation, right? So it's interesting because it's not only about code generating code or code replacing code, but it's ultimately about code transforming code. And that's why we can have unless implemented in terms of if because unless you just transform it into a negated if. So that's the general idea. I can just make one question. Okay, no, well Alang has one more and that's a parse transform. Oh yeah, parse transform. Yeah, I'm sure Sam mentioned it. But that's sort of the ultimate because you get the whole module in one go and you can do whatever you want with it and return it with a completely whole module. So it's, you can do anything, but it gives you full power to really kill yourself, right? So from that point of view, Elixir macros are extremely safe. So with Elixir, it's pretty easy to work with Erlang code, you know, just bringing in and running depths and so on. Are there any barriers right now for Erlang projects to use Elixir code? And if there are barriers, is there work being done to make it a, you know, just a complete homogeneous system? Any questions? So today, I think the barriers for someone to use more of Elixir in Erlang is that you need to challenge to compile Elixir code. And so you're most likely, the best way for you to do that is to use Mix. So it's kind of a tough one because you kind of need to change your view tools. But there are some mobile plugins. They don't work as well as Mix because Mix is really smart. It compiles everything in parallel. It's also able to figure out what changed in between compilations to avoid compiling many things. It dumps a graph of your project and can find what changed it in the graph. And the web bar wouldn't have all the things. So that's one. I had, yeah, I had something else, but I forgot. And there are plans to make it better, Eric. Sure. So we have plans for bringing Hex to, right, for bringing Hex. And one way to do that is to bundle both Hex and Mix together so that you don't, so you get Mix without installing, right. You get Mix without installing Elixir. Yeah, exactly. Yeah. Yeah, and then expose. And then expose not only Hex, but some of the Mix tasks as well. So kind of have a subset of Mix running for developers. Yeah, but still need to figure out how you're going to configure Mix because today is very based on Elixir terms and so on. But we are having those discussions back and forth. So we have a follow up real quick. I just wanted to add to this. I mean, what I'd love to see is much more interaction between the two communities, developing frameworks. We're in desperate need of a distributed framework which allows you to go in and start providing different architectural and distributed patterns. And Elixir will need it just as much as the airline world. And I think this is imperative that this kind of interoperability between languages is sorted out in a standard way. And my question was a little bit of a leading question because we've been talking about adoption rate and so on. And if they're between the airline community and the Elixir community, if it was all very easy on either side to mix the match and so on, I think all over we'd get a better adoption rate, so. And my view there is the right way is in OTP you've got the applications which you use to bundle software. And that should be the most basic package with well-defined APIs which could be used then from respective languages. I think that's the right component, the right level in where you start bundling. And just to follow up on that, I think that's a really important education issue on the Elixir side because it's very counterintuitive to think about creating these applications. I mean basically when you see the word application in Elixir, think library. And if you think of it that way, then go forth and start creating these little applications. They're not necessarily things that do something on their own, they're just libraries, yeah. And that's how you can contribute back. Should we say library or components? Because rather, components. Components are a better word, you're absolutely right. Okay. Binary component? Again, doesn't it cross-burning this? Oh yeah, yeah, yeah. There's no problem with that. So that's why getting back to, well, the applications and components, they're a collection, usually a collection of Beam files at that level. That's right, go on. Yeah. Well, that's another problem. That's a higher level problem. How you put, package all these things together, but at the module level, or the Beam level, that they're completely compatible. That's right, go on. Okay, thank you. Sorry. In theory, after you compile, you're golden. You don't need to worry about inter-operation. Yeah, at all. But you need to get to the point until you compile, right? Okay, so this is kind of inspired by the first question that was asked from the audience. And then also something Chris said in his talk, kind of combining the idea of like, what would be a killer, the killer app, the killer feature use case? As opposed to concurrency, something to demonstrate that Chris brought up the internet of things. And I think about killer applications and one of the things that made Rails this big wow moment for a lot of people, particularly me, was that you don't have to worry, active record did the database stuff for you for whatever database you're using, Postgres, SQLite, MySQL, whatever. What would it take to, or is it worthwhile, or is there something we could do to be, like, to have the active record for the internet of things? Like, I can't afford a smart refrigerator, so I don't have one yet, so I don't know what that would take, but what would that mean? Is that a potential use case? Would that demonstrate something worthwhile to people? Well, actually it's funny because when he was doing his talk, I was thinking I got myself a Spark call last week or week before and I'm having a blast playing with it. And when I get home, I'm gonna try to tie it up to one of your channels and have this thing talking in there. The idea of a demo that you had, like half a dozen Spark calls, talking both amongst themselves would also up to servers and somehow communicating or whatever else would be really, really cool. I don't think, my understanding is that we're not yet at the point where everything talks differently and there's no current set of protocols that you could try and map into one thing. But I think we certainly could start looking at, for example, the Sprout people already have a server that when they're, when you want to do a little Sprout call, a Sprout call is like a system on a chip plus a Wi-Fi chip, and it's about the size of my thumb but only about an eighth of an inch thick, right? You plug it in, it goes online and connects up to their server. You can then talk to it just over the web via our rest interface, via their server down to your Sprout call, really cool. But we do the same thing into our own servers using Phoenix, for example. Do PubSub, do event looking, sort of monitor for events, has someone just opened my front door or whatever else. It'd be a real simple demo to put together but I think it'd be pretty compelling.  I just happened to have someone involved and it's going to be all around automated home stuff. So if there's some way to get something together, I think it's in September. I'll send an email or something because I'm really curious what we might be able to provide to those guys.   I don't know if I'm going to sleep for weeks after this conference. Yeah, so just to expand a little bit on the last question. I was talking to Chris actually after I saw Martin's talk. It could be interesting to, it could be interesting to, because in Martin's talk, he was doing explicitly a call to protocol JSON, right? So all this realization details, the word there. And maybe we could treat the client, the browser. I think Joe actually has a project that does that as an learning process. So I can just send the messages to it transparently. And then, startization is taking care of office. It's something I don't need to worry. So in the same way, I'm going to have two earning nodes talking. I don't need to worry about how those things are serialized and so on. We could actually do the same for clients and not sure if it's a good idea or a bad idea, but it's one of the ways to explore this kind of everything connected. So one of the best and worst things about like Ruby and node ecosystems and these things is that you can find packages to do anything. And one of the things I'm curious about is that like we were still a fairly small community and is there a punch list somewhere of like libraries and frameworks of things that we really need? So like for example, earlier we had service discovery and then we chimed in more from the lab saying, yeah, I've got discovery, check this out. Or the work being done on Phoenix, for example, like is there a list of things that we don't have yet that we would like to have like the priority of getting like better GUI toolkits or better numerical stuff or, you know, internet things stuff? Is there a place that we can find that? So the list of things that are missing? And that's mostly, that's basically the question? Or- Not like issue tracking stuff, are you done? Yeah, yeah, yeah. I'm going to use more overall, here's what we want to take over the world. Okay. So I'll ask you in a week. Try it out and then, yeah. Don't see if it will be missing. It's, and yeah, and then you have your list and then we can start working on that. I think maybe, yeah, maybe some of us have some suggestions or some ideas. So Francesco just said something that can do distributed processing, be able I guess to, so Chris also referenced that it's basically all I have, I need to crawl pages, right? How can I do that using eight nodes available to me? Something like that. So that's one. Well, I was just going to say that my, I think we don't have a command economy in libraries here, sorry, components. I think instead, and it's the same with Ruby, the best things came along because someone needed to solve a problem. And I think the same thing is true here.  I think the most important thing is discovery. And if we can settle on Hex, for example, as being the place that things go, possibly maybe add the ability to add, I guess you can do that already, kind of like nascent empty projects to Hex, just to like, you know, put a placeholder to say, hey, I'm working on whatever it might be. And that might be an interesting start. But I think that's, you know, you've got to let the community work it out for itself. Yeah, so yeah, that's what I said today morning, right? I have my own ideas, but what matters is like your ideas, right? Because. And one thing that Elixir has that Ruby never had is I have forgotten or lost count of the number of conversations I've had with Matt about, hey, can we try this as a syntax extension or that or the other? You know, dozens of things I was asking about. And the way Ruby is built, that's really hard to do. And he was very reluctant to make those changes. But here, everybody gets the whole language as a playground and you can pretty much hack what you want to. So it's not just libraries, you can write, it's new syntax.  A very minor follow-on to this along the same time I've been is just, again, as practices, should we be trying to come up with things from scratch or should we be looking towards the airline community and either wrap it or just call it across from airline? Like what is our? So our official recommendation is don't wrap unless there is a really good reason to. So there was a talk about ETS, for example, right? That you need to use the airline module. So, yeah, and that's the plan. We're probably going to continue using the airline model for a while because there is absolutely no reason to wrap. And then, yeah, if there are existing solutions, just go and use that. So for example, I talked about Kung Kua Hor, which is a fantastic tool that is in airline. There's absolutely no reason to re-implement it or something like that. Yeah, and usually they are very open for extensions. So, yeah, so for example, I had some suggestions for the particular tool and I'm very confident that they would be open to those kind of improvements. All right, so, yeah, so if it's in airline, we should try to reuse it as much as possible. And then if it's outside, right, from other communities, then it's a good idea. Let's definitely try and see where that goes. I'm sorry to keep jumping in here, but actually more things keep occurring to me. The other thing I'd say is when it comes to implementing stuff for the community, let's not just implement stuff that like, hey, we need JSON encoding, we need this, we need that. I think coming out to what I was saying on the first day, we have here the ability to start totally green field. We can do anything we want. It doesn't have to be practical out of the gate, right? So if you've got some fantasy about linking all the world's thermostats together into some global, whatever, go for it. It doesn't have to be practical. It doesn't have to be wrapping an airline library or creating something that is gonna be popular out there in the community. I would much rather see a whole bunch of really, really exotic failures that had one raging success in the middle of them than a whole bunch of boring JSON libraries. So my team and I have been working in Elixir for about seven months now, and we've found types, specs, and dialyzer super helpful. It doesn't seem like there's an emphasis on that within the community, and I wanted to get the opinion of the core team about what they think of the future. Yeah, perfect assessment. Yeah, so dialyzer is super useful. A lot of people find it extremely useful, but we've always worried about accessibility in the sense the tools need to be easy to use. I should not feel lost. And there are some projects, so there is one really good one that allows you to run an external project that allows you to run dialyzer tasks with mix and it's probably going to continue as a project for a while because we need to do work on dialyzer because most of the times I get a dialyzer ever and I have no idea what it should do after that. It requires training, maybe it's not the best word, but you get the idea. And the terms there are printed in our link which doesn't help. So if you want to make it first class, we need to have a lexiformity formatting for the terms, come up with how to make the message better and clearer. And sometimes it's an issue intrinsic to type systems. Sometimes it cannot make it, but we can probably have bigger reports, right? Like, oh, you got this error and then it can show some examples or in which occasions those error happens and how you can fix it. So there is a bunch of work to be done there for me to first to consider like, this is super accessible, I'm not going to feel lost, I can navigate for those waters nicely. Yeah, you said if it's to be considered first class, just whether you believe that it is, that it should be first class citizen within the lexical? Yes, exactly. So we can ship with dialyzer tasks out of the box to meet those would be requirements. Just a side note on dialyzer, one of my favorite tag lines from my team is, oh, God, the bees are in my eyes from all the errors and stuff. That's neither here nor there. My question becomes, I'm still pretty fairly big early on new. I've been programming in early on for like seven months now, but we make really heavy use of common test. And I was wondering if there's any plans to bring that into a lexer or expand upon X unit or anything like that. Um, there isn't, there aren't any plans for bringing common test. It would be nice to have discussions on what we are missing from common test or how we, or maybe I've heard other people saying that they would like to use common test with a lexer. So we could try to figure out how to make it possible as an external library, but it would also be really nice to hear what we are missing from common test, test to make X unit go there. Because one of the reasons that we decided early on to go with our own test framework. So Macros was a part of it and having a nice formatting when you get an error and so on. But it was also because of the development cycle. Because if you are depending on a tool from OTP, like a test framework that is really essential and there is like fast iteration cycles at the beginning, it would slow us down, right? Because if there is a bug or if there's an limitation that we need to add, we need to wait for a six months release cycle and so on. So even for the OTP team is fantastic and they're really open to the exchange, to additions and improvements and extensions. It's a slower cycle that we cannot afford at this point. Yeah, I just wanna say the difference, I see it, is that I mean common test is really designed for testing systems. Setting up a system and running tests on a running system, rather than say testing one module or something like this. And I think you should be able to run common test with Elixir, although the output will probably look like Alangra. But I think you can fit around with that if you really want to. It's quite programmable. It might look a little bit funny, but it should work. It's, there are some lackers, but they are extremely trivial. Literally very trivial. So it should actually work. I don't know if you've actually tested it, but I think it should work. It works. It works, yeah. Is it open source? Do it. Have you done anything special? A special interface, just running it straight off. Yeah, the module games would look funny, but that's about it, right, I think. Awesome. All right, super important question. In the Ruby community, Gorbipuff's kind of the unofficial mascot. I was wondering if we could make Moose, the unofficial mascot of Elixir. It's already finished. You'd have to ask him. He seems rather indifferent right now. Well played, sir. So this is a question from the internet. TrueDroid, Lexi Sholuk, who really wanted to be here. Very nice for going to the internet for questions. Yeah, yeah, yeah. He wants to know what the panelists think of validating options like passing a keyword list or property list. Is it a good style to raise on bad options? I think, I say yes, because I actually got bitten just yesterday by calling a standard library and I misspelled one of the options and it took me forever to discover what I'd done wrong. So I think there are definitely times to do that. And I think it also goes along with the idea is, okay, so right now we're passing in keyword lists, right? But imagine instead we're passing in maps. Well, then I would get the checking. So, that's an implementation issue, right? Why, you know, it's both dicts, so maybe I should have the checking with the other side. It's still a subset thing. If it was type of key, we still aren't going to find it. You match on the subset of the map. So, the only way to do it would be to say, this thing should only have those keys and not anything else. So, fetch bank, just say the key is there, but if, yeah, so fetch bank, it's, yeah, but not all options may be required. The issue is that there is an option which is optional and yeah, you just mistype it and it doesn't work. It's, maybe there's just room for one extra function in dict, which would be make sure there's nothing in here apart from the following. Yeah, take call or something like that, yeah. Designed by internet, that has to be the first. Oh, there's just a question down here. Yeah. Yeah, so assert valid keys with check, just those keys exists and nothing else. Yeah, yeah, good. So, the first thing that I thought when I came to Luxor was syntax was nice and the second thing I thought was, what's a cool thing that I could do with this? I know Dave, you mentioned there's no real easy problem that utilizes extreme concurrency and massive scalability, but I was wondering, I mean, Phoenix looks like a great opportunity to do something cool right off the bat. Do you guys have like a personal thing that you've done that's kind of noteworthy and worthy of bragging about? I've heard you help your telephone switches and stuff like that, Robert. Yeah, that was a long time ago. We're all just modest. They got nothing, he's done some panel, maybe he should go get a book. Okay, so. One second, can we extend the previous question to the audience? A chat server. A chat server. Who's got something better than chat server? No, road will be judgmental. No, that's not how it works. This is an arms race and we've got to raise the bar. Chat server's great, let's get better. Yes. Community-driven tutorial site actually written at a lecture conference. That's pretty cool. Other ideas from the audience? Yeah, it's back here. Okay, that's awesome. Telephone system, yes. Oh, you copied that from Dave. Fibonacci sequence, yeah. Bruce, I was gonna take one. Wasn't anything crazy, it was just a simple OTP app but what I run for my Elixir workshops is I call it a distributed tweet aggregator where I have all the attendees connect up on a cluster and my projector node globally registers itself as the aggregator and then all the clients spin up a Twitter client, ask my aggregator node for my Twitter, personal Twitter off key and token and then they fetch Twitter search results and send it to the projector and the projector displays the results. So it's a really, not an insane app but it's a really easy way to show the benefits to newcomers about how we can run on a cluster. So that's been a fun thing that I've been able to do. Anybody else got one from the audience? All right. So my question is now that I actually have two people who actually implement languages, like I'm gonna draw from the back story like CoffeeScript and JavaScript. Like all the CoffeeScript had like a lot of great ideas to improve the syntax of JavaScript that at the end that they got implemented. Is there something like that for Erlang like version 18, 19 will have some syntax trigger that Elixir has? I very much doubt it. So yeah. So one thing and it was actually really nice to see it that it's going to come with Erlang, the next Erlang version, the 18th is that, so today when you're defining supervision trees in Erlang is a bunch of tuples and you need to define everything. And now on Erlang, the next Erlang version, they're planning for two pass maps and you don't actually, so the maps already help because when you have a tuple, you don't have the name of the fields. So have like one and five, but you have no idea what they actually mean. So having the fields help and they're also going to have the full values for some of those things. And that's something that we are doing already for a while, which was cool to see and the discussion on the main list when they were proposing this feature is exactly to make it more accessible. So yeah, that was cool. Okay, I got a question. Can you hear me? So I'm just thinking out loud here. I'm not sure we're going to get serious adoption until we get like reactive programming in Elixir. I think Robert wants to take that on. I won't say anything, I think it's best. Okay, yeah, there was this reactive programming manifesto. Okay, so now everyone will know. And in principle, I thought the text was okay. What annoyed me was, what really annoyed me was it was presenting reactive programming something new, something new and innovative. And okay, for the other point of view, we've been doing it for over 20 years and we definitely weren't the first. If anyone's ever written anything for a processor using interrupts, you're doing reactive programming, right? And that's from the 70s. So that really annoyed me. That's the reason why I didn't ever sign it. So no, she didn't know it was that. No, no, what a question. So I was just, wait, wait, wait. I actually want to discuss on that because there is that, right? And there is functional reactive programming which is slightly there, but not really. And this conversation is happening because reactive is now both word, right? Yeah. So what should we do? Because there is one option which is, you know, yeah, but there is one option to say, you know, this is okay. It's good to know that everyone is speaking about reactive now and look, here's how we actually do reactive properly, right? And it goes to your talk and to Francesco talks, like you need to have a dedicated channel for error handling. Error handling is a very important part of writing reactive code. And then we can at least go on the waves. I tend to get allergies when, you know, when people try to be buzzword compliance. It's, you know, the way it used to be with Corba and everything else, you know, back in the mid 90s. But I think, well, if they ask, just say yes. Elixir is reactive and it has always been and always will be, you know. Yeah, great answer. So, I just want to, yes, I'm all for reactive programming, right? Reactive systems, that's it. If you really look at it, literally every system is reactive. It's just that whether you want to call it that or how it looks, but in principle, everything's reactive, right? But just a little step further, I think we could actually lead in a kind of less dramatic way than going the whole, you know, Francesco route in terms of right now, we don't really do clever things with streams. And I think that we could start looking at using streams as a serialization method for otherwise temporal events and creating reactive code that way.  We just don't, we're not currently, you know, really pursuing that actively. I mean, we can, what you'll discover is that it's, you'll throw something together in 10, 15 lines of code, you know, versus other technologies where you really need applications and frameworks to deal with it. So that's why, you know, we've been dealing with streams in the airline world. Oh yeah, yeah. But we just, never occurred or agents, and you know, you'll throw together an agent with 20, 30 lines of code.  It's just, there's actually a big difference, I think, between having the ability to do something and having the intent to do it. So, giving something a name is more than just marketing. It actually helps you think about it and helps you partition your system when you're designing it. So say, for example, we said, okay, we had a kind of stream, which is a quote, reactive stream. And that allowed us to do things like zip between different event streams and all this kind of stuff. And then say we could make it distributed same way that Jose was saying between browsers and, or sorry, between clients and servers. And then say it was supported by Phoenix, right? Now start thinking about the cool stuff you could do, right?  We could do it in Assembler as well. What I'm saying is we need, so I was just anticipating Robert here, but yeah. Yeah, yeah, of course you can do it now. Of course you can do it now. In the same way that you could have written a web framework in Ruby now.  You're all just slackers. And it's the same thing here, right? You know, all you need is a set of conventions and that's what I suppose we could do. Well, there's two things, right? One is the technology and one is the marketing associated with the technology. And the marketing associated with the technology has value. When we can attach words and techniques, they're idioms and the idioms are the things that we need to process and build bigger ideas. They're like macros for the brain. And I think from that perspective, I totally agree with Robert that Erlang has been reactive before reactive was reactive and that the manifesto is, you know, a little bit of smoke in some ways. In other ways, building that idiom would be tremendously valuable for both ecosystems right now. So I'm not sure what this says, but you know, that whole question has been a joke. And we just had a 10 minute serious conversation. So it's the way you tell them. So the real question or maybe you guys have already thought about this, but go back to Erlang and Elixir and the module or package manager, what do you want to call it? And I'm just kind of thinking here about, you know, if we build, if we take Hex and Hex actually works to build Erlang, right? Erlang only. So if I have an Erlang dev, fine. I have, you know, I understand, I may have to install an extra application that I never use to manage my package and build my libraries and stuff. You know, I eat, in this case, Elixir. But you know, if it's nice and easy for Erlang people and they can build completely, you know, kick butt, you know, Erlang packages or applications, and it works the same for Elixir people, and it might be a good bridging tool. And now if you did that though, you know, I heard you guys talking, you may want to include this inside Elixir, right? So really all I need is Elixir. I've got my package manager in there, but it works just for Erlang. I don't have to use, I don't have to generate Elixir code. Yeah, so that's what is on the roadmap for Hacks, how we can integrate better with the Erlang ecosystem. Not only Erlang was talking to Duncan about Elixir 2 and how we can integrate that with other languages. So yeah, there's a little bit of back and forth and still until we figure out, should say a little bit of tinkering till we figure out what is the best way to do that, to avoid code duplication and everything that comes with it. We also don't want to, so usability should go both ways because today's a very, there's a bit really good from the Elixir side, but you know, we don't have bad usability from the Erlang side, right? It should have good usability too on everything. On the API you use to configure it, on their home messages, so you're working on it and we'll see. Have you guys thought about, with a system like CompileNFs automatically for various architectures, kind of like RubyGems does, or is it totally beyond the scope of what we're currently? Yeah, so today is just like, you compile Bing and that's it. You don't need to worry about anything platform dependent really. For NFs, right? Yes, yes. But there are NFs and we actually had a plan, so one of the Google Summer of Code students for this year, his plan was to improve the window support and eventually to get to the point where we have NFs and have compilation in between different platforms, but we never got to it because it started working on the Windows installer, which is more important to have a good workflow and installation on Windows. Francesco has been doing a similar work from the other side, right? Have a good other installers as well for Windows and Mac, Ubuntu, Debian and so on. Yeah, so we, yeah, it was postponed. So that's about wraps it up, we're out of time, and does the panel have any, you guys wanna make a closing comment in each of you guys? Definitely, thank you for organizing, Alexi Comf. Thanks, it has been fantastic. Thanks everyone for coming. It's really amazing to see everyone here. I know that everyone here is responsible for the language growth in many different ways, right? Or is it the language, or it's the documentation, or is the community where we live? So yeah, it has been two excellent days. Okay. All right, well thank you everybody. Thanks for. Yeah, I just wanna say one thing. For all of you people who are tired of syntax and love parentheses, there is LFV, right? People can't do that. We can translate it to anything, right? And that concludes the comment.


This talk on mathematical representation theory will be about induced representations mostly of finite groups. So mainly be defining what an induced representation is and then giving an example of one. So, suppose we have a homomorphism of groups from h to g, then if we've got a representation of g, in other words a vector space acted on by g, it's pretty obvious how to get a representation of h from it because you can just restrict the action of g to the action of h, even if the map from h to g isn't injective. And we've got the problem. Can we find a sort of opposite map? Can we go from a representation of h to a representation of g in some natural way? Now, it's not going to be an inverse of this map here. Inverses don't really quite make sense. Instead, it's something called an adjoint. So the answer is yes. We take an adjoint map of this restriction map. So we can call this this map here restriction and there are actually two different sorts of adjoints. There can be a left adjoint or a right adjoint. So I'll explain what these are. And these actually give us in general two slightly different concepts of induced modules. And easy way to see this is actually to sort of forget about the fact we're working with groups for the moment and look at a homomorphism of the corresponding rings. So we're going to take the the group ring of h. We may as well take it over the complex numbers and the group ring of g. So we've got a homomorphism from the group ring of h to the group ring of g. And if v is a module over s, we can restrict it to a module over r just by defining the r action using the homomorphism from r to s. So we've got a restriction map here. Now if we've got a module of w over r, there are two natural ways to turn it into a module over s. First of all, we can take hom over r of s to w and we can make this into an s module using the action of s on itself by right multiplication. On the other hand, we can take w and we can map it to s tensor over r with w. So this will now be an s module because s can act on this bit. Now this map here is a left adjoint. So what does left adjoint mean? Well, it means that if you've got a map of r modules from w to v, it's more or less the same as a map of s modules from s tensor over r w to v. That's essentially the the meaning of an adjoint, although the exact definition is a slightly more fussy. On the other hand, this is a right, this one here is a right adjoint. What this means is that maps of r modules from v to w are the same as maps of s modules from w to this thing here. And in fact, these properties define these objects here up to canonical isomorphism, they turn out to be given by by the these expressions I've written down. So if we take, if you remember, r is really a group algebra and so is s, we see that we have two ways to turn an h module into a g module. We can take c of g tensor over c of h of w, or we can take h over c of h c of g to w. And these are called induced representations. The problem is they're not actually the same and the term induced representation is in general a little bit ambiguous because there are two possible different things it can mean. And for this reason, some people will call this one a produced representation. So I think produced representation usually refers to this induced representation in turns out to refer to either of these. Well, the ambiguity doesn't really matter if you're doing representations of finite groups such that h is a subgroup of g. So if h is a subgroup of g and if g is finite, or more generally if g over h is finite, then c of g is a finitely generated free c of h module. And this makes everything particularly easy. In fact, if c of g is a finitely generated c of h module, then these two modules are actually chronically isomorphic. So for finitely generated so for finite groups where h is a subgroup of g, there's only one concept of induced representation, which can be defined in either of these two ways. Furthermore, it behaves particularly well because left adjoints are always right exact. I'll explain, remind you what this is in a moment and right adjoints always left exact. So if the right adjoint is equal to the left adjoint, then it's right and left exact and so it's exact. So in this particular case, not only are these the same, but they're both exact, meaning they preserve exact sequences. So for finite groups, we don't need to worry about this ambiguity. So for most of the time, I'm going to be just talking about representation of finite groups, but before doing that, I'll just show you what can go wrong if h is not a subgroup of g or not isomorphic to a subgroup of g. Well, in that case, things get rather more complicated. Let's look at the simplest possible example. We just take the group of order 2 back into the group of order 1. So this is going to be h and this is going to be g. And then we've got two ways of mapping modules over h to modules over g. We can either take w to cg tensor over c of hw, which essentially takes w to w modulo 1 minus sigma of w. Here sigma is going to be one of the two elements of z modulo 2z. So we're going to take sigma as a generator of order 2 of this group here. On the other hand, we have the map taking w to home over c of h to c of g to w. And this takes w to the fixed points under sigma. And these are different and they're not necessarily exact. And you can see this fairly easily if you just look at the following exact sequence of h modules. Here I'm going to let sigma act as minus 1 on these two modules here. And this is going to be multiplication by 2. And now if I look at the modules, w goes to cg tensor over c of hw. I get the following sequence. I get z over 2z goes to z over 2z goes to z over 2z goes to 0. And this is multiplication by 2 and it's not injective. So this form of induction doesn't preserve exactness. On the other hand, if I take w to the fixed points, this sequence now becomes nought goes to nought goes to nought goes to z over 2z. And you see this is not on 2. So if h is not a subgroup of g, things get a lot more complicated. The two sorts of induction become different and they need not be exact. What you get instead is homology and cohomology of groups. If we take g to be the trivial group, you can take derived functions of this and these are called homology of h and you can take derived functions of this and that's called cohomology of h. So cohomology and homology of groups and induced representations are really both special cases of the same construction. Anyway, what we're going to do for the rest of the talk is forget about the case when h is not a subgroup of g and just look at the case when h is a subgroup of g. So we're now going to suppose h is a subgroup of g and we're going to suppose g is finite. If g isn't finite, then again things become rather complicated. So in this case, we have an induced representation from h to g of w can be identified as either z of c of g tensor over c of h of w or as hom over c of h from c of g to w. So we don't need to worry about the different sorts of induced representation and these are both exact so everything's very nice. And the first question we want to ask is suppose w is a representation of h with character chi. So you remember the character of a representation is given by chi of g is just the trace of g on w and we saw earlier that if you've got a representation at least a complex representation is determined by its character. So we can ask what is the character of the induced representation of g and this is fairly easy to work out. Since h is a subgroup of g, we just have to look at c of g tensor over c of h of w and this is just equal to sum of chi of v where chi are the elements of g modulo h. So I think these are left coset representatives. Although I must admit I always get left cosets and right cosets muddled up so they might maybe they're right coset representatives I don't know. And we want to work out the trace of g on this. Well what will happen is that in general an element g might permute a few of these and if it maps one of these g i of v's to a different g j of v then it gives no contribution to the trace. So the contributions to the trace are nonzero if g g i of v is equal to g i of v and then we get the trace of g i to minus one g g i on v as a contribution to the trace of g on that. So the trace of g on sum of g i of v is just equal to sum over all the g i's of the trace of g i to minus one g g i on w. I guess I seem to have changed w to v at some point so let's just change everything to a v. So this is over the sum of the g i such that g i to the minus one g g i is in the group h. If it isn't then we sort of think we just take this term to be zero. So you can draw a picture of the character as follows. Suppose we draw the group g think of g as being a group like this and inside g are going to be um we're going to have a subgroup h and then we might have various conjugates of h so this might be g i to the minus one h g i and then the character of h you can think of is going to be some sort of function on h and what we do to get the character of of the induced representation is we just take this function and copy it to all the conjugates of h and then we add those ops so you can think of the the character of induced representations pictorially as being just taking a sum of all conjugates of the character of the original representation. This will probably become clear if I do an actual example so let's just take g to be the group s3 so let's draw a picture of the group of um s3 of order six so it's got six elements one two three one three two one two two three three one and one and now we can take a subgroup h like this so here's my subgroup h and i'm going to take a character of h and i'm going to take my character of h to be one on the element one and minus one on the element three one and now what i do is i take all the conjugates of h under g so it's got three conjugates which which look like this and like this and i just take the character on h and just sort of conjugate it to all these three conjugates so get minus one one there and minus one one there and i should of course add these all up so the character of the induced representation is three on the identity element and minus one on these three elements so let's recall the character table of s3 well it's got three conjugacy classes one one two and one two three and you remember we worked out the characters of this earlier it's got three characters um who's given like this so here's the character table and now we've got an induced character which looks like three on the identity element and it's minus one of these elements and it's not here and you can see this is two zero minus one plus um one minus one one so the induced representation is a sum of uh these two representations of the of the of the symmetric group s3 um generally um it's if you try doing calculations with representations algebraically using this formula um it's it's rather confusing and hard to see what's going on um what you should do is think of the character of induced representation geometrically it's just taking a character of h and just conjugating it and adding these up and if you do that it's usually much easier to work at what the induced representation is there's one um trivial but very important example of an induced representation here we just take h to be the subgroup of g consisting of the um trivial subgroup with just one element and now if we take v to be the one dimensional representation of h we can ask what is the induced representation from h to g of of v well that's easy to work out if you do it pictorially you just take h to be the um subgroup with just one element and the representation just as character one on h and now we take the sum over all conjugates of h over all um coset representatives g over h well there um there's one of these for each element of g and each conjugate is again going to be this trivial one-dimensional representation of h so what we do is we get a sum of um g copies of the trivial representation of h so the induced representation its character is equal um the character of an element of g is equal to the order of g if g is equal to one and not if g is not equal to one and you see this is just the character of the regular representation of g which is just the action of g on the group ring c of g so next lecture i'll be showing how to use induced representations to prove a famous theorem of Frobenius which says that if you've got a Frobenius group then it has a kernel you remember a Frobenius group is a permutation group such that um no non-trivial element fixes more than one element


فشرف بالاشتغالي بالعلم ولا تبغي به ما عشت يا بدا بدا وياله من شراف عظيم ان شاء الله تعالى ودز أهل السنة والجماعة دفاعي الإيمان أز أهل السنة والجماعة بليف أن الإيمان اعتقاد بالقلبي أهل السنة والجماعة بليف that إيمان is إعتقاد بالقلبي a belief in the heart a belief in the heart وقول باللساني and statement on the tongue وعمل بالجوارح and actions on the limb أهل السنة والجماعة دفاعي بليف ولذلك إيمان محمد رحمه الله ودري سين إيمان محمد إيمان قولوا وعملوا ويزيدوا وينقصوا إيمان is speech and its actions it increases and it decreases الإيمان أبو عثمان إسماعي للصابوني in his عقيدة بك عقيدة السلف وأصحاب الحديث he said ومن مدهبي أهل الحديث from the methodology of the people of the people of the Sunnah and the Jamaah الحديث here is the synonym of the people of the Sunnah and the Jamaah أن الإيمان is what قولوا وعملوا ومعرفة then إيمان is what قولوا and speech وعملوا and actions ومعرفة تون and it is knowing يزيدوا بطاعه it increases with obedience وينقصوا بالمعصية and it also decreases with sinning this definition that I just gave is the statement of سلف الصالح the statement of the pious predecessors من الصحابة والتابعين ومن صار على طريقي من العلماء وحققين اللي مدهبي سلف this is the path of the Sahabahs the path of the Tabe'een and anyone who has treaded on their path رادة إجماعات and consensus have been brought that this is the view of Ahl-Shumma that this is their belief it is Ijmaa there is no dispute about it وذلك إمام الشافعي he said as أبو قاسم هبة الله اللالك إيو mentions in his kitab شرح أصول إعتقادها لسولة والجماع he mentions in the fifth volume page 886 to 887 that he said وكان الإجماع من الصحابة والتابعين من بعدهم من من أدركنا أن الإيمان قول وعمل ونية لا يجزي واحد من الثلاثة عن الآخرين ذلك شافعي رحمه الله he said وكان الإجماع the consensus was and this is Ahl-Shumma's consensus and it is their consensus من الصحابة from the companions والتابعين and from the Tabe'een meaning the students of the companions من بعدهم after them من من أدركنا that which we have met so شافعي is saying this is the belief of the صحابة this is the belief of the what this is the belief of the companions and it is also the belief of the students of the companions and شافعي is saying and those who we have met those who we met from the إيمة of the Sunnah أن الإيمان قول وعمل ونية that the iman is قول عمل قول means speech عمل here means action ونية here means what it means intention لا يجزي واحد من الثلاثة على الآخر that one does not يجزي here means جزاء from the other meaning one cannot replace the other الإيمام البقاري سد لقيت أكثر من ألف رجل من أهل العلم أهل الأهل الحجاز ومكة والمدينة والكوفة والبصرة وواسط وبغداد والشام ومصر لقيتهم كررات قرن بعد قرن ثم قرن بعد قرن فما رأيت واحد لهم يختلف في هذه الأشياء أن الدين قول وعمل بقاري سد رحمه الله وقاسه مهبة الله ويعتقده سولة والجماعة وقصة 173 to 174 وقاري سد أردت أحدين من الناس بالمدينة أردت أحدهم أردت أحدهم من حجاز أردت أحدهم في مكة أردت أحدهم في مدينة أردت أحدهم في كوفة أردت أحدهم بصرة أردت أحدهم في وواسط أمأد من شام ، أمأد من مصمصة إيجد ، أمأد من لا أحد ، لقيتهم كررات مرحباً قرن بعد قرن after generation ، ثم قرن بعد قرن after generation قرن بعد قرن after generation I made them take while all of them believe فما رأيتوا واحد منهم يختلفوا I have not found one of them differ in the concept of what أن الدينة قولوا وعملوا that the religion is what speech and action so this is a consent إجماع أهل سونة never differ upon so I call it إيمان is a component of what brothers it's a component of three things three powerful points the first one is which is the what the belief of the heart وقولوا اللي سعي and the speech of the tongue وعملوا الجوارحي and the actions of the limb وعن هذه الأجزاء ثلاثة these three which is وقولوا اللي سعي وعملوا الجوارحي these three there are branches that stem from it the branches that come from each one ابن القيم also says إن العمودية تساورت شود منقسمة it is categorized and divided على القلب واللسان والجوارح it's categorized into these three the heart, the tongue and the limbs you see وعلى كل منها عمودية تخصو each one has a servitude عمودية that is specific to it so every truth is connected to all those three now that we've mentioned the definition and we've mentioned the meaning of إيمان and the reality of إيمان أقول إلى أهل السنة والجماعة and we've mentioned that this is a what what did you say this is جماعة two scholars of أهل السنة did not differ upon this particular issue إجماعة who is ناقل الإجماعة who transmitted the consent الإمام الشافعي and the second one is الإمام البخاري they both transmitted the consent for us so based on that statement and based on those statements of the self there are too much they can't be counted أهل السنة والجماعة they believe أن الإيمان يتبعظوا that the إيمان is not one component they believe that the إيمان is what يتبعظ ما معنى يتبعظ that the إيمان can be broken and the sunnah believe that in other words what does that mean it means some of your إيمان can go and some can be left and the sunnah told جماعة باليديس that the إيمان يتبعظ فيذهبوا بعضو some of your إيمان can go so it means some of the branches of the إيمان goes but that doesn't mean that all of your إيمان is gone are you with me brothers وليدانيك الشيخ وليسام إبنو تيميس says رحيمه الله وتعالى وعصلهم their foundation whose foundation is it talking about أهل السنة والجماعة أهل السنة والجماعة's foundation is meaning this is this is the fundamental dispute amongst أهل السنة والجماعة all of the groups if you learn this you will be saved from what falling into any of the what the deviated groups and the two groups right the first group are known as the مرجع and the next group are called وعدية وعدية are two groups the معتزلة and the حوارج the first ones are the مرجع and the other ones are the وعدية meaning the معتزلة and the حوارج on one side you won't fall into what they fell into you will be saved from it that's if you learn this foundation أهل السنة what's this foundation brothers أن الإيمان يتبعض إبلو تيمي says وأصلهم أي أهل السنة والجماعة أن الإيمان يتبعض أصل أن أهل السنة والجماعة على رب هون is that the إيمان يتبعض it parts فيدهموا بعضوه ويبقى بعضوه some of it can go and some of it remains and then he says كما في قولي صلى الله عليه وسلم as it's in the statement of the prophet عليه الصلاة والسلام يخرج من الناري that a people be taken out of the hellfire من كان في قلبه مثقال وذرطه من إيمان a people who there is in their heart a musted seed of belief إيمان أهل السنة والجماعة believe that these people were put into the hellfire because some of the branches of Eman was missing from them but the other part was there are you with me brothers ولي هادع مدهبهم and because of that أهل السنة مدهب is أن الإيمان يتفاضل ويتبع with the Eman of levels my Eman and the Eman of the prophet عليه الصلاة والسلام and the companions is not the same and this is to show that the Eman يتفاضل ويتبع and he goes وهذا مدهب وشافعي وأحمد وغيرهم this is the madhab of these ألماء good so what did we learn that the Eman is what قولون وعملون that the Eman is called عمل some of the scholars they say اعتقاد but some of them say قولون وعمل the ones who say اعتقاد is in what it's in both it's in both because they believe there's a hole in the heart and there's a hole in the heart there's a hole in the heart and there's a hole in the heart and there's a hole in the heart it's just basically dividing into more or just summarizing into two so those who say المان وقولون وعملون ونية واعتقادون and those who say المان وقولون وعملون they've brought everything together they've brought it all together so based on what we learned the first point was المان وقولون وعملون we also learned according to اهل السنة والجماعة that the Eman is what يتبعض فيدهبوا بعضه ويبقى بعضه some of it goes and some of it remains the third point I want you guys to know is the branches of Eman Eman is not one branch we know that right the branches of an Eman is not one level صح هي متفاوتة the branches of an Eman are different levels those branches of Eman is all mentioned in one Hadith the branches of an Eman and the branches of an Eman yeah is three that every act of Eman or speech of Eman or belief of Eman will fall under one of these three the first one is a foundation a foundation it's an asal that if this asal goes then your Eman totally goes it's called the foundation of your Eman the second branch is it's called كماله الواجب كماله الواجب here means the obligatory branch of Eman the first one is the foundational branch of the Eman the second one is what the obligatory branch of Eman the third one is كماله المستحب it means the recommended the voluntary branch of Eman and all three of them are found in the Hadith of the Prophet صلى الله عليه وسلم بضعن و ستونة علاها قول لا إله إلا الله the highest of the branches is لا إله إلا الله this is what asal is Eman that's the asal of Eman و أدناها إماطة الأذى عن الطريق and the second one that the Prophet mentioned is what moving harm moving harmful things from the path, from the road this is what it was the third type I mentioned كماله المستحب the voluntary والحياء من الإيماني والحياء شربة من الإيماني and that shyness is a branch of Eman and this is what this is wajib shyness is wajib so we have the three branches there who categorized it علي صلى الله عليه وسلم so the Eman are according to Ali, Sunati and Jama'a based on that Hadith is that it's three branches what is it asal that if this asal goes you are no longer a believer and you leave the fold of an Islam you are a disbeliever there's a branch that if you leave you are a believer but you're in a serious situation the third one is the third one is voluntary this does not cause this what does not cause you to leave the religion nor does it cause but it only makes you lose the completeness of the Eman the Eman is not full 100% the voluntary makes your Eman 100% الله also categorized those three people in the Quran فمنهم ظالم للنفسه ومنهم مقتصد ومنهم سابق بالخيرات بإذن الله what are the three levels there's one who oppresses himself this one is what is one who has come with what this one has what أصل الإيمان is there what's there for him أصل الإيمان is there for him because all three of them الله promised us he's going to take them to Jannah so he's got أصل الإيمان but he's missing كماله الواجب is missing from him are you there the second one is what ومنهم مقتصد مقتصد means what the one who has come with أصل الإيمان كماله الواجب but what's missing from him is كماله المستحب and then the prophet told us ومنهم سابق بالخيراته بإذن الله سابق بالخيراته the one who has come with أصل الإيمان is there for him كماله الواجب is there for him and كماله المستحب is also there he's higher up the rank so all of those three branches that I just mentioned here are you there brothers are we all together are we all together this is where the the real discussion starts now so far what I'm saying is it making sense to you brothers yeah no right now let me read the statement of ابن القيم for you ابن القيم says ابن القيم has a كتاب الصلاة وحكم تاريقها the book of salah and the one who abandons the prayer he says وهذه الشعب منها ما يزول إيمان بزوالها كشعبة الشهادة ومنها ما لا يزول بزوالها كترك إماطة الأذى على الطريق وبينهما شعب متفاوت تعظيم ويكون إليها أقربا ومنها ما يلحق بشعبة إماطة الأذى ويكون إليها أقربا ابن القيم says there are branches in iman these branches he says منها ما يزول الإيمان from those branches there are some branches things that if you do what happens يزول الإيمان your iman will remove and it will go إيمان يزول إيمان you are no longer a believer كشعبة الشهادة like the branch of shahada what's this one this is the asal of your iman this is the asal of your iman what happens you are no longer a believer you know what if a person leaves off ونطق بالشهادة the utterance of the shahadate and he doesn't say it is he a believer he is not a believer okay so if a person comes with something that a person can remove his shahadate ومنها and from it is ما لا يزول بزوالها and there is also some branches that your iman will not fully go كتمك إماطة الأذى like if a person leaves off removing harm from the street صح what happens here if you see a harm on the street a glass and you walk by it what have you just lost as a branch of iman what branch is missing here the voluntary you are missing that this is what ibn al qayyim اهل السنة والجماعة they differed within themselves now what is they agreed that the iman is categorizing to us كماله الواجب كماله مستحب they didn't differ within themselves but they differed within themselves what is part of us of iman and what isn't meaning in other words what can we take a person out of leaving islam are you there brothers are we all together they all unanimously agreed upon they leave him off the shahada is kufr Akbar they differed within themselves اهل السنة they differed within themselves on the salah is the salah part of uslul iman if a person leaves they become the kafir or should we add it to كماله الواجب that's their discussion are we all together brothers rather اهل السنة والجماعة had even bigger difference on that they even said the four pillars of islam after the shahada the four other pillars salah, zakat, soman, hajj تكفير of them has come from some of them such as who إمامه أحمد إمامه أحمد would make تكفير on a person if he left them fasting they would make تكفير of the person if they left hajj زكات this is called المباني والاربع are you there brothers brothers pay attention to this اهل السنة والجماعة when it came to uslul iman what did they do takfir on leaving even the four pillars of islam because the shahada that's agreed upon the other four pillars remaining they differed within themselves whether it should be added to uslul iman and this is a khilaf that it is within اهل السنة والجماعة are we all together yes or no does that make sense brothers okay I want this point to be very well understood and I want you to understand this issue very well now that we've understood that there is a khilaf amongst اهل السنة this khilaf is a discussion we can have whether if you leave the prayer you're a kafir or not if a person has that opinion can we say it's a khariji اقول من اقال اهل السنة in the issue of leaving prayer because they differed within themselves if they should add it to uslul iman even if somebody adds zakat in there or even they add hajj in there or fasting in there they still are not a khariji because this khilaf is between who it's a weak opinion we can say it's a weak opinion but it doesn't take the person out of the fold of اهل السنة but anybody who makes takfir of a person other than the مباني والاربع from those four pillars of iman is Islam anyone who makes takfir of a person for leaving it for leaving it this is not about اهل السنة والجمع and they've opposed اهل السنة والجمع they've opposed what they've opposed اهل السنة والجمع that's important now how many points did I mention so far how many points did I mention first one we defined in iman وعمل we defined iman in terms of قول and عمل what was the second thing that we did we explained that the iman يتبعض ويتفاضل we also mentioned the third point was what that the شعب of the iman ليست على درجة واحدة that it's not of one level now we're going to move on to another point which is اهل السنة والجمع جوازه الاستثنائي فيه اهل السنة والجمع that you can do an exception in iman what does that mean it means if a person was to say to you if somebody asked you and said to you اهل السنة والجمع you are allowed to say اهل السنة والجمع and the reason why the person would do that is to stay away from تزكية the reason is because when you say اهل السنة والجمع you're not praising yourself by saying that you came with كماله المستحب because when you say مؤمن it encompasses it encompasses all what does it encompass it encompasses all so when you say انا مؤمن إن شاء الله they may understand from you that you're saying my iman is what is complete so the إن شاء الله are you referring to the أصل of your iman or is it referring to the كمال of your iman كماله المستحب no it's referring to the كماله المستحب that the fact that you're a Muslim you believe that somebody asked you are you a mu'min yes I believe that I believe here is أصل of iman but the إن شاء الله does that make sense و لذلك الشيخ المسامل و أما مذهب السلاف أصحاب الحديث كم المسعود و أصحابه و الثوريه و ابن عيينة و أكثر علماء الكوفة و يحمل السعيد القطان فيما يرويه عن علماء البصرة و أحمد بل حبل و غيره من آئمة أهل السنة فكانوا يستثنون في الإيمان وهذا متواتر عنهم لكن ليس فيها أولئي من قال أنا و آفاتي و أن الإيمانهم إسموا اللي ما يوافي به لعبد ربه بل صرحة أئمة هؤلاء بأن الاستثناء إنما هو لأن الإيمان يتضمر فعل الواجبات فلا يشهدون لأنفسي بذلك كما لا يشهدون لهم بالبل والتقوى الشيخ المسامل يقول في مجرد ما أخبره أن هذا المدهب أهل السنة المدهب أهل الحديث مثل ابن مسعود and his students أثوريه ابن عيينة كوفا يحمل سعيد القطان أحمد و other than him أهل السنة they all believe this they used to do إستثناء و هذا متواتر عنهم this has reached a level of multitude narration but إن شاء الله here is not regarding like the murji are trying to make it look are you there brothers they mean regarding the kamal of the iman now we've understood the أهل السنة والجماعة in iman we also touched on some things that come out of the meaning and understanding of iman according to ahl sunnat now let's speak about the deviated groups that have come out the deviated groups that have come out that have opposed أهل السنة والجماعة in this we'll take a 15 minutes break and we'll come back after that


Welcome back everyone. This is Brian. In this video, we're going to talk about the underscore. The underscore is often ignored, has multiple uses and just gets downright confusing. One of the hurdles of learning, not just Python, but any language is the syntax. And Python syntax is a bit different than other languages. So it often leaves people, even the seasoned programmers a bit mystified as to what these things are. For example, you could have a single underscore, you could have a double underscore, it could be before it could be after, or it could be a combination of before and after. But each one of these different methods has, well, a slightly different reason for being and we're going to dive in and take a look. The first use case we're going to do is a single and it's going to be skipping. Now, when I was a young lad, I used to skip school and it just did not do me any favors. But in this case, skipping is actually a positive thing or say for x in range. And I just want to print out hello. And I want to print out hello, say like five times or something like that. So I'm just going to put a number in here. Now, do you notice a fundamental problem? x, it's not used. The code runs just fine. But if you run this through any sort of streamlining program or any sort of interpreter that's going to try and tell you how to make your program faster or better, it's going to start complaining that x is not used. So what we can do is just simply replace x with a single underscore. Go ahead and clear our program out. And you'll see that it runs exactly as expected. Basically, by using an underscore as a variable, you're saying, I don't care. I just need a variable. And I'm not ever going to use it. Python, make a variable and then get rid of it. That's really what we're saying. So in a sense, we are now skipping the whole variable process. Now, to really dive into the complexity of the underscore, we need to make a test class that we can play around with here. So I'm going to go in here, say person.py. And let's go ahead and say class person. And for right now, I'm just going to say pass. So all we're doing is just simply creating that class. And then we're going to go ahead and import it. Or say from person import star. Just know that we're going to be flipping back and forth between our script in our class, because I want to really demonstrate a lot of the usage of underscore, and it's not really apparent why it's needed unless you're working inside of a class. First thing we're going to really look at here is called the weak private. And it is the single before if you scroll up, this is what it looks like right here. And it's for internal use only, it's called a weak private because we're playing around with scope. And this is why I made a class as we're about to see here. So I'm going to get rid of this pass. Let me say weak private. So when you get the image in your mind of a weak private, what are we talking about here? What we're talking about scope is as far as internal or external. If something's private, it's internal to this class. If it's public, it's external to the class. A weak private means that it's internal to this class. But that safeguard is weak, meaning you can access it outside of the class, even though you really shouldn't. Let's go ahead and demonstrate here. So I'm going to say underscore name equals no name. What have we done here? We've made a variable called underscore name equal no name. That single underscore denotes that it is a weak private. We're telling the world that, hey, we want to use this internally. We don't really want the outside world playing around with it. However, we can demonstrate why this is a weak private because we can actually play around with this. We want it to. Now I would highly encourage you not to play around with your privates. But if you really feel inclined, just, you know, make sure you keep that business to yourself. And we're going to say self dot underscore name equals name. Fairly obvious what we're doing there. We're just saying the self name this guy is going to equal that argument. Now we can go ahead and print this out and just verify that it did actually change. Let's slip back here and let's see it in action. So I'm going to say P equal person P and we want set name Brian. Go ahead and run this. See what happens. Sure enough, name set to Brian. So it's working as expected.  Interesting. So really now what we can do is we can grab this guy and do things with it, even though we really, really shouldn't. Let's demonstrate. So I'm going to say weak private. And let's go ahead and change this to P name. So now we can actually read the weak private. And even though we really shouldn't discuss a no, even though we really shouldn't, we can access and modify that weak private. I put no because you should never, ever, ever do that. If you see an underscore in it, do not try to modify it, even though Python will let you do it. Bad things could happen that underscore that single underscore denotes its internal use only we say internal internal to its scope in this case, the class. So yes, whoever made this class is nice enough to let you access it. You really shouldn't. You shouldn't rely on that. Instead, you should rely on functions to get and set values. Okay, let's just take a step back. And let's think about scope for a minute. We've talked about internal use only weak privates. But now we're going to talk about the double. And it's before this is internal use only and it avoids conflict in a subclass and tells Python to rewrite the name. It's also called mangling. So what are we really talking about here? Well, we're talking about a variable that starts with two slashes in front of it. What we're doing is we're telling Python, we want it for internal use only and take another extra step and change the variable name automatically. Ooh, that sounds kind of scary. So let's go ahead and figure out what we need to do here. So let's jump into our class. And I'm going to make a note here so I don't get lost. Strong private, this is what we're talking about here. You want to have a strong private all joking aside, let's take a look here. So I'm gonna say def. And I want underscore underscore think. So seems pretty simple, actually, when you think about it. I'm going to print thinking to myself. I mean, no one can really read your thoughts. And if you could, well, we'd all probably be in a lot of trouble. We're gonna say def and we're going to make another function called work. And I want to say self underscore think. And because we're in the same scope, everything works as expected. But now let's introduce another class child. And we've talked about inheritance before. So this should be nothing new. Just going to inherit the person class. And we're going to say def, test, double, just need a name. I don't really care what it is. And we're going to say self underscore and oh, notice how even though we're inheriting from person, it's not seeing underscore underscore think. It's just got that. Well, let's let's try to force it. So we're going to grab this whole thing. And let's see what's going to happen there. Let's go ahead and save our class and jump back to our script file here. And I'm going to make a new instance here. So I'm gonna say p good person. Could have reused the other other instance, but we're just going to do a whole new one. I'm gonna say p dot work. And let's watch this actually work. So thinking to myself, I can call it as expected. Now what we're going to do is try to do the same thing we did with a week where we're going to go in here, we're say p dot underscore underscore think and notice how IntelliSense is even going to help us out here.  What's going on here is we've now made that a strong private and mangling is happening in the background for subclasses. So we cannot even access that function is just gone. There's just no way to even see it from the outside world, but we can see it perfectly fine in our internal class. Oh boy. Alright, so let's just comment that out and let's play around with us a little bit further here. So I'm going to say C equals child. Remember child actually inherits from the person. And in the child class, we have a test double which is going to call self underscore underscore think which is actually a part of the person. Where are you? There you are. This is where mangling is really going to be demonstrated here. So I'm going to say C and I want to say test double. Any guesses what's about to happen here? Let's go ahead and clear this save run and oh, child object has no attribute child think so that's really what's going on here is we're saying that it's only allowed in that class in which it's declared. Pretty much. There's millions of uses for it. But really what you want to know is that if you want to make something private and to that class and only that class you would do the double underscore. I'm going to go ahead and comment these out so we can move on. Let's go ahead and demonstrate a really cool feature. We're gonna talk about after any. Now what are we talking about after any right here? Any number of slashes after really there is a good use for this.  Does anybody see the problem with this before I run it? Raise your hand you in the back. Okay, class. You guessed it invalid syntax because class is a key word. Oh, that is frustrating. I really wanted to name this class. Well, this is where we can do something like this. And really what we've done is we've created an entirely new name, but we can still call it class. It just prettifies it is that even a word prettifies it beautifies it. So we can use the word class, but we can still not have a naming collision with any of the keywords. And that's really what this is designed to do. Is it helps avoid naming conflicts with keywords. And then from here, we can just say something like print class. And then we can print it out work with it as we want to say, made an object and everything's going to work as we would expect. Wrap this whole thing up. We're going to talk about before and after and we've used this before. And this is considered special to Python for functions like init and main and things like that. We've seen it before. But I want to kind of go into our class here and look at how we could actually use it. So let's go here. We're gonna say before and after. And of course, we've done the init. If you skip that video, basically, this is the constructor. But you notice the syntax here, we've got double before and double after. So basically what we're telling Python is this is going to be internal to the class and we want to avoid naming conflicts. And at the same time, it will not mangle it for subclasses, but each subclass will have its own instance. That's how we can have a constructor for person and a constructor for child. We covered that in our video about the initializer. So let's go ahead and make our own function using before and after. I'm gonna say def all. It would have been really cool if I would have like spelled it right the first time. There we go. And I'm going to just say print. Awesome one. So it looks pretty simple. And it's actually in the spirit of Python, it is dead simple. And it actually works as expected. So let's go ahead and say p equals person e dot underscore underscore. And you notice there's a lot of stuff in here that starts with underscore underscore. I'm gonna say call. And we're just calling a function here. Save, run, and call someone. Ta da, it works. Now, side note, I would not recommend starting any function that you want to be accessed outside of this class with an underscore simply because the underscore starts with a weak private, which you're basically saying to the outside world, hey, this is going to be internal to the class. And it gets stronger from there where you can actually start mangling it, or you can tell you know, everyone, hey, internal, don't want you to use it, but also don't mangle it. That's the before and after. When in doubt, double underscore is your friend before and after. If you do it with the mangling effect for strong private, you may start having some weird issues. So always keep that in mind. But the general rule of thumb is anything private is going to start with an underscore and do not access anything private in a different scope, even though we've demonstrated how to do it, it is not the best way of doing things. You should use a getter and a setter, which we've demonstrated like right here, set name. I hope you enjoyed this video. You can find the source code out on github.com. If you need additional help, myself and thousands of other developers are hanging out in the void realms Facebook group. This is a large group with lots of developers and we talk about everything technology related not just the technology that you just watched. And if you want official training, I do develop courses out on udemy.com. This is official classroom style training. If you go out there and the course you're looking for is just simply not there, drop me a note. I'm either working on it or I will actually develop it. I will put a link down below for all three of those. And as always, help me help you smash that like and subscribe button. The more popular these videos become the more I'll create and publish out on YouTube. Thank you for watching.