 Engrages, React, and more Java script frameworks in the future. I believe that. Many more libraries. And there's a book about writing a front end every six weeks. And I did this before. I tried several times, two years ago. And I think the problem here is many people think that these client-side frameworks, they are easy to build features. But they are also introducing many complexities in our system. So I think many people mix the idea of easy and simple. Actually, they are not the same. And we're adding some news like this. Twitter migrated from client-side JavaScript framework back to server-ended content. And I think two years ago, Shopify deleted thousands of lines of JavaScript code to improve developer's productivity. But they think that JavaScript codes are hard to maintain. And so we are, as Rails developers, let's see what Rails provides us. Rails provides us many things like UJS, unobtrusive JavaScript, and SJS-surrendered JavaScript responses. Action Turbo, TurboLynx, SAP pipeline, Sprockets. And with so many weapons in the box, we actually can achieve most of the things when we tend to use a JavaScript framework in most of the cases. From the simple Twitter and this example, there are many JavaScript frameworks examples on this website to do MVC. And you can check out the code here. And actually, you can build this app with a simple JavaScript with Rails back end. And you can count the lines of code to compare the JavaScript frameworks with simple Rails and JavaScript solution. And you can also build more complex apps like this base camp, you see. So actually, with so many weapons here, we can build many, many complex applications. So the next time when you meet a new JavaScript framework, you have to think, do you really need this? I will introduce an unnecessary complexity to our colleagues or to ourselves. Because maybe in the next year, you may be the one to rewrite your front-end client code. OK, thank you. Stopped. Today, I will be talking about helpers, decorators, exporters, and presenters. So we all know that Rails helpers are not all enough. All is option-oriented. And we are all zeroes. So when we look at the top, we don't like it. But when we look at the bottom line, ooh, it looks really all that's good. And I'm a very superficial all zero. So people make jams to make helpers more all. First, we have a very famous Draper Jam. So on the top, in a controller, you decorate the article you find. And then at the bottom, you can use the helper method directly on the object. And in the Draper Jam, you write your helper methods in a class called Draper Decorators. And as you can see, you have to specify a helper to access the view context. But you can access directly the model attributes, which is convenient. And we also have a general active decorator. And it's very magical. It does everything for you. You don't even need to do any decoration. And you can just use it straight away. Inside the decorator, you don't have to use the edge dot, because it would redirect the code for you to the view context. Also, the model attributes. So you don't have to think about anything. But I'm really hard to please. So I think this is too much magic. And I think if you override the active record, there will be many bugs. So the two jams lower the wrappers around the active record object. And often, when you use a wrapper, there are some problems. So I forked the gen. And I called it la-la-la presenter. And in the controller, you don't need to do any decoration. But in the view, you have the dot presenter dot link to access your helpers. And the dot presenter will give you pure Ruby object, which will let you write your helper inside. And I don't like any magic. So you have to write the edge dot. You have to write model dot. But I feel it's more safe and less bugs. So my view, the way I do it is to have an active record object access a presenter, which is not wrapping around the object. So I think it's safer. And I think it's also good, even though you have to type more words, but it gives you an awareness that you are using something from the presenter side instead of the model side. And you won't forget to wrap something in a controller because you always do it in a view. My name is Mark. And I go by my name, la-la-la. And you can find me on Twitter and GitHub. Thanks. My name is Hua Qianwei. My English name is Charlie Hua. And I work at a coffee. And I'll introduce the company later. And my topic is why you guys should e-health there and how. Don't laugh. It's serious. OK, I want to do a quick survey. How many of you know roughly about how many calories you need to take every day? Wow, wow, wow. OK. OK. Not surprised, OK. Again, the second one is more difficult. How many foods, veggies, grains, portions, you know? Wow. We can talk later. OK. OK, not surprised at all. OK. Foods are, we know a lot about the software, our stuff. Yeah, we do. Yeah. When it comes to ourselves, our body, no, I don't know. No, yeah. I don't know how to make it work better. And here's my, I'm going to share my target. It's about 1,800 and here's a portion. It's generated from our software. And if you check your diet every day, it's very possible that you have not enough good stuff and too much bad stuff. You ask, why it has to do with you? And here I will share some confidential information about software development and food, OK? So in short, your code is what you eat. What does it mean? You're not a GI variable of food. If you don't know, Google it. And for example, a high GI food like a cold doughnuts, which it had not. Yeah. And you have like oatmeal bars, not so yummy. Yeah. And it affects your body sugar, blood sugar level. And yeah, in half an hour, if you're like your superman, you can do anything. But one hour later, you just want to sleep. So that's why your test coverage goes down. It's not good for your company. It's not good for your customers. Yeah. It's a real life. It's damn bad. High fibers. Yeah. That's so familiar. OK. Basically, you can drink a lot of water with the food or some protein or fiber. And that's why it's shortened. For meat, I think I want to keep ourselves in your zone now we can have a very high performance. But if you have a bad diet, you are really in the right zone. And you're very close to burnout. You keep your body and your mind in the stress status. So we don't have the buffer. And if your company is getting easier, you don't have the strength. You don't have the energy to deal with that. In the long run, really, I don't have that. And I freaked out. So serious disease could be caused by diet problems. And the bottom line is that we are not only developers. We are also children. We are also parents. We are also partners, life partners. Yeah. So we have a lot of responsibility. And then you think I'm scaring you. Yeah. But I'm not. Here's a living example. Kai Fuli, I think a lot of people know him is a role model for a lot of young folks. And he just, I think about two or three years ago, diagnosed with cancer. So he's now giving advice about times when you also got a quick. Here's our company. What we do. We connect you with the politicians. We have two plans. One is that one day analysis. Now there is a 60-day transformation problem. You can just take a picture of your food. And the politician will calculate everything for you and give you advice. And here's a report card for one day analysis. And he's like, well, can you start an engineer before and after? We just switch some weights and add more foods, fibers. And here's the difference, 400 calories less and more balanced diet. Yes. And sometimes I think we are asking the wrong question. It's not about eating health. Eating healthy is about eating normally. OK. And we just want to shift. And OK, let's go down to the free offer for our company. Free one day analysis for every one of you. Just write me an email. And we have a discount for any company you want to buy a 60-day program for your employees. And we're hiring. So please contact me. Thank you. Hi, I'm X-Dai. I work at the growth school. Today I will talk about red potion. What is red potion? Basically, red potion is like rails on ruby motion. You probably will hear about ruby motion, but you won't use it. Why? Because if you use ruby motion and it creates a new app, you just pop out this syntax. Just like you use ruby to write up just see. So we will feel this is so disgusting. Why will I use ruby motion instead of a sweep? But things change. So today I will introduce the red potion. What is the red potion? So this is the red potion, Hello World. This is a red potion, Hello World screen. You can see the syntax. It's pretty like rails-ish. So you can like, this is kind like ruby. This is ruby. Not so much as see. Okay, red potion is like a boilerplate of ruby motion. You can think of top of framework on the ruby motion. So what the red potion can offer is like reasonable syntax and some handy built-in gene and very much rail-ish. So if you like ruby on rails, probably you will feel very comfortable on writing the red potion. Okay. So what is built-in promotion? What is built-in red promotion? They, red potion include like three or four major genes. One is called promotion. Promotion is like a screen template. So promotion provides several useful screens like table screens, navigation, type of bars. So you can write a screen like this. So if I want to write a table cell, so I can just dump a red and render it. So it's very easy to write a table screen. And the second one demo is, this is a login screen. So I can just configure the field, then just render it. This is the sign screen. So it's very easy to write iOS apps. And second, the second feature that built-in gene is CDQ. CDQ is a core data query. CD, core data is like database in the iOS. So it's kind of like active router for the core data. For example, this is my demo application, it's kind of like shopping cart. So how do I implement this shopping cart? Basically I define a stuff like active request model. Then it has a migration, like you can configure the field. And also have the syntax, very active record. You can also have like a namescope. So it's very disgusting. And the third one is like, IMQ, IMQ is like a Ruby motion query. What is a Ruby motion query? Basically it provides the syntax. You can imagine you are using the jQuery, you can just find a DOM and override it, do whatever you want. So it's very, very powerful. And IMQ also provides style sheet. For example, like this, this is like product list. So I just configure the array, then I write style sheet. So it's a whole graph. The next one is like AF motion. AF motion is kind of a Ruby motion wrapper for FM networking. So it can call API like this. Very like the HTTP client we use in Ruby on Rails. So this is science. So I use the Ruby, I use AF motion just like implement the sign in. And they are also a gene called motion authentication. So you can implement device logging in very, very quickly. So I build this demo operation. Guess how many hours I spend? So I build this with no object C and see with the tech background and I only spend then in less 10 hours. So the last week a generous interview me and I just coincided in building this application. So he asked me, when do you start learning this and how much hours you spend? I said, I just learned yesterday and I spent in less hours. So that's a much more gene. So welcome to join this community. It's a lot of fun of building this. If you want to learn always, I always APB building but always feel welcome to try this. And I will open the free workshop in the next month. So if you want to learn this and it can like join the ladies, okay, thank you. Hi, my name is Bruce. Today I'm gonna talk about how we resolve an issue between API team and client teams. So this is how we will work is that we want a new feature and we implement the API and co-review and QA and D4E. Then three app teams start working on the client part. The point is that sometimes the API doesn't change because the feedback from app teams then you need to do this for again. And this is fine if you are back in your API team the sprint is always, sprint is always one or two ahead. But sometimes it's not the case. Then this is like. Then this is, so there are a few solutions, options like API blueprint and IAML and the way they solve it is that you write a documentation in a certain format and for example, this is the HTTP action and the example request and the example result and they provide API mark, you can code. But the problem is that the file is like maybe even 10,000 lines, maintain that is like this. So, and also the other problem is that sometimes you have the very specific behavior you want to test for example you want to test violations for the user input. So we end up finding from this website that you can use you can upload an API blueprint document or even IAML to a starting point. So this is how it looks like. Then I have a demo app with two API endpoints and you can get this beautiful endpoints. You can send to app team, okay so you can start working on with this API mark and this is the code. It's actually JavaScript that you say, okay this is respond 200K and render this page and it is liquid template. And another issue is that sometimes it is working well until the day that the app guide can say, hey Booth we want to issue the final release candidate today. Could you give us the final API endpoint? The problem is that we have the API mark endpoint but we don't have a real one. So how? Okay, just forward the API request to the API mark. So basically you just call to a policy service then forward everything to it and the implementation is actually just forward the request use the HTTP library. Finally, the dematizement I wrote a gem to beautifulize your Rails console. So for example, this is the code looks like in hash user.o and you can even render a table. So just three steps you can get out of this. So yep, I'm from ASP and we are hiring located in Singapore and the blog version will be coming out soon. Please follow, please subscribe and okay. So I also like to hear how do you think about this talk. Thank you very much. Hello everyone. So my talk is continuous updates. So does anyone know what does this five mean? It means I have five minutes. And also we run a conference in Singapore in June it's called Radar Lubbicoff and I have a story to say because I saw a conference talk about CS education and the panel this morning. I got into IT because I was so into back-skimbo when I was young and Michael Jordan said, oh, just do IT, then I do IT. So I'm Juanita Fadas from Taiwan and I work for Jordan Groupco. I also maintain Ruby language website and Rails guide. And so anyone knows this website, right? It's called Ruby Genes. It's a website you install your dependency. And bundle is the tool that you use to manage your dependency. So you can bundle install and you will create a gen file and gen file the lock. So your dependency will be automatically resolved. But there is another comment called bundle update which will update your project dependencies. And so how often do you update your project? Okay, so maybe once a week or once a month everyone will say just I will update later. But later actually equals never. So my boss, he said that continuous updates practice of updating all dependency several times a month. And so there are a lot of benefits to continuous update. First, you have the incremental improvements from new gems and it may fix your security vulnerabilities and reduce your technical depth and make future upgrade easier and developer does not like languages. And maintain enough to hear new reports from newer gen release. So and you can also learn stuff from every gen update and ship latest software. So sounds good but how do we do it? So the manual solution is like this. You bundle update and you commit push and open a pull request. But it may take you about 10 minutes and 10 minutes you can use the money to buy all the food. Why do it yourself? So from idea to a script, I wrote a script. But this is also not good. So there are notification services like a Genesee and library style. But the thing is they only tell you but they don't, you still have to do the work. And so it's still not automatic. So we build a service, it's fully automatic. It's called Tablet. So how does Tablet work? You will bundle update your project and it works like this. It will send you a pull request and with every update dependency you will show your link and compare view. Compare view is something look like this. So also a change log. So you can know these two versions, what's being updated. Also it will tell you how much time is saved for you. So you have a better idea of how this update saves time for you. Also we can do automatic security update. Security update is also we will send you a pull request and it will fix your trend that has availability that we notice from lubisac.com. So Rails may have a vulnerability and it has solutions, but so many solutions. Which one you should choose? Don't worry, I already got you covered. I wrote a other reason. Even though I didn't have a CS degrees but I still can. Wrote another reason to fix your vulnerability. So debug is your active support. We don't tell you, we do it for you. And so far we have sent 5,000 pull requests and saved like 400 hours. And so I hope everyone can update early, update often, do the continuous update. So hopefully we can make Ruby great again. Thank you. But actually I'd like to address a very serious topic if I could with all of you. This is very important to me. I believe it should be important to you as well. I've noticed during my time here, not just in Taiwan but here for the last day with all of you, that there's a serious lack of proper greeting between us all. I feel that the current state of affairs that I must address this today for you. Now, as I see it, there's this issue that needs to be addressed with the way in which we high five one another. I feel that the high five model is in fact not good enough. And some of you end up with a situation kind of like this. I've approached you with the high five and in fact it ends up in just total and utter defeat. So for all of you today, oh sad, sad panda. So for all of you today I would like to teach you all the proper method of giving an amazing and stellar high five. So the first thing I'd like all of you to do is to identify a partner, as somebody sitting to your right or to your left. If you do not know the person sitting to your right or to your left, you will introduce yourself to the person sitting to your right or your left. Please do that now. I will give you two seconds. Okay, very good. Now you're gonna need to put your laptop away and stand up if you could. So please stand up. Please stand up. Stand up. Okay, I will need a partner. If you don't mind, I will need a partner. First and foremost I need you all to be mentally prepared for such an event. So I want you all to close your eyes very briefly. Close your eyes and visualize yourself greeting the person next to you. You will greet them with amazing energy and excitement. Okay, all right, the way in which you do a stellar high five starts with this. First thing I want you to face your partner. You will face your partner straight on. You will take your arm at a 90 degree angle. You will make sure you're exactly 90 degrees from such partner. Now don't go too far. Listen to instructions, this is very important. The next thing you will do is you will lower your arm. You will look, partner in the eye. You will give them deep gaze and look of excitement. You will place arm back. You will focus on their elbow. Focus on their elbow and slap with gloriousness. Now you will turn to a partner to your other side and you will do this one more time. One more time to the person to your other side. Remember, focus on the elbow. All right, thank you very much. I hope you all learned something here today. But actually I will leave you this one last thing and that's this. If my company decided to build this app, it actually allows you to give a Twitter stellar high five to somebody else. If you go to stellarhighfive.com, you put in Twitter handle, your Twitter handle and you send them a message. You can do that at any point. The app is live now and it is for your taking. Also, I have a very, very small sum of these stickers. If you exchange a stellar high five with me and I have some left, yours. Okay, thank you.