Hello, I'm Pierre-Marie de Roda and this is Raphael Amyar. We are both software engineers at ADACOR and today we'll talk about Libetalong. So, yeah, we have very little time to explain to you, so let's go. So first of all, what is Libetalong exactly? Well, in just three bullet points, Libetalong is a library and we wanted to allow people to get insight about ADACOR code and also to modify it. For this, we want to offer both high and low-level APIs. So by low-level, we mean some small details like, okay, what is the location of this token? What is the token under this location? Think like this. And also we want high-level APIs such as, okay, what's the type of this expression? Or can you please rename this type and all use occurrences of this type? Libetalong also wanted to be very versatile. So we wanted to be usable from any language, technology. So for this, Libetalong is an Ada library. It also offers a C API. And on top of the C API, well, it can talk to basically everything. So we ship with Libetalong a Python wrapper so that you can use the whole Libetalong library from Python. So this offers an interesting feature, which is basically you have a really short path between having an idea and watching a tool because you can do a quick prototype in Python. And this is great. So yeah, one important point. So Libetalong is an Ada library. We are going to present you some examples that will be written in Python because it fits in slides. But everything you will see in Python can be done in Ada, of course. Let's go. So let's have a... Well, first of all, let's see why we need Libetalong in the first place. So this is a screenshot from GPS, the worldwide known editor for Ada. GPS needs to know where the block starts and ends. So here you can see that it knows... It seems that it's in a type declaration that starts here and ends here. You get to do some parsing to understand that. So Libetalong will provide that. It also will provide... Well, in intelligent code editors, sometimes you want to click on an identifier and you expect the editor to lead you to the definition corresponding to this identifier. So this is often called name resolution or cross-references. We want you for that. We want to make it easy for IDEs to rename a function for instance or do source transformations like this. And also... So here you have some program. And we want to make it easy to write for people and for everyone to write custom tools that will, for instance, act as linters, so detect variables that are poorly cased. This doesn't match, but it doesn't matter. So yeah, variables names. If you have a rule like all variable names should be capitalized, well, you can easily write a checker to do that. We want that to make it... We want that to be easy with Libetalong. At this point, if you know enough the AIDA ecosystem, you might ask, okay, what not to use it using AIDIS? It does precisely that. Well, in Libetalong we have... Because we want to serve as the building block for tooling including editors, there are several mismatches. The first one is we want to be incremental, which is you open your project, okay, you Libetalong analyses the project and you perform a very minor modification. You don't want the DPS, for instance, to freeze for seconds or minutes because it computes everything that depends on the modification you made. So when something changes we want to do to perform minimal re-computation. Most of the time when you're writing code, your code is incorrect because you're writing it. And so we want Libetalong to be as helpful as possible when your code is incorrect. And also something very important, we want you Libetalong to be somehow bonded in the resources it uses. So we don't want Libetalong to crash your program after three days of running process because it exhausted all virtual memory. So AIDIS and in particular Gnat's implementation of AIDIS, well, they were implemented with some objectives in mind. Here we have different... We have needs that kind of contradict them. So Gnat and AIDIS are not... are polis-treated for what we need. So we decided to do yet another library. Yes. I just want to make one thing clear here. There is no problem actually with the specification of AIDIS for those needs. The problem is more with the implementation that is based on Gnat. So Gnat is a compiler. It was done to do all its work in one pass. So basically it's not adapted to be integrated in AIDIS. And hence AIDIS implementation that we provide is not adapted either. But we found other problems with AIDIS at the API level and we wanted to take a shot at doing something that is more user-friendly anyway. So this is why we created Libetalong. Thank you for those decisions. Okay, so as of today, what does using Libetalong look like? Well, first let's start with the basic level of languages, tokens. You can Libetalong ask to pass it a file, ask it to pass a file, and then to ask for the list of tokens that came from this file. So here we have an ADAP program, a really simple one. And this is a simple usage of the API, so in Python. You create a context to host your computations. You ask it to load a source file. So you take your analysis unit and you take the root node of it and you ask for the list of tokens corresponding to this root node and you print them, all of them. So this is the result. So, well, asking for the token stream is quite easy. Next level, let's go to the syntactic level. So this is a more complex ADAP program. Well, you can ask here too. So you take the root node of your analysis unit and here you ask, okay, find all nodes that comply to this predicate. So this is the type. So find all nodes that are object declarations, print their slug, well, source location ranges, and their text. And so this is the result. So again, something useful. So, yeah, performing this kind of query is useful, for instance, for linters. And next level, and this is getting more and more interesting. So this is yet another ADAP program where we defined two double functions that are overloads, so they're called the same. They only differ by their signature. So one of them takes an integer, returns an integer. The second one takes a float and returns a float. And there is a call to one of these double functions. So in Nibedalong, okay, so I didn't repeat it there, but we have asked to pass this analysis unit. Then here we're trying to get the double call. So we find all call expressions whose called function is named double. And, okay, so here we have, so this call is present here. And then all we have to do in Nibedalong to get what double function is called is to get the name. So the call actually gets also the arguments. And if you get the name, you only have this. And you ask for the reference declaration, and you print it. And Nibedalong selects, as we are calling double with an integer, the first of the load is chosen. And so Nibedalong finds which is the one that is called. This is cool. Okay. On the previous slide. Yes, sorry. On the object declaration. Previous. Previous, yes. The second line is afterwards. There's only one line with two object declarations in it. Syntactically, no, this is in the Ada grammar. There is, this is a single object declaration that declares two objects. That's an interesting point, so actually. No, no. Just give it to me. Okay. So that's an interesting point in the Ada grammar. Syntactically, you have one object declaration node, but indeed, semantically, you have two. So since Nibedalong's prime goal is to make analyzers and tools that act on syntax, we want to keep as close as possible to the syntactic representation, which is why you only have one node. We don't modify the tree after parsing or stuff like that, which is another thing that is difficult with Gnat and Asys, because they are compilers that want to emit code, so they might get rid of that representation very early on, and then you don't have access to it anymore. What if I have a reference to C, for example? I want to jump to the declaration. So for the moment, reference declaration will just give you the whole reference declaration. That would be enough, but from C, I have to find the declaration. Yes, absolutely. So what we plan to do is to have an API that will also give you the precise identifiers that you are looking for. But that is not done yet, but it's not too difficult to do. Okay. Okay. Now, so this is being worked as we speak, almost. So we want also to provide a feature that enables users to actually modify the source code. So here we have, on the top of the slide, an AIDA program. And then here, this is the use of the API we intend to facilitate with Zilberda alone. So, yeah. So first of all, so imagine we want to turn this into this. So all we have to do is to take the call to put line and to modify the input argument. So first of all, we find the node corresponding to the call. Then we start a rewriting session because while rewriting things, we want to keep the old thing available to help you doing the refactoring. And then, so what you do here is to take a kind of rewriting handle to the parameter here. And then what you do here is to say, okay, let's rewrite this parameter and rewrite it using a string literal, this one. Then you apply so that replaces the old source code with the new one. And then you're supposed to get this. So we want to provide that and work in progress. A question about that. Yes. We're trying to bootstrap Ada from a very small assembly scene. And part of bootstrap able to talk. And part of bootstrap able to talk. And we have problems with Ada because Ada is implemented in Ada. And we have a self-perfection problem. And I wanted to ask, is it possible to use this to do transpiling to see something, for example? Yes. Yes. A little bit of topic, but yeah. Let's discuss that after. What would happen if the string had a word that appeared twice in the program? For example, another port line had a word. So actually this example is incorrect because find all returns your list. So here we were supposed to extract which found element we would have to work on. So in this example, if there were multiple calls to put line, we would have several results and we would have to pick which one we would want to rewrite. So if I can be a bit more precise, the way you are finding the node is not by searching for the text, but you have the option to search for precise context. For example, you can say I want the first call or I want the call to this function even if you have another function but the same string literal. So you have a lot of granularity because you are doing a query on the tree and not on the text itself. So here we say we want the first call expression but you could say something else and get the node that you want to rewrite very precisely. Okay, I'm afraid we'll get out of time. Okay, so this is an example. So if you remember in the previous slides I talked about a linter that will check your variable names identifier. This is one possible implementation of it. So it's the whole script. We just iterate through each given file name. We parse it and then we check for parsing errors and if everything is okay, we just look for all object declarations and all identifiers inside object declarations because they can be multiple anyway. And we check the identifier and if it's not capitalized, we want about it. So it's really simple. We want it to be really simple to write this kind of tool. And now I will let Raphael talk about more usage example of the library. Okay, I guess it's good. So Pierre-Marie showed you a bit of how it's supposed to work and how you use it. I'm going to show you what we did with it so far and what we will be able to do with it in the future. So I didn't get that I was going to start with the demo. So a little demo to start with. Yeah, I'm going to find it. Don't worry. So far, we showed only Python code. So you might be like, okay, those Ada core guys, they do only Python. So the example I'm going to show is done in Ada. So we don't do only Python. We also do Ada. So what it is, is a syntax highlighter slash code browser. So it's basically a very small subset of the functionalities that you want in IDE. So it's a common light tool that you launch on your project. Here it's the Gnatcov project. And it generates a hierarchy of HTML pages. And then if you click on one of the links. All right, so small. Then you get highlighted code. Okay. So basically this is done with the libay.long API. We highlight tokens in certain fashion, but we have the tree so we can do a bit more syntactic highlighting. So for example, you can see that types are highlighted correctly, et cetera, et cetera. And then you have links to the cross references to right here. And if you click on it, it will bring you, even if it resets the size, which is a bug, but it will bring you to the correct source and to the correct line with the line highlighted. So this is very simple, but it can still be practical if you want to browse your sources offline. And it is shipped with libay.long today, so you can already try it if you want. It's in the country directory of libay.long. Okay, so my demo went well. I'm so happy. So another thing we did, Python again, is very small syntactic-based analyzers. So this was a fun project done by Yannick, who is not here now, but did a presentation on Spark. So he was like, oh, we do all this really complicated static analysis based on Spark and code here, but let's do something really simple.  It's looking for binary operators and looking for cases where the left side and the right side are the same. And in most of the time, it's an error, okay? And this is the way you express it with libay.long. So we look for every binary operator. And if it's in the list of interesting operators, so we have multiplication, addition, the concatenation operator, et cetera, et cetera, then we check if syntactically, the left side and the right side have the same tokens. And if they do, we print a warning. So what is really fun is the number of problems we found with that in our code bases. So basically, we would assume since we run static analyzers and we have big test suite and everything, no, this cannot happen. It's Ada, right? It's a very safe language and everything. But, well, we had a lot of bugs in our codes linked to that. So it's really interesting. It's also an example of the power you have at your fingertips where you have access to the syntactic part of the code. So you are not into the text anymore. You can browse the tree and find interesting stuff. What we are working on right now based only based along two is a static analyzer based on semantics. So it's not a full interprocedural analyzer like, for example, code peers that we have. Some of you might know about it. But it's less powerful, less ambitious in scope. It allows you to do interprocedural stuff a little bit like a Selang static analyzer. So here, for example, we have a simple example where we have a file and we open it. And I'm going to take that, too. And here, we get a line and we close it every time in the loop, which is obviously an error. But when you write the code, you might do this kind of error. So what we want to do is to be able to warn you very early when you write this kind of API code and say, oh, be careful. File might be closed at this point. And when you close it, it might already be closed, too. So we are using a simple form of abstract interpretation to make that. And what's interesting is that users will be able to specify their own checks for their own APIs. So if you have an API that has some simple invariants like that that you want to enforce, you can add a simple checker for it. And it's a work in progress done by one of our interns at Edecor. And you can check the progress on this repository. We also did a copy-paste detector because we thought it was fun. Given the number of bugs we found with the static analyzers, maybe we could find like maybe a whole project duplicated at Edecor or something like that. It didn't happen, but we found some copy-paste. It's also an example of the API of Libatelon. And it's very lightweight. It's a few hundred lines of code, and it's pretty efficient. So if you want to try to run it on your Edecor base, you can find it on our blog here. And it's a contrib directory of Libatelon. So inside Edecor, we also use Libatelon for serious stuff, not only prototypes. So we are in the process of changing the semantic engine of GPS, the main IDE, to use Libatelon. So it's a work in progress. It should happen in the following year. And also the new versions of GNAT metric, GNAT stub, and GNATPP. So GNATPP is a pretty printer. It goes through your code and pretty prints it. GNAT stub generates stub for your sub-programmed bodies and specs. And GNAT metric gives you some metrics about your code. And all of those tools are based on Asys for the moment and are being adapted to run on top of Libatelon. And outside of Edecor, we already have some people using it. Some guys are doing instrumentation with it for coverage. Some people are doing automated refactoring to make code smaller. Some people are making serializers and desalizers to JSON on top of it. So this is an example of the kind of stuff that you can do on top of Libatelon. So in conclusion, if you want to check out Libatelon, literally or not, you can go on this URL. You can try it and open issues if you find problems. The API is still a moving target until we release it as a real product. But it's very stable for some parts. Some others are moving. So it depends on what you do with it, I guess. Thank you for listening. And if you have any more questions. I have one more to add. If you want to know how Libatelon was implemented beside this, we are doing a presentation at what? 1 p.m. tomorrow? I think it's 2 p.m. It's 2 p.m. Anyway, check out for the linkage presentation in the source code analysis dev room. Yes. Thank you. Thank you very much. Questions? Yes? Does it mean that you will give up some support for ASIS? So the question is, does it mean that we will give up support for ASIS? So we are not going to release new versions of ASIS. So it's basically baseline. We will continue providing support for the current version of ASIS for undetermined time for the moment. So that's a control? Oh, yeah, yeah. But don't worry. We won't leave Jean-Pierre hanging. It's not part of our plans.  Yes. And we don't want to do that. So obviously, as long as we have some requests for ASIS support, we will support ASIS. We, internally, there have even been some discussions like, oh, we could rewrite the current ASIS based on libation alone. So just to give you an impression of the kind of discussions that happen, we would prefer not to do that, honestly. But if we have to... It depends on customer pressure. As a base, the question is about the CE. Oh, yeah. So you had the question, which was, could we use libation alone to transpile to C? Anything else? The background is this. That, you know, Ken Thompson's famous paper about backdooring compilers. Yes. And it could be that all compilers are backdoored. And that's why we started the project a while back, which basically starts with us manually toggling switches on the computer and writing a small program, which is an assembler. And then building a tower of languages until we are at GCC, which now works. But other doesn't work because the other in GCC is written in other. So it fails. OK. We'll try to find a way to fix that. I think there is one really big thing that is missing in libation alone is the implementation of execution semantics. I mean, the knowledge is not there for now, at least. So there's still a huge work to do starting from libation alone in order to create, basically, an interpreter or compiler on top of it. It's not really his job to translate to another language for now. Yeah. So basically, you have a small part of the front-end. You have the cross-references. If you really need the legality checks, you can use Gnat on top of libation alone. But then you still have a lot of stuff to do if you want to compile your code. There exists one Ada compiler, not open source, but there exists one that actually emits C and uses a full Ada runtime in standard NCC. But I think the chart for using it is $1 per line of source code. That is the code I heard at some point. You might be able to say, get them to say, it's an interesting project and not pay. I think it concerns all of us by now because everyone has to have untrustworthy computers and have everyone listening to everything else. It's probably not good. Maybe they're interested. What about the completeness of the front-end? Can it pass the other compiler source code? Can it pass? Was that the question? Can it pass the Ada compiler source code? The answer is yes. It can pass any source code that we could find. The parser doesn't fail on anything that we could find. The semantic analyzer, name resolution, still fails on some stuff, but it's getting really small. That's all we have for the moment anyway.


Moving on on on the on another example I'm calling in now Natasha Frank she's an American entrepreneur she's dealing with IoT on recycling but I'm sure she will not present it this way so I let her introduce herself activity and her perspective. I'm founder and CEO of a company called and we work on IoT which is Internet of Things for the purposes of circular economy and sustainability and there's a tremendous opportunity here as well as a huge imperative because our generation is the first generation to learn of climate change and also have the ability to do anything about it and the ability to harness the power of technology to enable this sustainable future is absolutely essential so our company works specifically with the focus in the fashion apparel and retail industry and that may seem you know why that focus fashion is actually one of the most number two most polluting industry in the world second only to oil so there is a massive massive pollution here in this industry and it also introduces the first model for introducing IoT or the Internet of Things and can I get a show of hands of just who in here knows what IoT is okay we're doing pretty good so the Internet of Things is basically the permeation of the digital world into the physical world right so we think of the internet as something that we search on our computers well this asset this product this shirt will be searchable this will have a digital identity this will have a profile and that leads to you know the biggest introduction of data into the physical world which also introduces the biggest opportunity to use data to power a regenerative future so if we get a little bit tangible with this what are we actually attaching to a physical product to bring it online here's an example this is what we've developed as well as software that enables this but this is one of the industry's first RFID tags in the form of a thread that can be embedded into the product right so that's actually what you attach to products to bring them into the digital world right 80% of retailers are moving toward item level RFID tagging so now you have a huge opportunity to marry this kind of technology with a sustainable future right so if this product has a digital identity now you can access all the transparency all the information about the utilization of that asset throughout the product lifecycle and you also have the first global system for recycling because you can scan the asset recognize the material content sort separate accordingly it also is a huge alignment or potential conflict with policy right because now we have products that are identified and we have data merging into the physical world and how do we even begin to start to regulate that start to measure that start to create solutions around that when most you know IOT is very new and emerging technology while new and emerging IOT is actually about by 2025 gonna be 11% of the world economy right so this is not something that is a sort of side technology this will reinvent about every single industry as the digital world moves into the physical so if we if we actually you know compare this I think an example that helps look at how data you know looking at the physical world here is right now when you send mail through the post office right the post office doesn't read your mail right but if they decided that the post office wanted to make more money by reading your mail you would say oh no no right that wouldn't be okay yet that's what Google does every day when you're using these services because you're signing up for them for free right and so basically you now have kind of this kind of concept that you wouldn't accept in the physical world moving into the digital world right but then on the other hand if you look at it you know an example like that with a different approach when we look at technology in the physical world you know like the use of municipal energy systems and the public private partnerships that go into designing urban energy utilization there's great alignment there in terms of how the cities and the and the energy companies are working together to create urban infrastructure so here I think we kind of have two different examples of the way that data ownership and collaboration you kind of reshape the future landscape of technology and how can we now with IOT harness the power of that technology for sustainability for you know policy improvements and I think it's one of the most important things that policymakers entrepreneurs big technology companies get right because this technology is the most powerful enabling technology for a sustainable future so if we don't look at those intersections of where we can use big data and this in this sort of cross-section with consumer privacy and government opportunity then we won't be able to extract the value here so I think this conference presents an incredible opportunity to start to look at those new public private partnerships how technology plays in that sphere and how to kind of create solutions that actually support this more meaningful future so thank you so very much and I look forward to speaking with you all later thank you thank you Natasha I would like to stress two points so what Natasha showed you as an RFID tag in form of the threat is quite a technological achievement so in it and you will see more this that will accelerate there was the the deployment of notably the 5g telecommunication standard that will allow and we master the problem of the energy on the IOT side so that will develop but also for this conference I think Natasha highlighted very important point is the traceability and and the transparency there will be no place to hide you will you will have it you will know from the beginning where where it is developed and then produce manufactured use reused and then recycled and that will provide an enormous amount of data that will not be able to be processed by the normal compliance mechanism that we have to and we will have to integrate these elements a lot of the IOT data by the way will be useless and to be very clear because they are just here but you can't do anything about it but a very important fraction of it will be extremely useless and will help perform not only the compliance part but also understanding how efficiency and effectiveness notably in the consumption can be can be improved because we will identify patterns that we cannot identify today but just observing what we see as human being so that was the point so thank you very much for your point Natasha


Hi, my name is Abe and I'm one of the first $10 oil chains at Dodge Chrysler. Come on down, meet the nice staff, do a fantastic job.


Mounted and dismounted attack. There's another squad in the wood line right now. First, they went over their task or organization within the squad. They kind of just walked us through that when we were still up there. And then they split us up in two groups with two different squads. And we just walked through the force with them as they were doing their formation order movement, their communication. And then finally they hit an objective as a squad. And then once they were done with that, that dismount operation, they brought in their mounted vehicle and did a mounted attack. Things that we were able to cross train with the Japanese was us teaching the Japanese our formation order of movement, our techniques as far as patrolling, different hand and arm signals that we use, the reacting to contact and squad attack. The one thing that I need to weigh out is can I take the fight by myself or do I need help from another squad? We were given the opportunity to teach our counterparts, our fire team wedge, and incorporating that with our squad fire team column wedge. And then how to transition from a wedge into a file when in dense vegetation.


Seven, six, five, four, three, two, one, go. You'll never have a decent. What's up guys, welcome to today's vlog. I'm feeling very strong on the vlogs lately. I got three days in a row, so I hope you guys are enjoying them. I'm gonna try to keep that ball rolling. Today what we're gonna focus on is concave layering. We did a nice medium length haircut. I love it because it's got a nice shattered feel to it. The other great thing about this haircut is that we did some shorter layers in here so it stacks up, let's see if we can show you. It stacks up nice and tall in the crown area and then shatters out towards the bottom. So lots of layering. I also show you guys a new technique on this fringe, how to create kind of a shattered fringe in there as well. So let's get started with the video. Let me know if you have any questions in the comments below. Here we go. All right guys, so this is the transformation that we're gonna have. So the thing I like about this video is that instead of taking a fresh manic and we actually have one that has already been cut in a longer haircut, she's got a bang, she's got a lot of layers. So how do you transform that into a medium length haircut? That's what we're gonna go through now. So I'm gonna start off by sectioning right down the center of the haircut. Because I'm gonna do a straight kind of fringe or a shattered fringe across the front, I can part it right down the center and section off each side. So then I go mid crown down to right above the temple area, right at that parietal ridge point and I create kind of a triangle on the top of the head. Then I go straight down center back from that. And then what I'm gonna do is something a little bit unique because I like to find the corners of the head. We've talked about this before. I kind of lay the comb across the crown and then I run the comb down just to see where that occipital bone starts. So you can see that parting, how it goes right down behind the ear, basically creating another triangular section with a diagonal forward line. And then I do the same thing on the opposite side. So I'm sectioning this haircut into three parts. I'm gonna start by collapsing the bottom. Then I'm gonna work into the mid part of the haircut and then we're gonna work on the top later on. So the thing I like about this technique and as we're gonna go through the haircut, what we're gonna do is we're gonna create the concave layer. So we start off, I go from high occipital bone down, creating that small vertical parting and then elevating my elbow up. And this is cutting true concave, really collapsing the shape. If you guys don't know what concave layering is, it's above 90 degrees. So it starts to collapse the shape. So we shift our elbow up, give it a really extreme kind of feel to it. So it's gonna create a nice short layer towards the top of the occipital bone and then it's gonna get longer towards the end. In a lot of concave layering that I do, I'm leaving the baseline of the haircut a lot longer than it's actually gonna be in the end of the haircut, which I'll show you guys when we get there. But I'm gonna start off just by creating that interior shape that I'm looking for. So I'm really focused on how long that layer is right at the top of the occipital bone, not so worried about the length that I'm pushing towards the bottom. Everything's being over-directed into the center. We talked about this in the previous video that we did. So if you look at the center as six o'clock, we're taking everything all the way over to nine o'clock, which is right behind the ear and we're over-directing it all to six o'clock. What that's gonna do is push extra weight towards the front. It's also gonna preserve length and it's gonna create the shortest point in the center back of the head, which is a nice strong point where we want that layering, but we don't want it short all the way across. It can get a little mullity looking if you do that. So depending on what the guest wants, you know, you go from there. So we're gonna do the same thing on the opposite side. Difference is, like always, I'm combing the new hair towards the guideline. So you can see now instead of pulling towards my body, I start pushing towards the center. What that's gonna do is keep the consistency. The hardest thing about haircutting is staying consistent with your combing. The cutting part is the easy part. So I just go through, I'm using my YS Park 339 comb. It's my favorite comb. You guys see me use it in pretty much every video. The reason for that, it's got great tension. It's not too big. It doesn't get in the way of everything that I'm doing. I just work my way through the head shape. So now we've created that concave feel. So now I went through in my head a couple different ways of how I wanted to go about. That being comfortable, cutting this part of the haircut. And palm to palm was my choice because it just felt the most comfortable. The more you put your elbow up in the air, the harder it is to stay consistent. So I just tilt the head back towards me a little bit, which makes it a little more comfortable and I work palm to palm. Everything's gonna come back to that point again, but a little more of a traveling guide in the back across the crown. And then as soon as I got to that nine o'clock position, then I start over directing everything just straight back to me, not straight over to six o'clock. So let's say that nine o'clock is going back to eight o'clock and just being over directed straight back. What that's gonna do is almost like cutting a graduated bob on top of a haircut. So I like this because we left it a little bit longer. You can see that kind of forward feel to it, how it starts to move forward. That's gonna be great when we go in and we cut that base part of the haircut off, which will make sense in a minute. So now I'm gonna work over top of my fingers. This was the most comfortable choice for me. Again, haircutting is all about being comfortable. That's what's gonna make you consistent. So working on top of my fingers was the best choice for me working through. Still traveling guide all the way through the background, when I hit that nine o'clock point, then everything just comes straight back to that, which becomes a stationary guide at that point. So I'm gonna work my way through the head shape. You can see nice vertical sections, slight diagonal back, not too much. That doesn't really matter, but I try to keep my partings pretty much similar to the angle that my finger is going to be, just for reference. So now you can see the layering that works through there. You can also see that there's a long kind of tail hanging off the back. That is the extra length that we pushed and kept at the bottom. So now I'm gonna go through with my Donald Scott Twist razor, and I'm gonna go through and just use a heavy stroke with the razor, but also just to shatter the bottom and create the length that I'm looking for. Yes, you could go through with the scissor also and cut the bottom. Sometimes I like to use multiple tools to get a different effect. This is an easy way to get a shatter bottom. Sometimes when you point cut, it doesn't really turn out the way that I want it. It seems a little bit more thick if I try to cut it with a scissor. So just going through with the razor real quick. If you have the tool, you might as well use it as well. So now I'm gonna go through blow dry the hair. I'm using the Ergo Paddle Brush Dyson Blow Dryer. If you guys have questions about the Dyson Blow Dryer, I did do a review on it. I am really enjoying the blow dryer, but it's also a $400 dryer. So if you don't have every tool that's nice, if you don't have nice scissors and you don't have nice combs and all that, I don't recommend that that's the first thing you go out and purchase. But it is a really cool tool and I love new technology. So I'm actually really enjoying using the blow dryer. So we're gonna go through Ergo Round Brush as well. So I used the paddle brush just to get a little bit of movement. But the cool thing about this cut is I wanted to have that volume created with the round brush. So I go through and I create that volume on the sides just at the base and then I go through the top. I don't want all that volume on the top. I think sometimes what separates when you're doing a haircut or styling a haircut, what separates it from being modern looking is that we do too much round brushing and then it becomes too big of a helmet look to it. So this I just go through, polish off the top, round brush the sides, get that kind of volume going in there. And now I'm gonna go through using my Mizutani Puffins which is my dry cutting scissor and I use the tease cutting technique to blend the top. So you know how we left that triangle shape on the top so I blew that dry, I didn't cut it at all and then I go through and I cut it dry just to give it a nice blend. The top to me is a roof. It's sitting over top of the foundation that you created. So as I go through it, I can use my dry detail work to really just soften that roof and lay it over there and give me that detail I'm looking and really the texture that I'm looking for in the haircut. So I use the Mizutani Puffin here. This is the dry cutting scissor. Through the rest of the haircut before when I did the precision cutting, a lot of you guys ask questions about what tools I'm using. I use the Mizutani Pen Slim Scissor. It's a brand new, it's the newest scissor that Mizutani has. It's Nano Powder Metal and I use that for my precision cutting. It was the six inch version of that. So now just finishing up. If you're wondering how to do that texturizing technique on the top of the hair, I really, it's just a half open, half close. So as you push into the hair, you half close the scissor and then you release it. So you're teasing into the hair and then you release it. That allows that texture to be built up and for it to only cut a little bit of the hair. So now I use the round brush. You can see how it gave that fullness and body in the haircut. Now I go through with my Vibra Straight Iron and I polish the ends. So I don't like to just use one tool. One tool doesn't fit everything. So we go through and I use the Vibra Straight Iron to smooth out the ends to really kind of make this look happen. And then at the very end, I finish off the fringe.  This thing's cool because it's texturized on both sides. So there's gaps in between the blades. So as soon as you cut, you can slide that scissor right out and it doesn't pull the hair, which is really nice. So I just work it back and forth until the hair is completely cut off. So I could do this with a scissor and then I would go through a point cut or I try to use it with a razor. It's just another technique that you can do to create that shattered fringe without it being too shattered and really allowing you to customize it. You can see how I'll take the Texture Scissor and I'll go a little bit higher, maybe about an inch in. But the key thing in that is the elevation. So I don't lift the hair too high because the higher you lift the hair, the more layered it's gonna get and then you're not gonna like the outcome. Finish off with a little Bercato Carve. This is a Texture Cream Paste. Just use that just to add that texture in there and piece out all those layers that I created in the haircut. I really like this cut. You could wear it curly if you wanted to. You could wear it straight. I like the straight kind of textured feel to it but you could also use a wand iron on it as well if you want to, but you can see that shape. I really love that build up of weight in the crown and then how it just slims out in the bottom. So hope you guys like it. Let me know in the comments below. Thanks for watching. All right guys, like always. If you like this video, then make sure you share it with your friends. Also, hit the like button below and if you haven't subscribed to this channel yet, you have to subscribe to the channel. Also, check out freesaloneducation.com. We have one of the biggest deals of the year going on, so go check it out if you want new scissors, combs, clips, brushes, carving combs, all the tools that you see on these videos are available for purchase on freesaloneducation.com. So I appreciate the support, guys. Let me know if you have any video ideas below in the comments as well because I love hearing your ideas and also if you made it this far in the video, you made it all the way through. I love to hear that as well. Thank you guys for watching. I'll see you on the next video, next. Right now we have one of the biggest deals.


Hey guys, this is Matt Beck from free salon education calm And what I'm gonna do today is walk you through my version of the Jennifer Lawrence haircut One of the biggest haircuts right now. You're seeing is this trend And the greatest thing about it for me is that this haircut is so versatile you can style it in so many different ways So we're gonna start off Just parietal ridge sectioning on both sides down to a point in the back. That's basically low crown area then what I'm gonna do is take Vertical section straight down the back and then diagonal forward sections just below occipital bone You can see right now how I'm working there. So finger angle is diagonal forward and the key to this part is that I'm actually Walking around that corner. So I'm not just cutting a straight line You'll see me take fine sections and just work my way around that edge so that I don't leave too much weight Sitting in that back corner.  Maybe a slight Lower elevation, but for the most part everything is just straight out from the head as I work up to that occipital bone area Again walking around that corner. You'll see I readjust and I changed my finger angle to follow the curve of the head This is just gonna give it a softer feel and you want to make sure that Anytime you're cutting something and you don't want too much weight You just walk that corner the corner is what's creating all of the weight because the head's starting to move away from you There you go. You can see it's nice and soft just real soft layers laying there And again, I don't like to speed these haircuts up because I like you to see every little detail that's happening because every detail is important in creating a precise haircut so Again, nice fine sections. I could have brought that little tiny piece into it But I want to work this there still would have been extra Overdirection in that piece if I would have tried to take it all at once So you want to make sure even though it's a little bit of hair left don't rush yourself and you know grab what you just grab what's gonna be I Guess the right piece is what I'm trying to say So I drop that little tiny piece down it will finish off this the section and see my elevation It's not changing now. I'm just gonna go through a little scissor over comb Just working up dusting the ends I don't want not looking for big mistakes if I see that then I want to go back in and cut But so I went diagonal forward with my cut now I'm gonna go through and I'm basically cross-checking using scissor over comb So just going through there dusting off the ends making sure everything looks nice I'm gonna do the exact same thing on this opposite side here The tricky part about this Sectioning or working on the opposite side is that you're gonna start low and work high so my scissors started to tip of my finger here and And I'm working Obviously from the the neckline to the occipital bone this way So I just want to make sure that I go back in and I make that curve like I was telling you before You just want to follow the curve of the head And make sure you do that You can see my fingers kind of tuck in there just to follow that line You can see as I take my my section I'm only grabbing Just what I need just enough of that Guide line So I'm not pulling too much hair from the bottom because the further you pull that hair It's gonna make your guide seem shorter even though it's really not so you'll end up cutting a hole in your haircut But you didn't want before so again just following that line you can see a nice Crisp clean look to it nice small sections is you know the biggest tip I can give you on this part Watch your elevation on this because now my elbows in the air so my hand naturally is gonna want to drop down So I just got to make sure I keep in my mind that elevation is straight out from the head All right, and again diagonal back. I cut diagonal forward.  So I'm not curving my finger I'm not following the round of the head here I want to leave a little bit of a weight line in this haircut. So traveling guide Keep working through this angle will show you that line that we're working with Straight up in the air. They'll leave a little bit of weight right at that point there Which is good for somebody because even if you look at Jennifer Lawrence She's got a little bit of a rounder head. So it leaves the weight An extra bulk in the back of the head and it just makes the head look more proportioned correctly We're working our way straight up now. You're gonna see my section Starts to work around even more of the round of the head if you look at the very top of that section The head's starting to peel away. So what you're gonna notice is at this point On my next section, I'm gonna follow the head a little bit more because I don't want to leave too much weight So as we start to round that head a little more. I'm gonna round off what I'm cutting So you see that little extra bit of elevation not going completely 90 degrees because I don't I still do you want a slight weight line But I'm elevating it more than I was. I'm not just cutting that straight line up in the air. So we'll cut straight up in the air here then another comb and just a slight Bend around that corner and remove that a little bit of extra weight We're gonna do that all the way through this next part This was most comfortable for me working on top of my fingers through the whole thing You could switch palm to palm here if you want, but just works best for me this way Sometimes when I have a guest in the chair, it's easier at this point to be cutting it palm to palm But you know, it just depends on the height of the head manic and I had it up a little higher Okay, now again. Well now we're working on the opposite side right hand side of her head we're going to be Elevating straight out and working straight up just like we did in the past or the previous section This angle you'll really get to see how I'm following the round once I get past that point In the back right under the crown once I get past that then I start to follow the round of the head a little bit more Basically working straight up right now and then as I get around this corner here You're gonna see me following it more now start off straight up in the air then re comb Follow the round a little bit more. So my finger angle. You'll see you just slightly changes I'm showing you where the round so at that point the head is rounding off So my finger angle changes and I just take off that slight bit away and real simple Something I want to point out to you guys we while we're working on this section Everything's basically the same right here Make sure you check out freeslawneducation.com because we have Over now a hundred haircutting videos color videos All kinds of different videos for hairdressers to learn from and they're all free So if you get a chance go to freeslawneducation.com and you can check them out Again just working on that round of the head there So you can see that little bit of weight kind of building up, but it's not too much Which is going to be easier for your guests to style and And it just looks better in the overall picture of the haircut Notice when I'm cutting even on top of my fingers just that one blade is moving and that's something if you don't have that down yet Make sure you work on that because it's just going to make your lines so much crisper in your cuts See nice flow to the back. Everything looks balanced Now we're gonna work on the side and hopefully I think I'm gonna pull up a picture. Yeah, there we go picture of Jennifer Lawrence and what you can see is right around the ear. It's a lot tighter So what I'm going to do is section this into two sections will have our top half which will clip away And then the underneath right around the ear I'm going to take a diagonal forward section and I'm going to take that really tight to the head So it's almost like we're gonna undercut this point this portion Because it's a mannequin.  We don't really want that there So I'm traveling the guide and just so there'd be a slight bit of weight because of the diagonal forward section Now I'm gonna work on top of the head on the top section Still diagonal forward But instead of cutting palm to palm now I'm gonna work on top of my fingers So I'm gonna use that bottom piece as a guide and I'm gonna cut shorts along in there and remove that way This point I am following the round of the head. So you'll see that happening That gives it that kind of push forward. You'll see in her hair. It's layered and push forward Almost like it's triangular, but it there's no weight into it. So This technique helps break it up if you wanted to even a little bit piece here You could point cut at this point, but I like to build the structure in there And I'll point cut it when it's dry and I'm combing from the underneath up for me I like that because it's me basically Keeping that guideline in there and just taking small sections and working through it. So Separate the bottom and the top just a little bit of hair at a time Working through diagonal forward and removing the weight 90 degrees at this point Basically straight out from the head and you can see it falls forward really nice. Just like the look you're seeing in the picture Except on a mannequin obviously And to do the same thing on this side. So we're gonna section off half of it the top's gonna go away We're gonna do a little slight undercut cutting diagonal forward in our fingers palm to palm Kind of an underneath view Thaddeus is getting very creative in this part of it But it shows a good angle there now we're gonna work on top of our fingers again using the bottom section as our guideline When you're working with your scissor and you get that one blade moving the great thing about it is you're gonna have your steady blade Resting against your finger and then the cutting blade is gonna come down and cut it So you have less of a chance of cutting yourself if you're just moving that one blade You can see following the round of the head there. That's all 90 degrees straight out from the head and following the round So There won't shouldn't be too much of a weight build up in there Here we go just finishing it up and again don't take too much hair. So that little tiny bit that I had left I don't just add that to my section just to get done with the haircut you Section it off and then you can just finish it off with that little bit All right, so nice even flow to the haircut very weightless because we're working on 90 degree angles Now I'm gonna split the front in the back of the head again So we're gonna be working in the back crown area first then we can work on the front I like to separate these in most haircuts because the crown of the head is definitely you're gonna work it differently So I want to work with the calyx here. So depending on how much of a calyx they have I may do Less tension I guess Would be a good way to put it So right now I'm gonna work that straight-up line that we were working before in the back I'm gonna work straight up in the air and that'll again leave some weight Right in the crown area so that they have that kind of proportioned head head shape look Just to give them a little extra volume See basically straight up in the air. I'm gonna work traveling guide Everything coming straight out you wouldn't want to over direct this all to the center because what's gonna happen is too much weight It's gonna build up just because you can't really see it in this but My partings for that are just following the round of the head so a slight diagonal back Straight out from the head, and I'm just cutting that straight line straight up towards the ceiling Now you'll be able to see the sectioning basically that I had on the other side So you can see there is a weight line, but it's not too much. It's not too extreme in there Now we're gonna take everything and over direct it just to the center Division point so basically the high point of the head. We're gonna over direct everything back to that and we're gonna cut a short to long We're gonna use the basically the hair the hair right around the occipital bone. We're gonna use that as a guideline and cut Straight up base. We're gonna be creating a triangular feel to the top of the head so cutting short to long Putting all that hair in my hands and just combing it back Just don't comb it back too far because you don't want to push too much hair to the very front of the head Grab the rest from the fringe and over direct it back to center back not center back high point of the head There we go You can see you're cutting shorts along and we're gonna do the same thing on the other side But we're gonna be standing in front of the head So that we're still cutting that short to long Your heaviest point will be right down the center of this haircut. So I'm pushing it away from my body Over the apex or high point of the head Cutting shorts along and there we go. That's Almost the end of the haircut. We're gonna do a little bit of a fringe Cut right now. So we're gonna over direct everything.  We're gonna do a flat wrap for the blow dry Real quick and I'm gonna show you all of this just kind of show you how the haircut is coming out We're using freestyle systems. They're a good partner of a free salon education calm We really appreciate their support and they're supporting free salon education as well So it's just a hanging blow dryer system. It's really really great for for doing a blow dry now We're gonna go through and smooth the top of the head working diagonal forward there There you go, that's our dry result without any dry cutting now We're gonna go through and point cut the top And what I'm gonna do is start mid shaft on the hair and work Basically parallel to the hair so that I'm not removing a ton of weight in there I just want to take little tiny hairs out of it just to free up a little bit of the weight in there Then I'll shift to the top of this section and point cut in there some more to remove some more weight So we'll start again mid shaft here Break up some of that weight in the mid shaft, then we're gonna go to the ends and break up some weight in there Point cutting is not meant to change the shape of the haircut So what's most important to remember right here is that? You know, you don't want to take out too much hair or destroy the line So you can see that heavy point right in the center That's what you want in this haircut because it gives it that kind of freedom to move around in the top There you go. You can see those layers building up through there some of those shorter hairs in there from the point cutting You're gonna help give it some texture volume in there Now we're gonna go through and just do a little slide cut right around the face frame That'll break up those pieces in there Another point cutting technique I'm just gonna work let the hair kind of fall down and point cut as it releases So hold it in my fingers and pull my hand away and then work the point cutting in there And do the same thing on the back.  So We go a little bit more and that is our haircut. We're gonna use our indie powder I really like this because it creates a ton of texture. You're about to see Just right through there And that is our Jennifer Lawrence inspired haircut big deal right now and you can see Pretty similar especially because that one is a mannequin. So we're obviously not gonna look the same or it's not good But I hope you guys like that haircut Please check out more haircuts on freesaloneducation.com and support companies that help support us freestyle systems and millennium software And thank you guys and we'll see you at the next video


Hey there! My name is Hannah Hypothesis. I'm helping out with some of the experiments in the SMOOC since I'm passionate about aerospace structures and materials and have always been curious to know how things work and why. For each experiment, we'll come up with a hypothesis together for a question we have, then design and perform an experiment to test it. So let's get started. When I was little and starting to think of my first hypotheses, I loved playing with one of these. I spent hours trying to make it walk down the stairs, wondering how it could do that. What I learned is that the toy spring could stretch a lot when I pulled it apart, and when I squeezed it, it became shorter. Then I began to see springs all over the place. Matrices, car suspensions, and even smaller objects like ballpoint pens and some types of scales all use springs. So this got me thinking, if so many objects rely on springs to function correctly, there must be a relationship that engineers can use to design them. Is there a relationship between the force exerted on a spring and how much it deforms? And what would that even look like? Well, I'm not called Hannah Hypothesis for nothing! This is my hypothesis board. All my experiments begin here because how are we going to find answers if we don't even have a question? Before we spring into action, let's review what a hypothesis is. Science is all about asking questions, and a hypothesis is a possible answer to a question we have. It doesn't necessarily have to be the correct answer, that's what the experiment is for. But a hypothesis should be testable, and the experiment we conduct should be able to prove or disprove the statement. So let's try and form our spring hypothesis. I think there is a relationship between load and deformation, therefore I will make the following hypothesis. A relationship exists between the force we exert on the spring and the deformation that occurs as a result. Now that we have our hypothesis, we'll need to design an experiment to put it to the test. The easiest way to test a hypothesis about a spring is to use, well, a spring. I could just pull it or compress it, but I'm not very good at telling how much force I'm exerting on the spring, so we wouldn't have quantifiable results. Instead, let's use weights of different sizes so we know exactly how much force is applied to the spring. At the same time, we can measure the length of the spring as it deforms under the applied weight. We can then plot that data in a graph and see if there's a relationship. Plotting data in graphs is a good way to find out if a relationship exists. Can we draw a straight line through all of our data points or a curved line? What is the direction of that line? Does it go up or does it go down? These questions can help us understand the relationship, but that's only good if we have some data, so let's get started with testing. Here we have a simple spring scale. You can place weight on the hook at the bottom of the scale, which deforms the spring inside the plastic tube. The tube has markings for force, so the weight of the object corresponds to where a disc at the top of the spring settles in after loading. This particular scale can hold up to 250 grams or 2.5 newtons. We also have some weights of different sizes for measuring. There's just one more thing we need, a ruler. You can read out the value for the weight, but since we want to determine if there's a relationship between load and deformation, we'll use the ruler to measure how much the spring elongates under an applied load. And of course, a pen and paper are always useful for writing down our results. The first thing to do is have a measurement we can compare our deformation data points to. As you can see, the scale reads zero newtons, so there's no weight on it yet. Therefore, I'll take a quick first measurement of where the top of the hook falls on the ruler. It is at 395 millimeters, which is now our baseline measurement. I'll plot our data points as we go so we can see how the data evolves with load P on the vertical axis and spring elongation x on the horizontal axis. Now let's add our first load, 0.5 newtons. The tip of the hook is now at 405 millimeters, and based on our initial measurement, the spring has elongated 10 millimeters. The next way brings us to one newton, and now the spring has deformed to 417 millimeters or a total deformation of 22 millimeters. Now let's add a few more weights. Now we're at 1.7 newtons, and our ruler is down to 430 millimeters, giving an elongation of 35 millimeters. Starting to see a bit of a pattern, we'll take one more data point. The last weight brings us up to a total of 2.3 newtons. Reading the ruler, we measure a total deformation of 47 millimeters, or 442 millimeters on the ruler. Now that we have all the data, we can start to do some analysis. We can see that the five points appear to lie on a straight line, steadily increasing upwards. This gives us a clue as to what the equation that describes the relationship might look like. So what are we able to conclude from our experiment? Well, we hypothesize that there is a relationship between load P and the spring elongation x. Based on the data we took, we can conclude that there is indeed a relationship between these values and that it is linear. There is even an equation to describe this correlation. P, the load, is equal to k times x, the spring elongation, and here k is the spring constant, a value describing the stiffness of the spring. With this, the behavior of springs can be reliably predictive. Engineers have used this principle in designing systems containing springs, such as oxygen tubes and space suits and aircraft landing gears. Maybe one day you'll use these relationships and equations to design a spring system of your own.