Okay. Sounds like it's time for us to start. Hello, everyone. Welcome to this talk. I'm Igor Bolotin, and I'm chief architect of Symantec OpenStack Cloud. Together with me today, Richard Bush. Hello. I'm Richard. I'm a technical director at Symantec. I previously was at Google doing image part-image work, and so now I'm doing Symantec and doing something similar, something a little different. Let's start. So let's talk about a little bit about environment in which we find ourselves. Just like many companies, when they move in, enterprise companies, when they move into cloud the first time, we find that you start with a lot of existing complications that run on a variety of environments, mostly bare metals, some virtualized variety of operating systems, some new, some old, quite frequently very old. You find different Linux flavors, you find different Windows versions, and then the company starts to move into the cloud. Why? To start to move into the cloud. Well, I'm not going to talk about why cloud here. We all know why. The first kind of baby step, people move into cloud virtual machines. Maybe not rewriting applications yet. Maybe just moving into the cloud, because it's easy to get VM on the cloud. And by the way, you can also consume some cloud platform services, and we provide these services. It's just the first step. The long-term vision, well, we're not going to talk about long-term vision here either. But the very first step you find when you go into the cloud, the first question you ask, so who is responsible? Who is responsible for all of this managing of different operating systems, different images that you got on your cloud? Oh, if you go to public cloud, the responsibilities are very clear there. Well, cloud provider is responsible for the provider images, and that's all. Everything else is responsibility of tenants, of users of the public cloud. When we go into private cloud, that responsibility is not that clear. Why it's not clear? Because, first of all, we're at the same company. And the responsibility for providing security for our cloud is shared responsibility. Everyone is responsible. Both cloud team and users of the cloud. We do need to provide custom images. It's not enough to provide just, build just provider images and be done. We need custom images for efficient operation. Can't really go and install hundreds of packages every time that I need to build a new virtual machine, so I build images that are customized for this specific project. But then, it's a huge overhead for everyone to maintain these images. Can you hear me, actually? Yeah, okay, good. Now, when new vulnerabilities are discovered, and they discovered very frequently, like just a couple of weeks ago, another vulnerability is discovered, and another vulnerability need to be fixed. And now, everyone is scrambling. Everyone is going and trying to page VMs and trying to page images. We have different needs in different areas of our cloud. In development, we need something that we cannot allow people to use in production sometimes. And all of that brings to the point that the responsibility is really shared. And all of these tools and processes, all of these governance need to be provided as a service to our users. If we don't provide it as a service, it means that users need to do it by themselves. Not the best thing in the private cloud. Now we go and try to figure out the governance model. And there are a couple of extremes that we can go into. We can go and not to do that much of a governance. The governance could be a little bit relaxed. And that's what typically happens when the cloud team is really focused on building developer cloud first. Cloud for developers. Cloud for the new applications to be built. Not a lot of attention paid to security and governance of that environment. But there are risks associated with it. One goes and starts building their own images. Every developer has preferred operating system to work with. And yes, I need that specific version of the operating system. So you start to see hundreds of different images doing different things. There is no established process for patching, for scanning. And very frequently developer VMs are just not scanned and not patched. The worst thing that happens, you put these applications on and now you have publicly accessible systems that are just vulnerable to very basic threats. You get all of the agility. Not that much of security. You can go to another extreme and been there, done that. The picture is not pretty when you go too far on the governance. And by the way, that's what you get when you focus on your production first. You get a lot of attention to security. You get really hardened systems. You have very few images that everyone is, that only those images users are allowed to use. No custom images. You don't get any root or pseudo access on that VM that you created. You run some very strict configuration management tools. And by the way, they overwrite everything you do that is not on the VM, which makes it extremely difficult to develop in that environment. Because it's too hardened. It's too difficult. It's impossible to work with. You get security, but you use agility on that. So how do we build system that would be not falling into the two locks or too strict? How do we build system that is balanced that can help us achieve agility with security? That's the question. And that's the approach that we're trying to take here at Symantec with Symantec Cloud. The components that we're trying to address for the governance of private images, sorry, for images in the private cloud. These are components. It's about defining clearly for different types of images who is responsible, who owns that image and who is responsible for maintaining this image. It's defining very clearly who can and cannot do what needs to be done with these images. Upload, download, add, delete, make it public. Need to define that extremely carefully. Capacity management. Well, cloud is there, but does it have capacity for storing everything that everyone puts in? There are different approaches for building images. And there are approaches that you can do it at Hock. You create an image, you snapshot it, make it available. You need to make some changes. You make the changes and make it available. Or you can build it in the right way. And we will talk about what the right way is. Honorability and patch management, configuration management, these aspects need to be addressed in order to make it secure and at the same time give people ability to work with your environment. So let's start with the different types of images. What types of images we are talking about? Let's start with the public images. Every cloud has provider images. One thing is very clear. The public images are only the images that we provide. As a semantic cloud, we build these images, we make it available to everyone in the cloud. And the only images that you see as a public image is images that we provide. Those are official images. Everyone can use them.   They are secure. And we provide them to everyone to use. These are base images. There are also platform images. Images that we use in order to build our platform services. And people are more than welcome to use them. They are a little bit different in what is in that image. Richard will talk about this a bit later. And Richard will also talk about how we build and how to internally open source these images. Now, when we are talking about our public images, naming convention is very kind of basic thing. But we found very interestingly that our users were the first one to point to us that the naming convention that we picked at the beginning was not the most convenient one for that. At the beginning, we gave them images and we put the version or actually the date in the image name. We said, here, you know exactly when that image was built and whenever we publish the new image, we will give you image with the new name and you can switch. And they were like, no, we don't want to do that. Because that means that every time you publish new image, now we need to go and change our scripts and our integrations. We need to go and chase what is, figure out what is the latest image available. And yes, we need to use your latest image because that's the one that is the most secure one. So we changed that. Now our images are, have very simple name. It's just the name and the major version. You have base Ubuntu 14.04 or base and TOS 7. You don't have all of this complexity of the name and people can rely on that. On the other hand, we do store information about when the image was built and what happened with that image in the properties. Everyone can go and look at what's in that image, but it's no longer in the name. What it actually means also that whenever we roll out new image, we need to replace the previous one essentially. We no longer keep multiple copies, multiple versions of public images in our cloud. We keep one and it's the latest one. The previous one need to be archived. What does it mean archived? Oh, today what it means is we essentially take the public bit off. It becomes a private. We don't delete images. When you delete images that cause other problems. We keep all of the images that we created and we keep them at least until all of the VMs that were created with these images disappear. Well, terminated. Once all of the VMs gone, then we can go and delete the image and that's the cleanup process that need to happen because again at the end of the day you don't want to have hundreds and hundreds of images in your cloud even if they are private images, it's still over. Now let's talk about private images because we do have private images in the cloud. Everyone is allowed. Everyone can create private image and people can share these private images with the rest of the company. Well, not exactly with the rest of the company because the default sharing that we have in OpenStack is direct share with some other tenant. You want to share your image, you go and tell exactly whom you want to share it with. That's the shared images. Oh, here's the new capability that is coming. It's a community shared images. It's the images that you can actually advertise to the community. You can say, hey, I created this image. This is great image which has some really cool features that my cloud team didn't provide for me but I can provide it to the rest of the teams in the organization. The community sharing work actually coming in liberty. It didn't make it to killer. We do have it in our cloud development was completed on that but that's a different conversation. So this is coming in the next release actually. Community visibility. You can go and read the blueprint. It's actually very well thought through blueprint. It gives the capability that we really, really need. The important thing is though, even though these images are shared with the rest of the cloud, they are very explicitly not maintained by cloud, by semantic cloud team. So when something happens with that image, it's the responsibility of either the user to figure out what's wrong or responsibility of the image owner to help that user to fix the problem. Now, if they come to us and ask for help, we will help but we might need to ask them to reproduce that problem on the official image because, well, not always we can help with somebody else's image. Now, that also creates very different responsibility for patching. Now it's no longer responsibility of the cloud provider to patch the images when something, when the new vulnerability comes out. It's now responsibility of the image owner to remediate. And we define, but what we do, we define the SLA for remediation. If it's critical vulnerability, the SLA will be very clear how fast that image need to be fixed. And if it's not fixed within a defined SLA, it will be disabled. Well, negotiable sometimes. We know that sometimes the images cannot be just disabled because that can cause bigger problems. But generally understood that it's owner responsibility to fix it. Now, who can create images? Oh, if it's developer cloud, if it's developer class of service in your cloud, everyone can build and upload images to their own projects. And they can use this image and they can share this image with other tenants as the developers. But when we come to production, you need to have explicit role in production to be able to share images, to actually just start from uploading the image and sharing image in production. Because not everyone should be allowed to do this. And moreover, if you are trying to make image public, well, we don't allow people to make image public. That's the whole point. The only people who allow to make image public are cloud image administrators. That's you by the way, right? Yes. Okay. Just to be clear. Let's talk a bit about capacity management. Cloud is big, right? We all know that it's infinite capacity. Well, it's illusion of infinite capacity. Because in reality, it's always finite capacity. We only have so much space. We only have so much compute to run our workloads on. And that means that if we give everyone capability to build and upload and create images and create snapshots and store them, that can grow really fast. And we need to be able to manage that. How do we do it? Well, just like we define quota for number of VMs and number of cores and amount of RAM, we also define quota for storage that can be used for images and for snapshots. But what was also very interesting, what we found, was that defining quota is actually, it does help. But what helps even more is defining expiration. So rather than just blindly applying the quota, you can actually say that when you create that snapshot, it automatically expires after some time. And then it will be archived, cleaned, removed from the environment. Works really great with VMs. Works really great with snapshots. And yes, of course, you have to give people ability to go back and mark that one. Don't expire that one. I really need that. I know that I'm not supposed to necessarily have this don't ever expire. But at the same time, I have some VM here that provides some critical service. I really, really don't want that to expire automatically. Same goes with snapshots. Well, I build that service and I have that snapshot as a backup. I want that not to expire automatically. Have the capability. Also defining different policies. How you clean up.  Maybe both. What are the priorities? Which images or which snapshots need to be deleted first? That requires a little bit more choice. And we do provide choice to our customers. We don't just log them into one way of doing things. You have choice. You can select whether we want to automatically delete when it expires or you want to let it run a little bit more if you have space. The important thing is that after a while it's still going to be deleted. And we reclaim the space that we need for other customers, other tenants. Well, another little tidbit on the capacity. People join the company. People leave company. People leave company constantly. And what you find, you find that you have terminated accounts and you need to figure out what to do with the resources that were owned by these people. That includes VMs, that includes networks, that includes images. Now, why it's important to address that explicitly? Well, if the guy was created an image and shared with the community and now it's available for everyone to use and he'll just left the company, who's responsible now for fixing that image if something goes wrong or if there is new vulnerability that needs to be addressed on that image? So the approach is very simple. Either somebody needs to take over that resource or it needs to be taken down, removed. You can't have resources in the environment, the images, VMs, anything that ownership is not clear. There could be an organized way of moving the owners, change the ownership. Or the guy before he leaves, he can transfer the ownership to someone else. Or there might be a way when the guy already left. Well, sometimes termination can be very quick. And then somebody else need to take over that account after the guy already left. So the notification will go out. The notification will go out to the guy, the girl, doesn't matter. It will go to the manager, to the project owner in which that image resides and to VM owners who depend on that image. Now, if it's unclaimed after a grace period, remove it. Don't leave it. Because that's actually a risk. It's not only just using the capacity. There is a security risk associated with uncontrolled or resources that are not owned by anyone in the company. Let me transfer it to you for how you do it. Yes. So we want to set up a continuous integration, continuous deployment system for our images. We want to have the image, the templates, stored in Git as well as the files, unique files that might be in the image, the list of packages, all those details, as well as the instructions essentially of how to build the image, all stored in Git, all put under a review system like Gerrit. And then images actually are used by a service account, not by the user themselves, the user interface to say, look, build me this image. And then the system goes and pulls it out of Git, builds the image and then actually uploads it to Glance. This way you can be assured that whatever images are there are guaranteed to have come from checked-in source code. So there's no, like, well, what actually went into this image? And then also, once you had that technology, you can actually put in all kinds of metadata with the image as the change list number or the branch that it came from, the time, and then the other details that might be interesting at some point down the track. So you can then also set up an automated build system where every night you build an image and you just say, well, we're using the same set of parameters, but just fetch from an up-street vendor, for instance, like if you're having an Ubuntu or CentOS image, say, just build me the new nightly image and then just upload that to Glance and that way that becomes available for use. And that way you can kind of keep on top of getting updates from vendors without actually having to do any work. It's the cheap way. For all new VMs, you get the latest updates. Then we want to do vulnerability and compliance scans for the image. And I'll talk about that later. So that's part of the pipeline. You also can do regression testing. So part of this pipeline is that an image is not actually made available until it's passed a number of stages. It's passed regression testing so you can see, well, does it boot? Can you log in the basics? And then you can extend that and say, well, there may be other things. You say, well, there's a whole set of demons that may be in the image. Can I check that they're all up and running correctly? Then you also have the compliance tests and the vulnerability scans. So basically these are all gatekeeping points. And an image is not actually available for use until they pass all those points. You can define policies on exactly how, you know, to what level an image has to sort of pass this level of goodness before you make it available to people. Then we can publish images and actually control the publication so that we can use that for essentially deployment. Because you don't want to have an event where you push an image. It passes your test, okay, but then there's some danger lurking in the image or some fatal bug that just wasn't caught during testing. And I think you all know that testing doesn't catch all the bugs.  And then you have some other event that causes a widespread number of VMs to restart. They'll restart with a new image and, well, basically, you're out of luck. So then you want to tie the publication into canaries and different zones to control how quickly this thing may get out if you have like a fleet-wide VM restart or something like that. So setting up this workflow sort of hides a lot of that work from people. So then we use this for building our images. And then we can make this available as a service for our customers within Symantec to say, okay, if you want to build an image, you can use all these technologies and then get all these good things for free. So what do we do for our image qualification? So we run QOLUS. So that basically looks for known vulnerabilities. Essentially, it's a large database check. And we also run an internal compliance suite to see, basically, have you hardened this image? In many cases, it's just like, is it sufficiently annoying that it's past what we think is a well-hardened image? We think it's going to be secure. So again, these tests then sort of say, with the policies that you can define, you can say, okay, only if it's past, maybe it's like at least 80% secure because you don't actually get perfect security. But at least you say, we think there's no critical security vulnerabilities. There's only low-risk vulnerabilities. So this is good enough to be published. And so you can define that in your policies and then make that available and similarly for the compliance scans as well as regression testing. And so clearly you would not want to publish an image as public until it's past all these tests. So another thing you need to do is you have to continually rescan all the images just because an image was published two weeks ago and it was great then right now that same image, that same set of bits, the new vulnerabilities are being discovered and it's like, oh, okay, we need to patch that. So we need to know there's a problem. So we need to always be rescanning our entire repository of images that are made available, which is another reason why you have to do cleanup and otherwise you just have an ever-growing list of images to scan and it can take a while to scan. So once you find there's a critical vulnerability, then you mark the images as being vulnerable and then you have to start setting up notifications to people. You can present in the user interface the state of every image. So you can say, well, it's basically red, green, yellow, whatever you use for defining how good an image is. And then anyone who, both the image owner and anyone who has running a VM that uses that image needs to be notified that there may be a potential problem. Because you're doing scans and because the whole image building pipeline is fully automated and is actually run by a service account, you can attach to the metadata for the images, links to the vulnerability scans for that image. So if you need to drill down just how bad is this image? You get the email, you know that you're using this image. Well, how bad is it really for me? And then you can go look and say, okay, maybe it's not a problem. Or maybe I can live with it just a couple more days. We can summarize all the results and include those and you think we run audits on that. We basically defined an SLA and we talked about that. Essentially, you have a certain amount of time to fix an image that's deemed to be critically vulnerable. And so then we have a set of steps about who gets notified, image owners, VM owners. They get emails, they get nagged emails and so you kind of escalate to a certain point and at some point the hammer comes down and the images just get disabled. At the end of the day, we reserve the right to disable an image and disable VMs which we deem maybe a risk to the whole cloud. For configuration management, we basically have two flavors. We have the base image which just works out of the box. It boots up, networking works, you can log in, user accounts are set up through LDAP and then that's it, you're on your own for that image.  So that's great for people who kind of want to do it themselves. Then we have another flavor image which are the opinionated images where they're images that we actually use for our own platform services. So if we have load balancing services or database services, then we need images to run those VMs and these are the images we use. These are at the moment controlled by Puppet and so we have a whole list of packages that we think that this is what you need, a whole set of configuration and that might not work for some of our customers. So they have the choice. They can go bare bones, base, and do it themselves or they can take our images and we support both. And then through the community image feature, people can take base images and extend them and if they decide to take up the maintenance burden, the support role of helping their fellow employees, then they can do that as well. And that's basically questions. We have a little bit of time for questions. If your scan finds that an image is vulnerable and someone has a VM running off that image and they've already patched their own VM, are they still subject to having their VM taken down? So that's a good question and we didn't cover that but sort of implicit is that not just we have to scan images but you also have to start scanning VMs. We're not at that point yet and it's more expensive but yes, we'll have to do that and we'll have a similar sort of process. Really it doesn't make any difference whether it's the image that's vulnerable or some particular VM that's sort of drifted away from what's patched and good. So yes, at some point we'll have to take those ones down with notification. It's interesting because typically what you find is that the VMs are patched first. You find critical vulnerability, you go and patch the VMs.  So that's why we're kind of more focused on getting the images right. So for private image unless they subscribe to your full service how you actually know they are vulnerable or not? We scan the images. For private images you're referring to. So even for private image you also scan them because I thought the image is the only responsibility for these images. So while they're responsible for the content of the images to actually publish an image even for themselves it requires going through our pipeline and the pipeline runs all the checks. So for instance they couldn't publish an image that didn't pass the basic regression test. If it didn't boot they wouldn't be able to upload that to Glance because they don't have direct access to uploading. That's done through the service account that provides all the gatekeeping roles. Does that make sense? Hi. You mentioned Puppet at the end there. Can you say a little bit more about how you set up Puppet? Do you have one per tenant or is it managed by the cloud services team? It's in flux actually. We have one sort of puppet-based module that we're using for all our machines and there's a colleague here who's offered very graciously to redo all that. So we're kind of learning what's the best way of using Puppet and it's even possible we might not be using Puppet in the longer term. In the previous life I was using a system that actually pushed images not puppets and it actually worked very, very well. So I'm kind of biased towards that. I have another question. Do you have any particular tool recommendations in particular for image building and or image testing? Not the vulnerability one, the functional testing? Yes. So for image building at the moment we're using Packer. Actually I'm not too fond of that either.  Well it's just really slow. It's like even to build a basic image it's like five minutes or something like that on a VM and you know I can do that in the 30 seconds with like Deb Bootstrap for instance and it's essentially the same operation. It's just you're not spinning up a VM and you're not like emulating human pushing buttons on an ISO installation CD and all that kind of stuff. I can understand why they've done it but I'm really hoping that we can find better ways of doing that. So but that's currently the tool we're using is Packer but that's just a plug-in. I'll be happy to rip that out and put something else that's much faster. And you had another question too I think about testing. Yes. So that's likely to be at this stage a framework that will write with plug-ins. Basically a framework that you can say okay look here we've got an image. I need to you know run it through some kind of testing or scanning regime. So you know automatically spin up VMs provide plug-ins they can put in regression testing modules a bunch of those we'll be writing ourselves and then also plug into our scanning services because it's most of it's the same problem right? It's like I've got an image I need to put it into a VM and explore it in various ways. I'll lower this. I think you usually kind of unscrew something there and it slides down or you can pull them out. That's better thank you. First of all I mean thank you very much you know very informative session appreciated. I had a question about auditing and compliance and if you can expand more about you know your experience with auditing and I'd be particularly interested if you were subject to any sort of you know compliance standard and if you can talk more about it and also you know if did you find what was your experience with the OpenStack Services log enough events that would help you from an auditing perspective or what are some of the use cases you ran into that would be great. On the auditing we absolutely are in scope for various compliance regulations and our friends at the semantic global security office provide us with all of the requirements that need to be met including the tools that need to be run as part of the scanning in order for us to meet the audit requirements. Now we also find that the default logs that OpenStack components produce are not sufficient in order to meet compliance requirements. However with the PiCAD or rather now it's keystone middleware, audit middleware that we have enabled on our services that produces the events that we can collect and store for the audit trail necessary for compliance needs. Okay thank you. I had a question regarding licensing of the software that's in the images. So what's stopping somebody from putting copyrighted material in an image and making it community. And also then though in a good use of this what does the semantic cloud have for kind of charging so that if you have licensed software being distributed in your image is there a way that you can be charging so that the owners of that license are getting their money for the instance hours based on that image? Very good question today. We don't charge our users for pretty much anything. It's private cloud. However it's a very good question that we need to start thinking about licensed software. We do have internal process at Symantec about controlling what software can and cannot be used both commercial as well as open source and we have the service team the teams who actually work on building the products within the Symantec kind of need to make sure that they don't use anything that is not allowed. But it's one of the services that we probably need to start with.


Zebrafish have a total of 94 cytochrome P for 50 CYP genes distributed among 18 gene families found also in mammals. These CYPs are involved in endogenous functions such as steroidogenesis, retinoic acid metabolism and xenobiotic metabolism. Additionally, there are orthologous relationships between zebrafish and humans for certain CYP1s and CYP3s. Furthermore, transcript profiling has shown that the majority of zebrafish CYP genes are expressed in embryos with waves of expression of different sets of genes over the course of development. This provides a foundation for the use of zebrafish as a model in toxicological, pharmacological and chemical disease research. This article was authored by Perente Thiago, Zanette Juliano, Cubota Akira, and others.


and on Desk of Lady Aida. Hey buddy and welcome to Desk of Lady Aida. It's Sunday night. We're here at my desk. Do a little bit of engineering and coding as well as some purchasing. Also just hanging out, enjoying this beautiful last weekends of the summer before September kicks in. Never want to pass up a nice night in New York. We went on this Ferris wheel. Maybe fill a little post up. Yeah, I'll post up some, there was like a neopixel-like thing on it, so that'll count. Cause someone will be like, why is this, why is there no electronics in this? So... There's no electronics in the Ferris wheel. Yeah, so I think I can get away with posting. Okay, cool. Posting that. All right, well, let's check out what we're hacking. Do you want to do, let's do this LED thing first and then we can show off. Yeah, what do you want to do? All right, so let's go to the overhead. So we have this design. This is the LED Matrix Driver that we put in the shop. It's lovely. It has 13 by 9 RGB LEDs. It'll break out, ready for use. And then we made the LED glasses, which is basically the same design, but just sort of exploded out. So it's like you could kind of even see. It's like this component is here and then all the LEDs are spread out over the glasses and so on and things that we did. We're gonna kind of put it off for a week, but this weekend we sat down and actually started doing the mapping of the LEDs. And even with this, the LEDs don't map perfectly into memory. The memory isn't like LED one is spot zero and it's totally even. There's actually a little bit of a memory map thing going on with that. And we had already programmed in this memory map before, but now we were like, okay, time to do the LED glasses. And the LED glasses are kind of weird because this is a straight up grid of 13 by 9 RGB LEDs. But this has two round elements and then like a grid element. So you can kind of see there's like a five by 12 grid of RGB LEDs. So you can have like kind of texture or like isometric, you know, like X, Y mapped graphics onto it. And then on the outside, there are two 24 LED rings. People like our neopixel rings, we thought let's take that same kind of fun LED glasses that round shape that people dig and then make it a little bit different than just a plain, you know, glasses that have X, Y. You know, you can buy those, they're available. We want to do something a little bit different. We also put together the LED glasses driver prototype, which looks like this. So this is an NRF 52 840, the microphone, accelerometer. This is an on-off switch. There's a slide switch that you can use to turn it on and turn it off. There's one kind of action button. Okay, I figure you don't believe me more than one. And then a reset button to reset the board or put into boot litter mode. USB-C and battery. And there's a battery charger so you can use this with a LiPo, but we're actually gonna make it by default not work with a LiPo. It's gonna be for alkaline batteries because you can't have a charger for both. You kind of have to choose one or the other. But I want to, I think by default, it should be alkaline batteries because I think those are, especially for something on your face. A lot of people aren't gonna be comfortable with having the battery taped to their skull and if it gets hit, it can get punctured, why risk it? So there's a little jumper that you can solder closed if you want to use a LiPo battery. So people who are advanced enough to use a LiPo, they're also advanced enough to be able to solder closed. You know, that jumper connection, I think that's fine. And then I'm just using a STEMI QT connector because one of the nice things is this is an I-squared C chip.  And then I think I already have a program on here that'll make, let me turn it on. Okay, maybe not, hold on, I was programming it with it. So let me plug into USB. All right, live demo. I know, live demo. I don't know what was on here because I was messing with it earlier. Oh, I was, yeah, I was writing some code, so hold on a second. I moved the LED map into a global so I just have to make it reference itself. Okay, there you go. So this is the mapping of the two rings.  But these LEDs are absolutely no way in memory ordered this way, right? And this is a thing that like kind of, I was chatting with some of the engineers and I was always kind of shocked at like how, you know, we have 30, 40, 50 years of combined programming experience and yet we're still kind of programming the same thing. Like programming has changed, but it kind of hasn't. So doing memory remaps or debugging with printf or like programming in a simple finite state machine, it's kind of like, the tools are getting better but the programming itself has not changed. Like we really do have the same core issues and the same core ways of programming them, which I think is, which is kind of cool. It means that like, if you learn programming from one language, you can take that knowledge and move it to another. So if I look, you know, if I open up my code and I actually have a little bit of demo code here. Tell me to go to the computer. No, so this is, you know, show here. This is a program that lights every memory spot in order. And you can see that there's some, you know, some of them go kind of an order-ish, but then it kind of like flickers around and it sort of goes a little bit over here. You know, it's not totally random. There's like micro patterns, but for the most part, you can't easily guess where the next LED is going to be because you see that it does flicker around. So this is me saying each LED one through, you know, 351 R, G and B LEDs, each individual one. So that's why you see it's red and then green and blue and then it flickers through the whole body. So, you know, then you have to figure out like, well, how am I going to take this map and transform it into what is a useful map where I want to address all the LEDs or I want to address the X, Y of the matrix. And this is kind of something that I'm doing.  So how do you do this? Is there some magical way of doing it? And the answer is no, you just sort of do it. And the way I did this is I actually ended up just writing a simple program where I would light up each LED one at a time. So this is LED zero. This is address zero. The first LED in the memory map for this LED matrix driver is this LED. And so I would actually kind of write down in a gigantic piece of text file, okay, you know, LED ring one blue is zero. And then I would, you know, increment this number to one and save it. And of course it crashes because that's my luck. Okay, so, sorry. So this is zero blue. And then I incremented my code to one and I save it and it goes green. Okay, so now I know LED, you know, the right ring, LED one address one is the green LED. And then of course when I go to two, that isn't red.  No, actually, because again, this memory map and this layout is kind of all over the place. Address two is actually on the other side in the ring.  And then three is green and then address four is red. So that one is an order. So I just sat here for like an hour and a half while Phil was doing other fun stuff. And I just mapped every single LED to the LED ring where it was. And sometimes, you know, there's always just like, oh, can I do it algorithmically or should I do it with like a literal like map? And I always recommend starting with a map even though sometimes, you know, to save code space eventually you want to go to an algorithmic method but I actually recommend making a map and then simplifying that map, like optimizing that map before you try to like figuring out like the, you know, you can look at a schematic and try to figure out what is it like this, you know, perfect algorithm that will map every LED to every location functionally. Sometimes you can do it, but often you kind of can't and I just recommend doing it with a text map. So I'll show you the text map codes if you go to the computer. So this is the code, you know, I just sat down and I did it. So this is the LED map for each ring. So, you know, LED 0 is 341, 211, 210, that's red, green, blue. And then there are patterns, right? But I kind of do the pattern stuff later and this is the right ring. And so you can see for LED 0 on the ring, the top most, it's 287, 31 and 30. Those are the three address maps that map to the LED. And, you know, what's really nice and I recommend this if you're ever having to do this is even if it's more work, try to get this work to be done into an interpreted language rather than compiled because one of the nice things about this is every time I wanted to test each LED location, every map to figure out where it ended up in the output, I could just increment a number and save it and it would like immediately run. Whereas with Arduino, I just, I've had to do this before and it takes a really long time. If you're doing it this way because you have to like upload every time you increment the number. And so instead what you can do is try to like have like a space bar that, you know, when you press the space bar on the serial console, there's a little increment and you can do it that way. So I happen to like the interpreted way but you can do it with compilers. You just have to do a little bit of, you know, maybe a button to have it increment and then it prints out what it's doing. But yeah, go through and then map every LED and then, you know, the upshot is when you're done you can have, you know, code that looks like this where the, I can add, you know, I can index into the ring object from 0 to 23 and set it to be a color wheel and that makes the rainbow, the rainbow glow here. So that's... Let me show you. Let's remember, you know, I've got two here, right? This is cool. So this is just the two rings. And then the next step is going to be to do the X, Y matrix underneath. And so you'll have three objects when you want to address into this PCB. You'll have the left ring as like a neopixel ring. The right ring is a neopixel ring and then an X, Y for the grid of LEDs that's overlaid onto it. That's that. So more to go, but much, much math has been done. But there's no, yeah, there's no real shortcut. People always say like, oh, what's the secret? And the secret is you just sit there and you just do it. And then after you've made that map then you can look and see if there's any patterns that you can use to simplify it. Sometimes there is, sometimes there isn't. But nothing really beats just sitting down and doing each LED in order until you make the map up. Any questions about that before I move on to the next thing? Okay. All right. Next up we got a teardown. We picked up a paper shoot camera. So let's let's bring this up here. Yeah. So just to be straight up, we're thinking about doing some type of like easy DIY circuit Python powered digital camera. Maybe with like machine learning and stuff because there's the machine learning, you know, for cameras. So we want to see what was out there as far as like anything with the circuit board, anything that was like sort of in this category, not really anything. But we did find this. We did find this. So we bought it. It was kind of cool. So it's, they're not, you know, inexpensive. I'll say that this is cost more than in a nice camera. But they did do a pretty good job with it. It's got kind of that retro charm. So the camera comes as a PC. We already put the batteries in because we wanted to just make sure. Yeah. And an SD card. Yeah. It looks like you can use a mini card. Yeah. There's a micro SD card on the back. It looks like micro SD slot SD. I want to make sure you keep staying in focus when you do this. Yeah. Well, I'm doing the best I can. Yeah. So it runs off of two batteries. So there's going to be obviously a boost converter. You're going to see even some boost converter technology on the back here. I'm going to zoom in so I can get to the components. So I think here, you know, it looks like there's an inductor. There's a boost converter. That's a micro SD card. There's a buzzer. There's a speaker and a speaker driver over here. It does make little noises when you take a photo. Which you kind of need to because there's no TFT. It makes a clicking sound when you take a photo. But the other cool thing is if you take the SD card out and you try to take a photo, it'll, yeah, go for it. So that's the photo. So you take a photo and then take the SD card out. If I take the SD card out. Yeah. I'm going to do it. Nope. Nope. That may feel sad. Yeah. There's also a microphone because it can take little videos. Yeah. It didn't figure out how to do that. In here, this is just a little, I don't want to take this apart yet, but there's a little camera. This is a camera module with like a built-in lens. And then it has a little piece that goes on top of it that helps you focus the lens.  I don't know if anyone really messes with this. I'm sure it's just tuned for, you know, infinite distance. There is some cool stuff here. Hall effect looks like. Hall effect sensor. URX4T, of course. That would require you to have, be able to program it. Which, you know, I don't think there's really access into that. Micro USB, you can use that to, I think, to read files off of. And if there's some DFU, I'm sure there's a DFU system. And then on the back, some more. So yeah, there's actually not that much circuitry to be honest, right? There's this little flash memory. This is probably the program memory, not the camera, you know, not the storage memory. A couple other power supply things here. Probably needed for this chip here. This probably gets boosted. This is, you know, two volts or so gets boosted up to 3.3 or five volts. And then, butt converted down to probably 1.8 and 2.8. And apparently, maybe you can point this out, the batteries can be rechargeable batteries and you can recharge it via USB. I'm not actually sure about that. I know, it says on the box. A couple things it says on the box. I'm not sure about that. Because I'm a little suspicious. I wouldn't recommend it. I would use alkalines. And then it looks like here, FL, I think this is probably flash. There's probably, you know, an add-on or an alternative version. I would say that this board has gone through a couple revisions at least because the photo I saw online when I was kind of looking at this did not have an all-in-one chip. It had a chip plus of, you know, SRAM chunk. And this is like an all-in-one chip. This chip is a Novotech NT96658. You know, it's an all-in-one camera chip. These exist. There's probably no data sheet for it. You know, this is a Taiwanese company and also probably a Taiwanese chip design. They probably worked with the company and said, look, you know, we just want this chip. There's no TFT again. There's a little viewfinder that you would look through to take a photo. And then did you want to show some of the photos? You said you wanted to share? Yeah, I have. I can just show. I took one in just color mode. I didn't even point it right or figure in anything. And then I took one. And it's black and white, which I thought was pretty good. Yeah, so let me just grab them real fast. I thought I had them already, but I did not. That's okay. Well, you mentioned them earlier, so here's that. Yeah. So this is a color photo. So it's kind of got, you know, a Lomo lens type thing going on there. And then this is a black and white one. So there's four filters. Let's go to the overhead again. I'll show the filter thing. So when you get the camera, zoom back out, the PCB comes bare and then you have, there's a variety of different paper enclosures.  That's not really true. I mean, like, you have the same ecological footprint as any other camera just because the... I've learned there's no nuance, so... I mean, there's no nuance, but I'll say just this is, it's a cool camera. I wouldn't, don't buy this if this is the most important thing for you to save the planet. Just don't buy the camera.  So, you know, you kind of have it in pieces and it kind of has this nice like paper look and then what is cool here is this is like a little magnetic ring here.  And this is the button that you press to take a photo and then again this is that viewfinder, no TFT, and then there's only one UI element and there's a switch. And if you look carefully at the switch, this is a four output switch. There's color, black and white, green and purple. Actually, I don't know what the green and purple is. I got to try that. Yeah, we only tried the color and the black and white obviously. But there's four options. There's four filters built in. That said, you know, it's, it does do video. The image quality is quite good. You know, it is, it is definitely an all in one camera thing and you can't hack it.  But I thought it was kind of a cool story. It's this, you know, Taiwanese engineer who designed these cameras and just wanted like it's kind of a little bit of like NYU ITP type project, but became a real product and now these are, these are super fun. Also comes the lanyard you can wear. So kind of cool. All right. And then you were looking at this four position switch. Well, is there any other questions before we? Yeah, keep going. Okay, great. Okay, cool. Yeah. So I thought for the great search, we would show how to Why don't you show that switch? Show the switch on the back, which is a switch. And then I'm going to go into a great search mode. Yes. A four position switch. Where did you Do you ask a lady? I brought you by Digikey. Thank you, Digikey. And Ladyada, Ladyada, you use your engineering powers every single week to find things on Digikey. What is the great search this week? Okay. This week we got this paper shoot camera that we just did a little bit of tear down on and I really like this four position switch. I'm a huge fan of slide switches. I really think they're super awesome.  But, you know, if you're not doing tactile buttons, I really like slide switches. They're easy to understand. They're, they're, you know, you can use them even if you aren't looking at something you by feel, which I really like, so they're good for accessibility.  They're good for power. They're good for signal. They're good for everything. So, you know, on the, on the LED glasses design here, I've got, this is a slide switch that I use for on off. So you can turn the whole thing on and off pretty easily with the slide switch. There's also buttons, of course, to do reset, but slide switches are where it's at, in my opinion. And I've used, you know, single pole, single throw switches, which are kind of rare. I usually use tactile buttons.  But then this was, this was a fabulous single pole four throw. And I thought like, let's, let's check that out. Because this could be useful for other people. And I like that it's a through-hole switch. You could easily add it to a design to add a four elements of selection. So let's go to the computer and actually wanted to show real fast different switch schematics and what they mean. So this is, you know, I always get confused. What's the pole and what's the throw. So if you don't remember which is which, don't worry. I've been doing this for 20 years. I still can't remember. But the most common thing is, you know, a single pole, single throw, which is like a, usually a tactile button.  There's a single pole double throw, SPDT, which means there's a, there's a single thing and it can go between, it can throw between two options. So that's usually an on off switch. There is the single pole triple throw. So again, three options.  I'll go to this image and make it nice and large. So the single pole single throw is SPST and then SPDT. And then you'll also often see DPDT that's the dual pole dual throw. I see these often because surface mount slides, which is from mechanical strength, they often have two separate switches. It's also good, the double pole double throw. If you want to, I like these switches when it's like, oh, I want to switch I squared C or UART connections. You want to switch like a simple two wire bus from one set of pins to another or from controller to peripheral. I like the SPDT or DPDT. I use those often on our shields, like for GPS modules where it's like, oh, do you want to use UART on the soft serial or the hardware serial? One switch switches both pins over between two sets. But then when you get to SP3T and above, you don't use T like use S for single D for dual. But when you get to three or four, you use the number. So just remember that don't SPT T does not exist. There's no T for three. You actually use the number three.  Then SPDT also totally awesome. Lots of different options. Relays also you can get them in SPDT type. But if you want to do, you know, fourth row, it's not SPFT, which sounds like something you put on your skin to avoid getting burned. You actually want to do SP4T. So, SP4T actually will get you the thing you want. And I think you can get five T, but four T is kind of maxed out. DT and three T are kind of not too uncommon. But four T is quite rare. In fact, it's so rare that there's only 31 options and slide switches. There's also RF switches. You know, there's soft switches. So that philosophy of like, completely software implemented, which is what you'll get with RF switches and stuff. But for slide switches, oh, toggle switches also, you know, those are, you can use those, but they tend to stick out of it. Not as easy to implement into design. For slide switches, yeah, there's not that many, you know, I mean, they do look kind of like what we want, but there's not a ton. That said, let's only look which cuts it down to only eight options. Really not that many. But all these look pretty good. This one, I thought was like really compact, you know, surprisingly so. This looks very slim. So I don't really want this one. And this one is a right angle. One thing to note when you're programming these, when you're, when you're putting these into your design, really look at the datasheet very carefully because it's not like there's sometimes two pins, even though it's a little pole, sometimes there's two pins for the mechanical layout. Sometimes there's two poles and sometimes they're not in the order that you think it is. Like the leftmost switch is not the leftmost pin or whatever. So just really read the datasheet and maybe use a multimeter when you get the part to really make sure you're mapping it correctly. But these all look pretty good.  You know, there are voltage ratings. If you're using these for power switches, check out the voltage rating and the current ratings.  I'll connect it to a transistor and then the transistor does the, the switching itself. But that said, the one that I kind of like the most, you know, there's inexpensive ones. This one's the cheapest. This was, you know, 45 cents per it's a right angle style and I do like that it connects on the side. But for style and looks and also number of parts in stock, the, this one, the APEM one, I mean, I was 47,000 pieces in stock, which is always kind of promising. I like that. And I mean, like it gets a lot and then they do have the the 3D rendering of this. So if you're interested in like, what does this look like?  The the actuator sticks up quite a bit and I think it's easier to solder into place. You know, it is open so you just have to make sure that it's keep it dust proof, but otherwise so you can switch, you know, not too bad dollar or so and then can do up to 300 milliamps at 125 volts. So you could use this as your power switch. You don't need to have any extra circuitry or you can use it a signal if you like either one, but a nice switch for SP-4T. Good for you when you're making a camera with four different filters. And that's the good church? So realize these look like the like when's the next album gonna drop? Lady Aida. So anyways, as folks can probably guess, yeah, we're probably gonna do a camera. Folks are like, we should start a petition. No, we're gonna do it. We're in research mode. So yeah, we'd like to do a camera. I don't think it's gonna cause as much of this one. No, but it'll be a little different. It'll be, you know, we program bull and circuit python. We'll see. It takes a while to get these designs at the door, but we can start researching and seeing, getting ideas. Like, I kind of like that little filter switch. It's kind of cool. And I like the fold over paper design and the batter case. They did a good job with this. I like it. All right, we'll see everybody during the week. Thanks everybody. Show lineup and more. See ya. Bye.


Hi, I'm Dr. Sunil Kini working as a concert and orthopedic surgeon at Manipal Hospital's Bangalore Types of arthritis first and foremost most important is osteoarthritis or age-related arthritis, which mainly affects the elderly population But as I said nowadays, it's also seen in as young as people as late 40s and early 50s Other types of arthritis are inflammatory arthritis. For example, rheumatoid arthritis Soriatic arthritis, systemic lupus erythematosus. All these conditions affect predominantly the middle and the young population There are other forms of arthritis such as crystalline use arthritis also called as gouty arthritis The small population of this involved bacterial arthritis, viral arthritis or arthralgia


Bemidji Middle School showed off their creative side of their students with their first ever art show. Lakeland News reporter Sherelle Moore has a look for this week's Golden Apple. Bemidji Middle School Science Fair attendees were bound to see some pretty cool projects during the event but this year guests were given a bonus treat as the BMS art show was happening simultaneously. We did it the same night as the science fair just because we knew there would be a lot of foot traffic and a lot of people in the building from the community so a lot of people would be able to see the art. The art show featured all different mediums from paper mache to acrylic watercolor and mixed media. Students were actually able to select what piece they wanted to have in the show so I let them choose what they were the most proud of and that's the piece that they have in the show. This one is whispers from below and I made it with some craft metal and some wood and it's more of like an abstract piece. It kind of looks like metal seaweed kind of. My inspiration for my art piece is that it's actually my future job ideas I actually want to be a news reporter when I'm older so I and I also love photography it's one of my favorite hobbies so I decided to make a piece related to both of those. This was the first ever art show at Bemidji Middle School and around 200 students had the opportunity to submit their work. There's a good chance that this art show could have another repeat in the future. All the students from first and second quarter have art here in the winter art show and then we plan on having another art show in the spring for third and fourth quarter students so everybody has an opportunity to show their work. The art show was deemed a hit. Not only did the pieces reach a wider audience but students also gained a few bonus benefits. It's kind of cool being a part of the first art show here especially with Miss Westie because I was in her class for a whole quarter here and it was just fun because I know her now and when I see her in the hallways I can just say hi and talk to her. It felt really good to show off all my art and get so much like so I can get everyone inspired to look at art in a different way and how pretty it can be. Reporting of Bemidji with this week's Golden Apple, Stromor, Lakeland News. If you enjoyed this segment of Lakeland News please consider making a tax-deductible contribution to Lakeland PBS.


What's up everybody, Jason here with jazzyoverjazzbeadscasebrakes.com. Just sold out 2019-20 Panini Revolution basketball This is a eight box case break two random teams each number one get 15 total spots all card ship everybody gets two random teams in the NBA and this is a loan inner case so there you go and Let's randomize the customer names. We got a dice roll here. It's a five in a two for seven times So if you bought in straight up from John Narek Patrick and Guy you guys are in there and then the rest From so men from a mosaic sell out 356 down to Ron down to mosaic sell 357 Double up your names to get the full 30 and again five in a two seven times. Good luck one two three four five six and seven Patrick down a so men one two three four five six and seven Phoenix Suns down to the Cleveland Cavaliers All right Patrick with the Suns wrong with us first even with the Lakers John with the Bulls Guy we have the Hornets calling with the Bucks even with the Pistons John with the Knicks Narek You have the Nuggets Mark you have the Pelicans So I'm in with the Nets John with the Clippers Ron with the Magic Narek with the Thunder Eric you have the Wizards round with the Pacers guy with the Hawks John with the Rockets Narek with the Jazz calling with the Wars Narek with the T Wolves Patrick with the 76ers Patrick K that is Patrick H with the Kings round the Blazers Jason with the Mavericks and Raptors Patrick with the Heat Eric with the Celtics and Mark man, didn't I call this earlier guys? I wish I could have recorded this Mark from Mosaic cell 357 actually did what I said could be possible He won a spot in Mosaic cell 357 and he got both the Memphis Grizzlies and the New Orleans Pelicans man That's crazy So men and the Cavaliers. I told you guys that could happen and it did Wow There you go. What a randomizer That is crazy Yeah, I match this 357 that was just the one we just did right now guys Geez I literally said it guys and no one was lying. I don't even think a lot of people wanted to buy into this I get it though. It's kind of tough to hit in this. It's actually autographs, but I Mean, I don't I think Mark's pretty happy, right? I mean you got you got a couple of spots Obviously in each like pack break. I believe so, you know, you did put in the work But the fact that the randomizer actually landed with your one spot in there Grizzlies and the Pelicans is amazing See you guys What a good salesman right trying to tell you guys that could happen and it does All right, if anybody wants to trade, let me know if not. We're closing it Trying to close Good luck everybody. Thanks for the fill and let's actually pull some fire out of here I Look at no guaranteed autographs in every box, but they do say six per case So there could be up to six But I don't know if it was inner maybe three out of the eight So let's hope more autographs than none, but they aren't guaranteed but Obviously we're looking for like a galactic on this side. So it's just a loose inner we got case So who knows what has been pulled out of the other case? A lot of times distributors open up the masters and sell them as inners So we don't know what happens to the other two the other half of the case I Not sure Matt Little bit on the slower side today. We're able to get these last couple breaks filled right now, but If you guys want to try to fill something else You guys can try let's do it Lot of pre orders today on our website for the new releases Wednesday and Friday, so We have a couple breaks. I still think we can Potentially give a shot optic team balls only down to 16 left chance at early words still available right now Hit parade will be really really nice. I'm surprised. No one's touched that like I know it's a high-risk high reward only three hits popping out, but man for 59 99 60 bucks $60 hit can turn into a Pretty good and proper right there Both stand it would be very nice if we sold out that score and an additional score break They do too, but doesn't mean we can't point 22 bucks guys 22 bucks Opportunity to claim up to eight R&B spots where they would have been around 70 to 80 and the other one was around 90 I Don't mind you guys giving that a shot if you guys really want to give it a shot We can sell one in the next like 15 30 minutes. I guarantee you we can sell the next one out quickly Someone needs to really start a rally there guys. If not, it's definitely gonna break tomorrow. We're gonna need some help though I I Love us Momura had a crazy game, too All right, we got Deandre hunter autographed there for the Atlanta Hawks going to guy Talon Horn Tucker. We got Tyler hero And we got to 75 Sunburst Romeo Langford and Kevin love to 100 Cosmic In an autograph and two parallel cars at our number. That's crazy. So I could don't boy PJ Washington, Jr. Fractal Yeah Kevin ox fractal To This team Goes We got Andrew Wiggins out of 75 Sunbursts By Nice little jam around liftoff Well, we're two for two on autographs you got Pascal Siakam Toronto after this going to Jason Jordan pool Kobe whites Yanis that's a little KPJ fractal And we got play Thompson impact to 149 little jammer at We got miles Turner The Indiana Pacers The job and we got out of 75 Sunbursts the Andre Aiton for the Suns and a Patrick Go go beatat say Group carry Irving a Zion liftoff Will be white All right guys one more box, and then we'll open up the second half of the case Alrighty last box and then we'll go through the second half Alexander Walker So I could don't boy Look at on church supernova Romeo Lankford fractal It killed in Johnson And we got 249 impact there is garland Yanis and shockwave LeBron James Lakers has been a Steven Next floor guys. I was so far. We've got in a couple of autos. That's good. That's last four boxes right here All right, we got Brandon Clark liftoff Jordan pool on a walker Zion revolution rookie and we got Julius Randle the 149 impact Xbox Kobe white. It's a nice one It is a Astro Bruno Fernanda the 149 impact and we have Carson Edwards Autograph of the Boston Celtics when Eric Rui ha Chimura Fractal, I'm gonna kind of see all those right there too guys Just finished off at the break though That's your little Wow, we got a Jason Tatum sunburst 39 to 75. That's nice And a out of 100 cosmic DeMar DeRosa I've had a lot of numbered cards in this case Zion base Our last box guys for the Thunder de Milo galanard is 75 Julius Rand Alrighty guys, so here you go. Do a little quick recap I'm gonna be pennies leaving all of these here guys all the like fractals Stuff like that shockwave Astros etc etc some of the other rookies very penises a lot of the ones that will be top-loaded But here were some of the bigger stuff. We got a Zion rookie This is a out of 149 impact shockwave Lebron numbered here garland to 149 most turn autograph these are numbered here a Lot of numbered cards in this one lift off John Moran base couple base siacum auto lift off the Andre Hunter Zion base DeMar DeRosa and Jason Tatum. That is a fractal Rui ha Chimura Carson Edwards auto Bruno Fernando impact to 149 and a Kobe white so all in all guys one two three four five six seven eight nine ten eleven numbered cards out of the eight Boxes was just pretty strong couple jaw and Zion rookies One two three four autos half the case there and then some numbered stuff here as well Appreciate it guys. Jasper's case breaks.com