 My name is Jim Ratzik, I'm down to Friends and GitHub at Big Tiger. I actually just joined HashRocket before, that was HashRocket back in 2007, and I'm going to Twitter at Jeremy Jr. My name is Robert Pitts, am I loud enough? Yeah. Okay. I like music and I'm scared of largely useless programming languages. I did. Yeah, that's not a good way to end this. There are students up front if people want to make a list. Before coming to HashRocket, I worked with Hampton Catlin of Amelfame and Steven Bristol of Lost Everything, and I'm at RBMTX on Twitter, and it means nothing, and it has to do with me. He's from the X-Bot. No, he doesn't. But he doesn't want to, you know. Anyway. So the philosophy of him, who wants to hear about the philosophy of him, not me? I want to watch him type, and we're in for a treat because he's also on cold medicine. Little foggy. But he's fast. Yeah. We'll save it by the rain. I'm just going to go over this thing. So we're going to learn by building a blog because that's the greatest way to learn anything. Pretty sure that's what modern movies are doing. So what we have here is a generated Rails app. And a shareware. A different color scheme. Yep. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Awesome. Thank you. They, in Scotland, they waited, like halfway through the talk. We're just going to start over. All right. So we've got show notes. Yeah. So don't do that to me. Okay. So we have a cheat sheet here. see the cheats. And where are we? We just did Kall's team pipe. Yeah, oh it's our key caster. See, that's why it's there. See, Kall's and James? No. Why doesn't key caster in my quick launch? This folks is why you practice. And let's not do that. Okay, actually we did practice last night. So we have show notes. We don't have the other part of the window. Oh my god. No, no, no. I can't read with key caster. It just occurred to me. Looks long. You don't practice. All right. So we open the Rails project. We're adding log intent to the ignore file. So basically we're starting from scratch. You get to see just about everything except for Rails, LSRC, blah, blah. I think we might have to turn off key caster. Yeah, it's a little not just apologize. It's too big. Yeah, if I make it smaller is it worth anything? You really want to put last of them? I do really want to put last of them. I want to put it for some reason. Herbuses. Spleen. On side. Hey, not a box. Is that better? Is that even worth keeping on still? Yeah. You can make it what's called lap text on the right. Oh, that's me. I'm outside the box thinker. Good man. All right. Now that didn't help at all. Let's hit on my screen. Let's put that around. We're already eight minutes into our presentation. Yes. And you guys know exactly how to use key caster now. And the problem with our talk is that we originally wrote it for 45 minutes. And we have 35 minutes to get it. So hopefully that's what suits that kicks in. That's good enough. Let's be split or 20 be split. So right, so we're ever getting more. All right, so that's 20. Yes, it is. So what we're going to do is we're going to do split pains. This is a from the 70s, but it's still actively developed. We'll talk more about that later. And so we have our show notes on the left and our working space on the right. All right, 10 minutes now. So what we're going to do is we're going to call it command line execute command line. Yes, which is in the room, bro. And what this is, it allows us to commit to or as two authors and give credit to both people inside playing to both people. So what we're doing here is we're committing from inside them using a phone called fugitive. Right. So we did a g status, which shows us all the changed files, just like you would get from a status minus key, although a little counterintuitive will stage the file or on stage file. So we made a commit. Yes. Yes. So we're going to do a rake. You can't see it, unfortunately, but if there is an X back and skip the project, a good idea. All this is built off of the folks rails that have been plugging colon rake parameters that you would have to make, for example, DD create all runs that get our show notes back. We're going to use the rails that didn't generate it. So we did a colon r gen search for generate. That's the main thing that you have to generate on the same line changed in rails three. But we added our spec support. We're going to go ahead and stage all that stuff minus, minus, minus. These are now changes to be committed. He's not currently using the mouse at all. He started using the mouse. He casted track. I hope you put a little like mouse happen. It's not mouse cast. What is the reason for the bottom? The reason for bottom is a part of rails open. If you have questions, obviously we're going to ask them. Resonant name offers some fuzzy finding stuff. We'll get a little bit more into that. At this point, we're a little off for a minute. Okay, yeah. Now, we're going to start staging the first spec generated stuff. Again, we're committing from the pram line and pass the message and clicking from within dem, so we don't have to go to the terminal. We're going to generate again. Consider that it's chair scaffold. It's just like rails generate scaffold back in 23x. It has a few opinions that we use with hash rocket, camel, arch spec, et cetera. We're generating a scaffold for a host that has a title and title of mine. Which creates everything that you would normally see. We just did a colon R migration to get into the most recent migration. Now, we're going to rate. Rate is a spark man. If you're in a migration and you run rate, it will run on migration. If you're in a spec for the model, it will run the specs. We just did an R plug-in, which takes the dem file. Using bundler, we're going to add shoulder to this specific version that is based on the admin bundle. We have shoulder installed. And hash rocket is used, so we're going to go through and add tests for the things that we just did in the migration. We're going to validate the presence of the, who's called it right? Title and body. Yes, it was. Title and body. And then we're going to rate run our tests. Look at that. Number of arguments. Number of arguments. It came up. That's not right. Nope. Why? It's not cool at all. Never using that again. He just deleted from wherever he was to the parent. And that was a delete to the parent, VT parent. Sort of efficiencies that you will see. There we go. And now we have expected vendors. So push should require body to be set. And also the title to be set. Neither of those happen. So let's go ahead and we're going to R model or go to the associated file from the spec, which is capital A. We're going to go ahead and put in the validate reference. There's some context specific auto-complete there. We're going to validate presence of title and body, run our spec, and it's going to go up. Why did I realize that? That was the generated. I was in the back. So we're going to go to the associated file again. Our title and body were not filled up. Therefore, we're pulling up. Make the spec run. Colon needed to command R or colon rank. Or colon dot rake to run the specific test case under your cursor. Just like that's me. Sort of. Except not. All right. So we just added validation to the post. Just letting them get it committed in their group. We're going to do a gstatus, just fugitive. You see all the things that were untracked. And we go ahead and hit minus. Sage them. Then we can do things to commit. We do a d-commit, which brings up the window to a writer message or you can flash dash m. Just like the command line. And just like that. Not leaving good. All right. So one more thing. Actually a couple more things. Let's go ahead and just run to. We haven't used it. We haven't used it. Let's go ahead and just jump to our extract. So that's our view post. And that's the puzzle finding that we're talking about before. So all that stuff looks like a partial. You can type our extract over that selection. Give it a name and just create it a partial. Well, let's get the post in the app. You post directory just like you'd expect. It's awesome. Love him. And it also do your render partial post. So basically the, we're paving the call paths. The things that you do all the time are being pulled out into macros and helpful functions. Let's serve up the app. Yeah, let's serve up the app. Did our server get deprecated? What do you have? What Tim did that for us? Oh wait, I think I was just going with. Just kidding. So even from Vim, we start server. The browser. See the preference kicking in. Yes, and I did the same. And create a new post. You have a title. Content. Great as it goes. Yay. Back to the index. So just for a blog. Summary up myself. Back to slides. Back to slides. What's that? With tests. Excellent point. No idea who last read this, but Glenn called you out. Maybe you should be in the front row more time. He's trying to. Come on. All right. So friends here. I apologize. I'm going to look behind me a lot. Now look at the audience. I'm going to take a good long look at everybody here. So that you all feel like you're involved in the talk. All right. Next slide. Efficiency is really. Please. So efficiency, this is really how I started using Vim. And we pair it, I drop it all the time. And the thing that got me. I was a technical user. I was one of the last holdouts actually. And then I started, so people would work with me. And I would make them use TestMate. Because I didn't know them. They would do. But then I said, you know what? I should probably, there's pretty much a whole office that switched from me. So I started pairing with them. And my job rocked. They were just so much more efficient than I was. And with a little bit of practice, it's probably efficient slide. Convenient key mappings. The whole idea is that your hands stand in the home row as much as possible. Navigation that isn't over here with the arrows. You can do that. Use it as a transition. But HDKL is the Vim way, you know, of navigating. So there can be key mappings in that they're where your hands are already. But they're completely unintuitive. So it takes a little bit of practice. It takes learning. But the benefit of using that unintuitive key mapping is that it's much more efficient. It's where your hands are. So slide. Hands off your mouths. Lester was just asking. I feel like an old Lester now. So hands off your mouths. No arrow pees either. You could have had a blog post that everybody talking to use Vim was wrong. And basically what he was saying is everybody told him to just drop everything and use every Vim construct. Which is what Lincoln was telling you. Which is... We talked about cards earlier. But there are patches in there. Arrow pees, you can still use arrow pees. But you should learn to use HDKL to get the efficiency of using Vim. Slide. Choose your movements wisely. You have that little bit of going back and forth to the arrow pees every time you navigate. Slide. It's well documented. In fact, you can't read it. But it's well documented. But you have to read it slide. It's a successful open source project. Slide. It's strong opinionated leadership. It's like all great open source projects. Features in order to be added must be documented. That's one thing that they do really well. Read documentation for everything in Vim. You just have to read it. Good software, good documentation. Start to find downsides. Keep learning period. If you override that muscle memory of reaching for the navigation down to the arrow pees slide. This is a... Who's seen this comment before? Sorry. It's a possible learning period I started out in notepad. I went to Pico actually. And I was a dot epic over. That should be P612 before that. There's text made in there somewhere. Yeah, text made right here. But it's basically not that. So there is a steep learning period. That's not really a period. It's an obstacle. But what we're here... What we're trying to do is show you that there are ladders out there that you can climb up and get yourself like here. Then you can jump up from there. Emacs. There are way smarter people than I that use Emacs. I've never actually been able to. Robert's got some experience with it. Maybe someday I will. Thanks. There's a benefit for your dev environment. Slide to the slide. Whatever operating system you're using. Even Amiga. Which is actually where Ben was originally called by Brian Lowe on our slide. Go ahead and download. We'll wait. Except we won't. Sure. That's why now you're going to rumble. Exactly. I apologize. I'm going to have to go look up Bill Julian and find out why he grew up. I didn't want to have to say for sure because I didn't want to fool myself. Did I say BI? Okay. Which was based on BI. Which was written by Dilton. Next. Awesome. Dilton currently calls BI one of his biggest mistakes. But I completely disagree. It got me at awesome. This is where most newbies are dumped. When they open BI or BIM or MFIM, whatever. And they get in and they're like what the hell is going on? I type fighters and they don't appear on the screen. Insert mode. This is just a text editor. More or less. This is what new developers would expect. Certainly not your favorite mode. What you do more often is you edit text in a text editor. So moving things around abbreviating things like that. Slide it. What's in the text? Slide five. So you can't see it off the end. It's yank and flip. We all know that you're developers. You want to copy and paste. OK. OK. Change and delete. So you have a smuchted phrase, sentence, paragraph. You can change or delete it with C. Undo. F. Find the next occurrence of this character in a line. Next. And then slash is find the next occurrence of this string in the text. Composite commands, build commands for even more food. So if you want to mail. So if you hit W in normal mode, you will navigate words. So if you want to change a word, CW, combine them together. See what this is going. If you wanted to, I don't know, delete a paragraph. You can see they're you want to yank, which is didn't speak for a copy. So you want to yank to the same character. So you want to find the the greater than sign in the yank to greater than sign. And as you can tell, it usually reads like English. Next. Command line mode, you can open save files, access command line like we saw how we were doing earlier. You do substitution left or other things. No time to talk about it. Visual mode. You can hit B to enter visual mode. Start the selection for personal position. You can shift B to select an entire line. You can control B and actually do a block selection. Which is like key boarding or something in text make, right? I think it's option. Option. Option mouse. And I'm realizing the client's slide is 20 to 42. Oh, it's got faster. Then windows. Which you saw it's used. We have a split window on the one side, which show it's continued. Vertical splits you use DS or B split. And you can split this or this splits. Buffers. These are copies of files being edited. They're currently and they're stored in a sequence list. They threw your auto-complete. So control P will auto-complete from your buffers. Control N will go the other way. Yeah, it gives different questions. Right, next. Sorry, is there a question? Okay. Super handy for navigating products outside your braille.com bundle. Oh, but wait, there's more. So if you're only doing Ruby and you don't need the overhead of all the braille's helpers, you can install rake.bin for a demo of a shed that's way lighter. If you missed the goodness, as Kiko describes it, it's a braille.bin without the rails. Good stuff. Macros. We're not going to do justice. Macros are awesome. You can record a movement of a series of actions, like editing and then, you know, play it back any number of times and play it back multiple times in a single run. You can register for playback later. Right, like, say you migrate some new plugin and it largely functions the same, but that's a slightly different syntax. You can just record a macro real quick and play it back on every line that you need to and it's really quick for making sweeping changes. Next. Next. Remap the caps lock scene. Remap it to escape, which people do or control. To control if he's really small in fact, I don't know if he works. Keep going. Caps lock is the most you're yelling at people on the internet. YouTube comments usually. Plug in for efficient rails development. Rails.app. Which we've been using today. Continue. Keep going back to a year ago. MoRails.bin. MoRails. Our model, our controller, our view, our spec, our integration test, our environment. You have an idea where those might take you, right? So next. There's colon r and colon a, which are just l, l, a and then all of them. Yep. Different things, different files, but it's all very smart. Awesome. Works like you can. There's our script and our generate. Our server, our extract. Integrated r, r, i. And then there's rake to run. It's, it's convex things. And that rake. Your aspect will run a, run rake for just that spec. Controls, control u is more on a complete, complete box. Seriously, you don't want to have curtains wrapped. Dmorp. Open it, make it nice. Future.bin, which you saw us use, which is really awesome. You could just stay in your one after if there's anything wrong with the terminal. Continue. So there's dmorp, gbin, gstatus, you give dmorp a deep breath. Got to do your commit history. It's super hot. And guess what? There's more documentation. Snippets.bin. Yeah. Nurtry. Nurtry is similar to the file for, text me. And then our value is just built into them. Which we were talking about last night. And continue. So our tree, our trees in Rails, we'll give you Nurtry. Otherwise, pull in Nurtry. But wait. You can use these to transition. So, use them to transition. Use it to be productive in the interim that you should practice next. You should practice and learn the BIMs because of ways of doing it. That's where you gain the efficiencies. We surround that BIM. We're going to efficiently manipulate your surroundings. So you want to ink a selection of, so ys, the Wren with ink. Everything in surrounding parentheses. You can change your surrounding things. So if you want to change the surrounding friends for whatever reason, you can do that. It's just a simple cs quote Wren. And it sounds a little bit difficult to use, but in practice it turns out to be super useful. And when you don't have it, it's very painful. So for example, if you've got single quotes, you want to change double quotes, you can interpolate or change brackets to girlies. Whatever the case may be. Next. An imperative BIM. Brackets-based shortcut pairs. That looks like weak. Cool. It's pretty much accounted for in an imperative BIM and it's all in equal and opposite left and right pairs. Good stuff. Let's skip this slide. Wait, what? There's three slides with wait, what? These are the important ones. Wait, what? So there's imperative BIM in your Firefox. Oh really? BIM in Firefox. You see that, but as soon as you start using BIM and you, you know, you get new muscle memory, then you want to use that other places. Right, when you go and press them to browsing a document in that fashion, going back to having to scroll or whatever it's to reach for the most ankle, it hurts. I don't know that it's painful. It feels painful. It makes you feel uncomfortable. I've said I haven't tried it. It doesn't go Firefox in BIM, so it's a slightly different thing, Max. Yeah. I feel like I met some point in that split. So wait, what? BIM in your Chrome. So again, if you're looking for those key bindings and other programs, there's also a Mac OS 6. What is it? A program? It's given to you from Mac BIM. It installs and edits in Mac BIM like any piece of software. So you can map a keyboard shortcut to it and then it'll, if you're like in a text form on a website, you can just do that. It'll shoot it over to BIM real quick. You can edit there and then when you write it, it will write it back to the form and it's nice that you've heard that. It sounds absurd, but once again, it's really nice. It's given to you in Chrome, and it's getting more mature. The imperative is still Leeds, but Firefox is Leeds worse, but it's nice. Yes. We worked on that all day. We'll carry the screen in BIM. Actually, Josh, I thought Josh was here, but we actually, when we started our Chicago office, we had worked for a week remotely, which we tried to avoid typically, but it was actually pretty decent. We were able to both have the same machine. We had BI running, and we had most of our settings available to us. We had real-time BIM, et cetera, and it was, you know, there was very little lag. It was all text. We did audio chat on a different machine. It was pretty awesome. How did Josh put it? He said it wasn't as awful. No, it wasn't as awesome. It is after image that BIM. I don't see the editing in GIFs. You totally want to do that all the time. Yeah. That was actually just absurd, unlike the other things that are actually useful. That was actually the most appropriate way of what it was going to be. Some references might have been improved. You know, this is the smallest amount of common functionality that all of us at Cache are going to use. You can find, just go to plenty, go over IRC, you'll have a few numbers. Next. And, obviously, code help. There's also a BIM tutor inside Code Help that will even if you know BIM, even if you use BIM, you should go back and try it. You'll learn new things, or be reminded of things that you should be using. Hey, that's slide 42 and 42. Yep. Any questions? Yes. Is that hash rocket delivering more value to customers for less money than time now that you guys are using BIM? It's a fair question. I was leaning towards yes. I don't know that we have hard metrics, but there are a number of efficiencies that we gain. Corey Haines, if he has a sticker on his keyboard that says type, it's not the bottleneck. That's kind of what I'm getting at. There is real value in some sort of workplace safety issues. As far as couple problems are going on. Okay, sure. It seems to me one of those developer happiness things, is that consistent with your experience with it? Well, it's certainly that. I think it's really valid. It's like this thing is going to make you happier. It's going over the journey obstruction. But also the notion that the typing isn't the thing that keeps us from delivering value. Sure. It's a fair argument. There's a cycle of BIMcast on Railscast that's really helpful to do. I would definitely second the BIMTutor thing. It's like the easiest way to get started once you figure that out. Very, very helpful. So BIMcast.org is done by Junio. It's an excellent job. And I just know that we're in that end to end. Any other questions? Good. How do you script? There's an indent script which is the worst thing I've ever... It's not that bad. It's pretty bad.