 Thank you. Hi everyone. I'm really happy to be here today. I'm going to be talking about 20 tools and techniques that you can use to make yourself more productive. Let me talk about myself. This is me again. I'm on the Ruby Club team. I maintain a gem called Comunary, which is a Rath Podgenetter. I'm the creator of the Digiming gem. And basically what it does is if you have any typos in the method, and it tries to suggest to you why it should be. So it is basically the club before Ruby. So someone calls it's gem, the club before Ruby. Anyway, I work for a company called Pivotal. We have obsessed in Singapore, Sydney, and Tokyo. So if you are interested in working at Pivotal, just let me know. Going back to the main topic, before I really start, I'm going to speak really fast. So I'm going to upload the slides later so you can take a look at the slides later. The first one is actually from the Digiming gem. If you install Digiming 1.0.2, you can require Digiming Experimental, which enables Digiming's experimental features. Let's take a look at this example, which is there's a typo in the instance variable name. And what's going to happen is it's really trying to call the method on there so you get an error. But if you require Digiming Experimental, it tries to find the right correct instance variable name for you. Let's also take a look at this example. You have a hash and you want to get a value out of it. And there's a typo in the key name and you get a key error. But again, if you require Digiming Experimental, it will try to correct the wrong key name for you. Another example would be something like this. Notice there's a typo in the word initialize. And this is tricky because you define the method called initialize and what you really call it's new. So it's really hard to realize that there's a typo. But if you enable Digiming Experimental, it will display a warning. So it's going to be a little easier for you to notice that there's a typo. Okay, number four, bundler config gels. It allows you to install gems in parallel using threads. By default it is set to one and let's say you want to install about 200 gems. And it takes about three minutes actually. But if you set it to like 610, it only takes 30 minutes, which is a lot faster. The next one is making a request on Rails console. If you are on Rails console, you can actually make a fake request to the controller by saying after get path. You can also say after post or after delete. So this is really handy if you want to process a controller action. Okay, the next one is power set. Let's say you have a test and that's valid and you don't know what's going on. And what it does is it displays description of social messages for you. So this is really useful if you have a mysterious failure in your test. There's also a JavaScript implementation. So if you have a JavaScript Rails project, you should definitely consider using this too. The next one is a watch command. It executes a command periodically. Let's take a look at this example. On the right side, I'm running a break test. And there's a failing test. And on the left side, I'm going to change a file and save it. And in the watch command, we run a break test. And here now you can see green. Usually, I have to stop Emax and go back to the terminal and run the test. But if you use watch, you don't have to do that, which is great. Okay, the next one is new thing of get depth. This is actually new that, new thing that came out last week, which is called compassion heuristics. I think you've seen something like example on the right side, which is quite not right. But if you set compassion heuristics to true, then the get will be a little smarter to display depth. The next one is breadth expansion. I think you've, most of you know that you can use, you can move a file by using MV, but you can also use something like this to move a file, which is a little shorter. This is called breadth expansion. And you can also use this with a lot more commands like CP. The next one is history. Terminal actually remembers the command that you ran before. So if you set history, it displays all the commands you ran before. And here you can see some numbers. And what you can do with them is that to run a specific command that is associated to that number. You can also say ban ban to run the last command that you just run, like this. And sometimes you don't really remember the whole command. But if you only remember the first or second character, you can say control R. In this example, I'm trying to run breadth test something, something, something, which I don't really remember. But I just have to hit control R and hit break. And in the terminal will give me the right command that I would like to run. The next one is tree. It's like LOS, but it also displays the directory tree. So if you don't know what's inside the directory, this is really handy. You can also find a file if you use it with a grip. The next one is AG. It's a card searching tool. Similar to an app, but it's a lot faster. Here I'm trying to find files which have the word literal. And the result looks like pretty much the same as what app provides, but it's actually a lot faster than an app. So if you think app is slow, then you should definitely consider using AG. The next one is HTTP pi. It is basically a better version of curl. Like I said, I make a request to Ruby Jamz and you get a result like this, which is not really readable. But if you replace curl with HTTP, then it will pretty far the JSON. So it's going to be a lot easier to read the JSON. But sometimes you don't want to install HTTP pi because it's a Python implementation and you don't want to install Python just to be able to see JSON. And that's why JQ plan comes really, really handy. So how can we use it? You make a curl request and you can just pass, you can just type the result to JQ. It will just pretty far the JSON result for you. And what's nice about this is that if you want to know what's inside dependency development, it will just filter the results. So if you have a really, really JSON result, you don't have to scroll down to the bottom. You can just say JQ, like this array, or add this property, something like that. So it's really useful. The next one is pigment types, which is a syntax highlighter written in Python. I used to use more before, but it's not really pretty. So I started using pigment types. So if you use it, it colorizes what's inside the file. So it's going to be a lot easier to read. And I have this address on my personal computer. So I don't have to think about what kind I should be using to display colorize results. So it's going to be like this. Sometimes you go to Stackable for the server files and then copy it past the command, but you don't know really what it's really doing. In that case, you can just go to explain.shout.com and then pass that command. And hopefully it's going to explain what it actually does. It's not actually 100% smart. So sometimes it doesn't work. This is an open source project. So if you think you can improve, then you can just go to GitHub and it's a pull request. The last one is shifted. Sometimes you want to see two windows side by side, but it's a little hard to adjust windows manually. And what it does is if you hit a certain command, it will position a window on the right or left on the bottom or top. So it's really useful if you want to see two things side by side. Okay, that's a 20 tails. That's it. Thank you so much.