What's going on, everyone? Sam here with late in sports cards, ripping 22, 23, Pnity, Don Russ, basketball hobby, five box break, number 13. Pick your team style, got a list of our 30 names and teams. We've got Alexandra C. with the Hornets, Alexandra's S, Nick's and Jazz, Anthony C. Warriors, Benjamin M. Nets, Sixers, Bob H. with the Magic, Chris C. Sons, Dan H. Clippers, Elton L. with the Timberwolves, Ethan N. Bowles, Goo H. with the Thunder, Harold V. Grizzlies and Hawks, Hill and T. Pistons, Jim J. Heat Raptors, Jose V. Nuggets, Joshua B. Lakers, John M. with the Mavs, Justin C. Pelicans, Matt C. Celtics, Michael T. Cavs, Pengsian C. with the Spurs, Robert P. Blazers, Sean M. Kings, Sean M. A. with the Kings, Sean M. C. with the Wizards, Vaughn with the Pacers, Yong S. with the Rockets, and Yusho L. with the Bucks. So good luck, guys. Let's do it. I'll see you really cool next day. Come out of here. Yeah. Let's do it. Oh, you haven't heard my, my stick for Benedict Matherin, right? No, I want to out. Oh, man. Don't rush it. I'll wait till the time comes. It's only going to take five packs till we get a rookie. Yeah, this one's uh, so all cards do ship in this. We'll just kind of go through the base. That is Armani Brooks, Press Proof. Got Zach Levine, Gold Press Proof, Marvel's, Craftsman Yokic, Luca Malone, Jaylen Green, Brookies, Johnny Davis, Caleb Houston, there's a Keegan Murray for the Kings, Nicola Jovic, and Jabari Walker. Press Proof, T.J. McConnell, Marvin Bagley to 149, Hollow Laser, Kronstein Tatum, Yannis, Travers, Christian Braun, Tyrese Martin, A.J. Griffin, and E.J. Liddell. Still a trapped A.J. Griffin, that is. Press Proof, J. Crowder for the Suns, Kevin Garnett Press Proof, Lamello Unleashed, Luka Dirk, Trey Young, Christie, Shaden Sharp, Peyton Watson, there's a Chet Holmgren as well on the back. Under actually aren't bad and they don't even have Chet in a while. Shaden Sharp Press Proof, Rookie, very nice for the Blazers. A. J. Lynn Green on the Craftsman, Foyle, got a LeBron Unleashed. Okay, there's a Palo, the Magic, Marchand Bochamp, Vince L'Arabia, J. Lynn Williams, Rookie for the Thunder, Press Proof, T.J. Got Caleb Martin for the Heat, Blue Hollow Foil, Hollow Laser I should say, 3 of 49, nice one there for the Heat. Lamello, Crunchtime, Craftsman, Walker Kessler, Rookie, Ryan Rollins, Harry Eason, Trevor Keels, and another J. Lynn Williams, there's two J. Lynn Williams on the J. Dubs and J. Will, that's what it is, J. Dub and J. Will as the kids, the hip people are calling them. Lamello, Press Proof, Gold Craftsman, Press Proof as Kyrie, LeBron, Crunchtime, O'Shaig Bhaji, he's actually kind of a stud. J. Nivey Rookie, nice, Patrick Baldwin, Kenneth Lofton, and David Roddy. What do we got next? Let's see. Press Proof is Joe Harris, IO Desunmue on the Basketball to 75, this is a cool parallel, I like the Basketball parallel. Steph Craftsman, Blake Wesley, Kendall Brown, Malachi Brannum, McGowan's, Mark Williams, Rookie's there, Max Christie Press Proof, nice one there, Rookie for the Lakers, there's an Evan Mobley second year to 199 for the Cavaliers, Unleashed, Steph Curry, Piction Line, Marvels, Jaden Hardy, Daniels, Andrew Nemhard Rookie for the Pacers, Barry Smith Rookie, and Wendell Moore. Press Proof is Devin the Cell, we've got Kevin Porter Jr. to 199 for the Rockets, Crunchtime, Yannis, Sochan, Christian Coloco, there's Aang's Benedict, Cumberbatch, Mathurin, Steph, what you did? Oh my lord, that might be... What's up? That might be the biggest reach of it. Oh my god, it's a total reach. That'd be, that'd be called a foul in the NBA, that's how much of a reach it is. There's Jeremy Sochan, nice, on the auto going to the Spurs, congrats on that, Baylor Legend. Nice Sochan, congrats San Antonio, we've got Andre Drummond, the Drumgod going to the Bulls, Trey Young, Foil Unleashed, Tatum Unleashed as well, Garlin, Minot, Terry, Mobley, Jalen Durin, and Kennedy Chandler. See how Spotskies are looking, Sixer's gone, thank you Victor, Lursak, thank you for taking the Trailblazers and 21, William taking an H2 as well, appreciate all of you, Lursak also taking the Pacers and Trailblazers and a different one. All right, let me see what we got left on the next one, I believe we're at two to go, I want to say two or three to go. Two to go, what do we got? The Raptors and Wizards, both on sale. Both on sale, Raptors and Wizards. Yeah, I want to see, I want to see night moves on animators, that'd be cool. The case hits are really good in Donrose this year. The animators is really cool and the night moves always looks really good. That's just the Raptors and Wizards to go, that is it, that is all, thank you again. Let's prove Josh Hart, there's Caleb Martin again to another blue to 49, there's two, pulled two Caleb Martin blue hololazards, we pulled two 49ths of the print run, it's not bad. A-D, Osemein Zheng, it's Watson, there's another Chet Holmgren rookie for the Thunder. We were running instead on Wednesday, we would pull like three of the same. Three of the same, yeah I ran into D'Angelo Russell, we pulled like every parallel of D'Angelo Russell. Same with us. Really? Yeah, the 199, we pulled like three of them. There's nice Chet Holmgren press proof, nice one there, Thunder, congrats on that. Andrew Nemhard is to 199, nice one there, Vaughn, there he is, Marjahn Bochamp, Larevia, there's a Jalen Williams as well. Got to see Paolo play live yesterday, kind of insane. Yeah, he's pretty good. Yeah, he's not bad. Press proof, Ant-Man, 30 or Ant-Man, how does that sound? That's wild. Tyrese Halligod, Halliburton to 99, nice one there again, Vaughn with the Pacers, Oshay Agbaji, Jayne Ivey Rookie, Patrick Baldwin Rookie, Lofton and David Roddy. Nicola Jovic, nice one there, that is Rated Rookie Auto for the Heat, congrats, Miami. Nice one there, there's Dallin Terry, Howell Lazer to 149, Josh Monat remind me to tell you something funny that just literally just happened. I just, it's Taylor Durin and Kennedy Chandler. I think you'll find that I'm using them. Press proof, Isaac Acoro, there's a Jason Kidd on the foil throwback. Craftsman Shrey, Lake Wesley, Brannum McGowan's, Mark Williams. Guys, just two to go on the next one. Just the Raptors and Wizards, both are on sale. We'd like to grab up a team that is on sale, now would be the time to do so. Scotty Barnes, Harrison Barnes, the other Barnes, 299 for the Kings, Davis, Caleb Houston, there's a Keegan Murray for the Kings, Leovic and Jabari Walker. Press proof, Doug McDermott, Dougie McBucket. You know what's wild dude, I saw a stat, it was Giannis, he shot 49% from three in college one year. I was like, what? There's Musa Diabite, Sochan, Coloco, Eggs Benedict, Cumberbatch, Mathurin, and Ty Ty Washington. There's a 50% chance you'd make the three every time you shot, which is stupid. Jason Tate, press proof, got another Evan Mobley this time to 199 again for the Cavs, Steph Curry, Walker Kessler Rookie, nice. Ryan Rollins, Kiehl's, Jalen Williams, press proof, Cole Anthony, Marvin Bagley to 149. No big rookies in that one. Griffin and Liddell, probably the two biggest. There's Peyton Watson, nice one there for Denver on the press proof rookie. Got a Jamerant Unleashed gold press proof. Jamerant, regular unleashed. There's a Jaden Hardy, Daniels, Andrew Nemhardt Rookie, Bari Smith, and Wendell Moore. We start to learn the runs on these two. I think Paolo always follows Ty Ty Washington, so you always know if there's a Ty Ty Washington. There's going to be a Ben Cario, yeah. Rappler's gone at 14. Thank you, Garrett. We're just down to the Washington Wizards. That is it. The Washington Wizards. I believe $34, I want to say, so I think every single group break spot is now $34 today. That is it. If you've got $34 in your pocket, you can get a group break spot today. This morning. At Leighton Sports Cards. There's Gordon Hayward, press proof. Hey, Trey Young on the Craftsman, foil. Runchtime Ant-Man, Travers, Braun, Martin, Griffin, and Liddell. Is that run? We've got Dallin Terry, nice one there. Rated rookie autograph for the Chicago Bulls. Congrats, Chicago. Donovan Mitchell, press proof. Karris Levert for the Kings. Not for the Kings, for the Cavaliers to 149. Nice one there, Cavs. Not for the Kings, the Cavs. Menop, Terry, Mobley, Jalen Durran, and Kenby Chandler. There's Ty Ty Washington, press proof. Nice one there for the Rockets. Got another Evan Mobley to 199. Let me pull three of those now. Nice one there for the Cavs. Mike stacking up on Evan Mobley, press proof. Hello, Rookie. Bo-Champ, L'Ravia, Jalen Williams, Jay Will. Got to sneeze, dude. I don't think so.  This most uncomfortable feeling in the world, dude. Kyrie Irving, press proof. And that's a Craftsman, Trey Young, press proof, gold. Uh, I don't believe so, PR. I think there's only two case hits, and it's going to be the animators and the night moves. Caleb Houston, Keegan Murray, Rookie, Yovitch, and Jabari Walker. Yeah, there's two case hits in this night moves. Downtowns are usually in one-in-one. Like the basketball downtowns are usually like the most sought-after downtowns because of that. Press proof, Gary Harris, Clyde Drexler, press proof for the Trail Blazers as well. Agbaji, Agbaji, Jay Nivey, Rookie. Patrick Baldwin, yeah, no problem, PR. Base, base, base. Thank you, Yang, just took the wizards. We're sold out on the next one. All we've got left is Phoenix H2 football just released today. If you guys would like a spot in that, there are three group breaks of four currently remaining with spots. Chris Ball, Netmarvels, Scotty Barnes, Kevin Arant on Leashed, Jeng, Christy, Sharp, Watson, and a Chet on the back as well. That's done. One is done. What we got, number two is what we've got. We've got 12 to go on number two for Phoenix H2. We've got 34.99 a spot, 12 to go, Phoenix H2 football. Kandavius Caldwell, hope. Nice, Jabari Smith Jr., basketball to 75. There you go, Houston. Very nice. Congrats on that. You can bag that one, yeah. Crunchtime, Steph, Walker Kessler Rookie, Ryan Rollins, Kiehl's, Jalen Williams, J. Dubb. I think that's who it is. Maybe not. I don't know. I don't know who's who. J. Dubb and J. Will, I know that's what they call them and I don't know which one's which. There's Pascal Siakam and I'm watching off Thunder Games. Who's who? There's another Marvin Bagley to 149 for the Pistons. Craftsman Shray, Wesley Kendall Brown, Branham McGowan, Mark Will. Down to 10 to go. Sean taking one in each. Degoberto taking one and two. Thank you. Down to just 10 spots to go now in number two. Appreciate all of you. Thank you very much. Eric Gordon, EG. There's Jalen Noel for the Timberwolves, Red Hollow Laser, 299. Jalen Noel. Another guy who takes no Ls. Vitae Sochan, Coloco, Eggs Benedict, Cumberbatch, Matherin. Thai Thai Washington. That's just going to be a tongue twister eventually. What's up? The Eggs Benedict, Cumberbatch, Matherin. There's Eggs Benedict, Cumberbatch, Matherin on the press proof. Nice one there, Vaughn. Cade Cunningham, 2199. I wish Vaughn was here because he would hate that so much. Jaden Hardy, Andrew Nemhard, Jabari Smith Rookie, and Wendell Moore. There was one shtick I did recently, I think the last time I was breaking, that I said it. It was Recapi the Zappy. That's one of my things whenever there's a Bailey Zappy, Recapi that Zappy, and Vaughn and Sean were both in the break, they're not in the break, but in chat, and Vaughn just goes why, why, why, why, why. Yup. I mean you gotta Recapi the Zappy. Be insane if you didn't. Be psycho, to be honest. There's press proof Musa Diabata, to Clyde Drexler on the foil for the Blazers. Dame Tatum Palo, Ben Kero Rookie, Sean Bochamp, the Grizzlies Rookies, and a Jalen Williams, other Jalen Williams. Davante Graham, press proof for the Pelicans. There's a Kevin Durant on leeched gold press proof for the Nets. Giannis, Ostmanjain, Max Christie, Shaden Sharp, Peyton Watson, and a Chet Holmgren. Nice. You know what's going to be cool? They're going to have the prism update that comes out in Chronicles. It's got to be fired this year. You've got to assume that it's been, well, maybe it hasn't been printed yet. It's probably been printed already, like the regular prism, but that means you're going to have like KD, press proof Giannis. You're going to have like KD as a son, Kyrie as a mav, like Devin Booker. What's up? Westbrook as a clipper. Yeah, Westbrook as a clipper. Ose Ibahi, there's Jay Neivey, at Baldwin. Got to be a couple of Rookies too that are not going to be in the main set for the update as well. There's Yusuf Nirkic for the Blazers, press proof. There's another Evan Mobley to $149, or $199 for the cats.  Mike, congrats. Walker Kessler Rookie, Rollins, Kiehl's, Jalen Williams Rookie. What's up? I know, right? Probably won't be the last one we pull either. There's Cat, press proof. Manual quickly to $199 for the Knicks on the purple, press proof. Tatum Hill, Cade. Wesley Branham and Mark Williams. The Mitten. Mark Williams, nice one there on the press proof, the Hornets. Another Marvin Bagley. How laser to $149, how many of these are there? Four of those now too. She's Hardy, Daniels, Neymar Rookie, Bari Smith Rookie and Wendell Moore, press proof. Norman Powell, there's Jamal Murray to $149, hollow laser for the Nuggets, Kwai Leonard, base, base. Sochan, Coloco, Eggs Benedict, Cumberbatch-Matharine, Tyside Washington. It's A.J. Griffin, steal the trap. Gold, that is a 10 of 10. Nice one there. Atlanta, one of the last teams taking. Congrats Hawks, very nice. Of course, I was going to buy the Hawks. Jalen Green. If I wasn't breaking, I was going to buy the Hawks in that break. So congrats to whoever had Atlanta, Luca Donchich on the foil. Monat, Terry Mobley, Jalen Durin, and Kennedy Chandler. Some there as well. Two to go. Colin Sexton for the Jazz. Nikolajokic, nice. Basketball to $75, $27 of $75. The Joker. Dame time, crunch time. E.J. Ladell. You got 100 shots on this island hole. How many you put on the green? Zero. Jalen Suggs. Press proof is Kevin Durant. Johnny Davis. Keegan Murray. Four squared 100 times. Check one thing. Like my egg scrambled me too. I don't like Eggs Benedict, but it's funny. Down to nine to go, guys. Nine to go on the second Phoenix H2. Again, just 34.99 of spots. Nine to go. 35A spots. That's Christian Braun. Press proof. Malcolm Brogdon. Blue Hollow Laser to $49 for the Celtics. Unleashed Curry. Hollow Ben Caro Rookie. John Bochamp. A couple of Grizzly Rookies and Jalen Williams on the back. What's up, Steel? How you doing, buddy? St. Patrick's Day. I have to go out with my girlfriend in Melbourne. Marvin Bagley. Dineo Gallinari to $199. I just picked up your tux. Let's go, Manny. Travers, Christian Braun, Tyrese Martin, E.J. Griffin, E.J. Ladell. Not really a big drinker, so it's not really my favorite holiday in the world. Seth Curry. There's Kevin Hurd to $199 for the Kings. Crunchtime at JT. I'm excited to go. Ochi Agbahi. She's really looking forward to it. Jayden Ivey. So it'll be a good time. Joshua Primo. Another Marvin Bagley to $149. Got one of those for a box. It's Manjane Christie, Sharp, Peyton Watson, and there's a Mr. Chet Holmgren. We appear in Marvin Bagley's hand. You are pumped right now. You're going after all $149. You already got five. Jason Tatum, press proof. Nice. Foyle is Patrick Ewing for the Knicks. Wesley Brown, Brandon McGowan, Mark Williams. My dad met Patrick Ewing, actually. Him and John Starks, he met in the middle of the Kyle Kuzma. There's a Chet Holmgren. Nice, $2149. Congrats on that. Okay, see? Nice Chet coming your way. Not too shabby. Crossman, CP3. I'm going to recap. Philip Houston, Keegan-Marie Rookie. Nicola Jovi. And Jabari Walker. I usually get all numbered on the ones in it. So do you not want to do all numbered? No, no, no, no. Yeah, you can just do all of this. Okay. Sorry. I meant to tell you that. You're kidding. Unless there's like a big rookie, I would say that's about it. Okay. That was a Jordan Clarkson press proof. But if I do want to do a recap for another two hours, I can do it right now. 58 out of 99 lead door. Walker Kessler. I'll level with you. I need rookie numbered. You can put it. Okay. How about that? Walker Kessler. Trevor Keels. Jalen Williams. There's Lebron Pressproof. Nice. There you go, Joshua. Got Steph Curry. Gold production line. Pressproof. Vitae Sochan-Cloco. There's Matherin. I tie Washington. There's Garland. There's nice. Oche. And Bahi on the rated rookie auto. Congrats on that. Utah. Very nice. Saw him play yesterday. Pressproof Ja. Parents' Man 2199 for the Clippers. Jalen Durin. Can be Chandler for the Grizzlies. Last pack here. Luke Travers. Nice. Pressproof rookie. Pressproof Shaq for the Lakers. Unleashed is Damian Lillard. Jaden Hardy. Dyson. Nemhard rookie. Javari Smith rookie. And Wendell Moore. I don't know what that is. Just a piece of something. Okay. Still a quick recap, guys. We had Andrew Nemhard to 199. Dallin Terry to 149. Chet Holmgren to 149. There's Autos Oche, Agbahi, Dallin Terry, Nikola Jovic, Jeremy Sochan, and AJ Griffin, 10 of 10 for the Hawks. And then we also added Javari Smith. 64 out of 75. That's going to the Rockets. That'll do it for the break, guys. Thanks again for the fill. Next up, we've got number 14.


Catherine Langford, she's just so pretty and has so much class, but I have a girlfriend, but I'm only answering for the questions So, you know, I'm going with V. I gotta give V that little Romeo magic, you know? Veronica Holla. Gleecey's dragons. Yeah, definitely. Oprah.


Hello, everyone. My name is Daniel Boluzo. I work at NXP, mainly enabling the audio's IP that can be found on idotemics.mpus. And also, I'm taking care of enabling the DSP that exists on some courts. So is anyone here doing audio? OK, oh, OK, nice. Anyone doing audio on Linux kernel? Great, thank you. So this presentation is about sound upon firmware and how we enable it on ARM64 cores. The presentation is split like this. We will start with some audio basics and a solution overview. And then we will go into the three software components that we have. Let's say we have an hypervisor to separate the core on which we run the firmware. We have a Linux driver. And then we have the Zephyr that runs the actual firmware. So first, some minor details about anatomy of an embedded system on an SoC. There is a digital audio interface, which is on the SoC. And its scope is to get some numbers from memory and convert them to digital audio signals. Then we have a codec, which is goal is to take the digital audio and transform it in analog audio. Of course, we have the other path when we are doing the recording and we are converting the analog signal to digital signal and then to numbers. We do have some helpers IPs like the DMA and some other helper IP like a sample rate converter. Now, let's see the general overview of the solution. We have two cores. It's an application processor that usually run Linux. And the other one, a secondary core, is the core that runs the firmware. The architecture of SoundUponFirmware is tightly coupled by the ALSA interface and by the Linux driver. The Linux driver job is to take the firmware image, load it somewhere in memory, and then start the DSP that runs the firmware. Another specific thing to Linux is that the audio pipeline is encoded in a special file format named topology. And that format is loaded by the Linux kernel, is parsed, and each component and each link in the pipeline is sent to the firmware, which takes care of creating and holding the audio topology. Of course, we have some tools for debugging, for runtime configuration, and some other stuff for specific image formats. But we won't go into detail for that. Now, let's see the hardware and we'll see a little bit of a history with the SoundUponFirmware. So this is the idotamics Mplus processor, which has a main CPU with several ARM cores, and it does have this Hi-Fi 4 Tenslica DSP. We started with SoundUponFirmware based on ExtensaOS, and that worked pretty fine for this kind of architecture. But it didn't work for the next generation of audio where we don't have a DSP. You see here, this is the idotamics 95 application processor, which has up to six ARM cores, but no DSP. So we needed a way in which we run the same solution on this new hardware. And the help for us was that we switched from ExtensaOS to Zephyr, and Zephyr has support for ARM64. So we were able to run the firmware on the ARM64 core. Now, some small introduction about the SoundUponFirmware. This is an audio open source firmware and SDK plus tooling. The Linux kernel part has BSD-GPL license driver. The firmware part has BSD-MIT, all the license drivers. It was initially started by Intel and on the DSP family from HiFi 2, 3, 4, and so on. It was designed by people working on the Linux kernel, and the design shows that in the way that everything and the modules and the platform independence is organized similarly with the Linux kernel. So the driver is PlatformAgnostic. It runs on x86, on Intel and AMD platform, and on ARM64, on NXP platforms. Also, the firmware was created with platform independency in mind, and the modules are separated. So the only thing that you need to change when going from one platform to the other is the specific layer that is tied to the hardware. The rest of the components should stay the same. All right, this is a very, very high-level overview of the Linux stack. Those of you who've done Linux and kernel knows that it's much more than that. But for the sake of the presentation, it's enough for us to get the general idea. We start with the user space applications that use the ALSA interface. In the Linux kernel, we have the ALSA stack, which has several components, and we have some drivers for the hardware IP, for the codec, for the digital audio interface, and usually we use DMA to move data around. When we use a normal ARM system without a DSP and everything in the audio world is handled by the ARM cores, this is how things are looking like. Now, when we introduce the DSP, some of the hardware is now managed by the DSP. And here we have some of the digital audio interfaces, DMAs are handled by the DSP. And some other parts, like the codecs, are handled by ARM. You see here that it's a natural separation by the design of the hardware. Now, and of course here, we introduce a concept of messaging unit, which is a hardware IP that allows two cores to communicate between them. It's very common on NXP platforms. Of course it exists on other platforms, but the naming is different. All right, now what we do, if we don't have a DSP and we don't have the natural separation that the hardware provides when we have a DSP. Well, we introduce a hypervisor. The hypervisor that we are using is Jailhouse. And with the help of this hypervisor, we try to do the separation, right? And what we do, we reserve one ARM core to be somehow replaced the DSP. And then with the help of the Jailhouse hypervisor, we separate the devices. We allocate the DMA and the DIA Digital Audio Interfaces to the core that is running the firmware. And we allow the rest of the core to run the rest of the hardware IPs. Now, very simple information about the Jailhouse hypervisor. It is a static partitioning hypervisor. And how it works, it first boots...  And the hypervisor will separate cores and resources into what is called a cell. We have the root cell that continues to run Linux. And we have the other core that's reserved that will run the firmware. And we have here some commands. It has a user space API from which you can create cells, delete cells, start firmware in a cell, and so on. And here what we do is create configuration file that describe the resources allocated to the secondary core. We compile Zephyr. We load Zephyr at a certain address. And then using Jailhouse, we start the firmware on the secondary core. And this is all that we want to know about the separation. After that, we are now, again, in the case that we had for the DSP, where one core was reserved for additional work. Now, for the sound open-firmware Linux driver, this is the anatomy of the sound open-firmware driver application. This is all in the ALSA layer. We have the machine driver. The machine driver is a piece of software that takes care of taking the digital audio interface, driver, codec driver, and linking them together, taking care of the configuration parameters and things like that. That's standard in the ASOC world.  You describe the digital audio links, the codec, and the way they are connected. Next layer is the PCM layer, which in sound open-firmware takes care about some stuff like topology. It takes care of taking the audio pipeline description, parsing it, and sending commands to the firmware in order to create on-firmware site the pipeline that we have. Typically, an audio pipeline can contain components like a volume, like a mixer, or more complex components like an audio echo canceler. Then we have an IPC layer, and because this was written with platform agnosticity in mind, it has first a generic IPC driver, and then each platform needs to implement its hardware specifics. Like, for example, with NXP, we need to add a messaging unit driver. We need to find a way from which we share audio buffers from Linux to the DSP. Here also resides the code loader. We use the firmware interface from Linux kernel where we read the firmware from user space, parse it, and put it in memory, and then start the DSP. On this next slide is a short summary of the last picture, so we'll go over them. I want to introduce you a little bit about the flow on how things work. So on the audio subsystem, audio is handled by a sound card. A sound card is a bunch of interface and a bunch of files in user space, and the user has the possibility of writing audio data to the kernel or writing commands to the kernel, and what we do is we hook into these PCM operations, and instead of running the audio on ARM cores that's managed by the Linux, we forward all the information to the firmware, and the firmware takes care of starting the stream and running the audio application. Now we have some operations, like for example, when one opens the sound card, the action that happens is that we load the firmware and start it. Then we have a phase of configuring the firmware using this function or triggering an action on the stream. Like for example, start stream or stop stream or resume stream or suspend stream, and then the actual copying of the data from an audio file that sits in user space happens through the IOCTL interface. Now on this image, it's a simple pipeline on the right side. We see some components like host, mixer, and digital on your face, and let's see a simple flow of how this works. First, when the pipeline is loaded, when the topology is loaded, the Linux kernel parses all the commands and sends them one by one to the firmware, and then the firmware does like this, creates the host component, creates the mixer based on the commands that it received from the Linux, and then creates the buffers, and there is a command to actually link the components through the buffers. And when, for example, we want to start a stream, an audio application from user space will issue a command, the Linux kernel takes care of it and encapsulates it in a special message, sends it to the firmware, and the firmware actually interprets that command. So for example, if we want to mix two streams, we open two streams and we start them, and each of the commands is forward to the correct pipeline. Next, what types of commands do we have? For example, we have commands that applies to stream, like for example, setting the parameters or suspending the stream. We do have commands that are related to the topology, like for example, we want to create a component or to create a buffer or to link the components between them, and commands related to power management. This is one thing that is by designing the SOF. This is the custom protocol that it implements. And we'll see later that it's kind of a limitation for us to switch from this to a core and a system that doesn't have the Linux kernel. Like for example, the MCUs, which do not run Linux, and we want to enable SOF on that. But we'll discuss more on that later. And of course, for the Linux part, the last side is the utilities. We have a logging system, a custom logging system with messages that are written in memory, and switching to Zephyr, now we're investigating how to actually use the Zephyr logger instead of our custom system. We have the images is in a special format, so it's not an elf. The elf is encapsulated in a special format and sent to the Linux kernel, so that the Linux kernel doesn't know about actually parsing elf. It just knows about this format, which is easier to interpret and parse. And we have a tool that allows you to runtime configure the pipeline. So for example, if you have an equalizer and you want to change the coefficients, you can do that at runtime by issuing a command from user space that goes to Linux and then goes to the firmware. Okay, so that was where the first parts where we thought about Linux and Zephyr and the hypervisor. Now let's see a little bit about how we actually managed to enable this on ARM54 core. I think some of this stuff I already mentioned. We started, it's important to understand the history. Intel started with the firmware running on Hi-Fi platforms. I assume that they initially got the proprietary firmware from Extensa and then they decided to create something open. And then we are working on the same project using the custom firmware from Extensa and then we've seen the sound-opened firmware announced at the conference and we decided to use it. The design is clearly made by people working with Linux. It's configurable, uses Kconfig, similar with Zephyr and Linux. And you can select which components do you want on your firmware. If you have a firmware with memory limitation, you can remove out a code that you don't need. And now we are gradually switching to Zephyr. The first part was already done with supporting Extensa. Also, the fact that Zephyr supports ARM64 was of a great help for us because we could easily use the existing support and only add the things that are not present. Okay, so the example that we are working on is it's already upstream. It's a support for IDOTAMIX93AVKA554. This is the name that we've got. So in order to support sound-opened firmware as an application, first we created a board, then we created an application and custom overlays and Kconfig Framance and added this application on top of existing boards. We'll see later on the components that SOF already has and what's the effort on keeping only the audio logic in sound-opened firmware and moving everything else into Zephyr, like moving all the drivers into Zephyr and moving all the OS primitive into Zephyr. But now we'll discuss about how to add support for the IDOTAMIX93AVKA554, and there is a very useful guide which I walk through over many, many times about how to add support for a new board. First, we need to start with the architecture and it is ARM64. Luckily, this is already supported. We only need to understand how to be used. So in order to enable this, you need to enable Kconfig ARM64 which will later bring more configuration symbols into the picture. Next is to select the CPU core. CPU core is Cortex A55. We needed to define this symbol and to select appropriate symbols to enable and to drag with it. Next, there is a SOC family and SOC series. SOC series for us is IMX. SOC series for us is IDOTAMIX9, right? And here you have to define and to create a sets of Kconfigs and add this directory structure when you add your SOC series. And based on that, you actually add your instance of the SOC and we named that IDOTAMIX93A55 and this needs to select at least the basic support first time when you enable in the board, the basic support to run the Hello World application or the synchronization application. And in order to do that, we have the board which only needs these six IPs in order to be able to boot the serial console and to run a simple sample that brings something on the console or creates some threads and does some synchronization. So we enable the CPU, the timer, the controller, all of these three are generic ARM IPs and then some specific IPs to NXP like the UART. Luckily, all of these were already there. We only needed to instantiate them. So at this point, we have a board and what remains to be done is to add your actual application. And here we learned that inside your application, if you create a directory app, you can annotate and add over the existing DTS. For example, we added the 855 overlay which is a DTS fragment file which is appended to the board DTS. And then we added a config fragment which enabled the options that were only needed by DSLF. As you can see there, there are other boards supported like 8M and 8x. And we had an example on how to enable our board. Next, you just compile the board with West and you get the binary, right? Then you use Jailhouse as we discussed later to load the firmware and start it running. So until this point, we have support for the so-called board which is IOTMix93. Now, what we do with the actual application, this is the architecture of the sound-opened firmware architecture and we have a part which contains only the audio components. These are open-coded C files and sometimes we have vendors that cannot offer the C file or the source code but they only offer a binary with the algorithm implemented there. We have a module that takes care of proprietary binaries. Then there is the generic micro kernel module which takes care of all OS primitives like the booting parts, the interrupts, timers and everything that you need to have a working operating system. And last are the platform divers which the ones that are familiar with audio on NXP are SI and EDMate controllers and we have others but these are the most common on the NXP MPU platforms. Now, in order to run SOF with Zephyr, we only need this part. We need to hook our OS support into Zephyr meaning that, for example, functions like creating a thread need to go into the OS core of Zephyr and call that function for creating a thread. The porting the audio components is not required. I mean, this is the only thing that we want to keep in Sound of Confirmware and platform drivers for the moment, most of them are inside SOF source code. There is an effort to port them to Zephyr and remove them from here. We'll see what's the status on that. So adding support only for the Zephyr R2S in Sound of Confirmware allowed us to have a working application. And here is an example on how do you change the API that SOF is using to be hooked into Zephyr. So for this example, here is a function for registering an interrupt number with a handler. And what you need to do is just to find the equivalent function in Zephyr and add it here. And then it just compiles. On the right side, you see all the OS interface that needs to be adapted to use Zephyr. Most of them are just trivial name function renaming or calling the function with the parameters in other worder, because when we designed first SOF, we didn't have the Zephyr to look at and we put some parameters in some order. So once you've done this, you have support for SOF. Next step would be to completely remove the wrappers and use native calls from Zephyr. But this will imply that we need to completely quit the extents OS support, which is for the moment, it's a discussion in the community if we should go full Zephyr or if we keep extents OS support or add more support for like free RTOS. There are some companies wanting to go one way, some in other way. We'll need and we'll see when we'll reach an agreement about this. Now, next part is taking the drivers from SOF and moving them to Zephyr. Intel already started on some drivers and the first driver they looked at is a driver for the digital audio interfaces. As you might know, in Zephyr, the audio support is pretty light. There is some small I2S API, but that didn't fit the need of the SOF and what the community did is created another API, which is called digital audio interface and the interface can be found in Zephyr drivers die.h. And what does this API do? It just emulates the operations that were already in SOF and functions like probe, remove configuration and trigger function. Once this is done, they've already ported some of their digital audio interfaces there and they are working with that. For us, for NXP IPs, we have SI and ESI which are not yet ported, but we plan to do that. The next thing that we need to port are the DMA drivers. Luckily here, the API was pretty much the same so we haven't need to do any extra work. The only thing that was added in Zephyr were the suspend and resume handlers for the DMA which were not present, which with that added, the Intel started to port their drivers. Luckily for us, EDMA driver is already in Zephyr so we could use it directly from there. Now this is the last slide and this is the things that we need to think how to do it. So for example, how do we port the messaging unit interface? In Zephyr, there is already a driver named IPMidotemix which is for the messaging unit device but I looked a little bit at it and the interface doesn't really fit our needs so we need to understand how to do it. Then we have to add support for interrupts here which is some sort of interrupt controller and Zephyr already has an API for interrupt controllers. We need to understand if this API fits our needs. Then the design that we are currently having uses clocks and power management but those are enabled by Linux. And the next step for us would be to allow each device on Zephyr's side to enable its own clocks and its own power domains. For us, it was easier to enable it from Linux but this is not really the correct way. And one thing that I want to propose you for a little discussion is on how do we run sound-opened firmware application on a system that doesn't have support for Linux like for example, the MCUs. How do we port sound-opened firmware on Idotemix RT boards? And with that, my presentation is over. I would happily take questions or ideas on how to decouple this from Linux. And hopefully, I think SOF would be the start of creating a proper audio stack in Zephyr. It already did some steps but there is a long way until we have a proper audio stack. Yeah. So you mentioned that you move eDMA control over to the Zephyr core. Does that mean that it has exclusive access to the DMA and prevents the Linux system from using the eDMA? Technically, yes. But in theory, I think Linux might have control over it. It depends on the platform. But in theory, in practice on how we did it, now Zephyr has exclusive access to that device. And I think it's even more clear with the jailhouse solution where you actually separate and you say for this address area, only that core has address. A couple of suggestions and one question. For the messaging unit, instead of looking to the IPM, you should look to MBOX, really. Which one? To the MBOX API. MBOX, okay, which is on top of this one? Yeah, no, it's not on top, it's something... IPM, I consider it a bit legacy MBOX. It's an evolution of the IPM, but it's much more complete because it supports multiple channels, for example, while IPM does not. So maybe you want to look at the MBOX API instead of the IPM. Also for the coupling, the firmware from the host has maybe an idea to be looking at the libmetal. Okay, the problem right now is that all the configuration and all the setup for the firmware is done via commands from Linux kernel. Okay, and that comes to my next question. So like, for the IPC, like, the reason you don't want to have that managed by Zephyr, because in one of your previous lives... Yeah, back. Yeah, so you want also IPC to be managed by Zephyr or you want it to be something? Because in Zephyr, we have a pretty nice IPC. IPC has two parts, one that's it's managed from Zephyr and the other that's managed from Linux and that's they communicate. In the scenario where we get rid of Linux, I don't think we will need an IPC layer because there isn't another entity to which we should communicate. So we can remove that part. But what we need is we need some sort of a statical configuration maybe assigned in SOF which encodes the audio pipeline, for example. Which components do you have and what are the links between them? Right now, what happens is that Linux reads a file with the configuration, parses it and sends it to Zephyr. And in this way, we can rapidly change the audio scenario.  And you do that using shared memory, I guess? Yeah, it's shared memory with a doorbell. Okay, and use many transport protocol, right? Yeah, we have a custom protocol. Oh, right, so not there every message. No RPMsG, although this could be a suggestion that we should look into it. And also we have a custom protocol for loading the firmware instead of using the remote proc, for example. Okay, thanks. Okay, looks like no other questions. Thank you very much for your presentation.


Welcome to this unit which discusses the ways of producing an airstream. We need this background knowledge about the total range of the phonetic capabilities of humans in order to describe the languages of the world phonetically. In the virtual session where, as usual, you have the question sheet as default guidance, you will be introduced to some general aspects of respiration as well as to the principles underlying the airstream mechanisms used in speech. The mastery worksheet is a dynamic multiple-choice test with ten questions about the same topic. After the virtual session, you should not find this test difficult at all. And the practical is all about speech-sound articulation using different airstreams. Not easy for beginners, but if you follow the instructions, you should manage. So all in all, a real practical unit. But if you invest a reasonable amount of time and practice, you will be fine.


Welcome. Hi guys, I'm really excited to be here. As being said, my name is Dara. I'm a data scientist at this company called CIC Asia. Most of you probably know it as a job street. And yeah, I'm actually not from Malaysia. I'm originally from Kazakhstan. So in this session today, we're gonna be talking about Firebase ML Kit AutoML Vision Edge. This is something new they came out just recently. And I would like to also just give you a short brief what we are gonna be talking about today. So for those of you who might not know, I will be talking about slightly about Firebase. What is it actually? And then we will jump into the ML Kit and we'll go through the ML Kit, what it already has. And then we'll jump into AutoML Vision Edge. So, but before we begin actually, I would like to ask you questions here. Don't worry, it's okay if you don't know. So how many of you have tried Firebase before? Could you please? Wow, that's a number of hands. Okay, cool. So the next question will be, how many of you knows, heard about machine learning before? Awesome, you guys are so smart. Okay, so I would just wanted to, before we actually go through everything, I would like to thank Google because there was this woman tech makers scholarship that they awarded me and I got a chance to go to this amazing conference, Firebase Summit Madrid 2019. It was cool, it was full of so many smart, intelligent people, so many interesting talks and insights and again about Firebase ML Kit as well, which was partially because I was there. And yeah, this amazing woman over there, I was actually surprised that there's so many women in tech by now, all these women were there for the briefing breakfast talk. Yeah, so a quick one about me. So I joined over 20 plus hackathons in the last two and a half years, which is here, I want some, as you can see. And then spoke at around 20 meetups workshops talks, first time in Singapore. And then passionate about tech, love tech is facts. So by the way, I'm gonna be distributing some just right over here, so stay tuned. Make sure you remember everything I'm talking about here and you might get one. And then, yeah, I hate durians, I'm sorry. Yeah, so next one. What is Firebase actually? So for those of you who didn't raise your hands, it's fine, I'm just gonna quickly introduce you to Firebase console as well. So Firebase is a backend as a service BS chat started as a YC11 startup and grew up into a next generation app development platform on Google Cloud platforms. So you could see like a lot of projects had been integrated with Firebase together with Google Cloud. This is how it looks like, all the projects that Firebase has up to now. So today we're gonna be talking about ML Kit, but other than that, it has quite a number of other products out there. So if you're a software engineer, you could actually build an app only using Firebase without actually having to worry about all the things that you need to build better, like improving the quality, grow your business. Firebase is there for you to help. So the next thing, what's machine learning? Machine learning is actually a field of study that gives computers the ability to learn without being explicitly programmed.  So this one is funny, I like to actually give this kind of memos. So back in the day, how it actually happened. When the user takes a photo, the app should check whether they're in an initial park. Sure, it's easy. Just give me a few hours, and then check whether the photo is of a bird. Okay, I'll need the research team in five years. So that was back in the day, that was previously how it was actually, how hard it was to implement machine learning into your applications, into your software, and integrated because you need the team of researchers, you need a huge amount of data, a huge amount of research to be done. But what do we see now? We see a huge interest in deep learning, which was 50 times more than in the last five years. So from here, you can actually say that the models, the prediction algorithms had been improved over time, and now it's really, really great. From 26% errors in 2011, now it's only 3% errors. We see in identifying, let's say there is a little part here, while humans has 5%, so machines are smarter than us. Okay, so just to give a brief intro on how it actually works, in software development, we have rules. We have this, let's say for example, if we want to describe it as a walking, you just need to specify it is speed less than four, then the status is walking. If we were to go to running, we want to add the running, so we need just an L statement here, and then we can change our status to running, and so on and so forth. But what if we want to describe golfing? We can't really describe it as speed, right? So that's where machine learning actually comes in handy, because in traditional programming, what we have is rules and data. We stuff it in, we get our answers, just like you saw in the example before. But in machine learning, what we give it is answers and data, then we get back with the rules. So what we get is something like this. I know it's not really giving us anything, but that's actually something that machines can understand in zeroes and ones. Well, machines are all about zeroes and ones. So we give a label and we give our status as a walking, and then the rest of the things, and it comes out as like label golfing sort of. So then we can actually say what are the rules needed for identifying whether the person is golfing or not. So this is like two examples of how we can actually train your model. One is you give answers and data, and then it comes out with the model. The other one is in first phase is like you just stuff in data and then it comes out with predictions. Those two are also kind of referred as supervised and unsupervised learning. In supervised learning, you have your labels already just now as walking, running, and then you can actually get the model. But in unsupervised learning, you don't have all these labels. So the model actually comes out with some sort of prediction based on your data. So you don't necessarily need to know the answers. So how does it work? This is the most common example of machine learning for deep learning, actually. It's basically all the numbers, handwritten numbers, how machines actually can identify for us. Of course, we understand that it's just eight, written in different like formats. But for machines, it's really gonna be tough to identify whether there is eight or not because it could be located in a different position. It could have like some weird eight which looks like G. So many, many possible outcomes. So how you actually train it? This is how you are actually gonna pass it to your model. You see the eight here, it will turn into array of numbers and then what will happen is it will go to the convolutional layer and then it will train it. So that's how you actually do it in machine learning. Basically, it will just come up with layers and layers and layers and then it goes back with the result and then if you want to train it more, you can actually pass it again with different hyperparameters and then you do it back and forth and then you can get your own model. So that was back in the day. And it's still happening actually, researchers are still using the same layers, the same neural networks. And those are the steps that you actually do to implement machine learning. So first and first, you prepare your data. You develop a model, train, tune and evaluate the model. This is a huge part as well. Then deploy a model, get your predictions.  By the time you develop your model, it might not be relevant anymore and then that's actually what usually happens. But now with ML Kit, it actually simplifies the whole process. What it does is that instead of taking all these steps of preparing, training data, developing model and training it, you can actually just get the select model from the ML Kit, get the API, simple code of calling that API done, you get your predictions and you will see that later in the demo. So this is actually all the ML Kit products that they have as of now. They have text recognition, they have star code scanning, page detection, image labeling, landmark detection, object detection and tracking, which is something new and then nature language, language identification, smart reply or device translation and then custom is like model, serving and then this is the one that we are going to be covering today, auto-malvision edge. Well, before we actually jump in later, I would like to show a bit of a demo on my app over here for text recognition, for landmark detection and a bit of face detection as well, just for fun. So let's jump into that demo. So, okay, just get the next image. So how it works is that we just implemented some small code, some small portion of code in our iOS app and then what it does is that it can detect the face over here. So it then comes out with like, where is the head of alerted angle, all these kind of angles where you can actually use it to probably predict some, I don't know, emotions. Like if the person is smiling, probably the X and Y axis goes up, then from there you can actually get the idea that oh, the person is smiling in the picture. And okay, I can do it on the image. What if I wanna try the video? Yeah, so you can see. Okay, it doesn't detect you guys. I'm sorry. But yeah, so it basically can identify your face and all the features. And it's quite fast. It's like, no matter how much I move it, it's still tracking my face. Whereas compared to, I've tried OpenCV before, it was just super laggy, super slow. And yeah, I'm sorry. But Firebase is actually making it seamless and fast. And this is actually much better than it was before a year ago when they launched it. And then next one, let's try text. Where is the, there you go. It's seamless, you can identify it fast. You can identify there is a gallery, please enter one. And then it comes out with the text itself. So let's try image labeling here. Okay, sorry. Where is it? Okay. So this is on device. By the way, I forgot to mention. The ML Kit, it comes with on device or on cloud. On device is basically whenever you upload your app, it will come with the bundle. But on cloud, the model will be run on the cloud, on Firebase itself. So which means it's a better accuracy. But then if you want something simple, you can still use on device. So this is on device. Let's see, oh, sorry, this one is wrong. Then the next one I would like to see is image labeling. Yes, this is the one. I would want to take out this image. And then, yay. So this is actually the problem I'm gonna be, we're gonna be discussing for auto mail. So you can see that it identified the wedding dress and then all the other things like gown, clothing, bridal, clothing, bride, whatever. But one thing I wanted to do is, I wanted to identify whether it's a Catholic dress or not, whether it's a Japanese dress or not, whether it's like, which culture does this dress belongs to? And the API doesn't do that for me, so what should I do? I'm gonna go ahead with auto mail and try that out. So auto and mail is actually, what it will do for me is that instead of all this, I'm gonna prepare my own training data, all the hundreds and hundreds of images of wedding dresses. And then what I'm gonna do is, I'm just gonna pass it over, it will train the model for me. That's where auto mail is super useful because I don't have to tune it, I don't have to train it, I don't have to go through all of these steps, it will do that for me. And then actually, I can also deploy it instead of having a DevOps guide to do that for me. So this is the problem statement. I collected a few number of images of the Catholic wedding dresses versus the normal wedding dresses. So you could see that for human eye, you can identify that, oh, there is this ornament over there, there is this head over there, and in here you don't have it. But for machine to understand it, it's still gonna be classifying it as just a wedding dress. So the steps goes as follows. I took the normal wedding dresses, I took the Catholic wedding dresses, the pictures, around hundreds of them. Then what I did is that I passed it to auto mail vision edge. And then leave it for a few hours and then comes out with the TensorFlow Lite model for me, which I could deploy on device or whatever, it doesn't matter. So let's do some demo. So what I'm gonna do here is, I'm gonna go to the dashboard itself. So ML Kit is located over here, and here are the other products that you could be trying out in Firebase as well. So the optimal is located here.  And then what I'm gonna do is I'm gonna create it as a single label classification because I only have one for Catholic dresses and one for normal dresses. So then it will direct me here. What I have to do here is I need to browse for files. Okay, it's like it in my dresses. So those are the files I'm gonna pass. All the images for Catholic dress and all the images for normal. But instead of that, I will just pass it as a zip file to make it faster. Where is that zip file? Okay, I can find it. So I'm just gonna pass it as it is for now. I mean, you can do it both ways. You can upload the zip file, you can just select all your images. So this will take some time. I've already uploaded my images over here. And you see that I added two labels, which is Catholic and normal. Actually, advisably, you input more data than just 100 images because I got the result that they're just too good to be true. So there is clearly an overfitting here. But for now, for just the testing purposes, I've uploaded only hundreds for each because I mean, I'm lazy. There's so many pictures I need to take off, right? And then what I'm gonna do is I'm just gonna trade a model. Again, it will take some time. So let's quickly jump into already trying the model. So you could see that it's quite, I mean, self-explanatory. I get the precision, I get the recall, I get the latency. And I also get the true label, predicted labels. So in here, you could see that there's overfitting wise because it's too good to be true. Like it's almost 100% accuracy. It's just, I don't know. If I were to stop something else instead of the Catholic dress, probably won't identify one. Then there is precision, 91.43%. Again, too good to be true. Recall is too good to be true as well. But one thing good here and really informative is that I get like 94.4% of identifying as normal weddings, wedding dresses, but I still identify 5.6 of them as a Catholic dress, which is still okay. But the Catholic wedding dress is getting 100% accuracy. In here, I would be suspicious already. I would probably add more pictures of wedding dresses and retrain it. Okay, so the next step comes in. I would like to test it. So here comes the interesting part. I'm just gonna stop the picture that we took of ourselves in the wedding that I attended recently. By the way, Catholic weddings are awesome. So in here, you see the bride and even if there are many people over here, it's still identified as a Catholic wedding dress instead of the normal wedding dress, which is cool. I get to get like probably useful insights for myself. But what if I stop some random image? Let's just see if it's actually gonna work. I didn't try that yet. So that's why they say don't do the weddings. Okay, that's just my friend's picture. So you see that it's still identified as a Catholic wedding dress probably because of your facial features because she's from Kazakhstan as well. So of course it's not ideal. And as I say, it's over-free thing. And you could clearly see that if you give some random images, of course it won't be able to identify one. Okay, so next thing. Probably you might be wondering how accurate it is. Okay, that's good. I can just simply collect my images and then pass it over. But how sure I am that this model is actually good enough? Well, it's actually good. It's actually pretty good. It's 1.8 times better than the usual mobile net we too. And those models were very hard to create very algorithm-intense algorithms. And it's actually quite good in general. It's performing well. But what if I want to add one more? I want to add Japanese dresses now. So it will still, if I were to pass it in, it will most probably identify it as a Catholic dress again. But what I'm gonna do is I'm gonna train it again. And now with another folder called Japanese wedding dresses where you just collect all the necessary dresses for you. And then the question will be how do I switch? So I developed a new model. It's much better than the previous one. So how do I switch? The next one, you can actually switch by using the remote config given by Firebase itself. It's like a separate product on its own. So what it actually do is that you would simply create a new config parameters and then you switch it. With a new model. Of course, you can directly deploy with your new model, but it's just not advisable, I would say. And then what I'm gonna do is, in my iOS code just now, I'm gonna create a remote config, file and Firebase remote config, and then get the string of the MyModel. So just now you see that we call it MyModel. I'm just gonna get it as it is. So for example, if I were to be in Japan, it will switch over to the Japanese addresses. If I were to be in Kazakhstan, it will switch over to the Kazakh addresses. But where do I get the data? Okay, the way I did it is I just Google, I just collected all these images and stuff it in. But that's really tedious process, right? I'll have to go through each one by one, one by one, make sure it's a Kazakh wedding dress and add it in. So how does Firebase actually propose to handle this? Well, they created this custom image called Sophia app, which is open source. You can go ahead and try it out.  So in the app itself, the next user comes in, they will see all these images already. They don't have to go and get them by themselves. But of course, for my case, there for sure wasn't Kazakh wedding dresses, so I still had to do it on my own. Well, for sure upload one, you can get it later. So that's how it actually works. And now it is the crisis time. So for those of you who listened closely, let's try question one, what are the original steps to implement machine learning? Anyone? And then? Okay, the girl over there. First, you must prepare your training data first, which is like a wedding dress, they are there. And then you develop a model. Train, as I was saying earlier, you also have to set it very, very little model if okay. Yes. You will have to deploy and then your app will build a prediction. Yay, okay, cool. So we are getting the first prize over here. I'm surprised it's a girl. Good. So yeah, I'm just gonna pass it over to you. Thank you. Congratulations. Don't worry guys, there are four more questions over there. You still have a chance, but you won't get the socks. Next one, how are model security changed from 2011 compared to today? 3.1? 3.5, 11, 6, 8, 8, it's only 3. You all give me some random numbers, give me the actual numbers. Okay, okay, good. So, who is it? Can you get your name? Davish. Davish, congratulations. Next one, how fast an interest in machine learning has been for the past, in the past? Okay, he was first, sorry. Oopsie. Okay, next one, traditional programming versus machine learning, what are the key differences? Okay. You give the machine, in the traditional programming, you give it rules, but in machine learning, you let the machine actually lose. Good, good, congratulations. There you go, good one. Okay, then the last one, sorry boys. This is for girls only. Well, I mean, the price itself is a bit of a girlish ride. So what's the on-device recommended model to use once Automail is done training? It was there in the picture.  Sorry, girls, do it. Else I have to pass the earrings to guys. Oh, okay. The earrings are all right. Yay, congratulations, you get the five-way earrings. Okay, good one, quite fast. I'd like to finish this off by saying that, okay, Automail is still kind of, I don't know, alarming for most of the data scientists out there, because it might just simply steal our jobs, but it's still not up to the point. It still requires your involvement into it. You still require to collect your data, you still require to tune it if something goes wrong because some models are just specifically good for some use cases, some are not. So if you have a simple use case, you still can use Automail, but if you have something more specific, let's say the example just now at the show, like I want to identify what is the type of dresses, then probably you need to have your own input as a data scientist. So I would say my job is still not threatened yet, but it's coming, guys. So I would like to end this by saying, thank you very much for your attention. I hope you guys enjoyed it. I hope you guys enjoyed the prizes. Here's all the, thank you. Yeah, so if you wanna contact me if you have any other questions, here's all of my contacts listed below. So yeah, thanks a lot.