So, hello everyone and welcome to this presentation. Today I'm going to talk about the work adaptive security of multi-party protocols revisited. And this is joint work with Martin Hirt and Wally Maurer. In the problem of multi-party computation, there is a set of parties who would like to jointly perform a computation. And one can think about this as the parties having or sitting in front of their own computing device, which can be a laptop, a mobile phone, whatever device they have. And the device is connected to some communication network, which for example can be the internet. Then each party can give inputs and obtain outputs from their respective devices. And the goal of the protocol is to construct an ideal computer that performs some computation. And that is completely resilient and trustworthy, even when some of the devices can be hacked. And usually those parties whose computers were not hacked are typically referred to as honest parties, while those that had their computer hacked are referred to as corrupted parties. And typically it doesn't need to be like that, but typically we care about guarantees for the honest parties, those that didn't have their computer hacked. We would like that the honest parties obtain the correct output of the computation and moreover we usually also want that their inputs to the computation remain as private as possible. So in this work we consider the setting of adaptive corruption. This is a very challenging setting where the parties computers can be hacked or corrupted during the execution of the protocol. And not only that, the corruption can be based on any information gathered so far. So this can be the information that the adversary bought from the network or information that is leaked from an internal state of a computer. The question is what can we guarantee in this challenging setting? And very intuitively the security guarantee should depend on the set of parties that are corrupted. So the more parties are corrupted, the less is guaranteed. And typically all guarantees are lost when the number of corruptions exceed a certain amount. So let us first review what the current standard notion of adaptive security is. I'm going to represent the computers that execute the protocol with round objects and the network as an square object. And in the standard notion one first specifies an ideal system that I call the system MPC, which for concreteness we can think that it simply computes a function. So it gets an input at each interface and then computes a function over these inputs and gives back an output at each interface. So we would like to construct such an ideal system, but in fact it is easy to see that we don't quite get this ideal system MPC. Because in the left the adversary kind of learns some information, he learns some internal states of the parties when corrupting them. Maybe he learns something from the network. And in the right the system doesn't have, there is no network nor internal states of computers. So what we get is an ideal system that also involves a system Sigma, which is usually called the simulator. And the simulator is in charge of reproducing any information or any interaction with the adverse. So the simulator will reproduce any adversarial information while having only access to the data inputs and outputs of corrupted parties at that point in time. So for example, if parties 3 and 4 are corrupted, the simulator must reproduce whatever the adversary learns from the information that has been leaked in the wires of these corrupted parties. For example, their inputs and maybe their outputs if they got any. Therefore the honest parties benefit from the security guarantees because any information leaked to the adversary can be deduced solely from the data of corrupted parties. Let's go into it in a bit more detail. So in the beginning honest parties define their inputs and during this input stage the adversary can corrupt for example party 3. And therefore the simulator gets access to P3's input and has to explain his internal state. And the simulator also has the capability to substitute and decide what the input of P3 is, whatever he wants. And based on the learned information the adversary maybe decides to corrupt P4 and the same happens with the simulator. And of course if any information is leaked from the network the simulator also has to give those messages. At some point all the inputs are defined both from honest and corrupted parties and at this point the NPC system computes the function over the defined inputs and gives back the outputs. And this stage takes some time and typically in the left system the adversary learns the output of the corrupted parties first. And based on that he can corrupt further parties and in the right system the simulator has to output all messages that are leaked to the adversary and so on. And the logic is that anything that the adversary can provoke in the left system he can also achieve the same effect in the right system. And while this standard notion of adaptive security is intuitive it turns out to be technically too strong or apparently too strong. And one of the main obstacles here is the so called commitment problem. Let me explain it with a very simple example. So consider a setting with two parties connected via authenticated channel. And let's say that party 1 inputs x1 to the protocol and commits to its input using some perfectly hiding commitment scheme, some encryption or something. And since the channel is authenticated the adversary sees the commitment b.  And the point here is that b prime has to be generated without the knowledge of input x1 because at this point the party is honest. But now the problem is that if the adversary adaptively corrupts party 1 and learns its internal state. And the adversary learns in particular the way the commitment was created. And the problem is that the simulator cannot consistently explain the fake commitment b prime with respect to the input x1. So note that this protocol is technically or apparently insecure under the standard notion no matter what happens next. But even if we execute an extremely like super secure protocol afterwards. The mere fact that the party publishes a commitment of its private input makes the protocol insecure. And this is the case even if the commitment is perfectly hiding right. And this should not be the case because at least intuitively publishing b cannot harm in any way the protocol. And the technical issue arises in many scenarios where some form of encryption or commitment is used. And as a result current typical protocols use additional techniques that are designed to specifically target or overcome this technical challenge. So for example, they use the secure erasable memory which incurs an additional assumption. Or we also use non committing encryption or equivocal tools, which typically incur an important efficiency loss. In this work we ask whether one can modify the definition and find natural definition for security against an adaptive adversary. That is not subject to the commitment problem. And the answer is yes. And here is how we do it. So when one thinks about adaptive security, a very natural idea is to specify a guarantee for each possible set of honest parties. So at any point in the protocol, the guarantees that we have depends on the current set of honest parties. So here is a picture where we consider three parties p1, p2 and p3. So at the beginning, all parties are honest. So we benefit from all these guarantees. And then at some point maybe p1 becomes corrupted and therefore we lose some of the guarantees. But all those guarantees corresponding to sets that are still honest remain. And the same for p2. At this point only p3 is honest and therefore there are only these two guarantees. And maybe in the end everyone is corrupted so we are left with a single guarantee. But at a high level it seems to be clear that this is what adaptive security is about. Somehow we give guarantees and the more parties are corrupted the less is guaranteed. And we will now explain how with this view one can overcome the commitment problem. So intuitively what we do is we guarantee, we give a guarantee for each set X that provides intuitively privacy to the parties in X. So the view, the guarantee for X says the view of the adversary depends only on the inputs of the parties that are not in X. Regardless of whether they are corrupted or not. And technically this means that the simulator can read the inputs of parties not in X. As I said regardless of whether they are corrupted. One can think about many different variants but this seems to be kind of one of the strongest guarantees to consider that allows at the same time to overcome the type of commitment problem that they explained before. So why do we overcome the commitment problem? So first observe that the guarantees dropped as soon as any party in X gets corrupted. So technically what we are saying is that the simulator stops at that point and the state of the party doesn't need to be explained so there is no commitment problem here. And moreover, if a party not in X gets corrupted, the simulator can explain its internal state because it knew its input beforehand. So let's go back to the slide with guarantees. We have that guarantee for X says intuitively any information leaked to the adversary so far depends only on the inputs of parties not in X. So if we pick the largest set X what we are saying is that all information that the adversary has learned so far depends only on the data of the corrupted set at that point. And this holds for any point in time. For example, if we fix this T, we say that any information leaked so far up to time T can be derived from the data of the corrupted parties at time T. And of course this is in contrast to the standard definition. The point is that different statements here do not need to be consistent with each other. And this is exactly what allows us to overcome the commitment problem. Now the question is like how can we express this in such a way that it composes as well for example. So in our work we choose the constructive cryptography framework to express such guarantees instantiated to the multi-party setting. The constructive crypto is a theory of what we call resources. There are clear algebraic and well defined rules. So the resources are typically elements that we care about. So those elements that we explicitly assume like the network or that we would like to construct like the ideal computer. These are simply systems with interfaces to the parties considered in the setting. Converters are the round objects. They are the protocol engines which are the recipes that we use to transform resources to resources. We can then combine resources and converters to construct further resources. And in fact we will understand these as sets of resources or resource specifications. So considering sets is kind of natural I think because it allows us to talk in terms of guarantees. Maybe we want to construct some sort of program that computes some function within a given accuracy and time limit. Maybe the network that we assume has some delay between I don't know 5 and 10 seconds and so on. We don't want to necessarily talk about fully defined concrete systems. We want to talk about guarantees. The construction notion says protocol pi which are all these protocol engines applied to any resource in specification R is a resource in specification S. So specification R includes any resource that we would be willing to assume. And S includes any resource that we would be happy to construct. So how can we say this in the framework? So we say for each set X the protocol attached to any resource in R satisfies a guarantee for X. And we can elegantly base all these guarantees at the same time within one single construction statement, simply by specifying the ideal specification as the intersection of specifications. So here are a few lemmas about our definition. So first, our definition lies strictly in between the current notions of adaptive and static security. It overcomes at least this type of commitment problem that I explained before. And therefore is kind of strictly weaker than the standard adaptive security definition. But it's also nice that many of the protocols that are believed to be secure in practice but are not secure under the standard adaptive security. These are secure under our definition. And this is the case for the famous CDN and the close protocols, a static version of the close protocol. And second, our guarantees are apparently strong in the sense that many of the typical examples that separate static from standard adaptive security actually also separate static from our new notion. So in conclusion, we opened a new space of security definitions with the idea of giving a guarantee for every set of so far owners parties. And we show that this viewpoint allows to give like a concrete instantiation that overcomes a particular commitment problem, while at the same time achieving strong adaptive security guarantees. So here is the IPRIN version and thank you very much for listening.


Good morning, everyone. I hope you have enough time to wake up during the previous talk. I thank you Fabian for waking you up. I am going, well, first, who am I? I have to make two disclosures here. First, I am the wrong person in the wrong place. I am not a software guy. The second one, the initially this talk was submitted for the debugging tools, deaf rooms, but then for whatever reason, relocated here. So I am not really sure how relevant it will be for you. And what I'm doing for living, instead of software development, I am designing hardware, embedded hardware, and using software to bring up this hardware to make it run. But since for the last five, 10 years, most of work is concentrated on the FPGA systems, the problem is not only how to bring this software running, but how to bring all the hardware platform for this software up and running, including the software or integrated hardcore CPU processors. So today, I'm going to talk, just make a short overview how it's possible to debug not software, but to do the hardware debugging, but to do it with a free and open software. And fortunately enough, it's possible all the pieces are here. And I can just summarize the entire presentation in one word. All the free software, all the pieces are here. But integration between them is really missing. So you have to assemble puzzle from different pieces together just to make anything running. And how many of you in this audience know what the FPGA is or have used FPGA? Wow. OK. Then perhaps you know everything I'm going to tell next and even quite possible that you know it much more than I do. Nevertheless, a few words why I think that software developers should care about the FPGAs? Because those are, of course, some pretty hard statements, which are not 100% true. But for the last 10 years, all the modern architecture, CPU architectures are pretty much stuck in their development. And to get any performance, you have to go to non-standard architectures or to custom hardware accelerators or to reconfigurable hardware to accelerate it. And for the last 30 years, 40 years already, all the hardware development is based on two languages. Both of them are, say, niche languages, VHDL and Verilog. And the preferable one depends on what site of Atlantics you are at. Well, there are some variations. So there are people in the States who know with VHDL. There are people in Europe who write some Verilog. But generally, depending on what site of Atlantics you are, you are choosing one or the other language. But unfortunately, compared to the software progress what we saw through the last 20 years, those two languages are still very, very old. Despite the new standards Verilog 2008, VHDL 2011, and the Common One 2020, those technologies are pretty much looking behind. And the industry itself is very conservative about taking any new approaches. So why this is needed for software developers? Because we have to make run our software on mailable, changeable, programmable, and heterogeneous architectures. And because the industry needs some kick from outside to move forward.  As I said, the free software is available and very actively developed under active development for the RTL designers and both VHDL and Verilog are supported. I'm not that much in the Verilog HDL, so we'll talk afterwards about the VHDL. But nevertheless, Verilator, Icarus Verilogs are excellent fast simulators, compiler from Verilog to CC++ or just an interpreting simulator. And Yosses is an excellent system which provides the full path from the Verilog RTL description down to the hardware. Unfortunately, only for the supported hardware architectures, but it's going to be extended and it's under active development. So everything is good here. And it's much more convenient for software people and for hardware people as well. Before you go to the hardware, you have to simulate it first. And if you can catch half of your errors in simulation, that's good. If you can catch 90% of your errors in simulation, that's even better because you have another 90% related to the hardware platforms. So better to separate them. And for VHDL simulation, there is a nice compiler. It's a part of the GNU compiler suite. It's a GHDL and it's written on the niche language on Ada. So there is actually not only embedded software but a quite conventional PC software written on Ada, which is a bit surprising and making it a bit more difficult to read. And there is a nice GUI front-end to look at because the hardware people are not speaking the same language as software, so we do not compile anything. We synthesize and place and route it. And we are not running print half debugging. We are looking to the Blinken LEDs. I hope they are still Blinken. Yes, I'm not sure how visible it is but we will come later to it. That's a quite common way to debug hardware. It's just Blinken. But of course there is a GUI front-end to look on the traces and it's much more pleasant to the eyes than the Blinken LEDs afterwards. Since we are going first to simulate, this is a very small snippet of the code. I'm going to debug and simulate. It's a simple generator, data pattern generator to run tests again and to test it and it supports two modes. In one it's a simple binary counter and in the more advanced mode, it's a linear feedback shift register. And as you see, the code itself is just eight, 10 lines with all the boilerplate code around it. And VHDL is quite verbose language. It's around 45, 50 lines in the file. But the same file can be simulated, run on the GHDL and traces can be viewed in GUI. And the physical is the very same file, can be later on compiled, synthesized and placed on the road for FPGA and then we can debug it on the hardware. That's a nice and not quite readable screenshot and now I will try to switch to the, oh, okay, it's here. So we are going to LED mode, oops. As you see, as the screen, oh, yeah, it's even better than a PDF. Just run GHDL several times to synthesize several blocks and run a simulation for a while. And now if we start to make without magic, okay? Oh, it's here. Exactly what you saw on the screenshot and we can see two separate, oops. If I can scroll it now. Uh-huh, I can. Uh-huh, we see those two different running modes, the binary count one and the linear feedback shift register. You see the one is Vulkan through the register here and zero, albeit zero is a possible state for the binary counter of course and it's a dead state for the linear feedback shift register. So if you move to that one, for the software developers, I think all the work is done here. We have a code, we can compile it, we can run the simulation, we can get a picture. It's working, we are done. Not quite true for the hardware. So, oops, sorry for that. So we have to go for the, down to the real hardware. And at this place we are completely, we have completely to surrender to the vendor tools because except for the uses and latest and some low-end Xilinx platform, there is no way to place and route and to generate a bit stream for the real hardware, for the real FPGA. I really hope that sometime soon it will change for, at least for some Altera Intel FPGAs. If someone of you will contribute to that. And for the on chip on hardware debugging, there are tools from all the vendors. Altera has a signal tap, Xilinx chip scope, Synopsys has identity RTL debugger, which is running on, I think all the FPGA families supported by Synopsys. Micro-SAMY microchip have their own smart debug features. So you actually can look inside the running hardware, running FPGA chip and get the same traces to look for the signals and in some advanced cases like the smart debuck is, you can even try to toggle some signals or to tweak some signals in the running system and see how your hardware react on this. What is the problem with those tools? I think that stated in their very first line, their proprietary and their vendor specific. So if by some crazy decision of hardware designer, you have two different FPGAs from different vendors on the same board, you basically have to have two completely different parallel setups of all the development and debugging tools. Somehow, magically, if you're lucky enough, connected to the same hardware and hopefully used in parallel. Haven't ever seen working it in practice. Unfortunately, even if you have to debug several or two separate pieces inside the same FPGA, it's already challenging with the vendor tools. If you have two different vendors and of course support engineers and field application engineers will just ask you, ah, you're using the different FPGA? Sorry, we can't help you. And that's a problem. And of course, especially if you are not working in the university or industrial environment, there is a cost for the licenses. And sometime it's acceptable and quite reasonable. Sometime they are charging a premium amount for basically non-working tools. But fortunately, but we can learn from them, we can look at them and maybe do some somewhat better job. And what we can learn from those tools is they are less common denominator, how to connect to the hardware. All those tools are talking to the hardware through the IEEE 1149.1. It's also I think something or so-called JTEC standard. It's simple four-wire interface to talk to. Initially it's been intended for the hardware testing, for the interconnectivity on the board testing, but now it's overused for the CPU cores debugging, for microcontroller debugging, for flash and programmable logic interface and programming, configuring, debugging it. So it's, I would say that it's most widely used and the least common denominator for all the interfaces. And there is a software support there are two, somewhat different, somewhat separate, somewhat competing projects to talk to different interfaces hardware debuggers. So besides the software running on the host system to talk to the hardware, you need some converter from the whatever interface you have on your development station. It's usually it's nowadays it's either USB or there are some converters based on the networking, either net connections, but you need some converter to talk to the hardware. So USB to JTEC converter. And some of them are integrated in the development board. Some of them are even integrated into the final products and the embedded systems. Sometimes it's just a small external boxes. And both UR, JTEC and OpenOCD provide support for, I don't know, something like around 50, 100 of different interfaces. And they are pretty flexible, provide the driver API work and you can write the plugin to support your own interface. And then of course it's interesting to look what is available as a free software for the GUI counterpart of those vendor tools. And there is an excellent interesting project of CROC. Its prime intention is to provide a free and open source interface for the real hardware. So it means for the digital multimeters, signal generators, logic analyzers, oscilloscopes. And for that matter, it supports a lot of vendor systems and big and expensive tech electronics, Agilent, HP, all the stuff. But it's also reasonably easy to provide a plugin driver for it so it can talk to the logic analyzer which is built in inside the FPGA. Since FPGA is very flexible, you can just take some more VHDL code or some more VRLO code and build a logic analyzer inside the FPGA using its internal resources and connect it to different signals inside the FPGA itself. And vendor tools such as their signal tap, chip scope, synopsis, smart debug, they are working exactly at this level. They are instantiating a separate logic analyzer instance inside your system connected to the signals you are pointed to, you are interested to look at. And then after that you is able to look inside your running system to figure out what's going on there. And then of course you can use all those tools with pretty much any board you have or any FPGA platforms you have because they are free. And this one is just an example of one of the boards. What is, yeah, and it's still blinking. You see it's running a binary counter mode, I hope. And as we, yes, it's a binary counter still. And as we saw on the VHDL snapshot, it can run in second mode. I will try to switch it now. So, yep, hope it's visible. It's a linear feedback shift register so the bits are moving. But in this mode, of course, you can debug in something with eight bits, debugging something with 32 bits with the LEDs would be possible. And yesterday downstairs I saw an excellent replica of PDP 11 console where you have 32 toggle switches, 32 LEDs, and you can actually download code and debug it this way. But with modern architectures, with hundreds of registers, that would be a little bit painful and too slow. So all the tools, all the pieces are actually available and there are different projects to connect them together. But what you have to do to make it running is to assemble them and to make them talk to each other. Because URG Tech, URG Tech has its own interface library to talk to it. Open OCD provides an RPC interface, but to this interface you have to talk TICL, which is another example of 40 years old language, I think. And it's very, very favorable by both VHDL and VRLog designers. So they don't know much about the make files really. What they have is they have a VRLog code or VHDL code and then TICL scripts to set up and compile it. And to follow this tradition, Open OCD provides an RPC talking TICL. But which is nice and there is an example of how to talk to this interface from Python. And what I've done for this demonstration, I wrote a simple driver for the Open OCD, for LibcGROC to talk to the Open OCD TICL interface. So there is a plugin for the GUI, for the PulseView, for LibcGROC, which talks through the TICL interface to the Open OCD, which in turn talks through USB to the USB to JTEC converter, which in turn talks through the JTEC to the logic analyzer inside the FPGA. And yes, all this code is free and available on GitHub page and it's even running. And what we can get running this code is this nice snapshot, screenshot of the SIGGROC PulseView showing basically the same picture. For whatever reason, when I've made a screenshot, they are mirrored compared to the one with the simulation results. On the simulation screenshot, we had a binary counter first and linear feedback shift register afterwards. Here we have a linear feedback shift register and binary counter. And I also think that bit order is swapped. But what, it happens. And now let's see if I can make it run on live. On live. Here in the FPGA code demo and actual FPGA file is also here. It's a bit bigger than the small snapshot I've shown. It's initialization logic, but here is the actual code we are, we've been simulating and now we are debugging on the real hardware. And if we run S-O-V-G-TEC server. OCD are just a configuration files integral for the open OCD and which describe how to interface to all the pieces which are interface to use and how to talk to it. Yes, it's running and it sees the real hardware talking to it. So now we can just take a separate window okay, hope it's right. So that's a magic to run the pulse view and substitute it with the freshly built patched Seagrog library where we should be able to see the nice device. Let's see if it's still working. Okay. We have to find the device and it's here. V-G-TEC is just another piece of the vendor specific code to make it possible to talk from the J-TEC interface of the FPGA to their custom J-TEC connected logic inside the FPGA. But it's easy to be replaced and we have to talk over the network to our server and it's running on the same machine. Just different numbers. We scan for it. Yes, it's here. That's nice. Now we can set up a trigger for something interesting as our dead state for the feedback shift register which is all zeros and it takes me some time. Oops. Okay, probably it's not all zeros but nevertheless. And now we can switch it just to make it run faster and zoom in. So it's a linear feedback shift register but running now not blinking at two hertz which are suitable for debugging on the LEDs but running at a full speed. I think the system clock frequency is 25 mech errors at the moment so it's just an external clock. So what we see is that it's possible with the free and open software tools to look inside the running FPGA. And I'm really pleased that the demo is working life. It's nice to have a small demo but the real question is where we move next and what important things to be done. I think the most important thing to be done is an integration between tools because nobody would ever be able to convince any hardware developer or any FPGA developer for the debugging to switch from the vendor tools you're using with one particular FPGA to the open source tools. If you have to take this part, it's written in C, you have to compile it yourself with your own page library, then you have to take this part and write a configuration file on Tickle, then you have to take that part and yeah, it's written on Ada, you have to compile it for your system as well and then you're probably, if everything goes well, you have to connect it to your hardware and then you can debug your hardware. No, it would take me weeks, it takes months to debug, only the debugging tool chain. So some nice integration and that's something to debug in standards and interfaces. IEEE standards take real long time to get accommodated and then of course an integration with the GDB. In this sense, it's pretty good because Open OCD supports the GDB, remote debugging interface and many, many different hardware cores but still missing the integration with software support and all these code, all the examples are available on the GitHub page, you can link to it, you can send patches, you can download and start playing with it and any questions you might have. Thank you for your attention. Oh, yes, please. In terms of debugging and hardware, you usually trade off visibility for speed. Do you see value in simulation for finding these kind of like basic hardware bugs? So the question is the visibility versus speed during on hardware debugging. Yes, with some time it's a problem and simulation is good to catch the logic errors but it cannot catch all the hardware and racing conditions problems. What is good with the instrumentation running on the FPGA itself on hardware debugging, you are let's say less restricted by the speed because JTEC here is running it's something like one megahertz and the real signals we saw captured are running full speed 25 megahertz, they could run 100 megahertz and actually this demonstration came from the actual project I've spent last year working on on the micro-SMI FPGA where the actual signals were coming at a gigabit data rate but it still was possible to capture them at the gigabit rate on the part of the FPGA then buffer it, re-synchronize and look through the slow available debugging interfaces. So yes, there are such problems, no simulation can solve all of them on hardware debugging is needed for that and it makes it easier somewhat. Okay, sorry, we cannot have more questions. I'm sorry but yeah, you're welcome to drop a message or just stop by later.


Have you ever wanted to be a time traveler? This is a photo I took last night of the Andromeda Galaxy, a barred spiral galaxy made up of one trillion stars. This galaxy is one of the closest neighbors to our Milky Way galaxy which is why it looks so large in the sky, but it's still two and a half million light years away from us. That means this photo is a snapshot of what the galaxy looked like two and a half million years ago, because that's how long it took the light to reach us here on Earth. So in a sense, time travel is already possible. And if you have a camera, a telephoto lens, and a tripod, you too can be a time traveler, and I'm about to show you how. Hello, my name is Nico Carver and I'm an astrophotographer. Astrophotography is the art of photographing the night sky. And I have a particular interest in photographing deep sky objects, meaning objects outside of our solar system. Today I'm going to show you every step of how to capture and process a photo of the Andromeda Galaxy. Before we get started, I just want to very quickly say that this YouTube channel is supported by my patrons over on Patreon. If you'd like to join, it starts at just $1 a month and I truly appreciate the support. Let's dive right in. What do you need to take a photo like this? Well, the first important thing is a dark sky. I live in Boston, so I knew I had to escape the city lights to take this, and I drove about two hours away to a park with much darker skies. The best place to find a dark location near you is a website. It's called lightpollutionmap.info. And on this website, the cooler colors like green, gray, and black mean darker skies. If you aren't sure where you can set up, I'd start with local astronomy clubs who often have their own fields for club members. Another idea is to talk to park departments and campgrounds, because a lot of times you might be able to get permission to be in a park after hours or a campground may have a nice field you can use. The second thing needed to take a photo like this one is a bit of time, both for planning and for practice. Astrophotography is a pretty technical form of photography, meaning it does take a bit of practice with your camera and planning the settings you're going to use to get good results. The third important thing for taking a photo like this one is equipment. And you may think you need a really fancy tracking mount and a telescope to take a photo like this, but it actually was done with this equipment you're seeing right here. Everything that I use to take this photo, I spent under $1,000. I did buy some things used, but it's definitely possible on an even tighter budget. And if you don't already have this stuff, maybe you can borrow it from a friend or a family member. OK, so the first thing is I'm using a basic tripod here. This is a Mi Photo road trip. It just has a nice ball head and it's collapsible. It's about $100. For the camera, I'm using a stock Canon 60D, which is a 18-megapixel DSLR made about 10 years ago. I bought this one on eBay for about $300. The lens is the nicest piece of gear. This is a Canon 200 millimeter F2.8L lens. I bought it directly from Canon's refurbished site for $600. And I find it's a really good lens for astrophotography. But don't feel you need to use what I'm using. If you already have a telephoto lens, a tripod and a camera, then you are set. The last two pieces of equipment are optional, but highly recommended. The first one is some kind of intervalometer. If your camera has an internal intervalometer, you can use that or maybe an app or something. And then maybe you don't need this. But for us with older cameras like this 60D, this is a really nice $30 purchase. You just plug it in. It's simple to use. And that's how we're going to take pictures in the night sky without introducing vibration. You can see it shaking around by touching the camera. The other accessory I really like is a Bodinov mask, which is a focusing aid. I 3D printed mine so that it's a perfect match for this lens. And I'll put the link in the description for the video where I talk about 3D printing them. But you could also just buy one. They go for something like $20 to $40. And that's it for equipment. Five things, tripod, camera, lens, Bodinov mask, intervalometer. The fourth thing to take a photo like this is proper technique in processing. And this is going to be the hardest of the four, but I'm really going to try to keep it as simple as possible in this video. I'm going to break the capture technique down to a few things. First, choosing the right shutter speed in ISO. Then when we get on the field, achieving perfect focus manually with the lens. Then finding a drama to Galaxy and taking hundreds of photos of it so that we can stack them together and average out the noise. And finally, taking calibration frames called bias, darks, and flats. These each address a different kind of noise or problem with your camera or lens. And by using them properly, we can make our final photo look even better. And then after we've captured our photos, we need to process them to create our final picture. This is sometimes called data reduction, meaning we take hundreds and hundreds of photos and we reduce them all down into one final photo. And processing in this video will be done with two programs. A free Windows program called Deep Sky Stacker and then Adobe Photoshop. However, in the next few days, I'll release various part twos to this video that will show you how to process using other programs, including completely free open source programs like Serial and GIMP that work on any operating system, including Mac and Linux. Okay, that was the overview. Now let's jump into the step by step. Step one, we need to choose an ISO and shutter speed for a year. Choosing an ISO is all about the camera's sensor and we try to balance readout noise and dynamic range. Typically higher ISOs offer lower readout noise, but at the cost of decreased dynamic range. But let's take all the guesswork out of this. We're gonna use Bill Claff's excellent website, Photons to Photos. Look over here, there's a series of interactive charts and we're looking for the fourth chart down called input referred read noise chart. Okay, and the first step in using this interactive graph is picking your camera from the list over here on the right. I'm sorry if it doesn't have your camera, but it does have a lot of cameras. So chances are it does have your camera. I'm gonna choose the Canon EOS 60D because that's the camera I'm using. And then you want to pick an ISO based on this chart where it starts leveling off in terms of readout noise. Readout noise is something that's present in every shot that you take. So it's not something like photon noise that you can average out and use things like Kappa Sigma Clipping to get rid of. And so we want to pick an ISO that has an appropriately low read noise, usually somewhere below two electrons is good. So on my Canon 60D, that happens around ISO 1600, but we're even closer when we get to ISO 3200. So that's what I'm gonna shoot at tonight is ISO 3200. If I was on a tracking mount, I would probably pick 800 or 1600 because then I can do longer shots and then read noise isn't as big an issue. But since we're doing many, many one-second exposures, read noise is a big issue. And I'm gonna pick ISO 3200 where read noise is pretty low. Now you might ask, why not just go all the way to ISO 6400? And the reason is because there's not much difference between 3200 and 6400. And if there's not much difference, you don't wanna go to the higher ISO because it's limiting the dynamic range of the camera. Basically every ISO setting that you pick that's higher, you're limiting the amount of information that can be recorded in a single shot. And so I would always err on the side of getting more dynamic range when two read out noises are pretty similar. And this leads me into ISO lists or ISO invariant cameras. If you do happen to have one of these, your chart would look more like this. Basically just a very slow sloping line rather than this very dramatic stair step line that I have on my Canon. So this is the Nikon D5600 and you can see this is what an ISO invariant camera would look like. The read out noise barely changes across the ISO range. So for this camera, I would probably be comfortable anywhere from ISO 200 and I probably would never shoot at ISO 3200 because there's just really no point. But for my Canon 6D, it does make sense. So that's what I'm gonna go with tonight. Hopefully this made sense. Basically again, just the key is where you see this chart start leveling out for your camera, pick the lowest ISO where it starts leveling out. So for this camera that arguably could be either ISO 1600 or 3200, but I'm gonna go with 3200 tonight. Choosing a shutter speed is about getting the longest exposure possible to let in the most amount of light before the stars get misshapen and turn into lines due to the Earth's rotation. The best resource I've found to figure out shutter speed is Frederic Michaud's NPF rule. And he has a handy calculator. The link will be in the description and this calculator allows you to calculate ideal shutter speed. And it is in French, but if you're using Google Chrome, you can just click up here in the address bar and translate it to your language of choice. And we basically just go through this calculator and fill in the details. So if you don't see your camera in the list here, you wanna leave it on other and enter data manually and then just look up for your camera, the size of a photo site or a pixel and the number of pixels. And if you just type in your camera and pixel size, one of the first results should be this DigiCam database and this almost always includes pixel pitch or pixel size, same thing. So for this camera, it's 4.29 microns. And then if you scroll down a little bit, it also includes the image resolution. So you would just enter these things in here or if your camera is in the list, you can just select from the list and it will enter them for you. Then we move on to your lens or what it calls the objective and this is the focal length here. So for me, it was 200 and I shot at 2.8 aperture. Okay, if you're not sure about these, don't worry too much about it but you can look them up in a Planetarium program like Stellarium or a Planetarium app on your phone like Skymap quite easily. So Andromeda is going to be to the northeast and at a latitude of about 42 degrees and the target height above the horizon in degrees was gonna be about 35. Okay, and then we'll click calculate the exposure time and it tells us down here that we can shoot for 1.1 second. Well, actually more like one second and even if we could do 1.1 second, I would round down anyways because I can't set up my camera to shoot 1.1 second. It has to be in increments of one second. So one second, two seconds, so forth. So anyways, this tells us the correct shutter speed for 200 millimeter lens shooting to the northeast with this particular sensor in the Canon 6D is one second exposures. Okay, so first step, we figured out the ISO and shutter speed. Step two, we have to find a dark sky and again, what I recommend is light pollution map.info to get an idea of where dark skies may be near you. If you can find others who do astrophotography in your area through astronomy clubs or maybe social media, they may know some good spots in your area and then you can go together and it's always safer and more fun to have an astrophotography buddy to shoot with. All right, step three, we've arrived at the dark site. We have a full battery. We're shooting in raw with the ISO and shutter speed we figured out from step one. Let's now point our camera at a bright star and focus it. The first step is to make sure you are in manual focus. You're gonna set the focus to infinity if your lens has a scale and get a good grip on the focusing ring on your lens. Next, you're gonna turn on live view and hopefully you should see the star you're pointed at. If not, moving the focusing ring back and forth should help you see it. If you don't have a bottom of mass, the trick to focus is just getting a bright star as small as possible and you're gonna move this focusing ring back and forth and just try to find that point where the star is smallest. To really see the star though, we need to zoom in. So find the zoom button on your camera and zoom in as far as you can in live view. Now, when you're really in focus, what should happen is all of a sudden you'll see other smaller stars just pop into view on screen. And then as soon as you lose that best focus, it'll disappear again. This is a bit hard to see in video but I'm gonna show it to you with Jupiter because the Jupiter is really bright. And what happens when we get Jupiter into focus is all of a sudden we'll see a little line of moons pop in. Now, if you do have a bottom of mask, just go ahead and pop that onto the front of the lens here. And all you need to do now is get that central spike that we see on the bright star right in the center of that X pattern. And you do need a bright star to see this pattern. And if you still don't see it even with a bright star, just take a one to two second exposure and look in playback mode and the pattern should appear. Once you have that all lined up with the X and then the central spike, you know that you have perfect focus and we can move on. All right, step four. Now we just have to find Andromeda. And to do this, I suggest using a free planetarium app on your smartphone. I'm using SkyMap here on my Android phone. I'm just gonna move it around with the camera until M31 is centered. M31 is just the name for Andromeda in the Messier catalog. And what you see here in SkyMap or any other planetarium app is that there's two bright stars in Pegasus that form a line with the galaxy. So I'm just gonna try to find those in my live view here. Here they are. I'm gonna keep going up a bit until the upper of the two bright stars is at the bottom of my screen. I'll then go ahead and take a picture and you see right there that little fuzzy blob, that's the Andromeda galaxy. Now the stacking program will take care of alignment based on the star patterns in the picture. So we don't have to be super precise but about every 50 shots or so we want to recenter Andromeda in the shot. And I'd always recommend every time you reframe, take a test shot and then check framing and focus. If both look good, then we can go ahead and take the next set of 50. We just wanna repeat this as many times as possible. The more photos we take, the less noise we have to deal with in the final photo. Okay, step five. We've taken our photos of Andromeda but we can't quite pack up yet. Our Andromeda photos are what we call our light frames meaning the actual photos that we took of the night sky. To get really ideal results though, we now wanna take calibration frames. So in addition to the light frames, we also want these calibration frames and we're gonna start with dark frames. For dark frames, we wanna leave all the settings alone, same ISO, same shutter speed. All we have to do is cover the lens with a lens cap so that no light is hitting the sensor. Now I'm sure many of you are wondering, can't we just take these later on after we go home? The answer is no. These need to be taken at the same temperature as the lights. So you really do need to take them here in the field. But with such short exposures, these are really quick to take. We'll just, we just want 50 so we'll just leave the same setting on the intervalometer and we're gonna do one second each. So we're just gonna cover the lens, hit start on the intervalometer and that's it. Next up is bias frames. You can technically take these anytime but we might as well take them now. All we wanna do is change the shutter speed. I'm gonna change it from one second down to as fast as the shutter can go on your camera. For my camera here, that's one eight thousands of a second and let's take 75 bias frames. Okay, and last up is flat frames. And it's important to take these very soon before after you take your light frames because we want everything to be the same in terms of focus and any dust particles on the lens or the sensor. So I wouldn't even recommend turning your camera off if you can help it. We just wanna take these as soon as possible. To take these, we take the lens cap back off and we point the lens straight up. And I'm gonna rubber band a clean white t-shirt to the lens hood. You want it to be taut with no wrinkles. Then we place a white screen on top and this can be any pure white screen. If you have an iPad you can set to white or a laptop you can set to white that will work. If you wanna buy something just for this purpose what I'd recommend is an LED tracing panel. These go for about 30 bucks and they're powered with a USB cable. So whatever you have that produces a white light just put that on top. And now we're gonna move the shutter speed up and down with the dial here until this exposure meter at the bottom of the screen is telling us we're properly exposed. To check that we just push the shutter down halfway and I'll tell you right here. So for my particular setup here it's showing proper middle exposure at 1 40th of a second. So I'm just gonna set my interval on her to take 50 and hit start. Okay, that's it. We've captured a thousand light frames, 50 dark frames with the same settings as the lights just with the lens cap on, 75 bias frames which are lens cap on but shortest shutter speed the camera can do and 50 flat frames which are middle exposure with a white t-shirt and a white screen on top of the lens. Now we can pack up and go process our photos on the computer. Okay, I've now transferred all my files from the camera onto the computer and organize them into these four folders bias frames, dark frames, flats and lights. And now what I'm gonna do is I'm gonna open up the free program deep sky stacker which you can download from the web. And then I'm just going to follow along here on the left hand side starting with open picture files. And I'm gonna start by opening up all of my lights. So I'm just gonna go into the lights folder, click on one and then press control A to select all of them and click open. Okay, they come in right here. You can see that we have a long list of light frames but for some reason it says light frame zero. So that's just because by default it doesn't check them. So we're just gonna click check all over here on the left hand side. And now we can see we have 992 light frames. I did take a thousand but just looking through them a little bit on the camera, I noticed at least eight that had clouds or other problems like focus problems. So I've already deleted those and we have 992. And then I'm just gonna add the calibration files that we took. So starting with dark files. We'll go into my darks folder here, press control A, click open. So we've added 50 darks. Then I'm gonna click on flat files, go into my flats folder again, press control A and open. 46 flats.  Go into my biases folder, press control A to select all and click open. And we brought in 74 bias files. So now that we have everything loaded, we can go down to this command that's highlighted in red right here that says register checked pictures. I'm just going to click into advanced and click compute the number of detected stars. It tells me 75 stars were detected. And usually what I do is I'm gonna lower the threshold a little bit until that number gets up over 100. So at 14% it got up to 116 stars, that sounds good. And you might have to keep lowering your threshold. You could lower it all the way down to 5% or something but just you want at least probably 100 stars to match on. Okay, I'm gonna leave automatic detection of hot pixels turned on. I'm going to check stack after registering and say select the best 95% of pictures and stack them. If you wanted to look through the quality of your different pictures before stacking them, you could uncheck that and then it will give every picture a quality score and you can do some extra work based on that. But I'm gonna leave that part out in this video just because this is gonna be, I'm just trying to keep it as simple as possible. I would recommend clicking on recommended settings and just looking through this and make sure that there's nothing that stands out that you have to do. You wanna make sure that all of the settings are set and then you'll see that all of these things show in green based on what's recommended. And that's it. Then we're gonna go ahead and click okay and it will go through this whole process of registering the pictures, meaning looking at the star patterns and matching them up so that all of the pictures are lined up in terms of the stars. And then once it's done that, it can stack them, meaning averaging them. And by averaging them, it pays attention to where the signal is in the picture. So the stars and the Andromeda Galaxy but the noise will be more random from picture to picture. And so by applying what's called Kappa Sigma Clipping, we throw out that random noise because it's so inconsistent. So that's how stacking works. One other thing is because there's not much room left on my laptop here, I am using a temp folder on an external drive. So if you do need to do that, you just click into stacking parameters here and then you can pick an external drive or USB thumb drive to hold your temporary files folder because for this picture, it's going to be quite large. So I'm going to click okay. And tells me we're just stacking 1,000 pictures at one second each. So that's equivalent to about 16 minutes total exposure. We can see everything was taken at ISO 3200. And it tells me that this process will temporarily use 109 or close to 110 gigabytes on the D drive. And I only have 169 gigabytes free. So getting close there, but I have just enough free that that should work. So let's go ahead and click okay and let it do its thing here. This is going to take a long time. So I'm just going to probably leave it overnight and we'll check up on it in the morning. This estimated remaining time, that's just for the current process. So I don't feel like it's going to be done in four minutes. It's really going to take hours and hours to do all this since we're dealing with so many frames. So this three minutes is just to stack the bias frames. Then it goes through a bunch of different things because it creates masters for each calibration file. It calibrates all the lights, it registers all the lights, which takes a really long time and it stacks all the lights, which again takes a lot of time. So I'm just going to leave this and then when it's all done, we'll pick up there. Okay, it's finished. It actually took it almost 22 hours to complete this whole stacking process, calibration, registration and stacking. This is what you want to see when it's done, meaning it's going to be in a linear state, meaning that the picture should be mostly black. You might see a few little white spots. These are bright star cores, but you don't really want to see anything too bright at this point. If everything went correctly, it should look pretty black like this. And it does do an autosave file. So in your lights folder, you should find an autosave.tiff. I will warn you that that's a 32-bit file. So if you are using older versions of Photoshop or GIMP that don't have 32-bit support, you may not want to use that file, otherwise it's fine to use. But just to be safe, I'm going to show you how to save off a 16-bit tiff file under the processing section right here.  Make sure that it's set as save as type tiff image, 16 bits per channel. We'll give it a name. I'm just going to call it m31-dss. And under options, you want this option to be selected. Embed adjustments in the saved image, but do not apply them. Compression, I leave set to none. And so I'm just going to save this to my desktop, click save. Here it is. And so this is what I'm going to bring into my next step into the post-processing program. I've switched over to my Mac because that's where I have Photoshop installed. And I've just opened up the tiff file directly from Deep Sky Stacker's stacking process. So you can see this is what it looks like. It looks just like it did when we were done with the Deep Sky Stacker steps. Over here on my layers panel, I have the background layer. I'm going to go ahead and immediately duplicate that layer just by right clicking on it and choosing duplicate layer. And I'll call the new duplicated layer first stretch. Okay, and then the first thing we're going to do is open up the histograms window and I'm going to switch it from compact view, which was the default to all channels view to show the three different colors, red, green, and blue. Okay. And now we can start stretching. So to do that, I'm going to go to image adjustments levels or I could press control L if I'm on Windows or command L on Mac. And I'm going to take this mid-tone slider, the one in the middle here and just bring that quite far over, something like that. And I'm going to do that same thing again. So I'm just going to take that mid-tone slider and again bring it pretty far over to the left. So I'm moving it from the middle over to the left. Okay, and now we can see some separation from the left-hand side. So everything was over here compacted in the shadows area, but by stretching, we're bringing the information out here in closer to the mid-tones and we can start seeing some stuff come out here. Now I can see that immediately we have an issue where the red channel is getting a little bit out in front of the green and the blue and also the blue looks the most anemic of the three. Well, the red channel looks a little bit fatter. So another thing we're going to try to do is as we're stretching, get these not only to be lined up somewhat, but also the same width. So there's just as much information in the red channel as there is in the green and the blue channels. And we can do that with the levels command. So I'm just going to bring it back up again. And so far, we've been working on the whole image at once by having it in channel RGB, but we can always break it down into the individual channels by stretching just the blue, just the green, or just the red. So I'm going to start by stretching the blue. And basically what I'm trying to do is make it about the same width and about at the same spot as the red channel. And I'm going to do that with, by using both the mid-tone slider and the shadow slider. So I'm going to start with bringing the mid-tone slider over to the left, and then I'm going to take the shadow slider and bring that over a little bit to the right. And it's helpful to look up at this view too, because I can see in that view that the blue is coming out a little bit beyond where the red is. So I'm just going to take that shadow slider and move it a little bit like that until they're better lined up. Then I'm going to do the same thing with the green channel, but it doesn't need quite as dramatic a stretch. But I'm just going to do something like that. All right, so we're going to hit okay. And you can see the image is starting to come out here. Let's go ahead and do some more stretching. I'm just going to bring up levels again. I'm going to take the mid-tone slider and move it over to the left. I'm going to take the shadow slider and move that to the right a little bit. Okay, and at this point, I'm going to close that for a second. You can always bring it back open by just doing that. One thing to note here is that we have a sort of reddish look along the corners, but there's really not much information out here that I'm interested in. I'm going to crop in anyways, I'm planning to. So let's go ahead and just crop in now. And I'm just going to crop in closer in on the galaxy. Something like that. All right, next what I want to do is I want to add a little bit of saturation and also work on the color balance a little bit more. But I'm going to use adjustment layers to do this because they're not as destructive to the image, meaning we don't have to go back in history to get back to a previous state. We can actually just turn the adjustment layers off and on or adjust them on the fly. So the first one that I'm going to use is this huge slash saturation adjustment layer. And I'm just going to push the saturation up. Let's try 40. And we can always back off later, but this just sort of gives me an idea of what the color looks like now. And the color looks too green, especially in the galaxy. So what we're going to do is we'll apply a color balance adjustment layer. And we're going to remove some of that green cast by just taking the green magenta slider. Okay, with that done. All right, this is looking good, but I want to do some other things to it, including a second stretch of the data. So I'm going to make a new copy or a new layer from what is visible here. And so to do that on a Mac, you do command option shift E as in the E key and on Windows it's control option shift E. Okay, and then you can see here in my layers panel there's a new layer one. I'm going to call that second stretch. And I'm just going to again, open up my levels command and just try to give this a little bit more of a boost. Something like that. And you can see that what we're seeing now is that these outer edges of the galaxy that before were a little bit hidden in the darkness of the sky. And at this point, instead of using levels because we were sort of running out of room to do much more with the levels, I'm going to open up a curves adjustment. So that's command M on Mac or control M on Windows. And this just lets me do a little bit more of a subtle thing than the levels. When the levels you basically just have control over a mid tones point, a shadows point and a highlights point in curves, you can make the points wherever you want. So I can make a point there and a point there just to try to add a bit of contrast to the galaxy. And what I'm seeing now is that the background is looking far too red. So I'm also going to open up the red channel in curves and just take this shadow point and just move it over a little bit so that that red wash of the background goes away. Okay, so hopefully you can see that we've made some progress here. This was the first stretch. And then with one more round of levels and a bit of work in curves, here is the second stretch. So one thing you may notice is that this is actually the orientation of Andromeda Galaxy with North being up. So if we're thinking of the upper plane of this image being towards the North Star, this is how Andromeda would look. But most people rotate their images 180 because it just is the way that we've grown accustomed to looking at Andromeda. There's no real up in space, but let's go ahead and just do that because it feels more natural at this point. So I'm just gonna rotate 180 by going to the image menu and choosing image rotation 180. Okay, there we go. And at this point, I'm liking how Andromeda is looking other than maybe being still a little bit too green. One thing we could do to control that a little bit is open up that curves again and just open up the green channel and just take a point over here in the highlights and bring it down just a little bit. So I really like how the galaxy is starting to come out in this second stretch, but our colors are probably getting a little bit wonky except for in the galaxy, I think actually they look pretty good. So we might have to do a little bit of work with, let's do a curves adjustment layer. And let's just play around with this red channel a little bit. And I'm just gonna play around with each channel separately. And what I'm doing is I'm just basically resetting black points, putting different points close to the black point until I get something that to my eye looks more natural. So you can see I think both the blue and the magenta were too, and the red I guess were too high in the blacks here. So by adding a little bit of green and taking down the blue and the red, we've corrected that white balance issue. But the stretch on the galaxy is preserved because if we were just to look at what we had before a second stretch, you can see it looks a little green and there's not much that's popping out here along the outer edges. The second stretch got us the outer part of the galaxy, but then we just needed to fix the color a little bit. Okay, and this is sort of a nice faithful representation of the data that we got. I could stop right now and call this a day. It looks really good considering this is untracked one second exposures, but I wanna bring it a little bit further along. And to do that, we wanna separate out the stars and the DSO because if we don't, what will happen? If we keep just trying to push the DSO without separating out the stars, you can see what happens is that I just added a huge saturation bump is we can get the galaxy looking sort of cool, but then the stars become way too gross looking.  See how it's just like, well, one, it brings out all problems in the background. It makes the stars way too colorful for my taste. And so it's much easier to keep pushing this image if we can separate the stars and the background and the DSO and then work on them separately and then recombine them. So to do that, let's use that command option, Shift E command again or Control Option Shift E if you're on Windows. And then I'm just gonna save this stars as a 16 bit TIFF file. So I'm gonna do File, Save As, I wanna use TIFF. I'm gonna turn off layers. So it just makes a flattened one layer image and I'll call this stars and save it to the desktop. Then what I'm gonna do is I'm going to Google StarNet++. This is a standalone program that's useful for removing stars from astrophotography. And I'm gonna download it from this source forage page. And if you go to Files up here at the top and then go into version 1.1, they have a nice zip file for each main type of operating system. So since I'm on a Mac, I'm going to download the Mac version. Okay, once that's downloaded, I'm just going to move the entire StarNet macOS folder onto my desktop here and open it up. And then I'm just going to open up this RunRGBStarNet.sh file with a text editor. I'm just gonna change these two file names. The first one being the input file. So we called that stars.tiff. And then I'm gonna change the output file to m31starless.tiff. This number is the stride. And typically I use a lower stride when I'm at a lower focal length and a higher stride when I'm at a higher focal length. It starts at 128, but you can go down to 16. I'm gonna change it to 64 for this image. And typically the lower the stride number, the longer the process takes. So if you wanted to see what will happen, if you run it quicker, you can leave it on the default 128. Okay, then I just have to move this stars.tiff into the same directory. Okay, with that shell file edited like this and the stars.tiff file in the same directory, we now just have to run this file from a terminal command. So I'm just gonna open up terminal. And we have to get into this folder. So the command for that is cd for change directory space. And then I'm just gonna drag this folder over and hit enter. And then we just wanna run this command or this, sorry, this shell script which calls on the actual program. So to run it, all I have to do is just drag it over and hit enter. And it starts running. It gives us a little information about the file. It tells us how many different tiles it's gonna break it the image up into to analyze. That's what the stride number is. So the lower the stride number, the more tiles it will break the image up into and then the longer it'll take. And then it gives us a percentage finished. So this will take some time, probably 20, 30 minutes on my laptop with an image this size. Okay, starnet finished up pretty quick. We now have the MO31 starless file. I'm gonna go ahead and right click on that and open it up in Photoshop. There we go. There are a few little artifacts, holes but we'll deal with those in processing. But what you should be able to see is without all the stars getting in the way, we can really see a lot of cool details in M31 including all of the dust lanes, the spiral dust lanes here. First thing I'm gonna do is just apply a curves adjustment just to sort of see what we have a little bit here. Okay, it looks pretty good but there's still a bit of a green cast here in the middle so let's just go back into that curves and just tamp down the green just a little bit up here on the high end but try to keep it steady here in the mid tones. See if that helped at all. Yeah, that looks pretty good. Okay, now I'm gonna apply some saturation. I'm gonna go back into curves and just make that curves adjustment even more dramatic. Okay, and at this point what I wanna do is I wanna create a mask so that I can desaturate and darken the sky background and work on the galaxy separately from this sort of messed up sky back here. So the way I'm gonna do that is I'm going to make a new from visible copy. So command option shift E on Mac or control option shift E on Windows and I'm gonna go to image adjustments, use less saturation and just remove all saturation from that layer. I'm just gonna grab my pen tool here and I'm just going to create a sort of rough shape around the galaxy here like that. And then I'm just going to click on selection and say I wanna feather it by 15 pixels. Okay, so now we have a selection around the galaxy and I actually want to select everything else other than the galaxy. So I'm gonna do select inverse and then I'm going to just add a curves adjustment layer and darken this up quite a bit. But then I want to go ahead and blur that mask that I just made on the curves layer because right now it's very sharp. So I'm just going to do filter, blur, Gaussian blur and do something like 80 pixels. So now it looks like this and I also want to apply that to this little satellite galaxy. So I'm just gonna grab a brush and brush that on like that with black. I'm just gonna go ahead and merge these two, just right click after selecting both of them and do merge layers.  And just to be sure I'm going to go ahead and paint in black on the corners so that we don't have any weird stuff coming through. Basically, I just want the galaxy to be brighter. And I think it should actually be even a little brighter still, so I'm gonna do command M. Just make it a bit brighter here. Okay, that looks good. So all we were doing was creating a mask. We can just call it mask here. And I'm gonna go ahead and select all and copy that. And then let's make some new hue slash saturation layers and we can turn the mask off and then apply it to those layers. So I'm gonna hold down the option key or alt key on windows and click on that and paste in the new mask that we made. And I'll do it on this one as well. On this one, I'm going to invert it. So I'm just gonna press command I. And on this inverted one, I'm going to also make it a bit darker. Okay, so now we've done all this work with masks. We're gonna actually now apply what we've done. So on this one, since white selects, this is going to be a saturation boost. So I'll just rename that one saturation boost. And on this one, this is going to be a desaturate layer. So I wanna desaturate the background and saturate the galaxy. Well, it actually looks already pretty saturated. So I'm not sure if I'm gonna use that, but let's start by desaturating the background. So I'm just gonna take this saturation slider, move it to the left, take the lightness slider and move that to the left as well. Okay, now that we have this actually neutral black background, I can see the issues with color balance in the galaxy a lot more clearly. And so I'm going to create a new curves layer and apply the mask to it. There we go. And I'm just gonna do this by eye, just looking at the galaxy here. So it has a little bit too much red in the outer arms. So you see the difference there. But that red is actually important to the core because when I take it away, the core is getting too cyan-y green-ish color. So what I'm gonna do is I'm gonna duplicate that layer, just right-click and duplicate layer. I'm called this one core. And I'm going to basically do the opposite with the red to get a sort of nice warm core, how Andromeda should look. So we've now just done the opposite on that one though. But that basically returned us to where we were with the outer arms looking too red. So I'm gonna go onto this mask just with a soft brush, have that not apply to anything but the core area here. Okay, so sort of subtle, but here is where we were before and here is taking some of the red out of the arms. And then here's returning some of that red to the core area. Now that I have this core mask, let me try to take out even a little bit more green out of that core. And for that I'm gonna use a color balance. So let me just go ahead and apply this layer mask to the color balance adjustment layer just by holding down Alt or Option on Mac and dragging it. So Option Drag or Alt Drag on Windows is going to allow you to copy that layer mask onto this layer. And then it says, do you wanna replace the layer mask? I say yes. And now with the color balance, I'm just going to add yellow and magenta and red to that core area. So here's before, there's after. So again, a fairly subtle difference, but I think it really does make the picture sing a little bit more. Without it, I just think it doesn't look as balanced. This color balance looks better to me and I'm just doing it mostly by eye here. And at this point, we're almost done with the starless rendition of the galaxy, but I just wanna make it a little bit brighter. So I'm just going to add another curves layer here and just brighten it up a little bit. Okay, I think this is ready to go. So this is our starless Andromeda. Now we wanna add the stars back in. So to do that, we're gonna go back here to our stars layer, which is now looking very magenta compared to this. So let me try to just fix that a little bit first. Sorry, I know a lot of, it's been a lot of color adjustment steps here. Let me just reset that just a little bit. There we go. Okay, I'm going to select that, copy it, command C on Mac or control C on Windows. And I'm gonna paste this on top. Okay, it's now pasted on top and I'm going to change the blend mode from normal to screen. Okay, and it already looks pretty good, but the only thing we have to do now is just maybe reset the black point and decide on a final crop. So I'm gonna open up curves again, a curves adjustment layer, and just take this black point and reset it here. Just seeing if there's anything else I could do with the color balance a little bit. I'm just gonna do one more color balance try here on the core now that I have the stars in. So I'm just gonna do that same trick of dragging the layer mask for my core back onto there. And I'm just gonna add a bit of yellow and a bit of red. And I'm just gonna extend the core out here, just a tad. Okay, so here's before, here's after. Hopefully you can see that it just needed yet another just final little adjustment where we shifted some of the green and blues out of the core to make that really sing. Now that I'm looking at it up close now though, I think we could maybe boost the saturation again, but let's do that actually in Adobe Camera Raw because I also want to do a little bit of noise reduction. So I also noticed that it's a little bit off center. So I'm just going to center this up and to apply an Adobe Camera Raw correction to this. If you are in an older version of Photoshop, you can just save it off as a TIFF file and then open it back up into Photoshop with the Adobe Camera Raw set as the format. If you're on a newer version like I am here, you can just make a new from visible. So I'm just gonna do command option shift E that would be control option shift E on windows and I'll call this ACR for Adobe Camera Raw. And then I go to the filter menu and just choose Camera Raw Filter. And from here, we have all these sliders. If you've used Lightroom before, you've probably are familiar with a lot of these and some of them are pretty interesting what they can do to a Astro Photo. So for instance, if you want to get sort of arty, you can take this Dehaze filter and move it over to the left and it adds this cool like glow to the galaxy. And if you just want to just maybe apply a little bit of that, you could just add a little bit. So there's definitely a lot of artistic things you can do with the Camera Raw filters. I'm gonna add a little bit of vibrance and saturation to the picture. And I'm gonna add some color noise reduction, some luminance noise reduction and some sharpening. And when applying these filters, I like to look at the picture at different scales to sort of see what they're doing. You can temporarily turn them off and on with this little eyeball. And honestly, they've just gotten better and better with each version of Photoshop. Like to me, that's really only improving the picture not taking away. All right, so I'm happy. I've done a few little more nitpicky filter things for color again and I'm just going to save this. I'm gonna save it as a Photoshop document. Just call it m31.psd, save it to the desktop. And then I'll do export save for web legacy and do a JPEG. Okay, here's our final result. Again, this was about 980 stacked one second exposures from a Canon 6D 200 millimeter lens. We processed it with Deep Sky Stacker in Photoshop and here's what we got. So it sort of shows that even with just a 15 minute integration, if you know what you're doing with the processing, you can get a really nice photo even without a Star Tracker. I hope that this tutorial on being a time traveler and seeing back two and a half million years in time has been useful to you. And if so, you can support me by subscribing to this channel. I also have a Patreon which starts at just $1 a month. And till next time, this has been Nico Carver from NebulaFotos.com. Clear skies.


I'm Christian Okafor, I'm the financial reporting accountant at the American International School of Lagos. So while at work on a particular day, I think that was in May or April, I was going through my Gmail and I saw info at ICANN.org or something like that and it was an email from ICANN talking about the financial modeling academy. And all this one, I've always wanted to have a kind of a course in data analytics or financial modeling. So I went through the email and I was like okay, this is ICANN's email so it has to be authentic kind of. So I went through it and I discussed it with my supervisor in the office like I would like to be part of this academy, this initial year. So I think from then the rest of this came. The academy was a success for me because I learned on the hand how financial modeling actually works. All the while I've been listening, I said financial modeling, financial modeling, but I mean it kind of structured my understanding of what financial modeling is. I've been an accountant for years, so profit and loss, balance sheet, cash flow, that's the regular for every accountant. So not that I didn't learn much there, but for me the core of what I learned was the Excel. The skills I learned in Excel. There was a lot of sorting and data analysis using Excel to do lots of complex tasks that I never knew was even feasible. For instance, there was something I learned. Just the ones I can remember are name manager on Excel. Then sales guys, I used to see sales guys like what's she doing? Sorry for my language. I was amazed. I was wondering what that sales guys would actually do on Excel. And there are many of them, the formula that I learned how to connect links and the rest of them, so it was really a very good experience for me. And I've also applied some of those knowledge in Excel to my work in the office, especially the use of index, if you look up and general modeling. I'll tell everybody who is interested in this line of knowledge to join the financial modeling academy. First and foremost, it's very much subsidized. So you can actually, it's affordable for a working class, so to say. It's affordable for a working class and then you can learn a lot of skills. It's not just the exhaust, it's about hours. I'm particular about that because I've had considerable experience in accounting. So you can learn a lot of accounting skills, how to prepare the financial statements, how to clean up the financial statements for the modeling passive. So there's a lot to learn in the academy.


Myself Jaha Shudosh Kumar and my topic and my topic is ultrasonography and magnetic resonance imaging and detecting tender ocaillis tear compared to peroperative findings So the introduction that caillis tendon is the thickest tendon in the body connecting the muscle gastronomy A soleus and plantaris to the calcaneum Most ocaillis tendon rupture is promptly diagnosed But as the first exam physician may miss up the 20% of this lesion the definition of a May miss 20% of the lesion and according to the time that the definition changes for all chronic air Neglective rupture is variable. The most used time frame is 4 to 10 weeks and according to a typical chronic rupture occurred 2 to 6 centimeter above the calcaneum insertion with extensive scar tissue deposition between the retracted tendon stump Due to the blood supply into this area is poor So MRI has revolutionized the processional imaging of the musculoskeletal system and has become the most widely used technique for and is recommended over and a used technique for Why do you use technique for a variety of pathological conditions our objective? Where to correlate MRI and USC finding in tender ocaillis tear and to review which modality offer better sensitivity and specificity So these are the aims and objective basically general objective being to compare the accuracy between MRI and USC Detecting different types of tender ocaillis tears The type of study is basically a cross-sectional study and the sample size is 47 patients These are the inclusions and exclusion criteria.  So basically 50 participants who came to the OPD's where performed this agnostic urethane test and these are the result So according to baseline characteristics as per the age majority of the respondent belong to the 20 to 40 years of age followed by the age group of 40 to 60 year Number of male and female participants were almost equal majority of the participants belong to the lower middle class maximum number of the respondent were businessmen by occupation followed by students and 85.19% of the participants reportedly had no relevant medical Consumptions medicine no relevant medicine consumptions and these are as per the clinical pressure present for absent That is tenderness of ankle ankle gap spilling of the ankle any absence or restricted moments I also the accuracy of USC compared to the board standard out of 27 parties 27 participants out of the 47 had been Detected as a complete year on USU of which five had been found as incomplete year on operation Which came out to be a sensitivity of 81 specificity of 75 negative predictive value of 81 and a positive predictive value of 81 So accuracy of MRI compared to the gold standard is 24 participants out of the 47 had been detected as complete year on MRI Of which two had been found as incomplete year on operations These are the comparison of efficacy of USC and MRI in detecting tender vocalis tear So the result was statistically in Significant drawn and inference that both the tests were found to be comparable So USC and MRI may be used interchangeably But based on the cost effectiveness maintenance operative feasibility USC is the preferred modality of the choice for detecting and catalyzing tender vocalis tears And in case of calcification detection USC was found to be more sensitive So in this regard, so in detection of calcification USC was found to be superior These are the discussion MRI the MRI the gold standard modality in detection of previous type of tender vocalis tear according to the most studies But in cost relative time consuming and most not widely Available so USC's cost effective widely available and also very efficient for detecting the lesions of the tender vocalis tear But enough study is not available to clarify which of the above two imaging modalities is accurate to detect tender vocalis tear So fine they concluded that ultrasound is the useful tool for evaluation of proximal tendon complaint However, the ultrasound is not sufficiently reliable for the diagnosis of all pathology Especially partial rupture of the dead a kind is to none. That's the definitive diagnosis must be established by MRI In our study of 47 patients all some all the thumbs up as positive It was from the sensitivity and specificity for usg for detecting complete tears of the tender vocalis with 81 point 475 percent respectively, but for the detection of calcification in chronic tender vocalis tear USC was better than MRI in both detection rate and cost positivity rate These are the conclusion according to the present study usd and MRI in detecting USC and MRI in detecting and categorizing complete and high grade tear of tender vocalis But as USC is effective and less time consuming it should be imaging modality of choice for detecting and categorizing the tender vocalis tears These are the various references what we have used for our studies


Good day, fellow investors. I really think that in the next decade, there will be a lot of not disruption, but simply displacement in many industries. As we are turning from oil fuel to electrical fueling to no CEO to emissions to no smoke to health, I really think that one of the ways to get exposure to that possibly future boom alongside all the other emerging markets that are going to be built grow. One way of gaining that exposure is through copper. In this video, I want to discuss how copper evolves, how the copper price moves in relation to what's going on, what are the risk and rewards there, and what would be a proper strategy to go into copper, how to invest in copper, and how to analyze copper miners for such a long term, let's say portfolio exposure to copper. Because copper, as we know, electrical vehicle uses much more copper than a normal vehicle, which means there will be more demand, emerging markets are growing, more infrastructure, more electricity everywhere, which means more copper. However, not everything is that easy, and that's something we have to keep in mind before investing in copper. The topics of today are explaining the supply demand balances and copper price moves, historical sentiment around copper, it's extremely important to know about the sentiment when investing in copper, long term stable price in relation to cost, so what's my conservative long term price forecast for copper around which I invest, and then long term bullish thesis for the base metals and copper, of course, just to keep in mind as a positive risk in the future. So let's start by looking at demand supply costs, prices, and how those things evolve. It's very volatile, that's why a lot of people say Sven, you're crazy to invest in miners, but if I take all the factors that affect that volatility, then I think I'm relatively safe when I invest in miners, safe meaning the risk is relatively low when you do it smartly, and the upside is very large when you again do it smartly. So low risk with miners is what leads to high rewards. People usually invest in hot miners that usually means high risk for little reward, so if you think the opposite of what the market thinks, then you might be well rewarded over time. Let's start. First in 2016 copper was all doom but world mine production was increasing, but then declined in 2017. However, the demand was stable, growing, is still growing, and the refined balance was negative. So there was a supply gap in copper, but there were a lot of inventories from 2010, 11, 12 after the crisis, as in 2007 everybody expected copper prices to explode. Since then, you have seen the copper warehouses levels, this is from the London Metal Exchange, stabilize a little bit going up and down, but much less than what was the case in 2003 and as you can see in 2013-14. Copper price extremely volatile, very low in the early 2000s, and then exploded as there were exuberant expectations about emerging market growth, emerging market potential, especially in 2007. Also the Chinese stock market dropped 80% in 2009 because it was completely crazy in 2007, but then supply demand again we were there in 2011, similarly as emerging markets Brazil, Argentina, if you remember, and then it was very very negative 5 years until now, and now we have let's say a fluctuation. Just to explain the volatility in the past for copper, this is what the forecast was in 2007. The copper market was forecast to double on emerging market demand. Of course, that didn't happen, but it still grew, so you can see the volatility in the price. If you can take the conservative trend of growth and when the price is below that, then is when you buy. Leave the exuberant forecasts to exuberant analysts. Supply has increased, but not that much because it is a little bit constrained. There is not that much copper as there is iron ore, aluminum, coal or whatever. You see copper, nickel and zinc have copper, nickel and zinc are a little bit constrained as they are becoming scarcer, lower grade and deeper to mine. And also you can see how copper mining costs didn't decline that much in line of what was the case earlier. However, lower copper prices, lower investments, so capex investment in base metals has really been slashed in comparison to what was in the past, and this leads to a new cycle where, okay, now we have low investments, which means there will be another supply gap in the future. So buy those metals when those are not attractive, don't buy them when those are hot. Average copper grades are falling, which means it becomes costlier and costlier to mine, and new projects are not really being found, so the copper depleted is not replaced by new copper. As the world gets electrified, copper might be an absolute winner. Demand from electric vehicles is expected to cover 18% of current supply by 2030. Electric vehicles, solar systems, storage, energy storage, so if we really switch to an electric world, then it might be even more than 18%, might be 50%, 50%, let's say, that's very important on such a sensitive supply demand balance like it is the case for copper. Further, at this prices of 2.5, what we are with 2.7, 2.8, it's not really profitable to launch new projects. This is the Lone Star Oxide Development Projects from Freeport, and at copper prices of 2.40, the after-tax net present value is zero. So only at 3.5, the after-tax net present value is 1.2 billion. So Freeport is going to wait before they invest 850 million in the project to get out 1. something billion, depending on the copper price. For them to start this project, copper prices have to be stable at 3.5 over a very long-term period, and people have to estimate that, okay, that's the new balance price. Now we are below that, so nobody's going to give Freeport the go. Yes, let's spend a billion there. So for copper to be there in higher supply, copper prices need to go up. And without those new projects, the supply gap will exceed almost current production by 2035, which means copper prices might go to 4, 5, 6, 7, 8. Who knows? And that's a positive risk. Okay, if I buy great businesses at low costs, low production costs, I get a good business now, no matter what happens to the copper price, and I am exposed to that upside. Because if there comes a recession, it will be, again, terrible for copper miners, copper, and anything. So that's something you have to know, accept before you invest in, and then this makes investing easy. This is the copper cost curve, and you can see the copper price is set, but by the last unit traded. So we are now at 2.7. So a few of copper producers are not profitable at this level. 50% copper producers are cash flow positive at 1.5, but only insustainable costs are around 2 for 50%. So at 3, we are at what 80-80 something percent are only profitable, which shows how tight is the copper market. In case of a recession, copper prices will go, let's say, to 2, even below 2, but then the expensive mines get shut down, and then again, the balance is restored, as we have seen that happened in 2016. I hope there is a recession in the next year or two years to buy all those miners at the bargain price and then wait for the bubble in electric vehicles to happen in 2025. I don't care. I have seven years to wait for 500% or 1,000% returns. So that's my story on copper. I think each portfolio has to be exposed to the commodity copper, zinc, nickel, electric vehicle trend. That's how I will invest in the electric vehicle trend, because yes, there are companies like Tesla, NIO and whatever, but or I'm not smart enough to analyze those and see the value there, or those are simply extremely overvalued. Thank you for watching. Looking forward to your comments on copper. Tomorrow, I'll discuss a copper miner landing mining to show you how that fits this copper perspective. I'll see you in the next video.


Hey everybody, Matt here for Layton Sports Cards, ripping 2022 Panini and Peckable WWE hobby one box break number three, random left side serial number right digit. All right, my finisher was looking at the lights. All right, here we go, roll the dice. Seven times, randomize the names and then the numbers. One, two, three, four, five, six, seven. Anthony P down to William P. And seven times on the numbers. There's one, two, three, four, five, six and seven, six down to nine. All right, let me copy and paste these over, read them off and we'll start ripping. All right, we have Anthony P six, Stephen W zero, Daniel A two, Joshua G seven, William S one, Oscar T four, Thomas W five, Patrick T three, Daniel A eight and William P nine. All right, I'll post those results to the website, drop a link in the chat and we will get ripping. Sort that here, there we go. All right, let's do it. There's our metal bar. See some crazy stuff in this one. First up, nice. That is one of 10. Alexa Bliss, one spot that is William S, nice Alexa and Mace, 46 of 99. Six spot is Anthony P. Okay, it's Mace. It's Mace. He's a male model. And then they need a little like accent mark above it. They do. So Serena's here to correct me on the people that have debuted in the last couple of years. Next up, Shinsuke Nakamura, base that is one of 49, one spot William S again. Patch Auto, 16 of 25, Champa, six spot Anthony P. What's up, Andrew? How's it going? Next up, Auto eight of 25, the phenomenal AJ Styles, eight spot is Daniel A. Awesome AJ. This is Auto 71 of 99, Caden Carter. One spot is William S. Champa runs the camp. These are next up is Auto 16 of 99, Angelo Dawkins, six spot Anthony P. Going card hunting at Walmart Meyer, nice. Is it Meyer? Is that your present? Next up, awesome. That is Auto 13 of 17, Cain, 13, three spot that is Patrick T. They should have done a dual Auto, Cain and Dr. Isaac Yankem and fake diesel. Yes. Triple Auto. Awesome Cain. This is cool. Legends. That is one try ounce of silver, 29 of 35 million dollar man, Ted DiBiase. Nine spot, William P. There you go, Will. Awesome DiBiase. Great stuff. That'll do it for the break. Thank you, everybody. Appreciate it. We have number four up next.