The study examined four different endocytotic uptake mechanisms in two types of cells, mouse macrophages and human alveolar epithelial type 2 cells. The researchers found that the uptake of 40 nanometers polystyrene nanoparticles was affected by the presence or absence of certain proteins and lipids. They concluded that multiple endocytic pathways are involved in the uptake of these particles, including phagocytosis, macropinocytosis, clathrin-mediated endocytosis, and cavelin-mediated endocytosis. This article was authored by Dagmar A. Kuhn, Demetri Van Heck, Benjamin Michen, and others.


The conversation is an independent non-profit news source and donations from readers help keep us going. Our ambition is simple, to provide you the reader with reliable knowledge-based information. Facts matter, now more than ever. We work with academics to provide information that's reliable and that you can trust. We pair researchers who know their subject area with editors who know how to present information clearly to bring you analysis of the news. A charter of editorial independence protects us from commercial or political implants. Universities help support the conversation by paying an annual membership fee that covers about 50% of our costs. The rest is from grants and donations, so we really still need your help. Our technology platform supports around 90 editors and 40,000 academics globally. It costs us one million a year to run our servers, pay for developers and technical infrastructure. Your donation is tax deductible, so if you believe in what we do and care about evidence-based journalism, please give $30 a month or whatever you can.


Hello everyone, Dr. Lehman here, back with a really important concept that's going to carry you through the rest of the semester And that is Python classes. So in this video, we're going to get started on Implementing some Python classes So last time, in the last video, we talked about data types and their relation to Python and how Python uses them in memory Well in Python, there is a mechanism, as we mentioned last time, for implementing your own data types And that mechanism is called a class. Now if you have a Java programming background You're very familiar with classes, and maybe you got exposed to classes before That's fine. We're going to go over them again And we're going to make sure you really understand them because throughout the rest of this semester, the rest of this course You will be writing classes and you will be using them to solve more complex problems And if you remember last time, we asked the question Why do you have data types in programming? And the answer was, well, to abstract details away So you can focus on solving bigger problems. That's what we will use classes for in this course Which is kind of wrap up some details of things in little packages called classes and data types called classes And then we'll use them to solve other bigger, more interesting problems Okay, so In Python, classes define a new data type Just like you have string class, into class, etc Allowing new instances of that type to be used in code Classes have instance variables for storing data, right? Remember data types have two things They have data and they have operations Well in Python classes, the data are kept in what we call instance variables We're going to talk about instance variables in the next video And then the second thing you get with a data type are the operations you can perform with that data type and Python classes, these things are called, they're not called operations and they're not called functions. They are called methods Okay, so let's get into it What I would like you to do is fire up an interpreter Preferably PyCharm because we're going to be doing a couple of lines of code at a time and you're going to want to rerun everything So get your editor open and then anytime you see code on the screen, I want you to follow along, okay? So in your code, so type this up Here we are going to define a very, very simple class And we're going to call it student and this is going to create a new data type in Python for us to use Now this new data type that we're going to create it's only going to be there like for as long as our current Python interpreter is running it goes away, right? If you reboot your computer or Python crashes forgets all about it about this class you create All right, so how to create a class in Python? Well, you need this keyword called class Should be easy to remember and then you give it a name, okay? Class names in Python are capitalized, right? They are camel case or title case of some people call it. It's capitalized and Then inside our very basic very simple Class that we're going to call students. So we got class and then the name of the class colon We come down and we we do our four spaces in or our tab character in We are going to define a method Remember methods in class terminology are the operations of the data type There's going to be a lot of vocabulary in this Lecture so you need to Really let it sink in Maybe you need to watch it a few times because there's a lot of super important terms We're going to keep introducing this lecture and just use over and over and over again throughout the semester, okay Inside our class student where you are defining death a method Okay method is the operation on our data type But methods you can just think of them as a function from Python that is declared inside a class Okay, so it's a function. You all know how to define functions, right and what functions can do Python methods are just functions that are inside a class. Okay, everything you can do with a Python function You can do with a method. It's just that the method lives inside the class So I want you to think of classes And think of instances of classes when you're using them think of them as a little box Right and things live inside that box that you need to get access to and can use to solve problems Right so to define a method It looks very similar to defining a function. You start with the death keyword And it's tabbed over here. So you know it belongs inside the student class Then you give it a name. Okay method names function names in python should be all lowercase And then there's always always one at least one parameter and that is called self Okay, just like this self is a keyword in python Uh, we're not going to go into what it means right now. We will get to that back at the end of this lecture. Okay, so But remember remember any time you will ever define a method inside a function Self must be the first parameter and it must always be there. Okay So hop over to your code make sure you've got this typed in your code should Uh, well actually i'm going to come back here Okay, this is just the class definition if you go ahead and run your code It won't do anything right it it it should run, but there won't be any output Okay, that's because what we're defining here is we're think of it as defining a blueprint This is what a student class can do But you still we have to actually Create one of these things and use it right just like python has string classes that are defined Well one string class that is defined You still have to make an instance of a string class in order to to use the string right So here's how we create an instance of our student class We call student The name of the class. It's got to be this right followed by open parent close parent So this looks a lot like a function call or a method call and in fact, that's what it is It's calling a special method called a constructor. We will get come back to constructors in a later video. Okay next video But anyway, just know hey, I need a new student. I want to play with you call it like this Okay, this call returns an instance of the student class and assigns it to the variable x This is just like you saying x gets one or x gets the string alice right x gets student gives you a new instance of this Okay, you can have multiple instances x gets student y gets student z gets student make as many as you want Just like you can with strings or ints Now I want to call this thing. How do I call this method?  I think Oh, no, it's a different warning ignore that Here's the code we had from the slide go ahead and run it So you can see down here the output did happen So what happens here? What's going on line six? We get a new instance of the student class and think back right think back to the last lecture Classes are like The key of serento 2020 for front wheel drive l or whatever it was When you do this you're saying hey, give me one of those you go to the heap and you get one Okay, and now I'm saying x dot say name. Whoops So this says all right take my instance my particular car of student And on that instance invoke the say name method Okay, so up here say name. What does say name do?  Where is say name? Let me go up here to the definition It does any parameter argument substitution It needs to do we'll come back to that later and then it goes inside the function and runs the function body Okay, which in this case does the print statement And then it comes back out to where it was called, right? So we leave line three we come back to line seven, right? And we're done. We continue on right. We could do more here. So Let me just print something right So we're going up here invoking this method looks a lot like a function Finishing our execution we come back down to line seven then we go on to line eight All right, that's all that's going on here. Not too bad, right? It's just kind of like a funky Function but with extra steps All right, let me get out of this go back to my slides for a second Okay So You saw the dot operator that we used before well, you have seen the dot operator before in your life Programming right like if you were using a list You could append to a list right and you called x. Here's my list x dot Append something okay Or maybe you had string string dot split string dot strip this dot operator What it does what it's really doing is it is used to call a method That is defined within a class Okay, so when you call x dot append What python does is it goes to its class definition for the list Goes down finds the append method and then invokes it right and the method is just a fancy function Okay, so that's what the dot operator does it calls things calls methods and later we'll use it to access instance variables on instances Of classes okay, let that sink in Right understand what the dot operator is doing. It's going to The class instance and calling a particular method on it. Okay. Now, you know how those methods are defined They're defined this way All right, let that sink in a little bit. You can also have instance methods with uh Arguments we'll do that here in a little bit. Okay All right, but let's go back and play with Some more classes right so what I want you to do is Copy and paste that student class you just created And make a different class called another student. Okay, just change the name to another student but have their say name Print out something different Right So and then we're going to call this code x gets student x dot say name y gets another student y dot say name Okay, so let's go do it together Okay All right, so here's my code What I said to do is copy this stuff Okay, copy and paste And I said rename this to another student And change uh This to print out a different name Alice Okay, so these look very similar Right, but they are different. I am actually going to create two separate classes here And we'll prove to ourself that it is two separate classes So I'm going to create an instance. I'm going to get an instance of this other class another student And I'm going to tell it to say its name Okay, so what do you expect that the output is going to be? Well, it should print first I get x say my name is lucas Then get an value this different class and call say name and say my name is alice Right, so this is where like The methods are really important Okay So python is not going to get confused. We've got two methods here that are have the name say name But they're defined in different classes. So even though you're calling the same Looking thing down here python knows the difference It knows that when you call x dot say name It should go to student because that's what x is it's a student and call students say name y Is another student a different class. So when you call y dot say name here It's saying. Oh, wait a minute go to y Which is an instance of another student and call its Say name, okay, so let's go back to our slides and Try and draw a picture about what's going on in here So here's a visual representation of what we've got going on. It's a class. It's called a class diagram Maybe you saw these in a previous class But it's a way of thinking of classes and instances of classes visually So x in our code is an instance of the class student and the class student has defined on it a method called say name y is an instance of the class another student and it also has a method in it called say name all right so Let's Run it again, but let's change it up just a tiny little bit. Okay, so We're going to take our code and we're going to reuse or we're going to reassign the variable x okay So let's go over here x gets another student and then x dot say name, right student variables These variables for your custom data type. They can be reused. I ignore that stuff down there at the bottom um My name is alice. My name is lucas right from our previous lectures remember Variables just hold references to objects in memory to instances of classes that live in memory so here x is a student and we call say name here I reassign the value I create another student instance Assign it to x and then call x say name. It all works out just fine Okay Go play with this in the python tutor plug this into the live visualization and step through it item by item So you can see what happens, right All right, let's go back to our slideshow again Whoo instances classes objects. Oh my, you know, these are They're not the most exciting words on the planet But they have very different meanings and it's important that you concretize in your head what those different meanings are Classes think of them as the blueprint for the data type. Okay They're kind of like function definitions The function doesn't like run right away You have to call it to get a function that you define to do something right go define a function in python It doesn't actually get used until you call it same thing with classes Classes are the blueprint of a new data type And they define its operations and and data But the class definition itself with that class keyword It runs but it's not like really going to do anything until you use it somehow instances of classes right when we call this Something that looks like this this constructor call They actually create An instance of that class in memory Python talks to the heap and says hey, I need one of these things. Where should I put it? And then it puts it there Right, so you need to get an instance of a data type an instance of a class before you use it to compute to do stuff, right? Okay, so classes instances of a class And then objects, okay Objects are the term for all instances in memory in python Everything in python Is an object everything that lives in memory in python is an object python is an object oriented language, okay May have heard that term before java is also an object oriented language Just means that in inside itself python is organized Everything in memory is organized around this notion of objects Okay, here's some code All right, look at this Just take a look at the code. Where is the class? Here Okay The class is this whole thing this whole block is the class, but again, it's just a blueprint When you run code if all you have is this you don't get any output You're not doing anything if you just have this part. It's a class definition Just like you have had function definitions before they tell python what to do X and y down here They take on instances. They are references to an instance of class student Okay, an instance of this guy But they're actually different This is something different. It's an instance of what? Z is an instance of class string class instances blueprint using the things All of them every single one of them are objects in memory Okay, because it turns out whenever python reads this thing It creates an object in memory and then any time you want one of these guys A student it goes out kind of grabs that that that definition that you put up there in memory and uses it Okay, so all of these things are objects in memory Objects are the generic term for stuff that lives in memory in python Okay Let's go back to methods for a second because they're they can be flexible All right, so let's say that instead of hard coding in my name is we want to pass Some data to our method Uh as a parameter. Well, you can do that Right, um, let's go edit our code so that our code can take a parameter all right so I'm back here my code. Let me get rid of The another student and so I get getting rid of another student. Let's start back where we were Well instead of hard coding. My name is lucas. Let's make this a parameter. Okay My name is And So I want to do something like say x dot say name lucas, okay All right. Well, what I will do is I will add a parameter up here And in my print statement, I will use This parameter. Okay. This is just like defining a function That takes a parameter except except obviously the huge like elephant in the room here difference is the self guy So the self guy is gonna stay there for now. Okay, we're gonna talk about him in a minute Let's explain what he does. All right, but I can run this. Okay.  I've called say name with lucas. I can call say name with alice I can call say name with bob Just duplicating the line here with control d or command d Right, so now my method that I've created it can take a parameter Right and based on the argument value. I give lucas alice bob it prints out something different. Okay, this looks a lot like a function definition Okay, pretty cool If I wanted to you could add you can absolutely have multiple parameters Okay, so if I try and I can add last name here now Python's mad at me, right? I added a parameter up here, but I'm not using it in this method call Say name is missing one required positional argument last right yelling at me because I forgot to put Everything that I need that this function needs to run or excuse me. This method needs to run in the calls All right, there it goes. It's a lot happier now All right, so you can absolutely have methods That take parameters makes them a little more flexible, right? You can do a little bit more with something like that All right, let's get back here So we've had this guy staring us in the face go back to the code for just a second called self Huh, what in the heck is this self thing? What in the world is self? All right Okay self it's a keyword in python Self is a special variable That is only usable within a class that refers to the current instance of the class who It's how a class can access other methods of the class or other class instance variables Okay, let's take a look at this All right understanding self here's here's my student class All right, x gets student x dot say name lucas y gets student y dot say name bob There are two parameters to say name right there's self And then there's a name. This is the old version of say name Okay, but there's only one down here when we're calling this method All right, so what is happening? What is self? Okay, go back to the definition for a second Self is a special variable that only is usable within a class that refers to the current instance of the class Okay x dot say name So what happens with self here? You've got this x x is an instance of student You are calling in this line Say name on this particular instance of the student Self is the current instance Okay, so when you are calling x dot say name, basically what is happening is this x right here Becomes self Okay, let that sink in The dot operator here when we're using the dot operator The thing to the left of the dot Becomes the self Okay So then down here, we've got y is getting a different instance of student Go if you don't believe me go in use your id function use your hex function You will see that x has a different id than y. They are different things When we call y dot say name Self becomes y Okay So we're calling the say name method on two separate instances of student x and y Go look at this in the python tutor as well Okay Actually, maybe I can do that for you. Let's see if we can fire that up real quick. I'm going to copy this code Go into the python tutor start visualizing Okay I want to go into live programming mode because I want to see this thing evolve. How's that? All right It's not too bad. Let's Let's go to the first step and then I'm going to step through. Okay We're going to define our student now kind of jumped over this whole thing But the definition of what a student is is alive. Okay, let's step over here x Get student. We've got a new student instance All right I called say name. So what does it do just like in a function call? It's going to jump up to this definition of say name What do you take a real close look over here in the python tutor? Look what it has done in our Say name that we're inside of right now. What does self refer to? The same student instance that x refers to Okay, name is the the parameter value, which is currently lucas All right There's no return value. We print you see that print it out up here All right, we jump back we go to the next line Why get student? Okay, why is pointing to a separate instance of student? We call y dot say name It jumps into the definition of say name, but look Why is this guy self? Has been substituted right here for y thing on the left side of the dot operator. Okay So this say name is in reference to y whereas before say name was in reference to x Okay It's probably a little bit confusing Go back run through this until it starts to sink in self Is the thing on the left of the dot operator? Okay? all right So let me go back over here Whew self that's a crazy concept. Okay. It's it's going to be hard It's it's not going to take a little bit to sink in hopefully in the next video We're going to talk about instance variables class instance variables. It's going to make a little bit more sense about Why we need this self thing right right now this example Maybe it's a little extra. Maybe it's more than we need right next Video when we're talking about data that we're going to store in these data types self is going to be really important. Okay All right a lot of huge concepts in this video You can define your own data types with classes in python The operations of data types are defined using methods and data are called instance variables That's going to be the next video. Okay, you must create an instance of a class to use it And the instances that are in memory that live in the heap everything in python Those are objects all together You can have instances of lots of different things at once in memory You can have students and ints and floats and strings and lists all living together Those are all called objects in memory Methods are functions that are defined within a class methods can have parameters But the first parameter is always always always this self guy And what is the self the self is a special variable Inside of classes that refer to the current instance. Okay the thing on the left of the dot operator when they get called All right next video. We're going to take a look at instance variables inside of classes And we'll come back to this self guy again and try and understand why we need him and why he's so useful You


Hello, my name is Miklas Gaspar and I'm the head of digital communication at the IAA. We are live from Vienna, our headquarters, and this is the ninth session in a series of lives where we discuss what it is like to work at the IAA and explain how the recruitment process works. We'll also answer some of the questions that candidates like you have asked us throughout the process. If you have questions that you would like answered, please drop them in the comment box and we try to get to it at the end of the session. Today we'll be discussing how to prepare for an interview at the IAA. We go through our interview methods, type of questions you might expect, and most importantly suggestions for how you can do well. So let me introduce our panel today. They've seen many candidates fail and succeed at interviews. They have lots of experience both good and bad on what people have done and they will tell us all about this. So first we have Jack from the Philippines who is a recruitment officer at the IAA. She's involved in about 100 recruitments per year, which means she gets to see 500 interviews, so lots of good and bad examples for her to share with us. And then Francesca from Italy who is in charge of administrative matters at one of her departments. She's also overseeing all the recruitment processes in that department. So to start, Jackie, tell us how we conduct interviews at the IAA. We have two types of interviews at the IAEA. We have both synchronous and asynchronous video interviews. For asynchronous video interviews, it means that the candidate and the panel are not online at the same time. So we would send an email with a link to the candidates wherein they can open the link and then they have about two minutes to read the question and then three minutes to record an answer. So you can expect about five questions for each interview and they have seven to ten days to record their answer. This asynchronous video interviews are not mandatory parts of the process. What is mandatory are panel interviews wherein both the candidate and the panel are online at the same time. Thank you. So Francesca, how many people do we typically invite for these types of interviews and how are the interviews structured? Thank you, Miklos. Interviews are currently only virtual. So our candidates have the opportunity a few days before the interview to check their connectivity with our IT colleagues. The connectivity is also checked just before the interviews to avoid any additional stress on the candidates. Interviews usually last about 45, 60 minutes. We have between six, seven questions, between six and eight questions. Of course, the duration depends on the number of questions, but also on how the answers are articulated by our candidates. We have a panel composed by several members, usually four or five members. The hiring manager, which is usually the supervisor on this position. We have a representative from the Human Resources Division and then two or three members that are knowledgeable on the competencies and expertise that are required for this kind of position. Usually we also try to be balanced in our composition of the panel, so on gender, but also on geographical distribution. And how many people do we typically invite for these interviews? Usually we invite between four and six candidates per interview. Okay. Jack, and what about the asynchronous one? There we have a lot more people that's earlier in the process, right? Yes. For asynchronous, usually it's about maybe 12 to 20, depending on the number of applications we receive and also the number of posts we are trying to fill. Also for those of you who didn't watch us last time, the interviews tend to be like the last step, the in-person interviews tend to be sort of the last step in a longish process. So those would then be the four to six finalists, right? Yes. Four, six for the panel interview. So, Jack, let's run through what kind of questions people ask. How does this interview that Francesco talked about? Okay. Okay. So we ask a mix of questions from background to situational, technical, and competency-based questions during the interview to test the candidates fit to the job at hand. We would advise you to prepare examples both in the positive and negative because we would be able to ask questions such as tell us about the time when you work with a successful team, also the adverse wherein tell us about the time where you were not able to meet the project deadline. So that would be a good mix of questions that we ask during interviews. Thank you. You mentioned the word competency. For those of our listeners who don't know what that is, could you just quickly summarize that? Okay. We have four competencies at the IAEA. We have communication, achieving results, planning and organizing and teamwork. So for all the jobs at the agency, these are all essential. And the level, maybe I can talk a little bit more later about the indicators for each competency because it differs based on the job that you are applying to, based on the level of the position that you are applying to. Yeah, just please talk about that. This is very interesting. So for example, you are applying to an associate level role. The competency of teamwork is assessed differently. Associate level would be like junior professionals, P1, P2 level. So competency of teamwork, when you are asked to give an example of teamwork would be about a time when you were able to support team decisions. So versus if you're applying to a unit head role with a managerial responsibility, then your example needs to be to the level of that role. For example, you're able to build effective teams and you're able to collaborate with teams outside your own. So everyone is able to give examples during interviews, but you have to make sure that it is to the level required to the position you're applying to. Right, so just perhaps to add, Jack mentioned examples several times. So the point of competency-based interviews or the underlying philosophy is that your past experience, your past is the best guarantor or predictor, really, or future success. So that's why, right? When we ask you questions, we are looking for answers that show through concrete examples what you've done in similar situations and your experience. So with all that, Francesca, how should we prepare for interviews? So my advice on how to prepare for interviews would be, first of all, read carefully the vacancy notice and try to get familiar with the function, the expertise and the competencies that are required in the vacancy notice. And try to be prepared to give example, as Jack was saying before, on the specific competencies and functions that are requested in the vacancy notice when you apply. So get familiar with the content of the vacancy notice, but also get familiar with the agency. In our website, you can find a lot of information about our mandate, about our activities, our departments. So try to be prepared on the organization where you are applying for. Then, of course, I think it's also very important to prepare the environment where you will have this interview. As we were saying, they are virtual. So try to have a quiet room dedicated for this interview. Be sure that you will not be interrupted during the time of the interview so that that will not be stressful for the candidate. Also, prepare maybe a pen and a paper. It could be useful to take notes during the interview. And who knows, maybe a glass of water. That can also help to reduce your stress. Thank you. Yeah, glass of water, but perhaps not glass of wine. That stress would be too much reduced. So the questions, the examples that Jack gave so far, were like, okay, about teamwork. So are the questions all sort of soft-skill questions? Or do you also need to be prepared to answer technical questions at the interview? Either of you, yeah. Yes, it's a mix. We also ask technical questions during the interviews. So you have to be prepared to provide examples based on competencies. There may also be situational examples. And also, as I said, technical questions are also part of the interview process. Thank you. Francesca, back to you. So what qualities are the most important to demonstrate during these interviews? The quality. I think it's very important to show some personal skills also, not only the technical skills. So try to demonstrate your communication skills, your capacity to adapt and work in an international multicultural environment, which is very important for our agency. Try also to show that you are result-oriented, problem-solving person, or at least this approach. A positive, constructive approach is also important. As a personal skills to work in an international organization. And yes, I think it's also important, as you, Jack, were saying before, be part of a team.  I think these are very important personal skills. Thank you for that. So the last question I've prepared for you before we go to the questions from audience. Jack, how do we evaluate candidates? Is there a scoring sheet, or how does that work? All right, thank you, Miklos. So the evaluation of the candidates are always on how they fit the vacancy notice. And I've mentioned a while ago that the level of your examples need to fit the level of the position you are applying to. We have a competency framework that is actually a public document. So it's published on our website. So I highly encourage you to review that competency framework when you are invited for an interview so that you can prepare examples from your past experience that align to the position that you're applying to. So there's no star system or scoring, but it's usually how they fit the competency framework. Thank you. Okay, so questions from audience. Francesca, are there any trainings that we offer that people can use to practice for the interviews? We have some webinars that are available in our website. Maybe our colleagues can share this in the chat in this live video. I think, for example, the competition-based interview webinar could be very useful. You will find a lot of information, some examples, and also how to practice and prepare before the interview. So I would advise to follow these webinars. Thank you for that. Jack, so what's the criteria for choosing finalists, I guess, both at the interview, well, at the interview, and then how many finalists are chosen, how many people pass the interview, so to speak? Okay, it really depends, but we always aim to at least recommend two candidates for each vacancy notice. If there's one position, we at least aim to recommend two candidates. But if we are recruiting for more positions, then we try to recommend more. And then the director general is the final appointing authority, and he decides who would be the appointed candidate. But from, I would say, an average is, if we do an asynchronous video interview, we have about 12 candidates there, and then we try to get the best, maybe five, four to six, to end up in the panel interview. So it doesn't necessarily mean that if you meet the minimum requirements of the job, you already get shortlisted, because you also compete against the pool of candidates. So after we do the final interview, then we aim to at least to have at least two really, really good candidates from that pool. Thank you. So very important, something that Jack said that I'd like to come back to is we've got lots of excellent candidates. So if you don't make it, don't be disappointed. It's not because you're not good. It's because it's extremely competitive. We've had one of our, at one of our previous episodes, somebody who actually didn't get the job, but she didn't get discouraged. She kept applying, and now she works here. So don't get discouraged, particularly if you made it through to the interview.  Okay, next question. Jack, how many applications per job opening do we usually get? That also depends on sometimes how niche that pool is, and how technical the pool is. There are some jobs with more, maybe transferable skills where we get a lot more. Like for example, I think, because I'm the recruitment officer for Francesca's department, then we get maybe 400 to 600 applicants for one position. But for the more maybe technical niche jobs, we may get 50. So it's really a wide range. So I would really encourage candidates when you prepare your application to make sure that you really try to tailor it to the job you're applying to. So it's easier for the recruiting group to assess if you're a good fit. And it's easier to point out how you meet the requirements of the role and how you have the past skills to support your application. Thank you. Francesca, what are some things one should avoid during interviews? I would recommend to remain polite with the panel members, to remain focused, try to, if you don't feel comfortable with the answer or the question that you are receiving, try to follow the logic, try to avoid frozen moment. In case you feel that you are uncomfortable, you can always ask the panel members to take a break. Few seconds and panel members are used to that so they can eventually understand. Thank you. Jack, back to you. My application shows we are currently reviewing all applications. Will there be any feedback on the outcome of the review process? And if so, when? So currently, as per administrative manual of the IAEA, we're able to give feedback at the end of the process. So we are not able at the moment to give you a step-by-step update. If, for example, you didn't go back, you didn't reach the shortlisting stage, the next update would be when a position has been filled, probably, if you didn't get shortlisted. So you will probably get an email informing you that the position has already been filled. So perhaps what that means in practical terms is if you've not heard for a while, then either we are very slow, which unfortunately sometimes happens, or you've just not been shortlisted but our rules don't allow us to tell you that until the position is finally filled, right? Okay, Francesca, I think you've worked here for about two years? Yes. Okay, so you'll still remember, so this question is for you. Could you tell us about your personal experience when you were being recruited? I think it was a very positive experience. I really had the impression to have a conversation with people I never met before, but they were very interested to know me and to understand my past experience, my background. So even though I was very stressed at the beginning, I really appreciated how the panel members were able to make me feel comfortable and I really had a very positive experience. I think also, time-wise, it was quite reasonable. And of course, I don't know how many candidates applied to my position. I was not allowed to know that, but it was quite a reasonable time, in six, between six and nine months, I think that was completely solved. Jack, what about your interview? Okay, I remember applying in July and then be invited for an asynchronous video interview by August. And then I had my panel interview. There were four panel members plus an observer around October and I got an offer by December. So I think mine was fast, maybe because I'm in recruitment, so yeah, but it was quite good. Good, thank you. So what I remember from mine is I think I managed to sort of connect with the panel members. So yes, I gave the answers, but also I tried to get a feeling from the way they asked the questions, what are things they may actually care a lot about and I tried to resonate with that. Now, whether I was successful or not in that, I don't know, but I did get the job. It is important, and Francesca mentioned this, for you to also study a bit the IEA, the part of the IEA you're applying for, so that it's not because we expect you to have a lot of knowledge, but you should have some knowledge that really also shows your interest and natural curiosity that you may have. Okay, next question. So Jack, this is for you. What if somebody has been on maternity leave and therefore lacks a few years of professional experience? How does the IEA deal with that? So for each vacancy notice, the minimum requirement is set, minimum relevant years of working experience is set, so you really have to meet the minimum requirements for you to be able to be considered for the role. Unfortunately, if you're on maternity leave, I would say then we don't count that part of your experience, but we have different levels here at the IEA anyway, so you have to just check. For example, for a P2, you only need two years of relevant work experience. For a P3, you need five years and it goes higher, so you just need to check where you fit in the minimum requirements for each of the level you're applying to. So if you've been on maternity leave for a number of years, how should you, when you post your CV, should you just say those few years you were on maternity leave, or what's our advice on that? Yes, it would be good to show the reasons why there are gaps. We don't take it against you if you were on maternity leave for that period, so don't worry.  So it's better to explain it there and when you send an application, there's a confirmation button that everything that you put in there is really the truth and you weren't meddling with the dates and the position, so you have to make sure that you can back up what you put in your application. Thank you. Francesca, somebody's asking, if you have a viable and great career at another UN agency, would this be considered a plus, at least to get shortlisted? I think this depends on the vacancy where you apply. Some position, of course, if you have a new one, experience that can be considered as an asset, but it's not like a role, it's not a policy that you have to have this experience. It really depends on the vacancy. If it is, it will be mentioned in the vacancy notice. Thank you. Last question, Jack. A couple of people are asking about these terms, P3. What's a G and what's a P and what are these different levels? Could you explain that? All right, sure. So at the IAEA, we have different types of positions, I would say. We have general service positions, which are usually the G level positions, that's what we call it. These are locally recruited positions. Whereas we have, when we say P, or professional level positions, these are the positions we recruit internationally. So for the P level positions, P1 and P2 are the more junior entry level positions. So these are usually the requirements include bachelors plus two years of relevant working experience. Once you go higher, then the level of technical expertise required for the role goes higher. So for a P3, the requirement is a bachelors plus five years of relevant work experience. For a P4, it's seven years. And usually we require a master's from that point going up. So that's the main differentiation of the G and the P in the UN system. And how high do these numbers go for both G and P? For G, we have until six published. It goes to seven sometimes. And then for P, we have P1 to P5. And then from there, it goes to director level D1, D2. Great, thank you very much. So we've answered many of the questions, not all of them. And that's because some of the questions you asked were not relevant to this topic, but were covered in a previous session. So please consider watching some of our previous sessions. We've actually had one on internships. Many of you asked us about internships. So thank you for joining us now and spending 25 minutes with us. We'll be back next month to talk about our recruitment drive for safeguards. So safeguards, those are the people who deal with nuclear verification at the IA. And we'll talk more about that. If you want us to talk about other subjects, consider filling in our survey. There is a survey monkey link in the comment section. And also, if you've not yet done that, subscribe to our newsletter to get the latest recruitment openings and check out our other advice and previous sessions on IA.org slash employment. Thank you very much and see you next month.


What's up guys we're back with another epic collection video. I bought a pretty awesome collection It was a huge box you guys saw it on the thumbnail But I had to take it out and value it because the guy was looking for I need to pay him And so it's not the big box anymore, but it's pretty awesome I'm gonna show you guys the cards before that the giveaway be giving away these three promo cards You see secret rares from the tens all you got to do is like this video be subscribed and you're gonna let me know How much do you think these cards are worth? There's a lot of them. There's about 50 hollows first edition old-school stuff some unlimited It's pretty awesome. Let's get into it. I'm gonna show you guys all right and before you guys say you're you look tired You should take a break because I know that's what some of you guys are thinking right now You're like oh this guy needs to take a break you do something like that because that's what YouTube commenters love to say I just took a nap. So that's why I look tired. So I'm just letting you know here is the stack of hollows So inside it was LOB through AST there was binders, but it was supposed to be like a complete set kind of thing But there was tons of cards missing. So there's hardly any ultra areas It was mostly super rares there were some altars a couple secrets pretty nice stuff the conditions varied So we're gonna go through them gonna kind of see what we think the value is let me know in the comments What you think the value of this collection is also all this stuff pretty much will potentially be for sale Because a lot of times people send me stuff and they're like yeah, I want you to buy it and I tell them Okay, yeah, I'll give you this much and I do it and I'm like do I even really need this stuff? You know, so if you guys want to do this let me know so let's go over this kind of stuff We have a big stack here We've got Garnicia elephantus This card is in pretty nice condition. So this is kind of the condition of a lot of cards like the front looks really nice The back okay, this is probably one of the better ones actually this card may be gradeable actually So if it's gradeable, I probably will not sell it I'm probably gonna hang on to it and send it in even if it gets a nine because I don't think I have our And you see yeah, that's centering is probably nine Possibly ten you never know not too bad, but it's definitely not good All right, then we got some more stuff see as you see that was first edition So it's pretty cool. We had a first-edition tribute to the doom This is one probably the cheapest super air and metal raiders, but as you see pretty good I mean there's a little bit of stuff on there So this one might get a nine to yo definitely that center and definitely not getting a 10 It's still pretty good.  I remember looking really good Top-to-bottom centering is not perfect by the way centering is You know if those borders are uneven like this one should be the same size as this one if it's not it's off-center and Then it's the same on the left and right as well. So this one is super clean I think I could get a ton of nines of these metal raiders cards I'll probably send them in like bulk or something because at this point bulk is $20, you know I don't know if we're gonna do it any crazy 70 or $150 submissions and the regular service seems to be really slow So it's really just not worth the money in my opinion. I think you either go express you go bulk Okay, and then if you get really want to get crazy get super express this one is really nice This one might have a 10 chance. It's slightly faded as well A lot of these metal raider cards are metal raiders by the way a lot of you not a lot of you But some people actually thought that Faded what meant sun faded and for metal raiders. It does not necessarily mean sun faded That's a lot of these cards were just printed like this you can pull them like that So it's actually a unique thing for mostly metal raiders. I think a couple L. O. B But usually it's it's metal raiders. I don't know what happened during that print run. That is super nice that cosy gin Okay, I'm probably gonna have to sub those and speaking of faded sanga of the thunder Really nice card. Let's check this out That corner may have a little something. Yeah, you see I see that tiny little lip right there So that would probably stop it from getting a 10 Back looks pretty good overall pretty nice set of the gate guardian pieces. I'm a big fan of that Let's see what else okay one more metal raiders card and then we can got to go through a little bit faster Harpy lady sisters is really nice slightly faded all these look like they came from the same place Back is pretty nice. So I think I could get a decent some decent grades on those so I may send in those metal raiders cards I don't know if those are gonna be for sale Then we have like a reaper on the nightmare. That's a nice goat card pretty decent value there grave keepers chief Mirage of nightmare. There's all kinds of for on a guardian. These are first edition. This is unlimited So that's a kind of a random unlimited to drop off one of those is unlimited the LOB's unfortunately We're all unlimited, but that would have made it really expensive if they were first edition. So Celtic flame swords, but we got two of those. These are originals though. These are not old school Oh, yeah, look at that. Look at that. You guys see that foil shift right there There's foil and then it just cuts off right before the end of the picture That's pretty common with LOB supers actually the unlimited seem to happen a lot If you guys remember when we pulled the exodia and the blue eyes out of like 18 random Unlimited original packs like every single hollow had a full shift. Yeah, it seems like it happens a lot So it happens on that cursor dragon. There it is on the main eater bug as well if you guys can see that Yeah, there's that that shift that one doesn't have it then you go to dark crisis So this is unlimited dark crisis. That'd be cool that first ed first ed XZ tank in and that's actually nice Right since you that's a nice goat card. You can use your extra deck. That's first edition. Look at that sinnering Holy That is terrible. That's some of the worst. I've ever seen look at the bottom. It's huge on both sides Bazoo These are LO and these are unlimited another first edition fusion goat card. It's pretty nice Unlimited DD Scout plane first at IOC even though those are super cheap still really nice Revival jam unlimited that would have been called at first edition right revival jam right there So there's a decent amount of value in here I mean, these are some old old school cards in my L first edition. Let's check this one out I think this one was not perfect Front looks pretty good Okay, that card's actually pretty nice Some of the a couple of these cards were not as nice as this the ones we look at so far are actually pretty nice There's Pharaoh servant Maha violet. Whoa Okay, we've got first edition spirit Reaper, which is cool because that's a nice goat card And it's from Veronica in the original set magician of faith first dead is actually worth quite a bit And this is a near I think it's near meant for metal raiders Okay, maybe not near meant it does have some junk at the time. Oh, it's been okay. Never mind Take that back. Also, it has that ink error on the M and the G and the a it's got all kinds of extra ink So that's kind of cool. I Don't know if that really adds value or not, but sukiyomi that card's worth something in unlimited. I think like five bucks Neckomains those are okay. We got some comments here. These are all some decent comments final count I was with a few bucks. Here are the ultra rare. So here's all the ultra is that were inside Don's a luge. This one was definitely not nice. I remember that Spell cancels beat out. I think all the ultras were not nice like even this air night. Yeah, you guys see that Like a mini crease and the back's pretty beat up so that's like moderately played at least So unfortunately the biggest cards were not the best In terms of condition what of heaven was in there the legend of course the only metal raiders foil It's like a meme in there horn of heaven and then there was the for on a guardian secrets both of them They are first edition Unfortunately, this ring was not perfect. Yeah, you guys see that bend up there and then the back It has some scuffing on it and then whoa, it's like a wavy right there Is that bent or is that just I think it's just a quality for on a guardian was really weird But I love this card. It looks so good. This in the alternate rear both look really really good I'm a big fan of the secret rear So I was I was okay with picking this up, even though it's a little bit beat up and the wall of golem was like this as well This one was It just like doesn't look very clear on the front And the back is a little bit scuffed. Yeah, you guys can see that so it's not terrible condition But it's not perfect, but overall a pretty cool collection So like a lot of nice cards and then we had the old metal raiders And I think the metal raiders were actually the best condition overall Yeah, so if you're interested in any cards, let me know and hit me up on Instagram But if you have or if you're interested, don't just say I'm interested in this card Give me an offer like say I'll give you this much for this card or these cards because I just don't have time to research every single card and Figure out the prices that way if I'm gonna do it I might as well just do a claimsale or something on Instagram So come to me with an offer so that I can either accept it or whatever And I just make it easier on me and you're more likely to get the car because a lot of times people say Hey, I want to buy this and this and I just never get back to them because I just don't have time to look it up and find All the cards and stuff, but if you come to me that offer more likely to sell it So if you're interested go ahead and do that on Instagram email whatever so I hope you guys enjoyed this collection video It's pretty fun. We'll be having more epic stuff coming up in the future and that's for today. I'll see you guys later Peace


So today I'm going to talk about estimating the value of pi with a dartboard and maybe or maybe not luck. So here's a picture of what the game of darts is supposed to look like. If you've never played darts, that's actually not important. The only important part of this picture is that the darts are actually on the dartboard. Here's a picture of what it looks like when I play. Once again, if you don't know the rules, it's fine, but you can probably infer that this is not the correct way to play. Okay, so I'm not going to be a dart champion, I won't be on ESPN, but we can pivot. So there's this really interesting thing that happens that if I truly have the ability to throw uniformly at random at this dartboard, there are some really interesting consequences that arise because of this. One of which is actually I can use this randomness to estimate pi. You might ask why would I ever want to do that? I don't really have a good answer, but this is BangBangCon, so we're going to go forward with this. All right, so how is this going to work? The basic principle is just going to be a simple comparison of area between a square and a circle.  And basically the area of the circle, if you remember the formulas, is something like pi r squared where r is the radius of the circle. The area of the square that surrounds it is force r squared. And so we just look at the ratio of the area of the circle to the ratio of the area of the, sorry, if we look at the area of the circle to the area of the square, this proportion is pi over four. And that's an important number that we're going to want to remember. So the reason is is that if I basically throw uniformly at random at the square, the chance I have of actually landing inside the circle is exactly pi over four. So how are we going to turn this key inside into an algorithm? Well, effectively, we're just going to throw a bunch of darts at the square. We're going to just count the number of darts that land inside the circle. And our estimate is just going to be four times the number of darts inside a circle over n, which is the number of darts that we threw total. And that's going to give us an estimate of pi. Okay. So here I, this is actually a really simple algorithm so I can implement it in two lines of numPi. I use numPi because I don't like for loops, so this is very concise. And so if I actually run this, and so I ran this, and here I ran it 1,000 trials, and each trial I set n throws to be 100k, so that's actually quite a big number. And you see here the black vertical line is the floating point representation of pi. And you see, you know, this algorithm does roughly well. There's like this nice bell curve shape around pi. There are a couple outliers though, right? So there's a couple of runs that were something like 3.15, 3.16, which we know is not quite the right answer. But, you know, most of them, the most of the mass of the, of this probability distribution is lying very close to pi. Okay. Oh, and also if you see this bell shape curve and you're thinking that it looks, you know, kind of like a Gaussian distribution, that's not a coincidence. That's the central limit theorem at play, so, okay. So before we sort of think of like how much we need to run this algorithm to get a good estimate, I want to make a quick aside here that this phenomenon of just throwing things at the dartboard can be more generally thought of as this instance of Monte Carlo integration. And so this is really the idea of trying to estimate an integral by sampling. And this is a very popular technique in science and engineering when you have some integral expression that you're interested in for whatever reason. And it turns out that it's too difficult to plug into Mathematica. So you have to just, you know, and also you don't remember your freshman level calculus course or you maybe never took one.  And to convince you that this is important, here's the book. And this is a book that I was told to read and never did. And now I'm telling you about it. So that means it's really important. Okay. Great. So let's go back to the question of how many darts do we need to throw more generally how accurate is this algorithm? So the cop-out answer here is if we threw forever, right? So if we could just set it up bar forever and throw darts, we would get perfect accuracy and this is a consequence of the law of large numbers. But that's not really quite an answer because, you know, when the event like the earth implodes into the sun happens, we still need to be throwing darts because we won't have our estimate, right? So this is, you know, we would like to do better than throw forever. Okay. So if we're willing to tolerate a little bit of inaccuracy, so here we're going to have this parameter called epsilon, which is going to parameterize how much inaccuracy we're going to allow and we're going to measure the inaccuracy of our solution by just the deviation of the estimate from pi in absolute value. And so that's going to be our error metric here that we're going to look at. And the question is, well, since our estimator is random, we're going to also need to allow some chance so that we just, you know, completely fail because we could get really, really, really unlucky. So, you know, we'll fix some chance of failing, say something like 5%. And we want to ask the question, well, how many darts do I need to throw in order to get with an epsilon with, you know, 95% chance of success, right? So that's the question we want to ask. And so here's a table. So it turns out you can actually compute this value to, you know, pretty somewhat arbitrary precision. There's like no nice close form for it, but you can get pretty close on a computer. And so roughly speaking, if the error is .1, I'm going to need about, say, 2,000 samples or 2,000 throws. If the error is .01, I'm going to actually need something around like 200,000. And if the error is .001, I'm going to need 20 million, which is quite a big number. And the general trend here is if for every decimal place extra of error that I'm, you know, I want to push down, I'm going to actually have to add two zeros to the number of samples. So this isn't the most sample efficient algorithm, but it is an algorithm. And if you like the picture, so this is the scaling of how epsilon actually, how the number of samples we need actually grows with epsilon. So the y-axis is just, and the number of darts we need to throw in the x-axis is the epsilon. And the scaling turns out to be something like 1 on epsilon squared. And I'm not going to convince you why that this is the correct asymptotic scaling, but it's pretty close. Okay, so that was a good day, right? So a good day, I can throw darts in this small square that perfectly touches a circle at four points. On a bad day, I might actually not throw like that, and, you know, I might have some more tolerance or more error, right? So maybe there's this parameter h that parameterizes how big this square is, and maybe h is really big, like 20 or 2,000. And so the question is, well, can we still estimate pi by using the same trick, right? So it'd be really weird if it only worked when h was two. So unsurprisingly, the answer is yes, we can still estimate pi, and let's think about how we can do that. So we're going to go through the same line of reasoning maybe a little quicker this time. So I'm going to set the radius to be one, because it was actually unimportant in the calculation, so we might as well set it to one. So the area of the circle now is just pi. The area of the square is now h squared, and so the ratio is pi over h squared. And remember before we had h is two, so, you know, pi over two squared is pi over four, so this is actually more general than the analysis that we did earlier. And the new algorithm we're going to use is just a simple modification of what we were doing. So instead of the four, we're just going to change that to h squared, and we're just going to plug it into the simple formula. And that's it. And that'll give us the same answer to pi.  So we can actually go in and ask this question again, right, like so, you know, on a good day, a small h, on a bad day, a big h, how does this actually affect the number of samples I need to throw to achieve some level of accuracy? And here are three lines just denoting different levels of accuracy, 0.1, 0.2, 0.4. And on the x-axis now, instead of epsilon, it's actually h, remember the height of the square, and the y-axis is still the number of throws we need. And we see that the scaling is actually quadratic, so it's something like h squared. So we have the same phenomenon before where every extra decimal point you add in h, you're going to have to need two extra zeros to number samples. And also, it turns out that h squared over epsilon squared is roughly the correct asymptotic formula, but I won't be able to convince you of that because I think I am roughly out of time. So thanks. That's it, the code for generating a plot site put on GitHub, and that's it.


look at the the effort needed to break those properties. Sometimes we use different notation. We said one-way property and collision-free property but to be more precise we'll introduce some new notation and we'll talk about a pre-image. So we know a hash function uppercase h takes some input x and produces a hash value h we will call x the pre-image of h. x is the input but another name is the pre-image. We know h maps many pre-images to a particular hash value h. We know in theory there can be collisions especially because we have more possible inputs than outputs. So we know that there is a mapping such that multiple pre-images map to the same h hash value. We define a collision as occurring if for two different pre-images x and y two different messages the hash values are the same. So that's what we understand as a collision. We don't want collisions or we don't want it to be easy for the attacker to find collisions. We know there will be collisions. We've done this before we looked at if there was a 1000 bit message and a 20 bit hash value then there are 2 to the power of 980 messages that map to that same hash value and this is just the general formula here. Each hash value has on average 2 to the power of b minus n pre-images. So we've done an example of that. Let's get to the definitions. So this lists the requirements more precisely than our original two properties of cryptographic hash functions especially for digital signatures and other purposes. The input can be variable size. The message can be any length. The output is fixed length. We've said this before and usually small. So usually much smaller than the input. It should be easy to compute the hash value. My input is a 600 megabyte file. I'm applying the hash algorithm on that file. How long does it take? A couple of seconds to apply the hash function on that large input to produce a fixed length output. So it's easy to calculate the hash function. If it took me 10 hours to calculate that then it's not so convenient. So that's just for convenience purposes. So those are some practical requirements. From a security perspective we'll define three properties here. One's called pre-image resistant, then a variation second pre-image resistant and then collision resistant. They sometimes have different names. Pre-image resistant is what we know as the one-way property. The one-way property given the hash value you can't find the original message. For any given hash value h it's practically impossible or computationally infeasible to find the pre-image y. That is the property pre-image resistant, the hash algorithm is resistant to finding pre-images. It's not easy for the attacker to find them. So that one we've talked about before given the hash value you can't find the input y. So it has two different names. One-way property or a more formal name pre-image resistant. The next two we think sometimes are similar to what we talked about for collisions but they slide variations. Second pre-image resistant is also called weak collision resistant and the last one collision resistant is sometimes called strong collision resistant. So they have different names. We'll see why in a moment. The last two are similar in the definition but in fact the first two are similar in terms of what the attacker needs to do to defeat them. The second one, second pre-image resistant. Given a message x it should be computationally infeasible to find another message y which is different such that their hash values are the same. That is I give you a message x. You know the hash value of x. It's a hash of x. It should be hard for you to go and find another message y that has the same hash value as mine. So this is we don't want collisions. The last property here collision resistant is a stronger form of that. It says it should be computationally infeasible for you to be able to choose any pair of messages x and y, any two pre-images such that there's a collision. So there's a slight difference between those last two properties. The first one is I give you a message x. Your challenge. Find another message with the same hash value. The second one is go find any two messages with the same hash value. So understand the differences between them. They both about finding collisions. So that's why we call them weak collision resistant and strong collision resistant. It should be hard for you. Which one will be easier for you to do? The first challenge I give you is here's a message x. Go find another message with the same hash value. The second challenge I give you is go find any two messages with the same hash value. Which challenge are you going to choose because it's easiest? I'll have a vote. You've got two choices. Challenge one and challenge two. Challenge one, find this another message y with the same hash value as this given x. Challenge two, find any two messages x and y with the same hash value. You choose the easier one. Hands up for challenge one. Who wants to take challenge one? Don't be shy. Hands up for challenge two. Who wants to take challenge two? Why not? What's wrong with challenge two? Not find all possible. Find any pair. Here we need to find a particular value. Here we need to find any value. Any match. Finding any match is easier than finding a particular one. The second challenge is easier from the attacker's perspective. The first challenge says that here you must find a match for this particular message. You're restricted to find another message that gives this particular hash value. In the second challenge you can go search through any messages and as long as you find two that produce the same hash value, you win. The second one is easier from the attacker's perspective. That gets a bit confusing. The first thing is try to understand the difference between the definitions of the properties. The next thing is which one is easier for the attacker. Collision resistance or strong collision resistant, it's easier for the attacker to defeat this, to find any two messages with the same hash value. We'll come back to them in a moment. Some hash functions are designed. Some have the first two properties. Some also have the third property. They have different purposes. Depends on where you want to use that hash function. For digital signatures we normally need all three properties. They're under some cases we don't need the third one. That's the strongest requirement. For storing passwords, collision resistance is not an issue. We don't care about collisions. We care about that given the hash of the password you can't come back and find the original password. The first property is important. When we use hash functions for max, similar to digital signatures we need all properties. For other things like detection of viruses and so on, we often use hash functions that have, well they only need the middle property. When we use symmetric key encryption in the hash, the properties are not so important because we combine it with symmetric key encryption. Some hash algorithms will be designed with different properties. It's harder to design an algorithm that is collision resistant compared to the first two properties. Just coming back to summarize, three security properties there. We want the one-way property. It's hard to go backwards. We want the weak collision resistance property. It's hard for you to go find another message with the same hash value as a given one. And sometimes we also want the strong collision resistant property. It's hard for you, the attacker, to go and find any pair of messages with the same hash value. Depending upon where we use the hash function as to what requirements are important, what about attacks? Well the first two properties, the one-way property and the weak collision resistant property, from the attacker's perspective they use about the same approach. They do a brute force attack and they need to really try all possible values of a message until they get the same hash value. And the amount of effort it takes depends upon the hash length. If we have an m-bit hash value, they need 2 to the power of m operations to find that. So to defeat a hash function with respect to the first two properties, the effort required is 2 to the power of m. The strong collision resistant property, or simply the collision resistant property, what the attacker has to do is easier. The attacker has to find any two messages that have the same hash value. And it turns out it takes, if we have a hash value of length m, it takes 2 to the power of m divided by 2 operations to defeat that. So if we have a hash value of our last picture, if we have a hash value where the length is say 128 bits for the one-way property, the attacker, to defeat that property, takes approximately 2 to the power of 128 operations. To defeat the weak collision resistant property, it's about the same. Take the same number of operations. But to defeat the strong collision resistant property, the attacker would take 2 to the power of 64 operations, meaning it would be easier for the attacker to defeat that property. So given a particular hash function, if it aims to provide these properties, then it depends upon the hash length. And in this case, 2 to the power of 64 operations is not many. It's possible. So we may say this hash function provides the one-way property and the weak collision resistant property, but will not provide the strong collision resistant property because the attacker can defeat it. So if we increase the hash length up to say 256 bits, m is 256, instead like char 256, to defeat the one-way property, you need this many operations. Not possible. Too many. Same with weak collision resistance. Too many takes too long. The brute force attack. Strong collision resistance, 2 to the power of 128. Still too many. So we can say such a hash algorithm would have all three properties. It's easier to defeat the strong collision resistant property or it's harder to provide that property. To understand why the strong collision resistant property is easier from the attacker's perspective, you can study about the birthday paradox, which is what's the probability that someone in this room has the same birthday, not year, but same birthday a month as me? So find another person in the room that has the same birthday as me versus what's the probability that any two people in the room have the same birthday? Well, the second one, there's a much higher probability that I'll find two people in the room that have the same birthday, much higher chance than someone having the same birthday as me. So it's a similar concept and it's referred to as the birthday paradox.


Good morning, everybody. Our next speaker is Ishtwan Koren to talk to us about requirements Bazaar.  So hello and good morning. Welcome to this talk about requirements Bazaar software that we have been developing for five years now The title is connecting end users and developers So my name is Ishtwan Koren and I traveled here one hour from RWTH Aachen University in Germany my Twitter handle is Istin here You can use the hashtag if you want to take a pic that would be cool and our Organization on Github where you find all the code is here and This is the URL of our tool so we're a research Institute and We in computer science and we develop a lot of software in big projects and We are rolling out to a lot of users and we always have the issue of Getting the feedback from the users and I think that's quite a common problem and this is how we how we tackle it so Well, usual idea is just let the users send emails or just make a forum a discussion forum, but that doesn't really scale So what people in the open source will do is things like that so issue trackers For example, this is a screenshot from and bugzilla, but Well, it's not really end user friendly. So there are things like refactor string bundle JS. So they are really confused This is for the Android project, but also we tried sending people to github issues, but then People they saw the the files and the code and they returned often just close that We also tried sending them to Jira with this forum, but they were overwhelmed by the number of Fields you have to fill in here So what people obviously like is when you look at the app stores from itunes store or play store is app store comments So this is for example from taking from Facebook and people complain about the software here because they like it's just a single single text field and it just enter the the the box there and Yeah, but for developers, it's really hard to to click through all the comments so Yeah, what we want to achieve here is in The pipeline from continuous integration continues delivery continuous deployment what a lot of us already do is Another continuous which is continuous innovation So we want to listen to the users and allow them to Contribute to send their ideas because we notice that those ideas are often the best So we came up with requirements buzzer You can find it under this URL requirements buzzer org and Yeah, it's a web-based tool online tool for continuous innovation So the key ideas here are connecting the end-users the with the developers designers, but also researchers and Other stakeholders involved in the development and you want to allow them to discuss to post new ideas to Send comments to prioritize to vote to like just just like on Facebook and also share share ideas to to other social networks Another key aspect is making clear what the developers are working on So the users that they get notifications if their idea was taken up and is currently being Developed and then rolled out Integrating on any context that means Whether we are on a on a mobile app or we are on a desktop app or we're on a web Application whether we are in the tram or sitting here And we want to enable to make it very easy to submit new ideas and Finally the export options to both directions one is to social networks for end-users to discuss further and the other Direction is to issue trackers so things where developers can can can work on and discuss the technical details like github issues or Jira The before I show you an example. These are the details That you're going to see. It's a progressive web app. It's responsive. It's mobile first develop It installs on home screen So when you visit it a couple of times your Chrome browser actually asks you on Android Whether you want to install it and then it feels like a native app, which is really cool It's developed using polymer web components And The backhand is based on Java and microservice architecture. We're using open ID connect. So we have our own provider There but we plan to integrate Google or other big providers as well It's hosted on github and we use Jira for issue management and finally Jenkins for continuous integration Also the continuous deployment on our build and production environments And now let's show you The software Well, so this is it. It's a requirements bazaar.org it's actually Localized so here the some languages of our research group So you can switch over to German very fast The responsiveness that I talked about So this is it. All right. So this is the the main page. We have some a Lot of test projects obviously and some popular projects Then you can click to explore the public project so it's you can see everything when you're Not logged in so here is the list of projects or the most popular So that's to peer is a Java framework that we develop in-house We also noticed people from outside of us that we didn't know started using it for example in Afghanistan 60 people are using it and for building their IT stacks. It's cool our own project and Let's click here So then you see the categories for example the front end or the back end and And I'm just switching over to the front end and Basically, this is this is the main interface. So it's a card based layout if you know material design and Let me sign in here. So that is our Open ID connect provider Yeah, and now I'm logged in and If I want to add something for example, I noticed yesterday that The statistics on the main page are not yet localized. So I'm starts are not available in my language bad and I can save it and it will just appear here and Then I can start it I can follow it to get emails We have a nice activity tracker. So you See what is going on. So some of somebody of you here or outside and the internet has already followed the project cool Thanks Yes So that's basically the The web app and I also want to talk a bit about the future ideas Right. So what we also have is we have web because it's web components based It's very easy to actually export it to other websites. So we have For example project that's doing augmented reality learning We have the content that the tiles on their homepage integrated so that people don't notice that it's actually hosted requirements buzzer It's pretty cool. It's so one line integration in Wordpress We have works going on to gamify it. So you get badges and points and all that We want to add design tools so you can upload screenshots, which you can already do but also mark and annotate that and Very important thing that we want to Do is also embrace new communities outside of software development. So If you go back you find A project a category here for the requirements buzzer, which is target communities. So Things like refugee aid where people come to Germany or other countries and they want something and they just type it in here or Neighborhood assistance clubs and associations a soccer club and so on. So we think that We hope that this idea could also help them or other other fields So that they they learn actually from how software developers work efficiently one part of that is the localization so I already showed you and I have Here a goodie. So we already and in the development branch. We translated it to Farsi. So it's It's partly so there are some some issues here. That's why it's not to release yet But very soon it will be available also for in the native language of the Afghanistan community All right. So that was it So if you have questions here and I will be also available outside if you want to talk with me afterwards Thank you very much is fun big hand, please So I see a question there back there. Hi good product and is there a Management for duplicates No, not yet, but We're working on so social network analysis tools to automatically Get that also something we want to add very soon is tags So based on tag behavior tagging behavior, we could already Well filter out some of the duplicates Any other questions don't be shy. Hi, can we add attachment drawings? Just to explain a little bit more Yes, it's you can add attachments. Yeah, so any more questions Another one over there So the export import that you mentioned it is it a kind of Excel export or any API that they can connect Well, it's it's all a rest API. So today already can ask The rest API we have excellent export already. So CS comma separate values and the github issues export is also already there on on the Development environment So if there's no more questions, then I suggest we wrap up Big hand for is fun