This is, all right, a bit about Durgan. Durgan, as many of you know or don't know, is the language that you use to write acceptance tests with Cucumber. And it is also a parser. About a year ago, Athletic Telesoic, who's the creator and maintainer of Cucumber sent out a needle in the mailing list. And I'm not sure if you guys can read that, but it says, we need a faster parser. I'm currently looking at Regal, a super fast state machine compiler. It's used by Mondrel, thin, red cloth, needs for a costume name of few, so it has a good trap record in the community. Trevious experience with Regal is a must, but it's definitely a plus. Well, there's some room right there. Greg and I accepted that offer, and this is kind of what we've gotten ourselves into. Not really knowing exactly what to do, but. Accepted that offer, having basically no prior experience with Regal, so. So a prior experience is definitely a plus, but not necessary. Now, part of this talk is that the aim of it is to show that this isn't really a, that's not necessarily a problem. That if you dive into something and you're patient and you just follow the BED or TED cycle, you can get good maintainable code. And just figure something out as you go. So, okay, so Regal. And I assume this is what we're here to hear about closely. Regal is a tool for building parsers by specifying state machines with regular expressions. Now, there's a very common quote about regular expressions in the computer industry. Some people in front of the problem think, I know, I'll use regular expressions, right? Now they have two problems. And this is sort of the, sorry, maybe too soon. This is sort of the problem for regular expressions. I think that Michael Jackson gave a talk about citrus recently. And he put up this huge reject on the screen and says, what does this do? And I mean, the proper answer is like, well, no one really knows. So there are these two problems with regular expressions. Two of them, syntax, okay, and syntax. Now there are syntax, they're a, you know, they're a horrible, they're a great syntax, but they're syntax for specifying something. This is so, so here we have some perfectly normal syntax. Maybe some of you probably, or all of you have used some of this before. We've got, you know, these are the, we've got like anchors for the beginning and end of a line, the beginning and end of a, what is that, multi-line. The, these behave differently, slash a slash is equal to, marks the beginning and end of a line, the character in the dollar sign bar, the beginning and end of a line, including new lines. So we've got some nice ambiguity there. And you have character classes. Here we have the alternation operator, which is also conveniently, the syntax or alternation is the same as the syntax for cathode rows. There we have, right there, that F with the question mark equals, this is called a zero with, what is it, zero with positive. I can't remember what it's called, I just messed up. That's a zero with positive look ahead assertion. And these are kind of the bread and butter of regular expressions. This is the kind of stuff that people really, they really love. So here's an observation about it. And this is sort of to, did you think about regular expressions in a different way? That might explain some of the problems that you have with them. Which is that it's, writing a regular expression that doesn't do what you want is more common than writing one that causes a syntax error despite the fact that it failed because of its syntax. That is kind of a remarkable thing in computer science, I think, is that you have this syntax which is so powerful and which is so ubiquitous, but it works or it doesn't work. But it works, it compiles, except it rarely does what you want it to do. Or there's often times there's cases where it does what you want it to do and you're only sure why it did that. So the regular expression of failures are usually semantic, meaning that the compiler never really tells you, oh no, that's not valid, it's not valid, instead you're thinking, it's saying to you like, no, I don't think that that redx means what you think it means. So you're actually dealing with a failure in understanding what's going on with the regular expression. And what that means is that, you know, that doesn't mean the syntax is not the problem. It is. But then that's because the syntax, for regular expressions, the syntax produces things of such complexity that the character for character, if it's unmatched by other things, then we deal with it on a day-to-day basis. If there were a way to visualize what we're making, so you could reason about it better, that would be a big, big improvement. And Regal actually conveniently provides a way to do that. So, and this is another nice point, is that I think that a lot of failures with regular expressions, it's a flow from the fact that we're talking about a piece of syntax, but we're saying like, what does it mean to match? You know, what is doing the matching? We have, you know, statements you may have made, you may have heard, you may have made yourself, right? And when you're talking about regular expressions, say things like, I matched this string against the redx. If this redx is matching where it should, or you try to match regular, or HTML regular expressions, and you sum them up, and that's a big, big problem. But just to get, maybe someone has read the post-on-stat overflow, HTML is not a thing that can be part of regular expressions. Now, one of the amazing things about Regal is that it's pragmatic enough, it provides the tools where you can't actually build an HTML parser with regular languages. And it gives you the ability to jump out of that, those constructs when need be, to handle things like recursive structures. But this is one of the problems, that regular expressions do not do the matching. When you are running a string into a redx and you're saying, okay, this redx matches x or y or z, that red expression is not matching. What's actually happening is that it's compiling something behind the scenes that is doing the matching. You wouldn't, for example, say, oh my God, you guys, my class definition retrieved a record from the database. That doesn't happen, because a class is a syntactic, the syntax for a class is this is a syntactic structure, which the Ruby interpreter or any compiler or whatever takes and converts into basically a machine code or operations. We don't speak at that level yet. With regular expressions, we do. We talk about this piece of syntax as if they are what is happening. Like the thing that is doing the work. But that is a red heron. Instead, what regular expressions really do, or what they are, is they're a syntax for specifying state machines. And I'm sure that for some people, possibly with the background in compilers, this is obvious. But for most, but for actually not many, not most, but for many programmers, especially the day-to-day, so maybe web developers, when you're using a regular expression, you rarely think, oh, I'm gonna use this syntax, which is really convenient and concise. And I'm gonna generate a finite state machine, which I'm then going to use to identify patterns and tasks. You don't think like that. You just think that this regular expression embedded in your code is that it matches somehow. And sometimes it doesn't match, sometimes you curse, you break it up, but sometimes it does and then you're all good. So they're state machines, right? Well, many of us, now many of us have experience with state machines. They're pretty simple. Has anyone here used a state machine with rails? For example, like access state machine or state machine, there's alter ego, yeah. Tons of people have. And are they generally pretty simple? Like they're clear. Well, one of the reasons that regular expressions are so difficult to think of as state machines is that you don't generate the states yourself. When you're looking at a regular expression, the characters in the regex are the transitions. The characters of input are the events that are being sent to that machine and the states are determined by the compiler. And I know this is a, I'm glossing over a lot of detail, but this is generally how it works. So regular clarifies what you're doing when you're working with regular expressions to make them manageable. It gives you all sorts of tools to work with them and to combine them in different ways. And using that, you can make programs of complexity and of speed that you wouldn't be able to otherwise. It's a really pragmatic tool to have in your toolbox. So before we get into regal, Robert, I was just gonna go through some of the syntax of that. I wanted to give you just an example and see what you can do with this. So let's look at a regular expression that matches the string ABC, okay? How does that break down? ABC are named transitions. And that is what the state machine looks like. You can see that they're the, when you compile that, you get four states out. It's basically one, two, three, and four. And then there are transitions between those states. One transition for every character in the regex. And as characters are sent into that machine, if they match that transition, then it goes from state one to two, two to three, three to four. And once it gets to four, that's done. And that is basically in a nutshell what Fraggle does for you. It allows you to build very complex machines. This is a really simple one, but we're gonna get into examples of big ones in just a second. All right, so how many of you have used Fraggle? A couple. Did you enjoy it? I'm gonna use it. Yeah, thumbs up. Great. I love Fraggle. It's really, really fun. Let's look at some Fraggle. So here's some Fraggle that compiles down to a Ruby class. This is kind of the shortest example I can come up with that contains all of the kind of, or the majority of the syntactic elements that you need to know about. First off there, machine M. We're just naming a state machine, basically. We're naming a machine that's gonna match something. It's useful to give a name because you can include machines and other machines and kind of break things down into smaller pieces. M is a very interesting name, but it's also not a very interesting machine. Second line is a named action, which is kind of like a function that really knows how to call. What that function does in that block there is just Ruby code. If you were targeting C or Java, you can have Java code in there. We're looking at Ruby right now. Next we have a sub machine or another, basically, this is a state machine. Saying here's a character class looking for a vowel. And we also tag an action in Ruby in that so that when we have a match or have an event, we'll call that action. The next part of the machine is the main definition, which is what's gonna get executed when you run it. Here we're just saying vowels or anything else and we want one or more. And then you got a couple of kind of weird things that you end up sticking to Ruby code. Percent percent right data. What this does is when Regal compiles this down, this is where the state machine gets inserted. I'm not gonna show you the Ruby code, it's totally okay. The, those percent percent, it's like macros. Like if you were to see, that's basically a defined statement. When you process that with Regal, you think it's a pre-processor, it spits out a bunch of stuff where that is in the array file. Data is, for Ruby, you have to define data as an array of bytes that you're gonna be processing. Right commit basically initializes the state machine, sets all the kind of, yeah, sets all the initial variables in state so that it can process and then exec actually execute. So here if we were to call RegalTest.new and pass in a string, it would start processing and doing something. Data and P are kind of, I would say maybe the most important variables you're gonna think about that Regal requires you to define and or use. Data is the array of characters, he is the pointer to the current one that you're processing. So you are gonna probably, if you're using Regal, do a lot of looking things up with P and figuring out where you are and keeping track of where you are as your parsing. So here's a state diagram of that machine. Basically on any model, we call the print reaction on anything else, we just transition to the next state. Since we allow one or more, or we require one or more, we start with, we have to have at least one transition going from the left to the right and then many more stays in that final state. So this is a state machine, which I'm sure you can't read, but for the step definition, of course I'm sorry, I meant step definition for a step within a feature. The left side is the keyword given one then and Regal's smart enough to compile that down and can press that down into the simplest machine possible. Over on the right, we are basically grabbing everything up until we find a new line, capturing that data and sending it off to something else. This is the state machine for Gherkin proper. I'd like to invite all of you to come up here by the screen, we're gonna start. So we're gonna talk about the parts of speech a little bit. We've got simple machine definitions within Regal. You've got character literals, you've got character classes, ranges.  Regular expressions are not generally recommended to be used within a Regal machine just because now you're starting to mix different ways of processing things and it's usually simpler to specify things in terms of smaller, simpler sub-machines. Next we have operators. These should all look very familiar to you if you'd be ready to use regular expressions that get zero more, one or more optional negation. Regal has two kinds of negation, machine negation, which is the first words one, and character level negation, which is used if you're only negating a single character. We've, I think, used them interchangeably by mistake within Gherkin and actually not ridden any problems with that, I wouldn't recommend it. You also have union, match either the first or the second. Intersection, match anything that applies that meets all requirements on the left and the right. Difference, match anything in the first that doesn't match the second. Concatenation, which is kind of the red butter of chaining together smaller machines to end up with something much more complicated. The data's optional, it's kind of a default assumption when you're combining two different sub-machines. So now we can look at a little bit of what you can do as you start combining things. These are simplified a little bit because we're handling a little more in Gherkin itself, but yeah, basically the end of line will be, you know, new line or a character turn new line. Tags are ampersands followed by anything that's not an ampersand or space kind of character. Step is a keyword followed by space. Tokens, so this is kind of the final line of the Gherkin lexer. Here are all the optional things that we can find and detect, and we can specify the entire thing using these sub-machines, but so what? So we can match everything, we've got this, you know, decent size machine that's a pretty complicated state machine and it can match all this stuff and we can say, hey, hey, we match the feature, but you know, what are we gonna do with it? That doesn't buy us a whole lot. The bread and butter and frago are the actions. They're really what make the powerful and distinguish it from what you might do with regular expression. Action is basically a function that Regal knows how to call that will, you know, call the target language, quote in the target language, among other things. When a match happens, when you transition, make a transition within a machine. You can write them in line. Generally, you probably want to name them, where you, yeah, give them a name and you call the name down below, that it makes it easier to separate the implementation of those actions from the definition of machine, which if you're targeting multiple languages or plan on targeting C or Java as well, you're gonna want to do that so you can separate those actions out into a separate file. So there's four main types of actions. You've got an entering action, all transitions, finishing and leaving. Entering action. Here we're bashing or we're looking for the string pony. When we call the entering action or when we specify an entering action, it will be called when you enter the machine, when you first make the first match of that machine. All transition action is called on every transition within the machine. So even though we specify the single string, as we think of each of those characters as a transition, you call that, you call that action in every single place. Finishing action takes a little bit more complicated than an example to show off. We have PON followed by one or more Ys. The finishing action will be called as you enter the last state of the machine and it will be called every time you enter the last state of the machine. And that can trip you up a little bit because for instance, one or more Ys here, if we match it even a single one, Regal could consider that being done. If we have more of them, we'll keep cycling through that stage and it's perfectly acceptable and that's where we're gonna end up. Finally, the leading action gets called as you exit the machine which would either be the end of the file or potentially some other machine or some other string that you're matching after that. So one of the most difficult things when you are building all the stuff up with Regal to match your pattern, your language is preventing non-determinism. They get complicated fairly quickly as you can see with the full Kirk and Stade machine. It becomes a little hard to analyze as they get really, really big. You have machines that may, not by intent, but may overlap and you may start matching things in two different machines in parallel at the same time and start seeing all sorts of behavior they're not expecting. So Regal provides some shortcuts for helping prevent that and control that. So here's an example of behavior you may not expect. Let's match anything and then the string no. Stade machine for here is actually fairly complicated for what looks like a simple set of rules. It may not do, or maybe it's doing what you expect or you're not. We're matching anything. We're matching the N and then the O character but then we're still in the any machine because any is readier than what follows it. So even after matching the N and the O, anything else is still consumed by the any machine. So we can add guards, the finished guard, or the finished guard which basically says as we start matching the second machine, if we complete it then we leave the first one. So we use this a lot with Gherkin because the scenario descriptions and future descriptions are very, very fluid. You can write pretty much whatever you want in there and so this is a good way to start capturing the text that people wrote as their descriptions and terminate when we found one of the few keywords that would actually meant that we have gone out to the next part of the scenario. There's also entry guarded which will terminate the first one as soon as you meet the first character of the second one. And several other ones left guarded favors the machine on the left as long as match, favors the longest match. You can also name priorities and actually specify with integers what you want to have for precedence. I feel like if you start having to do that you may be juggling too many things within one machine and it might be a better idea to break it up with something similar. All right, so now we can kind of look at the combination of all of those elements into something that we do with Gherkin which is matching tag. So if you look at the bottom row first we're defining this machine for tag as ampersand followed by anything that's not an ampersand learn more of those. As soon as we find something that's not an ampersand we call that begin content of entry transition which basically keeps track of where we are in the stream of data and also a line number that we're tracking new lines somewhere else. And when we finish matching that one or more when we leave that we call sort tag content which just packs up the data into a string again and sends it off to a listener. So this is the total machine for Gherkin. I don't think it's readable not for you right now but I think it's fairly straightforward when you get into the line by line it was able to be broken up into three simple things. Coming from TreeTop which was about 150 times slower than this. I bet some of my first contributions to Key from the project were working on working on changing some things in TreeTop and I don't really have time with it. I think there were a lot of, it was a lot harder to reason about what was going on than with Rayville. I think that's one of the, the big advantage on top of an enormous speed improvement. Natural break anyway, it throws to the end of the baton as it were. Anyway, what Gherkin was mentioning about the speed of TreeTop and about the size of that, like that is, I mean it's clear honestly because we've been using it a lot but I understand it's not the thing like oh my god this is the largest regular expression I've ever seen in my life, I've never used this. Well, you could be very forgiving for thinking that except one of these sweet spots of Rayville is that that defines the machine, right? Well, Rayville can output machines for Ruby, C, C++, C-sharp, yeah C-sharp, Java, D, all of the D ones kind of stuff. Go now and then someone's also working on JavaScript. So one of the sweet spots of Rayville is writing these finance state machines, these parsers and then implementing all the actions in your host language. In Gherkin right now we have a parser in Ruby in C and in Java. And that's been a huge one, it's one of the deciding factors for Rayville. So if you're looking at Polyglot and you're gonna have to be deploying this thing and you wanna deploy it in a lot of different environments that would definitely give Rayville a look soon. But so moving on, you've got, so that's a lot to take in, like all this stuff. Like it's regular expressions are weird enough to begin with and that was just thrown into syntax.io and this part is about how we develop something that was easy to use, easy to test and that we can improve incrementally and that was a big win for us. So this is how to do BDD or TDD or software development or whatever with Rayville. And now the name of the game here is to externalize evidence of operation and then make assertions on that collective evidence. That's basically how you, that's like TD in a nutshell, right? Now whether the evidence of operations shows that it's working properly or it's working improperly, that's unimportant at this point. What you want is to be able to collect data about how the code you are writing is behaving. So we're gonna start way back in the dawn of time. This is Azlec's first commit message that can need to test pretty much. It says on some basis up in running, still no idea what I'm doing with Rayville. And this is the table he's working in table processing. And you can see here just like the skeleton of stuff. You've got this basic machine. You can see there's a cell is imposed of you know, an elephant in their character class, obviously, and when it runs into one of those, it's retrieving information from the data, which is the input, and then just puts it into the screen. And then we've got some tests right here. So just drive table. There's, you know, these are normal tables the kind that you would see in Durkin. And then for each of those, we say like, okay, we're gonna make a new table, we're gonna parse it, and we're gonna hope that it looks like what we expected. So we're gonna tokenize it this way. And after a while of doing that, we realized that there was, there's a problem doing that because these assertions became bigger and bigger and bigger. And as you go back over here, I mean, we're looping over stuff. And then in every single one, we're creating a new table object, a new, a new blood lexer, essentially. And we have no way to see into that. It's just basically saying, like, okay, well, we're just gonna have the table return a string. Well, that error return of a raw data structure. Well, you know, that's okay, except it's difficult to get into the internals. So what we implemented is this scan method. And you can see creating a mock object right here. And so we have, now we have these helpers. So it should pass one by two table with a new one. So you call scan, you pass a new literal string that segment of your game. And then you assert that it's gonna output in array with containing one or two. So you're tokenizing it properly. And this leads us eventually to a discussion about what the test told us. That was a big win. It made things a lot more flexible. So we're saying, okay, well, we're gonna use this listener setup everywhere. So we're gonna parameterize the lecture's constructor with a listener. And we're gonna use the natural, a kind of event-based nature of state machines to send a series of events back to the listener as we manage things. And so we can then convert those events into a data structure and then make assertions about that data structure. And that's where we're gonna test it. So that's just standard dependency injection. So this also allows us to compose listeners for flexibility and additional layers of responsibility. And finally, we can test using a test spy listener, which is a sex viewer for it. And we'll give you an example right here of what you can do with this and what it looks like and how simple it is. So this is, let's say this is our lecture, right? We've got some machine definitions here. I can't put it all in there. But basically you say, okay, well, definitionized listener, you know we sign listener to an instance variable. And then when you call scan on it, you pass it some text. And then the actions run. And in those actions, they just send messages listener object. In real operation, we have a lecture and then we pass in a parser object. And the parser makes sure that the semantic meaning of those events is proper. For right now, we're just testing the lecture. So what we do, an example of the actions, we can go to listeners, here's a test spy listener. This is at the sex viewer order.  We're not going for the academic awards here. So if you have here, it's obvious use of method missing. It receives events, it adds them onto an array. And then at the end of the event, at the end of the test, we call two sex being get it out. So let's say we're going to test, we're going to test this feature, or Lex this feature. Feature auto queue, scenario motivation, given plain text is boring, then a GUI must be the answer. What does this test look like? Let's say we save that bit of text into a instance variable. We make a new instance of the recorder, pass the recorder into a new version of Lexer and scan the feature. Then when it's done, we can say, okay, like recorder dot two sex, we should equal this. And we drove out the behavior of the Lexer and of the Ravel State machine, case by case by case, doing this. And it's actually turned out to be a really simple, really simple way, easy to conceptualize the test, easy to make sure that's what you expected to do. This is a big win. And eventually, you have a test like this. This is one from the Hurricane Code base right now. And you can see, so that scan helper in there, but it's just basically you pass in a string into scan and then you assert something about the content of the listener.  Now even going past that, once we began working on the parser above the Lexer, we can use cucumber to test off. That's hard. This is our dog food, basically. But when you look at the implementation of these steps, the ones that matter here, they're given a dirt and parser. When the following text is parsed and then there should be no parsed errors, the implementation of these steps looks good. So it's that simple. If you are using Regal to do this, you can use the exact same setup. And it's remarkably easy to dog food whatever you're developing. And to hit things at the large level to test the entire stack and at the unit level of that Lexer, which is really where the rubber meets the road. And we just end up with that. Just like that. And now, so now we get to when Regal, like when do you want to use it? And the question here is, when it's good for, what it's good for? And in our experience, it's good for the polyglot stuff. The, like that's the sweet spot. Polyglot, like I said, all the different languages. It's just, there's, I would hesitate to recommend to use it if you were only using Ruby, because we're going to disagree with you. No, no, it's gonna be, the Ruby implementation of the Girkin parser, can you guys hear me okay? I think. The Ruby implementation was about a 10 or 15 time increase over the tree top. It wasn't until we switched to C where we got another 10 fold increase on top of that. Yeah. I mean, the Ruby one itself probably would have been worthwhile and there were people who were parsing features and it was taking several minutes just to get through their features before they could even start processing them. And I mean, with cucumber being thought of as slow or actually slow in some cases, that's the last thing you want to step away in several minutes before you start. Yeah, yeah. And I think we, honestly I'd like to see a comparison of Citrus to the Ruby output of real. That'd be very interesting. Well, yeah, but I mean Citrus, do you go to the Citrus talk? That's right. It's much easier to hear me than I'm, I don't know. That's two things I'm kind of a higher level to add and more powerful in some ways.  We're not doing that. Yeah. We don't have to do that here. We're working kind of at a much lower level and you can get, you know, pretty significant speed increases if you are willing to kind of delve down and deal with the state of things while you're mentioning them. Yeah. And one of the big things to be in mind here is that one of the reasons for the list of facts, even when it's outputting Ruby is because these state machines, they're just, I mean, they're static arrays of integers of fixed nodes, right? That's really simple.  When you're dealing with something like Citrus or Lecture Top, you are creating like this, probably, this is one of the shortcomings of the parsing expression of grammars and linking with paragraph parsers. They're memory hungry. And in Ruby, that translates to, in some cases, slow. And in some cases, too slow to be of use. Like, that's what we hit this wall with Gergen. And so we had to serve with the Gergen parser, written to Citrus. So we went to here and this has been a great success. But the other, I think the other case that we were looking at is when pure ripe accent become too confusing, that can happen. I think this is probably not gonna be that big of a deal, honestly, but that's just me. This is more, I could see it, I don't know, maybe not. Finally, the other one is speed. It's pretty darn fast. It's very, yeah, it's very simple to race right forward. It's even when the code produces, the code's a little ugly, but it's something you look at in this series. It's outputting Table Group and Finance State Machines. If you do run it, you can look at the resulting code and if you spend some time poring over it, you can see exactly what it's doing. It's very transparent in that sense at a very low level. I mean, I would always say, but also the other example I would give is that it's fun. But it's not everyone's gonna say, oh, yeah, I'm gonna use this Finance State Machine compiler that's fun. I understand if that's not everyone's cup of tea, but RAIL really is a blast and it's kind of fun to use it honestly to see like, oh wait, maybe RAIL expressions aren't so horrible. They're maligned all the time, but I think they might have a better reputation. So, give it all the time of the world, if you wanna talk about this. There's a lot more you can cover. So, and then- We got left, we got left, what do you mean? Time was good. We have some time left. Yeah, scanners are another kind of higher level construct that's available within RAIL. Which is generally very good for tokenizing things. It's basically a way to kind of specify multiple sets of matches and try to find the longest one and take actions on them on certain ones. We tried to use some standards in parsing Gurdon and ran it some problems early on. I don't know if it was for some of the non-determinism we had to kind of handle ourselves or what triggered it. Gurdon, the format is not really amenable to scanning very well because there's no opening and closing anything and scanners kind of, they work great with that. Common parentheses, that kind of stuff. Well, yeah, I know I kind of gloss over a lot of stuff, but. So, yeah, there are higher level tools within RAIL to use. State charts, you saw a couple of them. They're very, very easy to produce and examine and they can really, really help you think about what you're doing and making sure that you are processing things the way you think you are. The actions are going to be called the right times. We use them quite a bit, quite a bit. And so it's also very easy to generate a state chart for a submachine within a bit complex one so you can just look at the individual cases because obviously looking at the full state chart for a Gurdon, you're not going to get very far unless you want to give yourself a headache. Finally, yeah, multiple machines. Machines are named. You can include one machine and another machine. You can find your actions in one machine and include the machine defining the behavior or I'm sorry defining the patterns in another machine. It's a really useful way to break down the complexity even further or up to us as we're doing polyglot. So, anybody have any questions about that? So, RAIL Assault will generate those charts? Yes, yes. Is it called a visitor dot chart? Well, that looks, dot chart, sorry. Is it something like me and Hatt or other? No. XML? It uses XML's intermediate language, so go figure. So, does the Gurdon parser take advantage of, you know exactly what term it was, basically the functions you can embed in your action handlers like switch machines, while in particular action, and if so, was that kind of a pain to deal with that? Interesting, a lot of complexity in my use of RAIL, but I didn't know maybe I was just using it wrong. No, well, so, I will read the question. One of the things you can do within actions is specify, kind of go to methods and jump to all the machines and then return from them. So, that's really useful if you need to try to do something like parse something with like balance of parentheses, kind of nested recursive things. You can do that, it's a little trickier, but it's not the strongest point for RAIL. Yeah, well, let me jump in here. If you look at the source of HPCOT, why actually does that to parse HTML? So, I imagine that he knew this was like a big FU to computer scientists because you're not, regular expressions are not a thing that can be used to parse HTML. Like, it's not possible to do that, but he takes RAIL, which is all about it, and then writes parser. So, yeah, so the question was, did we have difficulty, do we use that that kind of construct within parsing GERG? And we actually were able to find everything within one machine pretty simply and didn't have to use a, you know, exiting machines and returning from machines. It looked complicated and probably, you know, it's one more thing to kind of juggle. The name of the action, just I don't want to guess what, like the in RAIL syntax, what's your type to get it to jump somewhere else? F go to. So, if you think regular expressions are confusing, I'll just add go to's into the begs and, you know, you'll have fun there. One of the best things about it is it gets a bunch of alternating patterns and will try all of them at once and basically paralyzes it, as opposed to do this in background, which is a ruby sort of an expression. Yeah, yeah, it executes machines in parallel, in many cases, which is something, well, one reason why you do need priorities when you're, you know, getting parallel execution that you're not expecting. Yeah, so, you know, it's executing simultaneous paths and determining the best, you know, determining the best match or, you know, or you set your own actions to catch the state of things when you start down one path and successfully end one of those paths and you can grab the proper string and process it or do something else with it. But it's, yeah, it's a really, really powerful, I mean, yes. I noticed you wanted to, in the examples you gave, you actually, instead of the action inside of that name, obviously. Yes, yep. Jeff, further question? So, Ragle will execute the action when it sees it, okay? Yeah, Ragle will call that action. You don't have to name it. That's kind of like an anonymous action, I don't know. Well, okay, keep in mind that Ragle, it's like a huge preprocessor.   And that means, okay, I'm gonna parse this, I'm gonna output ruby. It takes the contents of those, yeah, unnamed actions and just plops them right into the code where they would be. It's just like expanding the macro. And it will execute them as soon as it comes, yeah. When you're imagining it, I should say. Yeah, generally, if you are gonna target multiple languages, you're not gonna wanna do that because it is now coupling the code that's being executed with the machine, definitely, you know, the pattern itself.  Yeah, so one of the things we need to talk about is that you basically, you have like, your one machine would contain sort of like your common machine definitions, your one Ragle file. Then you have implementations for all of your target languages. And what we did is we wrote a set of shared specs. And we run those in JRuby and Ruby and all that. So we can test all of that using basically one set of stuff and minimize the complication. Got a new one or two more minutes for questions? Well, okay. You can use different alphabet types. So I believe you could be able to do that. I can't remember what's up in my head, what if there is like a binary alphabet type. But you would go out, and you wanna look at the manual about that. We glossed over the entire concept of the alphabet type. So basically, we're doing it one way at a time and we're assuming that all of it is UKFA. But yeah, you wanna look at the manual. Well, yeah, just thanks then to everybody who's in this and our employers for sending us down here. I can't hear you. Oh, sorry. Thank you, everyone and everyone. Oh, we have one more question. Will these slides be available somewhere? Go to the next slide. You can see it on my GitHub. Oh, the bottom link is the history of the quote about, you know, their type of programmer who thinks, oh, I'll use regular expressions and it's an eye opener. It didn't start with J. L. E. Zoot.


Hi, I am Varsita. I am from Andhra Pradesh from Anantapur. During my difficulty delivery, baby was injured with branchal plexus injury. For that we referred, we searched many hospitals and doctors and online in that I have seen Dr. Bharat K. Karadisar at Manipal Hospital you about the branchal plexus injury. So, we consulted the Bharat sir for treating the baby. So, sir have done MRI during the one month age of the baby and told that the fine outs of the baby are damaged. So, it is definitely required for surgery. The baby must be done surgery for the recovery. Sir have told, Bharat sir have told that the surgery will be done at the 5 month age of the baby. So, we have taken MRI on 29th March of 2022 and at but the surgery will be at 6th July. We have admitted on Manipal Hospital on 6th July and the surgery was done on 7th July at Manipal Hospital Malleshwaram in Bangalore. The doctor have taken very care because the baby was very small. All the doctors have taken best care and they have treated very well and watching the baby at every minute. They are like friendly very friendly to the baby and even the staff members have taken the care and they have possessor very kind they are very kind and they treated the baby very well. So, I am very thankful to the Manipal Hospital and Bharat K. Karari sir treating my baby very well and thank you to all.


Live from San Francisco, it's The Cube. Here's your host, Jeff Frick. Hi, Jeff Frick here. We're on the ground at Pure 48 in San Francisco. We're at the top coder open 2014. The event's been going on for about 10 years.  But that's all fine and good. But we came up today because they had a new program as part of the panel where they brought 200 girls in from the local high schools to talk about women and STEM. And specifically, these are girls. I think most of the ones that ask questions were sophomores, juniors, seniors. I don't think they're many 18-year-olds. And really to get a group of women together on a panel to talk about their journey in technology, how they got there, to be regular gals, you know, not superstar, rock star, CEOs. But to really help the girls get some mentorship and see that potentially this is a path for them. So really psyched. We got the whole panel on. So Ashley Menel, consultant from CRM Strategy at Imperial. So welcome. Thank you. Thanks for having us. So did you ever get an opportunity to participate in a panel like that when you were in high school? Absolutely not. I didn't even know that these type of career opportunities existed when I was in high school. So being able to be part of this and deliver that message is super meaningful for me. And you're a great one because you are not a computer science undergrad, right? Right. So I started my career design and architecture and it wasn't until I finished school that I started realizing that my passion was actually in working with the software and not just using it. Right. So that's great. So again, I think it's just terrific for these girls to see lots of different examples of how you can get involved in technology. And the technology is a really broad field. Absolutely. So one of the things you talked about why you like technology is a constant change. I mean, expressing that to them, you just don't know what you're going to be doing day to day, what you're working on. It's an interesting part of the whole technology field. Yeah. There's always a new opportunity, not only a new solution to be working on or a new product to be working on developing, but just the day in and day out, every day can be a different part of that process. Whether it's gathering the requirements up front or actually executing and delivering the product in the end, it's always constantly changing. Talk about the role of mentorship. Either that you're a mentor to some of these gals, not the ones today, but some that you may be working with or did you have any particular mentors that kind of looked out for you or you looked up to you that really kind of helped guide you through some of the curves and twists on your path? Yeah, absolutely. So as far as being a mentor, there's several programs in Indianapolis where I'm from that I volunteer with. Through Ball State University's Computer Science program, I've spoken at conferences for women working in technology and formed relationships with graduate students, actually helping them write resumes and prepare for interviews, which has been a great experience. And then also through IUPUI, they have a power camp every summer. And so I've gotten to volunteer on panels there and meet middle school and high school aged girls that are interested in technology. So that's been a really meaningful part of my career. And I definitely have had mentors along the way. I think for me, the most important part of having a mentor was realizing they don't have to look like me, talk like me, or have the job I want. It's just somebody that can keep me accountable, talk to me about my goals and help push me to get there. So trying to be that person for other women in technology as well. And do you sense that things are changing in all these different organizations that you're involved with, that girls are being better at seeing that this is really a great opportunity for them to pursue? Yeah, I do. I think year in and year out we're seeing more and more women interested. I think one thing that we have to be cognizant of is that the marketplace is always changing as well. And so just keeping the opportunities available in front of girls who are, as they're studying and letting them know what the next big thing is and not necessarily what the big thing is today. Right. And I thought the questions are interesting because the scope of what technology means is much more than just working at Google or just working at Facebook. Absolutely. The car question I thought was a great one. Can I be involved in technology? I'm passionate about cars. Yeah. And I had a great gal come up to me and she's interested in sports and technology. And she wanted to know how she could marry her love for sports, specifically basketball and technology. What a cool opportunity to be able to talk about that. Yeah. We were just at a show the other day and one of the keynotes was all about basically some of the newest latest technology in sports and they highlighted some of the World Series plays. So there's definitely a lot of opportunities. So talk a bit about the breakout. How did that go? What were some of the questions that happened in the breakout session? Yeah. The breakout was great. This group of girls has been so interested and so involved throughout all the conversations. A lot of the questions we got were about that merriment of interest. So there's another gal who was interested in biology, so looking at how she can marry biology and technology together to form her career path. I've had a very meaningful conversation with a girl about wanting to pursue a double major but also wanting to be an athlete in college and how she can balance that kind of schedule. So they're really thinking ahead about their future and it's really exciting to get to talk to them at this phase. That's great. So I'll give you the last word for we cut out. Again, you said you're very involved in the space. Are there any particular organizations that you'd like to highlight and give a shout out to that people can get involved with? Yeah. Aperio, we have a silver lining organization which is our philanthropic outreach part of our business and I've been able to serve as a regional chair on that over the last two years and we actually have a huge project coming up called Giving Tuesday on December 2 where corporate-wide we'll be volunteering across the globe and we've invited our customers and our partners to participate with us so that's going to be a great way to give back to the community. Where do they go for more information on that? Aperio.com. We can get you the information. Alright, super. So, Ashley, thanks for stopping by. Thanks for spending the time with these girls. It's really, really important that the girls get good role models and as we talked at the Grace Hopper Celebration of Women in Computing with Maria Claude, she said, you know, Zuckerberg, she loves them, but he's just not the guy, right? He's not the guy that these girls that are 14, 15, 16, looking up to see themselves in that position. So good for you for coming out and spending time and a period of making the time for this panel. Thanks for taking the time to talk to me. Our pleasure. So, again, Jeff Frick here on the ground, Pure 48 at the Top Coder Open 2014. You're watching theCUBE.


आस अगरे गरी कुलचरीifts numerator, योंा और लीएं,५ bocaः,ीःyora frag, यों�噘ि डानो, आतonna hen, आतु's manager anymore, य enfin हो, बीये,३ए। madam!।Śिप्टरீसuktarrsasht chart, because, आतकीुर मुजे boosting, आत्सात थराईच।ग़ातचात् पसेंच दोन बीखुखुण Delhi Leslie THE MeAD intellectually with reference of wheat market, Govt intervenes in the wheat market. they park a wheat from the farmers at administratively set prices.  Perez again, When the flour mill used to sell, like AMD, it wasimizable that they sell it at subsidized prices. A overcoming this phenomenon the Government of Pakistan also intervenes in the markets of agricultural commodities. रोग of the government of Pakistan also intervened in the market of the crops like Basmati, Erie-Rise, Cotton and Sugarcane. youtube.com. ॉ ॉ ॉ ॉ ॉ ॉ ॉ ॉ ॉ ॉ ॉ ॉ ॉ ॉ ॉ ॉ ॉ ॉ ॉ ॉ ॉ ॉ ॉ ॉ ॉ ॉ ॉ ॉ ॉ  impeachment price announced key from 1960s to early 1990s but micro economic policy reforms of 1990s may role of the government has been reduced in the domestic market for non weed crops other than sugarcane. ये गुमनें की अरवाप्टमेंट � dal, pe serves for non-weed crops other than sugar cane. ये गुमनें ये गुमनें ठे बने जी ट मेंट मेंट करिट अगरे करिट at weight import and import tariff on vegetable oil remains. ये गुमनें टे ट मेंट मेंट बी नहीं मेंट करिट एक खादोंोंगे अगरे करिट at this time period may be put some control on the weight import. अब उईहाँ of šeलँग इलिएडि मेंः वाटर की पुर्येटएक enorme जि आपःसे रेज़दcript 這 also in these tablereeak have to report about the Both have to report as the per booming agreement price of the wheat for the last decade which grim impeed provide industry ahead total tradeigo but आप यान लास्क खीग Gabriel neighbour Advocative Now again yes वह कोोगा ज már, वह कोगा ज Nebraska जब आप सुगर्केन के रहँट्ट्रन्स में भाज करतेव तो सुगर्केन के जो प्राइसध आद आप भी रहा है। ॐ यह थी कोल्ट्म्से आन दूर्दष्न्फ्वा। । पंजाब आन स्डन। । यह दूर्द भी बूर्दष्वा। यह आप यह यह तीन । शब यह लीगी आप पक्टून्खवा. पनजाब आप और उसा प्रज्वाद में परजाआद. ौport price has been announced by the government. ौport year 2022-23, government announced the cotton price ौproximately Rs 8500 per 40 kg. ौport the major impact of the major impact on these scenarios, that is the exchange rate policy. ौport during the 1970s and 1980s, ौport when fixed exchange rate was followed in Pakistan, ती�團 हाहेर लिसیके on the prices & profitability of the agricultural sector अर यहांरे जोफ पहीर आपके भाज نہیں नब उस illustrations or off Inaudible मैज्यरे बी प्र tampoco आप से वी वेएा प्राही Soft관 maybe they मेज्यरे प्रो से बी नब ए आपके आपके नब चॡ़म मेोन वेशव को� doctor May they दे tongueanınने से रिध खित बग़degree में kötयद्TON because of that fixed exchange rate. In this time period, sugar cane, milk and vegetable oil have been protected through import restrictions and tariffs. So, they are getting some benefit with reference to pricing of these commodities because of import restrictions and tariffs. When trade and domestic policies in Pakistan basically takes the agriculture production relative to the industry, it has negative impact on the agricultural production with reference to industry. You can say that agriculture sector in Pakistan is tax-relative to the industrial sector. In 1990s, wheat import in 1990s helped to stabilize the prices at the level below the import parity border price. Again, when the price in the domestic market is less than the import parity price of the wheat, again we are taxing the wheat farmers and we are subsidizing the consumers of the wheat by keeping the price of the wheat low to the import parity price. So, again, what is the impact of imports on the farmers' income? It has a negative impact. You can say that we are paying farmers a price less than the price that they should get about their agricultural output. Basically, since 2000, there are several major shifts in the domestic prices relative to import parity border price. After 2000, there is a significant increase in the domestic prices of the agricultural output. You can say that the prices of agricultural output and the reference to wheat that is close to import parity border price. Your economy will be open and because of that openness of the economy, which you have wheat prices, they are very close to the international market prices. But at the same time, this large scale domestic procurement that has been carried out by the government of Pakistan, it has high fiscal burden on the economy of Pakistan. And then along with that, the subsidized sales of wheat to mills is also continued even these days. There is large scale domestic procurement and subsidized sales of wheat to the flour mills still in the runtime period.


All right, folks welcome on back here this Wednesday March 24th shortly after 2 30 p.m Eastern time here welcome on back for our afternoon meeting Let's get a quick sound check just to begin make sure everyone can hear me loud and clear We're in this time with the or a very good timing I should say rich with the link for class coming up ahead great to see Taz Lewis Stefan Oh, I want to give a quick shout out to actually in just a moment Stefan and later I saw kill it together on a trade great to see Kathleen James later Ron will Mike great to see everybody there And for all of us on social media folks welcome on back on YouTube live and Facebook You know, hey, we have a lot to talk about in on all sorts of different ends here, right? We have class ahead I know that Fausto actually has a webinar of his own coming up through bookmap. So we had posted the link earlier I know that rich will post that I'm sure like once I hop into class and just you know get ready for that But I want to start with one thing and one thing only because I'm the first to admit that I'm wrong Oftentimes for stocks that make these big extraordinary pops up in pre-market or well at least after the open market open At least, you know, and we'll see a stock make a big move up It'll start dumping back down and at that point we normally don't see it make a big move up In fact, it ends up dumping much back down lower heading into that afternoon. If not that afternoon Well, the following morning. So we had a member on YouTube here I'll actually name him it goes by the at least the initials that I see on the user list arch AF I always refer him to as you know, you call this out heading into the afternoon on yesterday and during this meeting I was like, you know, listen, this is the same thing over and over again I don't think this is gonna make a big move stocks that make these big pops in pre-market They'll dump back down if they're not holding near their highs like heading into this time of the day or after They're not worth it. I'm telling you it's you're just wasting your time And I was pretty blunt with how I said it too. So I'm the first to admit that I'm wrong Well, probably like five or so minutes after I said that and moved on to another stock Just started exploding So at that point I'd said, you know, let's just be careful here folks It could just dump right back down after and the thing just kept going So while I have the time because we do have class ahead here We have class at 3 p.m. Eastern time phase to the final class at least less than four ahead I want to actually bring up what we nicknamed as level four both map I want to do like a little like analysis of this move. So, you know what? I'm the first admit that I'm wrong and with that I'll actually throw the little cherry on top here I'll do a nice little trade review here from from yesterday at least now heading into this afternoon right now today We're obviously not gonna watch it ended up gapping down, you know heading into the you know After hours into the pre-market this morning broke down much lower. So it made that exact move But not before it ended up making a huge run So, you know, I hope that you folks could see my screen here It should be the book map program level four as we nickname it heading into 230 There was a big iceberg order on the ask I mean it looks like a stack of them right off 645 650 and the VWAP there as well So that really is a huge point of resistance That would be pretty much where I would anticipate the pop and drop not as if I saw a book map at the time But you know just while I was looking at it I was roughly around the area that I was saying hey wouldn't shock me if it makes a squeeze up But then dumps back down Well, we ended up seeing this just blow the roof off of 650 here and flew right on up to 7 Broke up towards 750 now once we finished up the afternoon meeting here at least we ended up calling this out Of course, how can we not at this point? Myself at least, you know after kind of not being wrong But you know seeing a stock makes such an extraordinary move and the one that I didn't really think was going to happen right away if at all I Was a little bit more uncomfortable trying to jump in so I was watching this go up and up and up and by 3 o'clock I was watching this make the test off of 8 bucks So at first once it ended up testing this iceberg off of 8 this darker orange line off of 8 bucks You could start to see a lot of green coming in at least on the time and sales on your platform on my platform And then here on book map this 26k print just about filled at 8 bucks so with that but with that type of buying I was hoping to see a higher high and no added nowhere this ended up taking off So I was a little reluctant, but I ended up keeping my order set over 8 to stop the stop limit order to buy And thankfully it filled me and I ended up getting it on the trade. It was almost like a scalp I ended up getting like I forgot like 50 or 55 cents. I ended up closing was right over 850 I think and then it ended up going a little bit higher too. I think right Topped off all the way up at 10. I'm not mistaken Yep Pretty much just about 10 and then from there closed back down I mean whatever price it closed at but you know to see a stock go from 650 by 230 in the afternoon here all The way up and more so than anything, right? I'm gonna bring book map back down now But more so than anything it's after seeing a stock already like pop and then drop in pre-market or at least after the market open So that was completely unexpected completely against what we typically see happen So, you know, hey, I want to give a shout out once again to our member RJF on YouTube there He called it out at the time it ended up running up. Well, I hope he killed it So, you know, hey for right now this afternoon here. It's down like 40% So I hope that you can swing it But I hope you end up catching the wave heading into yesterday afternoon We're probably gonna keep this on our side list for tomorrow for Friday given the range You know, we'd love to see a second little squeeze up, but I'm not gonna hold my breath for it, right? So we'll see what else is out there folks. Let's go from top to bottom now I wanted to just go from the gainers to the losers list with the glass ahead At number one, and I know this was halted on the way up a couple of times here now halted on the way down HPR, I don't know what the news is on this stock I don't have the chance to check news right now folks. I apologize on that But looks like it got halted once twice three times on the way up and then now once on the way down So typically when we see a stock get halted on the way down It's usually a wrap it's game over but you know, you know, I'll keep this on our watch list for right now Just to check it has really thin liquidity on the book I'd imagine there too. Let me actually run this gainers list for right now I want to check to see the spread or not the spread the float So 2.28 million share float that's really low. So be careful on this type of type of move folks It's already up 118 percent and with it being halted on the way down Like I said before that that usually spells game over for the stock But you know, we'll put it on our watch list hence the name watch list We'll watch it reopen see what it does and if you order book things that are fills out a bit more perhaps then at that point We'll have to try and trade it. Oh Geez this game.   So we'll check in with Hall of Fame the equity coming up in a second or two here I see it number five on the gainers list W key though this ended up making a huge run heading into the early afternoon ended up making like a big pop got halted once Moved up and I'll tell you it kind of looks like it got halted on the way down, but Maybe not Nope didn't get halted on the way down just a huge shake. So you know came pretty close I'd imagine just based on this one candle alone this one bar Given how strong it was on the way up given the afternoon move the volume We're certainly going to at least keep this on our list for right now. You know, hopefully it ends up making another pop Ended up making a huge spike up once again So this daily chart it's hard to use this daily chart even to your advantage Because I mean unless if you're banking on the high here of like whatever high this is 1849 just about less if you're banking on that acting as the resistance and you can't really on a trade like this So I'll tell you you're wrong with that thinking but Otherwise, it's just hard to use this daily chart Otherwise, yeah for that matter We'll keep this on our list see if it ends up, you know re-breaking above resistance off of 19 moving back up to 20 APTO so this is one that was up big in pre-market ended up making like a bit of a dip and then took off right away after the market Opened up or at least you know a few minutes after I ended up kind of blasting off from 550 Ended up building this trend steadily up towards the high off of like 715 720 you could see see there Ended up making for that second wind type of move bounce off of like 6 580 ish From there though, you know at this point again This is the same type of stock right like ended up making such such a big move a couple of times throughout the day today trading 167 million shares. I Would not expect this type of stock to you know make a sudden breakout higher heading into the close So we're gonna avoid this for right now if it ends up making a sudden takeoff here Then I'll certainly reconsider Whole of fame. I mean about time this actually has a down day. So, you know, I for right now unless if you could short it I'd probably move on to another another stock. It's trading so much volume right now So is it possible it can make a bounce? I guess, you know, if you do really well on this stock I'm sure you're going to keep, you know a personal eye on it yourself But I want to see if there's any other opportunities first before I potentially jump back to this Maybe I'll keep this on our side list for right now. Just come back to it at the end All right, this one's dumping back down to one shock me if this breaks lower heading into the close Real kind of thin volume fang if I'm not mistaken on us fangham thing Fang fangham thinking like ETF there. This one though Phoenix new metal or a new metal unlimited Pretty flat here. Just gonna pass. It's cheapy though. Good spread good liquidity. I think otherwise All right dolphin and then so yeah, so the news that came out. It was pretty interesting It was the agreement between dolphin entertainment and then hall of fame. So they're kind of tied together now It seems at this point. So check back on hall of fame Check back on dolphin. You tell me folks pretty similar, right? So unless if you could short it, I just move on, you know at this point You know, definitely keep on keep them on your weekly your dailies, you know radar, you know check back tomorrow on them Friday You know next week, etc All right, bbi g I thought this was another like NFT type of stock or you know Bitcoin or mate You know, I think I think it's NFT type of move, but yeah, it's still kind of like dropping off there Oh and see why I thought this was pre-market or no, no, no, this was after the open This was actually yesterday and then it was also this morning here So we ended up catching the balance on this trade We ended up calling it out off the breakout at least off of three seventy five Once it ended up breaking higher from this, you know peak point here Ended up making a nice, you know big move Let's see the markets kind of dipping back down here folks I mean the dows up 150 but kind of slumping off heading into the afternoon So I don't know what we'll find across the gainers or losers list as far as like a familiar name Like one that moves with the market just kind of skimming here right now at this point seeing if there's anything like familiar popping up The LIVX stock this is one that we've been calling out like at this point like the whole week If I'm not mistaken we started calling this out on Monday I know what didn't make the biggest move Monday But then yesterday it made a really nice run up and then today I mean a shortable dropped off after the open ended up making a bounce roughly from like 585 here or 580 You know bounce pretty nicely up towards 675 and Yeah, for right now this remains a great stock to watch I mean hey right now it acts like a great short You know if you were to short this below this dip point here below 650, you know marching down pretty nicely You know what I'm kind of selling myself. I'm putting this on our list So we'll kind of put this LIVX for right now on the main watch list I think that's just about it on the gainers side I don't really see any other familiar names folks If there's anything that you see that's like really moving up nicely that I just kind of skipped over and perhaps was even Like ignorant of then just let me know type it in the chat board I want to hop over to the losers list here like we like I said before we have class finishing up here today 305 Eastern time so we got just about like 20 23 minutes So top of the losers list the BMTC trade there T cat, you know all these like, you know NFT type stocks. I'd imagine like YVR. I'm sure we'll rent run down at some point Yep right here All right, so let's get back to TMEs So I started the meeting off because I wanted to show exactly how wrong I was on the BNTC from yesterday that run up But I was gonna start off with time here right TME Was it again 10 cent music so there was some news out this Was it late morning early afternoon on this trade and it was actually a few different companies that 10 cents related to So let me actually pull this up for right now Except before I don't have the time to check the news But it's actually right in front of me at least for the TME trade So TME trading lower weakness appears related to reports of potential antitrust action Against parent company 10 cent holdings as well as broader Chinese market weakness and tensions amid China and Western nations So that would explain why at least in terms of like, you know weakness among the China market Why stocks like IQ if I'm not mistaken hya not mistaken Billy All these stocks at least from my experience, you know being here in the mornings and afternoons You know bit make you know moves off of certain news that oh, you know over the years But I've noticed that all these have been affiliated with the China market So they all seem to be dropping off, you know really nicely Billy myself. I wouldn't look today trade given the price I just try and keep under like, you know 40 50 bucks for the most part But otherwise I mean hey looks like a nice short heading into the afternoon thin liquidity on the order book I like that IQ trade That ended up making like one of the most beautiful drop-offs like I've really ever seen and that's coming off of the PAAS trade right we talked about that even in class earlier this morning We actually saw this heading into the afternoon just yesterday right this type of drop-off here It's hard to like find a stock or any type of symbol that maintains that exact type of slope or move So, you know just going back there to IQ from this morning Hoof doesn't get much better than that really so for the afternoon definitely TME definitely IQ Taz here in our live trading room picking up 29 cents right now on X. He was short He was in at 2028 as the entry who dropped it off nicely your Taz nice trade So hey X is the stock that moves with the market You know if you do well on X day-to-day or at least week-to-week then why don't you keep it in mind for the afternoon? I mean, I mean I certainly say that to Taz, you know and as well as Taz everyone else But you know, there could be a lot of stocks that will be moving with the market here We ended up seeing oh and at the same time. How about this? I'm just adding two and two together right now It's like the heck Neo and I'm sure I would have found this anyway as we go down the losers list But Neo is a Chinese company so with that in mind Neo will add to our watch list here great liquidity on this on the order book consistently tight spread Rebroke below 37 probably about like a few minutes ago. If not just now Vips taking a hit here today, too This one's got a little thin of an order book here So like we have a pretty good list already at this point I'd love to just like be picky and just choose so you know, hey Vips if you want to go for it go for it But I'd rather focus on like the IQ the Neo the time trade. I call it time. It's gonna be a 10 cent, but TMA So if I com get crushed earlier and MVIS trade from earlier today, I had some fun on this I could say that now I ended up taking it was like a 13 cent hit on it earlier Then I ended up catching the squeeze on the way up here up from 1380 But after I stayed away from this is like a really great stock to keep in mind You know day-to-day week-to-week, you know great sideless stock So I don't know what affiliation this has with the China market if it has any but obviously moving at the lows here heading into the Afternoon so I'm making that same exact type of move as the others for right now So it definitely micro vision otherwise I kind of nicknamed it Mavis and probably hear that for me But MVIS definitely will put on our watch list for the afternoon dropping off pretty nicely still If I envy sideless stock a stock we ended up doing a really well on I think it was from last week Right popped. It's probably like early last week. We ended up trading this Back on the 11th. Oh just about two weeks ago from tomorrow, but anyway, yeah getting back to this I mean hey, it's kind of flat right now. Not a whole lot going on here heading into the afternoon just down big Keep it in mind. Maybe for tomorrow or maybe for a Friday perhaps, but otherwise not a whole lot there Xpev along with Neo how can I not right if Neo is dropping off and we're putting Neo on our list then I'd imagine we kind of focus on Xpev and I don't know if Eli's a China company, but ended up dropping off pretty nicely as well All right, so I guess Xpev will kind of add to our list Maybe Eli as well too just kind of all those EV stocks. It seems like Ken on SL GG another good sideless stock dropping off nicely if you can get the shares to short it go on ahead Greg points out. Yes, Eli is a Chinese company Chinese the EV based company. Cool All right, so that definitely gives us good reason at least to put that put that on our list All right, folks for anyone on social media Facebook live YouTube if there's anyone else that you or any Anything else that you would want me to look at call out type it in the chat board Let's take a quick look on Benzing a pro current time is 248 making actually pretty good use of time here. I Don't really see much else here any other familiar names REIs a cheap stock looks like that just broke a high earlier I don't know what the chart looks like so maybe crap. Ooh actually pretty good nice pop Actually, you're like right before 230. So this was probably creeping up the radar here and at the highs right now, so Ring energy. I don't know what the news is and you know, I'll pull a Fausto here I don't really care to put this on our list So the REI stock definitely gonna make the cut good liquidity on the book Looks like there's an order on the ask at 280, but 275 There's a lot of volume traded off that price from the breakout. You could see just from the volume spike alone We just covered that in the uh Well, we just covered that in two classes the last two classes We just taught right right here this big spike of volume right off 275 you could say all right So that's all I had really for the most part Looking at the loser side there if there's anything breaking lower Lizzie down. Let's see That's like a spotty chart not a whole lot going on really with you with the order book All right, I'll tell you folks. I think that just about does it. I don't really see much else and that's fine I mean, we have a really good list so in total there's nothing really a really I even put on the quote-unquote side list, right? I Didn't write anything down. Maybe the whole fame. I think was the only thing I said I would check back in with at the end if I'm not mistaken You know just given I mean as great volume on the book and a great range day to day to day for as much as it's dropping today Maybe you will see a bit of a squeeze up. Maybe You know what I'm gonna hold off on it for right now I mean if you do really well on the stock then definitely keep it in mind But otherwise I think we have a really good list to begin the REI that last one I think we're gonna put on the top that one I think so far at least the way it looks definitely looks the most promising off a possible breakout So for right now we have two four six eight ten stocks to work with so far heading into the afternoon folks For all of us in social media make sure that you like subscribe notify right on our YouTube channel YouTube comm slash cyber trading you Otherwise feel free to join us go go right down to the link on the banner below to sign up for our trial to our trading room Aside from that for all of us there live for all our students at least and have access to the phase two curriculum I look forward to seeing you in class coming up in just about 10 or 15 minutes And then for those of you not joining us in class best of luck trading these stocks heading into the market close. Take care


Welcome to a truly exploratory online course. Let us assume the following situation. You are stranded within a linguistically previously unexplored territory and you want to explore the language to which you are exposed. This is the classical fieldwork situation. A typical empirical approach in the sense of Joseph Greenberg and Edward Sapir. By means of interaction with a native speaker who neither speaks nor understands your language, you want to find out as many details about his or her language as possible. In a real fieldwork situation, you collect your data in various live meetings with the native speaker. On the Virtual Linguistics Campus, we do it online by means of a virtual speaker in various virtual settings where you can retrieve and transcribe the data via mouse click. So let us now look at the VLC Fieldwork course, VLC 401 Linguistic Fieldwork Welch. Like all fieldwork courses, VLC 401 starts with a general description and the usual preliminaries that provide a general overview of the course including the prerequisites. The first content unit is theoretical and of utmost importance for all fieldwork activities. It discusses some general aspects of the language in focus and introduces underlying methodology from phonetics to syntax and that supplies you with all linguistic analysis methods required for the exploratory part of the course. The core of the course are the fieldwork units, each with an exploratory part, a so-called virtual scene and dedicated to a particular topic. The first scene deals with simple objects. In our virtual interview room, you find the native speaker and a number of clickable objects with their audio and orthographic representation. Sawer, Schilf, Pluch. Your task is to transcribe what you hear as carefully as possible in order to set up a first sound system of the language in focus. Further scenes deal with number, with adjectives, for example the colours, with locative relationships and the organisation of ad-positional phrases and even with sentences that are acted out by a second native speaker. Beginning with the second explorative unit, each unit starts with a hypothesis section where the previous assumptions and speculations are not only summarised but are also judged by the native speaker. The units or topics in this course are activated in a successive fashion. That is, in contrast to all other VLC courses, you cannot access the units all at once but only successively. This guarantees that students first build their hypotheses before they see the solutions in the next unit. For example, the unit number can only be accessed if two previous activities are completed and the subsequent unit adjectives is only available if vocabulary test. One is passed successfully and the exploration activity of the previous unit was marked as successful. But don't worry, the vocabulary mastery test where you can earn a digital badge is easy to manage. In each unit you find a complete list of vocabulary items that have been collected up to this point. Here you can practice and prepare yourself for the test. The VLC fieldwork courses are true online courses. They do not involve any face-to-face tuition. Everything should be self-explanatory. However, it is recommended to use the repository forum in the class preliminaries to discuss questions with your fellow participants or even the social media. And on top of that, each fieldwork course has its customised workbook. It can be accessed or downloaded from the preliminary section and summarises the main aspects of each unit in print. But even more importantly, it contains dozens of tables and charts where you can drop your data. Last but not least, the course is certified. Beyond the digital badges that you can obtain via the mastery tests, each fieldwork class is certified with a statement of accomplishment that lists the content and specifies the workload in hours. And as usual, course enrollment is simple. You have to create your free VLC account first and then self-enroll to your fieldwork class by clicking on the course tile. That's it. And in the course, you will be welcomed by the native speaker. So that's it. See you on the Virtual Linguistics Campus.