Hello fellow developers, my name is Matt Ravel, and I'm a developer advocate at Okta. Today I'd like to build an application with you and show you how to create a microservices architecture with Spring Boot and Spring Cloud, and we'll be building a service that allows you to filter out good beers from bad beers. It's a personal passion of mine. I always like the good beers and from Colorado. So let's get started. The script I'm going to use for this tutorial is already in a blog post on the Okta developer blog. You search for micro brews. You'll find it here. You'll see it's from June 15th, 2017. And so you might think that's old, but good news, I recently updated this for Spring Boot 2 and everything should be up to date. The blog post starts about going through the history of microservices, why or why you shouldn't use them, and I'm gonna basically skip over that and just show you the code. But it is important for you to consider whether you really need microservices because a lot of times it's about scaling teams, not about actually scaling technology. So it says to create a Eureka service. Eureka service is basically a discovery mechanism that your microservices can register with. And so you need to have that up and running so they can basically talk to each other. So it says here to create a Spring Boot microservices example directory. I'm just gonna go ahead and call it apps since that's a little easier to do. And then you'll notice here, it says go to start.spring.io and to Eureka service as an artifact name and select Eureka service as a dependency. So I can do that, but at the same time, what I like is that they have an API. So if you went HTTP start.spring.io, you'll see what that API looks like. So you can see all the different dependencies that are available. And of course you could say, okay, what's JPA called? And I'll show you that's called data JPA, right? So then if you want to actually download and extract from the dot zip endpoint, then you can basically create an application very easily using the REST API. So I've created aliases to do that. If I show you my Eureka server as alias, you can see this is what it looks like. It goes and grabs a Eureka service app with that dependency of cloud Eureka server and extracts it to a Eureka dash service base directory and then untars it and so everything just works. So we can see the end apps and then Eureka service and I'll go ahead and create all that for us. The next app we need to create is a beer catalog service. So the beer catalog service is going to be a microservice backend that has a list of beers and it's very dumb and it just has those beers in it and that's about it. So that alias has a number of more dependencies. It's got actuator, cloud Eureka for discovery, JPA, H2, DataRest, Web, DevTools and Lombok and we'll put it in a beer catalog service directory. So go ahead and create that one. And then the last one we're going to create is an edge service and you might think of this as like a gateway which basically is the front end for all your backend microservices and this will delegate to those backend microservices and in a later tutorial I'll show how to actually lock those down with OAuth and JWTs but in this example I'm not going to add any security and this edge service is merely going to talk to the beer catalog service, get the list of beers that it provides and then filter out the ones that aren't so great so you get a good beer service. So this has a similar alias, edge service and you can see in this one we're going to use Cloud Eureka for discovery, Cloud Fane, what that allows us to do is actually talk to the downstream microservices. Zool will allow us to route to microservices if we actually don't want to do anything fancy and we just want to proxy some URLs down to other URLs. DataRest, Web, Cloud Histrix, Histrix will allow us to do fallback methods and make our architecture a little more robust and then Lombok and we'll put that on an edge service directory. So run that one and then I'll open up IntelliJ to do all the work to basically add the code and make all these talk to each other. So while that's opening up you can see that the first thing we need to do in the Eureka service is modify the application up properties to set a server port, Spring Boot uses 8080 by default so we want to change that to the recommended de facto standard for Eureka which is 87.61 and then we'll set Eureka not to register with itself since the default is true when that's found in the class path. So if we look for application.properties you'll see here that we do have one. Put those in there, let me make sure I'm using the right font size for this. Search for font, I'm gonna change this to screencast so it's a little bigger, a little easier to see. So now you can see that a little better. We'll put this on the left, put this guy on the right. All right, now here we go. So once you've done that the other thing you need to do is just say hey enable Eureka server. So this is gonna be in, wrong one. Eureka, set up our SDK, Java 8, and then the Spring people like tabs, I like spaces. So there we are. And then we could start up the registry right now and be able to see everything. So if we do that in terminal, CD Eureka and Spring boot run. So now if we go to 87.61, you'll see what the UI looks like and there's no applications registered. So now we'll create a beer catalog service. We already created that. These are the dependencies like I said earlier. And we're gonna start with a beer entity. So we'll find the beer catalog service application.java. And we'll go ahead and add an entity. So the reason why nothing's resolving and it actually doesn't say right here that this is a Java classes because I haven't added these as Maven projects. So I can go in here and add the Eureka service. Go and add the beer catalog service and then add the edge service. You might remember when I opened this project in IntelliJ I used idea space. That's from IntelliJ's command line runner or launcher that you can install using tools command line launcher. And so now that I've configured everything it recognizes as a Java project. I can go ahead and delete the beer entity and recreate it. To create it, I'm using live templates. So you'll notice all I have to do is type in boot dash entity Lombok and then it fills in the class. And that's because I pre-recorded these. So all I'd have to do is type in like the entity name. And so under preferences live templates is where you can find live templates that IntelliJ provides as well as add your own. So it's under the user area and you'll see I have boot entity Lombok. So I put those variables in there and that's how you can create your own. It's pretty handy feature. So now that we have the beer we can go ahead and create a beer repository. And that extends JPA repository which allows you to do crud on the entity, create read update and delete. And I'll also add a repository rest resource annotation that takes the end points and exposes them so you could do crud from a HTTP client. And lastly I'll create a beer initializer or command line runner that will populate the database with a sample list of beers. So these are the top beers I found on beeradvocate.com. Of course you could plug in some different ones if you want to see some different names. I will run this application and you can see the beer names are printed out just as we suspected. So put them in a database and we were able to use our repository to fetch them and print them out. So now you'll want to give your application a name for Eureka. So it's a report 8080 you could remove that if you wanted since it's default and spring application name. And that's just so it shows up in Eureka with that name. See right now it's got the unknown name. So after restarting this then we'll see your catalog service as the name. So that's all working as expected. Exposing those endpoints with repository rest resource allows you to hit the endpoints with something like HTTP which is similar to curl. I used to be IE so you can go to 8080 slash beers and you'll see that whole list of how to use URLs and all the various beer names. So the last thing you'll want to do with this service is enable discovery client. Now you'll notice it did register with Eureka without this command and or without the sanitation. So from the research I've done online it just appears to be a best practice to enable it and everything will work together better if you have that on there. So prevents bad things from happening. The last thing you'll want to do is create an edge service or modify the existing edge service that you created. First of all to run it on 8081 and to have an application name of edge service. So find the application.properties for the edge service and copy those values in there or type them in there however you like. And then you'll want to enable feign, histricks and registration with Eureka server.  So add these to your edge service application and then you'll create a beer DTO just to basically hold the name that we're gonna bring back. So you can do that with a data object from Lombok. Basically provides those getters and setters and two string and all that for you. Then you'll create a beer client interface that basically leverages feign to talk to that downstream beer catalog service. And then you'll create a good beer API adapter risk controller because we like long class names. And this one will basically use that beer client to read the beers, get the content, stream them and filter out the ones that aren't great and then collect and return that list of just the good beers. And the get name is highlighted in red there just because I don't have the Lombok plugin installed for IntelJ. So as long as you're running the application from the command line with Maven shouldn't be an issue. If you do want to adjust your ID you can install Lombok or the Lombok plugin and refresh Eureka. And now you can see it's registered with Eureka. And so we should be able to hit the 8081 good beers endpoint in a browser. If I can type it right. And there we are, a nice easy consumable list of plain old good beers. So one of the things that Spring Cloud provides with Histrix is the ability to actually, have data that doesn't return a 500 error. So if we shut down the beer catalog server and try to get to it after it's shut down you'll notice we get a 500 error. So with Histrix what we can do is we can define a fallback method. And that fallback method will allow you to return default data instead of a 500 error. So 200's always better than 500. So to do that you can go into the good beer API adapter rest controller and add a Histrix command fallback and point to the fallback method. So in this case we're just gonna return an empty array list. You could obviously can a few good beer names in here as well and your clients wouldn't die. They wouldn't get a 500 error. They'd get a 200 error which is obviously a lot better. So restart the edge service application since that's where we made the change. Now when I refresh my browser it's just an empty array list. And so we could restart the beer catalog service and once that's up and running again then we'll actually get that list of beers returned. So this takes anywhere from 20 to 30 seconds in my experience. Doesn't work very well for demos because you're just continually, continually refreshing and refreshing and refreshing browser until you get the actual list of names. So you've built a microservices architecture now that has built in resiliency and failover but there's no client. So I always like to add a client. I prefer Angular but I also dabble interact. And with these instructions here you can see that you can basically clone the client from previous tutorial and go ahead and import that or copy the client directory into your project. So the easiest way to do that is actually not using GitHub it's using SVN, there's a command. GitHub actually supports SVN so you can use SVN export and export a single directory onto your or into your actual project. So I'm gonna grab this link here and figure out the right URL. Basically leave it, you put trunk on the end and then client and so I can take that and do SVN check out just for that client directory and it'll put that right into my apps directory and into my project. So the first thing when you clone an Angular project or any project that uses NPM is you have to run NPM install. While that's running in the background we can look at the changes that you'll want to make or the changes that I'll make in this project. Basically I'm changing from using port 8080 to 8081 since that's where our edge service is and the first time I try that it's actually gonna fail because it's making a cross origin request. So in edge service application you can allow cross origin request from any client by adding this cross origin annotation then restart the edge service and I'll change the beer service to talk to 8081, save that file and I can run NPM start to actually start the client that will talk to the edge service and once that's done compiling you can open up localhost 4200 and you should see the list of beers in there. There we go. If you followed along congratulations and creating a robust microservices architecture you can deploy this to Cloud Foundry if you want you just have to add some application dash cloud.properties files that basically use Cloud Foundry's Eureka registry instead of the one you created and so to make that easy I actually went ahead and created a deploy.sh script that automates everything so I had some help from this or help creating this from Josh Long and it basically just builds all the different projects and pushes them to Cloud Foundry and configures them to talk to each other. So if you wanna see a video where Josh actually live coded all of this from DevOps France in 2017 you can and the source code for this is all on GitHub under spring boot microservices example under the octa developer org. I hope you enjoyed yourself watching this video and learned a great deal about how to create microservices with spring boot and spring cloud.


And I want to talk about the recipe. You don't have to give us the recipe in terms of like the difficulty of scaling this thing, right? So you're making it in a very particular part of the world. And now you have to try to make it in a different part of the world with different water, different cows, different dairy. And so how did you go navigate that process? So we built the factory in Seattle ourselves. We didn't hire anyone. We just pretty much dug trenches, put everything together. And then it came to time when we got our first batch of yogurt going. And it was difficult trying to find someone that would sell us milk. You're this new company, who are you? No one wants to give it to you. But we found a found farm that it's in Linden, Washington, pretty much on the border of Canada. And we still use that milk there. They kept on, they were the ones that let us use it. And then we started making yogurt the way we did it. So we use a special blend of cultures that we've pretty much brought over from Australia. But what we did here was we were able to change a little things that family traditions that we couldn't do. This is how we've always done it in the past. This is what we do. So we kind of were able to stretch the boundaries of that. And I honestly think the yogurt here in Seattle tastes a lot better than any of my cousins or my family. But the way we make it is so different to anything else that anyone would make it just because the effort that is required to make that cup of yogurt is so vastly different to how most yogurts made in the world. When it came to making it, is there a specific challenge with just shelf life? Yes, it's complete. That's another big challenge we have compared to all everyone else on the set. We're pretty much half of what their shelf life is just because there's no preservatives. It's just milk cultures and the fruit. There's nothing else added to it. And the way we make it too, it's just exposed to the elements for bits because it's being strained by hand. So it's just really sensitive. So we've been trying our best to try to create clean environments for it. So it doesn't, you know, we can try to get that shelf life out a little bit more as much. So even an extra day for us has always been like a big achievement. Yeah, well, good for you guys for at least, I mean, that's the hard part of any company. And I feel like as people grow, they always have to compromise, right? Where it's like, they'll start off with a no preservative concept and then they'll realize, oh, it's only going to last seven days, which if your product isn't selling quickly, becomes really difficult to manage because it means you're just throwing away a lot of inventory. But at the same time, you're keeping your promise. And so it's just, it's a tough business decision to do this. That's one of our biggest challenges right now as well, just trying to get to the rest of the country.


So if there was a popularity contest among universities in the US, this one would be a top contender. Can you guess where I am? Well, this is the Northeastern. So today I'm in Boston and we are spending a day at the Northeastern University. Every Indian student at some point or the other would have definitely considered Northeastern as one of their options. So in this video, I'm going to be taking you around the campus. So if you want to know more about Northeastern and you're thinking of applying here, then you will get a real and authentic account of the life here. So if you have applied to Northeastern and you are looking forward to coming here, then this video will help you in your visa interview preparation. We will try to find as many unique points about the university as possible. And yeah, let's get started. Co-op culture in all of the US. Yeah, so co-op is kind of an internship. So during your coursework, you can apply for a job full-time for years with studies. You can have a free, you know, that kind of a thing with how the office work and everything will be. So you'll have a gist of that. You'll have a hand of that. And after that, when you start applying, you can show that you have already been a part of a company that's good. And you'll be able to show them your work before, you know, getting over with your graduation and everything. So it gives you a real feel of the industry right when you are studying as a college student. So that is very helpful for people who don't have like much experience. They have first time they are coming to US. So we also get a lot of questions about Northeastern. One of the most commonly asked question is how does co-op work? What does one need to do before? What does one need to do once they're here? So can you just explain the entire process? So before applying for co-op, Northeastern has a course. That course is called Intro to Co-op. So you need to take that course. In that course they will explain. Yeah, you can take it in the first semester or second semester whenever you feel like necessary. But after you come here, right? Yeah, after you come here definitely. So you can take that course and in that course they explain like how you can build up your profile, how you can write a good resume, a cover letter. You can like they explain you about a new works which is a platform of Northeastern. In that platform they actually provide you the opportunity like the company's advertise.  So it is only for students of Northeastern. So they can directly put their resume in a new works and directly apply for companies. Northeastern has types of companies. So whenever there is a posting available, apart from LinkedIn and whatever job sites that they have, they make sure that they post it on the new works and the advisor that guides you for the co-op. As I mentioned that you have a course called Intro to Co-op. So it is different for different subjects and different departments. So basically I also had that course in my third semester or second semester depends. I took it in my second semester. Basically they tell you is that they show you how to build up the resume as you told and apart from that you have mock interviews and everything. So kind of a one-to-one session and they take care of most of the important questions that they can have irrespective of your field or what your interests are. So every I think student who looks to study in US will think about research at some point or the other. So what's the research focus here in Northeastern? So research is actually, so the thing is that I want to... You work for the biotech. Yeah, I'm for the biotech. Yeah, we're just from the biotech. So I personally chose a BSE because I wanted to go in a research field. So the reason I chose Northeastern is that there's a building called ISAC. You can see it from here. It's a very well-made, well-architected, the one behind. It's very well-architected. So that's the main building where most of the professors have their research labs and everything. And before came here, choosing between BU and Northeastern, the thing that I like the most is that most of the professor have a background from the job side or from the pharmaceutical side. So what helps me is that if I... So I've actually volunteered in one of the labs with the professor. So I worked under him. He told me how the work culture is, how it is different in academic portion, how it is different in the work, in the normal business side. What are the key things that you should focus if you are thinking of going into the academics? The academic part. Because for me, it is divided into two things. Your academics, where you go into the PhD and stuff, and kind of a business thing where you go into the pharmaceutical and just walk over there. So the research... So the research... So for Northeastern, it's kind of in between both. So if you want to go for academics, you can have that as well. And if you want to go for the business point of view, you can go for that as well. That's why I actually chose Northeastern because I, coming from just an academic background, didn't have any knowledge on how to transition between those two. So for me, it would work pretty well. If at all, I chose to not go into the academics, but have my legs one in there, one in there, so I can have both of that. And how is the research infrastructure? So research is actually good. You have most of the late... So there is a section in the Isaac where you have most of the one time... It's like most of the very well-advanced technologies with respect to the industries in the field, you have that in one section of the building and you can always access it through the professors. So if you want to learn anything at any point of it, you just shoot up a view of the professor, let them be interested in this field. You have an interest, you show them your work, you show them your interest, your resume and everything. And maybe they'll just get on to you and you can just... Is there any specific research lab? Anything unique? The one that I have seen is the nanotechnology and the neuroscience. I've never been into the neuroscience ones, but I've been into the nanotechnology and I've actually used up two of these. So these would be the most advanced labs? Yeah, most advanced, yeah, actually. Great. And what about your data science and data engineering, right? Yeah, data science, data engineering. What's the research focus? Yeah, if you talk about the research focus in data science, AI in general, so a lot of things are happening in Northeastern actually. If you are talking about research only, like Northeastern faculties, they publish a lot of papers every year and various cutting-edge domains in AI. And I would also say like Northeastern, they very well balance out between the industry and the academia. And there are professors who are very well-distinguished professors from the academia. And they are publishing like very good papers. And the students are also like, they are working with the professors and they are also publishing a lot of papers. I personally know a lot of people, like I have not been here for that long, but still I know a couple of students who have like published paper, like publishing paper is something. They are working with professors. Yeah, they are working with the professors and they are publishing papers. And that paper is also getting like the top ranks in certain conferences. So it's like they are being nominated for Best Paper Awards. And so like it's a very good... So there are plenty of research opportunities. Yeah, yeah, yeah. And Northeastern also they have like their own high-performance computing labs. So it's like a powerful computer lab which they have and there you can run like the state-of-the-art algorithms. So it's like a very cutting edge and they are like right where they should be. So what is your typical class should you like? So for me, I have classes on four days of the week. The classes generally... I'm in the College of Engineering. I have like four days in a week classes. So classes are like two types of classes. One is like the normal length class which roughly ranges around one and a half hours to an extended class. Like for a subject you can expect like two classes in a week. And if you don't have two classes then you'll probably have one class and that one class will be around three and a half hours to four hours. So you're coming to campus thrice a week basically? Four times a week for your classes. I don't have classes on Monday and rest all the days I am coming to the campus. And how much preparation do you need before attending a class? Not much actually. The classes are quite good. They teach everything from the basics. So even if you're just attending the class without any prior knowledge of that subject I think the class is sufficient for you if you're paying attention. Classes are sufficient. The faculty and teaching quality is very good and not decent. Living it depends. So first of all are you living on campus? No I'm not living on campus. So for undergrad it's like that that you are for the first year you have to live on campus on terms or anything like that but master's only is not compulsory so you can always have of campus housing. So you can either reach out to university of campus housing. You can always go to sites like Solekha and there's Zillow and everything but you can just ask your friends they have lots and lots of papers and everything like that. So the first thing that you have to decide and what I would prefer is for the first six months or the first year to stay near the college I have a hand of everything the hand of transportation how everything is connected so that you know when you once move for the back from university you have a transport and everything. So for the first six months when I came I used to live in Poison Street it's near like 0.91 mile from university after that from I think fall 21 I shifted to Brighton it's around 3.7 miles from the university. The reason for me was that for the rent rent is comparatively lower and the second thing is that the house over there is much more bigger as compared to what we get near the university but as you know we have lots and lots of I mean house campuses and everything over here but they are comparatively much more smaller and compact so for example the rent of my previous house was around 600 without utilities so with utilities it was around 700 but right now I am being like 600 including utilities over here. So like you know it saves me 100 dollars but it also adds up to transportation cost but the thing is that if you overall add it up technically it's much more better to live far with giving transportation cost because you get nice home you get everything. So what I would say if you buy groceries all the time I think only 250 would be okay so if you are living near the college having 700 as your rent I think right now it's around 750 but let's go on the lower side so 700 plus 250 so that's around 950. So if you do not do anything else just your living expenses and your food would be around 950,000 in Boston. And if you get an on-campus job or if you get an on-campus I think you will be able to get your monthly expenses even after the tax because once your tax gets deducted as you know after the students they cannot have your tax so at the end of the year when you fill up the form and everything you will get your tax back so you would still be able to make around 1100 per month which you would be able to have your monthly expenses. The unique thing about Northeastern is like I have seen like I have a couple of friends who are studying in different colleges in US but Northeastern they have a very strong Indian culture which is going on in this campus like whenever you see any master students 95 to 99% chances that guy is an Indian guy 95% wow what is the strength total students strength total students strength is like the bachelor's master's PhD or just the master's just overall like Indian students Indian students actually there is something like 7,000 11 students or something like that but it is in general you see like 6,000, 6,500 Indian students definitely in the campus so Indians there is a lot of Indian students and on top of that there is this Inyo sanskriti group which is like the Indian community in Northeastern and this Inyo sanskriti community they host the largest number of events across any school in USA so like for any kind of event tell it like Onam, Diwali or any kind of like any kind of event you definitely find something which Inyo sanskriti is hosting so that was very good for me initially when I joined I got a chance to be a part of Inyo sanskriti where I met the other guys as well but then like the work the study pressure is too much so I had to step down but I definitely made probably in the coming semesters you can because first semester is usually the biggest yeah yeah it's very hectic and also you have to get used to the culture and then study wise it's like quite hectic so there is an organization called Inyo Trips I was actually not able to go with them but like some of couple of my friends were actually able to go so they are an organization who manages and you know manages trips and everything so if you want to go with them they manage trips and everything yeah so what happens is that they went on a tracking trip like last month I think so you just have to sign up give some amount of money for the you know the stuff you know the clothing and the everything you know the bags and everything the gears and everything and you just go with them and have you done anything in the last one month um I I mean you have to spend like you have to spend a lot of time trying to get the basic things sorted but after coming here I joined a couple of clubs actually I have I have joined like a couple of clubs which include like entrepreneurship club as well as there is data science club as well as I was part of the Indian community as well as there are a lot of clubs we have cricket clubs we have Tetris club I am actually a part of a club called Tetris club so the main thing is that they meet every week on a specified time and just play games and stuff like that yeah almost all the clubs are like they will meet like once a week for about one hour or two hours and it's not just restricted to master it's like everybody can come and join there are a lot of clubs in northeastern yeah so I hope this video has helped you understand more about northeastern about the life in Boston how it would feel to actually study here and we have a lot more videos in this series about US universities so do make sure to subscribe check out the entire playlist and for more in-depth preparation when it comes to your visa interview do reach out for a one-to-one session with me the details of all of this is in the description box below signing off for now see you in the next one bye


Hello again, class. In my previous video for part two of problem one in my final exam review, I showed you how to solve the sequence of tokens returned by continuously calling getToken using the fully fleshed out programmatic approach, which is very important for you to know. It's important to understand. However, you might have noticed that it also takes a long time to run through. And when you're completing your final exam, you have very precious little time for each problem.  Instead of creating a full table and stepping through character by character, I'm simply going to write out the string that we're given. Now, I'm going to starting at the beginning of the string, I'm going to step through each regular expression and see the longest substring that each regular expression will match of our full string. So letter won't match, neither will capital letter, but digit will match the first zero. So we have digit here matching a string of length one. Alpha has letter star, which can match the empty string, followed by a digit. So that can match the first zero, followed by zero or more capital letters. So that can match the empty string, and we see that alpha does in fact match a substring of this of length one. Next up we have row. Digit star can cover the first two zeros in the string, followed by zero or more capital letters, which won't match the lowercase a, but the capital letters star can still match the empty string. So we see that row has a match of length two. For phi, phi requires two digits, followed by zero or more lowercase letters. So the first digit will match zero, second digit will match zero, and for zero or more lowercase letters, we can match the lowercase a. And we see that phi has a match of length three. Finally for omega, letter star can match the empty string, followed by a letter or zero or more digits. So for zero or more digits, this will cover the first two zeros. And we have a match of length two. We'll notice that phi was the longest match of our regular expressions of length three. So we are going to cover the first three characters in this string and match them to phi. Then we'll start over beginning with the capital D. The lowercase letter regular expression won't match it. Capital letter will match the capital D. Digit won't match any. And alpha can match zero letters, followed by a digit or a capital letter. So the capital letter here can match the capital D, followed by zero or more capital letters. So we are at the end of the regular expression, but we only matched a substring of length one. For row, row will match zero or more digits, followed by zero or more capital letters. So it'll match the capital D, and we'll have a match of length one. Phi requires a digit as the first symbol in the string, so it will not match. And omega will take zero or more capital letters, so that can match the capital D, followed by a letter or zero or more digits. So this letter will match the lowercase a. We're at the end of the regular expression, and we have a match of length two. Omega was our longest match here. So we will take the next portion of the string, the substring of length two, and match it to omega. Finally we'll step through one more time. We see that letter will not match, capital letter will not match, but digit will match the three, so we have a match of length one. And then alpha will match zero or more letters. So if this is the empty string, followed by a digit or a capital letter, so this digit will match three. Followed by zero or more capital letters, so this will match the capital D. We'll see that alpha fully matches the rest of the substring, with a length of two. Now because we've completed the string, we don't need to go through and check each of the other regular expressions, because we have a rule that states that if we have any ties that match the same length, ties are broken in favor of tokens that appear first in the list. So alpha was the first regular expression to match the rest of the string, and we can just take alpha. And this gives us our final answer of phi omega alpha. This is clearly a much faster approach to what I showed you last time, however there is a drawback to it. And that's if, if you make a mistake, Dr. Dupay won't be able to tell where you made the mistake, and so you lose the ability to gain partial credit on the problem. However doing this does save you a ton of time, which you might want when completing the rest of the exam. I hope this helps, and I wish you all the best of luck.