So I'm Scott Murray and this presentation is building container images with open embedded in the Octo project It's a little bit about myself. I've been using Linux since 1996 The first few years I did some hobbyists stuff for my own amusement and then in 2000 I started actually working on Linux for a living doing embedded and non-embedded desktop software stuff The last few years I've been working for a console group Currently a principal software engineer for them It's all good groups a services company We specialize in embedded Linux and opensware software and kind of run the gamut of hardware software design build development and We do training and we're a Linux foundation training partner If you have any interest in that you know come up to one of us and ask about it So it's a San Jose company, but we're quite distributed I live in Toronto, Canada, and we have people in Europe and all over the US So quick agenda of what I'm going to try and cover So a really hopefully quick overview of open embedded and the Octo project I'm hoping that everyone has got a reasonable familiarity with those a little you know sort of spiel about containers Probably also something that most people here have some knowledge of already and then I'm going to talk about what open embedded can bring to the container sort of situation and then I'm going to walk through some example build configurations that I've been tinkering with to try and build both full distributions and application sort of micro service type containers and Then a little bit about nesting images to try and build a Like factory install sort of pre-installing application sandboxes in an image during the build process Which is surprisingly not not an easy thing necessarily A few kit caveats I am not a container expert by any stretch of the imagination when I submitted this talk I thought it would be good. I'd you know good opportunity to learn some so I have been doing a lot of a lot of googling and learning things But this presentation I do not really go into the details of how you would take the images that are being generated and Actually using them in with talker or run C or any of the other tools As well container technology every month or some significant change I might have missed something you know in the way of tooling that If you know of something quite useful either come up to me afterwards or during that I'm gonna you know take questions at the end. Hopefully, you know throw something up And I am assuming a bit of open embedded and you know yachto project and you know maybe a little bit of you know Docker knowledge Because I'm not gonna go deep dive in some things So our hopefully quick summary of open embedded in the octa project Open embedded is a build system and the metadata to build embedded Linux distributions It is not itself a Linux distribution The octa project is a collaboration project. It's been running for eight years To aid in the creation of Linux products based on you know open embedded as the technology behind it And yachto project provides a reference distribution called pocky Which is built with open embedded and provided by the octa project and then so that's the goal is to have that pocky acts as a starting point I refer to Pocky and some of the configurations, but I'm trying to do things in my example Configurations that would also work if you just use plain open embedded yourself and don't use the octa project pocky So quick feature list here So one of the big strong points of open embedded is has very broad cpu architecture support Basically because vendor support it with BSP layers that they actually maintain themselves and contribute so the layers are basically a Way of customizing your configuration So it's basically has stacking metadata and that's one of the key strengths of open embedded and yachto project Because it's an embedded, you know Linux distribution sort of tool That's sort of the focus on with it. I have worked on projects where we've built server side stuff with it But the goal is usually in an embedded system to build small images So that is kind of one of the focuses of open embedded It's notable for a regular release schedule basically every six months. There's a release pretty much One of its strong points is integrated license and source publishing compliance tools Which make it quite easy to Publish your license, you know information for an embedded system and actually, you know archive your source to provide to somebody who asks for it One of the sort of current projects it's ongoing for the last couple releases is full binding reproducibility which Debian has also been working on which is a you know Boost your confidence level in your images that you can reproduce the contents and it's also this some security benefits there as well So containers No surprise hopefully to anyone are basically operating system level virtualization as Opposed to virtual machines that basically virtualize a whole machine Linux implementations, you know have been around for a while. I mean basically this is like, you know going from shrewd to something more substantial Nowadays it's namespaces and C groups the Linux control groups feature So I mean the sort of the old school tool these days is Linux containers LXC But then Docker and run C and even system D has system DN spawn Which allows you to actually even with the stock Linux system with system be installed run a you know system of containers if you put your mind to it To muddy things a bit Nowadays there's actually is work on it what that you know they refer to as lightweight VM technology So clear and cat a container is actually do Virtualization at the machine level, but it's aims to be so lightweight that it's doesn't have the performance impact and startup that Typically VMs do and that's because that's one of the key strengths that people have for containers is quick startup Then ease of of starting and lightweight resource usage. So these are new technologies to try and get the benefits of VMs in the same space Fortunately, that's all I'm gonna talk about in that for about Cat a containers there isn't really a integration In upstream open embedded there are some layers floating around but what I was looking at that looking at it there a bit stale So there's probably some work to be done there Container images are you know run the gamut you can do a full Linux distribution install in there or Nowadays it's more typical to have small images with potentially a single application and just its dependencies That's pretty common now in this micro services model and you know having kubernetes orchestrate a big system So continue that vein the common use cases are Sort of the more old-school thing is is trying to run an application that has you know gone stale It doesn't actually you know on a new new system doesn't have libraries that will work for that application You can sort of run it inside a sandbox Sort of the container and actually run it with its own set of libraries and actually get that it will run on a new system one of the uses for that is builds you want to keep your Potentially builds running on newer machines, you know when things shift over time in the tool chain or in libc You can get stuck with you know your build doesn't work anymore on a new system. That's one of the use cases Sandboxing an application to isolate it So this is more of the security sort of idea where you basically can't see the whole file system or all the other processes There's you know debates on how good you know container security is versus virtualization It's approving all the time, but I mean nowadays or I mean it's a heavily researched area You know the black cats are always trying to fork out how to get out of a container environment break out of a namespace But it has come a long ways in the last few years And so the other use case I sort of already mentioned is microservices with this like starting on demand for orchestration and you know Potentially migrating services from one machine to another So typical container construction These days is you start with a minimal system a Debbie and or you boon to or very commonly now alpine Linux Which is quite small and then you add your required packages that you need to run your software or your particular application And then you might actually compile some things Actually install the tool chain build a particular piece of software Using its build process and then you actually prune down you might remove actually the tool chain that was in there and Everything other you know the source for that application You might have compiled to try and make a very small image and that's desirable because it reduces the attack surface Less software is better in the container Makes it easier to maintain again from having less software in migration time and systems where you're actually shifting containers from host to host and like a you know cloud scenario Smaller is you know easier to transfer less time so What are the potential drawbacks of you know some of these types of things? With these sort of common, you know scenarios of how people build containers Reproducibility is not necessarily great In Docker you sort of rely on People keeping the labels sort of sane and not overwriting an image and keeping the same label And being good about actually versioning things That might not be obvious if you're actually running a Docker file It might pull down something different than the last time you ran it and unless you're careful to pay attention That would be a surprise and that comes into like the base Debbie in an alpine images might upgrade You need to keep track of what's going on And then you see things in Docker files, you know I'm not a Docker expert But looking around people do things where they do an automated app get update and upgrade because they want the latest bits Which is good. I mean security wise. That's that's smart But unless you're actually careful to track what's happening when every time you run the Docker file to make a container It might be quite different each time, right? I mean You have to go look at the package, but you know a manager and see what's in there And as well there's things where you see people talking about what you can pin a package version in you know an app tour APK but I have seen reports of things where people go to reproduce a container and Alpine basically don't archive necessarily all the old versions of packages And so you go to reproduce and it's gone and you can no longer build That without doing a very intense web search to find an old version of the the package And that's not ideal really I mean if you if you want to actually be able to tell people this we know what bits are in these images and we can Reproduce it. That's not good As well, I mean so that as I've sort of been reiterating You actually have to put some effort in in this scheme with like, you know using doc files or other mechanisms to compose images And So some of that is a trust issue that the upstream is not going to change on you As this comes into this transparency and sort of a security aspect of it You do have to trust the builders of the base container images And so if you're you know paranoid or your lawyers are paranoid You want to really be sure that you know the origin of the bits that are in the image And so I mean distributions. I mean you this you can build up a you know confidence level You know trust Debian that the developers actually aren't going to sneak something in But then there's the you have to be sort of sure that none of the Debian package maintainers are going to sneak something in and get it by people so it's you're kind of at the whim of maybe distribution update policies on the security front and Having you know if you're pulling a large amount of software in a container for something large like node Or you know Python sort of software framework It's it's definitely a challenge potentially and of course is also anyone who's done much container work It's very common refrain of well containers if you you know Open SSL has an issue. You have to update every container image to pick up the you know CVE fix So I mean that's something that I'll address about I Mean you can just do your app get updated rerun your docker files or whatever and build new images, but It's not necessarily ideal The other thing is licensed compliance Potentially we're not talking about a lot of software. I mean Alpine is is quite minimal in a base image It's only several packages But I mean if you do have a legal team who wants to be able to produce a list of the software the Licenses be able to produce a source archive of everything that's in an image That's not straightforward necessarily Without being quite familiar with the package manager and being able to script up pulling it out of you know apt or Fetching all the source packages and you know scripting up a mechanism to build that So that's not ideal Customization is where things really get more sort of wonky for if you're you know It's one thing to have a docker file. It does you know W get such-and-such start tar dot gz configure, you know make blah blah blah But if there's a package that's in the distribution and you for some reason you want to change its configuration and need to rebuild it Ideally you would do it with the something that's compatible with the package manager And that kind of gets into the state where you might actually need to know more about building packages with the distributions build process You know using its package build things like Open build server ease that a bit, but then it gets into things where if you were trying to do Containers with a distribution for some reason on an architecture that the distribution didn't support Bootstrapping something like Debian or Alpine is a pretty big job if you've not done it before And so that's not something the average person is going to do And so an embedded system say you wanted to do sandboxing and you want to use a very small Distribution and you want to use Alpine and you're on a MIPS system You're going to be in our you can't do that. Basically. You're kind of stuck Unless you really like build systems So He's open embedded in the octa project a solution to these types of problems. I'll sort of run through the same list Reproduce the wise we have a good story Basically, you can rerun the build using the same set of metadata and Should get the same results that's improving all the time as I sort of alluded to at the beginning Ideally within and a couple releases. It should be the case that with the right configuration You should get the same binaries every time Several distributions are working on that, but you will actually be able to pretty much do that yourself Transparency wise because everything's bootstraps and scratch you have all the source in hand if you want to audit things you have it It's pretty straightforward The security front there's 18 months of support per open embedded release or octa project depending on This is a fine line of who's actually doing the QA there, but It's Sort of been discussed about long-term support releases for for open embedded, but it hasn't really taken off yet So on the other side we have debbing is pretty much five years For one I can tell the Alpine is a two-year promise with some potential exceptions For certain packages. They might actually do updates for So that's not actually open embedded isn't look too bad in that sort of like Um license compliance, that's pretty much all built in Basic a bit default to get you know license manifests You can do license text archiving even inside the image if you want to have it contained with the container Source I carving is a pretty straightforward thing to do So wait, that's probably one of the stronger arguments for using open embedded for containers The Customization front because it's a you know pretty much the purpose of open embedded is to be very flexible The layered metadata in the build process you can almost customize anything, but it comes into your skill level I mean simple config option tweaks are pretty straightforward But if you get into wanting to change tool chain security flags and stuff that becomes more involved You'll have to be somewhat expert, you know in tool chain stuff to do that As well pretty much any architecture that that a BSP layer exists can actually be targeted That's useful for embedded if we wanted to sandboxing with container tools We can do it on platforms that don't actually have mainstream Linux distributions that are geared towards containers We can build our own So then we get into some more general issues package availability of you know, what's what's the story there So Debbie you boot to it's really hard to come up with a good sort of solid number But that's tens of thousands of packages even for arm. It's these days It's tens of thousands of packages Alpine from what I can tell they pretty much build 5,000 packages With their system they have a custom System so that but it is in the same ballpark, but not as dramatic as Debian Open embedded at the moment is about 2,300 packages by going by recipe count Some of those are going to be tool chain ones So it's not necessarily a really solid number there, but that's in the open I'm at a core and met an open embedded layers, which are pretty much heavily the heavily Qaid layers so those recipes are likely to be usable right off But there are many more recipes if you actually start searching around but then your confidence level of Reproducibility and how well the light of the recipe for that software is going to work will be not as good one thing to note is Open embedded node and Python module support is is this quite a few like of the commonly used packages that there are recipes for But given the you know the sort of rapid development and that's sort of wide array of new modules Popping up that people want to use in their stacks That's probably a bit of a problem. You might actually have to write recipes for some of those yourself in order to use them Which would be good if you could then upstream them to the project and the cycle would sort of continue but Then on the easy use fronts One of the things that you know you get with Debian or Ubuntu or Alpine is the like app get or APK install Sort of experience where you're pulling from a package feed You can do that with open embedded It's a bit more work to configure than probably the average person is really going to be comfortable with necessarily right off It's not the most well-documented part of the project in my opinion But it is doable There are enough wrinkles that it's probably not something everybody would do And so that kind of means that it's maybe more the case that small relatively Fixed content images are going to be the thing that will be more straightforward to handle with open embedded Resources it's a new thing to learn if you haven't used it before and you want to jump in and start building container images You're gonna be a you know, there's a little learning curve It's a build process so there's potentially quite significant horrible resources if you're building, you know much software And a lot of term maintenance might involve actually dedicating someone to keep track of the project and you know sort of focusing on it So that said so there are pluses and minuses I'm not saying this is gonna change your life And this is the way that everybody should build containers. That's not a slam dunk So on the To get to the sort of mechanics of of what we would do with open embedded So back in the pyro release last year, I believe we're called correctly or late 2016 There was a container image type added and so on the up here In your configuration you can just set the image file system type to container And it basically produces a tar ball with there's no kernel It actually disables post install scripts because you're not gonna have a normal init process There won't be run and then you have to set the kernel to be the dummy kernel Which basically won't build anything and that's it you actually will get a tar ball with just what's configured in the image So that's how we would build a container If we actually want the tools to do something with that container like on target basically There's a meta virtualization layer It provides the sort of gamut of you know Linux containers run C Docker Which is not quite the latest version, but it's in the current master branch is close As well as got the open container image tools And this configuration frame fragments for the Linux Octo kernel that when you pull in the meta virtualization layer We'll add the required kernel configuration to actually run Container tools One thing to note is there's currently no support for Building you're like an OCI or you know a Docker image during the build Which would be mean like running a Docker file or doing Docker compose type of stuff because Docker basically has a demon that it has to have running in order to do most of these types of operations and That's kind of a difficult thing to achieve with the build process I'm poking around there There are so many web pages where people talk about alternate ways to actually use different tools to try and actually build a container without using Docker itself if you actually want a Docker compatible container because it has its own format I haven't actually figured it out yet If anyone has any ideas maybe come talk to me or throw it up at during the question period As well Togan labs they have a booth down in the vendor showcase They have a oryx linux Distribution that they support and it's basically based on open embedded and they offer a commercial support package for it And they actually have container support as part of their system in oryx and they use run run see from the open container folks as the this sort of container Running system on the target and there's the URL there. I haven't played with it yet might poke around at some point just to Kind of see how they do some things, but it looks pretty much like they use meta virtualization and grab the tools But they go talk to them at their booth if you want some details, I think All right, so I sort of rushed through the Frozen cons why we might want to use open embedded and you know, Yachto project for building container images I'm gonna try and get through my examples before I drastically run at a time So I have a few things in mind when I sort of submitted the talk one is It'd be nice to have a container image that I could actually run an open embedded build in It's I mean, I you know, most people carry around like a Debian image or something to kind of give them maximum compatibility for doing builds But it's been a thing for a while that open embedded has I think called the build appliance virtual machine image Which is inside the open embedded distribution you can build it so he can self host its own build And I was like well I'd like a container to do that and not have to worry about building the VM image and stuff So that's one of the things I've tried to accomplish Another one was to see well, how close can I get to something that's like alpine? Linux Size wise, you know hard how hard is it to sort of get sort of similar functionality and So look a little can some configuration options to do that And then there's the building a single application container. So the typical microservice type of thing and then my sort of ideas around Building an image that's pre-loaded with application containers and this would be potentially useful for factory image builds if you're doing sandboxing of applications on your target, all right, so this is my Example for a build container And so for most of these I walk through how you would just sort of ad hoc do it by putting things in local.com Which is the main configuration file for open embedded If you've used it at all, you've probably tweaked things and open in local.com So here I'm actually just setting the machine to the x8664 cumue compatible machine I'm setting the FS type to container which as mentioned gives us a sort of bare bones image I'm actually setting the kernel to dummy because that's required by The container image type and so one of the things is I actually have to set the locale to be included so I'm setting the language here because Nowadays open embedded the bit bake tool use is python 3 and it needs a locale in the image to actually work So I have to actually tell it I want one Because I'm going to build a core image minimal image, which normally wouldn't have any locales in it And then this is the magic these two package groups are defined in oe core in the build appliance Stuff there's actually a package group self-hosted Recipe that these are two package groups out of four or five But these two are enough to actually build an image on top of core image minimal These two package groups give you all the tools to actually do a bootstrap build and so When you build this it's about 150 megabytes for cumue x8664 The build process is interesting because the the self-hosted package group that the build appliance Got a graphical desktop an extremely minimal one But you when you do a bit bake that package group gets built all of it And so you're it's interesting because web engine or I think it's built Which takes a lot longer than you'd expect building something like this should take but then it doesn't actually end up in the image So that means if you were trying to build a minimal image or you wanted to reproduce this quickly You might tweak some things to try and speed that up And maybe prune out a few things So because the container type Image type turns off post install scripts Things like the volatile directories functionality that's on by default and open embedded Break is maybe too strong a word. It doesn't do necessarily what you expect because Without those init scripts running. There's a few directories missing and some software works perfectly fine But the build does not So to work around that we need to sort of populate a few things and it's a var volatile temp is one of the sort of big ones So we could actually script up a little bit where we take this container image that we get and actually run the Nitscript that ends up in it to create those handful of directories We could tweak it as well in our like make an image recipe and and basically Create them by hand as well. That's there's a sort of couple of different options there The base files packages what controls the creation of these volatile directories We could BP append that and actually tweak the recipe to change the behavior As well your user for doing your builds needs to be created the build appliance VM image actually adds a special It has a recipe that adds a builder user We kind of want to work around that necessarily you might actually want to have your own local user so that gets into more like Docker configuration or System D and spawn tweaking with N spawn config and as well your build tree to actually get at it You need to do Docker volumes or do some bind mounts But it works perfectly fine. I was doing test builds works fine And this is something I actually probably tinker with some more because I would like to actually have support for this an upstream open embedded It actually seems quite useful So the follow-up this is actually an image definition of Sort of some of these ideas without actually having to do it in local.com. You could make a layer Put this image definition in it and it sits on top of Open like this OE core pretty much and if you bit bake build container You'll actually get an image that actually pretty much works and you then you can actually run bit bake inside that container One of the things to note. I have thrown in adding the x4 type That's sort of a convenience thing for system D and spawn You can just stick an x4 image into the barrel of machines directory and just ends the run system D Container and spawn to have started so and this is my sort of hack for fixing the temp directories Using the root of s post-prost command hook. It's not pretty But it does work So one of the things is You start poking around is using ecumu x86 64 It would be nice if I didn't actually have to set preferred provider virtual kernel to use the dummy kernel and There's a one extra little package that ecumu x86 64 pulls in that is not useful in Container so this is like a machine definition you could throw somewhere as you know like you know make a small little Bsp to use for containers That would basically turn off. I think it's v86 D is the package and force the use of when it's dummy without having to add it to let local.conf all the time Okay, so that's Pretty straightforward that didn't seem that bad actually it was took a little bit of you know wrapping my head around what the Self-hosting package groups were going to be needed and things like that and some tweaking to but it's not that bad It doesn't take much configuration do that So let's try and raise the bar. Let's try do like alpine ish type of image So one thing about alpine is it uses the muscle C library instead of glib C That's probably the biggest size reduction that that they get is doing that I've you know the previous talk, but probably I assume that was discussed I've spoken back in the spring also what size reduction muscle is the biggest bang for your buck and reducing sizes of open embedded images So this pretty much gets you not that far off actually you can bit bake core image minimal with this Container sort of configuration and just switching to muscle produces something that is not that big This is the image manifest And so there's a few odds and ends in here that you wouldn't think you'd need This doesn't use my machine definition. So it has v86d in it, but It has a few other odds and ends that actually has assist five in it hooks It has the update alternatives for the old package package manager I'll talk a little bit about you can prune these things out actually Because you're not gonna actually have init scripts run normally in one of these containers You might because by default alpine supports that you could do that You could actually run in it inside this container and actually start up multiple things But most people don't actually do that. You can still go ahead and prune those out So as I mentioned on this slide, so this actually is about 4.8 megabytes But there's no package management and so alpine uses its own at package manager APK And so if I actually configure with o package as the package manager in the image We do end up at eight and a half megs, which is in the ballpark of double the size of an alpine image, unfortunately One of the other features of alpine is it signs all its packages That's configured, but we can actually do that with o package and open embedded We can also do it with rpm But when you turn on rpm as the package manager you get an image that's about a hundred megabytes So that's pretty much a non-starter. I assume for anyone who wants to do microservices That's quite a bit larger than you could do with pretty much anything else and like I said further pruning is possible one ways with a custom district configuration and As well all the like update alternatives and things like that. There is an option That's not really obvious called force our own remove which is force read only remove Because when you build a read-only image in open embedded I mean, it's pretty obvious You're not going to actually update the alternatives links when you install packages because you're not going to install packages And so when you build an image that's read only all this stuff gets pulled out But a couple releases ago a knob was added to force that behavior So if you set force our own remove a few other things get pulled out of the image Which in our use cases if we're not going to use package management. That's what we want So this is a example of a sort of custom district configuration I Called it schooner. I can explain that to somebody if they ask me later But it's this very minimal just for like sort of ad hoc thing the big takeaway here is I am basing off a Pocky, but I you know and change the name of stuff, but I am setting muscle as the default C library and This is the sort of big win here is I'm actually setting a very minimal distribution features And so this cuts out quite a bit of stuff If you look at distribution features with the big money C on this regular Pocky It's like three or four lines of stuff a Bunch of is is coming from this variable But just all the other variables like blue Z and pulse audio and things like that Which we're not going to want any of that in our container image and these variables are used by the core image sort of functionality the default image types in Open embedded and so if you set these a few other things get pulled out So the init scripts and the unit manager and things like that So if you're going to make your own image type that doesn't base on the core image You don't need to worry about these, but if you want to make it this is the fault district configuration It's nice to actually have these defined to do what we want All right So remember a little bit of that. I'm actually going to the some of these subsequent examples I actually use schooner.conf when I'm building them So we've built our sort of alpine alike thing to see what we can do Let's try and build a minimal app container just a single application as dependencies So this is my base for that where I attempt to build as little as possible and so Basically, I do you know sort of set the container type I Attacking on x4 because I want to use this in the end spot at one point But here I'm actually turning off all the image features by default no language support and I'm disabling recommendations, which is a mechanism where you might not have a hard dependency on something But you can recommend that it be installed for utility You can turn that off and then it makes if you need something you have to explicitly say you want it and Then I actually define I would do want Things like the default directory structure. So like Etsy and dev and things like that So they they're available for things to be mounted on them by the container tools That's base files base past WD gives us that sort of initial sort of blank You know or whatever default past WD for things to actually be able to look up UIDs and stuff and then net based son I think taxing Etsy hosts sort of default values and then I also sort of hook up the my sort of Fill fill in for now my scheme for actually making sure that the volatile directory stuff is handled so If we say that's our template And then I want to build something with that So my first example here of doing that is I actually build a minimal image with light HDPD and so I pull in that previous image definition and add to it and So as the comment says Light HDPD actually requires BNSH when you start poking around and you're trying to run it It actually execs some things and needs a shell So that previous image you will build you won't actually get a shell in it. So We have to add it to get it and Because we disabled recommendations We have to explicitly add a couple things that were sort of recommended interestingly when you build an image Without those two things and go to run light HDPD it fails because the default configuration refers to them so That's maybe an interesting thing I need to poke at somebody because that sort of goes beyond recommendations if it doesn't actually start without them I'd almost say that's more of an R depends as opposed to our recommendations, but what does this produce a very small image? It only has these packages in it Three of them are the ones we specified in our image template and then basically we get just the dependencies muscle for the C Library and then like libcrypto and lib adder basically and I believe a PCRE one I think is also gets pulled in by muscle and It's quite small. It's just the application So let's try something a little more substantial another web server engine on X It basically is very similar, I mean that's the goal of having that templated app a container image BB file So we can just basically image install plus equals So That gets us an image with just that I think I'm getting close to running at a time here, but so a couple of notes there bash might get pulled in There's a mechanism that looks for scripts and might pull it in so let's be aware of that If something is actually going to exact things you need to have busy box And because post install scripts get disabled you may have to do some tweaking So I'll try to quickly run through The sandboxing example because this is some of the more interesting bits that I haven't seen too many people talk about So we've been building container images with those previous examples and you know So you can docker import them you could run docker compose or some of the other OCI image tools And then you actually on your target that you've built docker into the image you could fetch them or other tools run C But what if one actually do a factory image that already has some of those like light HTTP or similar type of app container images? How can we do that? So right now it's a bit constrained System dn spawn it seems doable from you know experiments the other things it's not really obvious how to do except maybe doing an Image for the target device that used a post install script to do an import of the image that we could sort of orchestrate that So there's two approaches the simple ish one Jeremy Rosen talked about at embedded recipes last month. He gave a somewhat similar talk and so it basically is sort of straightforward, but has some restrictions on machine distro and libc configuration Between the container and the the target image As well, I sort of did some other sort of tinkering this multi-config feature and newer versions of open embedded Gives us some more flexibility where we can actually mix and match between the container build and the host build Multi-fig if you want to look that up there's this URL here to the documentation and Just note that multi-fig dependencies are a somewhat recent addition and the newest version of open embedded And so I'll mention later this some things happen All right, so I'm down to a few minutes So here's my simple example so we sort of follow on I make a recipe to package up the Image that we previously built So this is the app container image light hdb Httpd I'm using it as a source file and I mean basically Including it into the target root file system And then I have an R depends on systemd container because that's the tool that that package includes the tools We're going to use for systemd n-spot So this is an interesting thing where That's Pretty much all that's required if you bit bake this it'll build the image Then run this recipe to basically stick the image that was built into a package And then that package will go into the root file system and To use it it's as easy as this you make a host image definition and just image install You just add that recipe to it and when you bit bake this you end up with a root file system That has the container already in it Just pretty straightforward. I mean it's not it's interesting. It's a I won't say hack it is interesting I Was interesting to see it and when I looked at Jeremy slides to see if I had any point in giving this talk after his but I Did find that the multi config Stuff he hadn't really talked about because it's quite new So if you look at Jeremy slides from embedded recipes He sort of walked through that example. I use the container class in mind But multi config is a system where you can actually configure for different Basically, it's almost like you have different local comms. It's essentially So in your local comm for you to set BB multi config to list the different config types And then you make a multi config directory and put a separate comp file for each of them so in this one It's a lead to hopefully quickly run through this. I am basically Defining the host has system D. That's what these options do and the container. I'm using my schooner distribution class or distro definition and my machine type and I have I'm actually sending it so that when the container stuff builds it goes into a different temp directory and So here's our multi config version and this is the magic here So this dependency Actually makes it that our do install in this recipe doesn't run until the other configurations build of the container image has completed and So if you look at the documentation, this is the pretty much almost the example that's in the The documentation of one image. We're relying on another image and this also works. It does give sort of the same result The build process looks a little different than the output from bit bake and this is We actually accomplish things a little differently in our image the This is the MC depend multi fig multi config depends And so this is the dependency that we're actually defining and this is an image class We're not actually using a recipe to grab the image. This is and actually we're doing it in the image definition and this is the example that's in the documentation for open embedded right now and and This works the other approach when I actually try and make a recipe to pull the other image with the multi-config dependency it fails so That's something I've started poking. I talked to Richard about yesterday the open embedded maintainer I have to generate some log files and we have to sit down and work at what's going on And I mentioned I had a set tempter That is probably there's some meaning compatibility between muscle in g. Let's see building the two images at the same time Ideally, it shouldn't have to be required that you set tempter and then one of the drawbacks is that I Have to sort of dig down from the top level to get at the image It'd be nice if I could just say tempter and deploy dirt and avoid having to specify all this so sort of a work in progress and And That's my talk. I sort of rushed through there trying to fit it all in I don't think I actually have much in the way of time for questions It is the coffee break. That's a good point So if anyone has a question feel free unless you're going to go for coffee the terminology, right? So yay The Linux dummy are you using the upstream Linux dummy from OECore? I am. Yes. Okay. I just paste its link to a slightly longer version that installs the headers So external modules don't fail, which is useful for Well non container. I don't care. No, but a package like Lighty can recommend an IPv6 module which will trigger Kind of things so I needed it for my containers. Okay. All right. That's good to know.  That's what he's getting at. You wouldn't actually require pocky.com You just actually fill in there's like another 20 lines of stuff I think you can just delete that and then to depend on what OECore sets as defaults because the faults work nowadays Yes, that's This is a linux foundation talk so So your project is the approved project Well not proofs to stronger word, but it's the It's the sort of linux foundation back project. Thank you, but Any other questions If you can come up to the mic or hopefully So one of the things you said running as a challenge of containers was the library updates can affect multiple containers So how does this address that? That's sort of the same problem. Although in this case my sort of expectation is you'd be building all this yourself, so It's very easy to script builds with with you know bit bake and open embedded is that my imagination would be you'd pull the update And you'd run your build process and you'd recreate all your container images in one go It wouldn't be stuck going out and tweaking Docker files potentially and doing you know compose or you know Whatever you would do to actually regenerate all your different containers This might get it all in one shot potentially if you've are you know Put the care in to set up your build process, right? Because the tools this is all command line tools and it's all pretty much Bit bake this image and so it's pretty scalable to do builds other the Didn't really mention it, but the state cache for Open embedded if you're making these container images And you're only making like a change of adding a package to an app container The builds are going to be actually quite quick after you get the initial tool chain all that stuff builds So if you're just tweaking one library and then just do bit bake of like these a bunch of different images It'll probably be very quick So there might be a benefit Yes, sir. Yeah, one last thing I wanted to just your your open question about if you wait about two to three weeks meta virtualization will have a bb class to build the Oh, yeah, oci containers. So what's your how did you cook up a scheme? It's using and it's using the tools that are in there already. Oh, yeah The image tools and un-mocky and all the things that are there already so That's good. Good.  Okay. All right. Cool. That's good here Thank you. Thank you bruce anybody else Well, thank you very much


Gosling forward to Joshua King. King skips away from Chilwell, brings it down well, he's got support from Fraser, if he can fight him. He can find Fraser. Fraser to the edge of the box. Right, put it from Ryan Fraser and into the bottom corner! Bournemouth take the lead against Leicester inside the opening 20 minutes. They've been up against it in times in this match, but they've just turned Leicester around and Ryan Fraser on the score sheet again for Bournemouth. The Cherries won, Leicester nil. They'll talk about counter-attacking football and Leicester and how they do it, that is how to counter attack. From the keeper, into Gosling, he sets Kingie on his way. Fantastic switch, looks past. Fraser still had plenty to do, he's still had a full back in the centre half, he's thrown to them. In this first half, not adding shooting boots on though, Bournemouth come forward, Callum Wilson forward to Ryan Fraser, driving in on goal, Ryan Fraser doubles Bournemouth's lead! Again, it's brilliant play from the Cherries, from back to front, they turn Leicester around and again it's the wee man who provides the finish. Just under 10 minutes until halftime, it's for the two, Leicester nil. Well, they've only gone and done it again, started from the keeper out to the centre half, out to the left back. Fraser does get on the ball, he's still got plenty to do, but I think he just rolled it through Schmeichel's legs, how cheeky is that? Who have been best at that so far? King to the byline for the Cherries, Cross is charged down by Ndidi, back to King. Penalty to Bournemouth, Joshua King sends Kasper Schmeichel the wrong way, Bournemouth lying at the vitality stadium, 41 minutes gone, Bournemouth 3, Leicester nil. An excellent penalty, we needed him to keep his head almost to the byline, one step over now to the byline, left foot across, back towards Adam Smith, whose side foots it past Kasper Schmeichel. Ryan Fraser from goal scorer to provider for the Cherries, and a beautiful finish with the in-step from Adam Smith, the ruthless stuff at the vitality stadium, it is Bournemouth 4, 10 man Leicester nil. Well, that's down to just fantastic passability, all the way down the left side to cut the ball back, it was perfectly there, Fraser again, chops it back. Come back to that at the moment, here's Riccardo for Leicester, edge of the box, good defending from Diego Rico at the first attempt, then brings down Riccardo at the second, Penalty says referee Craig Pausen, again in front of the south stand, no, sends Begavits the wrong way, does Madison, there's a consolation for Leicester at the end of this game, it's Bournemouth 4, Leicester 1. Pausen towards Albrighton, heads it past, Asmir Begavits, Leicester have a second, we've got a minute of normal time, plus any stoppage time to go, surely the comeback's not on for the foxes, it's Bournemouth 4, Leicester 2, the Cherries team to come, and there is the full-time whistle, it's another win for Bournemouth, a fourth of the season in the Premier League, it's been a great start to the new campaign, four two-winners over Leicester.


So, I'm going to talk to you about a project I created, it's called Character Creator, so basically it's not free, well it is free software, but the idea is to provide some free assets for free software. So just a bit of history, it started in 2014, actually the online version started in 2014, I actually had the idea for it around 2007, and today we, it's slowly gaining traction and we've got about 100,000 users every month. This is what I use it for, so I basically built it for myself, stretching my own age to make comics, here's a sample, I've got a few sample pages of what I use it for, some illustrations used with the application, so basically it's to, I use it to make comics but I think it's going to mostly be used for people at indie game developers who are trying to get a game off the ground, but are having a hard time finding assets, so that's the main threshold, so there's a lot of, there's a lot of art online you can find, but the main problem is finding art that's unifying, that fits together, that doesn't look, get disjointed when you bring it together in the same project, and also there's a fact that if you are looking for an artist to have a uniform style, well artists can sometimes be expensive or unreliable, I know I am, I'm way too costly and I lose interest in projects sometimes, so it's a problem I see a lot of people having. So we use code, so why don't we reuse art, and with SVG we believe it is that the art is now also code, the goals of my project was twofold mainly, I wanted to have a user interface that was very simple, so a child pick it up, even someone who doesn't, who can't read could go into the application and figure it out, so the application interface was sort of a game at the same time, so it looks kind of those like Barbie doll, paper doll games where you can build a character with a few options, but at the same time of having a simple UI, I wanted the quality of the art that is provided to be good enough so people can use it in games and even if they wanted to sell the games later on, it would be good enough to meet a certain standard of quality, arbitrary of course, but I use my own judgment for that, and I wanted to be free for everyone to use, even for commercials, so yeah, just having characters is not enough, that's why it shows SVG because you can draw characters by hand and have PNGs and stack them up, but then you have a difficulty with raster images when you want to scale them up and down and it can get really problematic really quick, so that's why I thought SVG was the perfect solution for that because it's free license, it's integrated in HTML5, so basically that means you can have access to every device that can run the web, which is a whole lot of devices, and on top of that SVG is easy to edit, convert and export even outside the web, so you can download it, have it in your application and put it into your program, you can put it into all sorts of final products basically, and modifying SVG is really fun, it's code so you can, you can even have it in Git, which you can't do with raster files, you can scale your images, so you can have your foreground characters and background characters reused, and if the shapes provided in the character creator are not to your liking, you can modify them pretty easily using no tools. Now, when I started, I had no idea what it, I thought it was going to be, I thought it was gonna, I saw a lot of potential in SVG when I learned about it, but still I didn't know how it worked, how to use it, so I started to draw, draw, draw, learn, and just started to accumulate a lot of assets, I had a general idea of what I wanted to do, but I had to get there first, so I had to figure out how the whole thing worked. Now, the first version was just basically a Python script, so I would have a few options that you could choose from and command line with no UI, and that was a problematic because trying to figure out what you want your character to look like, it's just a few text options, it's not the best, and obviously, like hardly anyone was going to download it and use it. So, that was the first wall I hit. So, it's hard to create visuals without a UI, wouldn't get people's attention, but at least I knew that it worked, I knew that I could have a few options and get a final result. Now, that's when I decided to switch, I couldn't figure out how to get a UI to work in Python, and I also thought that just downloading the application was going to be an extra step that some people wouldn't be willing to take. So, I figured that by having it as a web application, people would load up the web page and will have the application running right then and there, so they'd already be using it as soon as it was loaded. So, yeah, works on all platforms and also allows me to get a little bit of feedback through statistics on what people are using, what they're not using, so it gives me some type of feedback to improve the application. Now, SVG has a lot of advantages, but in the context of my character creator is I can divide every element of clothing, of body shapes, everything can be divided into layers, reused, and SVG is very easy to eject into the DOM and also to remove. So, what you see on screen is always lightweight. I never have any images in the web page that you're not using, or just the menu you're using to select is injected at one time, so it stays lightweight, and when it's time to download, it's very simple. I just basically give you a download of what's in the DOM. So, yeah, a few things to consider is I had to use JavaScript to manage the SVG. At the time, I did not know JavaScript at all, but I'm very persistent and headstrong, so I figured, all right, well, let's just learn. So, I wrote everything, and I had some help from some friends to try to figure out. So, the code was very, very ugly in the beginning. Some parts are still very ugly, but I think I've made some progress in some areas. So, the gist of it is having CSS classes on the different elements that allow me to select the items to change colors and to be able to edit. So, that's basically just what I use to select the items when you want to change color. Very simple. Here's an example of a menu that I use. So, basically, I just think of different sections and add the possibilities that are there, and that's the complete options of each template character. So, I have a male and female template at the moment, and I have everything listed in there in order of zindex, if you will. So, everything that's in the back would be at the top, and everything that will be shown at the front will be at the bottom in the file. All right. So, I had to figure out how I was going to do this. So, I decided I was going to have some simple class names. So, I have a skin class, which works for, obviously, the skin, and everything else will be, I use Greek letters like alpha, beta, everything like that. And so, that's how I separate the different colors on each layer, basically. Now, to have varying degrees of light and dark, I added some suffixes like dark, darker, darkest, and lighter, lightest, which gives me a range of seven colors, which, for me, was enough to get the level of quality that I was looking for. Also, some 2D layers are partly in front of the character, and others partly in the back. So, I had to separate some of the layers into parts like this. So, I have one of two, and two of two, et cetera, as suffixes into the ID. Now, when I started, I had to make some decisions of arbitrary defaults that were not necessarily educated guesses, which is basically I needed something to start with. So, I have a random view box, which is a pretty ugly. If I was going to start over and start with something more standard like 0, 0, 1,000, 1,000, which gives you a better understanding. But these were the choices I made in the beginning, and that's what I'm stuck with without totally redoing all the images. Same with the class names. I made some choices, and actually the class names work out pretty well for my needs. And also, one of the arbitrary defaults was the position of the characters. Now, the male character is pretty basic, but the female character has one leg up, and a little arm like this. So, if I was to redo it, I'd probably choose something a little bit more front-facing too, but I made some decisions in the beginning, and now I'm stuck with them. This is what the positions are, so hopefully I'll be able to add new positions in the future, and you'll have more choices than this. So, some things work pretty straightforward like I mentioned, but other things like getting emotions and expressions to change that on the character is pretty complicated. Just the eyes are always the same, so I don't have different eyes. I always have the same eyes, but all the eye shapes, the exterior eye shapes are masks, so that I eventually can animate the eyes in the application, and you can also change the eye positions, which is not implemented yet, but half of the work is done, so it's coming. And same thing with body shapes. If I start adding new body shapes, I have to draw all the different clothings on those body shapes too, so that's going to take time. I'm waiting for the right moment to start digging into that part of the application. Now, one of the features that I found interesting is that you can actually, it's a random feature. I think I'll give you a quick demo of this. So, if I start the character creator, I'll go to skin color, body type, click on the part here, and I added a little random function that, if you have no idea what kind of character you want to build, you can click on random to go through all those. Now, this part is a lot of ideas in my head, and I want to hopefully, eventually, I hope to add different options for the random, so you can control the random a little bit better. So this, if you have no clue where you want to go, could possibly be an alternative way to think up and dream up new characters. Obviously, once you have the cape, it hides everything else. So, if you want to see more of it, you can play with it. Pause, and pause here. Yeah, the pause button sometimes. It's still ready. What are you going to do? I'll fix it. All right, so the random feature. I also have a hashing system in the URL, so basically each time you add an option, it's added in the hash of the website. So, after the URL. Now, this goes for the items you choose. The colors also are included in the hash.  So, if I make a character and I'm like, oh, this is really cool. I want to show it to my friend. I can copy the URL, give it to my friend over any messaging service, email whatever, and once they enter the URL, they'll give them exactly the same character that I created. So, that's a nifty way of sharing characters pretty quickly without any sign up, without any accessing with zero clicks, basically. It also allows for some Easter eggs, because some people ask me to have all the female hairstyles on the mail. So, I did, but I found that if I put those in the menu, it would kind of complicate things a little bit. I wanted to keep it simple, but since they're there, you can access it through the hash. So, I can put a female hairstyle. Well, no, female, obviously. It's a relative term. But I can put these things in the hash, and it'll pop up even though it's not in the menu. So, you've got some Easter eggs, and you can hack a little bit of the hash URL. And it's an alternative way to save your characters also. Now, I've got a login feature.  But in the beginning, all I had was the hash, and you can actually copy the URL into a text file and come back to the website anytime and get the character you created just by entering the URL. So, exporting is super easy. It's an SVG. Although I get a lot of demand for raster images, because in the general public, not everyone knows vector art, how it works, and how to deal with it. So, I'm thinking about adding a little bit of documentation or, you know, information on how to open SVGs, but I still get a demand for raster images. I don't really want to do the work, because it doesn't interest me. But if someone else wants to, or eventually if I'm a bit tired of being asked, I'll get it done. So, Inkscape, obviously, is the reason this project exists. I discovered vector art, well, I'm not sure what I discovered years before with Adobe, but once I moved to free software and discovered Inkscape, that's when I realized that my comic book process could involve vector graphics, because I was moving around a lot and carrying a big drawing table was problematic, and it's very hard to reuse drawings when they're all, you know, sketches and scans. It's problematic. So, the fact that Inkscape exists in SVGs, I think allows for new ways to design comics. So, I didn't do items that's still a bit hard and problematic. I'm the only one who adds items for the moment. I got an email asking how to do it, so I think I'm going to sit down and write how to do this, but you need to get into the code still. I'm looking forward to the day while the code will be able to just take the file names and inject them and do the behind the scenes things automatically so that artists won't have to open up an intimidating code place. So basically, you can download a character template so you just choose a character and don't put any items on it and you just draw the item and then you go to the code and you add the classes on the items and the different colors and then you inject it. That's how you add one. And yeah, so I'm looking forward to, right now you can only change one color per item but I'm halfway done on that feature too so that's coming where you can handle multiple color items. The animations are coming and the mail template has now sectioned arms that will eventually be able to be moved, same with the eyes and mobility in the arms. I hope to add rotating heads eventually. And one of the things that's not so easy is actually getting users to understand this feature as I mentioned. So some of the cons it takes a long time to create items right now. I hope to change that in the future. Different body types requires drawing all the items and what the future holds is different body types, positions and hopefully separating the repo for the images so that other artists can take the code base and put their own style of characters so you have more than one character creator. You find one for each style that you want hopefully. Documentation, I'll never do that because I'm not kidding myself. And I want to add a service worker so it works offline when you don't have Wi-Fi. Here's what I'm doing in the background. This is not on the website but this is for myself so I can take the hash from the website, put it in my Python script and it will change the color and the layers of the features so I get my characters looking like it does on the website. It's not on the website but it's just to give you a glimpse of what's coming. So if you want to reach me this is how you do it. Thank you.


Welcome to the Waldoch way. I'm Jessica and today's video is going to be what we got Emily for Christmas. So Emily is a nine-year-old girl. This is going to include her stocking as well as everything that will be under the tree Christmas morning. So if you know Emily in real life, please don't tell her what you're about to see because obviously we want all of this to be a surprise. But we're really hoping to maybe inspire you, give you some ideas or well just let you have a peek into our life. So I'm gonna start with her stocking. I will link the stocking if you like it. We ordered them off of Amazon last year. We all have matching ones with our names on them and inside her stocking we have two our generation like the small little kits and this one is an I love math kit. We get these from Target. It's the math whiz and then this one is the around the world. Emily absolutely loves playing school with her American Girl dolls so I thought this would be a fun addition. She will get you know math and geography so plus you know the home school mom of me loves that. She also has in here a new set of books. This is called Dragon Girls. There are six books currently in the series. I researched for a new series for her for forever and this one looked really fun. It looks like something she would love. The summary on the back of the first one is as Mina, Willa, and Naomi are thrilled to learn their glitter dragon girls summoned to the magic forest by its magnificent ruler the Tree Queen. The girls quickly find out their dragon selves have unbelievable abilities. They can soar above the treetops, breathe the glittery burst of fire, and roar loud enough to shake the ground. Seriously girls, dragons, glitters, magic, what's not to love for her? So I got her that set. She has a Aaron's Thinking Putty. We love these. We keep them in the car. We keep them in my purse. She keeps them in her backpack all over the place but I found a scented one so this is the sensory putty that is scented jam session. And then down in the bottom we have a few games. The first game we have is Trash Pandas, the Rackus Raccoon card game, and then the new unstable unicorns for kids. So that's what's in her stocking. We will probably also throw a few pieces of candy in there. Her favorite are Reese's so we'll probably get her some Reese's Christmas trees. Obviously I'm not going to store chocolate though so that is what's in her stocking. Okay next is going to be her gifts. Now let me go ahead and preface this by saying if you did not watch my gift guides in my holiday halls I'm a themed gift giver which means I normally bundle most of Emily's gifts and you're gonna see that so I'm giving you a heads up ahead of time. Also when we went to see Santa if you follow me on Instagram you already know this if you don't I'm gonna tell you. When we went to see Santa last week I thought I knew what Emily was gonna ask for I had already bought it she's been asking for it since last Christmas when a friend of hers got it but she surprised me and she did not ask for the camera I thought she's gonna ask for it instead she asked Santa for a dolphin because she has been so worried about winter since or about hope since winter passed away at Clear Water Marine Aquarium she wanted Santa to bring her a dolphin for Clear Water Marine Aquarium so basically she wants hope to have a new friend. I said they're crying but obviously we cannot buy her a dolphin so what we did instead is we are giving her the Wild Adventure Vet book which is absolutely gorgeous along with this poly pocket vet ultimate pet care set that we found it's like the ambulance the pet care it's got all of the things in it and she's really been into the poly pocket show on Netflix lately so we thought she would really really like playing with that and again it's that so we're going to give her these two vet things and with a note that we will visit Clear Water Marine Aquarium so we're gonna be giving her that as an experience and that we will make whatever kind of donation they see fit so I have reached out to them by email and I haven't got a response yet and we just want to kind of know the best way to help so if that's monetary then that's what we'll do if it's volunteering that's what we'll do but we just wanted to make it clear to her that we heard her and that we will be doing that but I also wanted her to have a gift so we're gonna give her the vet book with the poly pocket vet set to play with with a note that we will visit Clear Water Marine Aquarium and donate in whatever way they think will best fit them so that is kind of like her big gift because she surprised me her big gift was supposed to be and she will still get it the intact mini camera she had a friend get one last year for Christmas and she begged and begged and begged me for it as a photographer who has literally three really nice expensive cameras that she has access to I originally was like I'm not buying that for you but she's continued to beg for it all year long she likes that the stuff would be printed instantly and so I thought why not it will help her see what she's taking a picture of a little bit quicker because it prints out she'll get that instant satisfaction and who knows what kind of interest it could spark and then if she does end up loving it again I have tons of really nice kind of extensive cameras that she can grow into or use when she's ready so in that we bought the bundle it's the mini camera the camera case and then like a little photo album and quite a few things of film sorry there we go so that is the bundle that we bought her and I'm sure she will still love it even though it's not what she ended up asking Santa for in the end okay a book set this is a book series that she's absolutely loved we have checked out these four first ones from the library a dozen times and I thought it would just be fantastic to add it to our collection so we have a pack architect Rosie Revere engineer Ada twist scientist and this is the one that made me want to go ahead and buy the picture book set for her because she's been watching Ada twist scientists on Netflix she's watched all of them multiple times and she's like mom why don't we have the picture books didn't that you know didn't isn't that what we read first because she has the chapter books so I went back and bought these for her and then Sophia Valdez for future press and then they just released a brand new one into the series and so I went ahead and grabbed that too and that's Aaron Slater illustrator now with these books I got her a new science kit from National Geographic if you've been around here a while you know we love them they're her and Kevin's favorite and they do some sort of science activity once a week but of course it had a shipping delay so it is not here yet so I'm going to show you a picture and it is the National Geographic electricity and battery kit and Lee's been begging to do the potato alarm clock electricity type thing or lemon or whatever so when I saw that and I knew that we were getting her the questionnaire set it just seemed like the perfect bundle so that will be all in one box or bag together and then when I saw that I was getting her the Aaron Slater illustrator I knew like you know how you can just you know your kid and you know that there's certain things they're gonna spark an interest that's gonna spark an interest for her she has a dad who's an artist she loves to draw so when she reads the illustrator book the first thing she's gonna want to do is write a book so that she can illustrate it so when I saw these on us born I knew that they would be perfect and they are a illustrate this book series so the book is written and they need your help to illustrate them so we have the unicorn party my prehistoric pet and one brave astronaut all three of those are topics that she really really likes she loves unicorns dinosaurs and all things space so she will be thrilled to do that and then I got her a set of the subliner pins just like daddy so he has a set of these they're permanent so we haven't been huge you know on letting her have them in the past they're a little expensive but she loves them she knows that daddy uses them so she's gonna be thrilled to have some just like daddy so that will be that gift bundle so yeah I told you I like themed gifts right okay next we have some human body stuff another thing that she's been very interested in lately so I thought we would get her some things to kind of see where that goes I picked up organ attack a few months back and saved it so that will be bundled with three of the doctor Livingston anatomy puzzles so there are seven total puzzles to form the whole body I just got her the first three to see how we felt about them so we have the head which is volume one we have the thorax which is volume two and we have the abdomen which is volume three so again that will all be bundled together and then the last thing I specifically bought for her was this pottery studio it's a potty pottery studio junior and it has everything that you need she has been watching she likes to look over my shoulder when I'm doing it's when I'm watching Instagram stories and my girl Abby from rooted and rest their kids do a pottery class or at least they have been doing one lately and every time she sees them doing pottery and my stories she's like mom I really really like to do that can you find me a pottery class which honestly I haven't had the chance to even look into yet so when I saw this I'm like you know what this is perfect this gives her the ability to kind of see if she likes it if she likes it if it's something she enjoys doing obviously she's got the gift to keep doing it and then I can get her classes and maybe for you know in the future of her birthday or enroll her in something to let her kind of explore that deeper so I'm hoping that this will spark an interest we'll see okay and then there's two more things I wanted to tell you about because they're not necessarily her gifts but it's something that we do and that she'll be getting anyway the first of which is a family gift so we do a family gift for our gift every year it's something that we've done forever I think it's normally passes to somewhere in the past it's been our Disney annual passes last year we bought a laser tag set which was amazing we had so much fun with it because there wasn't a lot of places that you could go and this year we would have bought our universal passes obviously but we got those in September so that we could be you know at Universal for the first day of Harry Potter so that is what we would have done for our family gift and because that was a pricier family gift we needed something that was a little bit more affordable as a Christmas gift so we got a few new games because we love games family game nights or something we do every week and we have really been enjoying tile laying games lately we have fallen in love with a game called patchwork and there's just a few other ones that we really like that are like tile laying so I did some digging and found three kind of interesting tile type laying games that our family is now interested in to a gift us this year so that's the family gift and it will be aquilin which is schooled or get school it's getting pretty crowded here in the reef soon it will be packed to the gills of sea creatures before it fills up completely you have to match as many as you can by laying these tiles so that's one that's a two-player I specifically got that because me and Emily play a lot of games by ourselves so I like having a two-player game or even her and Kevin because there's only three of us because we're homeschooling an only child it's very often that only one parent is playing with her so I do like to try to add a two-player game when we can and so that one is just a two-player game just so you know if you have a big family that might not be the perfect fit for you and this one I know Emily's gonna go gaga for it's called it Calico it's a spatial puzzle game for the whole family players are quilters completing to create the coziest most beautiful quilts so you are drawing the pieces and trying to create your quilt for your cat and she's obsessed with cats so she's gonna love that one and then the last one is Azul I've had this on my wishlist forever I literally look at it every time we go on Barnes and Nobles and it went on sale on Black Friday and so I grabbed it quickly Azul invites you a tiling artist to embellish the walls of the Royal Palace of Aurora and it is just gorgeous like the pieces of the game are so beautiful the last thing that I have is probably kind of silly last year we did a holidays around the world and somehow on our holidays around the world study Emily learned about the tradition where you hide a pickle ornament or a pickle on the Christmas tree and whoever finds it gets a gift so then this year when we were in Target she found a pickle ornament and it commenced to talking me into buying it and wanted to hide it on the tree and see who finds it so obviously since there's just the three of us one of the three of us is going to find the pickle ornament on the tree so I thought it would be super funny if whoever found the pickle ornament actually got a pickle so this is a game that is called in a pickle by game right and we love game right game so I know it's gonna be a hilarious game but it actually comes in a plastic pickle it is kind of a creative wordplay game so for instance on the back they have an example the word baby can be in a bathtub can be in a house can be in Hollywood so it's kind of a word game and you have to try to talk the other players into you know why your word can be in that one like why it can go in it which I just thought would be a fun you know game in general for our family and it can be played with as little as two players which any game that can be played with that few players is always a win in our house so that's it that is what will be under our Christmas tree or in her stocking this year and now I would love it if you would give me ideas so what are you getting your kids what's on their wish list what's you know something that your nine-year-old is desiring this year because while I don't need ideas for this Christmas I'm sure everybody else can use even more ideas and I would love to create an idea bank in the comments so please let me know


Welcome to Conducting Interviews, part of the Research and Assessment Cycle Toolkit offered by the Association of Research Libraries and made possible by a grant from the U.S. Institute of Museum and Library Services. This presentation is part of a module that focuses on collecting data, evidence, input, or other information for library assessment projects. It describes interview methods for library assessment projects, including interview types, preparation, and question strategies. We hope the content is useful to library practitioners seeking to conduct library assessment projects. At the close of the presentation, you will find a link to the feedback form. Please let us know what elements were useful to you. After library assessment professionals determine what they need to know or want to learn as a result of an assessment undertaking and have considered the wide range of choices of assessment methods that will allow them to gain that knowledge or understanding, the process of developing one or more methods is at hand. Should library assessment practitioners select interviews as an approach to a particular assessment or project or need, it's important to think through interviews as a general method, various types of interviews, necessary preparation for a successful interview process, as well as guiding principles for interview questions and scheduling. Interviews are generally considered a qualitative research approach and typically involve one-on-one conversations with individuals. In academic library contexts, individuals might include library users, those who do not yet use or engage with libraries, representatives of various library or institutional communities, stakeholders, or even library colleagues. Often lasting about an hour, interviews are considered a time-intensive assessment option, particularly when one considers the number of interviewees to be accommodated, the preparation involved, the processing of transcripts or recordings, and subsequent analysis. Even when a small number of interviewees are included, the time involved can exceed initial expectations. Some of the benefits of this approach include the opportunity to hear directly from interviewees and gather their experiences and stories. Interviews, depending on how structured they are, can also offer a chance to follow up on questions or seek clarifications or further detail, an option that is not always possible with other assessment methods. The one-on-one nature of the interview can sidestep group dynamic issues as well that might exist in other formats, like focus groups. Having said that, interviews can also have drawbacks. In addition to the time-intensive nature of the approach, interviewees might not always be accurate or candid in their responses, and interviewers can potentially lead interviewees to the responses they hope to hear. Interviews are a very flexible format for library assessment. They can vary in structure and in format. Let's take a look at a few common types. Interviews used for library assessment range from structured to unstructured. They can also be designed as standardized, narrative, or panel formats. Structured interviews are often used in situations where multiple interviewers might be used, and so an attempt to reduce the variation from interviewer to interviewer is important, or when there are other reasons to keep the interviews as much the same as possible. Structured interviews follow a preset script in which questions are set, the prompts are scripted, and even the follow-up questions are determined in advance. Semi-structured interviews provide a bit more freedom for the interviewer to adjust the interview conversation. Broad prompts may be decided upon, but the interviewer is free to rephrase or explain questions, or even add in or omit questions from the script. This format allows for some flexibility, but it also requires interviewers or notetakers to record what questions were asked, changed, or skipped. Unstructured interviews are more conversational and may be designed, from a starting point, to flow with the interviewee's responses. This requires both the interviewer and the notetaker to have more skill in responding and recording in the moment. While all assessment methods benefit from piloting, an unstructured interview is especially primed for a pilot. Practicing a free flow of responses to moving conversational content is more difficult than adhering to a strict set of questions. Therefore, practice is even more essential for anticipating what to do when the unanticipated occurs. There are also a range of different types of interviews. Three of these include standardized interviews, narrative interviews, and panel interviews. Standardized interviews are almost not interviews in the way we typically conceive them. They are more akin to a verbally conveyed checklist. Interviewees select from fixed choices in responding to questions. Open responses are not encouraged and sometimes not even allowed, depending on the design of a particular standardized interview. Narrative interviews encourage the interviewee to tell their story of their experiences. The interviewer seeks to prompt and keep the story being told on track. Because of the variation among stories and the fact that the interviewee is driving so much of the content, narrative interviews can be hard to analyze. Panel interviews are designed to engage the same interviewees over a period of time. While the same interviewees are expected to participate more than once, they could opt out at any point, at which time they might be replaced by other participants, though there may be implications with regard to lack of continuity in those cases. The intent is to observe how views or experiences might change over time for individual interviewees or interviewees as representatives of groups. Interviews as an assessment method require preparation involving interviewers, recorders or note takers, interviewees, and technology or facilities. To ensure a positive interviewee experience and best results in terms of eliciting useful input, interviewees should be trained in interview techniques and provided with ample opportunities to practice. Interviewees should put interviewees at ease and ensure the interview process is comfortable and not subject to interviewer bias. Interviewers should not ask leading questions or influence interview responses through their verbal or written language, affect, or body language. It may help in many situations to use an interviewer that is not perceived as or actually representative of the issue, topic, service, resource, or space being explored in the interview. This may encourage interviewees to be more candid in their responses. Ideally, an interviewer will be accompanied by a recorder or note taker so the interviewer can focus on the task of conveying questions and following up according to the interview design. Recording an interview might take the form of note taking, audio, or video recording. This will typically involve signed consent and individual library assessment practitioners will want to follow library, institutional, local, and IRB related practices in this area. Note takers will likely want to begin with skeleton notes, pre-structured materials, checklists, or forms that are designed to align with the intended interview structure with plenty of room to make note of departures from any script designed in advance. Using recording or note taking allows the interviewer to focus on the interviewee, enables the capture of cues including those that are non-verbal, and so on. Recordings can be used to transcribe responses verbatim or validate notes taken in the session. Recordings also allow others to view the exchange and consider multiple interpretations beyond the interviewers alone. Checklists that a library assessment practitioner may prepare in advance of an interview-based assessment will likely include preparing recruiting and consent processes according to requirements and best practices. Ensuring the spaces used for the interview, either virtual or physical, are safe and accessible. Instructing interviewees on any materials or preparation they need to be aware of prior to the interview. Asking interviewees about any accommodations that will facilitate their participation. Ensuring scripts, questions, prompts, note taking materials, recording technology, and so on is ready to go. Piloting questions in advance using participants that are like those that will be interviewed during the coming sessions. Preparing interviewers, note takers, recorders, and any other study-side personnel. Investigating any costs like transcription that might be helpful for analysis and eventual reporting. While cultural competence is necessary in all library assessment interactions, the personal nature of interviews makes cultural competence especially salient. Library assessment practitioners should reflect on their interview plan and procedures to check for the following. Are the issues under examination relevant to interviewees? Are interviewees reflective of the diversity you seek to include? Is the same diversity and inclusion evident in your study team as well? Does your planned interview communication style suit the situation and relationships you anticipate occurring through the interview process? Have you been completely transparent with your interviewees? Have you built in plans for reciprocity, empowerment, and benefits for interviewees? In preparing to use interviews as an assessment method, a few more suggested practices for interview questions and schedules are worth reflecting on. General recommendations for structuring interview questions include starting with straightforward questions to build the interviewees' confidence and comfort level. Ensuring that questions are concise, concrete, and focused rather than meandering or multi-part. Avoiding jargon and structuring questions in an order that is logical but not leading. In terms of the overall interview process, generally one should begin with confirmation of consent and the purpose of the interview. Interviewers should share a clear timeline and instructions as well as any parameters for the interview. After the interview questions are conveyed and answered, interviewers should review the conversation briefly, provide information about ways the interviewee can follow up, and demonstrate appreciation for the interviewee's time and engagement. After the close of the interview, recordings should be checked, notes reviewed, and summaries composed, and then analysis can begin. Thank you for viewing this presentation on collecting data, evidence, input, or other information for library assessment projects. Please use the link provided to complete a feedback form on the usefulness of this information for your purposes.


Hi everybody, I just want to take a minute to show you some of the updates I've done with space arena. I had a busy weekend working on it And I've made a lot of progress some of some issues to sort out But I want to show you what you have come to look forward to so I'm gonna go ahead and run it here in genie And I got a little kind of weak splash screen here and here is the game so far. So there's me in the center I'm shooting the enemies. I got some explosions. I see that's running slowly I'm running into some problems with the animation speed on the turtle module and just I'm hoping to fix those You can see I down here. I've got a little radar that tells me You know, where's the enemies are that I can't see that doesn't it doesn't radar the whole I Should say it doesn't sense the whole arena And that's based on the players sensor range which can be changed through power-ups eventually, but yeah you get the idea and You can see how I said, you can see how it's kind of running really slowly But yeah, I'm really happy with how it's come out that that blue thing. Oops. Yeah, blue thing is a power-up And if I run into one of these oops, I got working the collision there, too And yeah, there we go. And then this is bouncing now off of the off the walls the missiles That was a request from a viewer, and it was a pretty good idea. So thanks. And yes, that's kind of Where I'm at with it and I just want to show it show you that and show you've made a lot of progress It's getting to be a pretty long program. It's a bit more complicated than I thought it was gonna be but You know when I do the tutorial, it'll be broken down pretty much step-by-step. So anyway, hope you're looking forward to it Subscribe for updates and stay tuned you


What an incredible day we had today as you can tell behind me the families here from Sally Mae Fleming Brown Who decided one day that she wasn't gonna sit in the back of the bus and said she just wasn't gonna do it and didn't And she opened up the gateway for the court case for Rosa Parks. A lot of times We're bringing the meaning to places that we go really connecting with the community in this case There was already a really profound story of Sarah Mae Fleming and we're honored that we got to be a Small part in helping tell that story on a community-wide scale We wanted to bring a life to bring a movement to this story Because we think it's still a story that is very much still living So there's a famous case called Fleming versus SCENG that it's filed 17 months Before the famous incident of Rosa Parks and so while many in this country know the piracy work of Rosa Parks very few know of the precedent case of Sarah Mae Fleming. I was Sort of the lead in using a similar process to what one Columbia uses for all of its public art projects And I've learned more about her as a person through this process and I find that really interesting how sort of self-sufficient she was These four pieces of art Tell the amazingly challenging Sometimes painful but beautiful story of the African seed and the American Sun right here in Columbia, South Carolina It allows an opportunity For our young people to be able to engage in African-American history where they live For some they may never go to a museum or they may never go to an art gallery, but they're gonna come to a local gym They're gonna come to a local Recreation facility and at that point we reach them where they are So we're excited about this opportunity to educate We're excited about this opportunity to be able to share history African-American history to those young people that may not get Opportunities to be exposed to this type of information So we're grateful to our mayor we're grateful to our city council We're grateful to our city manager for endorsing and supporting this process


Members of the academic union of universities in Bayero University, Kano joined their members nationwide in a one-day protest over yet again another failure of the government to fulfill their demands after the call of an eight-month strike. A correspondent in Kano, Stephen Enoch reports that the campus was locked down as both lecturers and students took part in the protest. After an hour of a closed door meeting, the lecturers moved out for the protest. Carrying placards with various inscriptions. From the university's convocation arena through various departments, the lecturers marched chanting solidarity songs students joined in the protest. Unfortunately, when we suspended the strike at the end of this month, our members received a very serious shock. When we realized that members were paid what is called pro-rata solidarity, this is very unfortunate, this is very sad, this is very bad. If university academics will be subjected or compartmented to casual workers, we will see that shock. The union met at the level of neck and revealed the situation and directed branches to come back, continue to work, but organize a one-day special congresses and a protest day in order to protest the casualization of intellectualism. This indicates that ASU is a few sloba and has 101 ways of explaining their grief on an infrasy existing between the union and the federal government of Nigeria. This approach is very, very recommendable and an appreciative result. Establish ladies and gentlemen, when later this may be received and I assure you it is in the safe hand and I assure you again it will be treated appropriately. To the next level and even the next level. Students vowed not to take part in the forthcoming 2023 elections if another strike is called by ASU. These we are calling on the attention of the federal government to kindly, kindly make a very good effect toward addressing these issues because we are the students of this country. We know that we have a right because we are all eligible voters in this country. Be the federal government neglecting these issues without addressing these issues. I don't think we may be able to go down there and cast our box to them. This is our stand as a student of this country. Bayero University is currently conducting its first semester examinations for undergraduates, but the protest has disrupted that. Hello, hope you enjoyed the news. Please do subscribe to our YouTube channel and don't forget to hit the notification button so you get notified about fresh news updates.