Last week I had a heavy low egg, so I'm recovering now. This is Matt, thank you for having me. This is a nice visit to Singapore. Even I had only a little bit more than 24 hours to stay. I'm going to talk about Ruby after 25 years. This is the stripped-down version of the keynote speak in Ruby Alexa Conf in Taiwan this March. Some of them might hear the talk in the conference or maybe from YouTube, but you have to stand and prepare the question for the next Q&A session. Okay, I have to put this small dongle to the laptop. This year we celebrated the 25th anniversary of Ruby. Ruby was born in February 24, 1993. This is the day I picked the name Ruby. It's not the date I released it or no, it's not the day I started coding it. I just named it Ruby on that day. So in Wikipedia, for the programming languages, it recalls the release date of the language, which is... it doesn't work. It is December 21, 1995. The Ruby project was started in 1993 and then released in 1995. It is actually as old as Java. The Java project was the original name is Oak. The project was started in 1993 and the first white paper of the Java programming language was released in 1995. So the Ruby is actually as old as Java. It's the same age. So what's wrong with it? So it just turned 25. So 25 years ago, we wanted to name it after Java just because we had the programming language named Pearl. I used a little bit of Pearl and mostly shell scripts. So I wanted to create my own programming language. The language compares to the native code is quite difficult. You have the knowledge of the platform as long as the knowledge of the native code which differs from CPU to CPU. Having overcome that obstacle, competing to the C compiler is quite difficult. So I just gave up that path. So I just created some kind of interpreted programming language so that I created scripting language because shell and Pearl scripting languages are the second most used programming language that I used in 25 years ago. And the Pearl was pretty famous for scripting language. Remember that year 2003, we didn't have the Pearl 5. So it doesn't have any object-oriented programming language feature. So I wanted the better programming language than Pearl. We have the rumor about the Pearl 5 which should have the object-oriented feature. But the object-oriented feature of the Pearl programming language is a little bit awkward, as I say. So I created the object-oriented scripting language. So we wanted to name it after Java. And we had two candidates, Ruby or Coral. But Coral was longer in one character. It should be the name of the program so that you have to type every time. But the only one character difference makes tons of types of the type in combined. So Ruby is shorter and more beautiful. So we picked Ruby. Ruby is shorter and more beautiful. And Ruby was more precious. Afterwards, we found out very interesting coincidences. The Pearl is the birthstone of June and Ruby is the birthstone of July. And you might know the font names. The real font, physical font, has the name according to their size. So the 5.5 has the name Pearl. And the 5.5 point, the next bigger font, has the name Ruby. So it is quite sufficient name for the next Pearl. The next Pearl was our primary goal at the very early stage of Ruby. I tried to make Ruby the language as useful as Pearl. And as strong as Pearl, and to be honest, we went too far. Present day, we are not the next Pearl. The next Pearl is Pearl 6. In fact, it's next to Python. Or it's following Python, maybe, in some aspect. And it is quite difficult to imagine the future. 25 years ago, it is pretty difficult to imagine the present day. Ruby is used worldwide. No way. So the prediction future is always hard. So did I foresee the current popularity? Definitely no. There is tons of programming language out there on the internet. So we have tens of thousands of programming languages out there. Most of them are very unpopular. Very few people know about the language. And they gradually disappear in the history of the internet. But in some coincidences, or maybe some accidents made Ruby very popular, the predicting the future is always hard, difficult for anybody. So it's okay to be irresponsible about talking about the future. So it's okay. I'm going to talk about Ruby after 25 years about the future. So the trend now is the scale relative. 25 years ago, the computer was pretty weak. I used the Unix workstation, which is very, very expensive. But still, the power of the computer is pretty much weak. Maybe 100 times weaker than my laptop. It's quite... The first Unix workstation I worked with, I developed Ruby 25 years ago. The CPU was the Motorola 680K, 68K. And the memory was, I don't remember, a few megs of memory. And the hard drive was 180 megabytes of the hard drive. It is nothing compared to the present days. Well, everything is getting bigger. So we have the telebites of the storage in my laptop. And in the server, we have, I don't know, the petabytes of the storage collectively in the data center. And the memory was the one... Maybe one cost has 64 gigs of memory. It's far bigger than my hard drive back then. So everything is getting bigger. The data size is bigger, traffic size is bigger, program size is bigger, and the team size gets bigger. So we have to fight with these sizes. So this is how we work on Ruby 3, the next major release. It's kind of our fight against the future. We have three major goals. The performance, concurrency, and the static analysis. The performance. Performance is pretty much important for the language. Of course, Ruby is slow compared to, say, C++ or Java, because it's interpreted. It's run on top of the virtual machine. But no one complains about the faster Ruby. So we enjoy the productivity of Ruby and the succinctness of the programs. But still, if Ruby runs as fast as C++, that's okay. So if Ruby runs faster, we process more data, or we process more traffic so that we can fight with these sizes. And then these days, the performance of the single core would not be improved because of the limitation of the mobile as well. Because the circuit in our CPU is so teeny so that if the Intel company designs wrongly, the chip will be burned. Too many heat there. So they have to put many cores in the chip. So that means we don't have the faster core. Instead, we have many cores in the chip. So that we have to utilize the concurrency to accomplish the performance. So utilizing these many cores, we can handle more traffic. And then by providing the way to strut static analysis of the program so that we can fight against the size of the program, the size of the team and the size of the software is getting bigger and bigger so that to fight against these sizes, we have to provide better way to find bugs and the tests. So the performance and concurrency in the static analysis is the three major key to the Ruby 3. So by performance, we have the project named the Ruby 3x3. So that means the Ruby 3.0 will be three times faster than Ruby 2.0. Let me explain a little bit about that. So that we are not going to have the big jump toward the Ruby 2x and Ruby 3.0. So that we are adding new features to Ruby 2x. Like we have added new garbage collector to Ruby 2.2 or maybe we added some kind of incremental garbage collector in Ruby 2.4 or we had added some kind of the JIT compiler to Ruby 2.6 in the current version so that we are going to release this Ruby 2.6 in this December, coming December. So that means that you will enjoy the JIT compiler next year, and it is. Or you can try it right now by downloading the trunk, the very bleeding edge version. So the performance will be improved every year. So that compared to Ruby 2.0, Ruby 3.5, the current version, the recent version runs, I don't know, 20, 30% faster and then consumes, I don't know, many times fewer memory, less memory. So that we have improved that much. So that we want to measure this kind of improvement into this kind of 3x3. So it's not easy, but we need the difficult goal. Like, you know, the President Kennedy in 1963 so that he made some kind of announcement to bring human beings to the moon and then at that time of the year 63, it is nearly impossible. But he declared, we go to the moon, we go to the moon. Because it's not easy, it's easy, but it's difficult. And it's a huge technical challenge. But by having that kind of goal, in July 1996, the three people went to the moon and they're standing, walking on the moon. I didn't realize I said 69. 96? I'm sorry, 69. July 69. Oh, yeah. I remember I watched that on my TV and most of you haven't been born. Anyway, this kind of goal is Ruby 3x3. And by having goal, miracle happens. And then last year, a guy named Vladimir Makalov, who is from Canada, who was born in Russia, he is employee of the Red Hat, and he's in charge of the development of the GCC for the last 20 years. And he's the very expert, nearly genius, of the compilers. And in Rubik's Eye 2017 last year, and he presented about the MJIT, which comes with the RTL, which stands for the registered transfer language, which is the technology behind the part of the GCC, and MJIT, which stands for the method jet. So it is kind of silly, though. It is a jet compiler. That means that MJIT generates the C code into the file corresponding to the Ruby programs, Ruby methods. Then it kicks GCC or Cclan to compile these generated C files, then rolls those five compiled functions by the DL open dynamic loading, then run it as a native code. It's kind of a silly idea. And he implemented that. And it did run fast. So then he implemented the just-in-time compiler using GCC in the realistic way. It was, yeah. Actually, I was joking. We discussed about this kind of approach. We just gave up. It's kind of silly, but he was serious, and he implemented that. I was so impressed. It's compiled by GCC. But one drawback is he implemented a new virtual machine, a whole new virtual machine. RTL itself is a sign of the registered-based bytecode, so that he implemented the virtual machine and its compiler. And the big problem is the big jump. So replacing the virtual machine and the compiler at the same time is too huge so that it is quite difficult to debug the things, so that it is, you know, the... HisMJet runs some small Ruby's programs very quickly, pretty fast. But it doesn't... It couldn't compile, say, Rails programs. Rails application is huge as a whole, so that it's too big, so that it was hard to be stable, and it was hard to keep compatibility. So the other guy, Takashi Kokubun, implemented the MJet, which is replacing RTL by the current virtual machine bytecode. So that it's not fast, it's workable. So that the current tree, he is working on improving that, and we have tons of rooms to improve the performance. So that next Christmas, you are going to have the Ruby 2.6, which comes with the JIT compiler. You don't expect the performance yet, but then we have tons of rooms to improve it, so that in the future, we have a lot of chance to improve the performance. Then, so that, you know, Brad, who originally developed MJet, so that he, you know, the part of his work, MJet part, the compiler framework, the JIT compiler framework was taken, but we have to give up his very important RTL part. So he tried again in this Ruby conference this year. He came back and he, which one? Okay, I made a mistake in the slide. Okay, let me see. We will see the JIT in Ruby 2.6 next Christmas, and then you can try it with the dash-dash-jit option, so that you download the trunk version, so you put the dash-dash-jit, so that the JIT compiler will work. And a very simple software, like the native naive loops runs pretty fast, but in a complex program like Rails application, well, okay, it already runs somehow. And yeah, and Brad came again, I'll try it again in RubyKai 2018, comes with the new technology like the Mio, which stands for peace in Russian. And then that means lightweight JIT. So in the very complicated language implementation, like the VA or maybe the Firefox JavaScript implementation, it has the many layer of JIT, so that he has the lightweight JIT. And then, yeah, the problem with the MJIT is that it is very heavy to compile everything by invoking C compiler, so that we try to reduce the burden, but it's still heavy compared to the built-in JIT compiler. But the Mio is very lightweight JIT compiler, and then it only supports the X86 and ARM, but it is quite lightweight so that you can build M. And then it is not fully optimized, but it runs anyway, so that compile time is 10 times faster than MJIT. So that maybe we can have Mio in the future version of Ruby to implement the more lightweight, more faster Ruby. So JIT is not panacea. It improves the CPU intensive task, but if the bottleneck is not CPU, it doesn't help it. The performance at all. So that don't expect too much. So I don't say that every Ruby program will run very fast using JIT, but the CPU intensive task like LOOTS or maybe some of the text processing things will be very fast. Well, maybe if the bottleneck is the database connection or maybe network, it won't help. Okay, concurrency. As I said, concurrency will fight against the traffic size and we have the multi-core and many-core these days and the multi-taskings. The multi-taskings is over-evaluated. For example, the Node.js claim to be very fast, but it's single-threaded. So we might not need the real multi-threading in many cases, but at least we have some kind of the CTU intensive multi-tasking. So in that way, the real multi-tasking will help. So we have a language named Alex, which has the very concurrent virtual machine or maybe we can have the multi-process up to put up everything, every multi-tasking into the operating system like the Linux or maybe the Windows or something. So these kernels can easily handle the multi-processing. So the bottleneck of Ruby programming language is JL, which stands for the giant interpreter block. Which is the Ruby basically runs one thread at a time because of the safety-ness. What? Because of the safety-ness. You know, the thread shares memory, the thread shares object and the status so that with multi-threads accessing the same object at the same time, it's quite difficult to keep the consistency so that to keep the safety so that we need to have the giant interpreter lock so that it is quite easy to remove the giant interpreter lock by modifying the few lines of code of Ruby virtual machine but your software will probably crash. The zero is for your safety. It's safer, but it's slower. So we have two ideas. One is the autofiber. As NoJS did, that's so that we have for IO intensive works that we have the very quick context switching is required. So the fiber is much lighter than threads and it's much easier to understand. So autofiber is the IO context switching by IO and it's still the fiber. So that its overhead is much, much lighter. For the CPU intensive task, we are going to implement the guild. The guild is the little bit different abstract of concurrency. I'm not going to tell you about the detail but Koichi Sasada, who is the VM guy is in charge of it and he's the diligently working on it. So we can probably by using this kind of high-level abstraction we can go even further, say cloud-based FAS, which stands for the function-as-a-service things. So by using this kind of the guild stuff you can build up the very efficient Ruby function-as-a-service or maybe highly distributed tasks. Static analysis. Oh, it's almost all the time. The Ruby is optimized as the small teams. Consize abstract of flexible. But after Ruby on Rails, the software is getting bigger and bigger. The Ruby on Rails itself is dramatically the development by providing web abstraction but abstracts view of web development. But abstraction is the key. But as a team gets bigger, a code gets bigger. It will be harder to maintain. Then the people require static typing like two JavaScript people approach the coming rays of TypeScript or something like that. But I don't like that. Because the static typing is not dry. So that if a programmer works with the types, so that we should not be able to omit, we should be able to omit them. I don't know this and things, but I'll forget about that. So that the types is the key, but I don't want to write something and type the question of things. It's redundant. So the guy named Sotaro Matsumoto he challenged static type inference in Ruby in his PhD paper, but he proved it's nearly impossible. After his graduation, he tried twice and failed. So the type inference, the traditional type inference does not work for Ruby. So his new challenge is named STEEP, which does not infer types most of the cases, but STEEP requires type description files like a TypeScript does. So imagine .d.ts file, then STEEP 6 type integrative. There are two ways to provide type description. Type description file and the comments. I'm not fully satisfied with it. It's still redundant. But the future is also... But providing this type description file, I think we can extract this type description from YAR documentation or maybe type inferences or the runtime type aggregation or the abstraction interpretation, which we call it AI. Ruby generate the type information from AI. Yeah, sounds nice. Runtime type aggregation means that you write tests, right? Yeah, and then you run tests, right? So by running tests, you have the type information of the method of the class and then once we run the test correctly, after gathering this type information, you can generate this type information to the type description files, so runtime type aggregation. Or maybe if you have some free running software by virtually tracing the runtime call path, so that you can gather the type information, basically, which we call the abstract interpretation. So by evaluating these abstract interpretation, you can gather this type information. From that type information, you can generate the type description. Once you have type description files for every method, every class, so that you can have the static type check using the technology like Steep. So that that means without writing any type annotation to your code, so you can statically check the type of your software. That would be nice. So at the beginning of the Ruby 3 project, this is kind of like the dream, kind of impossible dream, but having research, having experiments, so now we have these great things, including JIT compiler, including the higher concurrency abstraction, and these type referencing things, we call it type guessing, because by using the term type inferences, the type theory people will be getting at, so that we call it type guessing. Anyway, this kind of static analysis is nearly possible in the future, maybe the year or two. That would be wonderful. So we will have the Ruby 3, the performance will be improved by using MJIT and other technologies, and concurrency in the Guild and the Art Fiber, and the static type analysis using STEEP and other software analysis things. So that would be great. So we will have Ruby 3, it will be the continuous evolution we will have, so that remember, so we will continue the incremental development, so that we are adding features by year by year, Ruby 2.5, 2.6, 2.7, so that we are not going to have some kind of big gap between the Ruby 2 and Ruby 3, so we are not going to have that kind of gap between Ruby 1.8 and 1.9 or Python 2 or Python 3, we are not going to have that kind of big gap. So just we keep improving the language, the value, the keeping the compatibility, so that we are not going to have that kind of compatibility hell again. So it's kind of the division of the community, so that some people keep using the old version, some people keep using the new version, so that the half of the community stays old version, giving up the new technology, new performance improvement, and new functionality or anything. So that kind of things, we are not going to see that kind of situation never again, so that it's out of time to say. So our goal is help us accomplish great things with simple Ruby code, and simpler, safer, and more enjoyable. So 10 to 70 years ago, Ruby was hot. Everyone was excited about the new technology named Ruby. Actually, it was not really new though. But anyway, 10 to 70 years ago, everyone was excited about new technologies. But these days, no one is excited about hearing about Ruby. Okay, Ruby, I know Ruby. But the Swift is new. Or Rust is great. Yeah, that's true. But still, we are keeping improving the language. We are trying to keep Ruby great. So Ruby is great, I believe. Yeah, you agree? Yeah, I'm forcing you. Ruby is great, in a way. It's not hot, but it's great. And we try to keep Ruby great. And then improve it. So it's applicable to not only web, or maybe to the DevOps things, or maybe to the embedded field, or maybe in some kind of general programming language, or even to the research computing, or the data science things. I know there are more popular languages in those fields. But by keeping compatibility, by keeping moving forward, Ruby can be applied everywhere. Unless other factor happens, I want Ruby to be your first option of the technology. I spent too much time, I guess. In Intel, the profile says, only parallel survives. There will be a parallel to survive. So the language comes in the goal. We had Fortland, we had Kabul. These languages still survive. But no new programmer enjoys learning these languages because they're abandoned ancient programming languages. I don't want Ruby to become like that. We will do everything to survive, to keep providing values. To make programming fun again. Thank you. We will open the floor for questions. If anybody has any questions. Hi. So these issues, these tasks to improve performance, improve concurrency, these also happen for other languages. Do you keep in contact with other programming language creators like Widow, Faro, Zoom, or any other? No, recently. I have met Guido, Lolliwoll, or maybe to the last month. But it was more than 10 years ago so I haven't talked with them recently. Okay, thank you. Actually, it's a fun story. In the Office of Convention held in Portland more than 10 years ago, we had the language designers' lunch. Or Lolliwoll organized the language designers' lunch. The Lolliwoll there, Guido was there, and I was there. We talked about community management or maybe Unicode. Unicode was a very hot topic back then. And then one of them jokingly, if someone said put the bomb in this restaurant, the whole office of community would be suffered tragedy or something. Yeah, that's so funny. Any more questions? I think people are shy. So on a related note, how do you make Ruby continue to be relevant? Because there are different languages, new languages coming up. Do you look at the language constructs from other languages? Or how do you keep it fresh? And do you see them as competitors? Yeah. Before being the language designer of Ruby, I consider myself as a language geek. I'm really interested in programming languages in general. I like to research about the programming languages. When I saw the new programming languages, I tried to read about the materials and the reference, and I tried to write some very teeny sample code in those languages. And then I look for the source of inspiration so that there might be a chance to steal the ideas from those languages. And the language designer, I told about the language designer's lunch, so the language designer, the creators, the relationship between the creators of the languages are very good, and they exchanged the ideas. So I took some ideas from Poro and Python, and then I think Ruby has some kind of influence to that newer language, like Alexa and Groovy, or maybe some part of the influence to the language like Swift. And then we pretty much value those kind of exchange of ideas to make better programming languages. Alright, one more question. Hi, so from Ruby 2-3, you mentioned that one of the biggest improvements is going to be performance, and you mentioned that you would be hoping that it can be applied to Java, but even Java itself has been criticized as a bit slow nowadays because it's still running on the JVM, and then you have new languages like Go, which is trying to go on par with C in terms of speed. So what's your take on this?  Like, you know, the Java, as having the virtual machine and JIT compiler, the Java is kind of the competitor. But you know that behind Java, we have tons of researchers with the PhD in IBM and Oracle, so it's quite difficult to compete, but we are chasing it so that we try to make Ruby fast anyway. So for the people who are very eager to seek the performance, there are technologies in the ground, which is the new implementation of the virtual machine technology, and then the Truffle Ruby is the Ruby implementation on top of the ground virtual machine, and it runs pretty fast. Actually, the Truffle Ruby runs, say, 8 to 20 percent, 20 times faster, not 8 to 20 percent, I mean, 8 to 20 times faster than the C Ruby, which is quite fast. And you know, some J Ruby people jokingly claims that, okay, Ruby on top of the Java technology runs, we already surpassed the Ruby 3 by 3. Anyway, yeah. And yeah, that irritates me a little bit, though. Anyway, using those kind of technologies Ruby runs fast, but the point is the keeping compatibility. Truffle still cannot run Rails for application, so they are improving. One of the things that I hear you saying in your last couple of answers is like comparing against Truffle Ruby and Growl or comparing against Java on top of the JVM. The virtual machine in both those cases is fairly mature and very highly performant. They're both particularly Growl designed with performance as a primary goal. Do you see the idea, in the slides, you sort of danced around the idea of, well, replacing the JVM YARV and the JIT compiler all at once is too big a jump. But how likely do you think that is that Ruby over time will continue to depend on current YARV as opposed to one of the other backends? It is not mandatory to use the YARV forever. When the first MJIT came in, we tried to replace the virtual machine with the IoT LVM, but the keeping compatibility for the language like Ruby is pretty much difficult. Remember the 20... I don't remember. Some years ago, when we replaced my interpreter by the YARV, at that time, we had tons of Ruby virtual machine implementations. We had five, six of them tried. Everyone but one YARV was failed. The YARV stands for yet another Ruby virtual machine so that we have the handful of other Ruby virtual machine implementations at least attempt. But the implementing the compatible virtual machine is quite difficult. Only one person succeeded so that I try to replace it. So that if there is a chance to have the RTL to become the matured compatible virtual machines, we'd glad to be replaced them so that we have no fixed role. But probably we will stick to it mostly because we don't like Java. We don't want to maintain Java's programs. Okay. We have one question at the back so I'll take some time to get to you. My question for you as a language designer more like what kind of languages do you prefer? Those kind of languages who try to tell developers you only can do this with one way and we say this is the proper way to do this because we saw a lot of other developers who fail in another way to do that. For example, like the Golan does it or you prefer more like the Java way when we are trying to give you tools as much as possible we can give you because we trust you are probably a good developer. Other languages. It's quite difficult to name one language so maybe I have to name every language out there and the language I value most, I study most is Python mostly because our domain is so overlapped so that we face similar issues and similar problems so that we have made different decisions and we are making a similar decision or making different decisions in similar problems so that I studied many of the PEPs Python enhancement proposals or something and these kinds of things are very worthy for me as a language designer and then the other source of inspiration is say I prefer Go I'm a C programmer so I consider Go as a better C programming language or maybe the better system programming languages in that sense I prefer Go to Rust and Rust has a different approach to the system programming and I very respect their decisions but actually I myself don't want to write the big application in Rust because the type bookkeeping is a little bit tedious for me but I respect the approaches What else? I study Elixir programming language and I have communication between the creator of the Elixir programming language Joseph Alain who also is the Rust committer and actually I discussed with the design of the Elixir programming language in very early stage so that the sound part of the Elixir it reflects my opinion and then I have a lot of other programming language out there actually I like most of the programming language out there including very old ones like APL Thank you We have time for one last question Hi You mentioned earlier that you thought that Ruby might not be that hot anymore so I'm just curious what language do you think is hot right now? Aside from Ruby of course Yeah, hot programming language Okay, probably a probably a Swift is the hot programming language and it's not the language itself but the JavaScript domain is hot I guess it keeps being hot because of the generation change of the frameworks I visit JavaScript time to time and every time I study JavaScript the mainstream framework is different Yeah, so I have to relearn everything again and again Yeah I'm sorry for the JavaScript developers Okay, thank you so much for coming up We have a small token to present to you Thank you so much for coming up all the way and speaking to us Thank you Thank you Yeah, the photo sessions


The uneducated man has the hardest road to go best, life to lead. I want to go to school, man. Those guys aren't going to school. They're going in the Army. They're doing both, friend. Many of these men will be getting their education right in the Army. You put me on? What's the Army got to do with getting an education? You see that name? It stands for a lot of learning. It gives every man who comes into the service a chance to improve himself. United States Army educational development program. Say, that's a mighty big name.  Look at it this way. The modern US fighting man is provided with the finest equipment in the world, devised by experts in military technology. In order to use this material efficiently, the Army must have men who can operate and care for a tremendous variety of military devices. The man entering the US Army today is faced with one of the biggest learning assignments he'll ever have. Operation of complex and sophisticated weapons demands from each soldier extreme alertness and quick response. New concepts in the use of Army aircraft require ever-changing aviation skills. New methods of ground combat and latest maneuver and survival techniques must be learned and mastered. Each American soldier who finds himself in far-off places is a one-man representative of his country. Wherever his assignment takes him, he must learn to get along with people, to help them when he can, to try to make them understand his mission. To do all these jobs, he must have a lot of preparation. He must be able to read well and understand what he is reading. Whatever his assignment, wherever he must perform it, throughout his military service, he will be in continuous contact with learning, with education. He will need to obtain all the knowledge he can about his particular Army job. Because the need for knowledge in the modern army is so great, educational opportunities within the military must be equal to the challenge. The Army provides a continuing educational environment for the serviceman. There you go with one of them big words again. Just what is an educational environment? You might say it's a kind of background that encourages the soldier to learn. But let's take it from the beginning. Let's hear it how it really is from the people who work in the Army education system. We in the Army Education Program are concerned with the mental fitness of each man who comes into the service. At one time, as many as 300,000 men a year were rejected by the armed forces because they could not meet minimum standards. Today, thanks to a dramatic preparatory program and basic educational skills, hundreds of men who would have been rejected are taken into the Army and do their jobs well. At the reception center, the new men are interviewed, and their suitability for particular Army assignments is evaluated. Tests are given to determine their educational readiness. We have to know which of the men can be put immediately into basic training and which need preparatory educational assistance. What does basic education mean to a man who has never been able to read well or to communicate easily with others? As a supervisor in the Army preparatory program, I see the answer to that question every day. I'm going to flash some words on the screen. I want you to write them, and then we're going to use them in sentences. Ready for the first one? In modern reading laboratories, men selected for the project are taught basic reading skills in a three to six week course. Ingenious visual aids help them to improve their knowledge and use of words. Now look over your sentences and find the sentence where the word jet belongs. Number three, they took a jet plane because it was fast. Fine, good, all right, let's try the second one. This man is improving his reading ability through the use of a tachistoscope, which projects words to test the student's comprehension. That's what he saw. What was it? Dust. All right, let's check. The word was dust. All right, look over your sentences and tell me where that word belongs. Number four. All right, number four, read it please. All the tables were covered with dust. Fine, very good, let's try the next one. Another important device for reading improvement is the controlled reader. This equipment projects one or several words at a time. Each word is highlighted at a pace preset by the teacher or the student himself. By encouraging the student to control his own rate of learning, we increase his confidence and pride in developing better reading skills. At the Audex Learning Station, the student listens to words or sentences being spoken on a record. As he listens to the recording, he sees how the words look on the screen. Sometimes, reading ability is hampered by problems in the eye itself. An eye-measuring camera records the rate of movement of the eye in the reading process. Results of the test are revealed on film in the form of graph-like impressions. Number one, can anyone pronounce this word properly? What about the mean? This is a word composer mean. Composer is a president of the right community. Exactly, composer is a person who writes music. This is the beginning, the reading and understanding of words, the foundation for all education. OK, the composer wrote a new song. Real good, real good. Now for number two, secret correct pronunciation. D'Angelo. I'm turning. OK, the word is concerned. Prepared with fundamental educational skills, the young soldier goes into his basic training better equipped for the job he has to do. A sound mind in a sound body. The man who knows what he is about is a stronger man because of this knowledge. Each man gets ahead as fast as his own industry and initiative will take him. As an army education counselor, my job is to offer advice and guidance to the soldier on his future educational possibilities in the service. Once the man has made his decision to continue his education, several choices are open to him, depending on the amount of schooling he may have had before entering the service. May attend group study classes and a number of subjects for high school credits. Some of these are given during on-duty time. Various army posts also arrange with nearby high schools to conduct off-duty courses in their classrooms. There's nothing more than putting out these courses prepare the students for taking high school equivalency tests. What is it that makes people poor? Specialist stated, one's occupation. One's occupation, all right, good. Any other ideas? Private consorts. Lack of education. Lack of education, right, and here's for structural employment. Passing these tests will qualify the student as a high school graduate equivalent for all military purposes. In an average year, more than 50,000 soldiers complete the tests and are eligible for high school diplomas. Most states will award a diploma or equivalency certificate on the basis of the same tests, though some localities may have additional requirements before a high school diploma can be awarded. For the army student, a knowledge of basic high school subjects is an open door to better jobs, better pay, and a better future. As a committee commander, I'm for the education program right down the line. I'm particularly interested in the MOS or job-related classes, which help my men improve their military skills. Any time I have a need for instruction within the company, the education people will set up a class on or near the post. These classes are usually held in on-duty time. Sometimes we'll send selected men for specialized job-related training to one of the regular army service schools. But the on-post or nearby classes have the advantage of not taking the men away from their company duties. At the post library, the men who take the job-related courses find a lot to bone up on. Stacks of army manuals and directives on military subjects give them a ready pool of reference material. Everything is here, from planning airfields to army administrative procedures, from figuring the tolerances of metals to the logistics of supply management. For the man who wants to get ahead in the army, this is a good way to go.  The army education program helps give me men who can tackle their company assignments with confidence, men who can do a better job because they are prepared with the knowledge they need to take action. Some instructors in army educational programs are military personnel. Although they are specialists in their field, they may need some training in effective teaching techniques. This is provided in a regularly scheduled instructor's evaluation course. The switchboard is the most important in army communication. You, as students, will be called upon to operate the switchboard. Before I call on you for criticism, just one statement, Taylor. Your official directness was just that we did off. A little more polishing on that. Ray, what do you have to say about his gestures? I was saying you used too much gesturing. You think he did? Yes. I think he did, too. Williams, what do you have to say about his posture? Well, I think his posture could use a little improvement. In what way?  Mm-hmm. Marshall, what about his movements? Well, his movement, he wasn't relaxed. He was shaking his leg, and he didn't move right or left. You don't think he moved right or left? Yes. Very, very constructive. There's one thing I'd like to add as to his visual directness. That can stand quite a bit of improvement. In the army, when the student can't go to school, school goes to the student wherever he may be. The services of an army education counselor are always at hand to counsel and guide the soldier. A full program of correspondence courses allows men who are unable to attend group classes to take selected courses for high school or college credit. These courses are conducted by army education centers using text materials provided by the United States Armed Forces Institute, known as USAFI. Started during the early days of World War II, USAFI was designed to provide educational opportunities for millions of Americans who served their country around the globe. USAFI lessons and text assignments, taken by men in the field, were shipped back to the United States for evaluation as quickly as war priorities would allow. At Madison, Wisconsin, the first United States Armed Forces Institute began the processing of papers on 64 different courses. Mobile classrooms equipped with USAFI instructional materials followed US troops wherever they went. The early courses were in the technical and vocational fields. But by 1944, many more courses were available at higher educational levels through the cooperation of colleges and universities, both at home and abroad. In the following years, USAFI educational materials used in army education programs reached an all-time high. Courses were added to include most of the subjects in the general civilian school curriculums. After World War II, as a result of USAFI educational benefits, hundreds of thousands of GIs were able to return to their peacetime pursuits, better equipped to take their places in the civilian community. Today, in its modern headquarters at Madison, USAFI is the largest mail-order educational system in the world. Originally developed for the army, the program was subsequently made available to personnel in the other armed forces. USAFI supplies instructional materials for service personnel on assignment, both here and overseas. It offers a testing and grading service at all educational levels in various world areas where US forces are stationed, including Alaska, the Caribbean, and Hawaii. Educational materials and services are developed to meet highest civilian standards. Today, over 200 correspondence courses may be taken directly from USAFI in pre-high school, high school, college, and technical subjects. Now cooperating in the Army Education program are literally hundreds of colleges and universities in the continental United States. Many of these offer resident classroom programs, as well as the correspondence courses. Over 6,000 courses are available. For army personnel stationed abroad, many famous American universities have extended their campuses to different parts of the world. Using the facilities of the nearest Army Education Center, these institutions offer group study courses for full academic credit toward degree requirements. The army pays part of the tuition. Look at how we might use this in a classroom with young people in a high school situation, for instance. So I think we'll just go to the class and see what kinds of things you have discovered. Does someone have something that they had thought about that they felt was a very different kind of creative act? Mr. Johnson, could you think of something? When I was in college, I ran the lights for the college theatrical group. And we instituted a number of lighting techniques, which we thought were particularly creative. Recently, I've had the opportunity to use creativity in developing a 400-calorie reduction diet. In doing so, I was able to keep the interest and enthusiasm of the patient. And the patient actually looked forward to their meals. Under certain conditions, qualified Army students may attend a civilian college or university full-time in order to complete degree requirements. At the University of Heidelberg, US soldiers who have earned their degrees during off-duty time are given academic honors. But whether the action is a commencement in Germany, an education program in the tropics, Korea, or at any of the more than 300 US Army education centers around the world, the name of the game is learning. For the military man, education is no longer a luxury. In this dynamic, technological age, it is essential to its success as a soldier. Just as he learns about new weapons and new military concepts on the training field, he learns to broaden himself as a person in the classroom. Almost 70% of all officers presently in the United States Army have four years of college or more. Sometimes a trip back to a rear area may be a chance to brush up on a study course. Military personnel who use off-duty time constructively to advance their personal capabilities not only make better soldiers, but will make better, happier citizens. The main purpose of Army education programs is, of course, to increase the soldier's knowledge in order to create the best possible army. Education incentives encourage the service man to remain with a military career, serving not only his country, but his own self-advancement. Each individual carries within him the most of what he can be. To be less is to deprive both himself and his country. Only education can unleash his fullest powers. For those who decide to return to the civilian community after their service, still another Army education program is available. In his last six months of service, soldiers lacking high school or civilian related skills may enroll in project transition, which provides transitional training to help him find a suitable job in civilian life. And you could get a job in that particular trade. Project transition was directed by Department of Defense to provide in-service training for people like you who are preparing for return to civilian life and who have no skill to sell as a civilian. We hope to provide training in two different fields, academic and vocational. An Army transition counselor advises the soldier interested in the project on the various possibilities open to him. Whereby you can obtain vocational training for several different areas where you can receive this vocational training to obtain a skill whereby you may be employed after you get out of service. They can offer you training in auto mechanics, clerk, cook, retail salesman, draftsman, automatic data processing machine operator, computer programmer, machinist, aircraft mechanic, welder, plumber, post office worker, air conditioning repairman. Do you think that you might be interested in any of these areas? Yes, sir. Good morning, class. Refresher classes in English and math are important to the transitional program. Your compound sentence will have two principal clauses. Each clause will be able to stand alone. Each clause will have a subject and a verb. Now, gentlemen, these are the four basic words that we use when we're talking about interest problem. However, these words are a little long to use. A course in basic business practices gives the students an introduction to the world of commerce. And we make us a formula. I want you to tell me which branch of the government. Project transition students may also receive a general briefing on American government. Both the House and Senate are the president. The Senate, right. Must be at least 25 years old. The House, right. Must be a resident of the state from which he is elected, Metcalf. Both the House and the Senate. The vice president of the United States is a presiding officer. The Senate. Various government agencies, educational institutions, and private industry conduct briefings on a number of specific job areas. Supervisors outline activities and suggest job opportunities. During this course, we will, however, discuss basic automotive theory. We will discuss the service station business in particular. And we will discuss business practices. We will apply this theory. We will put applications. More than 200,000 soldiers a year are taking advantage of project transition services and installations all over the country. To be successful in a business, we're going to be discussing automotive knowledge. Students in the project are taught by experts. And many will receive actual job offers from companies cooperating in the program. Engine here. And later on, we'll go around the room and we will be pointing out each of the different things that we'll be discussing during the course. This class is specifically designed to teach you people how to operate the different and various types of equipment that you'll find in the business world today. Starting off right in back of me here is what we call or refer to as the NCR class 450 proof machine. Business machines and other devices used in the business community are brought into class for demonstration. The proof or transit department of a bank. But the transit department or the proof department is serves as sort of a funnel through which every transaction in the bank has to go through to be proven. I'd like to tell you a little bit about the opportunities we have to offer in United Parcel Service. I'll tell you a little bit about what United Parcel Service is. We are package delivery specialists. When I say package delivery specialist, we pick up and deliver small packages. The great variety of subjects offered in project transitions occupational training, both on post and in civilian plants, allows each man to choose the particular specialty for which he is best suited. And education go hand in hand. In an average year, nearly 200,000 army personnel participate in the education program. On all levels, every assistance is provided to the soldier for continuation of his education while on active duty. The United States Army General Educational Development Program, a steady climb toward greater army efficiency and individual self-improvement. At C&L, education, army including completion, high school equivalency courses, job-related instruction, special courses in speed reading, also army correspondence courses, college studies, transitional training, only army. You really have been to school, haven't you? I certainly have. Well, we shouldn't have any trouble finding a place for a man with your educational background. Tell you what, take this to Mr. Wilson. He's our placement head. Two doors down your way out. I sure will. Thank you, sir. Don't mention it, and good luck. A mile of education's worth 1,000 miles of road. I'm traveling light and easy, as I'm a man who knows. I've had my school in now, and I'm sure that it is so. A mile of education's worth 1,000 miles of road. I've had my school in now, and I'm sure that it is so. A mile of education's worth 1,000 miles of road.


In 2003, Pirates of the Caribbean hit theaters and Disney found themselves a cash cow. Which is nice. It's rare when Disney makes a lot of money off of a film franchise. It's good that they got to win this one time only. They own everything now. One would presume then that Disney would take all that knowledge, that vast experience and really hone in on what made Pirates of the Caribbean so successful, and once again use it to create Jungle Cruise. One would presume that. Let's find out on another episode of Movie Feuds. Pirates of the Caribbean. Wow, what an adventure. What a story.  It's been well over a decade friend since I've seen this film, and man was I in for a treat. It's actually far better than I initially remember being in theaters. That's right, I've only seen this film one time. This is the second viewing for me. And you know why I think it was better? This has been happening a lot more recently for me. It's that movies are getting worse. It's entirely possible I'm hitting an age bracket where I think all music is too loud and the kids need to get off my yard with their ball and that movies just aren't like they used to be back in my day. I don't think that's the case though. I think The Mandalorian is the greatest star wars we've had since the originals. I think that the Disney Marvel films are fantastic. The main reason people are really drawn to the Pirates of the Caribbean is of course our friend Jack Sparrow, Johnny Depp, killing it in the role, crushing it in the first appearance as a laissez-faire pirate who's drunk off his ass. You're not really sure if he's ever sober. He's a functioning alcoholic really, but he can swashbuckle with the best of him.  Orlando Bloom is familiar with the sword. He knows his way around a blade. I mean as a matter of fact he went on an extended journey with a bunch of hobbits so he held his own really well. Legolas is one of the greatest characters of all time. Will Turner not so much. He's a little bland, but he gets the job done. Keira Knightley however is Elizabeth Swan. Oh my god. She's just the full package. She's the real article here. She's a beauty on the eyes. The jawline. What a gorgeous. I'm just jealous. I don't have that structure. I don't have the bone structure. That's why I never could make it in Hollywood. That's what I tell myself. Not to be out bone structured as Emily Blunt as Lily. Her character is very headstrong. She's adventurous. She's essentially Rachel Weiss' character from The Mummy. Dwayne Johnson plays Frank Wolfe, who's basically Brendan Fraser's character, Rick O'Connell. Because when it really boils down to it, all the characters in Jungle Cruise are just characters from The Mummy. Hell, Lily even has her own Jonathan of the film, McGregor. He's the the doofus-y brother who likes to dress fancy and get in all sorts of hijinks. I have to circle back to Pirates though because we got plenty of more stars in this thing. Jeffrey Rush plays Barbosa, the villain of the picture. Jonathan Price plays the governor, aka father of Elizabeth Swan.  One always loses his eyeball and in silly ways. And somehow Zoe Saldana managed to sneak her way on this ship too. I hope Zoe Saldana's agent's getting a really nice gift basket because damn that girl is in a lot of great movies. Very successful franchises. The number one highest grossing movie of all time, Avatar. The number two highest grossing movie of all time, Avengers Endgame, which also has a few more slots in that top 10 list by the way. She's in Guardians of the Galaxy. Hell, she's even in Crossroads with Britney Spears. And if there's gonna be any sort of claim to fame for her, it's gonna be Crossroads. That's a cinematic darling. Jesse Plimons plays a prince in Jungle Cruise, try saying that five times fast. And he's definitely my favorite part of the film. Paul Giamatti can be seen wandering the docks throughout the picture as well, trying to try to collect on what he's owed. You take Jack Sparrow off the table, you have a closer round, but I still think it goes to Pirates. Jeffrey Rush as Barbosa's awesome, he's a fantastic pirate. You got that love story between Will Turner and Swan. It's an easy win. Johnson and Blunt do have chemistry. I'll give them that much, but let's be honest. Blunt could charm the pants off you even when she was talking to a block of wood. She's that good. This round goes to Pirates of the Caribbean. I brought this up already, but Pirates of the Caribbean came out in 2003. How does it look so good still? My thought is that people cared a little bit more about the production they were working on. That's not to say Jungle Cruise looks bad. It looks very, very typical for Disney now. It's very colorful, lots of CG creatures going on, lots of people interacting with things that clearly aren't there, tons of green screen work that I don't think fools anyone anymore. When you see a person running out a tree and getting wrapped around by branches and thrown across the entire room and somehow lands and is fine, your disbelief is not suspended anymore. It's launched off into the stratosphere. It's long gone. Now, does Pirates look perfect? No, no, no, no. There's age on it for sure. There's age on those old bones. The CG is definitely showing. The thing is they wisely keep it at night and it's used sparsely. It's used creatively when the characters jump in and out of the moonlight. You see them transition on the spot from CG skeletons to people. It works really well.  I was really impressed by what was going on. Jungle Cruise plays with some CG characters too and it's really kind of done for no reason at all. These characters just seemingly show up at random happenstances. I know they have to stay by the river, but they dispose of these characters pretty easily and they only really seem to appear at just random times. It doesn't make a lot of sense. There's a snake dude. There's a bee guy. Everyone's got a gimmick. What about the music, though, Adam? Who wins in that department?  Sorry, that was really aggressive. Wow. Pirates, of course. The song is amazing. It's fantastic. I'm sure the music in Jungle Cruise was lovely and it worked for what it was doing, but it's nowhere near. It's nowhere near the epicness, the beauty that is Pirates of the Caribbean. This is another win for Jack Sparrow. You know, I picked these rounds, right? And the story is just not what I'm really interested in talking about, rehashing the story. I guess I don't need to go into a big synopsis. We can just do a very kind of top-level overview. I will say this about the Pirates of the Caribbean. There are times when it's hard to understand what some of the characters are saying because things are clinking and clanking and cannonballs are blowing through ships and swords are hitting against each other. You just miss things. So you can get lost pretty easy in this franchise. I'm only talking about the first, the later ones, I believe, they're just a cluster. They're just a complete disaster in the storytelling department unless you're really paying attention. But I will also say this. There is an interesting story in Pirates. There is a complex and fleshed-out storyline there and it begs you to re-watch to really get some of the nuance, some of the subtle hints to not only this film but future ones. For instance, Davey Jones' Lockers mentioned a few times.  Well, I don't think audiences know at that point unless it's mentioned somewhere that I forgot. But no, I'm pretty sure this is just a cue to a bigger world, a larger world, and one that I guess they were confident enough to hint at. Jungle Cruise doesn't seem too intent on building this out to be a franchise and that's perfectly fine. That's admirable in its own right. Everything it seems nowadays wants to be the next great Avengers, you know? They want to have their own universe. So I guess it's fair that this one just kind of stays true to itself. It doesn't try to set up two more bridge films or a sidequel or a spinoff with the CGB character and how he really just loved Honey so much and that's why he had this ability. Both films start with a flashback. In Jungle Cruise's case, it's centuries, whereas Pirates of the Caribbean, it's just like, you know, 15 years, 12 years, something like that. We see a 12 year old Elizabeth Swan riding on her dad's ship when they spot a young Will Turner who's drifting a float on a raft. He's doing the whole Titanic thing. I guess there was room on this one. There was room for two on this. Well, then again, maybe he did a reverse to Caprio. Maybe he kicked the girl off and was like, there's no room. There's clearly no room for two. Will has a mysterious past at Turner's out. And yes, that was a playoff his name. It was a pun. Subscribe. The mystery revolves around his dad, who he was, what happened to him. And we find out by the end of the film, he was in fact a pirate. I'm getting too heavy into the plot. I need to back up. I don't want to break this down. I don't want to do that. I just want to keep it loose. Okay, I want to keep it floaty. The film is called The Curse of the Black Pearl because Barbosa and his crew stole treasure that didn't belong to them. I mean, that's what the definition of stealing is doesn't belong to you, but they stole from the wrong pirate. All right.  They will not feel feelings. They will not be able to eat eatings. They will not be able to love lovings. Some of the that didn't work. They're only one coin short of saying, I'm a real boy again. And that coin is a calling. And Elizabeth is the one that has it because she took it off of Will Turner's body when he was a wee one. Sorry, this movie's got a lot going on. Bruckheimer had a lot to juggle and he juggled it very well. Swan is taken across the ocean where she's going to be made a blood sacrifice along with the last coin being dropped in because they wrongfully assumed she was in fact the heir to Turner. Meanwhile, Jack Sparrow and his new friend Will have teamed up to try to save Swan. This is a fast-paced, fun, action-packed film for the whole family to enjoy. We have swash buckling. We have explosions. We got ship battles. I mean, we got everything on the high seas you could possibly ask for. Let's talk about Jungle Cruise now. Speaking of mysterious pass, Frank Wolf has one of his own.  You know, one of those guys. But much like Barbosa, he too is cursed to only be on the river. He cannot leave it. He will always be pulled back. He just doesn't want to get too far back or he'll be stuck in vines for all of eternity like some of his cohorts. His boat's kinda crappy. He owes a lot of money to a guy and it seems like nothing's going his way until Lily shows up. Now, Emily Blunt's presence alone would be enough to sweeten some soured grapes, but that's not all she's bringing to the table.  No, no, no, no, no, no, no, no.  It kinda looks like a heart. Wow. It's wild, isn't it?  I don't know. We don't know. We don't know the capabilities of the flowers, but we want to or at least Lily does. Lily's also the name of a flower, so I don't know if that has anything to do with anything, just coincidental, probably, but wanted to point it out. She and her brother seek out the help of Frank, who they're told is the best riverboat skipper around, his words. And he's right. As we see him pull off some amazing feats, such as dodging missiles underwater by a nearby approaching submarine and smashing through a building. Wait, yes, you heard me. Yeah, there's a submarine that's following them in this river. A submarine in the river is following them. Submarine. It's a zany adventure tale. Calm down. We're willing to suspend our disbelief. Lily stole an artifact from the wrong prince and he's pissed, so he's gonna be going after them, this whole film, as they traverse through some pretty steep conditions. We have running rapids, jagged rocks, waterfall drop-offs. I'm pretty sure I'm just describing one five-minute section of this movie, but it sounds really grand if I kind of split it up like that. He somehow used a vial to awaken some of the other magical beings that were trapped in the roots of the tree that they're trying to get to, so they're also going after them. It's a ride. Literally, it's a ride at Disney World. So which one of these rides is really worth waiting in line for? We're doing ride puns now. I think you know the answer. I was being heavily transparent on it. Pirates of the Caribbean, baby. We're in the conclusion section of this thing now, and I want to say, I don't think Junker Cruise is bad. I enjoyed myself with it. Will I ever watch it again? No, there's no reason to. It's a harmless film. It does a lot of the things we've seen in other franchises like Indiana Jones and, of course, The Mummy, and even Pirates of the Caribbean. But it just doesn't have anything new to say, you know? It doesn't really seem like they put a lot of care and effort into it. It looks nice, the acting is good, the action's fine, but it's all very just run-of-the-mill by the books. Pirates of the Caribbean, however, damn, that's a fun movie. That really looks good. Tons of practical sets, tons of practical effects when they can. I mean, you can just tell there was such a labor of love put into this movie, and I think that that stays the same going through the franchise. I'm really excited to dive into them more, and I will rank them all once I get through. So if you're interested in hearing my thoughts on the best and worst of the Pirates franchise, stick around the channel, subscribe, become a fan, become an avid watcher, and we'll go on this movie journey together. Or don't if you hated this, that's fair too. Why are you still watching, though? For a while I had a voting system where you could go on my community tab ahead of time, vote for your favorite, but I think instead I'd really just like to keep it to the comments. So let me know in the comments what you thought about Pirates of the Caribbean and the Jungle Cruise, if I'm right on the money or if I'm just completely off base, bias, have nostalgia glasses on for a film that I haven't seen in an incredibly long time and have no reason to have a bias towards it, but you can have that opinion, it's a stupid one, but you can have it. Leave those comments below, like the video if you had some fun, and remember, this is more than just reviews, this is Movie Feuds. Oh, you're still here. Thanks for sticking around.  Either way, that's fair. If you do like what I'm doing, like truly like what I'm doing here, maybe think about joining me on Patreon at Patreon.com slash Adam Does Movies. We have different tiers there starting at $1, so you could show, you could say, hey, Adam, you know what? You are worth a dollar a month to me, and that would really be something special, I think, for both of us to share. You could also join me right here on YouTube via the join button and become a member. So there's a couple ways where you can show your love, or you know what? Just share the video. That's fine too. Take care.


Hello and welcome to this video by filmsbychrist.com, I'm Chris and today we're going to be looking at a few things, but we're also going to be looking at FZF, it's a fuzzy finder application. It is an amazing program, once you have it installed you're not going to want to live without it and it's very easy to install. I'm running Debi and Sid and at the current time that's in the repositories, I'm not sure if it's in the repositories for Debi and stable yet, at least last I checked it wasn't, but it was a little while ago since I checked. So you might be able to do apt install to install it, apt install FZF and if not it's super easy to install. Otherwise you can come down here at installation, it has a few options, you can say using git and here you just, once you have git installed, you say you clone it and then you run the install command and there's also plugins for Vim which are also very useful, but what does it do? It's a fuzzy finder, so basically when you type something, you want to search through something, you can start typing and it's, think of it as like grep, although with very large files grep might be a little faster but not as smart because grep will look for exactly what you're typing in there, but this will search through it while you're typing and kind of tries to be smart about it. So for example, I have a file here called people.csv, I'll try to remember, put a link to this in the description, it's a test file that I created based on real people and real addresses, although I shuffle everything up so they don't really match, so I don't have people's information just in there, but it's a good large file, you can see here if I actually wc-l, wc counts the lines, words and characters in a file, but if you do dash l it'll just give you the lines, so let me do that and give it that file people.csv, it is going to say there's 862 entries in here, so not a enormous file but a large enough file and of course if I want to I can say grep find everyone with the name John which will again include John, Johnson, let's put quotations around this just because I like to and we'll say people.csv and it will show you all the lines with the word John as we got Johnson here, John here, John here, John here, Johnson up here, all in order, how many people did we get? We got word count dash l, so 24 entries with the word John in it, so that was nice, so we can then narrow it down after that, let's say I wanted to find okay the ones that live in Hawthorne, so I can now go ahead and say grep this, but then I can also pipe that and actually you could probably do this all on grep, but I'm gonna pipe the output of that into another grep command and just say find Hawthorne which is great, it's doing it super fast but it's looking for those specific things, we narrow it down to four, we got two Johns and two Johnsons that live in Hawthorne and but you know we had to type out the commands and then see what comes up. If I want to have fzf installed, I'm gonna do fzf, actually we're gonna do cat, the name of that file, so people.csv which is a plain text file, csv just means that we have columns, think of it like a spreadsheet but the spreadsheet cells are divided by the commas in the file, so you'll see that each column has it and you can open it up with a spreadsheet program, so for example before we get to fzf let me just say Libre, LibreOffice and I should be able to give it that file and what's gonna do is gonna open up that file and it's going to say hey how do you want this, this is set to tabs because that's the last file, I'm gonna say I want commas right there comma and now you can see I found all the commas and if I click okay I now have a spreadsheet with the columns based on those commas, so that is how a csv file although you don't have to use commas usually when I create a file I'll use a character like a pipe symbol that's less commonly because an address might have a comma and in which case you have to work with quotation marks and whatnot but anyway just wanted to show you a csv file can be viewed that way and edited that way and then export again a csv file which is again just a plain text file but going back to what we were about to do people that csv I can pipe that into fzf and now I type that and now if I type in John it starts narrowing down the list of type and if I make mistake I can go back and again now I don't even have to hit space I can just type in HAW and you can see it's now look for lines with that might have something like that in there doesn't just look for HAW it's looking for things that have been found exact matches for John but up here it says oh it has an H and a and a W but it puts the best match down here at the bottom and you can also say it to reverse so that so it's the lists is the other way where the top is the best match but by default it's like this at the bottom and so yeah and now I can use arrows to choose which one I want and when I hit enter it's just going to output that information so what I can do now is okay that's all I'm online let's just make it a little bit easier to read so I'll just pipe that into the TR command so what a TR command do let's talk about that real quick again this is just an overview of command I'm just showing you a bunch of commands I've done tutorials on all these in the past in more depth except for FCS I haven't really done a tutorial on that yet I've demoed it before but as you can see it's pretty simple to use but if I was to echo something like Chris comma Smith comma Naples obviously I get that output if I pipe that into TR I can now replace individual characters so here I can say I want to replace all commas with the pipe character and there you go it prints it out with the pipe characters instead of the commas if I wanted to change all the commas to dashes I can do that I can also do special things like backslash and now says find all the commas and change those commas into new lines and again this is not modifying any files or anything it's just modifying the output so now I have each one of those entries on new line and that's exactly what we're gonna do with our fuzzy finder here so I'll go back up to this let's clear the screen so again if I was to type this command and I was to type in Chris and I'll say Gainesville we have a Kristen that white oak strife in Gainesville I'll hit enter that's the output but if I was now pipe that into TR and say change all these commas to new lines now when I type in we'll say Jack and we'll say Jack from High Springs so I'll start typing Springs look I even narrowed it down to the final one I'll hit enter and now because we used TR instead of printing all one line I have each comma new line which might be a better way to print it I do have empty lines here which you could also you know delete using said again I guess I can show you that we should be able to do something like said and we'll say carrot dollar sign I'm pretty sure this is how you do that we'll see I'll just pick a name from here boom there we go we got rid of it so basically this said command here said again I have videos going more in depth said allows you to manipulate text in so many different ways in fact I can probably get rid of this TR command and use a single said command to replace that if I want instead of doing TR and then said but in this case I'm saying said and I'm saying find all lines so the carrot symbol is a special character saying the first the beginning of a line and the dollar sign is the end of the line so since I'm doing that with nothing in between saying find empty lines and then the forward slash D means delete it so basically if it's a blank line delete it and we have these blank lines because if I cat out to my people dot CSV you can see each one of these lines has a few extra columns here most of them some of them have some information in there but most of them have like three or so extra commas at the end which are blank cells and that's why we're getting those blank lines but our said command here after I type something like Terry and we'll say in whoops Terry yeah we'll just pick one of these I'm just coming up with random stuff so again we're we're catting out the entire file putting that in the fuzzy finder which at what point we're typing for what we're looking for when we find what we're looking for we hit enter and it puts that in the TR replacing all the commas with new line characters so putting each column each cell on its own line just to make it easier to read and then we're saying okay find every blank line and delete that so we don't have those trailing blank lines so again if we remove that said command and I just pick a name here and hit enter you can see we have these extra lines down here at the bottom we don't necessarily want so anyway that's a quick look at what do we go over today again I'm just doing quick overviews catting out the entire file we already went over but using fuzzy finder FZF and we're using the TR command to replace individual characters so again we can do something like instead of even using commas I can say replace all capital T's with capital B's and if I was to now type in Terry again Terry again and choose a name it should change that to Barry so and it did see so TR is really great about it's very a very simple command for replacing individual characters with other individual characters or if you replacing words and said what could also do that but said is also a lot more in depth can replace entire words or other types of combinations so yeah so TR does that and then said I just showed you one basic command here which just deletes blank lines said does so much that you know I've been using it for years and I only touched the surface of it because it's basically a complete word processor you know for manipulating everything without actually opening up the file it is amazing so yeah I'll try to put a link in the description of the video actually let me get that link for you right now so yeah there it is it is filmsitechris.com forward slash scripts forward slash my notes capital M capital N notes and then people dot CSV and that's just a file I generated from voters records but like scrambling the names and addresses and stuff so it's realistic data without being real data that you can use for testing purposes and has close to a thousand was 860 some people in there and yeah get that I'll try to put a link in the description but just in case I forget or you're watching this somewhere where there isn't a description box that is the link right there to this test file yeah I thank you for watching and again I'm going over these things real fast just giving you an overview of them go to films by chris.com that's Chris the K there's a link into the description and there you can search through actually let's just go there real quick and what we can do here when you load up the page under the videos section you can just start something typing something like grep and it'll bring up grep videos you can start typing said and it should bring up some said videos and you can type in do I have a video on TR that's gonna bring up a lot of stuff because probably a lot of stuff with the letters TR in it but yeah check out my videos I literally have thousands of videos I've been doing this for over a decade and I do thank you for watching think about supporting under the support section you can support me through patreon or do a donation through PayPal and also my website and videos are completely searchable if you were to use a shell application such as links curl or W get just check out the instructions here or if you just try to W get or curl my website films at chris.com it should bring up instructions and examples for shell shell searching thanks for watching and as always I hope that you have a great day