Yes, raise your hand if you have a free seat next to you so that people are walking around Keep it up. It's only an hour. Actually the room runs until seven o'clock So if you could keep your hand up until seven o'clock, that'd be great. Oh, sorry. It's 12 o'clock. Maxim take it away It should be on right Can you hear me right in the back? We're good Good. All right. So this talk is about multicloud CI CD with open stack in Kubernetes So if you're here for something else, you know, I Don't know. So I'll start by Presenting myself. I'm Maxim. I'm a cloud consultant. I help companies with their public and private cloud projects Usually it's like a combination of open stack Kubernetes Seth some CI CD And kind of mix it all together to accelerate development processes at different companies and allow them to Yeah, use the DevOps principles and so on.  So, you know, that's I think enough about me. You're not here to learn about that I'll get going with an introduction So the the talk is about multi clouds CI CD open stack in Kubernetes I'll go through those terms and see kind of explain what I mean there and why this might be of interest to you So first the multicloud aspect so multicloud there. I mean the fact of running across several clouds Kind of self explanatory, but That's kind of what I mean with it and other people might mean other things Why do you want to do that? Or why might you want to do that? You have you could have lots of motivations there? Usually the the most common motivation for multicloud is around Residency or across several providers So you don't want to put all your infrastructure eggs into the one basket. You want to spread the risk across several providers say provider one and provider two and if provider one has a huge global outage you can Still run your workloads on provider two without any impact for your customers So that's like one of the motivations for for multicloud is around residency and mitigating global outages of car providers sometimes we see them in the news And it's nothing fun to have your applications go down because of somebody else's outage There is also like a vendor lock in aspect if you're running with a single car provider You kind of locked within their ecosystem and that might be a WS So that could be like an open stack based car provider. You're still locked in with that provider and that's a risk if maybe tomorrow they decide to do something you You don't like maybe they acquire a competitor of yours or they start to increase prices It's not really good position to be in to have like a single vendor to be locked in there So having several cloud providers is the way to mitigate this and Reduce the vendor lock in you could scale down your infrastructure in that one cloud provider and then scale out into the other ones to Switch over to another one There's also a cost motivation if You have one cloud provider that has really good prices on one type of infrastructure Maybe it has really good prices on VMs and another cloud provider has really good prices on storage or GPU instances you could take advantage of The best in class or the best providers for those workloads and run some workloads in the we run that has a good GPU Instances and another one with some other workloads into the other provider that has maybe Good Storage services This is also lots of people want to do hybrid cloud strategy where they have a private cloud deployment on on prem Usually open stack that could be some other cloud platforms and They want to run the baseline load on prem and do cloud bursting into public cloud providers to handle spikes around Maybe if your new commerce website around you have like a sales period on Christmas or something like that You could handle your spikes there in the public cloud and use that only when you need it and that could be Reduction thing for your infrastructure Multi-cloud is also around Features some cloud providers don't have GPU instances at all some cloud providers Have some features and some have other features So you might be required to like combine several cloud providers just because you need those two features And there's not one provider that has all of them So that that could be a thing as well and kind of in that direction you have the locations Maybe your application is a very latency sensitive and you want to to be really close to your customers maybe some live streaming thing or Some gaming platform and you want to be really close to your end users and There's not a single provider that has all the locations in the world So you're gonna need to like combine different infrastructure and Make like a multi-cloud strategy there.  So CI CD is continuous integration continuous delivery So to test the code continuously and then continuously deploy it production as well That's really what I mean with CI CD The the motivation there is to to allow your developers to fail fast You want to go really quickly between the time when you have an idea and the time you Can realize that idea and potentially fail because you don't want to invest like years of development to realize Oh, this is a bad idea. It doesn't work out. It's better if you can automate the whole process and realize that early on right so CI CD you will need a lot of automation We don't want to To rely on humans doing things. We want to automate as much as possible For instance, we don't want to involve DevOps team or you my ops people to deploy this new version of the software This should be fully automated so we can reduce the cost of failures for instance and Accelerate the time to to go into production This is really important when you're doing multicloud because When you start to have more than one location if you do things manually It's really difficult to keep the consistency across those locations and you can really easily end up in situations where you make a typo or I mean we're all humans we make mistakes and that happens and And you don't realize it right away and you end up in some bugs that are happening only in that one Location don't happen in the other ones. It's difficult to track down what's going on and it's not fun for your customers so really important to automate this whole infrastructure CI CD thing And then we have Open stack in communities here So what is open stack because you might not know about a bunch back. It's like an API driven infrastructure platform I see some people taking photos of the slides. There will be a link to the To the slides at the end so you can just wait for that if you can Download them later on so back to open stack. It's an API driven open infrastructure platform So basically it's like an API and you can boot up the ends into different locations They are around 60 cloud providers Around the world that provide commercial services there so you can go on their website you register and they are gonna allow you to boot up the VM on their infrastructure For a few of course and if you want to install open stack on-prem, that's also an option so just to to say that there's like an ecosystem around the consign that's pretty large and Yeah Then Kubernetes so communities is a container ecosystem Very developer centric, so that's because developers can run docker on their Computer and then they can package the application in the same way on the computer on their laptop as what we were running production That's like the portability of using containers makes trouble shooting much easier and you don't end up in situation where You have differences between your development environment your staging environment new production environments there since you use containers you Have this portability and makes things more consistent across your environment Alright, so that's like the definition of the terms then this is a diagram of like overview of how this kind of fits together We have on the left-hand side the what I call the data plane So you will have your users they will talk to your application and this is where you have your business logic This is like your product nothing you develop whatever it is Your application will run on Kubernetes with some container There and in Kubernetes will run on open stack kind of to clarify how like the big pieces interact with each other And then on the right-hand side, we have what I call the control plane and this is where your DevOps People or your developers or your operations people will will work they will work towards get lab in this instance The CI CD platform and this will Talk to the different components and and make the magic happen at the right time at the right place so Your developers can push a new version to your CI CD platform, and then it will make it happen in open stack Kubernetes and application Wherever is needed. So this is kind of the idea container platform infrastructure service and business logic All right That's like the general thing Now I'll go into the more technical aspects of it. So the architecture and how we can go from the web browser to the global multi-client architecture so it's maybe obvious to some people that Your clients they will they will enter your your application from like some form of DNS name that's like the entry point that they have and They will type that in a web browser and then DNS resolution will happen and hopefully at one point they will reach application but Since we want to do multi-cloud Architecture we're gonna need some form of global load balancing So this is really important and this needs to happen really early on So you have kind of different options there you could use CDN and you might be already using a CDN for your application for caching or for accelerating things so you could leverage features in your CDN provider to Go balance things globally. So some CDN providers are like you can set policies and routing rules and such So this is like one option Another option that you have is to use something at the DNS level since the DNS is like the entry point here Kind of three main approaches you could use some form of like geo routing DNS There is a route 53 in DIN that have it as commercial services and on the open source front You can do things in bind you can do things with a geo DNS you have a lot of products that can help you But we'll need a bit of hands-on there to get that going so geo DNS is The idea is to route the query to the closest server Or plus a cloud to the user, right? And that works for most applications and some application required Another option something you could do is like some DIY dynamic DNS updates So maybe you have like a background process that updates your DNS record on the fly based on Whatever custom metrics you have that makes sense for your application maybe you want to Do this based on load or something like this, so this could be a simple crumb job or something more complicated it's kind of up to you and kind of the simplest option is to do DNS round robin and There you just set several a records for one DNS name a one for each top provider, for instance The thing to know about DNS round robin is that you have very little control over how your clients will interpret this so you don't you can't really Control how did this will be the balance is up to the client to Handle the loop dancing so that that doesn't work for all applications, but that's a solution that work for some and that might work for you It's very simple All right, so we have our application It goes through our global dancer and then we want to the request goes through the global dancer And then we wanted to hit one of our application containers, right? That's the next step in the chain. So in this example will have like three example clouds One on the left one in the middle on the right and We'll have our application hit one hour containers but Something we need to clarify is that from this to work out your application needs to have certain properties This will not work with any kind of application needs to be some form of 12 factor application If you know the 12 factor principles The application needs to be localized, right? We want to run this on Kubernetes Kubernetes uses containers So if our application is not localized We can't run it on Kubernetes Foremost languages. This is like a solved problem. You have Examples for like all the main languages on how to decorate applications. So that should be fine Your application here. I'm gonna assume it's HTTP based some form of a web app with like back in the PI something like that If you're doing something else, you know, it might work might not it's gonna be more complicated And your application needs to to be distributed in in some shape or form In there, I mean the application is to be able to run into an active active mode. So Several active instances working together That's really important. So This doesn't work for all types of application, but most I think right, so We have our application layer and our application layer runs on top of Kubernetes Kubernetes is gonna be our cloud abstraction, which will give us an API to the Kubernetes API Which will abstract all the constructs from the underlying hardware and the underlying cloud providers Each cloud provider is a unique here. We have one layer that will give us One API that works across the top right is being open-style AWS, whatever It's really really important to do One cluster for location, you know, there are no circumstances. You should do one cluster across several data centers This is a really bad idea in terms of failure domain You can lose Chrome very easily. This is just a source of problems. So one cluster for location Even if it's a small location, but just one server, you know, Kubernetes can run on a single server. That's fine In terms of Kubernetes features, we will use ingress controllers since it's an HTTP based application That's going to be our reverse proxy layer. And then we'll use some form of federation more on federation so Federation can mean several things based on what's your background and I'll cover two and a half of those So federation if you come like from an open stack background or IDP background You're thinking mostly about authentication federation kind of like single sign-on experience where you can use one set of credentials or one token to access several platforms So this is possible in Kubernetes and very much recommended as soon as you have several clusters even if it's just test and probe and Most common way to do this is open ID and webhooks that are supported by the community's API server The webhook way is very simple Every time the API server will see a token that it doesn't know about it will call that webhook that you configure and that webhook is responsible to Identify if this token is valid and if it's valid who is it about and which group this user or service account is So that's really useful if you have like in-house IDP or authentication solution and you want to Integrate that in there somehow The simplest way is really the open ID connects support in the Kubernetes You just have to flag that you need to set you know your API server. That's OIDC sure URL OIDC client ID and You are really good to go on the server side You have lots of open ID connect providers That are available. You can use Google you can use GitHub you can get lab and there are plenty of online services And if you're into the self hosted thing you can use get lab on-prem Keep look index. So you're probably already using one of those thing and it's really nice to be able to just Drop it in and we use your existing authentication platform on the client side. It's a little bit More tricky since the clients they will need to provide the token to identify himself and most people not really They don't really know how to do that.  So this is really interesting you have another Kubernetes Federation is Cube fed that was called before uber net is and this is a completely different concept. There is One API to rule them all basically is the idea You have one Kubernetes API and that Kubernetes API talks to a bunch of different clusters and make things happen This is really cool idea, but It started out as a Qubectl v1 which was discontinued last year and was supposed to be replaced with Qubectl v2 Which is work in progress So as operators by kind of left in this in between situation where we don't really know what to do Should we go with a Qubectl v1 which works only with kind of old version of Kubernetes and it's not really supported Or should we go with a in development version Qubectl v2 cross our fingers so this is a bit of a tricky situation and Yeah, it's how Things are and I'm sure contribution is welcome in this Q fed project But in the meanwhile, I'm gonna Choose to do some DIY Magic in the in git lab to handle the several clusters and then later on when Q fed v2 becomes Ready, then we can backport that and fixing later. Hopefully So that's that for Kubernetes Federation And then we have open stack at the bottom Well opens like run some hardware, but you know, we are talking clouds. So we are upside that In open stack terms, we are gonna need some Nova instances. So those are basically DM Some security security groups and that's basically firewall rules that are applied on each virtual port in the LibDir and Then we're gonna need a set of key pairs for handling SSH access in a certain manner and server groups Server groups is somewhat optional, but if you're really serious about this, it's not optional So server groups is like a mechanism where you tell these group of servers I don't want them to run on the same high providers and This is not something you think about maybe from day one But once you have a high provider going down and you have all your etc. Do not dare then you notice so Think about that in advance if you're deploying Kubernetes on any platform really actually You should be careful about those things On the new trim side So that's the networking project in OpenStack We're just gonna use a network a subnet a router and a set of floating IPs So floating IPs is basically public IPs that are Matted in So we are using really basic constructs in OpenStack. We're not using any of the fancy features Keeping things simple. This is the key features in OpenStack the most mature features. So this is what we use there Alright, so That's that for the like the architecture That's a lot of like things a lot of pieces We're gonna need some tooling to make that happen in an automated fashion, right? I'm gonna present a set of tools. Those are the Tools I think are most popular I'm not like endorsing one in particular if you have another tool that you like most, you know cool That's fine You know some people are very opinionated about tools and such so What works for you? That's great I'll start with the Splitting this in kind of two section to big section. There's the infratools. So those are the tools that we will use to To manage the VMs basically, we're gonna need to populate some VMs and we want some tooling with that We don't want somebody sitting in the web UI or in the CLI and like OpenStack create VM or whatever so I'll start with a OpenStack native tool, which is called heat. That's a like OpenStack project that Handling automation you pass it a file that describes how you want your infrastructure to look and it's gonna make sure that those VMs and Networks and floating IPs become available to you This is this works very well the kind of two downsides there is that It's a small ish ecosystem. So it's difficult to find examples on GitHub or wherever is it you look so you need to do a lot of DIY and a lot of like You need to know about heat. You need to have expertise in heat And it's open stack only right you can't use the open stack heat in Google cloud So you're gonna need to use another tool anyway for that So kind of here what I'm saying is if you know heat if you're using heat if you're open stack only That's that's probably a good choice But if you want to do multi cloud across different providers different software provider like open stack and cloud stack and Google cloud You're probably out of luck You have unseable as another option and there I'm talking specifically about the unseable cloud modules So unseable is really big. I'm talking only about the cloud modules. So those are like the OS and the score server modules that Allow you to talk to the communities API into like a general unseable module thing and This has isn't a lot more mature has support for EWS Google cloud open stack VMware a bunch more platforms And you probably already know unseable and you probably already use it in some places your company So that could be a nice choice, you know based on your team and what they know last tool is terraform and terraform is a Tool that is designed for infrastructure management. We are unseable those lots of stuff and inframagement is one of those things terraform those inframagements only so a little bit of a different approach there and That is visible in the features that you have in terraform. For instance, you can When you run terraform it asks you this is what I'm about to do. Are you really sure this is, you know What you want to do so you can review that and unseable. That's not so easy to make this kind of prompts and plans and such and since the terraform is focused on Inframagement has a huge amount of platform that are supported. So if you're into like some exotic platforms, this is probably a good way All right, so now that we have our Let's choose a tool for the inframagement and we'll want to install Kubernetes on that, right? so if we I will start again with the open stack native tool, which is Macdom, which is an open stack project and Has kind of the same downsize as heat. So if you're open stack only if you know Open stack really well. This is like a good way to go. It uses heat in the background to do stuff Works really well. It's kind of a small ecosystem. Last I checked there was no unseable cloud module for it. So You need to double check those things, I think You have some other tools that are available to install Kubernetes You have cops for instance, and this one is not open stack at all. It's only AWS. So, you know, you could use different tools. Maybe you use Magnum for your open stack stuff and cops for your AWS stuff Same thing with Rancher. Rancher doesn't really have like native open stack support But has support for AWS, Google Cloud, VMware and a few other platforms. So there you could also combine Rancher with Magnum if you want and And lastly, CubeSpray is also like a popular deployment tool for Kubernetes and it supports Open stack, AWS, Azure, Vermetal, vSphere Really, it doesn't care where your VMs are, where your operating system is. It's just it's a set of unseable playbooks It just needs an IP address with S and H open and that's all what it cares about So this is really the only way if you want to do one of the most common way if you want to do Kubernetes and Vermetal functions and The nice thing with CubeSpray is that it comes built in with a set of terraform recipes or plans that you can directly use for AWS and Open stack. So if you don't know terraform, you could just use those and Get going that way. So that's that for the tools. No, one the CI tools So we're going to need some CI tools. I talked about GateLab before but if you use Jenkins or whatever, that's fine with me as well I'm just like very familiar with GateLab and I Like that the integration with the Git repo directly in the merge requests. It's all in one solution I think it's kind of neat for the CI part But you know if you want to use Zool or Jenkins or some commercial solution that's fine as well In terms of your like application pipeline, you're gonna want to do something like run some checks make sure that this commits Makes any sense. Is this like something worth compiling at all? Then we're gonna build this or docker build which will probably compile the code and make Container image Then we're gonna run some tests.  So that's like the CI aspect. There's also like a new trend That's a new set of tools that are starting to emerge those are like the GitOps tools things like we've flogs and Argo CD I didn't have time to Like include that in the demo maybe for some other time. So it's a different concept It's more like you have an agent running in your cluster and it will ask Some central git repo to to see should I apply something? So whereas the CI approach is your CI contacts your cluster in the GitOps Tools, it's your cluster contacts your CI So this is interesting for people who don't have public IPs. Maybe they are running The communities cluster in shops and they have dynamic IPs or whatever. So different, you know tools that you have to dispose Right. Yes. So that's it for the tools now Now it's the demo time So all the source code of the demo is available at the URL below gitlab.com slash multiclown dash open stack that open stack dash k8s Have a look there if you want the link is in the slides Right. So I talked a lot about different solutions different options, but for the demo you have to choose something, right? So I selected DNS round robin because I don't have access to a CDN and you know, this is what I had access to I used kubespray I used terraform and for terraform I use the recipes or the plans that are built in kubespray GitLab CI with what they call the auto DevOps feature and that's basically a wrapper around Docker build helm install So if you're using any other CI tool that's cool, you know, just Do something like that and the demo if it works runs on 27 different data centers Operated by 18 different companies and they run open stack from version Havana, which is like Three four years ago to Rocky, which is like latest release So kind of to show like it's a huge variety of data centers Different versions and the idea is if there is a bug in one version that affects you Hopefully doesn't affect everybody, right? Again, the source code is linked there I need to give a big thank you to all the cloud providers that are participating so all those different companies are providing some resources to make this demo happen and Big thank you to them. Otherwise, without them, it wouldn't be possible right now Right, so I'm gonna switch windows and I hope it will be visible in the back so if you go to the link that was in the slides where the The source code is you have four repos One called Docker Cube Spray Ansible and that's basically a utility image Nothing special in there just pre-installed tools to make the CI pipeline go faster Then there is auto deploy app. That's a git repo containing what's called a Helm chart That's a fork of the upstream git lab one and a couple of modifications to make it Multi-cloud compatible the same so very few Modifications there and then the two most important repos are app and clusters app is my demo app and this is just some hello world thing I wrote and Clusters is the repo that handle the infrastructure as code management of all the community cluster across the 27 locations and some other things right so Love the token That's fine The app. All right, so this is the hello world app It just says hello world and it shows the city that is serving the Request so right now we are hitting gravely in and that's in an off-of-lance and If we like refresh it might hit some other location and I should There is some feedback going on with no So like I said since it's doing DNS round robin it's completely up to the client What happens with those things and on Mac natively it really sticks to the one Record it has so it was sticking to gravely in my VPN through something else and Now we're hitting Amsterdam so DNS marabin is really just for the demo Probably not a great idea to use that in production is especially in this example since you have some invitations All right, this is the repo app that contains a Docker file and up to pie Docker file is really simple. We just Install the requirements from pip and then we run the unicorn with our app The app is just few like what 50 lines or so and talks to some API to fetch those nice images based on the Location and then shows And the HTML comes from this templates folder, which is using Jinja All right, so All right, that's that I Will go over to index of html and Here I can go hit edit And I will change hello world from to hello falls them 2019 and I will commit into master which you should not do but Yeah, we don't have time for the demo to run a topic branch and then merge that later to master so, you know Hello falls them. At least we have a commit message Yeah, so Just follow your development workflow there, you know topic branch and then merge requests Second pair of I for review and then merge that but it's a demo Then I'm gonna hit the pipelines It'd be good if And then we have our GitLab CI going So we're running Build and test at the same time. You probably want to like do some pre-flight checks before I can have narrowed down the Pipeline to as short as possible to have a demo of reasonable time and then We have all the CI jobs to deploy in all the different locations, right? And I made a small web app to visualize that so currently everything is green and then things will start to change colors as we Have our docker image of a build and we will start to deploy stuff in different locations This takes a few minutes. So keep that in mind and I will demo another thing while this builds All right, so we're not stuck here for a long time So I will try to move this over here and then Resize this like so All right, so now we'll talk a little bit about the Cluster management repo so there's a cluster of repo that have Really two scripts up to the sage and download a sage up to the sage Boots up a new clusters with terraform and then runs kubespray to some communities there and download a sage destroys everything in that data center really simple stuff and Then we have the CI there as well Yeah, so you can see on right-hand side that stuff is being deployed as we speak, right? So the pipeline for clusters is very simple on the left-hand side you have CI job to deploy clusters and on the right-hand side to destroy them so I just click this button to Re-run the CI there and install it and this one to destroy it All right, so stuff is still being deployed now. I will show the The Cuburals thing and how we can see the Kubernetes API So I'll come back over there in clusters repo there is a Folder called kubros and then we'll just do kubros sage This will run kubros locally on my machine, but you should really run this as a web service somewhere And I'll copy this We'll open it That's no good. All right, let's disable this maybe the modify role, right, so Then I hit the single sign on or the IDP identity provider here is get lab.com and you ask me Are you sure you want to give a talk into the Kubernetes demo? Yes, and Then it tells me everything is good. You can download the config file Then I can move the config file from my downloads folder into Scott but it's dot cube slash config Then I can do cube CTL config get context and We can see all the different data centers we have then we can do keep CTL Get pods before Minus an app to select the namespace in Kubernetes and dash dash context London So this we should see the pods running in London and now I can see let's see the pods running in Amsterdam And this is you know all from one CLI. I don't have to like configure too much And something we can try is to delete this pod Here and I've set some or back policies so that this access is only read-only So it says no you cannot delete pod and this is just an example of or back policies in Kubernetes So you could set this guy is allowed to delete stuff and this one is not Anyway That's the Cube CTL like gross thing and now we can come back Here and we see all our deployments are good and We can see it's all green Perfect, and if I refresh this now it says hello Fosdam in Oslo and Stuff I guess and now we hit Berlin and you get the idea San Jose and stuff like this I kind of focused on Europe But yeah, we have data centers in Tokyo and stuff like this as well And that's why DNS around Robin cat of socks because the day you the time when you hit Tokyo you get very high latency But you know that's that and the last part of the demo we still have on nine minutes So I will do that is the other talk and I can close that San Jose data center. I will just Go here And I will just destroy it So I could this button and And now it starts a CI job that will first go to my DNS provider to remove the DNS record from the round robin Then we will wait for 60 seconds for the TTL to pass and then terraform destroy and the cluster is gone and Then we can refresh the page and the client will just move on to another provider Now we're waiting for the DNS propagation And that takes a few seconds like I said And that's kind of that I'll just Finish up the slides. There's just a conclusion slide because That's where we have time for questions Here Wrap up so to wrap things up Cube fed v2 is coming and it's kind of a pain the situation where v1 is out and v2 is not is in progress Open stack interoperate or inter op is really hard I use web 18 provider or something and each of them is kind of unique in their own way And it's really difficult to identify all the ways they are unique and Manage those things. So some guys will have firewall rules for you. Some guys will have Support for neutron routers some want some will have support for floating IP some want some like different operating system images They will bake in some stuff. It's the last slide. So, you know, you can wait five seconds some will have Custom operating system images. They will not use the upstream Ubuntu image They will just build their own and with bunch of stuff in there different VM sizes And also keeping those things over time. Sometimes they just change change IDs or change version of this and that and it can be tricky so if you want to do this multi-cloud thing just think about If you're gonna work with exceptions or using the common domain denominator across all your providers or all your clouds and That's really like per cloud per application decision Too many exceptions will add a lot of work for you But the common denominator might not be good enough so you have to look in a case-by-case basis and Kind of my conclusion is we need to start looking at cloud providers as cattle I kind of before we would treat servers as pets where we'd have our pet server and you know We would fix it, but now it's time for all clouds to be like that. Oh, Amazon is down I just destroy everything I have there and move on to the next one I don't really care about one specific cloud provider or not And that's that's it for that links to the slides and thank you for your attention Thank you very much


This video is sponsored by Squarespace. This is a ZWO ASI Air. This is a Prima Luce Lab Eagle, and this is a refurbished Lenovo ThinkPad. What do these three things have in common? They're all computers capable of controlling all the gear that makes up a full astrophotography rig. The ASI Air and the Eagle are custom built for astrophotography with a bunch of added features that make them ideal for that purpose while the laptop requires additional hardware like a Pegasus power box to match the feature set of these two. Over the past month, I've been using all three computers side-by-side and in this video, we're going to explore everything that I've learned and hopefully you'll leave this review with a better sense of which computer is the right choice for your astro rig. Hi, my name is Nico and since this video is a review, I'm going to start with a couple quick disclosures. Woodland Hills Camera and Telescope, which is an awesome store for telescopes and all your other related astronomy gear and astrophotography gear has loaned me this Primo Luce Lab Eagle for the purpose of this review. So thank you so much to Woodland Hills. The ASI Air was bought with help from my Patreon campaign also for the purpose of this review and a couple other videos. And the Lenovo laptop is something that I already own personally for astrophotography. This video does have a sponsor, which is Squarespace and I'll say more about them midway through. This is likely going to be a long video because these are complex devices. So I have a lot to cover in a review, but I'm going to be organizing my various thoughts and tests and things into chapters on this video. So it will be easy to skip to whatever part you're most interested in personally. I'm going to start with a brief history of these devices and how it intersects with my own history in astrophotography. I got really going with Deep Sky Astrophotography back in 2016. And back then most people I met used Windows laptops. So that's what I used. The major downside to this is the laptop has to be physically cabled to the gear. And so you had to leave it outside right alongside your rig. And so what most of us did was put the laptop in a plastic tub to protect it from the elements. And then you need power. So you use probably a heavy lead acid battery and maybe a power inverter to run the laptop and everything else. My tub here even has a cloak on it that I added on.  Now around 2017 I noticed people in my astronomy club starting to use mini computers like Raspberry Pis to control their gear. So they would just log in over a Wi-Fi network, start a session and then walk away. And they wouldn't have to leave the laptop out cabled to the gear. And another advantage was the mini computer was using substantially less power since it doesn't have a screen like a laptop does. And sometimes they call this a headless computer when it doesn't use a screen. And so I wanted to try this but I wanted to use the Windows software that I was already used to. And I knew worked with all of this equipment that I bought and the software stack that I liked using. And so I got an Intel compute stick and I put all of my favorite Windows software on it. And I tried to make this work for a few months and I had some good nights, some bad nights but it never really took because I just found the whole experience a little bit too frustrating like it was a little slow and laggy compared to my laptop. And in retrospect, I think it was sort of a combination of the base model compute stick being a little underpowered for Windows and all those softwares. And then I also didn't really understand like Wi-Fi antennas and all of that. So I got so frustrated that I switched back to laptop only and I swore off any sort of computing device that for astronomy that I had to control wirelessly for a long time. But during that time, so from 2017 to today, of course I've noticed that the ASI air and the Eagle get more and more popular every year. And so I finally decided, you know, I need to get over my own baggage here and really try these popular units out with a clear head in a review. And spoiler, they worked a lot better than I even could imagine. I think part of the reason they do work so well now is there have been many iterations since they first came out a number of years ago. So for a quick history of that, the first ASI air was released in 2018. It didn't yet have the 12 volt power outputs. And I think it was based on a Raspberry Pi 3 because it didn't have USB 3 ports yet. Then in 2019, we get the ASI Air Pro. That's an improvement because it adds the USB 3 and the 12 volt power outputs. But I understand it had some issues with WiFi for a lot of people. And then this ASI Air Plus that I have here, this was released in 2021. And it seems like a nice refinement on the Pro version. And then just last week in 2023, they released a version of the ASI Air Plus that expands the internal storage from 32 gigabytes to 256 gigabytes. They also now have an ASI Air Mini that just came out last year, which is $100 less than the Plus. And the main difference seems to be that there is no USB 3 on the Mini, only USB 2 ports. The first Prima Luce Lab Eagle came out in 2015. And then they've had regular updates since then. So we had the Eagle 2 in 2018. That was announced at NEAF, the Eagle 3 in 2019, and the Eagle 4 in 2021. And now the Eagle 5 just released two weeks ago in 2023. And each one has been getting progressively better, more advanced with more sensors, more options, better computers inside. And today Prima Luce has a few different versions of the current Eagle. There's a very stripped down version called the Eagle LE. That doesn't include the iSky quality sensor or the GPS module. And then they're still selling one version of the Eagle 4 and now three versions of the Eagle 5, the S, the Pro and the XTM for maximum power if you need it. So what are the exact models I have here for this comparison? I have the ASI Air Plus 32 gigabyte version, the Eagle 4S and Lenovo X1 carbon think pad with 32 gigabytes of RAM and i7 processor and a 512 gigabyte SSD. And I bought this refurbished. So let's start a bunch of comparisons we're gonna do with the price comparison. The ASI Air Plus 32 gigabytes is 299 US, the Eagle 4S is discontinued, but it did sell for 1595, probably the closest to what they have now is the 5S and that's selling for 1695. My refurbished laptop was $1,000 when I bought it, but I needed to add a Pegasus ultimate power box to get all the power routing and USB options that these units have. And so that added $630 to put me at around 1630 for the laptop setup. And then none of these prices include cables or power adapters, which can realistically add up to a couple hundred dollars depending on what you need. The Eagle cables tend to be a little bit more expensive than your standard 12 volt barrel connector cables, but there are key differences in that the Eagle cables can handle more current and that they are also locking. So it's not an apples to apples comparison there. The operating system for these are a customized Linux for the ASI Air, Windows 11 Enterprise with the Eagle. And it comes with pre-installed software for the Eagle control and then anything you want on the laptop, but I'm choosing to run Windows. So I'll be treating this as a Windows laptop for this review. In terms of internal storage for your images after we take out the space used for operating system and software, we have around 20 gigabytes on the ASI Air Plus, 200 gigabytes on the Eagle, and 470 gigabytes on the laptop. Of course, all of that is expandable. You can get different versions of the Eagle with different size drives and all of this. And now the ASI Air Plus, the same thing, you can get the 256 gigabyte version. For battery, both the ASI Air and the Eagle don't have internal batteries. So you need to power them with either an external battery or an AC adapter. The laptop does have an internal battery and a big reason I went with the Lenovo is that it has very impressive battery life, especially considering how thin it is. As long as it's not like super cold out like negative 20 below freezing, the battery can last about six to seven hours if I'm careful about keeping the display off when I'm not using it. And speaking of displays, of course, the ASI Air and the Eagle don't have displays, so you do need a separate device like a phone, a laptop or a tablet to control them. And the control device, the viewing device, of course, has its own battery life to consider. Okay, next comparison is mount support. The ASI Air seems to work with any mount that has an indie driver, which is most telescope mounts on the market. The Eagle will work with any mount that has a Windows or Ascom driver and same thing with the laptop. And next up we have camera support. The ASI Air has support for Canon, Nikon and Sony, DSLR and mirrorless cameras as long as they have indie drivers and all current ZWO cameras. It does not work with astronomy cameras that aren't ZWO. Even if they have indie drivers written for them. The Eagle and the laptop will work with any camera that has a Windows or Ascom driver written for it. Okay, and then there are other accessories like focusers, filter wheels, observatory domes, flat panels, camera rotators, polar alignment cameras and the list goes on from there. The ASI Air will only work with ZWO accessories, which at the moment is their EAF for focus and their filter wheels for automatically changing filters and soon their camera rotator. And again, the other two, the Eagle and the laptop will work with anything Windows or Ascom. So common refrain here. Basically anything out there has Windows support. In terms of software, the ASI Air only runs the ASI Air software via its app. The Eagle runs its own control software which comes pre-installed plus any software that can be installed on Windows and the laptop can run again, anything on Windows. Let me take a quick break from talking about Astro computers to talk about websites. Today's sponsor is Squarespace. And Squarespace is the all-in-one platform for designing and hosting a beautiful website or portfolio. And I was amazed when I went to redesign my personal website, nicocarver.com, just how quickly I could put something really professional looking together with Squarespace's templates. I just chose one that I thought looked good. I dropped in my photos into these different categories and it's super easy just to upload new photos just like I'm showing you here. And Squarespace handled the rest. You don't have to learn any kind of coding because everything that you see on screen is what you're going to see on your website. And there's still tons of options for personalizing it to how you want it to look.  So if you're interested, head over to squarespace.com slash nebulaphotos and it'll start your free trial. And then if you like it after the free trial, you can get 10% off your first purchase with the code nebulaphotos. Okay, next up, I want to do an overview of the physical characteristics, including the ports and the special features of each device. So let's start with the ASIR plus. This device weighs about 240 grams, very lightweight. It comes with a synthesized shoe, finder shoe on the bottom. So you can attach it to your telescope if you have a spare synthesized finder shoe attachment spot open. ZWO did put a finder shoe on the side of the AM5 mount, but then actually retracted that and said, don't put the ASIR there because it can interfere with mount operation in certain positions. So they suggested you can move it to the side of the saddle on the AM5 if you have the right size screws, but I'm perfectly happy with just putting it on the actual telescope since I usually mount my guide scope on top here, which frees up the finder shoe for the ASIR. The ASIR uses the same 2.1 millimeter center pin barrel connector for both power in and power out. The four outputs are all 12 volts at a current of three amps, which is gonna be fine for most stuff. You'd be attaching to it, but please keep in mind, if you wanna power your DSLR or mirrorless camera with a dummy battery, you are going to need to solder in a step-down converter because the dummy battery requires 8.4 volts and these ports are 12 volts. So if you just plug the dummy battery in without that step-down converter, you could fry your camera. So be very careful. If you're using a dummy battery, make sure you're using a step-down converter. And then the other thing to keep in mind with these power ports is the standard for do-heater bands is not this 2.1 millimeter barrel connector, but what's called the RCA plug. So, ZWO does sell a DC to RCA, double RCA cable that you can use your do-heater bands with the ASIR. On this side, we have two USB 3, two USB 2 and one Ethernet jack. USB is pretty self-explanatory. That's of course for connecting your camera, your mount and anything else, any other accessories. Four ports is usually enough, but if you're using a ZWO cooled camera, those have two additional USB ports on the back of the camera, so in that case, you'd have a total of six USB. The RJ45 jack for Ethernet can be useful. The main way I've heard people are using it is if you're having any issue with the default Wi-Fi on the ASIR, you could connect the ASIR to a travel router like this TP-Link AC750 Nano, which is about 40 bucks and that would create its own wireless network that may be more stable than the one that the ASIR creates. Now, I don't suggest going out and buying this travel router immediately. It's really only a suggestion if you're having problems with the wireless on the ASIR, but I didn't have any problems. I'll save my thoughts on that for a little bit later in the review. I think this Ethernet cable connection can also be used for file transfer, but I didn't test that personally. On this side, we have a microSD card slot. If you need more storage than the roughly 20 gigabytes provided with the internal storage, this would be an easy way to add more. We also have a USB-C port and this is only used for transfer of your images. Basically, if you connect the ASIR to your computer with a USB-C cable, it will show up as an external hard drive. Now, if you have a newer Mac laptop and you try to plug it in this way with a Thunderbolt cable, it's not going to show up. There is a workaround, which is you just need to use a USB-C to A cable and then a dongle or dock of some kind and then it will work just fine and it will give you those USB-C speeds for transfer, which is a very nice feature. And then finally, on this side, we have the Wi-Fi antenna, some status indicator lights and some physical switches for on-off and reset. Next, let's look at the Primae Luce Lab Eagle and its physical characteristics. This device weighs about 1270 grams and it has a plethora of connection points on both the top and the bottom for connecting it to your astrophotography rig. What I've done here is I took the top handle off of my Ascar 130PHQ and attached the eagle with three quarter inch 20 screws that came with the eagle to the top handle right down the middle of it. And then I reattached the top handle and eagle to the telescope and that seems to be working really well. It feels quite stable. It does make the telescope a little bit harder to move around because I don't have the use of the handle anymore, but eventually I'd like this telescope permanently mounted in an observatory because it's a nice big telescope. I don't really consider it a travel telescope. And in that case, it would work fine because it would be permanently mounted. Both the power in and power outputs use an uncommon but not proprietary connector. It's a three-prong M12 screw connector and the input can handle up to 16 amps in. And for outputs, we have two ports at three amps and two ports at eight amps. So if you have something that draws a lot of power, those eight amp current ports are pretty handy to have. These are all 12 volt. So just like with the ASAR, if you do want to power a DSLR or mirrorless, you need an appropriate step down converter. But a nice thing with the eagle is you can actually buy many of these cables all put together for you with the dummy battery and the step down converter all in one finished cable. So that's really convenient. Continuing with power on this side, we have three RCA plugs. These are adjustable from zero to 12 volts. So the way that most people use these is for do-heater bands. And if you want to have the voltage adjust automatically by using an environmental sensor, then you need to buy the Echo add-on from PrimalutuLab. And the main advantage there with an environmental sensor is that you can save on power if you're running off of battery. Next to these, we have the GPS antenna. And this is neat on the controller. It tells you how many satellites it's connected to and then it gives you your exact coordinates and altitude. And mine was perfectly correct every time I launched the eagle. Continuing on this side, we have a Thunderbolt 3 port with the USB-C connector. And this can transfer data at 40 gigabits per second and also provide 15 watts of power. And with all the Eagle 5 models, they've kept the Thunderbolt 3 port but also added a Thunderbolt 4 port. I did test this port on the Eagle 4S with a Thunderbolt 3 rated external SSD from Samsung and it worked completely as expected. You also have two HDMI ports. I did test these as well just to make sure the Eagle could really run a dual monitor setup if you wanted it to. And it did. I'm guessing most people are going to run the Eagle wirelessly but the HDMI options are useful both for initial setup and maybe some other uses. We also have two USB-A ports on this side and an Ethernet jack. And then up here we have the eye. And the eye can actually be mounted here or on the opposite end depending on how you want the Eagle mounted but the eye should point in the same direction as your telescope because what it does is it gives you a live reading of your sky quality in the standard unit for measuring that which is magnitude per square arc second. So this is measuring how bright or dark your sky is. And this is the best way to really know how bright your sky is because it's more objective than the portal scale which is just based on naked eye observation. I compared the eye on the Eagle 4S to my Stars for All TAS photometer and I found the readings matched up perfectly. I looked at where my setup was pointed and both the TAS and the eye gave a reading of 21.2 magnitude per square arc second. I'm a bit of a sky quality light pollution map nut so the eye doesn't completely replace the TAS for me since the TAS is a custom unit with an app to create these all sky brightness maps which I like having but I really do appreciate the eye and especially because in the latest version of the Eagle control software they've added the ability to export logs of your eye readings which is awesome because that data I would totally use that and plot my readings throughout the night and see how the sky quality sort of changed. I think that's really cool. On this last side here we have a bunch more USB ports so there is a total of nine USB ports on the Eagle 4 and then on the Eagle 5 you get 10 total USB ports because they've added that thunderbolt 4 port with a USB-C connector. We also have dual Wi-Fi antennas and the status lights and the status lights can be turned off completely by putting the Eagle in dark mode and that's done through the software control interface. This is really handy for star parties where you really want your rig to not be emitting any light. I also just wanna add here that there are some new sensors on the Eagle 5 system on all the Eagle 5s there is an inclinometer and a motion detector and the idea with these is to aid in accurate polar alignment with the inclinometer and with the motion detector it would be the ability to reject frames automatically if the system is bumped physically or even hit by a strong wind gust. Okay, and then finally this is my Lenovo ThinkPad Carbon X1. This laptop has two thunderbolt 4 ports with USB type C connections, two USB 3 type A ports and a full-size HDMI port. The thunderbolt 4 ports do double duty as power connectors and one nice thing is even after the internal battery goes on this I can use a anchor power bank to extend the battery life. So I don't use power inverters anymore because there's really no need when you have the internal battery plus a power bank. But of course nothing special on this laptop for astronomy in terms of ports no power management or anything like that. So for that I use a Pegasus power box and depending on the setup I'll either use an ultimate power box or a pocket power box. With the ultimate in addition to being a power distribution box it can also control a Pegasus focuser. It's a USB hub where you can control the USB ports independently turning them off and on and it does do heater control as do all of the power boxes from Pegasus. Basically if you take away the GPS, the I, the thunderbolt ports and the internal computer from the Eagle what you're left with in terms of a feature set is pretty similar between the Pegasus ultimate and the Eagle in that they both offer full control of the power ports the USB ports and the do heater ports. Next let's look at connectivity. With the laptop I just have a single USB 3 cable running out from the Pegasus power box to my laptop everything else is routed through the Pegasus. Now there are a few issues with this. One is with USB 3 you're limited to a cable length of about three meters unless you get a very expensive active cable with a powered repeater in it. So when you're actually controlling the setup you need to be pretty close to it. So what I do is I bring out a table and the tub as I mentioned and have that laptop right there. With the Eagle you could attach a monitor keyboard and mouse and control it in a wired sense if you wanted to but that's not how most people are going to use it. Instead most people will use something like Windows remote desktop and open up a remote session and then you can control the Eagle from another computer like a laptop on the same network. And so I tried this from various devices it always worked quite well. I could be sitting in my living room on my MacBook Pro with Windows remote desktop open and be monitoring the Eagle from 50 feet away because they were on the same network and not really have any performance issues. And so the Eagle can work like that. That's called host mode where both the Eagle and my MacBook were connected to my home wifi network. The Eagle can also create its own wireless network that's called AP mode. And if you do this then you connect to it directly you connect to the Eagles wireless network. And this is of course useful when you are away from home like at a star party or a dark site. The same goes for the ASI air but the ASI air it's default way of working is that AP mode that's how most people use it. It creates its own network you connect to the ASI air wireless network and then you are good to go. But if you do turn on station mode then you can connect over a home network just like the Eagle. And the advantage one advantage to that is that since you are on your home network still you can both be on like your home wifi and connect to the internet and also be connected to the ASI air in AP mode you don't get to do that. Now another point with connectivity is what kinds of devices we can control these computers from. And the good news is everything is fair game these days. Starting with the ASI air it is app based so you might think that means you need to use an Android or iOS device but no you can actually now access your iOS apps on your Mac OS computer if you're in the whole Apple ecosystem or you can emulate Android apps on Windows with BlueStacks which is a free Android emulator. So for me this makes the ASI air much more desirable because I really don't like using it on my phone. I just think that the screen is too small and I don't really find the touch interface that great. I really prefer working with a mouse and keyboard. That's just me but you know there might be other people like me who like the big screen experience for astronomy apps. But the ASI air app works great that way. Another reason I much prefer actually using the ASI air app on my computer is the connection is just really great. On a phone you really usually have to mess around with the phone settings so that it doesn't kick you off the ASI air Wi-Fi. And even after I mess around with those settings it's always giving me messages telling me this network doesn't have internet access. So I didn't run into any of those issues when controlling it from my MacBook Pro. And this leads us to connectivity in general and this is where I was actually the most surprised in testing these devices. I expected a lot more problems with like dropouts and you know just things freezing up than I actually ran into. Granted I only tested for a few nights maybe four nights over the course of a month but I just really didn't run into any wireless issues. I found both devices could go through a single wall so I could control them from inside the house about 20 feet away. If I was outside and I had line of sight to the antennas I could go a really long way. I estimated about a hundred feet before they would drop out entirely. I wanna say before I reached a hundred feet it would get slower and slower. Performance would get laggier and laggier and take a lot longer to load images. That started happening around 10 feet for the ASI air and around 30 feet for the Eagle and AP mode. But my main point here is they both worked well enough with the wireless that I could actually see myself using them. Like I said towards the beginning of the review when I tried to homebrew this with my little compute stick I always found it very difficult. I just wasn't getting the reliability that I wanted. Even after I got the travel router it didn't work as well as the Eagle does or right out of the box. Okay next up is feature set. And to be honest the ASI air has come a long way and it was a lot more full featured than I thought it was. The main things it can't do with the software are basically limited to just the fact that it doesn't support things like environmental sensors for changing the voltage on the dew heater or it doesn't have USB connected flat panels for automated flats, all kinds of automation things like that. And those kinds of things are probably most important to remote imagers or just imagers who've built a lot of automation into their home backyard observatory, that kind of thing. So I'm guessing that they sort of those kinds of imagers already sort of know all of this but it's just something to keep in mind if you just keep adding more and more things to your setup that the ASI air does have some limits with how much you can automate. Another sort of related disadvantage in feature set is that the ZWO only makes, only supports the ZWO accessories and ZWO only makes one basic electronic focuser. It does work pretty well but something I dislike about it is that it doesn't have a clutch. So I can't switch back to manual focus like I can with my Optek focuser which is really handy if you want to if you're testing telescopes it's sort of essential but if I wanted to use the ASI air and also have automated focusing then I do have to use ZWO's EAF. And that's just one example. I do think it's an amazing piece of tech for the price they're selling it at but unless they really open it up to other manufacturers devices for all the accessories that I wanna use I'm probably not gonna use it except for a quick run and gun kind of setup like I have here with the AM5 and I don't need anything fancy. Now, what does the Eagle do that my laptop plus Pegasus power box does not? Well, one thing is it uses less power so that's very nice. It has the eye for the constant monitoring of sky brightness. It has a GPS antenna and it takes all the functions of the laptop plus the power box and puts them into one sleeker box that'll probably hold up a lot longer outside than the laptop since it's all enclosed in this very durable aluminum chassis. And then next we have software and I think the main story here is ease of use. Both the Eagle Control software and ASI air software are super intuitive but often ease of use does come at the price of flexibility. So the reason in both the Pegasus Control software and ASI air can be so simple to understand and use is because one company is making both the hardware and the software. Well, if I use something like Nina or Sequence Generator Pro, those or APT those are gonna be more complex software packages because they need to support all the different hardware configurations and drivers that you can throw at them because they support everything that has a Windows driver, an Ascom driver. So it's a little bit of a different situation. I think of it more as sort of being a power user if you need all those features. Of course, the Eagle is giving you both things. It's giving you the easy control software but also all the power user options because like I've said a number of times here it's just Windows in there so you can install any software control package you want. You don't have to use like Prima Luce's Play software. It's just an option. You can, it's an open system. You can use Nina or Sequence Generator Pro or APT or any of the different or Voyager, anything that comes on Windows. When it comes to the ASI air, even though I'm not a total convert yet I can definitely see why the ASI air is so incredibly popular. It is remarkable how smooth they've made the whole experience of setting up your night of imaging and how well it works for a $300 device of this size. It really does lead you through the settings, streamlines things. If I only used ZWO products I'm sure that I would be fully on the ASI air train. Now the Eagle on the other hand I'm thinking about getting one eventually. The main reason why I'm seriously considering it is I'm planning to build an observatory hopefully this summer. And I think the Eagle is exactly the kind of computer that I would want in there with all the automation and, you know, things you can do in an observatory. You can set up Sequence Generator Pro to open the roof and start the imaging and everything. And the Eagle is sort of like the perfect brain for controlling all of that.  This one is M81 and M82 with some IFN taken with the ASI air and the AM5 mount and an Ascar FRA 300. And here is the same Galaxy pair taken at 1000 millimeters and the EQ6R. And this was mostly done with the Eagle but I also took some photos with my Lenovo laptop with the same software stack just to see if I felt any performance differences. And as mentioned before, I didn't. The Eagle was really snappy even though my laptop has better specs on paper. One additional thing about software that's interesting to think about, I came into this review thinking about these three computers solely for acquisition of your images, taking your images under the night sky. Not processing those images after you take them. But the truth is for a long time I was using this laptop for processing as well as acquisition. I did eventually move on to a desktop machine for processing but this laptop still works perfectly well as long as you aren't doing huge mosaics and you can be a little bit patient with preprocessing. So that's definitely a factor to keep in mind. And the Eagle line, especially with the Eagle 5 line seems to be moving in that direction of an all in one with how powerful they're getting. Part of the idea there with an all in one is you could do preprocessing right on the Eagle and then just send out the fully calibrated images to your cloud drive or your network drive. And I think for a lot of imagers, especially remote imagers using the IMX455 chip that produces those huge file sizes, this is gonna be a very attractive option, the new Eagle 5 XTM. The ASIR does offer some live stacking features that it does support using calibration frames as well. But as far as I can see, it doesn't save the calibrated masters, your actual calibrated subs that are going into the livestock. It only saves the final livestock. So that's more of an EAA electronic assisted astronomy feature than an astrophotography feature. Okay, I know that was a ton of information but to some of my thoughts here, I think if you want the best astronomy computer on the market with all the bells and whistles but also complete freedom to choose whatever hardware and software you want, go for the Eagle. If you're just getting started and you don't want to go with all ZWO products and you already have a Windows laptop, use that. And then lastly, if you're okay with going everything ZWO in terms of cameras and accessories, then the ASIR really does make a lot of sense from a value proposition, $300 for everything that it does is an amazing value. After seeing this review, if you're ready to make the switch and embrace the future with these dedicated astronomy computers, both the Eagle and the ASIR are available from Woodland Hills Camera and Telescope. And the link to purchase these is in both the description and a pinned comment on this video. If you have any stories or opinions about using the ASIR or the Eagle or a laptop, please feel free to drop them in the comments. Let's have some good discussions and speaking of good discussions, if you love astrophotography, which I assume you do if you're watching this video, I think you're going to really enjoy my Patreon community. We are closing in on 1,000 members and it's just a very supportive and welcoming group of astrophotographers. They're all very open in sharing knowledge and we do a lot of really fun things together.  And in addition to all that, you get direct messaging support with me. So if you have any questions, you can ask me and I'll get back to you usually within a day or two. So I think it's well worth checking out. My Patreon starts at just $1 per month to join. Well, I hope you enjoyed this one. Till next time, this has been Nico Carver. Clear skies.


We just sat down there and waited for a day or two or whatever and then all of a sudden here we go. That was it. That started to started the invasion. June 6th, we started we started shelling the Omaha Beach. We started firing first. It was still very dark. But the troops started landing at about 6.30 or 7 o'clock. So we had to stop shelling then. Well, I must have been down in the probably in the plotting room is where I've actually got the news. Well, we got the word this moody. He was a chaplain at the time on the ship and he he went over the PA system. You know, it was kind of letting everybody know what's going on and chaplain was on the bridge and he was telling us that the German shells were coming out and missing us on each side of the ship. They put me up in the gun room, which is where the the gun was fired from and wanted me to handle the powder. Now the powder to fire a 14-inch shell is it took 400 pounds of powder and the bags of powder weighed 104 pounds each and you had to lift them from below and put them up on the cradle to have them rammed into the shell. And the 14 is like a tight. 14-inch wasn't so bad. 14-inch, I was behind one, but it would take a five-inch. It would almost take your clothes off. Just trying to get fire into guns. I see that a little barrel go back, you know. And only chance it broke, broke the darn thing already. That's just what I said, only chance. Of course, I learned a little later the recoil come back and everything. Yeah, I thought oh and I said exactly that. He must have broken it. And just he just sat there and it's waited, waited, waited, you know. And finally, you know, when things would quiet down a little bit. So, I wasn't the instigator, but one of the other guys, it might have been older than me, opened the door, you know, and it could look out and see what's what's what, but don't go out. And I was looking out at the cliffs over there. This was all maybe ten days later and I noticed in the water, there was some shell or splices in the water and kind of find out it was a German sniper out there trying to shoot somebody on the ship. So we were out of range, but we sent word to the captain, the captain radioed in, and this is the first time I saw a P-38 in action. P-38 come in and sprayed that beach with it with his machine guns and we didn't see any more. I was kind of close to one that he got his helmet got nicked right right up here somewhere and it came under here and came out came out here and one of the bullet went into his helmet and wrapped around it and took his eye out, you know, I talked to him. I survived. So I'll tell you that these were these guys were amazing. Well, I don't think they were kids much older than me.  They didn't have much chance for us, I don't think. You know, surviving that. But we did.


Hello friends, I am Sanjay Gupta. In this video, I am going to demonstrate you how you can print these two patterns using C programming. Before starting, you can note my information. You can follow or subscribe my YouTube channel that is sanjaygupta underscore tech school. You can download my app tech emis, which is available on Google Play. Here you can see I have implemented a code in main function three variables of integer type is declared then character variable CH is available. Printed will display and enter how many rows you want to print masses. Then scanner will read the value inside n variable. Then first loop which is I starting from one condition is I less than equals to n. This loop will repeat n times. This is for printing rows. Then before starting another loop that is J, which will repeat I times I have initialized CH with a because every time this row is starting from a. So inside J loop printer will print value of CH and just after printing CH it will increase by one. So every time this loop will begin from a and then it will print a b c depending on the rotations of J loop after completion of J new line will be displayed using slash n and then this way repetitions will be applied. So by this code first pattern will be displayed on console as you can see the output. Now if you want to print its reverse then you have to change only first loop. So instead of I equals to one you have to use I equals to n then I greater than equals to one and I minus minus. So this way suppose n is five. So I will be initialized by five. So J loop will repeat five times in first rotation then new line and then I minus minus will be performed. So this time I will I will become four. So J loop will repeat four times. So J is dependent upon the value of I. That's why this is happening. Now I am executing this code. You can see the output. Reverse pattern is displayed on console. So I hope you have understood how you can print these two patterns on console with the help of nested loop in C programming. If you want to watch more programming related videos you can subscribe or follow my YouTube channel that is Sajya Gupta underscore tech school. Thank you for watching this video.


OK, so this one's a titration problem. Again, I've recorded more titration problems, but this one's a nice one. It says 25.0 mill sample of vinegar, which is dilute acetic acid. And then it gives you the molecular formula of vinegar. It's titrated and found to react with 94.7 mills of a 0.2 molar NaOH solution. What is the molarity of the acetic acid solution? And then it goes on to give you the double displacement reaction equation, or the acid base. Remember, acid base are always double displacements. So it goes on to give you the balanced reaction equation, which is that. If this wasn't balanced for us, we would have to balance it first. But since it is, we're not going to. So the first thing I guess we want to remember is that when we're titrating something, it takes a multiple ratio of the things that are presented in the balanced chemical equation to reach that equivalence point. So what we see here is that we've got a molarity of NaOH, a volume of NaOH. So we should, from those two things, be able to get the moles of NaOH. We've got the volume of acetic acid, but we don't have the moles. And it's looking for the molarity of the acetic acid solution. So what is that? So that's what we're looking for. We've got the volume. All we need is the number of moles. So let's go about figuring this out. So the first thing I like to do is change this molarity symbol to moles per liter. So if you want to, moles of NaOH per liter. And this is the number of mils of NaOH. So we want to convert that to liters, or this to milliliters. I like to convert things to, how do we do that? 1,000 milliliters. So the molarity of NaOH we've got here. So let's figure out how many moles are in this many liters of NaOH that we're doing next. So how do I do that? I've got per liter here. I've got liter there. So all I've got to do is take this number and multiply it by that thing. Because this is, of course, liters of NaOH. Doing that should give us the number of moles. So this one's going to be a 3. So 0.0. Does everybody OK to that point? We've got the moles. So from here, we've got moles of NaOH. We've got the reaction equation, and we've got the moles or volume of acetic acid. So remember, to get the molarity of acetic acid, we need moles of acetic acid. So from here, we should be able to get the moles of acetic acid using some conversion factor.  I know, so I'll save you the trouble. So 1 mole of NaOH from the reaction equation gives 1 mole of C2H4O2, which is acetic acid. So what are the 6 mils here? So how do I figure out what the molarity is? So remember, the molarity is the number of moles of C2H4O2 divided by the number of liters of C2H4O2. And we have both of those numbers now. Correct? Yes. Thank you. So 0.0250 liters, 0.018, the C2H4O2, because that's a different problem. It's a different problem. So this gives you the number. This starts you with the molarity of NaOH. The thing is, if you don't have, you haven't converted from acetic acid to NaOH. The only reason they're the same, as you're putting the same, is because the reaction equation is a one-to-one mole of ratio. So if you do that for every one of these problems, you'll get them wrong, because you need to use that balanced reaction equation. I would say, yes, it does matter a lot, because you're not converting the units. So if you want to think it doesn't matter, then yes, for a one-to-one balanced equation, it doesn't matter at all. But it does matter a lot. Yes. What do you use other equations for? So when you're not in touch. So let's say something to the effect of, like, the other M1A1 equation, like, if you have this concentration of HCl, what, how many mills of H concentrated HCl would you need to have this other dilute concentration of HCl? So it's the same molecule, if you understand. As opposed to this, as you're talking about the acid referring to the base, right? So you have to titrate them. OK, so it's a totally, totally different problem. Like, I promise you, I know you want it to be the same problem, but I promise you, it's a way different. It just happens to work out to be the same in this particular problem. Promise.


Imaging, we take images at the MRI scale. We take them at the microscopy scale. Now we're near on the same scale as Alan Brain, but we still take them. And we also do some work at the microscopy scale. So it means we take images across all the scales. So we do these sorts of work. So this is an in vivo system, taking images of a mouse brain. We'll then take that same mouse and we'll extract the brain from the brain case and various things. And we'll do in vivo imaging as well. So this will produce a slightly bigger data set. It means we get a resolution of about 30 micron. And then once we produce our averages, we get a final resolution of about 15 micron. We then take that same mouse and we'll do histology on it as well. As part of that, we do our, what I like to call ghetto tech block face imaging setup, which is a $3,000 digital camera pointed at the top of a vibratome. It works for our purposes, but if Alan Brain would like to send one of their systems to us, I won't say no. And it results in this sort of image. So these are the resolution, which is very dark, so we'll skip past that. Of in vivo imaging, that's X vivo imaging of the same mouse brain. We'll then get to the block face imaging of that same mouse. And then we have the histology on an aperiod slide scanner. So then we get to play CSI, except we do it for real. Where we can zoom in on single neurons. So that's one entire mouse, the whole processing pipeline. So what it means is, is we have various data types and it means we have various data volumes. So at each of those resolutions and modalities, there's a certain size associated with that data, which meant we had a problem. We can't view this on a normal computer. It was a big data problem like everyone else. And it's only going to get worse. So some of the things we're working on now is this calcium gated imaging, which a lot of you have seen. And these data sets we acquire at five hertz for 10 minutes. So we're into the tens of terabytes of data here. So how are we going to deal with it? Well, you look around at the things in some restricted fields like in MRI and you'll see nifty, where they use lots of desktop software. And suffice to say it just isn't going to work for these size data sets.  If you'd like to give me a computer that can, I'll take it. But the point is we can't. And then we also deal, a lot of these projects, we deal with information naive or adverse collaborators. And this is sort of the flowchart of how you deal with them. Because they will come to your lab, they'll acquire this data. They'll say, give me it on a USB disk. They'll run away with it. Great. Then they'll come back 14 times saying, which software do I need? How do I load it? What do I do with it? Where's the processing for it? And we've all gone through this. So what do we do? Well, we have to use existing paradigms and develop new tools which work around that. So we look at Alnbrain. They're using web-based portals to view all their data. Google Maps have been doing this for years. They expose multiple petabyte data systems, which we all use every single day on our smartphones. So any of us can access any point in that petabyte of data for the exact thing we want to know about it, but we don't download the whole data set. Why don't we do this in neuroscience? So this is the question we asked ourselves about five years ago now. So we set about to develop a system to do this. And this is what we came up with. So this talk from now on has nothing to do about neuroscience, sorry, and all to do about informatics and nerdliness, but we'll continue on even though it's Saturday afternoon. So this is a screenshot from the manual. There's various user interface elements, and I'll just go through now in the next couple of minutes some of the things which I find interesting and useful for our neuroscience users. So the big difference we make with all our data in the center is that we abstract the voxel sampling from the world space, which is what our previous speaker was just talking about is that we need to get away from thinking about our pixel and voxel-based data sets in terms of pixel number 14 versus 53. We need to talk about a world coordinate system wherein we can reference all of our data across all of our subjects.  But this is showing how we can show an MR image with this is a Allen Brain data set which I built a few years back where I got in trouble from the university for downloading a large number of their image data sets and I produced one of these morphometric averages and we are realign this with our MR data at the top and it means if you browse through these points the two views will follow each other because while they're different resolutions we use the same coordinate system for both. The system had to be fast or our users just wouldn't use it. So this is a lovely scientific graph but what it's showing is that it doesn't matter if the data set underlying is a gigabyte or 12 gigabytes the access speed is the same which is what we wanted and we've tested this both on mobile and on good Wi-Fi. We wanted to have arbitrary color mapping that was important for some of our users. This is a, this is I think a one terabyte scanning electron microscopy data set so we can overlay colors on top of things and use user defined color maps. We can define the color map ranges. We can overlay labels upon our data sets in real time. I'll show you these things shortly and we can also display metadata associated with those labels so when a user clicks on a point we can say what's underneath that point. It also has a mobile interface so it'll work on your iPad or your Android thing so you can either access the website with a desktop browser or with the mobile system. We integrated some features around sharing so this means that you can go to a point in the data set and you can get a URL for that point and then the process is then you talk to Charles Watson or someone and say I have no idea what this data is at this point. Can you click on this link and tell me where I've gone wrong in my structural postulation? Charles clicks on the link because he's a nice guy and he comes back and he gets, this web page comes up instantly and then he can tell me that that's the exact point so this is an average of some of our seven Tesla data so far. So how does it work? So it's basically everything is done for the image tiling on the server side but there's a lot of work also done within the browser and that's all the color overlays and these sorts of things. We've now got rid of the Java web services layer and everything is done with C. That's just a bit of history. Sharing and Federation, the system also allows you to connect to multiple tissue stack servers with a single client. So what that means is that you could overlay labels from the almond brain if they happen to run tissue stack. Talk to me and I'll show you how. With data which is running from the CAI. So this means in my view of the world you can share data around the world with multiple servers. You'll note the map is the correct orientation. So how does it work? So the underlying data we read natively nifty. We read mink.com and bio formats so we cover some of the major data types out there. We then can convert that to a data format we call tissue stack raw. It's essentially where we blast the image out in the three most commonly accessed directions and we do that for speed alone. You could then go whole hog Google Maps for those who've done any work with GDAL type systems and you can pre-tile the data set into PNG tiles across the entire data set for all the levels that you're interested in looking at. Of course this means there's a speed penalty to pay if you're using one of the top systems. And there's also a space penalty to pay but I think space is pretty cheap at this stage. There's lots of offline tools that go with it so you can convert your data formats, you can set up pre-tiling. You can also embed a tissue stack instance using JavaScript into an existing webpage div that you have and there's an API to do that so you don't need all the extra things around it. You can just incorporate just the viewer. We release everything on GitHub. There's a fairly standard release schedule and there's also pre-built builds for most of the major Linux operating systems for your server. It's GPL v3 licensed. Do what you wish with it. Just contribute the changes back. We've had some uptake over the years so that's the graph of our blog site. You can see a nice pretty graph and you can see who uses it. Good on you America. So that's the short static version of the demo. These are all the people involved with the data and the development of it and now we're gonna have some... This is either gonna be very exciting at this stage or we can shift on to the next speaker. I'm not sure which way it's gonna go. I'll let you know. So I'm gonna be doing this via my mobile phone because we've all tried the wireless here. I think this is gonna work even on this little screen. Did it work? Yes it did. So this is loading over my mobile phone. It's a 3G connection. It works pretty well. This is a one gigabyte, sorry, this is about a two gigabyte seven Tesla average image of morphology and we can move around, we can change the different views, we can zoom in, we can zoom out, do a lot of sorts of things. This is some block face histology data which we can also load so we can swap the views and it will load it again. This is if we overlay a color map on top of it, we can choose from our list of color maps we wish to use and then it will actually do the rendering. This is done on the client side, that particular part of the rendering. So it's fairly quick. This is the serial electron microscopy data set. So this data set is about two terabytes and this is being loaded over the 3G connection but of course we only load the part we're interested in so it's quite quick and we can zoom around and move to where we want to go. This is the overlay of the labels which I was demonstrating before. So you'll note that the two views here are synchronized with each other so when we click on one it's a bit slow but then the command will get and it'll update the top window. Now what I didn't actually say is that these two developments here are actually completely separate web elements so we've tested this a little bit but it's not quite ready for release and that is where you can actually have these two divs on two separate browsers on different sides of the planet. So the idea is I can click a point here and it will send a web socket connection and update the other view on the other side of the world. Maybe someone wants it. It was an artifact of how we designed it. So we said, all right, cool, let's do it. So this is the overlay of labels. You can change the intensity and those sorts of things. So it's not, this is running on our own server. It's not just us, there has been some uptake so some of you are familiar with the BigBrain dataset so this is the dataset which is acquired by quite a few people in this room are associated with it. So there's various volumes you can download. I love this nifty file too large, won't work. So this is the BigBrain dataset once it refreshes. So this one is now loading from Canada. I believe that's where the Loris server is running this. Sameer will know. And this is loading, I think this is a three gigabyte histology dataset and it works quite well. So we can zoom in and zoom out. So for a little bit for that to redraw, it will come. So the previous demos I was showing of all the mouse data was running in a virtual machine in the Australian research cloud. It's a single core VM. TissueStark actually runs across a distributed Apache cluster. So if you have huge datasets, you can make that work as well. So that's about all from me. I trust we're back on time. Good enough. So thank you very much. So must be questions to this, I believe. In the back first. Very interesting work. Do you plan to extend that for 3D volume stacks as well? No, no. We looked around and there's lots of toolkits but they're already ready to do that. So the design decision we made was to write everything in HTML5. It's all based upon a canvas element. So that means you can use any of the WebGL toolkits and just add that data in. The coordinate system is all exposed by the API. So the idea is is pick your any volume based representation and just overlay it on top of TissueStark or vice versa. Okay, I was more thinking of querying the data through a REST interface and then render it in a native application. No, it's really made for Boxl data only because we saw that as a whole. There's other systems, I think, for doing what you're after. So maybe I missed it. Which data set is it? At which spatial resolution is this here? I think I clicked on the, let me see. This is the 100 micron isotropic data set. Would it also eat the 20 micron? Yeah, it's no trouble. We've tested up to two terabyte data sets with no trouble. Two terabyte, okay. I mean, it takes a long time to pre-build the data but you do that once. So me is looking worried. And this, what you have shown here is there's a service which, who can really reach this and possibly use it? Yeah, so everything I've demonstrated is available on the Web Open. TissueStark.org, it's all there. And this is running out of the Loris big brain site. So that's all publicly available. When you show the, let's say, mouse brain there, I believe, and the postulation structures and so on. From which Atlas are those postulations? So that's from the AMVMC project, which was run in Australia, the Australian Mouse Brain Mapping Consortium. All those structures are available on the Web, imaging.org.au, just download them. Great. Just a quick question. So this is really great work. Obviously, we have some software as well that is doing some visualization, but I actually think I'm tempted to go down this road. How complicated is it to install? We talked about it briefly, but is there any hangups, or can I just install it in the next hour here? Is that possible? We would hope so. So the first version you installed at the big brain site, that was version one. I mean, you look at the interface, there's quite a lot has changed. At that stage, the install process was manual.  So you install it, and then there's one or two steps you have to go through. But it's a lot smoother than the original very bumpy ride you had. Okay, and the image format is Mink? Mink, Nifty, Biiformat, Dicon. Okay. Except for where the Nifty file can't handle things that big, I guess. Well, look, if you have enough memory in a machine to load a 30 gigabyte Nifty file, go ahead, it'll work. But the Nifty libraries require you to load everything into RAM as the first instance. Okay, thanks, very nice. Okay, thank you very much again.