Hi everyone, my name is Pazza Meiri and I'll be talking about a project I'm working on named Tempest Radio Station. First, allow me to introduce myself. I've been developing hardware and software for more than 30 years and I'm working as a system engineer for more than a decade. I started my professional career very early. During my teen years, I cracked games and developed software tools. One of the software tools that I've developed was called the message sticker and during DEF CON 25 in Baraz showed code that he coded to deactivate the message sticker. He called his software on Pazza and on that Pazza. Okay, so what is Tempest? Tempest is a US NSA specification and a NATO certification. The acronym refers to information leakage from a system.  In 1985, the researcher, Wim van Eck, published the first unclassified analysis of the problem. He analyzed the information leakage from computer monitors. But government researchers were already aware of the problem. The US Army became aware that the equipment the Army is using during World War II was emitting unintentional electromagnetic waves and that these electromagnetic waves, the unintentional electromagnetic waves are carrying valuable data classified data out of the device. And since the fifties, the NSA is developing specification and certification for classified devices in order to reduce these unintentional emissions by grounding the equipment, shielding the equipment, separating different types of data lines and so on. Okay, how did they end up doing a project named Tempest Radio Station? Well, I read Tempest at home finding radio frequency side channels by David of Oldenburg. They wrote about their experiments transmitting electromagnetic waves from a computer to a remote receiver, 50 feet away. And they manipulated the GPU clock to control the transmission. And one of the most important thing that I found in their work was the until then, I thought, or I guess, that the electromagnetic waves emission regulation tests are preventing computers and cards from emitting so much energy into the air. And I was wrong. Another thing I learned from their work was the use of software defined radio receivers or SDR receivers. These are cheap radio receivers. The most common radio receivers of this type are tunable from almost zero to two gigahertz and they have really good reception quality. So I bought one and I studied the electromagnetic emissions generated by my laptop. And I got very interested by this work and I started wondering what can I do with it? How far can I transmit data using these emissions? And is it possible to transmit audio in real time? And above all, how hard can it be? So to figure it out, I've decided to start the Tempest Radio Station project. Transmitting audio in real time using these emissions and who knows how hard can it be? So first I have a project, then I need to define the project goals. The first goal was tunable frequency. And this is very important because if there are a lot of computers in a single area and I want to extract data from one computer, I need to separate the data it is transmitting from the other. And perhaps I want to receive more than one computer in the same area. So I need to have a dedicated frequency per computer. Very similar to radio stations. Each radio station has its own frequency. And the second reason for tunable frequency is that if you can choose the frequency, then you can find a quiet, relatively quiet frequency band with as little interference as possible and transmit the data in that frequency band and get a good signal to noise ratio, which is important for reception. Another goal for the project was maximum bitrate to maximize the audio quality. The third goal was innocent looking software to avoid detection for obvious reasons. And last but not least, trying to achieve maximum distance. Okay, so let's begin with a crash course about radio waves transmission. When you take a conductor and you pass time-varying electric current through it, it will emit electromagnetic radiation that will propagate from it to space. And reception works the other way around. If an electromagnetic radiation is close to a conductor, it will generate time-varying electric current in it. And this is transmission and reception of electromagnetic waves in a nutshell. This could be done with any conductor. It could either be wires or for this project PCB traces. PCB is the printed circuit boards that carry the electric components inside the computers. Traces are the fine wires within the PCB that connect between the terminals of the electrical components. And that's radio waves crash course. Another important thing to understand about broadcasting is modulation. Modulation is the manipulation that we do on the carrier wave, the expanding electromagnetic waves. In order to make it carry the data that we want it to carry. Most of you probably heard about amplitude modulation and frequency modulation, which are the two common methods used by commercial radio. But there are other types of modulation. The most simple type of modulation is the on-off keying. You have an energy source. You turn it on. It emits energy.  It stops emitting energy. And you can put the data or encode the data in the duration of the pulse. And if the transmitter and receiver has the same protocol, then they can pass the data from one to another. The most common and known on-off keying modulation use is Morse code. Morse code has only two symbols. A short pulse and a long pulse. And you use those two symbols to transmit the whole alphabet, words, sentences and so on. Okay, so we understand that we can turn PCB traces in the computers into electromagnetic waves generators. And we know that if we can take a line and make it generate... make it emit energy at our will and control the duration and stop the line from emitting energy at our will, then we have on-off keying modulation. Now we need to have such a signal. Okay, so the signals I decided to use were the signals between the GPU and the GDDR. The GDDR is the memory installed in the graphic cards. And the GPU perform memory read and write operations by operating the control and data lines of the GDDR. Here you can see in this slide a timing diagram of GDDR6, which is a common memory type these days. And there are four major lines that the GPU is operating. The two signals in the upper side of the graph are CK and CA. CA is the commanding signal. And the GPU use the commanding signal to command the memory to do a write operation or read operation. And CK is the clock of CA. It helps the GPU to command the memory. Similar to that, the two lower signals, the data signal carries the data itself, and WCK is the clock of the data. Whenever the GPU is performing a write operation or a read operation, it operates these lines. When it is not performing a read or write operation, it is not operating these lines. And this is the key to the On-off key, meaning that when we want to transmit a symbol, we start a memory read or write. And the duration of the operation is predefined by us. And when it ends, the energy is stopped being transmitted. Okay, let's talk about the duration of the pulse. The electromagnetic radiation, as I explained, is emitted when the control and data lines are active. It is not emitted when it is not active. So we need now to control the duration. There is almost linear connection between the time it takes to write a batch of bytes and the size of the batch of the bytes. So if we have a small volume of bytes to write, it will be a short operation. If we have a big volume of bytes to write, then it will be a very long writing operation. And that's the key to control the symbol length. Whenever we are performing a memory transfer, a symbol will be transmitted. And the duration is predefined by the amount of bytes that are going to be read and written during the memory transfer. As I explained, the connection between symbol duration and symbol byte count is almost linear. This is because the GPU hardware is using dedicated hardware to perform large memory transfers. And this dedicated hardware is time deterministic. So to define the on-of-king protocol between the transmitter and the receiver, I need to pre-define to both what is a symbol. And I define the symbols in the following manner. The symbol duration equals to symbol value plus one, multiplied by a time constant that both the transmitter and the receiver know in advance. The plus one helps me to avoid a zero duration if I have a zero symbol value. In order to transmit these symbols, I need to transfer a known amount of bytes. So the symbol transfer size, which is relative to the symbol duration, equals symbol value plus one, multiplied by a bytes constant. And as I explained, there is a linear relationship between the time constant and the byte constant. So if I do a very large memory transfer, measure the time it takes to perform the transfer, then I get the ratio between bytes constant and time constant. And that's the whole story. Here you can see it graphically. In the upper graph, you see the energy being emitted for three different symbols. In the lower graph, you can see the relation between the calculation I showed you in the last slide and the amount of time it takes to transmit each symbol. Here you can see, for example, the symbol value five. You add one to it, you get six, multiplied by time constant, and this is the size of the symbol. Again, you can see it for symbol value three and symbol value eight. Why using the GDDR memory? When I chose the GDDR memory, I had good reasons following the project goals. The first and most important was that it has tunable frequency. You can set the memory, the GDDR memory frequency and the APIs that are available. It's very easy to do so and I did it. The second thing was because the hardware is very time-deterministic and it helped me build solid, good symbols which are transmitted and then received and because it is very time-deterministic, you get the same results over and over and over on different computers and different hardware. Most of the time, the GPU is idle because when it's not in use, it's idle and when it is idle, it's not doing anything and it's a free resource. Then why not use it? I used it. This is Scotty. Scotty is the transmission software. It is installed on the computer that is broadcasting the data, the audio. On the top left, you see a GPU list and here you select the GPU that you want to use, the graphical card that you want to use, the graphics card, sorry. Below that, you have two checkboxes to start the transmission. The first one is for internal testing and the second one is to transmit a wave file. The name of the wave file is written in the line down below. To the right of GPU's list, you see memory clock. This is WCK, the data memory clock. To its right, you can see a divider value and the data value. The data value of the data is being written in the memory and you can see memory base clock. This is CA, the command clock. The relationship between the memory clock and the base clock is in this case four and the values here are relative to each graphic card. The graphic card can tell you the type of memory that it is installed inside the graphic card and from the parameters it gives you, you can get to these numbers. Below memory clock, you see base clock shift. This is the way that I'm moving the base clock and tuning the base clock. To its right, you can see a shift frequency checkbox that commands the Scotty to perform the frequency shift and to its right, you can see the center frequency. This is the frequency that Scotty is calculating by adding the memory base clock to a base clock shift and this is the result. More important is the indicator below it which is called measured transmission frequency because this is the transmission frequency that the GPU is measuring and this is the actual frequency that is carrying the data. Below base clock shift, you see two bitrate indicators. The lower one data bitrate is showing you the data bitrate but only the data. This is the pure data bitrate and the raw bitrate equals to the data bitrate plus additional bits that are used for control and monitoring to build the data packet. The last indicator is data transmitted in percentage which is the percentage of the data that was transmitted from the way file. Okay, so what does Scotty do? Scotty is doing the following tasks. It is measuring the time required to perform large GPU memory transfers. It is calculating the bytes constant for a predefined time constant which is predefined for both transmitter and receiver. It is setting the GDDR memory clock frequency or broadcasting frequency and it is loading a way file and transmitting 8000 audio PCM samples every second. I targeted the C cave clock, the command clock as my main broadcasting frequency and this is why I'm referring to setting GDDR memory clock frequency as setting the transmission frequency. Okay, so we have the way file and it is broken by Scotty every second to 8000 audio PCM samples and then it is transmitting the 8000 audio PCM samples in one second intervals. And first it is encoding the 8000 audio PCM samples then it is bundling the data into packets according to protocol, to a protocol, sorry. And the protocol comprises header bytes, read Solomon forward error correction parity bytes for error correction recovery at the receiver. Audio packets counter count how many packets were already sent and G726 encoded audio bytes, this is the real payload and audio data checks and bytes to see that the data is valid at the receiver. Scotty is transmitting each packet symbol by symbol and when all 8000 samples have been transmitted the software stops and waits for the one second interval to elapse. Okay, so Scotty is now transmitting the data to free space and the electromagnetic waves are propagating in the area and this is the reason why we'll talk now about the radio path or the wave path. Scotty is transmitting the data from the computer which is seen on the left. To the right side of the graph you can see of the chart you can see the reception equipment which comprises an antenna that converts the electromagnetic waves to time varying current. After that you can see a low noise amplifier that amplifies these weak signals and sends an SDR receiver that receives the signals and passes the samples to a computer reception computer that runs a software named SPOC that is extracting the data from the signals. In the middle you can see a photograph of this reception equipment. Here you can see how CK the electromagnetic waves that are emitted from the CK PCB traces is received 50 feet away from the source computer. You see here power versus frequency band and you should expect for a fixed frequency, fixed clock frequency to see all the energy concentrated on a single frequency, the clock frequency. As you can understand this is not the case. The manufacturers are shifting the clock in small portions up and down, up and down and in this graph it would be right and left, right and left and they are doing so to reduce the average power per frequency and why is that? Both cards manufacturers and computer manufacturers has to pass electromagnetic waves emission tests. These emission tests are required to get regulation approval and if all of the energy would have been concentrated on a single frequency they might not pass the test. The power might be too large and pass the threshold of the test and the card of the computer will fail the test. So, better prepare for these tests the manufacturers are spreading the energy on a small frequency band and this way they are lowering the average power per frequency and by this method they are improving the chances of passing the regulation tests and this is why the signal looks like this. OK, so we spoke about Scotty and now let's speak about Spock. Here you can see the screen of Spock and on the left top side you can see the SDRs list. These are the SDR receivers available on the computer and below that you can see center frequency which is the frequency that you need to set and below that you can see two gain controls they are used to set the system gain the SDR system gain and to get the best result you need to tune all three of them the center frequency, the gain reduction and the LNA state. Once you set the frequency and the system gain and you get good reception all you need to do is to check the play audio checkbox below the system gain and here the audio. In the middle portion of the screen you see the sample versus time graph and here you can see the waveforms the samples are creating waveforms and here you can see two symbols and the shape of the waveforms is highly influenced by this spreading technique I explained earlier the spread spectrum clock generation the shifts the clock up and down or in the graph right and left and this is how it looks like over time and below that you can see three checkboxes are used for debugging the most important of them is the clear numbers on the right because it is clearing the statistics on the right and on the right side of the screen you can see all sort of information which helped me develop the software and analyze the quality of the reception you can see how many samples are per iteration how many good packets were received lost packets that are lost the good packets ratio which is important because it is indicating the quality of the reception and other types of data what is Spock doing? well it is doing a lot Spock is doing two batches of tasks the first batch of tasks is dealing with the samples the raw samples that are being picked up from the air and analyzing and processing these signals and getting the symbols out of these samples and the second batch of tasks is working with the symbols to recover the data so let's speak about the first batch of tasks Spock is setting up the SDR receiver it is receiving cyclic batches of samples from the SDR receiver it is calculating the absolute amplitude of the samples don't be intimidated there is a graph in the next slide explaining it better it is filtering the data with a low pass filter it is calculating the amplitude threshold to recover the symbols and it is recovering the symbols using all of this data and it saves the length of each symbol the duration of each symbol in a buffer you can see it in a graph and I hope it will be much clearer at the top graph we see the absolute value of the samples and you can see the symbols here power versus time and in the middle graph you see the filtered values and it looks much more like digital data and in the lower graph you see the digitized data the recovered symbols as I spoke earlier Spock is doing two batches of tasks this is the second batch now that it has the duration of each symbol it has the symbol value so it is looking for the header bytes the header symbols if you recall each packet starts with header bytes and when you have the symbols it starts with header symbols once it found the header symbols it can recover the packet so it is recovering the data packet from the symbols and then it is using forward error correction decoding to correct errors in the data if any and afterwards it is verifying packet validity if the packet is valid then it is decoding the audio using G726 decoder and it is storing the PCM samples in a buffer if there are any missing packets lost packet it is filling the PCM samples buffer with zeros and then it is playing the audio and that's the whole circle between Scotty and Spock let's talk about tests the first batch of tests that they did had the following properties time constant was set to 14 microseconds the data packet structure was four header bytes 20 read Solomon forward error correction parity bytes a single audio packets counter and 63 encoded audio bytes and I used two bits per PCM encoding per PCM sample encoding and last but not least two audio data checks and bytes each packet was transmitted with four bits per symbol I took every byte divided into two nibbles and transmitted four bits per symbol here you can see the computers I used for the tests one was a laptop computer and one was desktop computer you can see here the hardware of the two computers you can see the setup in my apartment on the left you can see the laptop computer on the table on the right you can see the reception equipment and in the middle you can see the corridor inside the apartment and at one end you see the laptop computer on the other end you see the antenna here you can see the same setup but for the desktop computer you can see the desktop computer on the table on the right the reception equipment and in the middle the corridor with both sides ok let's see some tests here you can see Scotty on the laptop it's in flight mode and here it begins to transmit and now that you got good sense of the raw bitrate I'm walking backwards to the reception equipment this is the reception equipment the antenna low noise amplifier and SDR receiver flight mode of course and this is pop let's clear the numbers and that was the laptop this is the desktop you can see raw bitrate and this is pop and that was the laptop this is the desktop you can see raw bitrate and this is pop of our population as a whole despite that the best stretches of the unknown and the unanswered and the unfinished still far outstripped our collective comprehension we set sail on this new scene because there is new knowledge to be gained and new rights to be won and they must be won and used and that's the first batch here are the test results I got good audio and good average bitrate but and I even got good packet ratio but I noticed something interesting I got on the desktop better ratio when the monitor was turned off then when it was turned on so I started to investigate this when I examined the signals I understood that the desktop computer is the meeting signals which Scotty did not generate and the computer stops transmitting these signals once the monitor is turned off by the windows power plan so since I got better results with the monitor off I've decided to set the parameters the packet structure differently for a second batch of tests and try to achieve better audio quality so I set the time constant to 8 microseconds I used 4 read Solomon 4 order correction parity bytes instead of 20 in the first batch and I used 3 bits per PCM sample encoding instead of 2, let's see what I got this is the desktop of course and you can see a higher bitrate and this is Spock and as you can see there are a lot of lost packets the audio quality is quite poor the reception quality is quite poor and this is because the monitor is still on so let's wait a few seconds to see how it will go when the display will be off and this is with the display you can see that the lost packets indicator has halted and the good packets ratio is increasing and we get good audio clearing the numbers to die on Mount Everest was asked why did he want to climb it he said because it is there and we're going to climb it and the moon and the planets are there and new hopes for knowledge and peace are there and therefore as we set sail we ask God's blessing on the most hazardous and dangerous and greatest adventure it's a wonderful speech by JFK and I recommend you all to listen to it it's a great speech so these are the test results I got better audio and better bitrate and better packet rate and everything is great the whole project was designed around CK the command clock but it is important to remember that other signals are being transmitted as well on the same time we have the four basic signals here but there are more derived signals from these signals and there are a lot of signals being transmitted at every symbol transmission so if you can't get your data on one frequency you might find it on different frequencies let's see an example of that here you can see the power versus frequency of signal which equals the command clock divided by two and you can see good power and here you can see that Spock receives it 99.6 good packet ratio the only difference you may see is in the waveforms the waveform of half of CK is different from the waveform of CK and if you want to receive this signal instead of CK then you need to adjust Spock to process the samples with this waveform to get the best results but as you can see this was not handled or tampered in any way and it just gives good reception ok so let's talk about conclusions the first are the fun conclusions first it works the second conclusion is that my apartment is too small for the range tests I had enough power I could have gone further but that's the length of the corridor so that was it for me and I got so excited that I've made the jingle for Tempest Radio station let's hear it that is the jingle but let's talk about more alarming conclusions first time memory transfers are easy to produce it's only memory transfers and you can leak data just like you can leak audio because as you saw the audio was already digitized it could pass any other payload that I could choose you can use this method on airgap computer you look at an airgap computer it doesn't have any radio based communication channel but if it has a GPU then you can use this method to get the information out of it this is most important during non-working hours because the GPU is idle, there's no supervision the monitor can be turned off to achieve maximum bitrate either by the attacker or by the company's IT policy and the attacker can choose the time of transmissions for example he can hide the reception equipment in the parking lot and choose the data to be transmitted from 9pm till midnight and get the data everything I spoke about is not supervised by any software not by antivirus firewalls, port monitoring or whatever and this is important not only to for example extract plans and design from internal networks you can also do it on open networks, networks that are connected to the internet because nobody is monitoring this channel it's an open channel and since nobody is monitoring you can pass whatever you want and as long as you can hide the reception equipment and get the data out you can enjoy Tempest Radio thank you very much for watching here are the links to the source code on github for both Scotty and Spock and here you can see the references from my work thanks again and I hope you enjoyed it


Hello everyone, good afternoon. So we are here, we are so excited to hear with you to talk about Golang and Wazi. So I'm going to tell you about the agenda, what we wanna talk about. So we'll delve into, I mean, Wazi and discuss a bit about history about Wazi and how it was added to Golang in 1.21 release. And then we'll start presentation with WebAssembly architecture and Wazi, I mean, WebAssembly interface. We'll go deep dive into Wazi, how it works and all. And then we'll go through a little bit about Golang, like Golang tool chain and Golang ecosystem. Then we'll cover few use cases of Wazi in Go application today. We'll show Golang, I mean, plug in, how we build plug-in using Wazi and Golang. And finally, we want to talk a bit about ongoing development in Golang and Wazi, like Wazi preview tool. And the next steps for Golang and Wazi to continue their journey together. So we'll be discussing more about the histories and all. So my name is Rajiv. I'm originally from Bihar, India. And I'm currently work as a software engineer at Epimolar Musk. So I'm a part of platform engineering team. I'm located in Bangalore, India. I did my colleagues in Bangalore, India from GSS College of Engineering, GSS College of Academy, Bangalore. I have a degree in information science and engineering department, department. And I started working with Go in 2020. So I was part of a program called Google season of docs. I did Gshort with GRPC gateway. So there I learned about Golang. And obviously I am open source enthusiast. I contributed to open source projects and program like season of docs, LFX mentorship and summer of code. I work with companies like Lumore, Redbus and Economize. So in my college days, so I'm here with Arshil. Do you want to tell us a bit about yourself Arshil? Sure. So my name is Arshil. I am originally from France. I'm really happy to have you all here. But I flew here, I'm based in San Francisco now. I've been a Go developer for almost 10 years and I started working on the Go compiler in 2023. I do a lot of open source work. I contribute to Wozero, maintain several libraries, some of them that you might be using. Last year I joined the team that develops and maintains the web assembly port of Go. And I'm also the co-founder of dispatch.run where we're working on a platform to create reliable distributed systems. So Rajiv and I come from very different places. We connected online in the Go community and thought it would be nice to come and tell the stories of Go and web assembly to a broader audience. So open source is really core to the story we're here to tell. Not only because Go is powered by an open source community, but because it's thanks to this community that the world we're here to talk about today happened. So web assembly originated in the browser. It's byte code that is executed by a virtual machine. The VM is also referred to as the host or the runtime. And by default web assembly is purely just memory and compute, but the runtime can expose functions to the guest module and those are called host functions. In recent years, standalone runtimes have emerged like was zero, wasm time, wasmer or wasm edge. And while these runtimes can be used as in to run compiled web assembly modules, they can also be embedded into existing applications. And this is a very powerful model. For example, you can write a plugin in Rust, compile it to web assembly and embed it in a Go application. Web assembly runtime also offer fairly strong sandboxing. So in some case, we can even run untrusted code as extensions to our applications. And however, for all these capabilities to work, there needs to be a common interface that's spoken by both the runtime and the modules. And this is the web assembly system interface. So from now on, I'm going to abbreviate web assembly system interface as WASI. And WASI is the ABI that compilers can target to produce web assembly modules. And the runtimes implement WASI to provide access to system resources. In a way, it makes possible to create very lightweight containers in user space without assistance from the kernel. The host application can choose which environment variables, fast and mount points are exposed to each instance of the modules. And there are currently two released version of WASI called preview one and preview two, that are often referred to as WASI P1 and WASI P2. And at this times, compilers that target WASI have mostly implemented preview one. So we're talking about fairly bleeding technology here with a lot of active development in the space. And like I was saying earlier, we need WASI because we need a portable interface that compilers and runtimes can work with. If we only supported tool chain was the combination of one compiler and one runtime, there would be no need for standard specification. Moreover, a specification for accessing system resources is important because those resources are important. Programs need files, sockets, environment variables, clocks. I mean, I don't know what kind of useful program we can write without these primitives. So now that we have a sense of what's WASI and why we need it, Rajiv, how about you tell us about it? Yeah, thank you, Ashil. So let's start with what is Go?  So development started in 2007 at Google and it was publicly released in 2009 in Google, obviously. So Go is a multi-paradism primary language oriented towards needs of developing secure and production quality applications. It is language developed and maintained by Google as an open source project, I said earlier. So, but instead of telling you a long story, let me show you an example.  As you can see, it is quite simple. Even if you have never looked at Go program before, you will able to make sense of the code and this is a value of Go. Go is easy to pick up. Go has a very standard library, advanced concurrency primitives built in languages like Go Routines, Channels. And it's also very portable. So it compiles to multitude of targets, including WebAssembly. So the Go program is an entry point of Go Toolchain. Basically, Go Toolchain standardized how developers maintain and build their application. I have listed a few commands that I use day-to-day with Go. So as you can see, it provides a lot of standard tooling for building, managing dependency, testing and formatting the code, but also more advanced stuff like CPU profiling, memory profiling. So you can profile the program and optimize as much as you can. But Go is a lot more than a language. I mean, it's an ecosystem of high quality open source tools and libraries that largely contribute to developer productivity. Beyond that, it's also a tool with very wide breadth of application. I'm mentioning all this because when using Go, the entire tool chain is available when compiling to WebAssembly. So, Ashil, how about how you tell us how Avaji was developed in Go? All right, so since a lot of you here, I imagine are software developers, I'm sure you're gonna enjoy the story. In particular, because you've probably lived through similar ventures before. WebAssembly support was first added to Go in 1.11 and that shipped in 2018. But the Wasi compilation target was released last year in Go 121. This is five years and 10 versions apart. And that's because Go is, for a big part, developed by its community and for a while, there weren't enough contributors available to work on Wasi. And that changed in 2023 when Johan Brandhorst posted a message on the Go for Slack asking if anyone was interested in forming a team to maintain the WebAssembly port.  But imagine the situation. Four engineers who had never worked together on the Go compiler or runtime. And we picked up an abandoned branch that was started few years before to add Wasi and had massively diverged from upstream. So let me tell you, we weren't necessarily set on a path for success. Our task was first to split out the compiler from the runtime changes so we could submit individual proposal to the Go project and deliver incremental results.  And a second proposal to add a new compilation target for Wasi preview one that we called Wasi P1. And as a side note, we heard that more language are adopting the terms Wasi P1 and Wasi P2 and I personally really enjoy this cross language collaboration that we have in the community. So while we were going through the development of Wasi P1, a major challenge was dealing with the difference of interpretation of the Wasi spec in various languages and compilers. The alternative compiler TinyGo, which is built on LLVM, had support for Wasi for a few years already. So since TinyGo already supported it, I felt this is great. I could use the combination of TinyGo and WasmTime as a reference. However, the file system implementation of Wasi in TinyGo was only partially completed. So while we were working on bringing Wasi P1 to big Go, I also took a side quest to finish the Wasi P1 implementation in TinyGo in order to have a reference I could compare to. But through the perseverance of the team, and after a couple of months, we had the Go Wasm Import directive merged in, which we could use to implement Wasi P1 in Go. And as we made progress on the Wasi P1 implementation, more developers tagged along to contribute improvements. And at this stage, we started getting a lot of support from the Go team as well, and it really felt like we were gonna pull it off. And finally, the Wasi P1 target went live in Go 121, which was released in September of last year. Now I want to take a minute to thank all the contributors who have participated in creating the Wasi P1 port of Go. There's way too many to name them on the slides, but if you're watching this talk, you know who you are, and you know the amazing role that you took in making this a reality. That's truly a team effort from people when mostly never met in person. And to me, this is a great showcase of the power of open source communities. And now I'll head it over to Rajiv to tell us more about what we can do with Wasi and Go. Thank you, Ashil. So we mentioned that the first edition was a compiler directive, Go Wasm Import, and this is how we use it in Go. So the program declares a Go function signature without the body of the function and preceded with the directive declaring the names of Wasm modules and the export ex functions that it links to. So we can pass pointer in a linear program memory and other primitive types. So and compilers take care all the translation to web assembly types. As you can see, this is fairly low level directive. Only library maintainers usually care to use it. And would expose higher level API that invokes the imports. So now let's take a look at how we can build Go program targeting Wasi P1.  So we set them to Wasm and Wasi P1 to build Wasi module. And it doesn't get much simpler than that to build a Go program for Wasi P1. So in this program, the Go Asm Import directive is used underneath by the Go runtime to interact with the host. And then we run that program with runtime like was zero. We are, I use was zero to run this program. We can use any other runtimes too. So we see our, when we run the program, we see our messages in the console like hello Wasi P1. So let me talk about the use cases of Wasi P1. So there are many applications of Wasi P1. I selected this one because it highlights the plugin model of WebAssembly. So Wasi is currently primarily useful for writing plugins in any language that can compile to Wasm or Wasi and then executed in any language using Wasm or Wasi virtual machines. So there is a project called SQLC. So we generate a types of code from SQL. And in this project, they need differential plugin to make things happen like SQLC, Django, SQLC, Python, SQLC, Kotlin, et cetera. So for every release, they extract the Go, Python, Kotlin, et cetera's code gen into standalone respective particular language plugins. What I mentioned like Django, GenPython, and Kotlin, which are then compiled. I mean, basically, which are then built using Wasi P1. This allows people to customize the output by forking the particular language plugin, but not the whole repository of SQLC. Go can be compiled both as a plugin and as a plugin runner like Wasi. For example, in the case of SQLC, they can run plugins compiled to Wasi and then write their own plugins to Go and compile them to Wasi. The main reason for using Wasi P1 in the SQLC is that it's much smaller code chains. I mean, amount of code to change to write plugins. So this is the main reason they use Wasi P1 in SQLC project. So let me talk about the another use case, like we have a Kube scheduler, Wasm extension. So WebAssembly enables the execution code written in diverse language with a secure environment. And its hostility allows developers to leverage existing code base to Wasm for various purposes. And integrating WebAssembly into Kube scheduler empowers the extent of Kube scheduler functionality, like basically through custom plugins compiled to Wasm binaries. This approach enriches the Kubernetes scheduling capability with necessities to changes to code without changing the code implementers of Kube scheduler. So by embedding the WebAssembly runtime like Wasi and basically directly into scheduler, the process of incorporating the custom plugins became like very streamlined. I mean, configuration based loading and of these plugins further simplifies the, basically further simplifies the custom customizing process for users. So today the, I mean, we can extend the Kube scheduler using a scheduling framework too, but it's not trivial, right? I mean, once you develop your scheduler and there is additional deployment and configuration work together to integrate into your cluster. And this is not one time task. It needs to be repeated for every cluster upgrade. So basically the Kube scheduler to Wasm extrinsen project alleviates the burden by enabling the default scheduler to load custom plugins in Wasm. I said, you write this eliminates the challenges like what I said, like changing, we don't have to change the core implementation of the Kube scheduler or like that. So additionally, it also opens the possibility for writing languages other than Go. So now we'll head over to Arshel to tell us about the qualities and limitation of Wasi P1. Thank you. So Go is a language with native concurrency built in. And when compiling to Wasi, we use non-blocking file descriptors to integrate with the Go runtime and allow concurrent operations to make progress without blocking one another. This also integrates with other runtime features like timers. So we get access to a very powerful programming tool. A notable absence in Wasi preview one is a complete implementation of network sockets which limits supports for key features of the Go standard library like HTTP clients and servers. However, there are WebAssembly runtimes like Wasmer or Wasm Edge that have introduced networking extensions. And although these extensions are not integrated into Go, we can use third-party libraries to leverage them. And these libraries are also great examples of using the Go Wasm import directive to invoke host functions. And so now we actually have two Go compilers that can target Wasi. So when should we use one or the other? The primary reason to use TinyGo is for the smaller binary size that it produces. If you're shipping code to a browser, for example, this is something that matters a lot. Another reason is that it generally implements features ahead of big Go. So for example, TinyGo had support for Wasi long before Go did. Now, TinyGo makes some trade-offs and it won't support 100% of the Go standard library or the tool chain. So if you need the portability guarantees, this is when you should use the main Go compiler. So to wrap it up, I wanna take a quick look at what's happening today in Go. At this time, two proposals have been accepted by the Go team and are being worked on. The current WebAssembly architecture in Go uses a 64-bit address space, even though all WebAssembly hosts assume 32 bits. So this hybrid model complicates interaction with the host a lot. We're working on addressing this in a new Wasm32 compilation target. The second proposal we're working on intends to address one of the current limitations. We're adding a Go Wasm export compiler directive that would allow developers to declare Go functions that are exported in the compiled WebAssembly module. And finally, I also want to mention the work that is being done on TinyGo to add experimental support for Wasi Preview 2. So Go is becoming a big player in the Wasi ecosystem and we're always looking for more friends to join us on this journey. So if you're inspired, you want to get involved, use Wasi P1, join the Go for Slack and come talk to us. Thank you. We have some time left, so we can take some questions if you have any. Tess? Hi, yeah. Thank you for your talk. I think this was really inspiring. And if I get this correctly, like the majority or even the entire team which was working on Wasi P1 where like first time contributors to Golang, do you have advice to people who like seek their way into Golang contribution or like how did you start out actually? So you're asking as an aspiring contributor, like what are the first step to take? I think joining the Go for Slack is great by getting to know the people, offering help and also Go has a lot of material online to teach you how to become a contributor. So getting familiar with this as well. And I think there's much more than this. Like I say, we're always looking for contributors who can help us out. You can help with documentation, with testing, with more advanced work that we're doing on the runtime. So whatever your skill set is, I think we can use more hands. Thank you. Yeah, I'd love to hear what you consider like the biggest challenges in terms of the work that needs to be done. Like what areas as you go through or like is it a lot of work, but it's boring or are there theoretical areas you need to make progress in? And I just love to hear what you're thinking. So you're asking what are like the main challenges that we face in the future development of Go and WebAssembly. So like I was saying, WebAssembly, especially the way that it's starting to be used outside of the browser is very new. It almost feels like a very new field of computing. And so there's a lot of unknowns. And I feel like the most difficult part is making the right decisions to continue evolving the technology in the right direction. So that requires a lot of collaboration from different communities, making sure that all the technical choices, especially those that go into the specification, are going to be compatible with the various ways that languages are implemented. So mostly design, I wanna say. And yeah, I guess that's the main one that comes to mind. Hey, thank you very much for your talk. So I have very little experience with WebAssembly. So it's really, this has been an eye opening. So thank you for this talk. But so as a Go developer currently, if I go get the package, I would expect it to compile locally. But I saw that Go import statement, how does a WebAssembly module reach my machine for compilation? Yeah, so you're asking about the compatibility guarantees that you get when you target WebAssembly compared to other regular Go builds, right? Yes, exactly. The entire Go standard library is going to compile. Now, like I was saying, some features aren't available, like networking is only available as an extension through a third party package. Most packages out there, unless they have tight dependencies to the operating systems, will also compile and run the same way you would run them on ARM 64 or X86, it will execute on a WebAssembly host. So with big Go, you get a lot of, the experience I want to say is like almost as smooth as possible. What I would be looking for is, if your use case involves a lot of networking, that's where you're gonna maybe crumble a little bit more. But like I was saying, there's ongoing development in Wazze to address the thing. So in the coming years, hopefully we'll have a lot better support there. Okay, thank you. Thanks for your presentation.  And I would love to deploy a Wazze and Go artifact on, for example, Cloudflare workers. But it seems that I have to use tiny Go for that. Do you think that in the future, big Go will produce a smaller artifact?  Okay. So the Go, like the program that Go produces is large because we embed the entire runtime. We've got a garbage collection, right? We support full concurrency. Basically the entire language is built into the target. Now, when you look at the way whether some of the modules are used, oftentimes they are employed in very ephemeral workloads, things like handling serverless functions. You don't necessarily need all this capability when you're gonna like spawn a module, run the function to completion and then turn it down. So thinking about hypothetical changes that could be made, if we didn't compile the garbage collector at all in the target for those use cases, then potentially the size would be a lot smaller. So I mean, these are things that we haven't explored, but once again, if you want to contribute, like maybe that's an idea to bring to the table. Following up on that question, are things like Wasm GC and various other proposals that are appearing now, do they help you optimize by not having to bring that part of the language into the module? When I was talking about the main challenges being around design, this is I think an example of it where Wasm GC could almost help us, but there's a few key features that are missing to really replace the garbage collector that we have in Go. So today the answer unfortunately is no, but I'm hoping that we can change that answer in the future. Right, looks like, oh, there's one more. Thanks for talk. Parallel execution, are we, what's the timeline on that? Is it the Wasi standard that's stopping the progress on that or is that just implementation? So the Wasm spec has, sorry, you're asking about, can we do parallel execution of WebAssembly or directly from WebAssembly, right? Yeah, so in the talk you said concurrency's there. Yeah. But the parallel execution is in there. Yeah, there are more tools now in the WebAssembly core specification that open up the door to implementing this type of features, but there are also limitation in Wasi, for example, having the ability to create a thread that prevent us from using parallelism directly from like in the compiled target. So progress is being made, it will get there. I guess that's my opinion, but at this time, excuse me, at this time, you don't have any sort of like API allowing you to do parallel processing. If you're building an application that uses a WebAssembly runtime for extension purposes, you're still free to spawn multiple threads and execute each module independently, so you get parallelism that way, but you don't get it in go directly from the program. Hello, about Wasm, there's a thing about, there's multiple of them and it can be a bit confusing for you as user. So what in your opinion would be like the advantage of Wasi P compared to Wasp Edge or Wasp app and if I have like a simple application, like a gene API that's calling PostgreSQL database, just like a simple container, and I want to transmit it to the Wasp, which runtime should I go to? I'm sorry, can you elaborate a little bit? As someone, you can choose a runtime for your application goal that you want to try to run as WebAssembly application, but how are you supposed to choose this runtime between the brand offering? So if you're just using the runtime as a standalone tool and you're asking which runtime should I pick when I want to run WebAssembly stuff, right? I want to say use the one that you like. Some of them have different features, so if you need a feature that exists in one runtime, that would be an indicator of the one you should choose. I think what's more, what's going to determine your choice more is like, when you use WebAssembly as an extension mechanism, you're going to want a runtime that is in the language of your host, right? Because the integration is going to be seamless. So if your host application is a go application, you're probably going to want to use was zero because that's a zero dependency go wasm runtime. If you're developing a rust host, then wasm time is probably a much better choice because it is written in rust, so the integration is going to be very seamless. So that's kind of like the decision matrix I would use.


Welcome back to my channel guys. It's your girl Coco styles and on this channel We talk about beauty fashion and lifestyle and in today's video. I'm gonna be unboxing a purse a clutch And it's called the cloud cloud pouch from Montserr Gabrielle Let me say make sure I said that right man sir Gabrielle. I Think so I'm sorry. Um, I Like the Bottega. However, I just think it's a bit much for That bag, I don't know in my opinion, but I did see this one. I thought was really nice And I think it's very very affordable They have multiple colors They have peach. They have black. They have white. They have tan beige And I think they have like a Aquacolor if I'm not mistaken, but I'm just gonna jump right into it. It's gonna be really quick guys Because spring is coming and I know you ladies would like new clutches for the spring So it comes in this box here. I don't know if you guys can see it. It's a pretty pink color I'm see if I could slide back some it's a pretty pink color. I'm not sure Can you guys see that? I Don't know It's it's a light pink um Maybe like Pepto-Bismol pink This comes in this pretty pink box. Um, like I said, it says the name on the cover Nothing special about the packaging It does come with of course your order and It comes with a book with other bags um Which I actually like this bucket bag Almost like the coach bag They may be around the same price so you can choose whichever one you would like Actually, no the bucket It's more than the coach Little bucket, but they have three sizes. They have a mini mini a mini and then the big bucket Which is 695 which is actually really nice Um, oh This is nice This is nice It's very simple Um Enough about the book Let me just let me just show you the bag like I said nothing special in the packaging. It's just tissue paper Um Now I will say the dust bag is really nice. It's really nice material Just says the name on the front men's or Gabrielle And here's the bag. I See this is almost the same color as my YSL bag I did purchase this before the YSL bag But I love it. I think this is more It's just different. That's why I like it and let me open it up for you guys what Okay, I don't know if you guys can see this little design here I don't want you guys to not be able to see the color It has this is a beige. Is it called beige or is it called? I'll get the exact color For you guys, but like I said, it's called the cloud clutch But just it's very understatement. The name is very small here, which I love And it feels I like the way it feels There's a big snap in the middle it opens up pretty wide I'm gonna take out all of the paper and it's And I don't know if you guys can see this but the inside is also leather which I absolutely love it smells. Oh It smells so good because now there's a lot of things are not leather and I actually like this a lot So it's easy to hold because it has this little indentation. You can carry it under your arms So if you don't want to pay I Think the both paper is like $2,600 you can get something like this. I'm I am a person if I like it just purchase it But if you do want the bodega get the bodega But if you want something in the same family without getting an actual dupe I would recommend this because it is leather and the inside is leather, which I love So if you want it, you can still get some sort of insert for this one. I'm sure But it's easy to wipe out because it opens up all the way and there's one pocket It just comes with a little tag on the inside And let's see and it just tells you how to care for the bag. So Okay, let me give you some stats on this. Oh It's the biscotto color, which I believe Chloe has something similar To this color. So this is Italian lamb skin leather. It's soft as supple And you can wipe it down Which is great That's why I like because it's lamb skin. It doesn't feel super delicate but it's delicate I Don't know if this will scratch a lot, but I would say just be careful with any bag that you get That's a light of color that is lamb skin it does have a little bit of Rushing at the top under this which I love And That's pretty much it. It's a simple bottom.  So I don't go for super super small bags I think this is actually a really good size. They have a mini to this and the mini comes with a strap Again, mini was way too small for my liking, but if you are five Eight in up, I think this is a good size for you. And like I said spring is coming This is the perfect time to get all your little bags in. This is something that I would definitely wear year after year because it is a neutral color So that's what I've been trying to do get more neutral colors that I can just wear over and over and over and just kind of Build like actually been wanting to build like a clutch collection Regardless of the price honestly, so this was I'm sorry if I forgot the price guys this was Mmm, this is not the full price on here I believe Hold on guys because When you sign up For it, I think it's all five ninety five So this is five ninety five, but I paid Five thirty five So when you signed up sign up on the website, you get I think ten fifteen percent off So make sure you do that if you do decide to get it I really like the peach color and the white also. So you know, like I said it is lamb skin Italian leather Which is a plus for me. I wouldn't have to keep buying this over and over Not to say you can't buy a cheaper bag It's nothing wrong with it But at this point I'm just like when my money is going I want to be able to use it over and over and over again So, but that's it guys. It's the simple bag cloud pouch cloud clutch from men's are Garville and That's it guys. So If you like videos like this, please let me know I do enjoy these unboxings for you guys because I like to see other people's unboxings Because that she helps me if I am looking for something similar But if you like videos like this, please comment below Don't forget to hit that like comment and subscribe and join the family and If you stay to the end of this video, please comment cocoa We see you and I will see you guys in the next one. Bye


Alright, now the Nigerian curriculum or the Nigerian education curriculum is designed to provide students with the foundation they need to be successful in a variety of careers. However, the job market is constantly changing and the skills and knowledge required for many jobs have evolved over time. Whether or not our curriculum can put food on the table of Nigerians today is a complex question with no easy answers as there are many factors that contribute to food insecurity including poverty, inequality, conflict and political instability. However, one way the curriculum can help put food on the table is by providing students with the skills and knowledge they need to be productive members of the economy. This includes teaching students about agriculture, nutrition and food security. It should also include teaching students about entrepreneurship and job skills. In addition to the academic curriculum, there are several other factors that can contribute to employability such as extracurricular activities, internship and work experience. Extracurricular activities can help students to develop skills such as leadership, teamwork and problem solving while internship and work experience can provide students with the opportunity to gain hands-on experience in their field of interest. So today we're referring to Governor Francis Yngwie Firo. Yngwie Firo's comment on education and employment in his interview and we're asking can our curriculum put food on the tables of Nigerians today? Now please let's hear what you have to say. Remember you can join the conversation send us an SMS or WhatsApp to read 1803-4663. So I mean this is a very interesting conversation to have because again I think it was Wednesday last week we had a conversation around what's it called the skill for today, the skill for now, how we're going in all of those skills. And on Tuesday we faced the young people, how it seems like everybody is just the household culture, everybody just wants to make money and they don't care how to make money. So when I hear a governor talk about this, it gives me some level of excitement. It means that he understands that there is a knowledge gap, there's a skill gap, there is a huge gap in the educational system. So I mean if we really want to look at Nigeria today, right, what are the things that would put food on the tables of people? Like literally what would give, what is that job that you can do that you are guaranteed daily job? I mean daily food on your table. I can bet you that those jobs right don't really have a particular curriculum in the universities today or you know even the technical schools that are available they are a bit you know not so up to par. Because you see outside of this country, I was talking to a friend of mine how he said that you know they went to a furniture company in Canada and they wanted to put together their furniture or more. They tried trying to work because they were trying to boycott. By the time the company that sold them the furniture sent their their guys to come and install it and just give you a bill. Outside of this country people respect skills handymen are the most like literally. That's why you see a lot of DIY. They don't do DIY because they just feel like doing DIY. It's because for you to be able to get, yes, labor is expensive. So if we really want to solve the problem of putting food on the tables of Nigerians today while the curriculum was reflected, we must begin to have school of plumbing.  School of plumbing. Just go there. Maybe you do your one year or two years. You come out. There's no kind of plumbing issues that you don't have. And that kind of cost is not the one that you come out and they'll be charging you $2,000. Like let us begin to attach some level of what's the word now, respect to those kinds of jobs. Because those are the jobs that will put food on the table. So to your question, can our curriculum put food? If it is the curriculum that we have today, they say no. But let me hear your thoughts. Well, first of all, I have to applaud the government with you because right now the amount of work, I mean being that I was in the East and you know, I've listened to conversations and a lot of people have made, I have accused this governor of like putting his own people, like family members and stuff in power. And so the question is, while people, you mean we can argue about that, but that's not the point I'm trying to make. The question right now is, is he working? A lot of people in Eboni state are happy. The governor is working. Well, Anambra and Enugu and other states are struggling over state. Right now, Eboni state has one of the best roads in the Southeast, right? And the man is he puts his own people. Okay, big deal. But he's working. And the fact that he also came up with this thing, because I come to just like he said, I completely agree with him. Right now is formal education still relevant in Nigeria? No, because it is it.  Is it still relevant? My answer is no, except we value that formal education, give it the Nigeria of today. If you go abroad, then carry that your degree and come back. That's when there is value to it. Because right now, the real people who are making the money are skilled people. Whether you go to an official programming school, which is for computer people interested in gadgets and tech, or you go to sewing class, which is for designers, or you go to maybe a plumbing class, or maybe a master class on like, you don't even have to know the basics of education, just have the talent, know that I'm passionate about this, and go and follow your talent. These are the people making the money, even as little as how to sell in your local market and make money or how to sell market on Instagram. You know, so these are the educations that we need these days, because how many, do you know how many millions of Nigerians that have gone through school and came out to first class? And at the end of the day, they still, that's my view.  If we don't do that, then it's as good as dead right now. I think formal education is very basic, and it is very necessary. If you look at people who have gone to, I think Polytechnics is the one for skills and everything. And if you look at someone who did formal education, you would always see a difference. So in as much as, yes, in as much as, yes, we need to, what's the word or how do I put it?  So you need to, yeah, you need to bridge the skill gap, which is basically transforming what the Igbo people do in the bar markets, apprenticeship and all of that. You just need to make it more refined and defined. So there's a proper level one to this level two to that. But formal education is still very much important, maybe because I went to private school from elementary to university. That's why I can say that. And my university is a Nigerian university, despite it was private owned. I first heard about entrepreneurship from my university. They were very big on that. Public speaking and even skilled, they had a lot of skill. So let me help you, Mary. Because today I saw a report that says your university, Covenant University, and that's where you went. It was one of the best universities right now in Nigeria. So in the scheme of, in the grand scheme of things, Covenant University is a drop in the ocean.  The impact, so when we talk about educational curriculum, right, some of those kind of schools just exempt them because they are actually doing well and they are doing the right thing. But the bigger picture for the educational curriculum, right? And the question is how many people can afford Covenant University? I cannot, my parents cannot afford it. But let her finish, let her finish. But then for you to now say that formal education is not, because if you're going to maybe live the country or compete globally, what are you going to show for it? So the question, what's the question again? The question is that can our curriculum put food on our table today? No, it cannot. But I would say that we need to restruct, yeah formal education is to relevant and it would be nice for it to be restructured to a modern day and time. And what are we talking about? We have the internet now which has really helped to bridge a lot of skill gap. So okay, sorry, sorry to cut you. Formal education, I learned mathematics. I don't see the only relevance of mathematics in my life right now is to count money and for angle navigation when I'm driving. Maybe we should try not learning math. All right, we just tuned in to our ladies night out and we're discussing the topic and our curriculum put food on the tables of Nigerians, right, taking a cue from what the governor had said. And please let's hear what you have to say, remember you can join the conversation, send us an SMS over at 1-800-384-663. Our phone line is now open. The number to call is 070-25-007749. That's the number to call. All right, so before we went on a break, I said something should not be talking because the only reason you were sitting on this chair today is because you studied English. If you did not study English in the university, you would not be able to speak English. No, don't go there. Are you kidding me? Before, English was not even in the picture. It was love that was in the picture. I had learned, I had prepared myself to speak English right from Bani and friends, from watching TV. Yeah, so let me now get back to, I want to shade me now. So when Mary said that formal education is very basic and is very necessary and I want to tell you that formal education, it doesn't have to, you don't need to get to university to get a formal education. If we had, no, listen, if what is solid primary school education, it's enough for people. Some people say, okay, you want to now stretch in secondary school. Because even if you check your, I think I'll say secondary school. No, no, I'm telling you primary, why do you see that your politicians, they say it's basic school certificate now, the primary school certificate. That's all they need to be able to go into power. Do you understand what I'm saying? So I get the argument, where society is coming from. But you see, let me come back to the universities that I said, because I found the report, it says Covenant University, University of Ibadu and Federal University of Technology, that's Futa in Akure, have secured top ranking in Nigeria, according to Times Higher Education 2024 rating. Although, now listen, though the Covenant ranked first in Nigeria, it's 801 in the 800 and 1,000 range globally.  That's to tell you that, you see, they see a huge, Covenant might be like a shining star in the midst of the whatever that's happening. But you see, if you want to put it where global standards is nowhere near, because why? If you look at the curriculum of education around the world, it has completely changed. It's no longer a thing, and that's why you can see somebody just go and study blockchain, as a course in the university. Somebody can just go and study, you know, so like literally, they've been able to streamline it.  Let's develop that skill. And I think that's where I think the governor is going towards, you know, and if we truly looked at the problems that we had, I think even at some point, Professor Yemi Oshiba, whilst he was vice president of this country, said the same thing, that at some point they were even trying to give incentives to people that will study certain courses. Do you get what I'm saying? We have a housing deficit in this country. So we need, and I'm very happy that Akure University of Technology made it to the least, because those are the kinds of schools right now that we don't really need. We need technical schools to wake up. But now the problem is that now universities like proper federal government universities or private universities, there is this tendency to always look down on polytechnic. I know, but you see all those things, if the government now sees that... Because it's standard of the polytechnic is not... So imagine if the government decided to take those kinds of, what's it called, bull by the horn and upgrade those kinds of schools, because what we need are technical schools. We have problem of, for instance, poor planning. We have drainage problem in our country. We have gridlock problem. We have bad roads. We have all of those things. Is it because you go and study law that will solve that problem?  Or is it because, you know, we need to be able to start churning out as many handy men, technicals, guys, engineers and all of that. I think the idea of putting the interest in people's minds will be the first stage, first of all, because I think such skills are looked down upon because you hardly find successful people in that. Many years ago, when the shopping mall, when they started this chain of shopping malls around Nigeria, I remember the very first mall that was built, the Palms, that was built in Lagos. That was the very first standard shopping mall. I remember the story I heard was they imported the interlocking guys. They were living in a penthouse somewhere and all of that. They imported them and they were putting them hard end forex. But go and look at what they did many years ago. Does it still stand?  So it's two things. It's not too good. That's what I'm trying to tell you. It stands because first of all, it's two things. They understand the expertise to be able to get that because they've gone, it's a skill that was acquired in a proper way. Secondly, the job, the pay and all of those things, it was also respected. The pay was respected because again, they were foreigners.  You know why? Before you became a plumber, you would have gone to, because of your pedigree, you would have gone to different kinds of maybe international plumbing schools and all of that. So I think again, if we start to attach some level of importance to the skills that we have, it would attract the pay.   If I can command that kind of pay, they would pay me that money.  Imagine if I go to Hava to go and learn how to do plumbing. Is it the same money you want to pay? So for me, I'm looking at it.   I'll look out for passion and then I'll look out for skill. And I think it's until we start to value these things, that's when we put, that's when we are going to get people. For instance, if someone had studied maybe from Covenant University or from Hava that you come back and you realize that your passion is plumbing, typically people are going to look down on you. Yeah. You know? So why do you have to look down on a person like that? No, but you can't look down on the person. That's what I'm trying to say. You see, because it's...  Of course not. No. People will tell you you spent a lot. Do you know how much it is to go to Hava? You go to Hava. You have a difference in your delivery. That's what I'm saying. Not only in your delivery, even your confidence. Let me tell you something. The biggest problem I have with polytechnic students in this country, it is they don't have self-esteem. I've dealt, I've interacted with them. When they are talking, their head is down.  There's no that confidence. And again, it goes back to that dichotomy or whatever it is they call it, where you discriminate polytechnic graduates and all of that. But you see those things, it gets to them. So if the government is truly serious about creating curriculum that can put food on the tables of Nigerians, the seriousness to that for meal, when you tell me I'm serious, is you will go back to our technical schools and you go and revamp them. Because if you revamp those technical schools, they will be proud of where they are coming from. You start to have, yes, you start to have, and not only that, then you must set a standard.  Minimum, you graduate from this school, you are graduating as a plumber. This is the minimum entry level you can pay those people. And these things exist.  It's just that they exist in trickles. So if we start to standardize these things, the same thing with what's called your vulcanizer, for instance. If you go to a standard tire store, do you pay what you pay those people on the roadside? No. So there is gradual overhauling that is happening in the system. But you see for us to grow quicker and move faster, the government must now take it as priority to say, you know what, first of all, let's focus on all our technical schools. Let's revamp them, let's bring what's called standards in terms of equipments and all of those things to be able to get these people to be at that level. Then when you are employing them, pay them what they are worth. So here is what I'm thinking, right? Because let's not forget this informal education or like Mary, like you mentioned, the apprenticeship system that has been there in Igbo land for a very long time. Like for instance, if an Igbo man who works in the mechanic raises somebody else who works in the mechanic, right?  Well, you can pay the roadside mechanic who knows what they are doing. You can pay them, let's say, like 55,000 there or there about, do you understand? Why would we choose to look down on that particular roadside mechanic who is excellent in what he does and say that that is not, what do you mean? I said he is excellent in what he does. He is excellent in what he does. So how do we rate that he's not successful? My point is not even about looking down on the roadside. My point is that can we get through the stage when we standardize every roadside mechanic?  Yeah. Do you get what I'm saying? Where the government will provide a decent, you know, so like... Which also, it still comes back to maybe delivery is not the right word, but then that would boost their confidence.  They would be, they would take it as a job, do you understand? Because okay, they're just doing it like, anyhow, anyhow, that's just what I'm doing.  This is what I'll do.  Trust me, if that guy... It's a hit or a pocket too. It's a hit or a pocket, but you know that I like paying for a good service. So listen, I like a system. I get your point. Very valid point. However, I like a system of governance or a retail system that gives me options. Right? So if the government makes everything, have a workshop and let us still have our option. No, no, no. No, no. No, no. No, no, no. They are leaving like... No, it's not. I'm not saying like, if one thing they are brought, the mechanic shops, right, they are still standards.  There's a car wash up, you're spending $30.  So I'm just saying that whatever regulation that if it's in the future for them, they should still remember, like, you know. So let me explain what I mean. So for instance, if we had this very skilled mechanic that is great at his job, right, can we begin to identify those people and raise more skilled people, then we must be ready to pay. Sanzee, we have to be ready to pay. You can't change the narrative. Because again, it is also the way it is approached. So I have a carpenter that I bring in from the north all the time. Before now, just do small, small, small jobs. Now, you know, I am happy to see that he takes on jobs in millions. This was somebody I never dreamt of that he could do anything. But it was also because of the way I first of all recalibrated his brain. Standardized brain. You can now see how far he can go with it. So it is hitting my pocket because I have to pay him the premium price. But guess what? It has changed his approach to work. So let me tell you something. If we truly want to standardize things, right, and stop all of these things that we're seeing, where we're finding people going into robbery and all of that, let us even say even basic skills. You know, and that's where you will not start seeing that people will stop cutting corners. Let me take our collar for the day, girl. Sorry. Not that soft, man. Good evening, you know. Are you there? Hell, is it there? Sorry, yo. Go ahead, Sanzee.  However, okay, I'll give you an example of the step-out market in the East, right? Hello, are you there? Yes, I'm here. Oh, yeah, go ahead, take it, yo. Yes, you see, this your discussion today is quite confusing. However, I just want to put something in. You see, I still believe that in whatever we do in this country, especially Nigeria, we should not look at how it's been done abroad because most of our things come with kind of tradition and the way we've been brought up and how it works for us. I mean, I don't know when to do what to do and how to do at a certain time. If you, or any time you're going to the market, I don't know the market that you go to, you get the chip. I don't know the market that you go to, you get the cost there, but the services will be better. That means you get the cheaper. Maybe you need to hook up the gutter to assess it and maybe it will not be as neat as the other place. However, you still have a choice to choose wherever you want to shop and where you want to shop. So it is with every other thing you want to do, even if an organizer would want to go get the cheaper cost there. But the major thing I want to stress on is that creating a level environment for any age of business in this country is very, very important.  They go straight to what they learned, what they learned in school and start making money from it. But you know, if this is our country, if we don't carry out the Google, Google, Google all in your books, nobody will see you as dedicated. But for me, I believe that if they can create a level environment and make sure that it's well-matched, that nobody will be seen as a graduate, graduate and graduate, whether for the polytechnic or university, it boosts confidence. Therefore, we, that are the people that have patronized them, we already know where to go to get the cheaper. So we make our choice that we choose whenever we want to choose. After that all, I need to thank you.  That book helps a lot, a lot, because yesterday, I don't even know if I've read it before. What's the name of the book? Scale at Speed. You'll see some of this topic coming in that book. Thank you very much. Thank you young guys, old man, who will look for your book. I don't think I've seen that book. The truth is, what he said, all right, what he said makes a lot of sense because there is like different kinds of intelligence. There is emotional intelligence and really in any service you're rendering, the basics you'd need is intelligence, how to deal with people. You know, there is that, how to deal with people is, is, is basic.   I don't think it's relevant anymore. What I'm saying is, instead of that, create or rather give priority or, or something to the polytechnic. So it doesn't even have to be polytechnic. Maybe to work. Yeah, I'm just making my point. The point I'm trying to help Sans is to understand. And young guys, old man, I know that we are used to cheap, cheap things in this life. I can bet you for free. It took a long time to stop.  I'm much less and much less. I don't have that time. When I beg you, how much is the discount you're going to give me? If you don't understand me, I beg you. But I'm saying that if we really want to change and upgrade the lives of a lot of people in Nigeria, we must standardize things. And standardizing things come at a cost. So let me explain. Now, let me explain. Okay. If your government tomorrow decides to say they want to standardize plumbing, for instance, as a profession, it means that they would, they would, I mean, what's called set up at a standardized Institute of Plumbing.  That people go there. So anybody that graduates from that place, first of all, there is a value chain. They are building houses everywhere. Wait, would you not rather have a professional pay that premium, that won't be solving the cage problem one day? If you don't understand what I'm saying, no, here is my point. That standardization has to do with territory. If you standardize it and say, okay, ne, ne, ne, ne, ne, the average plumber... Right? So if, if, if a plumber in Lagos ends about, let's say, 500,000 a month, based on this is the plumbing office and whatnot, right in the East, you know, People are not making up to that amount So the standardization for me is that it has to be territorial Okay, territorial Agnoufi Agnoufi, get ahead My head is hurting me But I think this was a good conversation We will try to bring it back I will try to bring it back Even the youngest of us will say we are confused Alright, so thank you so much Sanji, thank you Mary Before we go, I assure you follow us across all our social media handles And wish you Africa you can interact with us for the drop your comment and more important people who are engaged in social media Like share and invite your families and friends to watch and follow the conversation Oh my goodness, our educational curriculum in Nigeria lacked relevance due to shortage of specialized teachers on conducive learning environment for infrastructure facilities and lack of funds in Nigerian certificates and are more appreciated than the capability Oh God, sorry Good evening ladies, one of the men that did the interlocking stones at the palm shopping mall resided at the 1004 penthouse Fundamentally, it was the polytechnic training he had Okay, we will see you guys tomorrow What did we, our course for today? I am sure you will go and find it It's from the governor of the Boeing State Which makes a lot of sense


There's been a huge decline in mental health around the world, which is why we are so committed to creating more content than we ever have. Thanks so much for being a part of our journey. Do you have a toxic family and you're not sure what to do? Having a toxic family member can be detrimental because family is supposed to be defined by love and support. This is a betrayal of the highest order and something if left untreated that will haunt someone for the rest of their lives. It's difficult to even admit a family member is toxic and the treatment isn't easy. Although we do recommend reaching out to a professional for help. Here are a few tips to ponder while you decide what to do. Number one, make clear boundaries for yourself. We know that it sounds simple to say, hey, I like this and I don't like that. Then you're right, it does seem straightforward, so why does this toxic person continue to be able to cross those boundaries? It might be that due to fear being worn down or not realizing that it's happening, you haven't made the boundaries clear. The problem with toxic family members is not only that they know you well, but they exercise that knowledge regularly to get at you. They know where all the thin spots are. Clarifying a boundary is like adding an extra fortification or making your house out of brick rather than straw and filling in all the gaps. So you need to be super clear with yourself on not only what your boundaries are, but why? Give it some backup. Know that your own limit is because toxic people will overstep that boundary repeatedly. So you'll need to determine for yourself how much you'll put up with before you know it's time to walk. They might rush you before this event has been set properly, so don't worry about failing the first few times. With practice, you'll be able to hold your own. These boundaries will also help to remind you that you have not only the need but the right to protect yourself from these attacks. This means when you cut a call off from your body-shaming mother or block the number to that sibling who keeps cursing at you or demeaning your life, you can understand that it's right for you. You've had enough. Number two, distance. We mean either emotionally or physically because physically isn't always realistically possible.  What gifts, you ask? The gift of you. The gift of knowing anything meaningful about you, like your interests, goals, secrets, or memories. Those were things you previously shared with them and they responded by repeatedly, maliciously, using that information to hurt you. They have proven themselves undeserving, so you get to stop the flow. It's okay to say you don't wish to talk on a subject or not answer a question. If you must speak with them, you can have cordial contact, also known as keeping them at an arm's length. This is where conversations and emotions are purposefully superficial, pleasant, and all about them, since toxic people are usually all about themselves anyhow. You can remind yourself this is being done on purpose for your own protection and sanity. You're not giving in to them. If possible, you can have low contact, where you interact only at large occasions, like weddings. Then there's also no contact, when even low contact has become unbearable. Don't worry about when if they've changed. Once toxic family members catch on to what's happening, they'll redouble their efforts to force poison down your throat, letting you know that nothing has changed, in fact, they're worse than before. The most important thing to remember in all of this is that it's not your fault that they did this to you, despite what they're screaming at you. Their repeated abuse, despite all your efforts to appease them or talk to them, is effectively a foot shoving you against the exit. So take the exit and let them deal with the outcome themselves. Number three, don't argue or justify. You know the drill. It's been a blissful week of peace from that condescending gaslighting family member, but then a call or email will come, and it'll be something that seems to require conversation. So you, being compassionate, ask them what's going on, and it devolves into drama and arguments. Alert! You might want to fight back and provide proof to support yourself. Admiral Akbar says, it's a trap. Oh yeah, he knew what was up. This toxic family member has reeled you into a staged argument they know and will ensure you can't win. Their goal is to make you feel low so they can proclaim superiority. Battles need to be chosen carefully. Determine what arguments and battles are actually for real need to go to war, and which ones are drama and self-made pseudo-emergencies. These emergencies are false and solvable by themselves, but they want to feel the power puppeteering you to their bidding. It's OK to decline being suckered in. You can then conserve your energy for other things like your own life. Number four, hold strong to yourself. You need to be your own anchor and lighthouse. Having that strong, solid sense of self means accepting and understanding that no one, including yourself, is perfect, and that you still know who you are, regardless of snacks along the way. We understand you can feel shame or guilt, but knowing yourself lets you know what to do about it, or even if it's warranted. Did you purposefully and consciously act with malicious intent? When it comes to that toxic family member, chances are pretty good that you didn't. There is nothing shameful or bad about simply being yourself. You do not need the approval of that toxic family member. Maybe ignore all of those well done son movies. You only need the approval of yourself for yourself. All those degrading mean things said by toxic people are usually projections of their own shortcomings that they aren't mature or wise enough to deal with. They instead do the cheap, cowardly move and dump it on others. Their incompetence is not your fault nor your problem. The rock that is you knows it doesn't matter that a mistake happened.  In fact, it lets you know where you get to uncover more knowledge. And number five, find support. No man is an island and people work better together. Having and building that support net to catch you is important, even necessary. These are the people you know you can lean on when you're in toxic families, attempts to recapture you get hard. Support can also come from a therapist or program as well as new friends. You have nothing to do with your family. Healing and breaking away from abuse is a process that takes time. Be forgiving and patient with yourself. This journey will have you looking deep into your core and more closely at others. A breakage needs to happen before you're able to start rebuilding. And you know you have the strength to do it. Nobody, including you, deserves abuse. And you are worthy of so much more. What other advice do you think could be helpful? Are you trying any of the tips we talked about? Discuss and share in the comments. Thanks so much for watching and we'll see you soon. Take care.


Welcome back to the Tracy Johnson show presented by Buffalo Wild Wings. I'm Sam Murray join now a Stevenson women's ice hockey head coach Tracy Johnson and coach Team started winless in your first seven games of the season. You're now unbeaten in 11 of your last 12 Talk about the resilience of your team as a whole Yeah, I give the credit 100% to the players because that is a difficult stretch to have to go through and I knew that Scheduling it also that it was going to be challenging, but they've really risen to the occasion and Just persevered through that that tough beginning and have turned things around and I think that that adversity early on has made them a better team and a Better and closer family Yeah, now that you're getting down to the end of the season all games are big games It was a big UCHC series this past weekend versus Utica you won one tied one talk about your performance in those games Yeah, really proud of the team for playing against a really tough really physical opponent at home and you know both games were very physical and I just felt like our team did a great job of of playing through it and Just staying gritty staying resilient everything that they have been You know the whole season and obviously ideally you don't want to give up that lead in the second game But regardless, you know that there's huge three points for us And I'm really proud of the team for that talking about the resilience of your team to be mentally tough at the in the overtime period Your team took two penalties So you're essentially almost killing on the penalty kill the whole the whole overtime talk about how mentally tough that was for your Team to get away with the tie. Yeah, I tell them all the time being on the PK you have to have a warrior mindset There's really no other way to put it You have to be willing to block shots take them for the team stop and start sometimes You're out there for a minute minute and a half and play through that and they just did a great job and kind of adds to Just how proud of them I am moving on to this weekend You host a home-in-home series versus Lebanon Valley both you CHC and Mac games your home on Friday Which is also a whiteout cancer game talk about the importance of hosting a cancer awareness game. Well We talk about it a lot on our team on you know being a part of the program is bigger than just the game of hockey it's bigger than any one person and You know cancer is something that I think everybody either knows someone or knows someone who knows someone who's been affected by That and you know, it's a good opportunity for us to really Support a cause and and recognize and honor those that we have lost or the ones that are still here and battling and You know, we're just looking forward to Bringing an emotional game for sure But bringing the energy to supporting a cause like that and talking about the game itself What are what is the key thing going into this matchup versus level that you want to see from your team? Ah, it's similar to what we talk about every week. It's it's a


It is said that eyes are windows to the soul. Proptometrist Lt. Col. Deborah McNamara, these windows are key to revealing an issue affecting an average of 1.7 million Americans each year. Vision disorders are common with traumatic brain injury and a lot of times people have a hard time explaining what's going on with their vision. Using an intern at the clinic, Lt. Col. McNamara demonstrates some of the vision tests used to evaluate those experiencing a traumatic brain injury. They do not have good binocular function. They might start to see double or some blurring or they have a head tilt. This might be causing some of the symptoms that they have. These are things that we can work on and perform vision therapy and make them able to function better. The earlier you get someone in for an eye exam and have those conditions addressed that the better off they're going to be. Tech Sergeant Bert Treanor, Longstool, Germany.


The bog on North Lake in Legionville has caused problems for months now as crews continuously try to work to move it. With the Legionville Safety Summer Camp approaching, time is of the essence. On Sunday, the Minnesota DNR worked with the Lakes Association and the American Legion to help move the middle section of the bog. Volunteers with boats on the lake joined in the effort as well strapping their water crafts to the bog to help pull it away. The bog was so heavy that it needed to be cut up into several smaller pieces to get it to move. It goes to show you what a community does when everybody comes together. We had lots of boats out here. We did have a pretty good wind, so we wanted to make sure we had boats on the outside so as soon as it was out, it wouldn't get away from us and we could contain it, push it over where it belongs. There were people staking down as we put pieces over there. There were boats starting to pull out, there were boats controlling it. It was just a great day. Only a third of the bog was moved, causing the Legionville Safety Summer Camp to be canceled. Many camp activities take place in the water and organizers knew the bog would not be moved in time. Nearly 600 kids were scheduled to attend this year, but families and organizations are expected to get a full refund. Safety was the major concern over why the camp needed to be closed this summer. Teenagers are teenagers. I mean, I remember when I went to camp, you know, you kind of sometimes do things you probably shouldn't. The temptation would be there to say, wow, let's all go meet on the bog. And if you fall through that thing, you're probably not coming back up. The Legionville Camp plans to make improvements over the summer and the age restriction will be extended to 14 years old next season. This is the first time Legionville Safety Summer Camp has been closed since World War II. If you enjoyed this segment of Lakeland News, please consider making a tax-deductible contribution to Lakeland PBS.


Aaron, what did you see from King there? Well, Breguin got him first pitch, you know, base hit. That is what it is. And then he had, when he had two strikes with Diaz, I think he just, he left his breaking ball, kind of hanging on the inside part of the plate. And that's, that's ultimately probably the pitch to kind of beat him there. Obviously did a great job to give himself a chance there with a couple of huge strikeouts and got a chance to get out of the inning and breaks a bat. And they just kind of found a hole with it. So a good job there. But, you know, obviously the Diaz mistake is the one that ultimately hurt him, I think. Understanding there's probably no play or a tough play at that. Should Gleiber have went over there and covered second? We looked at it. I don't think with where we had him played, I don't think we were going to have a chance to get there. In the ninth inning, it didn't seem like you ran particularly hard down the line. Is he okay physically? He's okay. The losses like this before here, is it just a matter of two good teams fighting? Yeah. I mean, it seems like every game, you know, kind of comes down to this for the two teams.  And, you know, I thought we did a good job of scratching. I thought we had actually good at bats against Javier today, too, you know. And had a chance to break it open and a couple of good at bats from, or not break it open, but punched through by Carpenter and Gleiber there. You know, where they hit the ball hard. But couldn't, couldn't get through there. And, you know, but, and then their bullpen was pretty tough against us today. Obviously we were able to string a rally there late. Was there anything the judge could do differently there in the third inning when he gets doubled off first? I mean, if you react perfectly, the thing is, if you flinch at all or any momentum, just kind of the perfect way it was hit where it's on a line. Gurriel's momentum is coming into the bag. And if he reacts properly, he's probably sticking his head into the ball, too. So it's kind of like, that's the stuff that you're going to get. And that's probably more often than not, unfortunately, going to be the result. You got to just react perfectly, stay underneath the ball. Yeah.