 Yeah, that's good. I'm going to start that. All right, I'll get going. Hi, everyone. My name's Phil Nash. I'm a developer evangelist for Twilio. Twilio is a cloud communications platform that allows you to make and receive phone calls, or send and receive text messages using the tools, the frameworks, the languages that you already know. And I just want to show you just a quick bit about how that works today. I'm not much for a slide, so I just have this browser and some code. And I would like to write an app for you right now. Before I do start that, I'd like you to just grab your phones, get those out, and turn the ringers on, because I think that's more fun. So everything in Twilio starts with a phone number. And I'm just going to go and buy one right now. I'm not going to buy one in the UK, because that's not where we are. That's boring. So let's get one in Germany. And I'm going to get a mobile number, I think, because then I can do texting and calling. So I'm just going to buy this number. And now that is mine. Cool. It is. And now I'm just going to set it up. So what happens in Twilio is when you have this number, when somebody sends a text message or makes a phone call to the number, you can set a request URL here for voice and here for text that Twilio will then send an HTTP request to, a web hook. And basically, it's going to give you all the details about the SMS or the call. And you tell Twilio what to do with that. So I'm just going to do that right now and set it up to an application that's running on my machine using engrock to tunnel through. And that's set up. So let's go build that app because it's here right now. Let's make that sidebar a bit smaller. Cool. So I'm just going to build a quick Sinatra application because that's nice and easy. And hopefully we all know what we're kind of talking about here. And I'm going to make a post request to messages. And when we receive that message, we need to return some XML because that's what Twilio likes to talk. We like to call it Twiml because that's cute, I think. And all Twiml starts with a response. And then you can do stuff with it. And since this is for a text message, I can send a message back. And I can say, hi, thanks for watching. Here's I've got a little promo code for Twilio here, which will get you $20 of free credit if you use the promo code EuroCamp15. I'm going to end that message there. Oops. And that's that. So I'm just going to come back here and start that application. And if you grab your phones, as we had them out earlier, and send a message to that number, can you read that? Cool. I'm going to do so too. You should get that response back. So I'll read that out in just a second as I'm doing it. That's plus 4, 9. I guess it's probably just 0. But I'm international, so I'm going with plus 4, 9. 1, 5, 7, 3, 5, 9, 8, 6, 3, 7. That's a lot of numbers. 8, 6, 3, 7, 6. And so we're seeing some responses. We're seeing some things come in behind, which is a good sign. It means something's working. And if you get a response, if you're getting a text back, give me a shout. There we go. We have some text back. Good stuff. That's exciting. All right. It's quite a lot of them. Sorry, did we miss that? That's number. And so whilst there's still things coming in, I can tell you about other stuff we can do with this. Because we also have a REST API in order to go and get the details of the messages. And I'm going to jump out to that now, because I always run out of time. So I'm just going to start off a quick IRB session and require the Twilio Gem, Twilio Ruby. We have helper libraries in several languages, but really Twilio Ruby's the only one that really matters, right? I need to build a crystal one, obviously, but we'll see about that sometime later. Anna's going to make myself a client with my account SID and auth token, which is basically the username and password. Those things stuck in my environment there so that you can't use my account, which has a lot more privileges. And then I can go get those messages that you sent, just by calling client.messages.list. And I get the messages that were sent to that number. And there I have them. So now what I can do with that is probably, hold on, I can still get numbers for a start. That's a good start. I'm going to map over there. So I won't do anything bad with them, I promise. And I can actually put out the body of the message. So I hope nobody's sent anything that's against the code of conduct, because it's about to go on screen. I hope you all behaved yourself. So I can map out and get the message that's the from number. And there we go, hello, hi, everyone. XSS into the terminal is always an interesting idea. But I have your numbers, that's the important thing. And with those, I can just run over them and call you back, which is quite, should be fun. So I can do that with the same rest client client calls create. I'm going to make a call from that number I bought. 10 seconds, Phil. 10 seconds. I have quickly no pressure. That's definitely not happening. Let's get through this. Come on, you want to get this call, right? Five. Is it a long second? There's a very long second. I couldn't on that, but it's not going to do anything. So I'm just going to quickly do something to add the voice endpoint here. Probably not sending your message back. There's bunches of stuff we can do here, like saying stuff and playing stuff. But I'm just going to dial this all into a conference call, because it's a very social conference right now. And that's all I've got time for. So it doesn't matter what you call it really, as long as it's some sort of ID. It couldn't be under pressure now. Some sort of weird completion there. Brilliant. That all looks right. So you just have more XML to send back. And I'm going to hit that. Your phone should start to ring. You'll be dropped into a conference call together. And just have a chat. It'll be great fun. Anybody ringing yet? Someone's ringing. All right, cool. Whilst I let those go, that is how quickly it is to get started with Twilio. If you have any questions, if you have anything you want to ask about this, come and find me on my red t-shirt. I'll be here for the rest of your camp. Thank you very much for listening. My name is Asai. I'm working at Blacklame. Today I'm going to talk about PoloBuffers and the JRuby. So the first question is, so what is PoloBuffers? PoloBuffers is a Google's language and neutral platform independent data format for structured data. So you can think it like XML, but it's faster and smaller. So you can see this is an example of a PoloBuffer schema that defines the user of your system. What the use of this PoloBuffer format is that you can use it to replace JSON within your microservices API. The disadvantage is that the client needs to know the schema in order to deserialize the binary. But the advantage is that you can't generate the client and the cell side code for you based on the schema. So you don't have to write those bi-log plate codes when you are trying to pass JSON. And also, it's faster. It's a serialization and a deserialization. And it also supports congenital client code for multiple languages like Java, Go, Objective C. So it's the advantage that you can use it on your mobile client without writing a lot of client codes. So the latest version of PoloBuffers has an official support from Google that for Ruby previous, there is no official support. There are some sort of party clients. But now there is an official one. The problem now is that the official library is written as a C extension. So it cannot be run. It doesn't work on JRuby. What I did is that I reported this to JRuby with a wrap for the PoloBuffer Java client. So probably you've heard about Ruby native extension written in C and probably never heard of it. You can do that in Java as well. I think the JRuby team is quite, how to say, well, that they prefer this library FFI, PIP FFI. So you can get the same code that runs on both MLI and JRuby. But actually, you can do this with your Java code and link that to Ruby. And the performance is very fancy that you see actually faster than the C extension counterparts that's based on this benchmark on Ruby, the red-black tree in pretension. Yeah, so that's what I did. Basically, based on the existing specs, I rubbed the Java reflection API based on the dynamic message if you know the Java PoloBuffer library. How to do these things? There is no document on the JRuby site that you have to read the JRuby code. How JRuby is even implemented, actually. So all the standard libraries, stuff like that, they are implemented in Java and they use this annotation to generate code that can be called from Ruby site. Yeah, if you are using a lot of microservice in the software that and you want to save some time writing biologically, you can check this out. And there's another project called GRPC. It's based on HTTP2 and the PoloBuffers. Definitely worth checking out. So thank you. OK, you're on the clock. Eric, can we get the mic? You absolutely can. So you might have been wondering with all the tattoos and everyone, what is even a Rubycorn? And the answer to your questions are that they are a member of the Rubycorn study group, some examples of which you can see here. Hashtag Rubycorn rule. So you might be asking what is even a study group. And I have our only code example, basically. Yeah, a study group has many members. Members come in different shapes and sizes and they might at some point choose to wear a onesie to a conference, but you never know. Also, a study group has many coaches. And coaches just basically make everything better, which means they make the students better. They help the students, like doing their first little steps in Ruby with a little each, a little bit of map. But then later on, also a bit of mentorship. And by teaching, you also improve yourself a lot. I think everyone who has ever coached can say yay to that. And so dear companies, also if you want to make your developers better, go send them the coaches and teach. Also, the list goes on. A study group belongs to a meeting place. Meeting place also come in different shapes and sizes. And one cool thing is that your company could be such a meeting place and give learners a place to learn and share and just have a good time. And one thing that is very important is that a study group has a regular time. This is important to have a schedule that people can adjust to and just make it a habit out of learning and being together and having fun, which leads to the overall concept of a study group being a supportive safe space to learn and which is important to make our community a better place. So which comes to your part? Yes, so why do we even do it? Because it's a lot of fun, much learn, very cake. We love cake. All of the error messages on our app have something to do with cake. And also, it's for everyone, everywhere. Anybody can be a part of a study group. And you make it what you want to be. It can be silly. It can be serious. We like having silly fun. But you know, you can do whatever you want. And we're also a community. We're a community of ruby corns. And we're also a project group community. So can I just get a show of hands? Who here is in a project group? Or has at some point been in a project group? That's awesome. And who here wants to be in a project group? Perfect. OK, so look around. Find each other. And go to organize it. This is the app that we built. And it's a place where you can find project groups, sign up for project groups. If you don't see one that you want to join, or there isn't one in your city, then make one yourself. Or you can come find a ruby corn and ask us how to do that. You can ask us questions. And we have both guests and ask culture people. So just come up to us. And this is the page for our group. And you can see there, we meet at Bitcrowd, Tuesdays at 9 o'clock. And our Twitter, 7 o'clock, sorry, 19 o'clock, 7 o'clock. And our Twitter handle is at rubycorns. So to finish off, we wanted to thank Toby and the Fox onesie and Till, who should probably stand up somewhere. I don't know where he is. There he is. For giving us so many of their Tuesday evenings and also a lot of time outside of that to merge our pull requests. Yeah. And also Bitcrowd for hosting us every week and being really patient. OK, so first, a big shout out to Samsung, who lets me know that I'm roaming and I'm 24 hours off my usual home time, apparently. That would explain the jet lag. That's the rest of my home screen. Big shout out to Aaron Patterson. And also, thank you, Florian, for reminding me that I should have put a quote of you in each of my talks. That's the quote. It's not about shortmanship, as we learned, so let's talk a bit of ruby. So a big hat tip to all the conferences that send tickets for RG Summer of Code. There is also a Rosconn's code who will go back to this at the end of the talk. All of those conferences send out tickets for RG SoC participants. So who goes there? Yeah. Let's say we have this set of information. We have some conferences. We have some names, thanks to the Faker Gem. I didn't have to invade anyone's privacy. And we want to see who goes where. How do we know that? We can, well, have my name keyed hash. We can have conf keyed hash. But we can also have a logical metric, which is the obvious choice. And, oh, of course, could you please just remind us what that is? So that's a rectangular table that has Boolean values. True and false, whether the relationship is there or not. So we could do something like this, have some conf, some names, a matrix, and we can query the matrix just by indices of the conference and whether somebody goes to a given conference. OK, but it's not super efficient. If we had very many participants, which we want to do at every conference, then every conference adds a row to this matrix and every participant adds a column. So this is the number of bytes or actually objects that we will create in Ruby. So how about using 0s and 1s instead? So instead of logical matrix, let's have a bit matrix where 1s are when somebody goes to a conference and 0s where they don't. So instead of that, we can actually have this in Ruby, which is binary representation of integers, and this way we can have one integer per row, not one array of however many participants are there. And this matrix is, in practice, a matrix of integers. So how much better that is? Now we have only one fixed num for each conference. So fixed num go to this wonderful number that you learned this way of specifying numbers yesterday. This is the number spelled out. Obviously, we all have more or less the idea that it might be enough to cover everybody, maybe. Who knows? That's actually for quintillion, over for quintillion. So let's go a bit further. How do we query this? We query the Boolean matrix. We query it just by indexing into it. And the whole point of this talk is this wonderful method. It's integer square brackets. And we call call square brackets method on integers. And we index into the bit of the integer. So if we take the number 29, which is 11101 in binary, then the rightmost, the 0th index integer bit is 1. The next one is 0. The next one is 1 again, and so on. So it returns the at least significant bit. And we can query just as well. Doesn't work. We can query just as well into this matrix as we did with the Boolean matrix. But let's try to figure out how many participants go to each conf. In the Boolean matrix, we could just count the number of truths for every row. But in this case, we can just take the string representation and count how many ones are in the binary representation of this number. But that's also not very efficient. This is called population count. And there are even better ways of counting population counts. Let's freedom-patch the integer class. And let's add the pop count to our basic, like the simplest probably implementation that we can have. We can do better. We can actually go through the number, shift it one bit to the right, and check whether the rightmost bit after shifting is 1 or 0. We can do even better. We can have this implementation. I won't go into details here. It's maybe more efficient. We don't know yet. Probably. People say it is. Maybe. We can have this lovely implementation. I really suggest that you go to the slides later and figure out how it works. It's wonderful. And we can actually drop down to C without leaving Ruby, which is awesome. We can re-implement this in only this many numbers of C. Or we can actually realize that our processors have this pop count function built in. And we can drop down to assembly through C from Ruby, which is awesome. We can actually also figure out that maybe if we just have the numbers pre-counted, then we can just have the pop counts for all of the numbers up to 0xfff, and then just shift that number and count the number of bits. We should always benchmark. So we created a very simple benchmark. We fail oops if the metals don't work. Guess how many times I got oops yesterday. And then we benchmark which benchmark IPS. And suddenly it's very interesting. We see that the built-in one is by far the fastest. But the 2S1 is only 25 times slower, which if you think about it, it's surprisingly fast. So maybe we should stick to the quick one. The bit elimination one is actually slower than the 2S1. The one that shifts the bits is actually slower still and much slower. So please, please, please always benchmark. And if this pattern rings a bell, I'm kind of sympathizing to some extent, but also I'm really in awe because that's a pattern from Game of Life. And if you click that, you will read up what that means. And of course, Game of Life can also be implemented as arrays of integers. So once again, big shout out to those conferences. Rosconn is free, but the organizers ask for a deposit. If you cannot, for whatever reason, cover that deposit, please use that code. But if you can, the deposit will be returned to you if you show up, and this could be then used by somebody else who is, for some other reason, cannot use it. The slides are here. Thank you so much. Hello, Jeroekamp. Usually, you put the thank you slide to the end, right? But this time, I flipped the order of my slides. And yeah, because I want to say thank you for all the organizers doing awesome stuff today in the last days and preparing this conference. And thank you for this awesome conference. Thank you. The second part of the lightning talk is about Ruby issues, which is a mailing, a newsletter sent out beam monthly. And if you subscribe, and all of you should, you will receive an email or two emails a month with issues related to open source Ruby issues collected from GitHub. We go through GitHub issues, read through them, and collect them to a list, and decide whether or not if we put them to the next Ruby issues issue. Yeah. The ambition behind this thing is to provide an entry level for not only for beginners, also for intermediate developers or more experienced Ruby developers to get in touch with open source, to provide something like an easy step to get involved and to contribute. Because GitHub is that big, and you maybe sit there and think, OK, where could I start? And I got told from many people not knowing where should I start. And this might be a thing where you could read about some issues and get started by getting involved into open source. This is the URL here, rubyissues.ongoodbits.com. And this is, believe me or not, it's time consuming, collecting all these issues and reading through them. This is only possible because it's sponsored by Odin, formally or probably better known as Parallels. Maybe you have heard about them. So also, I'm very thankful for them. And my name is Robin. This is my company, Magic Labs, and Robin Burning on Twitter. And that's it. I hope you subscribe. So the conference started off with a talk about awe. And whoa, what you don't see is that keynote just crashed on me. This is brilliant. I'm in awe of that. Can we? Yeah, awe. Can we? Exactly. So I hope this works. We've heard about awe. And one of the things that make me awe, or get better at it to feel this more often, is trying to figure out how to build games. And we had a few talks about game development throughout the last Eurocodes. For example, last year, Rin was talking about Gosu, which is a Ruby library to build games. And this is all very well. But I also like to try out new things. And I do Ruby for a living. So let's try something different. There's a thing called Love. And you write games in Lua. And it's awesome. It's like this big gaming framework. And you can do 3D games, 2D games, whatever you want. But I find these things kind of overwhelming because you have so many possibilities. And so I found something I wanted to share with you because it's been my happy place for the last few weeks. And I've been doing a lot of stuff in it. And it's called Pico8. It's done by a guy called Zap. And it's a so-called fantasy console, which means that it's basically a runtime for something that could also be a gaming console, like something like this. And it has awesome specs. It has 128 by 128 pixels, 16 colors, 4-channel retro sound. And if you boot it up, it looks like this. And this looks familiar to me because I grew up with a C64. And this is awesome. But if you press Escape, you enter this. And you suddenly can write Lua code. So you program Lua. And this is kind of cool because everything you need to edit a game, to build a game, is built into the system. So you write Lua code, but you also can create sprites. And they are 8 by 8 pixels. So that's not a lot of pixels to figure out, even a stupid programmer like me can do awesome pixels with this. And then you have a map editor. Most 2D games need some sort of map where you can navigate as a player on the screen and you just create a map. And that's brilliant. And there's also a sound editor that allows you to create these autrum retro bleeps and bloops. And if you take these sounds and put them together, you get music. So there's a music editor. And this looks familiar to me as well because I've been making music in trackers during the 90s. And so this is kind of cool. And I used the spare time at this conference to build a game. You've probably seen that before. It took me about, I would say, something between three and four hours in total to build this game. And so that's kind of amazing to me. That's not my awesome skills. That's just because it's so simple. And then you have something called a cartridge because you have this console metaphor. And you save it as a file. It has a P8 extension for Pico 8, I guess. And it's a text file, which is awesome because you can edit it in your favorite text editor. And there's a segment that starts with Lua, if anyone was wondering what's going on with my Twitter handle. And there's also the graphics in there. They are probably not as editable as the code. But the cool thing about it is that you can basically work together on a game and then just copy bits and pieces together. You can also save it as a PNG file, which is kind of weird. But the PNG file contains the whole game. It looks like this. So you have a screenshot of the game in there and some meta info. And then you can upload it to a website called pico8.com. And it ends up looking like this. And there's a play button. And you can play the game on the web. It's a HTML5 player that uses M script to compile all this Lua stuff into JavaScript. And you can find the game there if you want to look at it. I decided not to use the Pixel font for this URL. And I want you to look at it. It costs a little bit of money. It's not open source, which is a bummer. But for me, it has been, like I said, it has been my happy place because it's so easy. And the constraints you have to work with really force you to be really creative. And I loved it. So I wanted to share it with you. Thank you very much. And let's just go. It'll be fine. All right. Welcome, Yerukam. My name is Jason Clark. I work for New Relic. And I am here today to talk to you about Shoes. So what is Shoes? Shoes is a GUI library built in Ruby. It's cross-platform. So it lets you write desktop applications that you can run on all the major operating systems, Windows, Linux, and Mac. It was originally written by an enigmatic Rubyist known as Why the Lucky Stiff, who did a lot of different things. You might have heard of his poignant guide to Ruby. He wrote a few other frameworks. But Shoes was kind of one of his biggest contributions. He used it to write a beginning programming environment called Hackety Hack. So Shoes is the GUI that he used to build this. And it's also the framework that you use in Hackety Hack to write little desktop applications. This was aimed at beginners and kids to kind of make an accessible way for them to run Ruby directly on your PC. But as those who were in the community at the time know, Why disappeared? He took his code off the internet. He went away. And a lot of people probably thought that that was the end of Shoes. Well, I'm here to tell you that that's not the case. But before I get into a little further detail, I want to make a small digression. One of the things that was brilliant about Why was that he was kind of weird. Things were strange. The ideas that he came up with were off the wall. And I feel like I'm not him. I'm not that weird. But I can't have a presentation without having something that sort of calls out to that. And so in my university, I had one of my friends in my software engineering class named Mike Larson, who when he would learn something from the professor, would balk like a chicken. And he called this the learning chicken. And so today, I have included in our presentation a learning chicken. So if you shout out, give me a chicken, I will give you a learning chicken. So can somebody? Give me a chicken. All right. So at any point, if you feel like I've taught you some interesting facts, some little bit, give me a chicken, and you will have a chicken. All right. Back to Shoes. So after Why sort of disappeared and left this code behind, it was difficult for people to work with. It had a lot of native UI bindings. And the community eventually came around to rewriting it. And we're rewriting it right now using JRuby. I feel like that's a chicken moment. So JRuby is awesome for this because it provides us a cross-platform GUI that somebody else has to take care of. So we just get a write Ruby code on top of that. It makes the Shoes project very accessible and very easy. If you write Ruby, you can read pretty much all of Shoes and it will make sense. So let's look at a few quick demos. There's animations. There's drawing. There's text. A lot of different ways to make things easy to lay out. There's games. This is one of the big things that draws people in. Let's see here. I kind of suck at Minesweeper. I guess I should have practiced better. You can do other sorts of games like the Snake game. I also suck at that. But maybe you can do better. And my favorite contribution, completely unbiased in the entire open-source world, this is a program that went back as a sample into the Shoes project that I wrote with my then five-year-old daughter. It looks like this. Thank you. I feel like that's chicken-worthy. Anyone else? All right. So Shoes is awesome and you should get involved. We have a newcomer-friendly tag on the project. There are lots of issues out there. We're pushing towards a full release that's compatible with the old Shoes that came from Y. And so people of any level in Ruby can get involved in this. And we would love to have you reach out. But everybody has their own project, their own thing that they want. And I want you to go away with this thought. This is why I care about Shoes. This is my daughter teaching my dad the program that she wrote. When my dad taught me to program, this is three generations of programming here that Shoes is making possible. So if you want to see a little more of this shameless plug, there's a presentation that I did. My daughter demos her Shoes code live. I have never demoed code before. She has. It's awesome. Check it out. Thank you. Well, there's going to be a brief one. So I know that there's lunch waiting. So I hope that this resonates with some of you or a lot of you, hopefully. I once decided I wanted to level up and learn type systems. And so I bought this book, Types and Programming Languages. What I expected was more or less like this. Two pages, one for Types, one for Programming Languages. But I found this. It was terrible. I accidentally my pants. Really bad. Then I started doubting myself as you do. People do that. And they started thinking, is this for me? Maybe this is really too hard. This is too hard. Then I started thinking, we are our worst enemies when we're trying to level up. We tell ourselves a couple of lies mostly. This is not for me. That's not true. I mean, people learn this stuff. It's just that they don't tell you what happened when they tried to learn it. And they got really scared. But everyone opens the book for the first time and goes like, wah, no. I'm still like that with that book. I'm going halfway through that book. Then the second one is even worse. But I'm not like this other person who learned this. This is extremely harmful, because especially for minorities, this tends to look even more true. I literally don't look like that other person. Probably I can't really do it. And this is really bad. It's good to have idols. I have lots of idols. But you need to build your own path. And you definitely don't need to be like them. That's kind of defeating the point of progress. So a couple of tips. Find strength in inspiring people. Definitely look up to people and find strength in them. But don't feel small when looking at them. Be patient, because it's a long way and it's really hard. But that's fine. And go level up. Thank you. Well, OK. Hi. We are Alsta hamburgers. And my name is Aya. This is Anke. And I'm studying computer science and economy. And I was really bored with the languages I was learning at university at that time. So I was only learning Java and C. And I wanted to try out something new. So I started to learn some Ruby. And I got to know Anke. So I'm Anke. And a long time ago, I got a master's degree in something truly completely non-technical. And it was cultural history. And then I wrote a master's thesis about which persecutions and went on to never work with anything related again. Instead, my jobs got more and more technical over time. And in the end, for a few years, I was a product owner at Google. And at some point, I came back to Germany and decided I wanted to actually learn some more technical skills myself. Because I got some intense coding envy from working with engineers, but just understanding what they were trying to do, but not being able to do it. So we've been talking about Rails Girls a lot. But what is it really like Rails Girls sum of code? It's a fellowship program which aims to bring more diversity into open source. And it means that selected teams get a three month scholarship to just work on an open source project and have coaches and mentors. And I can mean we are one of the lucky ones who got accepted, so that's really nice. And we have 40 students, 67 coaches, 26 project mentors, and 16 supervisors worldwide. And it's from July until September. And because it's much easier to learn something new when you have people around you who know what they're doing. Every team gets a coaching company and some mentors and coaches. So you can see those up there. We have a team of five coaches as well as two mentors in our Office of ThoughtWorks. So it's a great situation to be in. And not only do they help us and teach us a lot of new skills, but we also feel like we were part of the team from day one. So we went canoeing on our first week. And yeah, it's great to be there. Yay. So what is our open source project really about? It's called LEAP. And it aims to give all internet users access to secure communication. And we decided to dedicate our summer to building a token-based user registration on their website on the sign-up page. And so this is going to be our first project. We chose LEAP because we find it really important that people can choose who they communicate with without wondering who might be looking into the emails or wondering who might be eavesdropping on their conversations whatsoever. So yeah, that's why we chose LEAP. And so what we've done so far, so far, we haven't actually touched the real code yet, but we're getting really, really close to doing that. Instead, we've tried to make friends with a lot of things like Ruby and Rails, HTML, and a lot of things we came across, and I'm sure we'll find more in the way. Plus, with our coaches, we've worked a lot on project organization, so what you can see in the pictures are a Kanban board and a box where all our done stories will end up at some point. Yeah, and so we have a plan, and hopefully that is a big step towards using our summer well. So please come and talk to us. We'd love to talk to like-minded people. If you have interesting hackathons coming up or any event that might be interesting for us, we're happy to talk about it with you, and since we've been talking about hamburgers so much, let's get lunch. Yeah, it's good to be here once again. I feel at home, you know? I always feel at home because you guys are beautiful and happy people. I need some love from you guys. Raise up your hands and make some fucking noise. Yeah, that's what it's all about, you know? You guys are future hopes, and you guys are greater tomorrow. You guys are on the move anyway. You guys are just like gold, and you guys are making the world living once again. Some people are living only for today, but you guys are living for tomorrow because you guys are heard of today's people. I'm just here to encourage you guys to tell you guys that end no stopping you guys. Forward ever, backward never. You guys are just like gold. You guys are just like gold because if you don't know the word of gold, if you see gold, you can tremble on it, you know? If you're not a gold miner, you would never know the word of gold. You guys are gonna go through processes before shining. There is no easy way to the top. No pain, no gain. No pain, no gain. I'm a living witness, you know? That no pain, no gain. No easy way to the top. Gold has to pass through processes. So many processes, even to pass through fire before becoming gold, before shining to become gold. There is lots of up and downs. Lots of up and downs, but we don't have to give up. Boogie, chill out. You don't have to give up, you know? You have to try as much as you can to be what you wanna be and to get what you want. It's in your hand, it's in your hand because you guys are making the world to be a better place. Right now, you can never say, oh, I'm bored, no way. Based on what you guys are doing, you can be at home, play in TV game, send the messages to people, doing whatever you wanna do. You must not come out from your heart. So don't say, oh, it's too hard, it's too hard. It's too hard, but no, no, don't get discouraged. Never you get discouraged. Doing what you love is very, very necessary. And you guys are here because you guys love programming. That's why you guys are here. That's why I said that there is no easy way to the top. Once you're doing what you love, it doesn't matter. There must be ups and downs, but you don't have to give up, you know? So you guys are going to get there. You're now passing through fire, through processes to become what you really wanna be. And you guys will be there. You guys are getting there. Maybe in few weeks, you guys will be well-known guys, but there's one thing I have to tell you guys. A tree can never make a forest. You guys gotta keep on working together. You guys gotta keep on giving helping hand to one another. That's the way to achieve your goal. That's why we're human beings. Left hand gotta wash right hand, and the right hand gotta wash the left one. So I thank you guys for coming out anyway. I thank you guys for everything, most especially the organizers and the participants. You guys are highly, I don't know, welcome, and you guys are on the move. So forward ever, backward never. Forward ever, backward never. Thank you all. Bless up, bless up, bless up, bless up, bless up.