So welcome everyone, and thanks for joining. So my name is Daniel, and today I'm going to talk a little bit about securing serverless function with the QuarkRest Kubernetes extension. You guys have some experience with developer, some application. Are you a developer or? Oh, cool. Have you heard about the QuarkRest before? Really? Yeah, pretty cool. Yeah. I just remember myself. My name is Daniel. I'm working for Red Hat, a technical marketing major, and then I could develop out-of-kid, specialized current and runtime like QuarkRest and Spring Boot and Node.js, and a little bit try to give some more time to integration, serverless, and some smash to Kubernetes, because I am a CNCP ambassador as well, to evangelize a lot of Kubernetes thing with developers and DevOps engineer and a lot of stuff. Here's my contact information like a Twitter and my YouTube channel and my published book and give it for Sarah just feel free, still whatever you need. So let's get started. So at the very beginning in almost 10 years, more than 10 years, like 2016 actually at a time, the Amazon Lambda on reach of the world to provide serverless capability. At a time, like a normal company needed to buy the big jump of the physical server, virtual machines, something like that, to run application for your business requirements. So serverless, that's not actually serverless, you probably know it's a server full in some area like Amazon's data center or Google, some like that. But for developer perspective, they don't need to worry about infrastructure layer, just develop your application code and deploy it and that's it. The other all that's something we'll take care of by SaaS platform like Amazon Lambda. After that, a few years later, more and more enterprise company jump into the market. Because this is one of good proof, this is not a one-time happening. So a lot of company like a big enterprise companies and startup company, even open source project in the community jump into the market. Like IBM Cloud and Google Function and Azure Function, and serverless.com and recently Kubernetes, K-Native. So how do you get started if you really wanted to design or develop serverless functions, and where is the right place to start? Your application architecture based on serverless capability. Maybe you can go to CNC landscape. I don't want to say I am CSP MBA, so that's why I promote this one, but this is a really good place. There are so many tools like platform and frameworks, even managing the platform and then also manageable on your hand. Also, there are a lot of security complying issues. So whenever you design or develop Microsoft's architecture and Microsoft's application, you always think about security, how to authorize your Microsoft's API, how to handle that like for example, as part of a DevSecOps, you always think about how to integrate your security capability or feature as part of your DevOps pipeline. That was one of the big responsibility of the QA team or system administrator team, but now it's one of the big duty of developers. So now, when you have some chance to design or develop serverless functions with the Java technology or even another language platform, you already always think about and consider what kinds of technology or tools frameworks should be considered for your serverless function application. So the problem is too many choices in this landscape. So for me, I am developer advocate, but sometimes I will be more spend a lot of time to develop application as just normal developer. Whenever I try to start a new project, I try to find out the right tools, the right project in open source communities. But when I go to here and there are a lot of tools and the framework in open source project, and then sometimes I spend a lot of time to figure out which one is appropriate to my cases. So this is a common issues for IT decision maker, or IT leaders, or a developer team lead. So we need something different to fix these issues, or solve this problem, so a little bit more for developer perspective rather than IT ops team. So I'm going to stop the presentation, and let me write into the right demo how it works, and then today I'm going to showcase Quarkus in terms of how do you develop serverless function with the Quarkus framework. So Quarkus is just new Java framework like a Spring Boot. So it's not app server, it's not heavyweight middleware, just a Java framework, and then totally 100 percent open source project, you can actually use that, but it's really more focused on cloud native and Kubernetes native. We can say as you see here is one of my favorite hashtag Kubernetes native Java stack, because Quarkus was born since Kubernetes on reach up in the world. So still we have a lot of cloud native Java stack, like a Spring Boot and Kotlin and then something more, but these all language platform and framework were born for Kubernetes, which means there are still some gap to optimize your Java framework, even not Java. That's why a lot of developer really choose Go or Node.js for developing a serverless function rather than Java technology. But here's the question is there are more than 15 million Java developers around the world, and then the last of the last of the enterprise application already developed based on Java technologies. What if you could use the same Java technologies instead for your advanced serverless or sub-smash application development, it would be awesome. So that's why Quarkus focus on that points. So I'm going to stop presentation here. So this is a terminal window.  You can just select some of the dependency and just download Z file and unzip and then open that project, your pre-pro-ID tool like IntelliJ VS Code something like that. That's what you are doing usually. But I'm going to use new command line. So KN is the Kubernetes native command line. KNative is one of the prime build pack. I mean to manage or develop design, your Microsoft application as a sub-less, we can call that KNF serving on Kubernetes. So that's why KNF and the KNF command line actually includes a function capability. It's still a little bit already stagey so we can call that KNFunk. And then you can actually KNFunk and then you can have a few command line here. So like create your new function project and then delete to deploy and build a lot of steps. So I'm going to use just two command line today. You can actually do more but I'm going to try to showcase how simply you can generate sub-less function project first and then deploy into Kubernetes cluster. So pre-fundamental one-on-one basic stuff, but it's still worth running your sub-less function experience today. So I'm going to create to use the first function KNFunk, create the function name like a Quarkus. Let's say QuarkusFunk and then select the runtime. So KNAT function capability actually provide multiple runtime like Java and JavaScript and go Python and Node.js, TypeScript, et cetera. But today I'm going to use Quarkus and that's it. Once it was created and then you have automatically created your project under this directory. So once you go to QuarkusFunk and then you can find that this is a Maven project. So we have some plan to generate Gradle as well, but at this moment we have only Maven architecture and a structure to generate this project. The one interesting is the little bit different thing between the general Maven project versus this one, there are the one Funk YAML file here. So here is the function name QuarkusFunk, you can actually name that whatever you need. Then this indicated your actual namespace where you want to deploy your application on Kubernetes. Then here's a runtime Quarkus and then you can select any other one and I'm going to showcase the radar. The image is once your packaging is application, and then the tag will be all wired here. So the KNFunk command line actually use BuildPack so one of the CNCF project to package and build package your application and once again containerize it and push it into your external container registry like a Docker Hub or a Queda.io or a Google Container Registry, something like that. Then lastly, the BuildPack command line, the tools to push this application to Kubernetes. It's using one of the Kubernetes manifestor, which he already generated during the command line execution. So here's interesting stuff. So there are build map, which means that you can actually select two different types of the builder. So one is JVM, so traditionally, Java create the bytecode and running on JVM, and then this is a really heavy way to run like a subreddit platform like Amazon Lambda or Google Function, and even Kubernetes KNF because it's a Java was designed for dynamic capability, which means once you package your Java code and then you can run any app server, it was awesome back in 1995 over internet technology. But we changed the infrastructure from just a simple app server to immutable infrastructure, aka Kubernetes, which means you just deploy one single microservices at once, and then scale out 1000 parts in one cluster. This is happening every single day.  So same working happening all the time, maybe a thousand time, maybe a hundred thousand time, it's not productive and not efficient. So that's why Quarkus get rid of that thing and then put in a shift into build time rather than runtime. And also the native compilation. So it's super fast and the small memory footprint, you use based on ahead of time build strategy rather than just in time build strategy based on Java technology. So Quarkus, you can actually packaging application as a native executable like a EXE file in Windows server system or just go program language. You don't need to JVM any longer to run the Java application, but it's just pre-compact. So for example, you have one let's put API application, it takes maybe one second to start up time. But with the native compilation, it takes 10 milliseconds, almost maybe 100 times or 300 times fast then. And memory footprint is maybe 80 megabyte for memory footprint when you run the JVM application. But when you run the executable on the GRIVEM it takes maybe 4.5 megabyte as a memory footprint. So that's why the Quarkus provide a native compilation and get rid of a lot of repeatable tasks at runtime, which is really fit in serverless function architecture. Okay, so let's try to open this project. Just to make sure how the sample application are generated. So here's my VS code. So a little bit dark here. Can you see the code? This is my Quarkus theme on VS code. So from the JVM file, let me try to a little bit bigger here. Okay. And then here's just the application. So function and just input output is JSON message, just very simple, just like a hello world stuff, but you're going to use JSON rather than just text string. And here's one interesting stuff here, the function. So you probably know to implement a RESTful API in Spring Boot using like the request mapping or something like that. And then Quarkus provides the funky extension, aka dependency. So this Quarkus funky extension allows developer to write those one code and then deploy multiple serverless platform. So once you create the serverless function and then you can deploy multiple serverless platform. For example, Kubernetes Knative or Amazon Render or Azure Function or Google Function. You don't need to change the code. You just only edit or update your configuration, which is like a target information. Here is Google, here is Amazon, here is Kubernetes on-prem, some like that. Because the lots of enterprise companies try to move forward to multi and hybrid cloud infrastructure and strategy. So to accomplish that technology or strategy, so portability is a really good consideration. So just imagine that the one of the big benefit or trace that you wanted to take the container packaging technologies, which will give you portability and immutability as well. So once you packaging container image and you can run any infrastructure running on Linux operating system or Windows server system. You don't need to change that. This is a huge benefit of a container. So same thing and then we, the Quarkus actually provide the same capability with the funky annotation. So which is the funky annotation, this annotation will make your Java method as a serverless function and deploy to serverless platform. For example, when you deploy this serverless function to Kubernetes, it will automatically generate KNAV YAML file, which includes some of Kubernetes KNAV manifestor like a build configuration or deployment configuration and like a CR something like that. That's it. Then here is the application properly here. So here is the, I want to explore if you have multiple functions, and then this time I'm going to expose this function. For example, you can actually deploy one function at a time to Amazon Lambda. So to do that, you need to specify that. So I think that's all and then let me try to change a little bit this configuration. So the currently Quarkus community opens us a project. It's released last week, two, two, three. So let me try to use race to one because there are awesome feature here, and I change the bar.xml, and I just save a file and then go back to function file, and then here is the command line. You can actually use the Maven command line, Maven, Quarkus, and Dev. So this is one of the great feature for developers. Quarkus, one of the beauty of the Quarkus is live coding capability. So whenever you change the code like in a roof development, every single day you have to change the code for bug fix or implement new capability or enhance like a performance issue. Then when you change the code, you need to review, recompile application, and then restart your runtime like a Springboard or embedded the Tomcat, or NetE, et cetera, and then retesting like a unit test, or you can just go to web browser and then try to check the capability or feature manually just whatever you prepared the way.  That's it. That's the end of the development. But if you could get rid of that boring but necessary job like a review, recompile, and repackaging thing, and the framework like a Java framework will take care of that burden for you. Automatically, it should be awesome. So Quarkus that we can call that live coding here. So as you see, here is live coding activated. One interesting here, the test is paused and then when you press R, it will resume testing. So many, many NL project architecture really emphasize on test-driven development. Whenever you create a new feature, you have to add a new unit test on your application project. But most people, most developers just skip that, because I don't have enough time to add my test code. Because I need to more focus on developing actual business function or capability, and skip that, and because it's working on my local machine, and once you push that code into the Git repository, and then some of the developer on your team try to pull and clone and try to add his or her feature with your application as a part of the integration test, sometimes it fail. It should take maybe half a day or one day to figure it out and fix that problem. That's why the test-driven development really important to avoid that potential issues. So Quarkus actually solved that problem with that. So when you press D on your terminal window, I can have some, let me try to do a little bit smaller. So here's your Quarkus WUI. It shows the more visualized and graphical way of what happened on your runtime, for example. So you can put in a lot of dependency on your Maven project or Gradle. I just put in this library, I just put in this one, and then after three months you cannot remember which libraries, which dependency are really necessary. Even sometimes you just copy from your team's project and then try to add your own features, and then you don't care about actually which dependency are really needed to develop your application. So this is a graphical way to find all dependency here. So whenever you add a new dependency or a Quarkus site that we can call the extension, it will show here automatically. One interesting is here is a Compic Editor. So you can see all Compuration, it's not only about application Compuration, it also shows all Compuration which are running on runtime like an infrastructure layer. So you can find here, we're going to use a packaging type, legacy char is already defined by default and a lot of stuff here. Then here is the, you can actually see the open terminal, and then when you click on test running and it automatically run your unit test. Then whenever you change the code, it's automatically retesting. I mean, you can continue testing. You don't need it to maven, battle file or similar the CI CD pipeline shouldn't be triggered whenever you change the code. So let's try to call the endpoint or something like that. I'm going to use like an encode, like this is JSON format. So like a message key and a parameter, like a welcome to Quarka Session at Summit. I'm going to use the HTPy tool and local is the default port 8080, and then I think it's done. Okay. So now I got to welcome Quarka Session and Summit. Then when you go back to here, and then you can actually change anything. So for example, an output message, and then maybe you can just simple like a test, Daniel, my name, I just save a file and then back to the here and just echoing, and then now you can see the different results. But in the meantime, I don't actually try to recompile, repackaging, review, and restart the runtime. So this automatically restart, restart, recompile by Quarka's framework. So for developer perspective, you don't need to care about that any longer. And the one interesting here, when you go to terminal window, and then you've got to fail the test continual testing. Because when you go to test unit, here's my two test unit tests here. So like a hello, and then something the hello message based on Cloud events. So this is the expected result, but actually my application function is working as you see when I call HTTP call. But your test is actually fail. But if you don't have any continual testing capability inside your Java framework, maybe you just skip that. Oh, it's working, application is good. And then move on to the next feature, or just commit it and push it to the container GitHub repository. So this is maybe some of the potential issue. So you can actually quick fix that problem. So I'm going to go back to the function, and then I'm going to try to use the default one today. So this is a really simple thing, and I just make sure that my generated project is working. So I just run this one and just find that it's working. So why don't you try to add a new function? Because I just change my one of the methods. Some people really be doubted. Oh, yeah, maybe why don't you try to add a new class or new method, and then it'll be still working like a live coding. So let me try to showcase that thing. So to do that, let me try to add a new function here. To do that, maybe I want to, okay, let's try to deploy. Okay, here we go. So let's try to deploy this function first, and then I'm going to change the function, and then add the security capability. So back, I'm going to stop my local environment, and the next step, the second and the last command line KM-funk, and deploy, and I'm going to set it on my external container registry. I'm going to use quay.io. You can actually use a Docker Hub, whatever you need. And I'm going to set namespace. So here is my OpenShift cluster, which is based on Kubernetes, the race version. So here's my namespace here, the quarkasfunk.sec, there's no resource here. I didn't deploy anything at this moment. Now let's try to make sure that we are already same the IgJag namespace here. So queue namespace here, it should be a lot of namespace will be shown up. Okay. So I just stay in the quarkas-funk.sec. So it's the right place, and then I'm going to use KM-funk, deploy, and just set it on my container registry, quay.io, then your O3, and namespace, quarkasfunk.sec, and then I'll put in the verbers. So when you run this command line, it actually trigger the build pack, which is one of the CNC project. It's the first of all, this build pack tried to build packaging this application like a Maven compiler, or Maven packaging something like that. After that, containerize the application like a container image and then push it into that container registry I specify in command line, and then it's tried to deploy Kubernetes. As you see, KNAB serving has become ready. When you go back to our VS code, and you go to Funk.io file, and now you can see namespace is automatically replaced based on from command line, and the tag, and the stream, etc. When you go to target directory, and then there are quarkas, and then some of the resources here. So all of the related resources are automatically generated, and back to the terminal. Now we have the route URL, the endpoint to function. Let's copy that, and then back to the terminal. Yeah, now we got a new quarkas application here, and then go to view logs. Oh, it's too, maybe too small, and then here's a quarkas version, and then here is the JVM running on time, and then here is the a little bit not good resolution, but it's a 0.85 second to start off. It's a pre-faster than any other traditional Java stack, still on JVM, and then back to top-large view, and then it's already terminating because the Kubernetes Knave have scaled down to zero configuration, which is a default 30-second. So if you don't have any request, like on-demand request to the serverless function in 30 seconds, it will be scaled down to zero automatically.  So back to the here. So the same, but I'm going to copy the endpoint here, and let's try to de-follow like a common session with cube, and I just hit fire the endpoint, and as you see, your parts automatically start here, and then it's already running, and back to here, we got to have a new output. So this is really easy for developer to create your function project and deploy. I just use the two command line for this demo, and then but in the meantime, I spend a bit more time to explain how it works, and behind the scene, what happened inside that, but still I use the two command line, and then I'm going to deploy one more thing, but to make it differentiated, to deploy an application, I'm going to change the icon here. There are label, push IO, and runtime, equal workers. Okay. So now we have one serverless function based on JVM, and the other one is I'm going to secure this application back to the here, and go to application. So corpus actually have Kubernetes extension which means when you use Kubernetes like a resource like a compiler map or a secret, which is a really good feature to secure your application part. For example, you don't want to store sensitive information like a database username and password on your application. You need to get rid of that thing from application and shipped to your compiler map or secret. So this is a really good security strategy. But in order to do that, you may be generate your own YAML file, and to bind from application to Kubernetes resources. But corpus actually provide that capability on your Java application. You don't need to generate the boring YAML file, sometimes you miss some indentation, and you win the Kubernetes thing. So to do that, first of all, I'm going to add a new corpus extension. You can actually search cube and there's cube config and I just edit it. It's automatically pull down all dependency. When you go back to Palm XML, and then you can find here, all right, here is a new extension automatically downloaded and then back to the application, and let's try to add something like a config properly in the name. It's like a username. I'm going to set it up string valuable like a username. Let's try to add another one, the name is password, password on a string variable like a password. It's pretty simple. I'm going to create a new function, something like that, and then the default function name is equal to your method name. So you can actually specify the default function name, but I'm going to use a secret function name, and then the public method, and then return is like a map type in string and function name. Let's try the same thing, and then create a new hash map, map and new hash map here. I'm going to put the new value of here map to put, and one is like let's say the key is the db username something like the username, and the value is username, and then put it on the password same thing. Let's say db password and password here, and then return the map. Okay. I'm just here. So it looks good, import that thing, and yeah, looks good. Then we're going to use this credential, the method, the function name. So to do that, go to application property, I change that, and then I'm going to use the secret which he already existing or you will create the secret on Kubernetes. So this is the terminal window, and then when I go back to my open cluster, there's a secret menu for developer, and then here I just already create a default secret, and I'm going to create a new secret here. So to generate the secret name db-credentials, and then just a real-all username admin and the password secret just for the task, and I just create that and then back to the here and then now you can have the db-credential, and you can actually see that what is actual value here, the password, the secret, and the username admin, and then back to the here and then db-credential, I just copy, I'm not going to do type of thing today, back to the application, and then here to add a new secret enable. So this compuration allows developer to bind your Java application to remote Kubernetes secret. So first of all, I'm going to make the enable this feature, and then the second thing is, I'm going to specify the secret name, like a db-credential that I created just a little bit ago. Now back to the funk-yaml file, let's try to change that function name, like SCC, print the data, and here the image name and the function name is your name. So just this, that's it. Now back to terminal window, funk-deploy, and then I'm going to use the same registry, so I don't need it to change that, it's Burbers. Oh, yeah, different here. So use that deploy and Burbers. So in the meantime, let's try to just quick show, create to help the what kind of option type here, you have more. So as you see, the runtime, you can actually use Gold, Node.js, Python, and Quarkus, and Rust, Springboard, and TypeScript, and also there are the template. So today we are using HTTP, just call like the request response, but you can actually generate Cloud Event Messaging Processing when you generate serverless function. So sometimes you needed to deploy serverless function with the event-driven architecture like a back-end Kafka server or something like that, with the using Cloud Events. The Cloud Event is showcase common messaging format, because some of the developer wants to define JSON format for event-driven messaging, but some of not using JSON format like a binary or like a product above something like that. So there are a lot of different types of messaging format to communicate among the event-driven application platforms to avoid that kind of problem, the Cloud Events actually provide the standard events format. So back to the terminal, it's already deployed here, and then go to here. So we have a new SCC, the new format serverless function, which already include capability or security. So it's almost terminating. Let's try to give it more like a few seconds, it's totally scaled down to zero, and then we're going to hit the route URL, and then it will automatically start up like a serverless behavior. So it's just done in the click on route URL, and then back to here is QuarkUSA application automatically start, and then you've got to have the return JSON format like a DB passwords, create a DB using an admin. So very simple, this is not real in a project use case, I have to admin, but I'm going to try to showcase how easy to generate serverless function project still using Java Frameup and then deploy. Just to comment right, in the meantime, you can actually edit security capability to use Kubernetes config or a secret, you can actually add a lot of stuff. So let me try to give it a try the one more thing, go back to here, and then you can change that, I could try to new function name, I'm not going to change any source code, but putting the new function name native and then image name native, and then the builder is not going to JVM by using native, and then back to the here, and then just one more time deploy. It will take a little bit longer than previous build because native compilation, it takes a little bit longer because it brings everything related to libraries and dependency and capability in single executable file, and after that containerize that. So native compilation and native executable, you don't need to use every single time for your application development because it depends on what kinds of workloads and application pattern you needed to implement for serverless and it should be good with the native compilation, but you don't need to compile this native compilation thing on your local motion every single time. In reality, you just put this on your CI CD pipeline or key of action or your DevOps pipeline, and so developer only focus on live code and JVM stuff, and once that finish that just trigger your pipeline and then that pipeline will execute the native compilation. But there are small differences JVM and native compilation. For example, if you bring the third-party dependency or library into Quarkus, it could be working on JVM, but it couldn't be working on native compilation because there are some Java reflection issues. So that's why the spring native actually tried to fix the problem. Then if you have some experience, so 10 to spring one in September, and they have announced the roadmap to release spring native and spring six, and spring three, boot framework at the end of the next year and then some of the beta or maybe beginning of next year or middle of the next year, but there are a lot of stuff they have to figure it out. So let's keep this on and I'm going to back to my slide deck to wrap up today, and I'm going to back to my window here. Okay, I have four minutes. All right. So once again, Quarkus is opens as a project and then we'll be more focused on Cloud Native and Kubernetes native Microsoft application development and pretty much focus on serverless and functions. Then with the Quarkus, you can actually pretty easy get starting with the serverless function development, writing code and the packaging, and it will bring to your serverless platform. I just use the Kubernetes today, but you can actually use Amazon Lambda and then a lot of stuff.  Then here is the phone key extension support serverless platform like Amazon Lambda here, and then Google Function and Azure Function. So when you use Amazon Lambda, you can have a native compilation capability as well, but Google and Microsoft Azure Function, they don't support native compilation at this moment, and I heard there are some plans in the future, but not at this moment. Then as already showed today, the Kubernetes client and the Kubernetes config and the secret, a lot of stuff you don't need to create your own YAML file to define your Kubernetes resources or a manifestor, because when you print your Java code, it's automatically generate that YAML file for you. Here's my YouTube channel beneath URL Daniel TV. I already created a lot of the technical videos, just like today video, and not just Kubernetes. I just deploy this function to Kubernetes and then I just change this tiny of compilation and just run to Amazon Lambda or Azure Function. It's a pre, like just 10-minute video, and there are a lot of stuff, technical video and tutorial. Feel free to subscribe to my YouTube channel and just let me know if you have any question, the technical demo or opposite technology including CNCF stuff. So if you are more interesting in Quarkus journey, here is a bit in URL, try this Quarkus is 100 percent free, self-paced learning portal, and the code.Quarkus.io, the code generator, similar thing to spring initializer, and here is the IDC report. This is a showcase the performance comparison data between spring boot and Quarkus, like throughput and response time, and the memory footprint, et cetera. So I recently published with my colleague, the new e-book is you can actually download the free, and it's a Quarkus for spring developer. So spring have a lot of use cases, like a data transaction like a JPA, and then persistent and REST API manager, et cetera. We can compare the between that thing, so it'll be helpful, something like a practice. Thanks for joining today, and I'm going to back to just give me one second. It's just run and back to the window, and here's the native, and try to click on, it will scale up to Quarkus application, and then go to view logs, let's find that, okay, here we go. So it's a native compilation, and then here is 80 millisecond to start up. So previously we have 0.75 or 0.85 second, but it's 80 millisecond, it's almost 10 times faster than start up time. Okay, so thanks for attending today, and have a good rest of your summit.


cleverly concealed his internet browser history, what teenage girl didn't wear out the pages with the dirty parts in Judy Bloom's novel forever? What young boy didn't silently weep into his pillow each night at the thought of dying before he was able to cup a naked breast in his hand? And what young reader boy or girl couldn't relate to this passage about another character in the chocolate war one rolling the goober to bear. The goober was beautiful when he ran. His long arms and legs moved flowingly and flawlessly. His body floating is at his feet weren't touching the ground. When he ran he forgot about his acne and his opulence and the shyness that paralyzed him when a girl looked his way. Even his thoughts became sharper and things were simple and uncomplicated. Often he rose early in the morning before anyone else and poured himself liquid through the sunrise streets. And everything seemed beautiful. Everything in its proper orbit. Nothing impossible. The entire world attainable. When I first read that passage back in 1976 I thought, yeah man all things aren't possible. All things except, and I think you know where I'm going with this, allowing a student like me to study Robert Cormier's novel in my seventh grade classroom. I finished the book and I wrote a positively glowing endorsement. Yes, every kid should read this. And I gave it to my mother to hand into the school war. But even as I wrote my words of praise on behalf of the chocolate war I swallowed a realistic dose of despair. I knew my words would end up like horror. Jerry Reynolds at the end of the novel battered, bloody, bruised, and on the way to the hospital in the back of an ambulance. The lions would win. David would whimper.  It's a really good book. And that's why I'm honored to stand here today nearly 40 years later and speak publicly, finally, on the book's background. So to all the Mr. Puckers of the world, I have just one thing to say. Let our children read and decide for themselves. Let them run free through pages where everything seems beautiful, everything is in its proper orbit, nothing is impossible, and the entire world is attainable. Thank you. Please welcome Janet Fox. We'll read from the absolutely true diary of the I chose this book to read portion of, not only because it's a gorgeous book and one of my favorite books, but because it speaks to so many issues that young people face. Issues of diversity, issues of bullying, issues of being not normal or not acceptable in the community. And he does it so good, like with humor, and wit, and a profound sense of self. A warning on the first lines, and this is a little bit raw and offensive. You know what, it's offensive in ways that are beyond the world. Hey, Chief Rogers said, you want to hear a joke? Sure, I said.  I felt like Roger had kicked me in the face. That was the most racist thing I ever heard in my life. Roger and his friends were laughing like crazy. I hated them, and I knew what I had to do, that I had to do something fake.  I wasn't just depending myself. I was depending Indians, black people, and buffalo. So I punched Roger in the face.  I struck some fake karate pose because I figured Roger's gang was going to attack me for bloodying their leader, but they just stared at me. You punched me, Roger said. His voice was thick with blood. I can't believe you punched me. He sounded insulted.  I couldn't believe it. He acted like he was the one who'd been wrong. You're an animal, he said. I felt great all of a sudden.  Maybe I was telling the world that I was no longer a human target. You made me after school right here, I said. Why? He asked.  Because we're going to finish this fight. You're crazy, Roger said. He got to his feet and walked away. His gang stared at me like I was a serial killer, and then they followed their leader. He used. I had followed the rules of fighting. I behaved exactly the way I was supposed to behave, but these white boys had ignored the rules. In fact, they followed a whole other set of mysterious rules where people apparently did not get into this fight. Wait, I called after Roger. What do you want, Roger asked? What are the rules? What rules? I didn't know what to say, and so I just stood there, red and mute like a stop sign. Roger and his friends disappeared. I felt like somebody had shoved me into a rocket ship and blasted me to a new planet. I was a freaky alien, and there was absolutely no way to go home. I'm going to not get any more release on that. I understand that we don't have any visuals, so I wanted to know how many people have read this book. All right, so you know that there is a bit of movement in it. I'll show you at birth and times. I chose this book because I am a big fan of Marie Sindat, and I first discovered in the night kitchen in a children's literature class that I took in college. I was so surprised to find out that he had written a book that was considered very controversial, and of course had to read it. When I was looking at the information about why it was banned, I discovered that the book actually came out in 1970, and almost from the moment it hit library shelves, it became a target censorship. The critics said that it contained gratuitous nudity, and it could be the foundation for future views of pornography amongst children that have been exposed to. It remained a part of a list that the Young Earth and Library Association kept of the top 100 most censored or challenged books, and it was on that list for a number of years. I was just reading recently that there was a suburb in Chicago that after 30 years of having had banned it, finally was going to allow it back in an elementary school library. Unfortunately, in some instances where it actually wasn't removed from library shelves, people, school principals, teachers, and even librarians went ahead and expurgated it by drawing clothes on. So in the night. Did you ever hear of Mickey? How he heard a racket in the night and shouted, quiet down there, and fell through the dark, out of his clothes, past the moon and his mama and papa sleeping tight into the light of the night kitchen. Where the bakers who baked till the dawn so we can have cake in the morning, mixed Mickey and batter chanting, milk in the batter, milk in the batter, stir it, scrape it, make it, bake it. And they put that batter up to bake a delicious Mickey cake. But right in the middle of the steaming and the making, and the smelling and the baking, Mickey poked through and said, I'm not the milk, and the milk's not me. I'm Mickey. So he skipped from the oven and into bread dough, all ready to rise in the night kitchen. He kneaded and crunched it and pounded and pulled till it looked okay. Mickey in dough was just on his way and he made himself an airplane. Then the bakers ran up with a measuring cup, howling milk, milk, milk for the morning cake. What's all the fuss? I'm Mickey the pilot. I get milk in the Mickey way and he grabbed the cup as he flew up and up and up and over the top of the milky way in the night kitchen. Mickey the milkman dived down to the bottom singing, I'm in the milk and the milk's in me. God bless milk and God bless me. Then he swam to the top pouring milk from his cup into the batter below. So the bakers, they mixed it and beat it and baked it. Milk in the batter, milk in the batter, we bake cake and nothing's the matter. Now Mickey in the night kitchen fried a cockatoodle-doo and slid down the side, straight into bed, cake-free and dried. And that's why, thanks to Mickey, we have cake every morning. There's going to be some Captain Underpants on the day of the movie. They had to ask me if I wanted to participate in this wonderful event. I immediately pried that I wanted to read one of the classics, Huckleberry Finn or Kill a Mockingbird or Captain Underpants. And I scored really big. I was really good with Underpants. Captain Underpants is the most challenged book in America in 2012, 2013. That, according to the American Library Association's Office of International Freedom, I suspect it's well on its way to being the most challenged book in 2014. Very interesting book. I read Captain Underpants, I suppose, about 20 years ago, my daughter's in children's librarian and she makes sure that I get the really good books. Captain Underpants tells of the adventures of two fourth-grade boys, George and Harold. The boys are authors of the comic strip about a superhero they named Captain Underpants. And that's based on the observation that superheroes run around in their underwear and when George and Harold decide to create one, they add that. So their superhero also runs around in his underwear. Captain Underwear flies around wearing loneliest briefs in a red cape, saving the world from such monsters as the talking toilet or the inevitable monster. A creature spontaneously comes to life from the school lunch food that children throw away. In addition to their literary endeavors, Harold and George are pranksters. So you get a feel for their entertainment, so let me read a section from the book. See, where are we? Yes, there you go. Remember I said that George and Harold's Silly Street got them big, big trouble once? Well, this is a story of how that happened. And some huge pranks and a little white veil turned their principal into the coolest superhero of all time. That was the day of a big football game between the Hurwitz Mumbleheads and the Steubenville stinkbugs. The bleachers were filled with fans. The cheerleaders ran onto the field and shook their pom-poms over their heads. Thank you, Edward. A fine black dust lifted down around them. Give me a K, shouted the cheerleaders. K, repeated the fans. Give me an N, shouted the cheerleaders. N, repeated the fans. Give me an A, ah, ah, ah, two. Ah, ah, ah, two. K, repeated the fans. The cheerleaders sneezed and sneezed some more. They couldn't stop sneezing. Hey, shouted the fans with bleachers. Somebody sprinkled black peppermint in the cheerleaders' mom-mom. I heard them do that. The cheerleaders stumbled off the field, sneezing and dripping with music mucus, and the marching band took their places. But when it began to play, steady streams of bubbles began blowing out of their instruments. The phones were everywhere, up and down in the field, the marching band slipped and slipped, leading behind a thick trail of bubbly foam. Hey, shouted the fans with bleachers. Somebody poured bubble bath into the marching band's instruments. They did that, asked another fan. Soon the football team took the field. The knuckleheads kicked the ball. Ah, ah, ah, went the ball. Higher and higher it went. The ball sailed into the clouds and kept right on going until nobody could see it anymore. Hey, shouted the fans with bleachers. Somebody filled the game ball with helium. I wondered who did that, asked another fan. The missing ball didn't make any difference because at that moment, the knuckleheads were rolling around on the field, scratching and itching like crazy. Hey, shouted the coach. Somebody replaced our meat-eating muscle rub, lotion, with Mr. Prankster's extra scratchy itching time. I wondered who did that. Saw the shout of the fans and the bleachers. The whole afternoon went on much the same way, with people shouting everything from, hey, somebody put sea monkeys in the lemonade. Hey, somebody glued all the bathroom doors shut. Before long, most of the fans and the bleachers had gotten up and left. The big game was forfeited and everybody in the entire school was miserable. Everyone that is, except for two given boys, crouching in the shadows beneath the bleachers. Those were the best friends. Yeah, laughed Carol. Yep, chuckled George. There are me building art at the top. That's for sure. I just hope we don't get busted for this, said Carol. Don't worry, said George. We covered our tracks pretty well. There's no way we'll get busted. And of course, we get busted. That's a pretty difficult incident, or incident from the book. And it's interesting that this book is challenged as the author Dave Wilkie notes, there is no vanity, no sex, no nudity, no drugs, no smoking, no alcohol, no guns, and no more violence than it did for superhero cartoon. On the other hand, it's not hard to see why some people would object to this. There's an ample amount of disrespect for authority, pranksterism, kids having fun. And there's an ample amount of scapological reference, most of it in the kind of terminology that we parents use to toilet drain our children. But it comes out of the potting toilets in Professor Pooby Bants and references like that, which apparently people feel they need to object to. Why should we encourage people to read this book? Well, it's very fun. All of us used to thank fart jokes were very funny. Some of us still do. And there's nothing wrong with the healthy bit of risk with respect for authority. Most important, look like Captain Underpants lets children enjoy the joy of reading. This is a fun book. Particularly those little pranksters who are often the most reluctant readers of the ones that we can hope will read Captain Underpants, learn to enjoy reading, and get the habit for the rest of their lives. So Persepolis is an autobiographical memoir by Marjane Satrapi. She starts talking about the Islamic Revolution in 1979. And all of the cultural changes that she had to go through definitely talks about nonconformists and our family breaking norms. As far as my research goes, the Chicago Public Schools banded last year because of the torture scene where one of the guards is urinating on a prisoner. In today's day, where we have people being headed in the same area for the same sorts of reasons, I don't understand what this book can be made. It is definitely parallel to what's going on. So I'm just going to read the first couple. This is me when I was 10 years old. That was in 1980. And this is a class photo. I'm sitting on the far left so you don't see me. From left to right, we have Masheed Narheen Meena. In 1979, a revolution took place. It was later called the Islamic Revolution. Then came 1980. The year it became obligatory to wear the veil at school. We didn't really like to wear the veil, especially since we didn't understand why we had to. It's so hot out. Execution in the name of freedom. Give me back my veil.  Ooh, I'm the monster of darkness. Idiot! And also because the year before, in 1979, we were in a French non-religious school where boys and girls were together. And then suddenly in 1980, all bilingual schools must be closed down. They are symbols of capitalism. Bravo! One wisdom of decadence. This is called a cultural revolution. And we found ourselves veiled and separated from our friends. And that was that. Everywhere in the streets there were demonstrations for and against the veil. At one of the demonstrations, a German journalist took a photo of my mother. I was really proud of her. Her photo was published in all the European newspapers. And then I could see that my mother was really scared. But she dyed her hair and wore dark glasses for a long time. I really didn't know what to think about the veil. Deep down, I was very religious. But as a family, we were very modern. I was born with religion. At the age of six, I was already sure I was the last prophet. This was a few years before the revolution. You see, before me, there have been a few others. I wanted to be a prophet because our maid did not eat with us. Because my father had a catalan. And above all, because my grandmother's the way to survive. I have all the women who are interested in me. But you have with us and listening to someone read it again in this context is all going to prompt to go back to the end of the video with more appreciation this time. I want to thank all of the committee who have been standing together. And I think they're all here now. So right now, thank you very much. Thank you very much. I'm going to have this speaker on the other video. It's a nice thing. I'm just a little bit more comfortable. But I'm going to have this speaker on the other video. So everybody, I'm going to have this speaker on the other video. I'm going to have this speaker on this video. I'm going to have this speaker on the other video. Thank you so much. Thank you.


A nicer version of the person that hurts you cannot heal you. When someone hurts us, a parent or a teacher, a leader, a pastor, a friend, a partner, when someone hurts us, we cannot then move the responsibility for our healing to someone that we think is a nicer, better version of them. Because when you keep substituting, the person that hurts you with someone you think is a nicer version that won't, I promise you that stuff gets old and runs out because only you can heal you. And I want you to break the pattern of looking for substitute healers that are gonna fix you. Dig deep and do the work once and for all that makes you stop looking for substitute healers and moving around in your life trying to get someone else to fix you. They can't only you can.


We finally got reception again Outside we finally got reception again by our house. We finally got reception again period But anyway This it's not about reception as y'all can see I'm at work right now And it's the first time in a long time. We got to do one of these videos without Hopefully getting interrupted but anyway Team keep it clean was going on the same grave in here with another video and We are here to talk about briefly. It's gonna be quick. Everybody. What's going on? Appreciate y'all coming through man Oh, perfect when I see in a minute man. Hope everything is good man. Appreciate y'all. Thank you But really quick just to get into get into it because I don't have much time The Ravens did put injured Danny Woodhead on it or they put him on injured reserve, which was not a surprise to anybody The guy came out there on the first drive and showed that he was definitely gonna be a big part of the offense Oh, you at school right now. All right, man.  He was in there for one drive and on that for a very first drive He got hurt and then end up having having to come out the game But and that that took him out for the game He made a big impact on that first drive too because if not for him who knows how well we move the ball on the first drive As you saw throughout the game, but you know, we had a good running game But anyway, um Danny Woodhead is done for now. I don't know if it's for the year, but he's done for now And They activated Jeremy Langford from the practice squad So a lot of people were talking about that when we first signed Jeremy Langford to the practice squad a lot of People kept saying engraving watch out. He might end up being a starter or engraving watch out He's gonna be on that 53 man roster before you know it. So y'all were right. Y'all were right. He's there. He is there So what he gives us is a different element that we really don't have And which is speed he gives us more speed at the running back position Something that they said they wanted and they have now. So let's see how they use them They activated them today is Well today is Thursday already that's crazy today is Thursday. So I'm sure he'll be playing On Sunday, I'm sure he's gonna be on the active roster on come this Sunday. I'm sure for whatever Seven guys. I mean, no, it's the eight guys It's the eight guys are seven guys that they don't that don't dress out of the 53 man I think it's seven out of the seven guys that won't be dressing on Sunday I think he will not be one of them. I think he's gonna play But this is all opinion right now, but I know Ravens usually like they usually like three running backs on active Right like they had on Sunday they had Terrence West Buck Allen and Danny Woodhead now then Danny Woodhead went out so we were down to two But we didn't still get it done with those two because they ran out that clock Beautifully that was one of the most beautiful Ravens games I've ever seen because it just it's just something that like I said, we're not used to me We weren't used to that. We weren't used to seeing the Ravens Actually run out the clock while they're up We weren't we weren't used to that. It was crazy, man. I couldn't even believe like I'm still in shock from that game I'm still in shock because I'm used to us having to lead and then making like Throwing like a bad pass or something or having a lead and just getting stuffed down after down after down after down after Down when we try to run I was just so used to that especially the past couple years because you know It's been such a struggle and not saying that this year won't be a struggle because That's only one game. So I don't want to get all like I don't want to get all like oh Super Bowl after one game because it's still At least it's still 15 regular season games left. So we still got a little while But anyway, that's a great way to start off. So definitely no complaints on that part But um Danny Woodhead man, he's going Jamie Langford gets called up. So we'll see what happens with that We'll see what happens. Anyway Look forward to him from how y'all feel about that. Y'all know how I feel I like it. I like it. I mean, I felt like it was a move Some people are saying that they thought the Ravens gonna gonna we're gonna go to the outside for running back I didn't really see that happening. Especially when you got when you got a dude that started On a team and he was a successful starter You don't just you don't you don't go out and try to get it from somewhere else If you already got that like right there like on a team already I didn't think there was a point in that but um shout out to my boy vegan king vegan king I know he was talking about Reggie Bush I said that would be different, but I had completely forgot that Reggie Bush was even in a league But yeah, so We promote from the inside Which was a good thing. So hopefully Jamie Langford comes in gives us a spark And the spark that we continue to need with the running game I mean, well, we actually had a pretty we had more than a spark during the game last week We had actually a fire that was lit. We had a fire that was going and it Didn't get put out because that running game kept working like over and over and over and over and over um but anyway Saving for the playoff picture push No, I mean if we need to run it back now, we need to run it back now We can't save anybody or you told my save Danny Woodhead Langford player as Langford player is a good backup to Jordan Howard in Chicago last year. See there we go man But anyway, yeah, I'm gonna go ahead and get off of here now appreciate y'all That son is out man. That son is out, but you know what? I ain't I ain't got no uh I got no complaints because it's better than the hurricane being out So we got great weather here now. Um, but anyway, appreciate y'all watching. Thank you. Um, again I even introduced myself this whole time me. I'm engraving vids and this is my youtube channel engraving vids and i'm a ravens fan, but We talk about everybody you're on here, but especially ravens though So if you're ravens fan, make sure you subscribe if you're just a fan of the football game Make sure you subscribe and If you're a fan of the heat not the Miami heat were literally the Miami heat not the basketball team, but Yeah, make sure you subscribe and turn notifications on I'll leave a like on the video too. Anyway On that note, I'm walking into some shade right now Uh, but that shade is gonna go bye. Bye real soon because I still gotta walk back into work. Anyway, appreciate y'all man I'm going and I'm out. Bye


Whether you're 16 or 40, coming out is never easy.  Have you figured out that you're a part of the LGBTQ community but you're not sure how to tell people about it? Here are eight things you need to know before coming out of the closet. It doesn't have to be perfect. It's okay to feel anxious. It's perfectly normal to feel nerves or even anxiety when you're thinking about coming out. If the thought of making the announcement itself is what scares you, just remember that coming out doesn't have to be a grand event. Some people may feel empowered by coming out parties and Facebook posts, but it can be as intimate as you need it to be. You don't have to do it alone. Coming out doesn't have to be something you have to handle on your own. It's perfectly okay to have a friend or a loved one, someone you've already come out to, to accompany you in situations that may make you especially anxious. This can include telling your parents, extended family, or even a group of friends. Choose the right time. When coming out to close friends and family for the first time, it helps to have their undivided attention before bringing up something so important. It's not the best idea to come out during major events like weddings or baby showers, or while the person you're talking to has their minds occupied with other activities. It's also probably not a great idea to bring home a brand new partner to shock your parents with. Coming out can be an emotional time for every party involved, so it's important to give the person you're talking to attention and private time to help them internalize what you're telling them. Before we continue, we'd like to thank our partner, Two C Cosmetics for sponsoring this video. Two C Cosmetics blends her advocacy for the LGBTQ community and her passion for makeup to create a line of cosmetic products that shows your inner mermaid. Just like Ariel, the little mermaid wanted her voice to be heard, a lot of people going through transition have been made fun of or been told that they aren't real women. In the end, Ariel made a sacrifice to make her dreams come true. You should never be judged for who you are or who you want to become. Check out the link below for more information. Don't put yourself at risk. There are situations in which coming out can mean jeopardizing your own safety. Remember, your safety must always come first. If you fear that coming out to someone could harm you in any way, socially or even physically, then don't do it. Unfortunately, there are people that may not be accepting of your coming out.  If being openly LGBTQ at home is not a safe option for you, or even if you feel ostracized or shamed where you live, it's important to look for support and comfort elsewhere. Search for any LGBTQ-friendly community programs or alliances near you, or speak to a counselor to discuss your possible options. Throw away your expectations People's first reactions may not be the ones you wanted or expected.  Some people might be completely shocked, while others may need some time alone to digest the information. Others may have already seen some clues that you were LGBTQ, and may tell you that they had a feeling. Some people may treat the topic very casually, as if it was just some cool thing about you that they didn't know. Whatever their response, try not to judge them and be patient with how they handle your news. A true family bond can't be broken by sexuality. Don't be so hard on your parents. Some parents know their children are queer before they themselves do, but other parents may have a different life for their children planned out in their heads.  You're going to have children naturally. You would never know the hatefulness and fear of homophobia or transphobia. While the world still has a long way to go in the equality department, your parents need help to understand that you are who you've always been, and your life for the most part doesn't have to change. Be open with them. Explain your feelings to them. Don't be upset if they react with sadness or disappointment. Sometimes we get caught up in thinking that it's everyone else's job to try to see things our way, but your parents aren't perfect. They need help understanding too. Prepare yourself for questions. Be open to questions. Know that the people you came out to may ask questions, lots and lots of questions. Sometimes they may not always feel appropriate. In fact, they might feel it tad invasive, but they're just curious. They're just trying to gain an understanding of your newly proclaimed identity. Note that while it's important to be open and willing to educate those close to you about yourself, you also don't have to feel like you need to explain everything. There are some things we would rather keep private. There are others we don't always know the answer to. Just be patient. Coming out never ends. Heterosexual people don't have to walk into a room and shout, Hey, I'm straight. And you shouldn't have to either. We often don't understand how much our sexual and gender identities play into our everyday lives until we realize we're queer. Do you talk about your girlfriend when all the other girls in the room are discussing funny things that their boyfriend said?   Coming out can be daunting, and sometimes it feels like there are a hundred reasons why we just shouldn't do it at all. But once you're ready, there are a thousand reasons why coming out can be amazing. Coming out is never easy. The most important part is being confident and true to yourself. Do you have any coming out advice that you'd like to give? Let your fellow Psych2Go readers know in the comment section down below. National Coming Out Day is October 11th, and it's been around since 1988. Thanks for watching, and also don't forget to check out our sponsor in the description down below, www.twocosmetics.com.