Here what's up guys we're here outside of a grocery store here in Los Angeles we're gonna head in and basically go through my weekly shopping list to pick out everything I need for a week's worth of food prep that I'm gonna take you back to my house show you a typical kind of meal prep for the day including breakfast a couple of main meals dinner post workout all of that good stuff from the macros proteins carbs and fats and kind of give you an insight into what I eat on a typical day so let's get in there so here we have it pretty much all the food I need including what I've got at home now we're gonna head back to my kitchen and basically with up a typical daily breakdown of all of my meals and kind of show you a little bit about how I make the food and how you can also follow this and turn some pretty ordinary food into some really tasty good food I'll show you the house so here we are in the kitchen we have all of the food out on the table that I got today and from what I already have my fridge so now I'm basically gonna show what I use and how I prepare it to kind of get my five main meals for the day plus a shake or pre-workout meal so let's get to it so there we have it pretty much a full day's worth of my food obviously I'm not gonna eat all of the turkey and all of the fish and everything you see here but what I wanted to do today was kind of show you a general scope of what I eat how I prepare it and really just how easy it is to make something like this look I get that not everyone might have the freedom of time to be able to go and shop for everything and then cook and prep like this but it comes down to this everybody needs to eat and even if you're gonna eat out at a restaurant or cook something as simple as mac and cheese it's still time this whole kind of days worth of eating took about 45 minutes from coming into the kitchen to now sat here with all of this food and it really is quite as simple as that you can see with these turkey burgers and mixed in some mushrooms some onion and some black beans as well basically just mashed all together into a ball and then use some ground up oatmeal with some herbs and spices to then just coat and lightly shallow fry on the pan using coconut oil this is a high protein low carbohydrate great sort of dish that I can add with the yams which something as simple as I just chop them up boil them for 10 minutes and there they are delicious with either a little bit of cinnamon on or just something like salt and pepper vegetables I always want to have vegetables with my main meals with the exception of breakfast and post workout plenty of fine bruce green leafy vegetables as well as salad stuff like kale lettuce spinach celery bark to it anything green and leafy get in keeping your fridge and just try and have at least a serving or two with your main meal breakfast probably my favorite meal of the day you can see why oats good source of complex carbohydrates I have some fruit on there as well with some almond butter some healthy fats with that and then the egg as well the omelette here some cottage cheese egg white still is one yolk in still want to get some of those healthy fats and just improves the taste of the omelette chopped up some onions and put some mixed greens on there really easy and simple to make it taste great and as you've seen I've already been adding some simple ingredients salt pepper cayenne pepper and something like this sort of low sodium Cajun barbecue so sources aren't really bad you saw me pick up some ketchup some mustard they're all natural they have no high fructose corn syrup those are really the no-nos that you need to be looking out for when it comes to food everything class clean simple natural I didn't really buy much organic stuff and don't get into that notion where you think what to eat healthy you only have to buy organic you don't look out for natural look out for no high fructose corn syrup or low sodium you're gonna do just fine the final part of this sort of daily puzzle post work out couple scoops of whey protein in there I might have some simple fruit banana even an apple some some nuts as well just some healthy fats but this is about five meals for me breakfast two or three combinations of this the fish as well I coated in the same way that I did the the turkey burgers I'm really getting two of these for one meal or two of those for one meal so it's easy to mix and match if I add some rice into the mix I have a lot of different combinations for my main meals breakfast post-workout really what it comes down to is I prep for all of my meal for the most part of the day and that night I'll cook my my dinner from scratch and it's during that time that it really doesn't take too much extra to cook a few extra ingredients and have your meals already cooked and ready to go that night so that the next morning you've already got your food done so really only cooking at night and if you can afford 45 minutes for an hour at night to cook your dinner as well as prep a lot of your food so that you'll eat the next day not only is it a time saver but you're gonna be eating copier with the right nutrition that is gonna fuel your fitness needs I go so there we have it to find out more about my full daily eating my approach to diet and nutrition as well as supplementation and training head over to supplement as well you can see my full athlete profile everything is on there I'm gonna pack this up we're gonna head back to the gym and move on to a bicep and tricep workout so see you guys there


Hi, how are you doing today? I'm your host, Rich, here on behalf of Rich TV Live with our very special guest, the CEO of Ritual Superfoods, David Kerbell. How are you doing today, David? I'm doing great. How about yourself? I'm doing fantastic. It's been a huge week for Ritual Foods. Congratulations on your successful IPO so far. Appreciate it. Thank you very much. My pleasure and our entire community is really excited and already winning despite the fact that you launched on Monday and today's Friday, the stock is up well over 100% already and hit a high of over 150% today. So enormous success, both for the stock, for RSF, the stock and RSFWT, the warrants, both have been hugely successful. David, can you please tell us a little bit about yourself and what compelled you to begin Ritual Superfoods Inc. Sure. I've been in the consumer package goods business for 35 years. I've dealt with brands big and small, had an opportunity to go through, this is my third IPO and the one that I'm the most excited for. So I've been in the space with consumer goods, with health and wellness products, understand what consumers are looking for, and really with Ritual Superfoods, we've got something that addresses everyone's needs. As far as what compelled me, it was really interesting because when you think about it, we put a team together first and foremost. We'll talk about that as we go here, but we put a team together with 100 plus years of consumer package goods experience. So this is something that we understand the space. We understand that right now, consumers are looking for healthy alternatives, plant-based, natural additives to their life, to their daily ritual, and that's what we're all about. I love it. Now that Ritual Superfoods Inc. has done its IPO and is trading publicly, can you tell us what the main goals are for 2021 to help generate revenues? Sure. And it's going to be really two-fold to start. The e-com business that we have just launched, and that's one of them. But also the dot-com business of some retailers that we'll talk about in a little bit here. And their sites are up three and 400% versus the same period previous year. Wow. The second part of our strategy is really going to be that brick and mortar. So we've got already out of the gates, we've got commitments, new item numbers, new vendor forms already filled out and ready to go with 2,400 stores and over 10,000 points of distribution. That's exciting. Super exciting. Ritual Superfoods Inc. recently announced that it will provide shareholders with a corporate update outlining the successful launch and implementation of the company's U.S. facing e-commerce website as well as highlight other key corporate milestones such as the ECRM Buyer's Choice Award and receiving USDA organic certification. Can you break this down for our viewers and what this means for the company? In terms of the e-com business, that's ready to rock and roll. So we're ready to be bought today. Any consumers out there, any investors that want to go on our website, we are ritual.com. They're more than welcome to place orders and we've got product already in stock ready to go. That was important to us because it's the natural learning perspective. So really educating our consumers about the great need that's out there. There are 3 million Google searches a month in asking questions of why am I so tired? Why am I not feeling well? How can I boost my cognitive function? We've got those answers. That's part of our ritual Superfoods lineup and part of the daily ritual. In terms of ECRM, it was really something. I've been doing this for 35 years in this business. The buyer's choice award is not something that you can buy, you have to earn. We got together, ECRM was a virtual conference of 31 retailers that will be attending the next one in the end of this month with 31 more retailers. They voted our product to Rishi Relax as the buyer's choice award winner for the most innovative product that was at that show. We really feel good. It was the Rishi Relax that won that award for us, so we're proud of that. I think that two other pieces, the USDA Organic Certification, just as a credit to our team and our ethos, it takes companies sometimes a year, sometimes candidly they never get USDA Organic Certification. We got it in six weeks. We got it because the team has got the experience, have been through. This isn't our first rodeo, as they say here in Texas, and we've got a team together that knows the questions that are going to be asked and comes up with the solution sets. The last piece I just want to mention though is one week after that ECRM buyer's choice award winner, Whole Foods, which is independent from us. We're not doing business with them today, although we aspire to. Whole Foods came out for 2021 named Functional Foods and Adaptogens, the number one food trend 2021. That's exciting. Imagine working with Whole Foods. That's a great goal to set. Can you give us a rundown on the team at Ritual Foods? You talked a little bit about how your team was able to help you get certified in six weeks, which is unheard of. Can you break down each member, each key member, and what they bring to the company? The word is experience and innovation. We've got a team of professionals. Myself, I've got 35 years' experience in the CPG business. Warren Spence, our COO, has got 28 years' experience in the CPG business. Peter Palaccio, our chief marketing officer, has actually developed 70, 70 brands that are out in the marketplace today. I think one of the shining stars is our chief innovation officer, Stacy Gillespie. You can't walk down an aisle of the supermarket or a food or drug store in North America without seeing some of the products that she's developed over the years. Stacy was the one that formulated our three main products, our Chaga, Immune Boosting, our Lines Main, and our Rishi Relax. That team together with our VP's of sales, Sarton, who actually worked with me in a previous engagement with Celsius Beverages 12 years ago, and we've maintained a relationship and developed tons of brands together, as well as Scott, who is handling our Canadian operations. So we've got a great team, folks. Robert Payman is our CFO, all experienced in the CPG business, all together bringing over 100 years' experience within our health and wellness industry, too. That's incredible. Now, during your guys' IPO, you guys were able to raise some capital. Can you talk a little bit about how much money you raised pre-IPO and what those funds are going to be used for? Yeah, so the total IPO raised was $6 million, and what we're raising those money for is really three specific. Number one, producing our product by producing the SKUs that we've got here to meet the customer and consumer demand. Number two is research and development. It's important today that we've got six SKUs that are going out into the marketplace, but we have on the table already in the innovation pipeline 24 more, giving us a total of 30 SKUs. That's the second trough that this funds that we're raising is going to be used for. And then the third is really, again, reinvesting in the marketing of our brand. We've got a great brand ritual. It's part of our daily ritual. You're going to see that as a champion of mental and physical, natural health and wellness. We understand that the only freely tradable float in the company is 20 million shares from the IPO at 30 cents. So your company has already traded half of the float. So would you agree that the structure is relatively tight now? Yes. Great point. Great, great, great thought. It is. And we love tight share structures here at RichTVLive. It's part of our trading strategy. Try to identify early stage companies that are super hyper growth, growing in revenue with tight floats. That way you're not going to get a ton of selling pressure. So when the buying comes in, stocks explode. So we love the share structure with ritual foods. And that's why so many of our members have started to jump in day one on the IPO with amazing success. Can you tell us what sets Ritual Superfoods Inc. apart from its competitors in the plant-based food sector? Sure. It's the tie-in. It's the ingredients, efficacious ingredients, natural organic. But we're taking functional mushrooms as it's been around for 2,000 years. And we're tying that in with adaptogens, that real accelerator for the item. So let's talk about the Chaga Immune. We have a natural adaptogen, the eletro root product. That's a natural herb that accelerates the experience for our consumers. So it's the blend of the two. It's the blend of the functional mushroom and those adaptogens that acts as accelerators and our different forms and formats create different functions. So we really feel that that separates us. We're organic, we're natural. We don't have any artificial sweeteners to us. So we feel this separation really to allow us to become that premium brand out there. If there was one thing you would want shareholders that are watching this video to know about Ritual Superfoods, what would it be? We're just getting started. I love that, I love that. And I totally agree with that. And there's going to be shareholders, potentially partners, other public companies that are going to see this video. What's the best way for them to get in contact with the company if they're interested in either investing or doing business with you guys? Sure. Investors at WeAreRitual.com, or if they want to give me a call, David at WeAreRitual.com to ours, and we'd love to talk. If they want to do it the old fashioned way and give a call, our investor number is<PHONE_NUMBER>. Thank you so much for your time today, CEO of Ritual Superfoods, David Kerbell. Now remember, Rich TV Live is strictly for education and entertainment purposes. Please do your due diligence. Please do your research before you invest in anything that we talk about here in Rich TV Live. Go and speak to a financial advisor. Chances are after you speak to a financial advisor, financial advisor is going to say where'd you get this peck and you're going to say Rich TV Live, and they're going to say it's a great peck. And I believe this is a great peck. It's already been a big winner for our community. Congratulations to everybody. Hopefully we can get a US and a German symbol soon because we've got a lot of members in those markets as well that are just dying to get into Ritual Foods. That's another conversation for another day. If you guys liked this video, please smash the like button, comment down below, share the video everywhere and subscribe. Thank you guys for watching. Thank you, David, for joining us and have yourself a great day. Keep up all the great work. Thanks a lot. Take care. My pleasure. Thank you. And thank you guys for watching. Have a nice day, everybody.


The Bemidji High School promised this weekend and that's why law enforcement decided now is a good time to remind the teens to practice safe driving habits on the road. April and May are known to be big months for traffic accidents and for young drivers the chance of getting in a crash is even higher. State troopers asked students to make the triple-A promise by saying they would not drive distracted. They warned that distracted driving can mean anything from driving drunk to texting, reading or even eating while driving. This time here with prom and activities starting, you know, people having cabin fever, a lot more people out on the roads and they may not be paying as much attention to their driving as they would and we just want to again get out the message that people need to slow downward or seat belts and keep the distractions to a minimum. Students who took the pledge were also given the chance to win one of 20 free t-shirts today. If you enjoyed this segment of Lakeland News, please consider making a tax-deductible contribution to Lakeland PBS.


Have you ever wondered what One Piece would be like in real life? Well, me neither, but it is happening on Netflix in a time period that I'm going to describe as eventually, so I guess we'll see how that goes. Hello and welcome to the Grand Line review your source for everything One Piece. My name is Liam and this is my oversized border collie puck. Say hello, puck. And today we are here to talk about inspiration, a very important topic for each and every person thing in existence because wouldn't it be amazing if we knew what inspired the most successful mangaka of all time. Etura Oda is often praised as some sort of God-like entity possessing a mind of infinite creativity that no filthy mortal swine could ever hope to rival. However, that impression exists because whether you realize it or not, Oda borrows and sometimes even outright steals a lot from the work of others. And if you don't believe me, then let me introduce you to this particular Hugo Boss model. Now, to the best of my knowledge, he doesn't have a name, but we're going to go ahead and call him Paulie because Oda pretty much ripped this man's visage straight out of a magazine and plonked him down on water seven. Of course, not every, how shall we say, inspiration is as one to one as this model, but even if it is, I'm not necessarily implying that stealing is a bad thing. You may have heard the following quote at some point in your lives, good artist borrower, great artist, steal. That was a favorite quote of Steve Jobs who stole it from public Picasso. Who stole it from Igor Stravinsky? Who stole it from T.S. Eliot? And let's be real, he probably stole it from someone as well because stealing stuff is the entire history of the arts. Now, with that said, there are right ways to steal and there are definitely wrong ways to steal and it generally comes down to what you do with that element and how you build on it. And as we're going to see, Oda uses theft in all of the right ways. And as an example, we're going to kick things off with a quick round of real life one piece and very simple mini game, the rules of which are as follows. I am going to present you with three real life figures and it is going to be your job to tell me which one of them Oda took and turned into a one piece character. Now, should you guess incorrectly, then your punishment will be to subscribe to the ground line review which will also result in consistent injections of one piece culture administered straight into your YouTube feed. And if you are correct, then you yourself will become a one piece character or maybe you already are. But here we have Darrell Hanna, Freddie Mercury or Bob Marley. One of these people did become a legit one piece character, so which is it? Make your choice now and we shall reveal the answer in three, two, one, and bam, it was Freddie Mercury who served as the inspiration for Peppy Lulu of the Galila Company. So if you guessed incorrectly, then you know a thing to do and please do say hi in the comments below if you are a new member of the Grand Fleet, welcome. Just to touch on the other two figures though, they were not chosen at random. They're more to serve as an example of something to watch out for which is the internet in general. It's a dangerous and misleading place, especially when it comes to allegations regarding one piece. There are a lot and I mean a lot of compilations of real life figures who inspired one piece characters allegedly, but most of them are horrendously incorrect. For example, it's a very popular trend to state that Bob Marley inspired Yasop and the Darrell Hanna's character in Kill Bill is the model for Hina because of this one particular shot. Although it gets even stupider because Hina was first introduced in 2001 which was two years before Kill Bill was even released. So you know, we do need to be a bit more discerning with these things. And I guess what I'm trying to say is don't just believe everything that a strange Australian man tells you on the internet. Now with that said, we're going to start with Mr. Super himself, Frankie. This one is more akin to the Hugo Boss example where Oda very boldly took a unique look in media and transformed him into a scantily clad cyborg. And in this case, it would be Ace Ventura, pet detective played by one Jim Carrey. The most striking feature is of course the hairstyle. Frankie's pre-timescape look mimics and extends the effect as well as the sunglasses and the Hawaiian shirt. Look, it's just all there. And this is also a great example of what I mean by stealing doesn't matter as much as what you do with the elements you take. Because Frankie, even with these very distinct and obviously lifted elements is still very much his own character. And intriguingly enough, many of Frankie's post-timescape hairstyles have also taken inspiration from Ace Ventura or other Jim Carrey characters. Many, but definitely not all. By the way, a controversial question here. What is your favorite Frankie hairstyle? Just putting all my cards on the table here. I'm going to go with gun head from Dress Rosa. That thing is so good. Before we move on from Jim Carrey, though it's also a very standard internet-y thing to do, to attribute Bon Clay's design as being lifted from Jim Carrey's character in Dumb and Dumber. Which chronologically, he's sure it does work, but it's a bit of a stretch. However, if true, it would be amazingly appropriate because in the anime, both Frankie and Bon Clay have the same voice actor being Kazukiya. So if both of them came from the same figure of inspiration, then this would just be absurdly appropriate. All right, now let's do what nobody wants to do ever and get political. Diving into the Gorose or the Five Elder Stars, the Five Elders, I don't care whatever you prefer, they all draw heavy inspiration from former world leaders. It's also very interesting because they don't have names yet. So I very much take into referring to them by their inspirational namesake. I mean, for example, this guy here, that is Samurai Gandhi. Meanwhile, this dude, Brat, is Gorbachev. In fact, he's the clearest inspiration of any of them because Oda has even chosen to replicate Mikhail Gorbachev's trademark Port Wine Stain of the Head. And the other three are not quite as straightforward, but they are commonly attributed to being as inspired by Abraham Lincoln, Itagaki Taizuke, and Karl Marx, which I can definitely see just, you know, not as clearly. And I think this is where we may get into the territory of digging for deeper meaning where there may not necessarily be any. It's hard to blame people for doing that though, because Oda does take a whole ton, including the visual concept of Mask of Soldier Killer, whose mask is ever so clearly based on those of Daft Punk. And apparently Daft Punk were actually pretty big in Japan, mostly due to their film Interstellar 5 5 5 5, which is, that's four fives actually, that is so frustrating, it should be five fives. In any case, that film was produced by Toei Animation, who you may or may not know produced a certain series called One Piece. So I guess what I'm trying to say is that if they ever wanted to, you could probably make a Toei cinematic universe where the straw hat pirates encountered Daft Punk. Oh, and also this is a thing, in case you didn't know, Killer can actually eat through the holes of his mask, although he is restricted to very thin food. So we're mainly talking like, like a lot of spaghetti. Wait a minute, what spaghetti? It's Italian. And what else is Italian? Italian names. And who has Italian names? Well, several people, but Steve Buscemi specifically comes to mind. And who is Steve Buscemi in One Piece? Sanji. This is a very fun one, because it's one of the few design inspirations that has been confirmed directly by Oda, which is that Sanji's whole aesthetic is based on the character of Mr. Pink from Reservoir Dogs. Very intriguing because prior to this, it was more popularized of a thought that Sanji was based on a more typically handsome Hollywood actor with the word Dick in his name. That's right, it was Leonardo Dick Aprior, specifically from the Romeo and Juliet era of his career. But in the SPS of volume 68, Oda revealed that it wasn't just the aesthetic similarity, but that he also tried to have Mr. Pink's mannerisms and vibes portrayed within Sanji, which I personally think is infinitely cooler than basing him off to Caprio. And it explains a lot because Mr. Pink, you know, he's cool and all, but he's also kind of a joke. And there's even an extension of inspiration here because all of Sanji's siblings are assigned a specific color, just like the Reservoir Dogs characters, although that's almost certainly a coincidence and more to do with the Super Sentai inspiration. Now, Emporia Ivankov is probably the one character in The One Piece, whose inspiration is the most clear and undeniable, being Tim Curry's Frank Inferter from the Rocky Horror Picture Show. And here Oda has once again basically just stolen a design, made it a bit taller, made it a lot wider, slapped a new name on top and said, good to go. And this is one of those situations where even if you've never seen Rocky Horror on stage or the film, you will still immediately recognize this because the Frank Inferter imagery is just that iconic in the Western media landscape. Ivankov is not the only one though because his newcomer second in Commander Nazima's design is also quite similar to the outfits used during the Time Warp scene in the Rocky Horror Picture Show, combining flamboyant, formal wear with sunglasses. In fact, many of the newcomer designs very much just exaggerated Time Warp dances. Going back to Ivankov though, I would be remiss not to mention that while his aesthetics were very Frank Inferter in construction, his characteristics were actually inspired by Norio Imamura, a self-professed real life of Kamma who used to be a member of an acting troupe with Luffy's voice actor, Miami Tanaka. And not only that, but Imamura was actually the voice of Ivankov for a while until the things and he got canceled because of the things. And we've explored a few of these so far, but Oda takes a lot of inspiration from the world of music, a lot of visual elements to be precise, and one artist who has managed to feature not only once, but twice in the world of One Piece would be Steven Tyler, the front man of Erasmith. He was used as a partial model for the hypnotist Django, but his likeness was also basically copied and pasted for Diamante during Dressrosa, along with that whole rock star Persona Flair. But I did say partial inspiration for Django because he also derives a lot of his general existence from Michael Jackson, of course, and he may not be the only one either. Because of all of the character things, Hody Jones may also be constructed with a certain degree of Jackson Flair, although this is another one of those situations where this is hard to attribute it with any kind of certainty, because they basically just both share the trademark, Jackson curly strand of hair, and that's about it. Oh, and they both like to wear hats. That's a defining characteristic. Meanwhile, another intriguing rumor is a very well-known comparison between NL and the rapper Eminem, which I only bring up because if I don't, then I'm sure you will will in the comments. But resemblance aside, there has never been any official connection to Eminem. Although Oda is a confirmed Eminem fan, and I personally think the likelihood is quite strong, especially considering the character of NL does actually rap his song on the One Piece Island song collection. It's quite something. I can't play it here for obvious copyright reasons, but if you thought that NL was awesome before, just wait until you hear them rap a God skills. And remaining in music in other classic fan comparison is the idea that Gem A.K. Mr. Five borrows a lot from Lenny Kravitz. And as for his partner Ms. Valentine, she is generally considered to have been inspired by Twiggy, a very prominent model slash singer of the allegedly glorious swinging 60s. I say allegedly because I was not there to confirm this. Of course, we also have the admirals. Each one of them is based on a very well-known Japanese actor. With Kuzan, his likeness is taken from Yusaka Matsuda, probably best known for appearing in the Detective Story TV series. In Kizara's case, it would be Kunie Tanaka, who actually had a character named Borsolino in the film Trucchiato, a film which just so happened to star Bunta Sugawara, who you probably recognize already as Sakazuki. He is an extraordinarily prolific actor whose complete list of filmography is comparable to the idea of just sitting down and reading the dictionary. And of course, we have Fujitora, who is very much modded after Shintarokatsu, and specifically his Zatoichi character. And with all of this in mind, we should very much expect Ryukugi or Green Bull to follow this trend. Although as of right now, there is only speculation as to which real I figure he may be. Now there's also a very interesting case online with Trafalgar Law with a lot of fans claiming that they've figured out his aesthetic origins, which allegedly lie in Valentino Rossi. And there is an exceptionally convincing image online showing the two side-by-side with Valentino in this bright yellow outfit very much mimicking the colors of the heart pirates in addition to just, you know, looking like law. Although one problem with this is that it's actually a Photoshopped image to add in that little chin beard because in the original picture, Valentino has no such beard. Meanwhile, other compelling evidence includes finding a picture of Valentino once sitting like Law hunched forward with his hands together, which is, uh... Is it possible that he inspired Trafalgar Law? Maybe. Is it likely? Almost certainly not. But we now come to white beard. He has a lot of popular comparisons, a predominant one being Hulk Hogan. However, we do actually know his direct inspiration and sadly we don't have an image of this individual in question. But white beard was modeled rather simply after an owner of a bar where Oda used to drink in her various meetings at. And this bar owner made such a strong impression on Oda that he decided to incorporate this man into the character of white beard, one of the more prolific existences in One Piece, which makes me really want to meet this guy because he does sound larger than life. Although sadly, the owner passed away in 2007. But it just goes to show that it's not all about taking reference from famous media. Sure, a lot of One Piece has very clear roots in almost every artistic medium imaginable. Be it film, music, photography, architecture, things, whatever, pretty pictures, pretty people, ugly people, whatever. But what Oda does can very much be summed up as him borrowing directly from life. He takes what this world has to offer and just morphs it into the thing that is One Piece, which is important to understand because it isn't just pure imagination. In fact, I would say that Oda has a lot less imagination than he does just plain attention to detail to the world around him. It means that he doesn't have to spend time and effort creating new cultures, new designs, new personalities, and all that stuff entirely from scratch. At his disposal is an entire rich and detailed world that already exists. So you know what? Why not make use of it? And if you'd like to make use of yourself, then next up we have a very challenging video going through the self-professed, most difficult One Piece quiz in existence. Are you up to the task? Well, even if you're not, do it anyway. Peer pressure. I look forward to seeing you there.


In the previous week, we learned about the function behavior structure framework and used the FPS framework to create a software conceptual design. Yes, the FPS framework helped me create the conceptual design for the mode based music player. So, in a way, it helped me plan for what to code during the development phase, right? That's true. Another benefit of creating such a representation is that it helps in communicating the design with a larger team. Representations that we saw in the system think and link like the FPS graph and UML diagram represent the design communicated in different ways and methods. Yes, and this process of representing the solution design is referred to as software modeling. Modeling? What does that mean? Can you please elaborate in more detail? So, modeling is a way of creating an external explicit representation of the system to be built. For example, the FPS graph is an external representation which describes the functions, structures and behaviors of the system to be built. In a way, it provides an overview of the entire software solution. There are other models like the unified modeling language diagrams or UML diagrams and these can help us represent the software design via multiple views and at a greater level of detail. We will learn more about modeling using these UML diagrams in the next video. The FPS representation is a form of software modeling. UML is another form of software modeling. Why are both required? Yes, this is an important question. Let's reflect about this for a moment. So, here is a reflection spot for you. We looked at software modeling techniques like the FPS representation and UML modeling. What purpose do each of these representations serve? You can pause your video and write your answers before proceeding. So, both these modeling techniques, they serve different purposes. Based on the requirements, we can create an FPS representation as a way to create an idea or a concept of the system which we want to build. Once we have this representation, we can go into more details and create UML diagrams for the software system. Okay, so these models are at different levels of detail? Yes, that's true. So, on the left, you can see an FPS graph of the mood-based music player. A part of the functionality which is the mood detection is detailed out in the sequence diagram shown on the right. So, last week, we have already explored a form of modeling using the FPS design framework. Then we understood the advantages of modeling. We were also introduced to this idea that modeling can be done through different representations. So, what's next? Yes, so another representation which is used is UML diagrams. We will explore modeling using UML diagrams in the next video.


So just before we start, there is an announcement that Brenda Wallace is ill, so there will be a schedule change. This talk of this room after lunch will now be Hear No Evil, See No Evil, Patch No Evil by Graham Dumpleton. So without further ado, I'd like to introduce Clinton who is joining us all the way from Brisbane and works for Bloomberg. And we'll be talking to us about getting more testing with fewer tests. Good morning everyone. I love the setup with the little peanut gallery over here with all the special people. Those two in particular. So like Lee, I am from Brisbane. My talk will be substantially different. There are no feral cats in my talk and there's no colour as well. This might be some of my personality coming through. So is that audio a little bit high? I'm not good at talking at a module time, I'm afraid. So if anyone's got any questions, please raise your hands and I'll answer. Over here I'll probably won't see it, so I'll just ignore that. So if you're starting to lose me at any point in time during the talk, raise your hand and I'll try and get everyone on the same track and I'll just repeat the questions so we don't have to run around with microphones. Yes, so testing is a good thing. We should be doing more of it. It sucks, it's hard to do at certain points and times and you sort of get yourself into the wrong mental mode for doing testing. And that's sort of the thing that I want to concentrate on at a little bit more of a meta level. So essentially this talk is about unit testing. That's where this particular framework and this particular style of testing is most relevant but it can work for the other stages, integration system level testing. But we're definitely going to be focusing on unit testing. It's really hard to remember to go over here and give eye contact with you guys. So if you're definitely on the shy introverted, go sit there.  As engineers, pretend engineers is what I introduce myself as. I have worked on hardware stuff but when I'm a software person I'm a pretend engineer. Whenever you're doing something over and over and over again, it's the sort of thing that you should be automating because that's what we do with the rest of the time. When you're writing test cases, there are two sorts of test cases that you're writing. Your generic cases, so all of the inputs that you kind of expect your functions to get and then you get your corner cases or as I call them your user cases because users put in all sorts of interesting values that you do not expect. So as a really simple sort of motivational example, a simple little function to give you back the average of a list of integers. I'm trying to write all of these code snippets in a way that eases reading, not necessarily that it is like pep 8 friendly, so little things like that. We're pretty close to the C so if there's any pep 8 violations, go take a swim. So it's like this is actually really hard writing code for slides and trying to minimise the number of lines of code and making it so they're easy to read and doing no pigmentisation stuff. So really simple function, takes a list of integers, gives you back an average. Now just as a show of hands, can anyone see any problems with this function?  We check for the particular output. Because it's floating points, we've got to worry about floating point stuff. This is not a floating point talk, I don't want to hear any comments about absolute position versus relative position, I'm never going to give that talk, it's someone should give that talk, I'm not going to do it. But you're dealing with numbers, so you're dealing with floating points, so at some point in time you have to think about these things. Property based testing is a little bit different. And property based testing is a language, agnostic term for this style of testing. Hypothesis is the Python implementation of property based testing, but a lot of this stuff, a lot of these ideas you can use with different languages, but hypothesis in my experience is the nicest library for doing property based testing across all of the different languages that I've seen. So essentially you write one test case, hypothesis will generate a random or semi random inputs for you, you tell hypothesis what properties match between the inputs and outputs, and hypothesis will verify those properties match. So the workflow is that you write your code, you write your properties which describe your code, hypothesis generates the data, it runs the test case and then it checks the properties. And something that's really important here is as with handwritten unit tests, you need to check your code coverage after you've written a whole bunch of test cases because that's the obvious way of figuring out which parts of your code you haven't tested before, and hypothesis does not stop you from having to do code coverage at all. But I thought I should throw that in as a particular thing to watch out for. And I think the other point is that using something like hypothesis doesn't actually make testing easier, in a certain regard it makes testing harder. When you get into a state, a mental state of writing test cases, you often sort of get into a rut where it's like, well, I'm writing test cases again, I haven't been here before, and it's like, oh, well, this function takes a list, so I've got to write a test case that makes it so that this function gets passed an empty list, and then I've got to write a test case where it takes one, and then I've got to write another test case where it takes 15. And you've gone down these routes so many times before that in essence, your brain switches into neutral, and you stop thinking. Any time where your brain stops thinking, you don't need your brain, and you can automate it. So here is a very basic properties-based test for my wonderful average function. So on line one, we import the given decorator. The given decorator, or the function given, is the main API that you'll be using to hook into a hypothesis. The other APIs that you'll be using a lot are the different strategies. Essentially, for every Python data type, there is a strategy that will help generate random, semi-random values for that data type. So for integers, for example, there's a strategy that will produce interesting integers that you always want to test in your unit tests.  And there's a list strategy which will produce an empty list, a list with one. There's just a few things, a list with a lot of things. We're importing our code to test. On line six is essentially where we're doing the hypothesis call. So we're saying here is our test case called test average. And we're using two strategies in tandem here. So we're using the list strategy to generate a list of integer strategies. So we are calling our function. And then the property that we've given it is that we're fairly weak property. But we're basically saying that the average of the list has to be less than the maximum and greater than the minimum. So everyone who put the hand up before showing one of the problems with the code should realize what's about to happen when we run this test. And the nice thing with hypothesis is that it hooks into all of the Python test frameworks.  So in the vast majority of cases, after you've written your hypothesis test, you've run your test suite as normal. So you run it, there's a lot of output. And right at the bottom, what hypothesis is done here is it's found a falsifying example that breaks our property. And the particular input is where the list events is an empty list. That's one of the strategies that the list strategy comes up with. It passes along an empty list and we discover that there's a problem there. So hypothesis there has discovered the divide by zero problem with my code. I haven't had to think about the issue of passing along that empty list. I haven't had to hand generate a test case to discover that. In most cases, because the way that you would handle the empty list is by raising a value exception, you'd probably end up writing a unit test, like a single unit test with a regular input and output to catch that special case. But in this particular example, hypothesis has discovered that special case for us. So we still want to be able to use hypothesis and we just want to tell it there's a special case here that you can't use hypothesis for it. So this is exactly the same test code as before, except on line six, we are passing along the minimum size one attribute to the list strategy, saying you can generate lists of any sort except they all have to be of at least size one. So how many people picked up two problems? Yeah, there's always one. So I said this wasn't a floating point talk and I kind of lied. Because when you're using floating point, you're using floating point, so you get all of the floating point fun. And the problem here is that in my property, there's a little bit of coercion going on between the types. And if you have a look at the very last number in that assert line, you'll see that when Python has done that automatic conversion between the integer minimum and the average, we've added and minus the digit there. The reason that that number has been put in the... So you see right at the bottom there, the list of ints is just that one big number. The reason that hypothesis has given that number is because it knows that that's one of the funky numbers, that when you do that automatic conversion between ints and floats, it goes a little bit haywire. Hypothesis is the codified knowledge of all of the little corner cases with the language and with floating points in particular. And it's a whole bunch of ways of generating test cases that will trigger on all of these little corner cases. So the way to get around that is to fix my property. And you'll see the only difference here is on the very last line where I do the float conversions myself. That stops Python doing automatic conversions, which means that the 2s and the 3s end up in the right order. So I run that test again and we get no failures. Now, the interesting point here is that I'm not actually testing the average result as strongly as I could. I'm using a fairly weak property, just saying that the average is between the minimum and the maximum. And there's obviously much stronger properties that I could be testing. But using that particular property shows that you can test things other than the results. And it also shows that you really do actually have to think about the properties that you're testing.  Property-based testing is not easier. All it does is it means that the artifacts that you check in to your code base for your tests are smaller. It doesn't mean that you have to disengage the brain. It doesn't mean that you disengage the brain.  It just means that instead of having thousands and thousands of handwritten test cases, you've only got a few. So when you're running the test cases, there are a couple of verbose options that you can pass along and ask hypothesis, please print out all of the test cases as you're running them. And when you're first using hypothesis, this is great because it really just shows you under the hood all the test cases that it's generating. And after about five minutes, you realize there's a complete waste of your screen time and you stop doing it. But this is an introductory talk, so it's obviously very useful. So we see here that the list strategy, it's generating because we've asked it to generate lists that have at least one. It's generating lists with zeros and big numbers and negative numbers and stupidly big numbers and stupidly small numbers. And depending on your data set, all of those features can be tweaked. So you can always easily say, generate me a list. It's got to have five items in it and they all have to be positive. All of that sort of stuff is very easily covered. So some example properties that you might want to think about, if you write a function that sorts something because we're all into writing functions that sort stuff, you can assert that the output is actually sorted. So writing the sort is kind of hard, but writing a property that says the output list is sorted is relatively easy. And reversing of a string, you can assert that the string is reversed. And one of the interesting things with those sort of functions is that you can actually call that string reversing function twice and you get back to the same input. And what you can use with those functions particularly that mirror themselves or they have a pair of functions that work in tandem is that you can basically describe your test case without having any reference to your inputs or outputs. And you can just let hypothesis generate random inputs and outputs and really test your functions. So who likes fax machines? Yep. So you've got white paper. You've got black bits and pieces on it.  So a really simple way of compressing that over the phone line is called run length encoding.  And this type of compression works really well for things of this sort of nature. We've got a quiet background and then the occasional data point, fax machines used it. It's still actually in use in JPEG. Interestingly enough, where you see in the background images, you'll often see big square blobs. That's actually where run length encoding comes in. So I don't want to get too caught up in the code here, but this is a fairly simple compression function. So we just run over the string. If we see a W, we can it up. If we see a black, we can it up and spit it out at the end. It's really just a loop over the input. And the decompress is pretty similar. We run over that string. If we see a number, we grab the last string and multiply it. And yeah, there's a couple of reverses and things like that, but it's not too complicated. The really nice thing with a pair of functions that compresses and then decompresses, zips, unzips, encodes, decodes, is we've got an API that is reversible. So you can pass the input to one function, then grab the output of that, pipe it into the other function, and you should come back with the same input. So it's really easy on line 10 and 11 to write properties about a compression function. So the properties here is that the compressed form should be smaller than the uncompressed form, which is a really nice property to have. It's not always true for things like B-zip and stuff, because you've got blocking and stuff.  And the really nice one is on line 11 here, where we take the input, we compress it, we decompress it, we should have exactly the same output. And nowhere in that test have we even bothered looking at the input. So we're using a text on line 6. We're using a text strategy. And one of the things that we can tell a text strategy is here is the alphabet of letters that you can use. And I basically restricted it to saying you can generate text blobs that only contain w's and b's. So it matches our scanning our fax machine example. It's going to be great in 10 years time where it's like, who likes fax machines? And we're like, nobody will know, except if you're working for government. So we've got our two functions. We've got a property. We're not looking at the input or the output. So our hypothesis can go nuts generating the inputs for us. We run it and we don't have any problems because my coding is awesome. The problem, however, is that we're passing these randomly generated inputs to one of the functions. We're not pass to the compression function. We're not passing that randomly generated input to a decompress function. So that is an issue right there. From a security point of view, we're not actually throwing, we're not doing any sort of fuzzy testing on our decompress function. So it is something to think about. And like before, I just wanted to show some examples of the output. So we've got a w and a b and an empty string. And then we've got all sorts of random combinations of w's and b's that hypothesis has generated for us. Every time you run it, you get different outputs because it's randomly generating them every time. So unit-based tests are really where hypothesis spends most of its time. There's a different sort of test that you can write with hypothesis. So hypothesis is really at home where you're testing one function or you're testing a pair of functions that work in tandem with each other. If you've got a suite of functions like an abstract data type that are all working around a bit of state. So you've got a collection and you're adding and removing and then you're walking over that data type. Hypothesis has really good support for state-based testing. And instead of getting a hypothesis to generate random input and passing that to your functions, what you're actually getting hypothesis to do is to try to generate a random program that follows the lifecycle rules of your API. So in order to use your API, you've got to create your collection. You've got to add something and then you've got to delete it. Fairly sort of standard lifetime there. So the hypothesis implementation of state-based testing, it's very good. It's still quite new and there are a couple of points of flux and there are a couple of points in the API that kind of are a little bit underpowered that I'm trying to figure out how I can fix, but I'm going to alight through some of those. So the simple data type that I'm going to look at here is a simple binary tree. So every node that's in the tree, everything on the left of that has to be less and everything on the right has to be greater than it. So not terribly complicated. So the square nodes at the bottom, those are our empty trees. So if we iterate over them, it's the same as iterating from an empty list. If we insert into them, we return a new tree which actually has a value and if we delete these empty trees, something's gone wrong because there's no value and you can't delete an empty tree. So a node that has a number, we're calling that an actual tree. So fairly simple. We have a value and we've got two empty nodes beside it and if we're iterating over it, we yield everything smaller than NSLs, SLS and everything larger than NSLs. Insert starts to get a little bit interesting because we have to figure out if we're inserting to the left or to the right, but it's a nice recursive thing and then delete gets a little bit more complicated because we have to work out if we're dealing with a real tree, a not real tree, a bigger than tree, a less than tree and our simple data structure all of a sudden has quite a fair chunk of code to it. So I would like to show how you can test something like this with hypothesis. So obviously the code for this is a little bit larger than the unit test examples, but it's not too much larger. So we are importing, on line four we're importing our test strategies same as before. We are importing stateful testing stuff from hypothesis. So we have a state, a rule based state machine. So these will codify the rules saying before we can do anything with that data structure we have to create it, before we delete something from a data structure we have to add it. Those are the sort of rules that rule state based machine is going to remember. The bundle is the actual state that we're going to pass from test to test. So it's actually going to be the data structure that has values in it. And the rule is the given API call for the state based machines. It's going to be the main hook that we're going to be using. And the empty tree is our starting point for our API. So all of our trees start with an empty tree and then you insert values into them. So our test here we've subclassed it from the rule based state machine. The state we've going to store in a variable called trees and we are using the bundle for that. And then we have rules and rules are functions that are run on one of the states of the test machine. So one of the rules is a leaf. So we take the sets that we've got and we are adding a new state to our target. So we're taking whatever states that we currently have and we're adding a new empty tree to it. So that's our leaf rule. So we can run that leaf rule at any point in time because we're generating a new data structure. We have a node rule where we are taking the input which is our tree, we're taking the output which is our target and we're also using a integer strategy. So we're taking one of the nodes that we've made in the leaf and we are inserting a number into it. So we're modifying the state again. We're taking one of the empty nodes, adding one of the nodes and putting a number to it, putting that back into a state. One of the rules here, the check sorted, you'll see that it doesn't have a target on it so it's not modifying the state, it's just looking at the state. So all we're doing here is that we're iterating over the tree and making sure that at whatever state that this tree is in, it's sorted. So with those three rules and particularly the node rule, hypothesis is going to generate a forest of random binary trees.  So all of the nodes are gonna get in one way. You're gonna have other times where all of the numbers are gonna be decreasing. So they're all going to go down one way.  So all of those complicated switches in our inserts and our deletes, they're going to get tested at some point in time if you give hypothesis enough time to generate enough different states. So this is our rule to delete. Part of the same test. Things get a little bit interesting here because in order to delete something, we have to assume that the random number that we've generated is actually in the tree. And this is actually one of the weak points of the hypothesis set up at the moment. There are nicer decorators for doing this, but you can't actually have a, you can't peek into the state using the decorator and that's something that I'm looking at doing. So at this point in time, you sort of halfway through the test, you're running your assumption and then if the assumption bails out, you just pretend that this test didn't happen. And that's a little bit ugly because it means that instead of generating a whole bunch of test cases that definitely work, you're generating a whole bunch of test cases and only half of them actually work because a lot of the times it'll be generating random numbers that are not in your tree. So with those three rules and this fourth rule here to delete, we are generating any number of random trees and inserting and deleting numbers from them. And if you think back to how convoluted our delete case was, if you give hypothesis enough time, it's guaranteed to generate trees that will test all of those different branching examples. And we didn't once manually generate a particular input. So the way that hypothesis works is that every time it's calling one of these rule-based functions, it's actually running delete multiple times. So the strategy to generate a number, it'll call that 50 times or 100 times. And there are different modes that you can set hypothesis up into. On your developers laptop, for example, if you're just running all of your test cases locally, you'll have a fairly short time period on it. So it'll be like generate 50 test examples and it will run those 50 test examples and then say, yep, they all passed. If you're running this on your continuous integration server and it's running overnight or something like that, you might say, hypothesis, go generate test cases for 10 minutes and that's totally fine because it's not interrupting developer time. And in that case, it's gonna generate 100,000 test cases. So hypothesis is not guaranteed to generate the same results over and over again. If you run it, you might come across, if you run it 100 times, it might say everything is fine and it's passed and it could be on that 100 and first time that it generates the test result that actually fails your example. Now, what hypothesis we'll do in that case is that if it finds a failing test example, it will write that out to disk and the next time that you run the code, it'll keep running that failed example until your code passes with it. So it's the nature of this sort of system where it is generating test cases that in order to over time find all of the issues, it won't generate the same test cases all the same time. One of the really so essentially random that you can, particularly with a lot of the functions that don't touch any of the test, touch any of the state because it didn't have the target equals trees so it doesn't change the state. Hypothesis will look at those and assume that it's a checker function and it will run in general, it'll run all of those checker type things across the state at all times. But that's more of a heuristic rather than a rule. So one of the really interesting examples for the state-based stuff is Mercurial. You can think of a version control system as just a lump of state with an API on it and that's how Mercurial works. It's all written in Python. The command line tool is really just calling a whole bunch of Python APIs underneath it. So there are certain rules about using a Mercurial repository.  Before you can add something, you have to recreate your repository. So there's a whole bunch of state and rules associated with it. Mercurial use hypothesis is part of their testing framework and it's uncovered two particular bugs. In this case, the bug that it uncovered is if you make a HD repository, make a branch, commit, and then do a shelf, if the branch name had a slash in it, internally, shelf treats that branch name as a file name where it's gonna scroll away things and it had a bug where it treated the branch name as a file name. And all of a sudden, when you put a slash in there, it means that it can't find the directory that it hasn't made because it shouldn't be treating the branch name as a file name. And hypothesis discovered this because over enough runs, the text strategy for generating the branch name happened to put in a slash. And there's another interesting bug that hypothesis has found, but this is one of the test suites that hypothesis use. Sorry, it's one of the test suites that Mercurial uses on this CI system. So basically, every time they're ready to do a release, they just say hypothesis, go generate a whole bunch of test cases and see if you can find any brokenness. But I think Mercurial is a really interesting example of what a state system can be because it's got stuff on disk, it's got stuff in databases, there's a whole lot of state behind it. But when you have a look at it from an API level, it's actually fairly simple API. Oh, I really should have been upfront about this. Hypothesis is not my creation. I'm probably its biggest fan. I don't think enough people know about property-based testing. It is the majority of the work is by David McIver. He's had an interesting couple of years. He was working on the hypothesis in his spare time, discovered that a few commercial organizations were using it and he was sort of, you know, eating out of the bottom of tin packets and stuff. He got a little bit grumpy about things and sort of put it on the shelf and said no more of this open source stuff. He's discovered that he can make some money out of this by running training courses and doing ports to different languages of hypothesis. So he's doing a port of hypothesis to Java at the moment. Because it turns out if you can help people stop writing Java and mountains and mountains of Java unit test cases, they really like that. And that's all sort of David's personal story and I recommend you go and have a look at his personal blog to see how he dealt with basically like a year and a half of burnout at work and on open source stuff. But he's continuing to work on this project now. So I have touched on the CI question where there's a whole bunch of settings with hypothesis, how long it takes to generate the tests, how many tests it's gonna run, if it can store those tests and how to pass those tests along. There are a lot of integrations with other frameworks. So there's integrations with Django, for example, where you can basically say, run this test case. But before you run this test case, set up the database so that I actually have some customers in the customer table and I've got some sales in the sales table and actually link them in. So if you've got any sort of database integrity schemers where you're actually saying that these tables have to reference, the sales table actually has to reference the customer table and things like that, the integration, the Django integration will do that for you. And there's also an integration with NumPy that basically says, I need a matrix that, I'm not a mass person here, but I need a matrix that needs to have this particular determinant and it needs to have an overall average value of 4.7. And the NumPy integration can go and make that array for you. So it's making not just one number, but a whole array of numbers with a particular shape and with particular properties. And that's everything. So questions or, oh, well, I timed that well. Do you have any suggestions for, I guess strategies for coming up with the properties to test for non-trivial functions? So you might have some sort of mathematical function and basically the only way to tell if you've got the answer writers to do what you just did in the function sort of thing. Yeah, so I'm not suggesting that hypothesis is the appropriate tool for all testing. And there are certainly going to be test cases where you, for example, you've had a user bug, you've had to work out exactly what set of test cases, exactly what set of inputs triggers the problem. In that case, you're going to want an explicit test case with these values so that you're always testing that particular user bug. There's a whole range of problems where hypothesis is not suited at, but I think there's a whole range of problems where it is suited at.  We'll just leave questions here for now. We're out of time. So, Clinton. Thank you very much.


My name is Wim von Pittgen. I come from the University of Leupham. And I used to be the Vice President Research of Eden. I'm happy today to be here with Tracy Tan, who came all the way from MIT to this conference. Tracy, welcome here for this interview. Maybe you can first introduce yourself. Sure. Thank you, Wim. And a big thanks to the Eden conference for inviting me. It's a great pleasure to be here. Conference is fantastic. Thank you. So my name is Tracy Tan. I'm the director of MicroMasters at MIT, MIT Open Learning. OK, maybe you can first tell us a little bit. What is MicroMasters? What does that mean? So I can tell you more about what MIT acts MicroMasters. So MicroMasters at MIT is a series of master's level content taught online by the MIT faculty. So the credential is designed to be a standalone for career development. And also, there's a unique feature of MicroMasters is its pathway to credits. So learners with a MicroMasters credential can accelerate their graduate study at MIT or other pathway schools. That's something new in MIT? MicroMasters is certainly very new, not only to MIT, but to the world. So we actually created a concept back in the fall of 2015, and the programs are running on edX, and they trademarked the MicroMasters term. And now there are 48 MicroMasters programs in the world. OK, what kind of programs are that? In what kind of fields or topics are you offering programs? So we offered the world the very first MicroMasters in supply chain management. And then we offered the world the very second one in data economics and development policy. And this year, we launched a new MicroMasters in principles of manufacturing. And we are going to launch a new MicroMasters in statistic and data science this fall. OK, thank you. Students taking these MicroMasters in these kind of topics, what is the link for them then with the other master programs that you're offering in MIT? I suppose that a MicroMaster is like a very small one, and they can go for a full master afterwards. So how does that go? Good question. So MicroMasters itself is not a degree program. It's a credential, it's an online credential. And at MIT, it's basically half of professional master's content online. So once learners complete our MicroMasters credential online and they apply to the corresponding blended master's at MIT, their MicroMasters credential will be granted credits towards their master's study at MIT. OK, does that mean that they get waived for certain courses in the full master programs? Or how does that go? Similar, absolutely. So when we design the MicroMasters, we actually basically taking half of the content for our master's program. Oh, half of the content? About, yeah, 40% to 50% of our content. Then we put online. The form is not exactly the same because it's digital learning. We add additional exams, assessment to ensure the quality. Yeah, that's what actually what I'm interested in. What kind of extra support do you provide for the students taking these MicroMasters? Because it's online and you're used to have the on-campus master programs. What is extra for the students in these MicroMasters? Well, first, we have audit track and the verified track. Verified track means learners pay to obtain a credential. So for the audit track, learners can take the content, the assessment at their pace. And then for the verified track, we actually provide additional support, as you mentioned. So we have faculty run live webinars. We have a community teaching assistant. And we have a course teaching assistant who engage with our learners with content questions on the edX discussion forum. So they sort of get full support like you're offering the on-campus students, but it's online? Yeah, because the number of learners we have, I wouldn't say the way we offer it exactly can replicate the support we have on campus, such as students' success or career support. I don't, that's not supported for MicroMasters learners. But in terms of content study, we do our best to provide support as fast as we can. OK. Is there any, the courses that you are offering in the MicroMasters program online, is that the same sort of courses that you're also offering in your on-campus programs? Or is that different courses? Or is it just the same topic? Yeah, basically it's a half of the topics of a full master's we put online. And but we. It's not similar, but exactly the same. The content, a lot of materials in our MicroMasters also used in the residential master's program. But we created additional materials, case studies, and assessment to make it absolutely. OK. That sounds very interesting. And I was just wondering, this is now in MIT. But how does that relate to the rest of the world, let's say? Do you have similar initiatives, are you aware of similar initiatives in other universities, or you are cooperating with other universities on these MicroMasters? Well, for MicroMasters creation, so there are 48 MicroMasters topics offered by 24 global schools on the edX platform as of today. So out of the 48, MIT is offering four MicroMasters as the topics you asked me earlier. And besides MicroMasters creation, and we also work with the global universities on pathway to credits. So we have an internal pathway at MIT where runner can apply and accelerate their master's study. And then we also build an ecosystem of universities in the world to actually recognize our MicroMasters credential for credits towards various of their master's programs. OK, but that means that the, well, I have actually two questions. In MIT, the masters that the students can take after this, they are in the same subject as the MicroMasters. They are called same sort of program. Is that the same for the other universities in the global world? Or are they just integrated in their programs? I mean, if you were talking about supply chain management, this might be part of a business management program or so? Or how does that go? Yeah, surprisingly, we have built links beyond the field of MicroMasters. So for supply chain management, Purdue University is recognizing our credential towards their supply chain management master's. And we also have universities like Dome University or Curt University in Australia recognize it to their business degrees. And then we also link into other universities like Deakin and the Rick and Vic universities to their other kind of master's programs. So it's not necessarily a direct topic connection. Yeah. OK, good. Why are you doing that, working together with all these other universities? I'm interested in what is the win-win in that. I suppose MIT has an advantage in doing this. I can also imagine that the other universities are very happy to do that. But what is according to you, the win-win in this story? That's a great question. For MIT, when we design the MicroMasters, one of the unique features is passed with credits. And after several rounds of our MicroMasters, we have over 1,000 learners have completed the credential. And numbers continue to go up. But at MIT, our blended master's has a capacity limit. Every year, we can only accept 40 students in supply chain, 20 students in the economic department, and 15 from the manufacturing. So it's only a minority. Very, very small number. So then we have thousands of learners have completed, where can they go? We surveyed them, and many said that they want to get their first or second master's degree. So that's the motivation behind MIT to create these global pathways. OK, so do you mean that you also want to make sort of global network of MIT alumni, although they haven't been on the campus at MIT? When you say alumni, what do you mean? Well, graduates from MIT. Or do you not consider them as graduates? It's a certificate. It's not a bachelor or master program. Currently, the credential holders from MicroMasters at MIT are not alumni of MIT. They can consider alumni for the MicroMasters, but they are not officially MIT alumni. But it's still something valuable on their CV, I guess. Absolutely. Absolutely. We already have feedback on that. Absolutely. We already do service all the time. We have seen learners got job promotion, or raise, or successful career transition after receiving the MicroMasters credential. And some learners even find that one or two courses are super helpful for them for career improvement. Was that one of the reasons that you started with this, that there is maybe a demand from the labor market for this kind of certificate? Absolutely. Absolutely. Because as you know, MOOCs is such a popular offering after the open education, open courseware. And as the online learning space getting crowded with offerings, it's hard for learners in industry to differentiate offerings and find a match. So and also at that time, a couple of years ago, there is this high unmet demand of MIT, for MIT graduate level content to be online offered for professionals. So that's why we did the MicroMasters.  Very good question. At least for MIT, when we design our MicroMasters topics, we look at many factors. And the industry perspective and job prospects are very important for us to consider topics. Good. We are about to end this interview, but I still have two questions for you. And when is the more philosophical one? How do you think that this evolution of MicroMasters, it's not just in MIT, like you said, it's happening in other universities as well. And so how will that change, let's say, higher education in the global world? Do you have any idea? Will we have more and more of this happening? Or how do you see the future of this? Yeah, this is a very big question. I mean, the role of higher education has changed because of open education. We're not a traditional place for people just to get undergrad or graduate degrees. We're a place for learners for lifelong learning. Or the term I learned from Eden, life-wide and also life-deep learning. And the MicroMasters, it's additional innovation from open education because it added quality assessment to show the rigor. And also because the offering school is granting credits for the credential, actually guarantees the value and the credibility of the value. Which is the biggest you're in open education. So that is important to the learners and also to the industry. OK, and a very final question then. You're here at the Eden conference. And do you have any particular message for the Eden community related to your MicroMasters story in MIT? I think the Eden community is doing fantastic work in exploring in this new era. It's a very, higher education entering is a very, very interesting era. And it's time for us to consider change and innovation. I think we can all work together, share our best practices and look forward together to see how we can innovate to the way that can tailor the next generation and the existing generation that can offer the lifelong learning, life-wide and life-deep learning. OK, Tracy, that's a nice message to end with. Thank you very much for your wise answers. And maybe we can meet again at the next Eden conference in Bruges. Absolutely, my pleasure. Thank you, Will. Thank you.