Hi everyone, Joe for jaspyscasebreaks.com coming at you with 2020 Leaf Metal Draft Football five box number 11. This is the left side serial number break So we just go directly to the left side of that slash and you get a block of numbers It's pretty much a random number block break big. Thanks to these folks for getting into it. There are the numbers right there Let's roll it. Let's randomize it five into three eight times for each list one two three and Eighth and final time after eight Daniel down to Derek eight times for the numbers and Eighth and final time after eight. We've got eight down to seven All right, so Daniel with eight Jamie with one Jason with five Ryan with nine Derek with six Ron with two Chad with zero Bill with three Derek with four and seven. Let's order these numerically Now remember Chad will get any and all redemptions even if it's a one-of-one redemption Jamie will get live one-of-ones in this Any trades and here are the five boxes right here now TWC trade window closed Let's print. Let's rip. All right, so there's the final print out right there hot off the presses Break number 11 and now that the draft is over We know what NFL teams these players are all associated with as well Which will be helpful when we do this mixer a little bit later. All right, Colin Johnson nine out of 25 that'll go to Ryan and the number nine Redemption going to Chad that'll be chase young nice Who knows what parallel or variation you might get with that chase young there you go We got Jonathan Taylor Thomas 31 out of 40 We got Jake from State Farm armed and dangerous autograph 27 out of 40 and touch down Kings Nice Jerry Judy Touchdown Kings Two out of three out of fives and under get the train whistle Ron with the number two All aboard the big hit express Are there any non numbered cards Jake from went to Derek Jonathan Taylor went to Jamie Chad with the zero and then number nine Ryan with that one nice good start now There is a chance there may be non numbered autographs if there is any non numbered autographs will just Will randomize them separately I guess we'll randomize them like if these what if this was non numbered That'll be the name on top then the second name will get that one third name so on and so forth if they were not numbered I'll make it make it easier for everybody. We've got Kelly Brian 10 out of 60 so directly to the left side of that serial number Chad with zero We got Joanne Jennings 13 out of 50 that'll be for Bill in the number three We got K. J. Hamler 18 out of 35 that'll go to Daniel in the number eight and AJ Dylan 15 out of who ended up getting AJ Dylan Jason with number five Packers I think and Jonathan Taylor touchdown Kings 12 out of 15 that'll go to run the AJ Dylan once again number five goes to Jason L We've got James Morgan. Sorry James James Morgan two out of two. That'll go to Ron Hollins All aboard We got Eno Benjamin Eight out of 35 going to Daniel Posey We've got Joe Reed 23 out of 60 going to Bill in the number three Chase Claypool 11 out of 15 Jamie with number one nice CD lamb state pride card And that is 12 out of 15 Ron with the number two Nice CD lamb. All right two more to go and got Cam Acres TD Kings Seven out of seven Derek Molanson with number seven We got Stefan Gidry 13 out of 35 going to Bill in the number three Tenacious the Kenneth Murray 11 out of 40 going to number one Jamie we got Steve Steven Montez two out of four Ron with number two and all aboard the big hit Express whoo-hoo and we've got J. K. Dobbins just kidding Seven out of 15 going to Derek Molanson with the just kidding Dobbins All right, and the fifth and final box. Good luck. We got Donovan Peoples Jones 15 out of 20 going to Jason and the number five we have Kelly Bryant Three out of three Bill with the number three All aboard TD Kings Levisca Chanel Jr. Nice 17 out of 60 that goes to Derek and the number seven and the last no second the last one is Brian Edwards, so I think yeah, he went to the Raiders right South Carolina guy one of one Jamie All aboard the big head Express and The last one finally is Jordan Love 10 out of 10 Jordan Love the future perhaps Chad with number zero and there you go boys and girls Nice five box break of 2020 leaf metal draft football. Thanks for watching. Thanks for breaking with us I'm Joe. I'll see you next time for the next one. Bye. Bye


Hello. Welcome. It's after lunch, so I know it's a tiring time for people. You've got to stay awake for all these talks, and I suppose just for the avoidance of doubt, this shirt does not mean I've lost a bet. It means that I'm winning one, so I'm happy. But Natalie and I are here today to talk not about awesome, violent pink boola shirts, but about bill packs, and in particularly customizing the bill process around bill packs. What we want to do is introduce a couple of features that some of which you may know, some of which are very, very, very new, in order to customize the bill packs bill process. So what I'm going to do first is go into a really short demo, and then we'll go into kind of an overview of the rest of the talk, and we'll dig into dive deeper into each of those features. So the question always I try and ask myself the question is what what problem are we solving? And the problem that bill packs are trying to solve is given my application source code, how do I get an OCI image at the far side? That's it. Given my application source code, how do I generate an OCI image, aka a Docker image, something that you can deploy on top of Kubernetes, something that you can do a Docker run with or a podman run or whatever your run time at chosen runtime environment is. Now, how many people here have used our pack tool before to generate an image? Can I see some hands in the air? Oh wow, it's roughly about half the audience. Fantastic. That's more than we expected. We must be doing some good work. Fantastic. So I've got a quick example here of using pack to build an image. Now, the typical user experience with the pack command line tool is simply pack, build, and then your image name. I've explicitly here decided to put in the dash dash builder to show that we're using the Pequetto builder in this particular instance. Now, we'll talk a bit more about builders and the entire build packs ecosystem in a bit, but it suffices to say at the moment that there are multiple providers of builders. Build packs project is a vendor neutral CNCF project. There are providers from Google, Heroku, VMware, and other people that I've probably forgotten already, which is good. But whatever builder you're using, the output image will have the following similar characteristics. The output image is going to be small. It's going to be as small as is possible given and peck in only your application's dependencies. The output image is going to have a full software bill of materials. We know about the build process because we're controlling the build process. And because we control the build process, we can tell you what version of the Go compiler was used to build your Go application, for example. So the S-bomb is pretty neat. Interestingly though, we have byte for byte reproducibility on images. So that if you build an image, and then if you don't change your application's dependencies, and if you rebuild that image, you will get byte for byte reproducibility on that image. Now, that's particularly interesting for experimental workflows, whether they be in science or whether they be in data science or in other kind of regulated industries. And the byte for byte reproducibility allows us to deploy some fairly advanced caching strategies.  So your application source code might change, but that layer doesn't necessarily mean to need to change. I'm going slow, sorry. We don't use root when we're building, which is very important. Natalie will come on to that a bit later. It's particularly important if you're the person providing the build form for your application developers, that's me, I, and I don't want to give people root on all my boxes. Then Natalie will talk a little bit about rebasable images. But what we've done here in this demo is built a multi-language application. The application here has a Go back end and a react front end in TypeScript. What's been produced in the image is an image with two entry points, and you can spin up each of those entry points. We can spin up the default entry point, which runs the back end, and we can spin up the entry point called Web, which spins up the front end for this application. And you can see a screenshot of it in the bottom right. Now, that image, the buildpacks.io image, I'll come on to in a little bit in a few slides time, but you can see the amazing hello world that is returned as the payload from the back end service. So what we have done is we have built reasonably quickly, just pack build example, a multi-language application from a Mono repo. And just a little bit of word on what goes into that build and then what comes out of that build. What goes into that build is your application source code. And you saw me explicitly use a dash dash builder. What is a builder? Well, a builder is, again, just an OCI image. It's an easy way for us to distribute collections of buildpacks. In addition to the collection of buildpacks that's distributed on the builder, it will have a build image. That's the image that the buildpacks actually run on whilst they do their work. And the builder will generally contains a pointer to a run image, which lives generally on a registry. And that's run image is the run image that's used as the base layer in your output application image. As I said, if we start and have a look at the build output, what you'll see is that at the base layer is the run image, the run image that's pointed to by the builder. What you'll see now is I'm going to build up this image in terms of layers. It's very much akin, if you've not used pack before, it's very much akin to a multi-stage Docker build. But we would argue that there are more controls and guardrails in buildpacks than in something like a multi-stage Docker build. And what you can see here is the different layers that are being added to my application image. The Node.js build pack in particular will contribute a node engine, the node runtime to the output image. And the Node.js build pack will also contribute just the set of node modules that my application uses to that output image. Slightly by contrast, what we can see with the Go build pack is that it contributes the output binary, the back end binary to my output image. But the supporting build packs that actually provide the Go compiler and a mechanism for downloading the vendor modules, they're not part of the output image. They will run on the build image, but they don't have to be part of the output image. And this allows us to keep that output image as small as possible and distribute things that only are necessary at runtime. If you've used buildpacks before, you would expect all the nice goodness that we claim. You get yourself a software build of materials that, as I said, is pretty complete. We'll ship your application source code on top of that and we'll put the entry points in your image. Oh, and one more thing. I did mention caching. I'm not going to go into any kind of detail, but the byte for byte reproducibility on these layers does mean that we can cache most of those layers so that when you rebuild, as I said, and if any of these layers haven't changed, so you're using the same node engine, for example, then we just choose that layer from the registry and we don't have to rebuild it. There's a lot of efficiencies built in there. So that's a quick demo and hopefully at this stage, you're going to agree with me that pack build is a nice neat straightforward way of taking your application source code and turning it into an output image. Now, there may be people in this audience that were saying, my build process isn't that straightforward. I need to customize one or two things here and that's what we're going to talk about for the rest of the talk. Five kind of ways of customizing the build packs build pretty much an increasing order of complexity. So we'll first talk about environment variables. We'll then talk about remixing the existing build packs. We'll talk about something that we call inline build packs. That's where my little logo example is going to come back in again. We'll then talk about a new feature that was released when? Yesterday. Yes, this is hot off the press, folks. A new feature that was released yesterday called Dogafile Extensions and then we will point you to some documentation about writing your own build pack. Right. My image contains a go back end and a react front end. Can we customize the go version that we used in that image? This used to work for another Irish guy. If I say can we, if can we, if I say can we customize the go version, you say what? Yes. Yes, we can. Right. Great Irish guy came before me, Mr. Obama and he popularized this. So if I say can we customize the no, the go version using the image, the answer is yes, we can. And can we customize the no JS version also used in the output image? The answer is fantastic. Thank you very much. And how do we figure out how we could customize these things? Well, I'm using the Piccaddo builder. What I'm going to do is use my pack tool again just to inspect their builder and it's going to print out for me all the build packs used in that builder and I'm going to jump to the documentation that they're that the Piccaddo folk have already written for us. And you can see that their documentation tells you precisely what environmental variables are available to customize things at build time. There is a BP underscore go underscore version environment variable that I can pass either on the command line or you can see that on the bottom right hand corner. I can put it into a project dot tumble file in my source code and then I can then point that to go version one dot 20 dot three, which I think is the latest go version if I wanted to for today. Now I'm using something slightly more advanced from the Piccaddo folk. I'm using their BP underscore keep underscore files environment variable. I went to their documentation. I read it turns out that usually the go build pack reads the go source. It compiles the binary and then it doesn't put the go source put code on the output image because that just doesn't make sense in go land. But if I'm building a polyglot image where I've got go source code and type script source code, I will not I will want to keep all those files on the output image and this customization by reading their documentation. I can use the BP underscore keep underscore files environment variable and keep all that lovely type script on my output image. But environment variables aren't just for application developers. They are for platform operators as well.  As a platform operator, I can choose to either default end users application developers to specific versions of these environment variables and I can also choose to override end users environment variables and that makes it easy for me to customize support and even enforce corporate standards. So if we say that we only support python 310 and python 311 well I can default to python 310 and allow the end user to choose python 311. Second thing we can do in terms of order complexity is to start talking about remixing the build order. Again I'm using a builder from piquetto project and the piquetto project has amazingly wide support for a lot of language stacks. It's got support for ruby, python, php but by default their builder builds either a ruby application or a python application or a java application and in my polyglot one I want to build a go and typescript application at the same time. Terrible example. English is not a good example when you want to use or an exclusive or an and in the same sentence but hey I want to build a project that is both a go project and a typescript project. So what I'm going to do is well the question is yeah I suppose can we remix the build order of the build packs and the answer is oh thank you glad I didn't forget that one and it is another feature of this project or tumble file that I have here on the left hand side what I'm doing here is picking out two build packs particularly and saying that I want to build my project using only the nojs build pack and only the go build pack and use them please both at the same time rather than using them exclusively. Yeah this functionality reuses a lot of this allows us to reuse an awful lot of pre-existing functionality without actually going out and rewriting source code or even going as far as writing a build pack. Then a third way of extending the build packs build process and here we're more talking about it something that I know Natalie will talk about later something like more like an escape hatch sometimes and just sometimes you really just need to run a shell script. I know it's not pretty people and I know we don't want to admit to us but can I use curl to download an image or picture at build time and put it on the application image? Yes we can I can use curl if curl exists on the build image I can use curl to take the build packs logo from buildpacks.io and output it into logo.svg on the application image and that's quite cool I've actually here in the kind of last five or six lines there written a small build pack in shell script it's a restricted build pack so we tend to call it an inline build pack but it's a script that runs as the build pack called example slash logo. That does bring us on to the more complex ways of doing things and that is where I have to hand over to people who know more than I do. So Natalie please. Hello okay so we did say at the beginning of this talk that build packs take your source code and turn them into OCI images without the use of docker files. So you might be wondering at this stage what we mean by docker file extensions and how they fit into a build packs build. So to understand the need for this escape hatch we have to talk a little bit about the cnb specification right we mentioned that build packs are a spec anyone can write a build pack but those build packs are expected to conform to certain limitations right among them build packs run rootless they're limited in what they can do right and this is by design this is the value of cloud native build packs is that you're putting constraints around your build process and you know not allowing anything to happen but only the things that you've allowed right but sometimes you just need to do something custom on a per application basis so it might be downloading an image from the internet or it might be installing an operating system package that's not there on the base image right and in that case a build pack is really too limited right so we need something else and I have to ask you can we use docker files to extend our build or runtime based images as of really really as of yesterday so let's talk about how we used to solve this problem right here we have a base a base image it could be our build time base image or our runtime base image the strategy is kind of the same and we need a custom package for one of our applications right so we just add it we just install it ahead of time to the builder but as you can imagine the number of packages that you've added to your your base image could be quite large right and each package may only be needed by one application right this is not the ideal right so the new way that we've allowed is you start with your base image you can keep it very lean right and then at build time we detect what additional actions might be required right and we generate a docker file that then is applied to the build or the runtime base image in order to extend that image before the build packs run so then after this whole process happens you get the build pack provided layers the espom and all of the things that you come to expect from your build so how it works um just to take a step back right a build pack all it is is a piece of software right it reads your application directory it determines what actions might be needed in order to build that application and it contributes dependency layers right we've introduced sort of an analogous concept called an image extension that does something very similar it reads your application directory it determines what actions might need to be taken in a docker file and generates that docker file for application as part of the build process so these are just examples of docker files that might be output right on the left here we have a build dot docker file which as you might expect is going to be applied to our build time base image and all it does is install curl right and we have a run dot docker file that will be used to extend the run time base image and it does the same thing the run dot docker file is is a little bit the special right in the case of a build docker file we really don't want to change the the build time base because that has the build packs that we've already detected that we need right so we have this arg base image from base image which basically just means i don't care what builder what build base image i'm starting from just do this stuff on top of that right but in the case of a run docker file we can actually use that from statement to switch to an entirely different base image right and this is actually quite powerful because you could imagine having sort of a fleet of run images that are available each one might be targeted to a particular language family and so you can keep those run images again very lean with only the dependencies that are needed so to kind of explain how this all fits together we need to go into a little bit more detail about what actually happens during a build packs build and i want to emphasize at this point that not every user or even most users of build packs need to understand the process at this level of detail right we want to keep the app developer experience as simple as pack build my app right but as an operator you might need to know a little bit more detail so this is how we use docker files as part of a cnb build we start with our application source directory we put it through a process called detect where each of the build packs and the extensions get a chance to look at the source code and determine if they're actually needed during the build right and then we also generate any docker files that might be necessary as part of that step then we branch in our flow right we apply the build docker files to the build time base image and then we run the build packs right so at this point the build pack that needs to use curl is going to find curl installed at the same time we apply any of the run docker files to the runtime base image and we take the output extended run image and that becomes the base of our final application image so you can see it comes together with this extended run image and the dependency layers that the build packs provided to make the final image so um at this point as an app developer you might be thinking about all the things that you can do with a docker file right and you could even imagine providing a docker file at the root of your source directory with all kinds of things that you want to add to your application as part of the build process right as a platform operator you might be a little worried about enabling something like that right you can you could write an extension that does that but um more likely you're going to want to have some additional control over what actually gets installed as part of this process so we've given an example here of an extension right it's just a shell script right and build packs can also be as simple as a shell um it's given an output directory where it's expected to write files and here it just writes out that run docker file that does the curl install so this is a really simple example but you can imagine um something more complicated right you have a list of approved packages ones that are vetted and trusted by your organization and you you know detect whether the application requests any of those and only install the ones that you've already pre-approved so you still as a platform operator you still retain total control over what goes into your build so let's go back to our example of the pack build and all of the nice things that we say come along with using build packs right the small output image the s-bomb reproducible build but some of the things um might not be available if you're using docker files right in particular some of us may be familiar with the limitations of caching with docker files um the rootless build right like that's that's gone out the window um and then if you're familiar with the rebasable feature of build packs that's something that may not be available anymore right docker file provided layers might not be safe to rebase so we do view this feature as um something to be used you know carefully right it's an escape patch but it's something that we hope will help uh people kind of surmount the barrier of those first builds and could even be used as a way to iteratively improve your build process so finally I think you already know the answer to this but can you write your own build pack yes you can right so again c and b the project we provide the specification and the tooling but we look to our community to provide the build packs and there's some really great providers which we'll talk about in the next slide but yes you can write your own build pack and you can develop it in any language it can be as simple as the shell script that we saw on the previous slide um or we recommend writing in go we're go developers and there's some great tooling that you can take advantage of uh we do have a build pack author guide and previous talks that go into much more detail about what is a build pack expected to do how does it communicate with the c and b tooling um and and we recommend that you check those out or come ask us because we're always happy to talk about how build packs work so finally just to summarize what we saw today adan gave us a wonderful demo of pack build um a multi-language mono repo so you can really see how powerful build packs are and the nice features that they offer um but at the same time to customize your build you can go from something as simple as providing an environment variable or remixing the build order to writing your own very small simple inline build pack um to the more complex stocca file extensions and writing your own build pack so again just to talk about the ecosystem there are a number of companies and organizations providing platforms build packs or both um and you could be one of them we are an open source project we love to talk to contributors we love to hear from users and hear your feedback um we are in the project pavilion we have this lovely swag here so please come by and talk to us and thank you fantastic so we have kind of five minutes for questions if there are any questions in the audience gentlemen there in the blue oh fantastic oops all right so my question is mainly because my my experience with java native draw image build packs um is it normal that a build pack downloads over gigabytes of compilers and and libraries and everything every time you build an image depends um it really does depend um i mean i don't have a huge amount of experience with the piquetto java build packs but i do know that they will have um they'll point to a jvm which they'll need to pull down and extract then they'll resolve your if you're using something like maven they'll resolve your maven dependencies and resolving maven dependencies isn't i mean it's just a maven problem and it can take a lot of time to resolve now having said that depending on how you're doing your caching then the layers can be cached for the subsequent builds and by default packs should cache those layers for subsequent builds if it's got enough space so the subsequent builds should be uh cheap but it's the same with any kind of process when you're building a container if i was building a java container on a rel base image i'd have to pull down the the jdk or p m and install that and i mean the the jdk runtime is just the size that it is similar to the fact that my node js simple example at that node js runtime is about 250 megs which is a huge amount right and is then only cached after a successful build of the complete thing or also the subsequent steps please somebody who knows answers yes we we write the cache after we export the image so if your build fails that's it's too bad but um we do offer i mean depending on the platform that you're using like the pack tool for example offer support for arbitrary volume mounts so you can mount in a local cache but we kind of put red flags around that to say you know really be sure you know what you're doing here because that can introduce problems the interesting thing about java in particular is that the spring boot tooling itself uses a core component of build packs the lifecycle to produce an image so you don't actually even have to go as far as running our pack tool the spring boot tooling uses lifecycle the core component build packs internally to spit out an output image so if you're using spring you take that route out of there right thank you cool um i see question there um on the end of that row with gentleman the person sorry again thanks regarding the dockerfile extension i'm just unsure how do i feed that dockerfile into the build process so is build dot dockerfile a set name or how does that work yeah so the dockerfile uh it's the responsibility of the extension which you can think of as kind of like a build pack it's the responsibility of that component to put it where the cnb lifecycle expects to find it so you can write an extension that says i'm just going to look in the application source directory and if i see a build dot dockerfile there copy it to the output directory right but we have that the extension as that intermediary entity to kind of inspect the dockerfile and make sure that you're only doing things that you approve of in that step okay thank you cool Nancy gentleman here in the reds i think is hello i have a more general question i'm pretty new to build packs and i was wondering where should i put build packs as a tool and what is build packs responsible for i mean we are designing a chd pipeline and we are migrating to a new stack and i was wondering if if build packs is a tool i can customize to add some additional actions and actions besides building let's say running tests static code analysis or should i treat it just as a narrow responsibility block and just put you know testing static code analysis all the other stuff as well so if you could clear it up no it's a really good question and it's come up a bunch of times what exactly is the responsibility of pack build or in its narrowest conception we take your application source code we turn it into an image what you do with that image is up to you afterwards you can then use that image maybe to run tests as part of a subsequent ci pipeline step or you can go ahead and deploy that image if you want to now the questions come up so often that there is a proposal now that we kind of delineate execution environments and make the build packs process a bit more of being amenable to building a test focused image and then a subsequent production focused image so it's something that we have had requests for and that we're working on okay so i understand this is just a dedicated stage of building and that's it and if i want to do something before build packs or after it's just being bit elsewhere right if i go back to what natalie said earlier the kind of key point here is we want to build images from our application source code what i often don't want is to give tens or hundreds of developer teams control over that process because they just have too much else to worry about and when there's a a need to update a python runtime or when there's a need to update a base image they often don't have the the capacity to deal with that so if i can take a lot of that policy and pull it more centrally into a builder with some environment variables preset in it then if i run that pack tool as part of a cei process i'm going to be able to control the output images for those dev teams and let them as natalie was saying focus on actual development rather than maybe more of the dev ops that they're less comfortable with right thanks for giving this up so you said per default build kit build packs are rootless does this mean that i can also run it inside a container like if i have for example a git lab kubernetes runner is this possible yeah i mean one of the constraints again i'm taking natalie's words right from her mouth yeah build packs are component of the auto dev ops feature of the git lab so we know they work in that environment but get to answer your question you know build packs run rootless and that enables them to run in a variety of environments that require that okay but when i now think of an extension with a docker file then i would lose this feature do you have plans to maybe integrate something like karnico so that i'm still able to build it with a docker file in a container environment yes i probably should have mentioned that when i went over the flow but we actually use karnico to apply the docker files to the build time and the runtime base image so that under the hood that's how we generate the docker file layers we only say you know requires root if the commands you're running actually require root thank you i think we probably have time for one more question but again if people want to go to more detail we have the booth so come on over and okay maybe just a general question we're using basel so basel follows more or less an approach you build images with a docker file and so on was in the section can we use build packs inside basel is any kind of integration there i am not personally aware of any integration with basel it wouldn't google use build packs in gcr and in google cloud run so i know they provide a builder and they provide build packs i don't know much about basel i'm sorry thank you cool i think we've run out of time our friend at the back is furiously waving at us and i don't want to get manhandled off a stage by somebody so thank you very much i'll be seeing the pavilion


Hello, and welcome to this overview of the OpenST Linux distribution. It describes the main components of this distribution and the way they are delivered. This training doesn't dive deep into technical explanations on open embedded, the underlying build system of OpenST Linux. This level of information can be found on community sites. OpenST Linux is a concept for an STM32-MPU embedded software package. Concept here means a naming associated with pillars or values. These pillars are usage of a standard kernel interface. The target is to use kernel versions from kernel.org with a minimal set of proprietary patches. Usage of open source software. Open source is a strong foundation of OpenST Linux. Link to community. Target is to upstream as much as possible the source code, not only the kernel drivers, but bootloader code or build system as well. Communities bring great advantages in term of standard conformity, quality of code, security and long-term support, not to mention development cost. Easy to use. The last pillar, but not the least, is the need for an easy-to-use solution addressing a wide range of customers, from a garage developer to an industrial devices maker, with various needs. Therefore, the target is a scalable, powerful and easy solution that allows customers to build what they need. Open embedded was selected as the OpenST Linux build process. Once again, the target is to comply with standards and upstream as much as possible. The STM32MPUBSP, or Board Support Package, is upstream to the Yocto community. There are three available software packages, the starter package, the developer package and the distribution package. These three packages are complementary and answer different needs throughout a product development cycle, platform evaluation, application or kernel development, and integration and product delivery. The starter package allows a quick and easy means to get any STM32 microprocessor development platform up and running. The developer package allows the modification of some pieces of software of the STM32MPU embedded software distribution, as well as the addition of applications in the platform software image. The distribution package allows the creation of a new distribution with a final objective of productization. The combination of these three packages covers all possible use cases, from discovery to productization. An STM32 microprocessor development platform, such as the STM32MP157CEV1 evaluation board and a microSD card populated with the software image delivered for this platform are all that is required to discover the platform capabilities. No integrated development environment or IDE, no software development kit or SDK are needed. Just use the development platform as a micro PC running Linux. The software image contains firmware delivered as examples with regards to the STM32CUBEMPU package if the considered development platform includes an ARM Cortex-M processor. What are the main use cases covered by this package? Evaluation of the STM32 microprocessor device and development platform, such as internal peripherals and performance. Execution of the CUBE M4 firmware projects delivered within each STM32MPU embedded software distribution starter package, such as the firmware available on the ARM Cortex-M processor. Direct development on the development platform of simple user examples in different languages Shell, Python, etc. To do so, the starter package contains ready to use binaries. These binaries have been generated using an ST Open Embedded image that uses Weston, a minimal and fast graphical compositor. Binaries can be loaded onto a microSD card using the Flash Loader tool. It is also possible to generate a custom microSD card content from a script. The possibilities of combinations to generate a software configuration being huge, the delivery only contains the most relevant set. The developer package provides, on top of the starter package, a software development kit or SDK for cross-development on a host PC. The following pieces of software of the OpenST Linux distribution in source code, Uboot, Trusted Firmware A or TFA, Linux Kernel, and optionally, Open Source Trusted Execution Environment or OPTI. The STM32-MPU package in source code, if the considered development platform includes an ARM Cortex-M processor, an Initialization Code Generator, STM32-CubeMX. This tool makes it possible to generate device tree for OpenST Linux distribution and generate the peripheral Initialization C code and IDE project creation files for STM32-CubeMPU package. An Eclipse-based Integrated Development Environment or IDE, STM32-CoproMPU. STM32-Cube Firmware projects are supported by STM32-CoproMPU Eclipse plugin. Project files generated by STM32-CubeMX can be directly opened by this IDE to continue CUBE firmware development. And IDE is optional for OpenST Linux development, since all actions can be achieved through a command line. What are the main use cases that can be covered with this package? Modification and tuning of the pieces of software delivered as source code. Code modification, efficient development cycle, compile, push on target, debug, tuning of the configuration options, for example for the Linux kernel, and adaptation of the device tree files for the microprocessor device and development platform. Development of the firmware running on the ARM Cortex-M processor, addition of your own Linux applications or Linux application frameworks, addition of your own trusted applications or TAs, if Opti is part of the software release, and addition of your own UBOOT applications. This package allows the creation of a new Linux distribution with a final objective of productization. It includes the source code of all the pieces of software of the STM32-MPU embedded software distribution, including the application frameworks, plus a build framework based on open embedded, also known as distribution builder. A host PC is required to operate this package, a Linux host PC is even strongly recommended. Some open embedded basic terms are introduced here, layer, meta, append. These terms are detailed in the next slides. What are the main use cases that can be covered with this package? To tune the system configuration options, such as memory sizes or debug options, to share all the developments within your team, software baseline, and to prepare the final software for productization. Integration of the following software in this distribution, any of your developments made thanks to the developer package, pieces of software coming from open source communities or third parties, and integrate your CUBE M4 firmware projects in your own distribution, binary or source code, generation of your own starter package images, and generation of your own developer package SDK. Generally speaking, few dedicated people from the project team use this distribution package to create and regularly enrich the project Linux distribution and generate the project developer package. Most developers use this developer package for their developments, since it is a light and efficient or short development cycle environment. Open embedded is a project initiated by the Linux Foundation in 2010 and is still managed by one of its fellows, Richard Purdy. Open embedded is a Linux based cross compilation framework. Cross compilation is the possibility on a machine with a given hardware architecture and a given operating system to compile programs for another hardware architecture or operating system. Open embedded is open source, but it can be used to build proprietary code. It is based on Git for software configuration management. People talk about Yachto, Pokey, or open embedded, and this can be confusing. Open embedded is a build framework for embedded Linux, is maintained by the community, is the source version of Pokey, and is mainly consolidated for ARM platforms. Yachto is a project that uses open embedded build system. Pokey is a reference system of the Yachto project, a collection of Yachto project tools and metadata that serves as a set of working examples. Pokey uses open embedded core. Pokey is maintained by Intel. This setup is mainly consolidated for Intel platforms. Some projects work on a Yachto base, some others on a Pokey base, but in the end, everything is compatible. Open embedded may be seen as a powerful yet quite complex build framework. To ease its understanding, let's sum up the main actions open embedded does during a compilation. Most of the operations below are defined in files named recipes. It downloads source code from various repositories. It applies patches to the source code. It cross-compiles this modified source code and prepares ready-to-deploy images. Eventually, it creates packages under different possible formats. In the end, thanks to the open embedded framework, these packages can be installed exactly the same way on an Ubuntu or Debian PC. As an example, an apt-get install on such a PC could also be done on the target. Remember, open embedded is a Linux distribution maker. In practice, open embedded generates a set of binaries. Binary packages, as explained previously. Linux-based system images, kernel images, device trees, everything your device will need to run the Linux system you have compiled. Toolchains. Before actually cross-compiling the source code, open embedded compiles the toolchain. This explains why the compilation may take a significant amount of time. However, this is quite powerful. Imagine what would happen if you had to find the right toolchain to download prior to compiling. Power distribution kit. This kit containing the toolchain is a ready-to-use SDK. Once the framework of your Linux distribution is defined for simple developments, SDK can be the best tool to work with. This graph coming from the Yachto project site sums up the compilation flow. Source code is downloaded from different locations. Patches are applied. The source code is cross-compiled. Images are generated. Images are generated, and SDK is generated. In addition, QA testing can be performed. A few more concepts first. Once again, basic vocabulary. Layers, machine, distribution, and image are words that are regularly used in the open embedded world. In practice, their content is defined by a limited number of people, typically integrators. A layer can be seen as a folder whose name starts with meta. It contains recipes and configuration files. Layers are organized so that they contain information describing a comprehensive set. For example, the definition of a BSP is done in a layer. Other frameworks such as QT can also be added in a specific layer. On the other hand, the resulting product software is defined by the combination of a machine, a distribution, also known as distro, and an image, each of them providing a different level of information. Why is this? Wouldn't it be easier to find all the information in a single place? Well, it may be, but splitting the software in these three levels allows their combination in many ways. I like my software content, but I want to compile it for another platform. Easy. I want to add a software package to my distribution. Easy as well. I want to configure my software differently. Easy as well. Layer provides software, machine, and distro metadata, machine, machine metadata, configuration of a hardware, distribution, distribution metadata, configuration of a software, functionality associated to hardware, Wi-Fi, network, Bluetooth, functionality associated to software, init, specific implementation of software, SDK name, image, set of software present on image ready to flash on board. Some software can be conditioned by the distro feature switch. Here is a graphic representation of the layers and their possible content. Each folder has a similar structure with configuration files and recipes. To assemble a distro, an image or software layer in the graph, and a machine or BSP layer in the graph, use the bitbake command, which is the command to compile with open embedded framework. The combination of the distro, machine, and image layers is done when the open embedded environment is initialized. It is time to connect all these concepts to what is actually implemented for OpenST Linux. The figure above shows the layers created by ST. MetaSTSTM32MP contains a BSP definition, well actually three BSPs. A generic one, STM32MP1 generates all the selected combinations in a single compilation. That is useful for testers, for instance. And two dedicated machines, STM32MP1 eval and STM32MP1 disco for the eval and disco boards. Then, MetaST OpenST Linux. Here the choice is to host both distro and images definitions. In white characters are the official offers. And italic green characters are the configurations that are delivered as examples without official support. Here are useful links for the deployment of the OpenST distribution.


So, what were we doing last time? We assumed that the Fourier series of every continuous function to with 2 pi periodic converges point wise in order to obtain a contradiction. If the under that assumption we concluded by the Banach-Steinhaus's theorem that there must be a constant m such that inequality 7.3 in the display holds namely mod integral minus pi to pi f of t d n t d t less than or equal to m for all continuous 2 pi periodic functions. And we are going to assume that the function lies between minus 1 and 1 otherwise there will be a norm f on the right hand side. To get to the norm f on the right hand side I am going to assume that the function lies between minus 1 and 1. And we are going to restrict ourselves to real valued function. And we also are going to prove later that integral minus pi to pi mod d n t d t is approximately c log n where c is some positive constant. So, these integrals on the left hand side of 7.4 go to infinity as n tends to infinity. Now, how to arrive at a contradiction using 7.3 and 7.4? I indicated to you last time that the idea is to take f of t to be the signum function namely the sign of d n t. If it on an interval d n t is positive then on that interval you declare f of t to be 1. If for an interval d n t is negative on that interval declare f to be minus 1 then the left hand side of 7.3 exactly gives you the left hand side of 7.4. The right hand side of 7.3 says that it is bounded by capital M whereas the right hand side of 7.4 says that it is c log n and that will give you the contradiction. But the problem the technical issue here is that the signum function is not continuous. And so, we have to get round this difficulty of the signum function being discontinuous. So, let us see how to do that. First of all observe that d n t the Dirichlet kernel to get the formula for the Dirichlet kernel you must go back to chapter 1 to see the exact formula of the Dirichlet kernel. It alternates its sign in intervals of length pi by n. So, in successive intervals of length pi by n the sign will keep alternating. So, the signum function will also have the signs alternating between minus 1 and plus 1 on successive intervals of length pi by n. But the signum function certainly lies in l 1 of minus pi pi. Now, we can use Luzin's theorem. What is Luzin's theorem say that I can find a sequence of continuous functions f j such that f j converges to the signum function in l 1 norm. Further I can arrange it in such a way that the these functions f j vanish at the two ends minus pi pi. So, that we can take the two pi periodic extensions and the convergence in l 1 norm. So, let us work with these continuous approximations. So, what do we have integral minus pi to pi mod f j t minus the signum function goes to 0 as j goes to infinity convergence in l 1 norm. And so, integral minus pi to pi mod d n t d t which is exactly equal to integral minus pi to pi d n t times the signum function. Now, I add and subtract an f j and now I will take the absolute value. So, I will use triangle inequality. And so, now I will say that this is less than or equal to mod d n t mod sigma t minus f j t d t plus integral minus pi to pi d n t f j t d t the whole thing mod. But remember that f j s are continuous. So, I can certainly use the estimate that we obtained earlier 7.3 can certainly be used here. And so, we get that this piece is less than m. And now remember if you look at the Dirichlet kernel the formula for the Dirichlet kernel looking at the formula for the Dirichlet kernel I would like you to prove that the mod of the Dirichlet kernel is going to be less than or equal to capital N. And so, we are left with integral minus pi to pi mod sigma t minus f j t d t plus m. Now, the trick is to fix n and allow the j to go to infinity. So, once you fix n and allow the j to go to infinity we immediately get that this thing goes to 0. And so, this thing drops out and we get the result namely integral minus pi to pi mod d n t d t is less than or equal to m. So, our difficulty of using the signum function to obtain this estimate has now been circumvented. And so, now that we have this we will prove in immediately in the next few slides and the left hand side integral minus pi to pi mod d n t d t is actually c times log n and that gives you a contradiction. So, these integrals of mod the Dirichlet kernel, let us call them ln and these are called Lebesgue constant. And a great deal is known about the Lebesgue constants these days and the literature is quite vast we shall not need all those things and we shall not concern ourselves with these fine points of Fourier analysis. There are papers written on this Lebesgue constants. So, now let us look at the behavior the Lebesgue constants. So, since the Dirichlet kernel is an even function it is enough to look at the interval 0 to pi. So, what is the Dirichlet kernel sin n plus half t upon sin t by 2 and where does this change sin it changes sin at these points k pi by n plus half k equal to 0 1 2 3 and this points divide the interval 0 pi into finitely many sub intervals each of length pi by n plus half. So, we got so many sub intervals on each of these intervals we have the estimate 1 upon sin t by 2 greater than or equal to 2 upon t. Remember when t is between 0 and pi by 2 is between 0 and pi by 2 what are the inequality of the sin function. Remember that sin t is less than or equal to t on the interval 0 to pi by 2 that is all that I have used sin theta less than or equal to theta for theta between 0 and pi by 2. So, 1 upon sin t by 2 is greater than or equal to 2 upon t. So, what do we have using this we have that the more the Dirichlet kernel is greater or equal to 2 upon t mod sin t into n plus half the denominator in the Dirichlet kernel has been taken care of. Now, on the sub intervals of length pi by 2 times n plus half let us look at i k. So, you see that the Dirichlet kernel changes signs in certain sub intervals. In these sub intervals we will slightly cut these sub intervals a little bit.  So, I cut out these intervals on which the d and t maintains sign either positive or negative throughout I cut it ever so slightly. Once I cut it ever so slightly and I take the mod this mod will be bigger than or equal to 1 upon root 2. You see it is only the end points of these intervals that sin t times n plus half becomes 0. The Dirichlet kernel becomes 0 at those end points and I have taken a little inside. So, that mod of the sin function is greater than or equal to 1 half. So, we get mod d and t which is greater than or equal to 1 upon t because this 2 is an innocent constant and I had taken this to be 2 upon pi into 2n plus 1 upon 4k plus 3. So, on each of these sub intervals we have this lower estimate on the mod of the Dirichlet kernel. So, we get integrating over i k we get integral over i k mod d and t d t will be greater than or equal to the length of the interval times the constant 2 upon pi times. And so, if you do the algebra correctly if I multiply this by the length of the interval I get the lower estimate 2 upon 4k plus 3. Now, your sum over k equal to 1 2 3 up to n and then the integral over 0 to pi is certainly going to be greater than or equal to integral over the union of i 1 union i 2 union i n. And that is greater than or equal to this summation of 2 by 4k plus 3 k running from 1 to n and that sum is lower bounded by 1 plus half plus delta plus 1 upon n. And this 1 plus half plus delta plus 1 upon n is approximately log n for large values of n. You get this further lower estimate c tilde log n where c tilde is some positive constant. So, we have finished the complete demonstration about the fact that the Lebesgue constants go to infinity and how the Banach-Steinhaus's theorem gives you lots of continuous functions whose Fourier series will diverge at the origin. In fact, if you examine the Bayer category theorem what we established is that the set of continuous functions which are 2 pi periodic whose Fourier series diverges at the origin is a dense G delta set. So, a majority of continuous functions do exhibit the errant behavior that we are seeing. So, now let us take up the next issue in this chapter on functional analytic preliminaries for study of Fourier series and generalized Fourier series and that is Hilbert space basics. We already used some elementary facts about Hilbert spaces such as the least square approximation and so on so forth. Here we shall go a little deeper into the study of Hilbert spaces. So, recall that a Hilbert space is a vector space h endowed with an inner product v triangular bracket vw such that the norm is given by the inner product vv. So, take a vector v and take the inner product vv and take its square root and you get the norm and once you have the norm you got the distance function. And if this distance function is a complete metric then you say that it is a Hilbert space and the norm has a set of properties we already discussed those things before. So, I shall not repeat those things. So, if v and w are vectors in a Hilbert space these vectors are said to be perpendicular or orthogonal denoted as v perp w if the inner product between v and w is 0. And now let us take a Hilbert space h and let us take v to be a vector subspace v is a vector subspace and v perp the orthocomplement of v is defined as v perp equal to set of all vectors x which are orthogonal to everything in v. The first exercise is to show that v perp is a vector subspace of h it is practically self-evident and v intersect v perp is 0 because if a vector v is in v intersect v perp then it is orthogonal to itself. So, norm v squared is 0 therefore, v must be 0. The orthocomplement of 0 is a whole Hilbert space h and the orthocomplement of h is the 0 space. The orthocomplement of a vector space is always a closed subspace even the original vector subspace w is not closed the orthocomplement will by default be closed. And if I take a vector subspace v, v perp will be v closure and then the usual results from elementary linear algebra if I take a set of mutually orthogonal non-zero vectors then this set will be linearly independent. And of course, we have got the Gram-Schmidt's ortho normalization process which I would like you to review from elementary linear algebra courses. So, all these things are completely elementary. So, I shall not devote any time on this I will leave you to standard books or maybe your class notes if you have taken your functional analysis courses which I am sure most of you have. Now comes a very important notion the notion of basis and Hamel basis. Here we are only going to be talking about Hilbert spaces. When I use the word basis I am going to talk about Hilbert spaces only. There is a notion of basis namely shorter basis which is defined for Banach spaces. But that notion is slightly non-trivial and shorter basis may not even exist. But we are going to confine ourselves to Hilbert spaces only. So, now when we have a Hilbert space we know what is a complete orthonormal system.  For example, if I take L2 of minus 11 then P0x P1x P2x the Legendre polynomials forms a complete orthogonal system and so it will form a basis. So, we got an example. Another example is L2 of minus pi pi. From the very second chapter in this course we saw that 1, cos x sin x cos 2x sin 2x dot dot dot is a complete orthogonal system. So, it forms a basis for the Hilbert space L2 of minus pi pi. So, now these bases are obviously countable. Now the Hilbert space is first and foremost a vector space. And right away in linear algebra we know that every vector space has a basis. Now that notion of basis is different from the notion of basis that we have been talking about. What does it mean to say that 1 cos x sin x cos 2x sin 2x dot dot is a complete orthonormal system? It means that if I take finite linear combinations and I take their closure then I get the whole vector space. So, when I use the word basis in the context of Hilbert space there is a closure operation which is an operation in analysis. You take finite linear combinations the linear span and you take the closure of the linear span. In other words the linear span must be dense in H. If I take the Legendre polynomials p0, xp1, xp2, xdelta I get all the polynomials because it is I am taking finite linear combinations. And now polynomials are dense in L2. So, if I take the closure I will get the whole of L2 of minus 1, 1. But in elementary linear algebra courses you do not take the closure remember. So, what is the basis you simply demand that the linear span must be the whole space. It must be linearly independent of course a linearly independent set is called a basis if it is linear span is the whole of the vector space that is your elementary linear algebra definition. So, now we must be careful to separate out these two notions. So, let me straighten out the records once and for all and you see all the information in this slide the notion of basis in the sense of elementary linear algebra if we ever need it we will call it a Hamel basis a Hamel basis. The word basis without the word Hamel here in this course will always mean a complete orthogonal system namely it should be linearly independent and the closure of the linear span should be the whole of H. I do not mention the orthogonality here I can always subject B to the Gram-Schmidt's process and if B is not orthogonal already I can make it orthogonal by applying the Gram-Schmidt's process. So, there is no harm in putting the orthogonality clause in the definition that is perfectly fine. So, there is a two different notions of basis basis and Hamel basis. Hamel basis are basis in the sense of linear algebra. Now, these two notions are very different why are they very different let me explain to you a Hilbert space which is infinite dimensional cannot have a countable Hamel basis. In fact, if you take a Banach space which is infinite dimensional you got lots of Banach spaces LP of the closed interval 0 1, C of AB with soup norm the Bergman space lots of Banach spaces which are infinite dimensional a Banach space which is infinite dimensional cannot have a countable Hamel basis. This follows from the Bayer category theorem and I leave it as an exercise for you to do this using the Bayer category theorem. Now, metric space is said to be separable if it has a countable dense subset. So, for example, the real numbers is a separable metric space because the rationals form a countable dense set and the same definition applies to a Hilbert space after all a Hilbert space is a metric space to begin with. So, a separable Hilbert space is a Hilbert space which is separable as a metric space the cardinality of a Hamel basis is uncountable in any infinite dimensional Hilbert space. Now, to see this we proceed as follows suppose you have a Hamel basis which is actually countable then how do we arrive at a contradiction we arrive at a contradiction by making a couple of simple observations. First of all a finite dimensional subspace of a Hilbert space is always closed in fact it is to any Banach space you take any Banach space and you take a finite dimensional subspace it is always going to be closed subspace and because the original space is infinite dimensional a finite dimensional subspace will have empty interior because if you take an interior point in a vector subspace then I can blow it up I can first of all translate it and assume that 0 is an interior point and I can blow up the neighborhood by scalar multiplication and I will get the whole space. So, a proper closed subspace will always have empty interior a finite dimensional subspace has empty interior because my ambient space is infinite dimensional and it is closed that is a first important observation the second observation is suppose I have a countable Hamel basis call it v1 v2 v3 dot dot dot take the first n vectors v1 comma v2 comma dot dot dot vn take the linear span call it en then en is a finite dimensional subspace so it is closed en is a proper subspace it has empty interior so en is a closed subspaces with empty interior. Now since the Hamel basis generates the whole space look at the union of en's n from 1 to infinity that will be my whole Hilbert space and so the whole Hilbert space has been written as a countable union of closed nowhere dense sets and that evidently contradicts the Bayer category theorem. So, the Bayer category theorem will immediately tell you one of the most beautiful applications of Bayer category theorem is that a infinite dimensional Banach space cannot have a countable Hamel basis. Examples of basis again example when I say basis in a Hilbert space I mean it is a basis in the sense of analysis that is it is a linearly independent set whose linear span is dense and there is no harm in assuming it is orthogonal. So, L2 of a comma v if a is minus pi and b is pi then we have this sequence 1 cos x sin x cos 2 x sin 2 x etcetera that is going to be a basis from a Hilbert space L2 of minus pi another example is the Legendre polynomials. So, that is also a basis in L2 of minus 1. Now if you take 1 x x squared etcetera it is linearly independent subset of L2 of minus pi pi subjected to the Gram-Schmidt's process I am going to get an orthogonal sequence and use the fundamental orthogonality lemma that we have established earlier to prove that you are going to get the Legendre polynomials we already discussed this in the last chapter. The Hermite functions we already encountered these Hermite functions before but let us recapitulate it in the light of Hilbert spaces. The Hermite polynomials are solutions of Hermite's differential equation y double prime minus 2 x y prime plus 2 lambda y equal to 0. Let us look for a power series solution for this differential equation 7.6 y equal to summation n from 0 to infinity a n x to the power n. We proceed exactly as we did for the Legendres differential equation you get a recursion formula you got to differentiate able to compute y double prime you got to compute minus 2 x y prime etcetera you got to put those things in the differential equation and what will you get the last display in the slide summation n from 0 to infinity x to the power n a n plus 2 n plus 2 into n plus 1 minus 2 n a n plus 2 lambda a n equal to 0 equating the coefficients to 0 we get the recurrence relation a n plus 2 equal to 2 times lambda minus n upon n plus 1 into n plus 2 a n. Now you must put n equal to 0 1 2 3 etcetera and you are going to determine the successive coefficients a naught a 1 a 2 etcetera and then the solution y of x will be a naught times all the even powers of x and a 1 times all the odd powers of x and you see a remarkable fact that if lambda is an integer then one of these two infinite series will terminate and you are going to get a polynomial solutions so for example if lambda is an even integer then I could take a naught to be 1 a 1 to be 0 and I get a polynomial solution if a lambda is say 3 for example and I could take a 1 to be 1 and a naught to be 0 and I get the second parenthesis in the display and I will get a polynomial of degree 3. So if lambda is an integer n positive integer n then the Hermits differential equation admits a polynomial solution which is a polynomial of degree exactly n and these are the sequence of Hermit polynomials. We are going to use these Hermit polynomials and we are going to cook up a set of functions called the Hermit functions and that will give you a basis for L2 of the real line. This will be a good place to stop this capsule and we shall continue this next time. Thank you very much.


The next item of business today is a member's business debate on motion number 10265 in the name of Linda Fabiani on East Kilbride has real heroes. This debate will be concluded without any questions being put and I would invite those members who wish to speak in the debate to please press the request to speak buttons now or as soon as possible. I would again invite those members who are leaving to do so quickly and quietly and I now call on Linda Fabiani to open the debate. Seven minutes please, Ms Fabiani. Thank you very much, Presiding Officer. It gives me great pleasure to hold this debate at the motion entitled East Kilbride has real heroes, which it certainly does. The reason for having the debate is because of Scottish television's Scotland's real heroes award, which is sponsored by the Royal Bank of Scotland. I would like to say a few words first of all about Scottish television because I think it should be noted that STV in my part of the country certainly and the city of Glasgow and all the cities. The reason I am saying in my part the country is because I know somebody that represents the borders would be able to come in and say there are issues there, but I know that those are being addressed as far as possible. Generally, across the country, Scottish television has become like community television for us. It cares about communities and does a lot of work in communities to recognise those that make our communities so strong. I found that particularly in East Kilbride, when we had a wonderful last call, Kayleigh McLeod from STV, who worked there and is still very much missed by the community groups and the charities with which she did such work and raised awareness of her work for them. That is what Scotland's real heroes is about. It is about the Scottish public voting for the winners as this particular series celebrates people's efforts and dedication. For reference, it will be on from 15 August and each episode every Friday thereafter. It pays tribute to people who work so hard in their communities and who have ambition and generosity, and it is about improving things for other people. East Kilbride has loads of that. In the 20 years of so that I have worked there, I have found that very strongly. People from all walks of life, people from all age groups who work very, very hard to give others a helping hand and to improve things in their area. It is all those things that the programme recognises. The Shortlist Awards, Entrepreneur of the Year, Sporting Volunteer of the Year, Hero Neighbour, Community Champion, Community Project and Environmental Project, The Courage Award—which is one that I want to talk about today particularly—and the Carer of the Year award. Then there is Young Real Hero of the Year and the Hero Animal of the Year. I think that our own Mr Q should perhaps have been put in for that, for putting up with us all and all the noise that he has to put up with in this chamber. As I said, it is about viewers voting for the nominees, the ones that they think most deserve to win the real heroes award. Pass winners, I would like to congratulate them. They have been some fantastic winners. I would also, before I get on to East Kilbride, to speak about the current nominees. They have come from all walks of life, and I think that they should all be celebrated. I hope that there are people in here that are going to mention them. I hope that folk from Glasgow, Inverclyde, Skye, West Lothian, North and South Lanarkshire, Caithness, the Highlands—I hope that I am not missing any—East Ayrshire, Van Edinburgh, Clydebank, Portobello, Argyll and Bute, Aberdeen and Aberdeenshire. However, as far as I am concerned, the ones that should win this live in East Kilbride, because East Kilbride has real heroes. I would like to say a few words about the nominees from East Kilbride. The first one, I would like to talk about, is a fantastic name, Maws Mafia. Fabulous. Four ladies, Elmar Oslin, Morrison, Leslie McGinley and Connie Smiley, who have been nominated for the Carer Award. They are certainly known locally as Maws Mafia and we are all quite scared of them. Those are ladies who work in various kinds of voluntary work but who have fought so hard, so very, very hard for the rights of their children. There is a big issue here. Young people with special needs who go to school together, who form friendships and social relationships, perhaps go to the youth club together. What happened here was that they left school and carried on going to the youth club, but when they were then too old, hit 21, too old to go to the youth club, they were not allowed to go any more. Their social network fell apart and all of a sudden these young people were isolated. Maws Mafia got together with others and what they did was they started up a weekly club, started off in Claremont Parish Church, now it takes place in Calder Glen High School every Monday night and they offer services, social services, trips, activities for 18 to 25-year-olds. They were nominated by Alison Gilmar. She nominated the Hangout for the award because of her niece, Stephanie Kelly, who was left wheelchair bound after an accident. Fantastic service growing all the time and I want to pay tribute to Bruce Hotel and the Sky Lounge in East Kilbride, which have just offered regular discos free of charge. The other person in East Kilbride who has been nominated, the Courage Award is Jenny Cook and I'm sure many of you have heard of Miss Jenny Cook. Fantastic young lady aged 11 years old. Jenny has ulcerative colitis and aged just six years, Jenny had her disease large bowel removed because medication was no longer working. Even through that Jenny started fundraising and persuaded her family and her teachers and her school friends to help out. She was only five when she organised her first fundraiser, which raised £5,000. She's quite a gal. She then, a couple of years later, met Derek McEwn, who set up the Catherine McEwn Foundation in memory of his mum who died of Crohn's disease. They've been fundraising ever since and Jenny is absolutely astounding. If I tell you at age 11, she has raised over £30,000 for York Hill children's charity and she's not stopped yet because her next target is £50,000 by the year 2016. She's becoming very well known because she's a very, very special young girl. She's already applied regularly with George Galloway during the Jenny Cook report of how her charity work is going and she has become terribly good friends with our own First Minister. In fact, she was one of his guests at the recent opening ceremony of the Commonwealth Games. I think that he's known to be a bit out of joint because since she got interviewed by Nicholas MacDonald for this TV programme, I'm afraid Nicholas MacDonald is the one that's uppermost in Jenny's mind. She also does great budding work with other young people at York Hill, which is so very, very important and runs a huge fundraiser every year called T Jenny, which takes place in September. I say that I'm running out of time and I could talk about these nominees forever. What I think is particularly great is that both Moss Mafia from The Hangout and Jenny Cook are meeting up soon to give each other joint support going into this competition because that's what the community of East Kilbride does and that's what it's like. I'll just close by saying that East Kilbride has real heroes. I would like to begin by welcoming the opportunity to speak in this motion this afternoon and also by congratulating Linda Fabiani for securing this debate. This week has seen the Parliament confront issues that divide opinion from data security and arm police to Gaza and the big decision in September. But in a week in which we have tackled the contentious and the controversial, it is a particular privilege to be able to address a topic that unites us all. Scotland is a charitable nation, we are a given nation and we don't just give money to good causes, we give our time, our energy, our ideas and our creativity. There are real heroes in every community and this is our chance to recognise the examples set by just some of them. So let me echo Linda Fabiani's remarks and put on record my own congratulations for all those who have been shortlisted. Let me also thank the RBS for making these awards possible and STV for telling the stories behind the words. Hopefully those stories will inspire others to act or will at least foster a greater appreciation of the many acts of selflessness and kindness that happen every day and every community and every part of Scotland. I also want to mention my own part of Scotland, East Kilbride, where I've lived for over nearly 40 years and brought up my own family. I can honestly say that East Kilbride is very much a village in itself. For people with learning disabilities, the transition to adulthood can be difficult and it isn't just difficult for that individual person but also for the family who might have to find a new routine and may even have to face new obstacles. East Kilbride Hangout Club has already addressed a gap in the provision of services in the town and it's a gap that couldn't be plugged right now without volunteers so I'm really glad to see that they have been nominated for the Carer of the Year award and again we Jenny Cook, the work that she's actually done is a young person fundraising for Crohn's Colitis and York Hill and even volunteering as a hospital buddy for sick children and she is an exemplary candidate for the Real Heroes Courage award and there are others. Yous and Recycle have come to this Parliament before to tell us about their social enterprise. They recycle building materials and furniture at a profit to reinvest in the community in addition to a diverting waste from landfill. They place people including people with disabilities and employment and in training programmes. Margaret Gibb of the west of Scotland play scheme has given 30 years to supporting play groups in play scheme. The driving force gives her time to help transport hospital patients in central Scotland and in Coatbridge the home of so many of our star athletes from the Commonwealth Games. Two of the town's sport and fitness enthusiasts have been shortlisted for the sporting volunteer of the year award. Presiding Officer, those nominations, those heroes, are the people who make Scotland the given nation that it is. I look forward to seeing them on STV and I wish them every success in the awards. Thank you. Thank you and I now call on the Stuart McMillan to be followed by Margaret Mitchell. Thank you very much, Presiding Officer. East Kilbride does indeed have real heroes and I commend them all, but so too does every other part of Scotland as well. But certainly listening to Linda Fabiani and talking about Jenny Cook and Morse mafia, certainly very much tremendously inspirational and certainly I thank Linda for doing that. I do want to thank Linda Fabiani for securing this important debate. I think recognising the excellent work that takes place every single day across the country is important and today's debate I hope actually adds to that recognition and I do want to put them on record, however, by congratulations to all the nominees from all over Scotland. The list reminds us all that Scotland is full of outstanding entrepreneurs, talented athletes, conscious citizens and compassionate caretakers and Scotland's real heroes is a programme which highlights those who have had a positive impact on the community, inviting the Scottish people to get to know what they've done and also encourage them to support efforts and become involved in their own community. I'd like to recognise just one of those great nominees. It's a lady called Vicky McArthur from Inverclyde. Miss McArthur is the Founder and Executive Director of Reach for Autism and Vicky is very much a hardworking and proud mother and she has a child with autism and she has won her nominees in the community entrepreneur of the year award. Over the last few years Vicky has been of great support to many parents and she has worked as a nurse both domestically and abroad but not long ago felt that she ought to change direction and focus her efforts on studying autism after her daughter was diagnosed in 2005. She is without doubt passionate about helping people with autism to reach their full potential and to become contributing valued members of their local community. She would also like to help and support their families helping them to better understand and appreciate their loved ones with autism. Reach for Autism founded when Vicky became frustrated with her lack of support and services for people living with autism and Vicky and a group of parents and allies decided to take matters into their own hands and work to provide a long-term sustainable solution not by replacing or duplicating what is done but by working to plug any gaps in service delivery. Reach provides a wide range of support and services for people with autism and their loved ones and the organisation has stated that the primary goal is to create connection and community for all people with autism. Reach has developed its own method known as the Reach Way, a simple approach that focuses on relationships, education, action, community and health. It is very clever on that. The method is delivered by a team that includes parents of autistic children, occupational therapists, social workers, families, community supporters and other members of the community. The programme is an excellent way to create community integration and involvement. Some of the specific programmes organised by Reach include community group workshops, educational courses, seminars, stress management programmes and a newsletter covering current events and issues in the community that relate to autism. Reach has grown rapidly and earlier this year, it opened a base in Rathur Street in Greenock. Only this week, Michael Matheson MSP, the Scottish Government's public health minister, paid him a visit. I know that he was greatly impressed by what he had seen, particularly as he had met Vicky and another couple of representatives only a couple of years ago when they had bags of enthusiasm and support but they had precious little resource. Vicky is a truly remarkable woman and she will probably be the chimney for this when I see her next time. She is certainly not scared of asking people for help and once she actually has your number and she has your email address that you know that she is actually going to use it and she does and I don't mind that because I know that Vicky and her team actually are doing positive work and they are getting results. In closing, Presiding Officer, I wish to express my gratitude to the organisers of the real heroes programme and their efforts to recognise a few of the many people working to make Scotland an incredible place. They have high standards and, indeed, it is an honour for anyone to be nominated. Again, I wish to congratulate all the nominees for the Scotland Heroes Award and once again thank Linda Fabiani for bringing this to the Parliament. Given the current culture of an increasing obsession with celebrity and fame, often achieved through reality TV or by an individual's relentless self-promotion, it is gratifying and entirely appropriate that those who selflessly give up their own time and work within their local communities to make a real difference to people's lives have been given the opportunity not only to be recognised by STV Scotland's real heroes award but also in this chamber today. Nominations for the awards were sought from anyone in the local community who wished to highlight the valuable work of their friends, neighbours or colleagues. As Linda confirmed earlier, I understand that filming of the nominees with the awards presenter Carl Smiley is progressing and the first episode is due to be screened on Friday 15 August. This is the second year that STV and the Royal Bank of Scotland have embarked on the search for Scotland's real heroes. Previous winners from last year include Alf Collington, who set up the Falkirk Food Bank and Murio Keef, CEO of Scotland's only respite centre that specialises in outings for people with MS. It is also very encouraging that, of the 30 nominees this year, two are from East Kilbride and almost a quarter are from Central Region. Linda Fabiani has already spoken about East Kilbride's Elma Ross, Lynn Morrison, Leslie McGinley and Connie Smiley, Acha, Maes Moffia. The superb work that those women have been involved in in proving the lives of young adults with special needs. East Kilbride hang out, the mum's run on a Monday night at Calder Glen High, has proved the only local support service that offers activities for 18 to 25-year-olds with disabilities and learning difficulties. And 11-year-old Jenny Cook, despite facing huge challenges in her own young life, has been inspiring in raising £30,000 for two compelling causes, namely York Hills Children's Charity and Catherine McEwn Foundation. The latter aims to improve the lives of sufferers with Crohn's disease and colitis and the money raised goes towards further research and training about inflammatory bowel diseases. York Hills Children's Charity is based at York Hills Hospital and helps to improve the experience of being in hospital for countless children who are sadly required to be patients. The charity has in the past funded millions of pounds towards child-specific medical equipment and support for the families and parents of children for whom visiting hospital has been the predominant experience of their life. Other nominees from the central region include Pat Bannon, a 66-year-old from my native Coakbridge, who has been nominated for supporting volunteer of the year. Pat is being recognised for encouraging members of his community to get fit. Andrew Campbell, also from Coakbridge, has been nominated for the same award for providing low cost and sometimes free taekwondo lessons for children in the area. Margaret Gibb for Bellshill has been recognised for, as Margaret mentioned, 30 years that she has given to play groups and play schemes in the area, truly astounding. Bellshill-based use, spelled Y-O-O-Z, re-use and recycle, has also been nominated for the environmental project of the year, which provides products from unwanted buildings and sells them on at a reduced rate. Since 2009, the project has saved a staggering 4,000 tonnes plus of supposed waste material from going to the landfill. I consider myself privileged to represent a region where so many of my constituencies are giving up their time to set up initiatives and to creatively aid and engage with such varied and worthwhile projects. STV and RBS, as sponsors, are to be congratulated on introducing the real heroes awards, offering, as it does, well-deserved recognition for the selfless and public-spirited local groups and individuals, as well as recognising our local animal heroes. Thank you very much. I now call Minister Aileen Campbell to close the debate on behalf of the Government. Seven minutes are thereby, please, minister. Thank you, Deputy Presiding Officer, and thank you also to Linda Fabiani for bringing into our attention the outstanding work of both Jenny Cook and, I agree, the fabulously main, Maus Mafia, to her attention Lynn Morrison, Leslie McGinley, Elmeros and Connie Smiley. I congratulate Jenny on her nomination for Scotland's real heroes courage award and Maus Mafia for its nomination in the carer of the year category. I would also like to commend RBS and STV for running the Scotland's real heroes awards and for the series of programmes that will recognise Scottish people who put others before themselves and as Margaret McCulloch, Stuart McMillan and Margaret Mitchell. All rightly noted, there are heroes in absolutely every community and it's great to see them being recognised and given their recognition that they deserve.  Good luck to absolutely everyone on that list and congratulations to all of them. I want to particularly start and to emphasise the work of Jenny both on being nominated and also on being shortlisted for the courage award. Jenny, as we've heard from many speakers, is a remarkable young girl who, despite her own on-going health issues, has dedicated her energy and time into raising significant funds to help others. She's pledged to raise 50,000 and has already raised, as Linda said, over 31,000 phenomenal figures for someone who is so young. Her fundraising is directly benefiting the lives of other children who suffer from inflammatory bowel diseases. That's something that young people do all the time. They want to put back into the system something to help others who are going through similar stories. I think that those funds have been used to provide days out for other young people and their families and to support research activities. That vital support is making a real difference to the lives of sufferers, both now and in the future.  This selfless work is truly inspirational to us all. As Linda also said, she has a real fan in the First Minister who met her here in Holyrood earlier this year and, of course, was his guest at the Commonwealth Games opening ceremony. Jenny does sterling work, and this is not going on notice. She is a young ambassador for Yorkhill children's charity and is also part of the Yorkhill buddy scheme, which is helping to support other young people who are frequent patients at Yorkhill.  We, Jenny, now has a high public profile, which raises the profile of her fundraising activities, which in turn benefits the children and their families who attend Yorkhill children's hospital. At 11 years old, I do not really know how she manages to find the time to do all those things. Truly a remarkable lady and someone that we should celebrate very much so, and it is good that we are getting the opportunity to do so here in the chamber. That, of course, is complemented by the work that we are doing as a Government and taken forward by my colleague Michael Matheson to try and help others who are sufferers of inflammatory bowel disease and Crohn's and Colitis. We should also recognise the work that Michael Matheson is doing, but certainly the work that Jenny is doing is what we are here to celebrate today. Turning now to Maus Mafia, I also want to congratulate Elma Ross, Lynne Morrison, Leslie McGinley and Connie Smiley and everyone else who is involved for the commitment, the tireless effort and the dedication that they have shown in establishing and running Maus Mafia. Their hard work is benefiting many young people with disabilities and learning difficulties in East Kilbride, including their own children. The impact of the project cannot be underestimated. The very fact that the family of Stephanie Kennedy, one of its attendees, has nominated them for a real hero award is testament to just how much the project means to the individuals that attend and their families. It should be recognised as an outstanding model of local communities using their own assets to deliver a service that meets the needs of the community. We should also learn from it to address barriers of isolation and loneliness that other young disabled people may be experiencing in other areas of Scotland. With the legislative changes that we have made as part of our reform to public services, the Public Bodies Joint Working Act, the Recently Passed Children and Young People Act, which I took through Parliament and self-directed support, we should not lose sight of those young people who need support and who, like every other young person across Scotland, want to have their pals about them and to have those connections with others. The need to address isolation and loneliness is highlighted in the 2010 evaluation of the same as you. It told us that only one in three people interviewed were able to name at least one close friend. That is why the Scottish Government in partnership with Equal Futures and other relevant organisations held a friendship event in January of this year to help people with learning disabilities to be supported to have more friends. It is our intention to plan for more events this year, but we cannot take the foot of the gas on getting transitions right and ensuring simple things like solid relationships are valued. Our current strategies to improve the lives of people with learning disabilities, autism and their families and carers, the keys to life and the Scottish strategy for autism, are underpinned by human rights and the principles that are based on dignity, choice and realising potential. Young people with learning disabilities should have opportunities in their communities that enable them to socialise and to be part of that community. We know that having an act of social life and feeling included helps to improve health and wellbeing for people with learning disabilities and autism. That is why we are delighted to commend MozMafia for giving young people with disabilities and learning difficulties an environment where they can socialise and enjoy a range of different activities and experiences and their work as an embodiment of what we are trying and aiming to achieve. We are also, as well as supporting young people with disabilities and learning difficulties, the Scottish Government is investing in support for carers, carers like Elma Lynn Leslie and Connie at MozMafia to continue to care for their families, neighbours and to lead a life alongside their caring responsibilities. That is why we have committed significant resources of nearly £114 million to supporting carers between 2007 and 2015. We have also invested nearly £14 million in the voluntary sector short breaks fund, which allows carers, young carers and cared for persons to take a break from their caring responsibilities, giving them an opportunity to relax without feeling stress or feeling guilty. Over £8 million of that investment has gone into supporting children and young people with disabilities and their carers. To conclude, I cannot agree more with the speakers today who praised Jerry and the MozMafia so highly. With their help and with the help of others like them, the Scottish Government will continue to work towards its aspiration to make Scotland the best place in the world to grow up. That can only ever be achieved if we work in partnership and ensure that we value the work of our army of volunteers right across every community in our country. I wish Jenny Cook and MozMafia, Pat Bannon and Vicky MacArthur and everyone else who has been mentioned and all those who are on the shortlist, all the very best at the Scotland's Real Heroes awards ceremony in September. I wish Jenny continued success in her fundraising activities and MozMafia continued success in running the much-valued service in East Kilbride. Scotland has a hugely talented army of people who are doing amazing things for people and creating better lives and life chances for so many, so we should value them. It is a great privilege to be able to speak and conclude in this debate for the Government. Again, I thank Linda Fabiani for bringing those two wonderful groups to our attention and for allowing us to celebrate them in an appropriate and highly respectful way. Many thanks. I now suspend this meeting of Parliament until 2.30.