All right, Ethereum 1x. Let's talk about it. For those of you who don't know, just a quick intro. For me, I'm at the Ethereum Foundation. I worked at a bank for a few years. I have a wife and three cats. And I mainly work on community security and DevOps at the Ethereum Foundation. So if you see me around, please say hi. I'm friendly. So the thing I want you to take away from this is that ETH 1x represents sustainability. That is a really cheesy hashtag that we came up with at one of the 1x meetings. And I really like it because it describes how we're trying to keep the chain together and how we're trying to make Ethereum 1.0 last for as long as necessary and keep the network running and efficient for everybody using it. Oh, before I start this, there's going to be a time for Q&A at the end. So please get your questions ready. We'll have mics at the audience, probably just in the aisles, I believe. So when that happens, I will let you all know. Oh, it's actually going to be at the front. So line up at the front when you have questions once my presentation's over. Wow, that cough echoed. Here's the beginning. We had ad hoc meetings in Prague during DevCon 4. There was about 25 people there. You could see some of them in that image. And we talked about how to achieve sustainability. We were saying, there's a lot of state bloat. There's things going on that are going to fundamentally change Ethereum when 2.0 comes around. How can we best prepare for those in 1.0 while keeping the network very, very active, or not active, but very efficient, very optimizable for people to use? So from that meeting in Prague, we came with four working groups. The simulation working group, state rent working group, the chain pruning working group, and the eWASM working group. So simulation working group was put together to understand how can we look at how much state bloat is affecting Ethereum? What can we do about coming up with graphs, figures, numbers to help us understand more? The state rent working group, which has now turned into the state fee working group, which has now turned into another whole working group kind of a thing, is about addressing the growing state, maybe advanced snapshot syncing and stateless clients are also explored later on. There's just a ton of stuff. Like ETH 2.0, Danny's going to talk about this after me, but ETH 2.0 is going to have a lot of changes and figuring out how to store information in a way where it's not going to blow up people's hard drives. So can we address some of those problems now?  And it's a difficult thing to incentivize and figure out what to do with.  It has to be on a solid state drive because of the disk IO reads or the disk IO. So that's that working group. We have chain pruning. Can we archive blocks? Can we archive logs? How many of you here are DAP developers? Keep your hand up if you use logs in your DAP.  OK, yes. That's exactly why we might need to archive logs. It was never really explicitly said if we're going to have logs last forever. They're supposed to be for error messages and for just tracking certain things. But now that they are a cheaper way of storage, that's unbalancing things a lot. And it's causing some state bloats. So can we archive those? Can we maybe make it so that you have to fetch them from an external source? We're looking into things like that. And then there was the eWasem working group that determines what from eWasem is going into 1x and 2.0. A lot of eWasem workshops and talks are around DevCon. So feel free to jump into those for more information. So at the time of Prague, basically between late last year, early this year, sustainability meant a renewed effort to invest in the existing ETH 1.0 network to ensure it can survive and thrive indefinitely. So that's what I alluded to earlier. That's the first version of what sustainability is. I'm going to get to the second one later. So ETH 2.0 is sexy right now. It's like the new hot thing. Everyone wants to work on it. But we still have this 1.0 chain. And up until last year in Prague, there was some kind of discomfort and some things that we really need to address about the fact that developers were dropping off doing stuff with 1.0 to do stuff on 2.0. And we need to make it so that 1.0 is still sustainable and 1.0 is still fun to work with and has goals and its own driven architecture just like 2.0 has. So not that we don't like 2.0, but it is the sexier younger brother of ETH 1.0. And we need to make sure that 1.0 and 1.x stays in the forefront until we can get to 2.0. OK, so this was kind of, I don't know how many of y'all remember this controversy from last year, but like the Prague meetings that I talked about, the ad hoc ones with 20 to 25 people, a lot of people said those were secret meetings. And the reason for that was we did have this note sheet passed around during it that I think someone from Consensus took, and they basically took notes down and they were going to be released later, but they got leaked early because one of the core developers thought that people should know about the notes before we were ready. So we were talking about 1.x in Prague. It was like 20 people in a room. There were other ad hoc meetings all over the place. And so people interpreted this as, oh, these people are coming together to figure out what's happening to Ethereum without anyone else's input. This isn't like the core developer meetings where it's all open and out there and streaming. So we did an experiment. Because of the 1.x initiative starting, we wanted developers to be able to speak candidly without fear of media misinterpretation. Sorry, Lee, sorry, Ken with coin desk. I know you're out there, but yeah, without fear of media misinterpretation. So we had an ETH 1.x core dev meeting on the 30th of November of last year to solidify plans for workshops and things like that, but we used Chatham House rules. And what that means is everybody attends the meeting and you take notes, but you don't attribute those notes to anyone in particular. What you do is you just write the notes down and everyone can talk about what happened at the meeting, but they can't mention names. So we decided to just try that. We didn't record or stream the meeting and the community pushed back on that. So we decided to not do that again. So that's kind of the end of that, but it was really interesting to me, and I put this in the presentation because this kind of jump started a lot of enthusiasm for transparency and really showed us what the community values within Ethereum. And I thought that was really important. We had a 1.x meeting at Stanford that was streamed and recorded in January, and that one had a lot to do with Alexi kind of running the meetings and doing a really good job of getting us all organized and talking about the things we needed to do in 1.0 to achieve sustainability and on-chain pruning and stuff like that. Berlin, I didn't get to go to that one. It sucked because I didn't get to go, but in April we had another meeting that was also streamed and recorded. You can find all this on YouTube. It's hours of really good content on 1.0 and 1.x. And a lot of different stuff came away from that, including more working groups. We had EVM Evolution, which is improvements to the current EVM around speed, safety, and interoperability. That one's currently not doing anything right now. That one got some feedback from different developers that they didn't really want it to be put in, so that working group is no longer in existence as far as I know. There's the testing and infrastructure team. They kind of have a working group where they're trying to build these tools, these cross-client testing tools, and other things for compatibility. There's the finality gadget, which is using the 2.0 beacon chain to finalize ETH 1.0 blocks, which is a really, really cool idea. That one's actually about to spin up a lot more, that's gonna be a lot more news from that coming soon from what I've heard. EIP 1559, the fee market change. That one, if you've seen Eric Connor, Econar, or Vitalik Buterin talking about that, that's making transaction fees more stable and predictable by splitting the transaction fee into two different types of fees. One of them is burned on chain, and the other one is the predictable fee. So after all these meetings, it's been about a year since Prague, where are we at with sustainability? What is it now? And I'd argue that it's about improving processes and making protocol changes to ensure the sustainability of the Ethereum 1.0 blockchain. And what I mean by that is, unlike the version one sustainability, where it was just about, let's keep the chain alive, let's do some stuff with reducing state bloat and rent and all this other stuff, now we are looking at improving processes, making protocol changes, making things more energetic and exciting in the 1.0 chain. And I've been seeing a lot more participation because of that. I think that people are getting really excited about what we can do today on Ethereum and without having to exactly know what the future brings. This is an example of the current EIP process. So this is like my favorite, or one of my favorite improvements right now, which one, yeah, Ethereum EIP process. So I'm an EIP editor, I'm involved in that. And right now it's kind of hard to jump into. The EIP 1.0 is our technical standard for how to submit a change to the Ethereum protocol or a community standard. And it's really hard to digest right now. It's kind of long, there's all these different EIPs, you have to format them a certain way, and we wanna make that a little bit easier. So right now we have work in progress, draft EIP, accepted EIP, main net client implementation, network update, and then the miners mine the new blocks and then we're at consensus. And what we do is we take these EIPs and we stuff them into these hard forks and they're on a certain date and time and we do that by block number. And that's not really efficient because it makes us rush. We don't have test cases up yet. We have to pressure everybody to work really hard and really fast at this, you know, normal, this original model of how we do things today. Instead we want an EIP focused network upgrade model where we have our draft and then we have the all core devs green light these core EIPs. From there we get into the implementations, from there we get into testing, and then it's only accepted after the test cases and the implementations are finished or near finished. And what that's gonna help is instead of us deciding early on like, okay, we're gonna put EIP one, two, and three into this hard fork on this date so we're gonna have to rush to the finish line. Now we just do a hard fork when the EIP is done. And if there happens to be more than one EIP done at the same time or there's like really ones that are really close together, that's great. Some of the challenges behind this are gonna be letting clients, exchanges, people like infrastructure projects like Infura and Cloud Front know when these hard forks are happening. So we're gonna have to bump up our communications. We're gonna have to ramp up and assign people to know when these things are happening. And that's actually a job that the Ethereum cat herders which I'm also a part of is gonna hopefully have a really big job in accomplishing. Here's another really cool change. This one is a graph from Alexia Kunov. And this is how, whoops, this is how things want to work in the future. Vitalik or people on the internet or other core developers have an idea and they're smiling and they like, I really like this idea. So they're going to put an improvement proposal out there maybe on Ethereum magicians form but it's not formal yet. Then there's a working group formed around each proposal and research project and then others can optionally participate. There could be client implementations, other improvements but it's not like we're having every core developer look at every EIP. We have these working groups of people who are interested and they present their case and they do the research and the simulations and the testing cases and the implementations and work with teams. And this is a lot better than how we've had it before where the core devs have to look at every EIP. I want to make a note here that these improvements that I'm talking about aren't done yet. It's a work in progress and we aren't even at consensus as this is how it's going to be. We kind of have to come to rough consensus about this but this is definitely what I'll be pushing for as we go forward into this new era of ETH1X. So how is this all going to get funded? We all know that there's all these grant programs out there for ETH 2.0 and different tooling projects. The Ethereum Foundation earmarked $8 million back in May for the next year of ETH 1.0 and 1.x research that was announced at Ethereal and we're working to bring full-time ETH1X teams and coordinators together. That's also a work in progress that you'll be hearing more about in 2020. So yay, we got funding. We have excitement. We have everything we need to really bring the ETH 1.0 chain into its next evolution before we hit 2.0. So if you wanna know more, Google Alexiakunov's Medium, his blog has a ton of good posts on that. There's an Ethereum wiki page that has the ETH 1.x history on it. It talks about the Berlin meeting and the Stanford meeting and it has links to the YouTube pages. Also check out the PM repo on Ethereum's GitHub. That's the one where we have the bi-weekly core developer meetings that myself and a few others help coordinate and run. For every core developer meeting that happens every two weeks, we have a full transcript of notes that's in the PM repo and you can go back three years and see notes for every meeting. Also YouTube streams and live recordings of almost every meeting. Contact me if you wanna help. If you're a low-level developer, this stuff is more like not for people who build dApps necessarily except to get their input. This is more for low-level client developers and people working on the protocol or the networking layer, but if you're interested in that and don't know where to start, please reach out to me. I can connect you with the right people and I'm not an angry, frustrated person. I'm happy. Happy to help. So everyone, thank you so much. Start to come up to the front for questions. The microphone's over there and yeah, anybody got questions? If not, I can talk about my tabletop RPG podcast, but that's like very unrelated. So I don't know how many people are gonna enjoy that. Oh, some fans. Hey, what's up? Introduce yourself and then pose your question. Hi, I'm Saren. I'm wondering what's the soonest that EIP 559 might be implemented? Awesome. EIP 559, that was on this one, the theme market change. That's a good question for Vitalik and Eric. I'm thinking 2020, they can definitely go in. We still have to come to consensus around it, but I have not seen much opposition personally for it. I think it's a really important change that a lot of people are very, you know, like they really like the idea of that. It will change the user experience a little bit and the experience for DaptEVS, so that is something to take into consideration. But otherwise, I think that that's a really good idea.


The Venezuelan opposition leader Juan Guaidó and candidate Freddy Sopalano have been urgent supporters to unify as a dispute with the government over recent humanitarian elections in Barina state intensifies. Local and regional elections were held across Venezuela on November 21, resulting in a sweeping victory for the ruling socialist party. On Monday, the Supreme Court disqualified opposition candidate Freddy Sopalano from the vote in Barina's site in pending administrative investigations against him. A rerun has been ordered for January.


Don't allow the perfect to get in the way of the possible. I've done that in my life and I've allowed others around me to put me on hold because they were perfectionists to a degree that I wouldn't have been and it paralyzes us, it makes us stationary because the possible is postponed in pursuit of the perfect. You know, the anchor of a ship doesn't have to be all the way back on board for the ship to move. The anchor only has to be a few inches off the seabed for the ship to move and I think that's a good metaphor for what I'm trying to say to you. I think some people think the anchor has to be all the way back on board. We can see it, it's on board before we move. No, it doesn't. It can be a few inches off the ground for the possible to take place. Stop obsessing over the perfect at the expense of the possible.


From VOA Learning English, this is the Education Report. Many Syrians are trying to study overseas while a civil war continues in their country. Thousands of Syrian university students sought help when they learned there was money to help them continue their education. Lene Al-Zabak is with Jusur, an organization for Syrians living overseas. Jusur joined with the American-based Institute of International Education to create the Syria Consortium for Higher Education in Crisis. More than 40 universities in the United States and Europe agreed to provide emergency aid to Syrian students and professors. Each university decides which students to accept. Universities in the consortium are supporting 70 students right now. One member of the consortium is American University in Washington. It is supporting a Syrian graduate student and a faculty member in the University's School of International Service. Daniela Kayas is the Vice President of the Institute of International Education. She expects there will be aid opportunities for 600 Syrian students during the next few months. She notes that a former president of Portugal, Jorge Sampaio, launched a scholarship program called the Global Platform for Syrian Students. He created the program because of Portugal's history of educating Jewish refugee children during World War II. The Institute of International Education also has a scholar rescue fund for university professors and researchers in any country in crisis. This year, the fund found places for 30 Syrian scholars in five countries. All of the scholarship programs may be found online at IIE.org. For VOA Learning English, I'm Alex Villareal.


I want to bring some attention to a lesser discussed portion of Alexandria Ocasio-Cortez's interview with Jeremy Scahill, because what she's saying here, I haven't heard many elected officials say this, but this point that she makes, it's a point that I've made, and it is incredibly important specifically for liberals. Because if they don't acknowledge what led to the rise of Donald Trump, then they're going to end up making the same mistakes again that will lead us to a Donald Trump 2.0. And what AOC says in this interview is key, because she's warning them if we don't make significant changes, specifically if Joe Biden doesn't make some really needed changes, we're going to find ourselves in the same predicament in another four to eight years. So as Brett Wilkins of Common Dreams explains, Representative Alexandria Ocasio-Cortez has a stern warning for President-elect Joe Biden about filling his cabinet with the types of war and Wall Street candidates that have come to characterize Democratic administrations over the past three decades. In an interview with the Intercepts Intercepted Podcast aired on Wednesday, host Jeremy Scahill asked Ocasio-Cortez what she thought of Biden hiring members of former President Barack Obama's administration from corporations, including Goldman Sachs and McKinsey. It's horrible, she replied. I think it's also part of a larger issue that we have right now, which is the Biden administration bringing back a lot of Obama appointees, which depending on where you are in the party, may sound nice, I guess. But I think what a lot of people fail to remember is that we now have a Biden administration that's bringing back a lot of Obama appointees. But when Obama was making appointments, he was bringing back a lot of Clinton appointees, she added. Biden has tapped former Obama officials, including Avril Haynes, for Director of National Intelligence, and Antony Blinken for Secretary of State, who played key roles in planning and executing militarist policies. Such picks and policies, admonished Ocasio-Cortez, are a huge reason why we got President Donald Trump in the first place. In addition to just the racism that was waiting to be reanimated in this country, there was just this extreme disdain for this money political establishment that rules Washington, she said. So what she's saying here is crucial, because if Joe Biden and liberals and the Democratic Party establishment does not heed her warnings here, we're going to get stuck in the same situation with either Donald Trump again in four to eight years or someone who's worse than Donald Trump. Because Donald Trump, he may be a fascist, he may be a far right extremist who has a cult following, but just individually speaking, he's not very effective as a political actor. Most of what he's been able to accomplish has been done because of folks like Mitch McConnell, Republicans who are pulling the levers of power for him. But alone, he's not that effective. But if you actually get someone in the executive branch who knows how to wield power, who's actually fascistic and really nefarious, that can be a really, really dangerous situation that we find ourselves in. The problem, however, is that as AOC makes this warning, I genuinely fear that Democrats don't care. And I say that because if you think through it individually speaking as just a lone Democrat in Congress, you're a centrist, you don't necessarily care about anything other than your career. Think through who is it more easier for you to have as president? Someone like Donald Trump who is a divisive figure who you can easily fundraise off of or a Democrat where you kind of actually have to put in work and prove to your constituents that you're fighting when you have power. I fear that Democrats don't care or would prefer a figure like Donald Trump because he really is someone who the Democratic Party's base feels inclined to rally against. And having this common enemy kind of brings people together, but when you don't have this common enemy, then the attention is on the party who has power. And a lot of Democrats don't want that.  So what I want people to take away from this is that this warning is crucial, but it's not something that I think a lot of elected Democrats care about. But liberals, liberal voters in particular need to acknowledge that they have to put pressure on Joe Biden, don't just go back to brunch, don't be complacent because if he doesn't actually make substantial changes and improve the material conditions in this country, things are going to get bad. They're going to get worse. They're already bad, but they're going to continue to deteriorate. Because understand, the reason why we got Donald Trump is because people were so desperate. And when you reach a certain level of desperation, you become highly susceptible to radicalization. You'll believe anything. Any huckster or demagogue that comes along and tells you that they have the answer as to why you're experiencing all of these problems, why you're so poor, that resonates with people. You end up getting a predicament where we see this rise of extremism and white nationalism. And there's a reason why this isn't just happening in the United States. The United States, our politics isn't occurring in a vacuum. We're seeing the rise of fascists in other countries, Brazil, India, even in the UK and Canada as well. And if you don't actually meet the needs of people, we're going to continue to deal with this. Not saying that if we had like a socialist or even democratic socialist president and they did improve the lives of people materially in a concrete way that all of a sudden this radicalism and white nationalism would go away and racism would be solved, that's not how it works. But what I'm saying is that these situations, the material conditions, they exacerbate existing problems. They can use existing issues like racism and white nationalism and use that as a means of them like getting more power and consolidating power. So I really hope that folks listen to AOC. She's one of a few people who have made this point. And it's a really, really important point.  So you already know this point. But unfortunately, this isn't common knowledge. Like a lot of folks think that because Biden is president, everything is copacetic. Everything's going to be OK now. But that's not the way that it works. If Biden fails, we may be in a worse state than we're in right now. And that really is horrifying to think about.  It should be all, you know, fully canceled, but cancel some of it. Do things to improve people's lives. Otherwise, nothing's going to change.


Welcome to module 6 of point set topology course. Today at last we will start the definition of topological spaces and some few examples. Before that let us motivate this definition by studying one important aspect of same thing in metric spaces. So this is, I have put it as a theorem. You can say this just to surmise what is happening in metric spaces.  So I have put union of that, I do not know how many I have taken here, that is why I have u i. It could be finite, it could be infinite, it could be uncountable, whatever it is. It could be empty also. When it is empty, what is the union of empty? Empty set is empty set, where it is also allowed. Take all subsets u, it can be written as union of balls. So that is my TAD. Then this satisfies the following properties. First thing is, just now I told you empty set is there because it can take empty union. X is also there after all. Why? Because once any point x belongs to x, it will belong to some open ball and then that open ball will be there. So you can take union of all open balls around each point that will cover the whole of x. Therefore x can be written as union of balls like this. So x is there. If you take a sub-family of tau d, any sub-family, then the union of that sub-family will be also in tau d. The third thing which is very simple-minded but very important, most important one. If two of them are there probably, then the intersection is there. Once this is true, it will follow that if finitely many of them are there, then their intersection is also there. So from 2 to 3, 3 to 4, any finite number we can get. So these are the fundamental properties, I have just collected them. I can collect a number of them, lots of them but these are the things which I am concentrating. Just like we started with modulus and took three important properties. We made it into a norm. Similarly, three important properties were made into metric and so on. So along with the same theme, we have taken these three important properties. So let us first test them. These are going to be axioms finally. So let us call the members of TD as open sets. This is just a tentative definition. Soon we are going to change the definition of open set. So right now let us call them as open sets. It is not the same thing as open balls. Open balls are defined in a different way. Now an open set means union of open balls. Let us call them as open sets. The theorem says that the whole space and empty set are open. Arbitrary union of open sets is open and finite intersection open sets is open. Given a sub-family, one part I have already explained to you, part one. I have already explained to you why this happens. Given a sub-family, when you take the union of over all of them, union of u alphas, each of them is a union. So you can write it like this. Union over union is just a union. It is like a double summation. Wherein in the case of numbers, you will have to bother about whether it is convergent and so on. Here there is no question of convergence. Double summation, whichever way you want to take, you can submit up. It is like union of sets. That verifies to. The third one requires a little bit of analysis. What is this? Namely, you have to use the property of the distance function appropriately. So take a member here, take a member here, u1 and u2. They are themselves union open balls. When you intersect them, what is that? That is the intersection of, it is a union of intersection of one ball here and one ball there. One ball here, one ball there. All pairs of intersections you have to take. Some of them may be empty, some of them non-empty. But it is a union, intersection of the union something, union something is union of the intersection. That is what I am going to use.  It is a union of balls. See, first I have to prove that intersection of u1 and u2, where u1 and u2 are arbitrary open sets like this, arbitrary unions like this, intersection is over. But that will convert it into just proving the intersection of only two members. Namely, how they are themselves balls now. u1 is BR one and u2 is BS. So I show that this intersection is a member of TD, then the union of all these will be the arbitrary interaction. So that will be out of there, okay. So if u1 is BR of x and u2 is BS of x, that belongs to the intersection would imply both dzx and dzy are r, this is less than r, that is less than s. That is the meaning of this, right. That is in this ball means this one, that is in this ball means this one, right. Now what is that I am going to look at here, look at this one. This is a ball of radius r, that is a ball of radius s around y. Now z is taken in the intersection, you can see that the intersection is not a ball, okay. Here it is a lens, it is a lens like thing, alright. But it will contain a small ball around z for each point, it contains a small ball, so it will be a union. What is that ball? You have to choose this radius appropriately. If the distance from x to z is a and the radius is r, whatever is left out here is precisely r minus a. So I can take as big as r minus a. But I have to worry about the other one also. Here radius is s and distance is b. So I have to take at the most s minus b, therefore I have to take the minimum of the two. So I take the minimum of the two, then I am done. That is a positive number and that ball will be contained inside both of them, okay. That is precisely what I have done here. h d z of x, b is d z y and epsilon z is minimum of r minus a and s minus b, alright. Then if p is inside this ball, you have to use triangle inequality, distance between this and this, okay, is less than this number. It will imply the distance between here to there which is a plus distance here that will be less than r, similar with the other one. So that is what I have done. p belongs to b epsilon z implies d z p is less than epsilon z.  So I can write here if you take exactly minimum less than equal to correctly to be sure, does not matter. Less than equal to is good enough. Implies b p z, okay, actually less than z because here itself I am taking less than, so this epsilon, but this may be equality here, but this is less than, that is correct. p d p z plus d z, I have this one. I am replacing r by this one, taking a on this side to less than r. When you take a on this side, it is less than r.  Similarly, p will be also in the bs of x, therefore it is in the intersection.  Take them all inside in the intersection, so it will cover the whole thing. So this union is one, so that will be inside k d. So now the whole idea of doing this one is we have these three axioms here, they become axioms here or at a polish. So let us take any set x, take the power set x, take a family tau of subsets of x, that is a subset of p x itself. This should be called a topology on x if it satisfies the three axioms which I have denoted by now, t, a u and f i. x and empty set are inside tau, that corresponds to the first one there. The a u is arbitrary union. If f is a subfamily of tau, take all members in f, then take the union, that will be also in tau. If f is a finite subfamily of tau, take the intersection over this finite family, that will be also in tau.  So these three axioms are there now. A set x together with a topology tau will be called a topological space. Logically, we should write just like we write x, d for a metric space, we should write x, tau for a topological space. However, in practice, we will cut down the notation just like in the case of metric spaces or non-linear spaces and so on. We may merely say that x is a topological space when the tau is understood. If we are discussing two different topologies on the same set x, then definitely we will write it. Sometimes there may be a different topology on a different set and so on that on those things you should write, otherwise we need not write. Writing is not a crime. Only if you keep writing it, it takes more time and more space and so on. Somehow when there are two of them, you have to write which topology. So let us continue with the definitions. Elements of tau are called now open sets in x tau or merely open sets in x. When you say open set in x, we mean the topology is already understood, it is behind. In particular axiom one says x and phi are open. In every topological space. Next, we will make a definition a subset is called if and only if it is complement. Sometimes I write complement for xc, fc. I prefer to use this longer definition, longer notation x minus f. By the way, this you can read it as minus f but do not confuse it with the additivity of our real number or complex number. It is not a minus of that. So should not write the horizontal minus here. So this synthetic minus is the correct thing. If the complement of f is open, then you call f closed set. Compliment of an open set is closed. Compliment of a closed set is open by De Morgan law that is all. Clearly, knowing all closed sets is the same thing as knowing all open sets. If you know all the closed sets, you know the complement of that is all. Often using De Morgan's law, a statement about open sets can be converted into an equivalent statement about closed sets. You have to do that in circus sometimes. However, geometrically open and closed sets play different roles, different roles. So in our mind set, there is something about almost as if open sets are more important. But logically, there is no difference. You must see that. Let X tau be any topological space now. I am continuing with the definitions. A subset is called a neighborhood of a point. The point is also inside X of course.  This is a definition of general neighborhood. Sometimes I am going to write NBD, this nomenclature for neighborhood. We should use the term open neighborhood that is O NBD when A itself is open. A is open and X belongs to A, then A will be an open neighborhood of X. So this is the terminology. It is fairly easy to see that a subset A is open. If filled only if it is the neighborhood of every point belonging to it. So I will let you think about this one. In the second part, I am not assuming open name just a neighborhood. Yet if it happens for every open set, every point, if you know it is neighborhood of every point inside A, then A must be open. And conversely, conversely obvious. If A is open, it is a neighborhood, it is actually open neighborhood. If you know enough set theory, you may derive the first axiom T from A U and F I.  Hence, putting this condition is somewhat redundant and some books do that. They do not put it at all. They just put only two axioms and others put it four axioms by cutting T itself into two.  So we have induced, we have included it for the sake of clarity instead of being two thirds though logically only these two are sufficient. And by the way, there is a general understanding that a definition should be as short as it please, as it can be. No extraneous explanations, terms, etc should be there. This is the guiding principle of the definition. Okay. If you follow that, this T has no value. T should be removed because that is a consequence of A U and F I. Also not so obvious is the fact that intersection over an empty family is the whole sector. This gives you at least the beginner some problem. Okay. So I want you to think about it. This is a very important thing. If you proceed further and further in anthropology as well as in mathematics elsewhere, this becomes a necessity to understand this one. Okay. So make a beginning. While dealing with topological spaces, you often have to use these facts namely that a empty union is what? Empty union is empty set, empty intersection in the whole sector. So our topology was after all motivated by metric spaces. So there is no wonder if metric spaces give you a big source of topological spaces. How start with any metric space and this take this tau D that is topology. That is what the previous theorem says. 1, 2, 3 properties we have proved and those properties have become axioms, that is all. So x, tau D is a topological space associated with the metric D.  That is coming from a metric. Sometimes we say it is matrizable instead of saying which metric it gives you. There may be several metrics giving the same topology. So it is just given matrizable topology. Obviously there is going to be more stringent condition on topology being a matrizable. They are some small class of topological spaces. Once you have created this definition, it is like a monster. It is no longer in our control. It will create lots and lots of topologies. So that is what I am telling here. If you have only metric topologies all the time, then there was no need to make this definition at all. The fact is that the great people who worked all these things, had bingers of topology, had foreseen the floodgates that this definition opens up. Our next step is to study a few examples of topological spaces which do not arise naturally as metric spaces. Topology is for metric spaces. But this we will do next time. Thank you.


If you could travel to space, what would you take? In 1993, a Soviet cosmonaut brought his Nintendo game Boyd to space on the TM17 space mission. It is said to have orbited Earth 3,000 times and was later auctioned for $1,220.


Someone apologize in there. It is now on. All right so if you have virtual machines so instead of having like a lightly used machine just make them all virtual machines and then Run them on a single machine if you want so to clarify this so for instance if you were making a fun web application and You don't want to give yourself a headache later on Well, you could make a virtual machine for like your database make a virtual machine for your front end make a virtual machine for your Back end and then once when you don't have much traffic at all You can save a bit of money run all those virtual machines on the same physical machine And then once you see that that's overloaded well You don't have that much work to do you go out you buy another machine and then you move on the virtual machines over to it and you can do that no problem and If you run out of more you just go buy another server Maybe you have more instances of the database virtual machine. Maybe you need more of the other it makes it real easy to scale and recover and Run stop. Yep. Okay. All right that better No ish Hello one two three four. All right that better. All right. I will try and be louder. All right So Where were we? Yeah, so if you do something like that a lot easier to move things around and manage them So like we had a process control block when we were scheduling processes virtual machines have something called a virtual CPU and that keeps track of everything about a virtual everything about a CPU including all of the kernel mode only registers and All of the entire state of the CPU instead of just whatever a user can actually have access to So for processes Process control block for virtual machine. It's a virtual CPU so Whenever that guest isn't running the hypervisor is going to save the state of the CPU and that's what's involved in doing a natural context switch And if you want you can resume that virtual machine Just like the process control block just loads the data from it and resumes as you might imagine Well, it would have to do a lot more work than just a process control block to actually resume So context switches are more expensive But it is possible to do and you can also context switch across machines if you really want So the guest still uses user mode and kernel mode There's no changes at all in the guest operating systems So the Linux kernel still uses kernel mode instructions. It doesn't change So remember on x86 if we remember all the way back from the beginning user mode was in something called ring three kernel mode was in something called ring zero and well x86 CPUs were like Design in the 70s or the 60s or something like that. So virtual machines are a new concept So they were like 20 years ago or something like that So they needed a new CPU privilege mode that was more privileged than kernel mode So they called it ring negative one because they ran out of numbers. So On x86 hypervisor mode that you need for type one hypervisors is ring negative one So it's even more privileged than Then kernel mode and it lets you control all the guests For type two hypervisors Well, the host has to essentially fake kernel mode because it's only running in user mode So if we were trying to simulate kernel mode in a user mode process One strategy we could do is something called trap and emulate So if we try to execute a privilege instruction So like if you somehow figured out or you looked at the spec and figured out the assembly For I don't know like switching the root page table or something like that and you try and execute in your process Well, you're going to get a signal and it's going to say oh a legal instruction You're not allowed to execute that and that's part of the hardware protection So if you wanted to by default you would get a signal your process would exit and it would die but if you were to implement a hypervisor you could Write a signal handler and you could simulate whatever that instruction was supposed to do So you are going to have to simulate Everything that happens in kernel mode on that particular CPU, but you can technically do it So in your signal handler you would figure out. Oh, what instruction did they try and do? Okay, I'm simulating all the page tables and all the MMU and everything like that So I'll just simulate whatever this instruction was supposed to do and as you can imagine Well, it will be slow So instead of executing the instruction directly Well a signal gets sent and then I have to see what the instruction was and then I have to simulate whatever it was doing so technically possible, but it's going to be much much much slower and Also, this would work if you had a sanely design a sanely designed instruction set architecture Which x86 is not an example of so? Oh Before that here's that visually so Your guest operating system is going to be running in user mode And it thinks it is in kernel mode if it tries to execute an instruction that is only present in kernel mode Generates a trap or a signal and then you would handle it Emulate what it's supposed to happen update that virtual CPU that keeps track of literally the entire state of the CPU Including all the kernel mode stuff and then you return and just keep on executing until this happens again so Trap and emulate doesn't always work So on some CPUs. Well, there's not a clear boundary between privileged instructions and non-privileged instructions So on x86 virtual machines didn't exist in the 70s so what they did is they tried to be clever and Had some instructions that just Had the same machine code But did different things depending on what mode you were actually currently in so for instance there's one instruction called the pop f instruction and it loads of flags register from the stack and That flags register is different depending on if the CPU is currently running in kernel mode or running in user mode So if it's running in user mode that flags register as a user flags register if it's in kernel mode It's a kernel only flags register So the same instruction behaves differently. So if my type 2 hypervisor, which is only in Running in user mode While tries to execute an instruction that thinks it is in kernel mode, but just behaves differently. Well, it would just Execute in this scenario and just do the wrong thing. So I have to be able to fix something like that So since it doesn't generate a trap and it just kind of executes and does the wrong thing I call these special instructions and we have to have another approach for them So for special instructions, we need to do something called binary translation So that guest virtual CPU is in user mode It can keep track of whether what state is currently in so if the virtual CPU is currently in user mode and That guest thinks it is in user mode. It doesn't need to do anything It just runs the instructions because they both agree with each other but in the case that the virtual machine thinks it is running in kernel mode, then I actually need to Essentially translate these instructions so all it does is inspect all the instructions before they execute and check if it's one of these special instructions if It's one of these special instructions then instead it would execute the simulation instead of the normal instruction So you can imagine this would also be slow and how it can do this is well It knows whether or not That guest virtual machine knows it's in kernel mode or user mode because well There's a CPU instruction that switches from user mode to kernel mode Hypervisor can handle that using trap and emulate so it knows what mode that the virtual machine actually thinks it's in So because of this it has to like inspect all the instructions Performance is going to suffer really bad But in general it kind of works if you have an overpowered machine and it's more or less adequate That's what I'm going to say about the compile your program or anything like that it will essentially Read the instructions your program is about to execute and if it's about to execute a malloc or free or something like that It will go ahead and instrument it and then keep track of your mallocs and freeze and that is how Valgrind works And also why if you check its performance It's like 10 times slower like a hundred times slower than just executing your program because it's doing this So how that would look visually is well My virtual machine it's only running in user mode, but my hypervisor also running in user mode Would know that hey this virtual machine thinks it's in kernel mode It would start inspecting all the instructions before they actually get to execute if it's a special instruction Well, it just simulates or emulates what it's supposed to do updates the virtual CPU and then just keeps on executing more instructions So this is slow and we don't want to do that And that's where we came up with that hypervisor mode and has have more actual hardware So 2005, which I guess is slightly newer than some of you That's when they first standardized virtual virtualization hardware virtualization So it was standardized as vt-x and and For Intel and then AMD standardized it later as AMD dash V and Throughout all your biases if you need to enable virtualization for some other reason It might be called different things because they also came up with two different names for it So Intel also named it codename Vanderpool when they were developing it and then they ratified it as Vmx AMD their codename was Pacifica then they published it as secure virtual machine, but these all all Six of those terms mean the exact same thing So if you need to enable it in your bios for whatever reason if your virtual machine was slow I don't think any of you had to do that and today you have to do this So if you had to do this or if you want to turn it off for some reason It'll be called one of those things. They all mean the same thing so those all add the concept of ring-native one or hypervisor mode and How windows actually works like for you with your virtual machine? Well windows will see that this CPU has hardware support and when it boots up It will claim the hypervisor so it will act as a hypervisor and then normal Windows kernel things So it will run your applications your normal applications as if it was a kernel and also context switch that out with Virtual machines because it's also a hypervisor So this also, you know, lets windows set all of the isolation for all the for all the guests and what hardware can virtualize All right, so To tie this with other stuff we learned. Yes a hypervisor would have to schedule as well So if there's only one CPU on your physical machine Well, the guest doesn't know about that. So you could just say hey virtual machine you have eight processors and you only physically get one and then your hypervisor gets to schedule that and do all that context switching and all of that fun stuff, but Well, the trade-offs are a little bit different here because context switching is way more expensive than just context switching between processes So what you might want to do is just map virtual CPUs on the virtual machines to physical CPUs Or you could schedule them like processes if you want in general It's easier just to map them and just keep them on the same CPU So you don't have to context switch them out But you might you might choose to just context switch them out like normal processes So in the hypervisor, it will have hypervisor threads that will deal with all the scheduling and all of that fun stuff So one approach to scheduling these are like I said CPU assignment So if there's more physical cores on your machine then all of the virtual CPUs across all the virtual machines just map them one-to-one hosts can continue using spare physical cores to do hypervisor things if it wants and If you have to share that's where things get complicated That even has a special turn for virtual machines, and it's called over committing Overcommitting just means I my virtual machines are using more hardware than I actually physically have on my machine So if I don't over commit, it's a lot easier. I just kind of map things and I don't have to worry about context switching But if I over commit then I have to worry about context switching and things get more complicated So then you would have scheduling algorithms. They would look exactly like what we use for processes Sometimes it over committing also causes additional problems. So for instance If I was just running directly on hardware, and I had a soft real-time task that had some type of deadline and in practice I met it all the time and then Well, suddenly I move it to a virtual machine, and then I miss my deadlines and bad things happen Well, that's because ultimately you lost control over the hardware if you're running a virtual machine. So In the middle of doing a soft real-time task Well, the hypervisor could context switch out the virtual machine Stop it from executing and then it would miss its deadline and then it could context switch back in and then it says oh I missed my deadline that shouldn't have happened and The virtual machine has no control over that so for some things once you get into like super super predictable and Things you want to be super high performance Then sometimes running a virtual machine is not an appropriate thing unless you do the mapping and have it have direct access to the Hardware without having the context switch it out So this is only in certain situations that virtualization causes differences. That is not very good All right, so like we talked about scheduling with virtual machines. Well, they also have memory management except it's even slightly more confusing so Your kernel that has access to physical memory and then each process has virtual memory that thinks it can access everything Well, guess what once we add a hypervisor into the mix the hypervisor has control over Physical memory and then each virtual machine has virtual memory and then each virtual machine. Well it thinks that virtual memory is physical memory and then each process has virtual memory, but in reality That's like virtual virtual memory because it's through two layers, right? So it's two layers and each layer would have three levels of page tables That's fun, right? So that's also part of the problem that the hypervisor solves it lets you have something called ways it on the slide yeah, it lets you have something called nested page tables and That will essentially take that into account with the TLB to make sure everything is nice and fast So you don't have two translations going on that aren't aware of each other So this makes both translations aware of each other make sure the TLB doesn't get screwed up and Does all the page table management? For the virtual machines kind of for you so the hypervisor maintains that nested page table and then the guest would maintain their page table, but it's nested by the hypervisor and Then it would use that to translate for the guests and there would be hardware support for that As you might imagine as soon as you get into swapping this becomes even worse so the hypervisor could swap out if it runs out of memory swap out to disk, but the Virtual machine might also swap out to a virtualized disk So if you run out of memory, you might not actually know which one is doing the swapping It could be the hypervisor. It could be the kernel that you're actually running and the hypervisor would have its own page replacement algorithm, but Typically the guests or the kernel running knows the memory access patterns better and that's probably what should actually be doing the swapping All right similar to copy on right. There are optimizations in virtual machines to share memory so Just like with processes I can share memory if the contents of the page are exactly the same and I am only reading it So unlike virtual machines, there is no fork and kind of sets you up and lets you know what Pages are going to be shared So what the hypervisor will do is essentially scan all of the pages take a hash of the page Because that is much quicker than actually comparing every single page byte for byte So I'll take a hash of the page and then check if two pages have the same hash If two pages have the same hash It means their contents could be the same or they could not be the same, but they're definitely not completely They might be different, but they don't have to be So if the two hashes are the same Well, then it will do the expensive checks see if they're the same byte for byte If they're the same byte for byte then it will start sharing that between the two Virtual machines and then well if one of the virtual machines needs to write the page Then our same copy-on-write things are going to happen where we have to make a copy of that page and then Modify it in the new one make sure they're completely isolated But the same concept of copy-on-write does apply for virtual machines Just how you share a page is a bit different All right, other fun things so the hypervisor also provides virtualize IO devices So you can multiplex like each virtual machines say network card to one physical network card and The hypervisor could also just emulate devices that don't physically exist. So some weird network card or some I Don't know what else you could emulate some weird sound card or something like that So you could emulate that and it doesn't actually exist Other things the hypervisor could do is just map one physical device to one virtual device in one VM Give the VM exclusive access to that device But the hypervisor is still in the picture. It's still doing some translation. It's just not doing that much So there is a hardware solution to speed that up that removes the hypervisor from the equation and It is something called IOMMU and that's a new hardware feature now And what that will do is directly map a hardware to directly map hardware to a virtual machine so that virtual machine directly has access to the hardware and the hypervisor does not get in the way at all and This is generally used for things like GPUs that Don't virtualize very well and don't like being shared. So with IOMMU You just give a virtual machine direct access to that hardware and then it can run it at native speed So there's nothing in between it. There's nothing getting in the way Directly uses that GPU and then you know if you were running Linux, you could create a Windows VM map a Graphics card directly to it and then suddenly you have the same performance as Windows as you would have if you just ran it directly on the hardware because the most important part Isn't being virtualized. Nothing's happening to it. It just goes directly to the virtual machine So this is what you know GPU instances will have They'll just directly map a GPU to a virtual machine all right So virtual machines also boot from a virtualized disk So you create a disk image and that has all the contents of a physical disk. It just looks like one big file So it would contain partitions and then each partition has a file system And that file system would look exactly like what you're doing right now in lab 6 So in lab 6 if you knew the contents of the kernel files and where they should be and all that fun stuff Well, you could set it up so you could actually boot a virtual machine off your disk image and actually start Running a virtual machine because usually it's like what you're doing in lab 6 It's just one big file Some formats allow you to split it up into little pieces But the guest kernel just sees it as a normal disk that it has full control over it can read and write and access it And it just looks like a disk to it So this disk image is all you actually need for a virtual machine and makes it easy to move So for instance if your computer died and you saved an image of your virtual machine Well, all you have to do is copy your virtual machine image over to the new computer And you can just boot it up from that and it will look exactly the same as where you left off so makes it really easy to move and the OV if you use some virtual machine software like virtual box Sometimes they'll fool you into thinking a virtual machine. This is really complicated thing that needs a lot of things And they even have their own file extension for it called OVA But really all that is is like a configuration file that says like how much memory and how many CPUs and What network card this virtual machine should have and 99% of it aside from that configuration is all that disk image and that's it So they just package it up so it will import the settings from you But really the disk image is the only thing that's actually important just like for your physical machine The disk is the only thing that's actually really important. You could tear at your disk moving into a computer and it would work So another nice thing you could use virtual machines for is to isolate an application So remember with dynamic libraries if we had an ABI change bad things happen Like we could suddenly change sometimes you could even like change libraries behavior break applications So generally when you deploy applications in the real world you kind of freeze all your dependencies together and deploy them together, but instead of Managing like for this application. I need version 1.2 of this library and for this application I need version 1.3 and then installing them both on the same system making sure they use the right one is a pain Generally what you do that's a lot easier is just create a virtual machine for it That just has library you need and then you give some of the virtual machine and say hey run this It has everything you need don't worry about it but the drawback To that is well my application might be a few hundred like a few megabytes And I also have to supply a kernel with it if it's a virtual machine that might be a gigabyte So that's wasting a lot of space So there's a solution to that as anyone ever heard of Docker That's the solution So containers like Docker it aims to have all the same benefits of virtual machines except just faster and you don't have to give it a kernel so Remember the hypervisor like lets you set limits on cpu time memory network bandwidth all that fun stuff So some kernels well not some kernels only one kernel the links kernel lets you have all those features Just without virtualization So on links there's something called control groups or c groups that support hyper or that support like these hypervisor like features Like isolating processes to something called a namespace And then you can set what that namespace has access to like mount points or files IPC things like that and it runs as a normal user process But it is it is isolated from the other processes that are running so containers Their goal is to give you all the same benefits as a virtual machine Except that while they just all reuse the same kernel So if you're using Docker on Windows or Mac guess what you're using a Linux virtual machine and then Docker is running in that Linux virtual machine and It's all all your Docker Containers are using that Linux kernel that's running in that virtual machine and they're all sharing it But if you're running on Linux, it would just be using your kernel directly Which is why links is the good operating system So everyone uses Docker guess what you're using Linux All right any questions about that already so Virtual machines they virtualize a physical machine So they allow multiple operating systems to share the same hardware They are isolated from each other So the hypervisor is the one that actually controls all the resources a type 2 hypervisor is going to be slower Because it's running all in user mode. It's like trap and emulate and binary translation in order to simulate kernel mode Type 1 hypervisors are supported by hardware So the kernel is actually still running in kernel mode just there is another privileged mode that is even higher privileged in kernel mode called hypervisor mode and There's also other techniques to speed things up. So like IOMMU to give a virtual machine direct access to hardware and exclusive access Then we saw hypervisors could over commit on resources But they're nice because we can physically move virtual machines around and Containers basically aim to have all the benefits of virtual machines Without the overhead of providing a kernel all the time. They all share the same kernel So with that just remember pulling for you. We're all in this together


I've got a confession to make. I'm having a secret love affair with learning. This was me. It started as a kid in kindergarten. This is day one, me getting ready to go to school. Thanks, Mum. She's packed the suitcase with lunch, ensured my pants were tucked up well above my navel. I can see at least our one fashion crime there. But I love school. I love school so much. I eventually went back as a teacher. I've worked in education. I have worked in education for around 20 years. Been moodling since around 2004. Education matters. And thankfully, Moodle has the potential to empower us to improve our world. But the big question is how best to be highly effective at what we do. So let me share with you some ideas to perhaps squeeze more source from your Moodle. Here's the secret source. Five key ingredients. Okay, and we'll go through each of these in a short while. Experience, design, assessment, reporting, mobile. Okay, so first key ingredient. Let's kick off with experience. By that, I mean you may have heard of learner experience. So it's often shortened to the acronym LX. Important fact. Whether you're in a school or university, corporate government or elsewhere, the learner is your customer. That's your student, it's your member of staff, it's your client. Okay, the learning experience of the LX needs to be extraordinary. I suggest that you treat the learner as though your job depends on them, okay? You're depending on them to be able to keep your job or maybe you're in a promotion. I like this Arab proverb. It says a lot. Journey for a thousand miles starts with a single step. So if you like, it's the perfect metaphor, isn't it? That learning is the journey. We need to ensure that the learner sets off on the right path for that journey. So in the context of Moodle, where does the journey begin? I think the journey starts here. It's a fairly innocuous, harmless looking page. That's the login screen. That's often a person's first look at Moodle, okay? So we're going to dig a little bit deeper with the LX and the user workflow in the context of Moodle. Okay, now I appreciate that. Not all of us are system administrators. Some of us may be editing teachers or trainers. I'll try and differentiate the settings and where the settings sit. I think it's in your best interest to ensure that the settings are optimal for your organization and your requirement. Okay, so self-registration, what that's all about there and hopefully this helps in terms of highlighting or zooming a few things. The signup page, it really does depend on your requirement. If it's for internal purposes, you're going to have perhaps central control over who your users are and the distribution and management of user accounts, fair enough. If you've got an external public-facing audience or it's a hybrid approach where some of your users are internal, some are external, it may be in your best interest to open up what's known as email-based self-registration, okay? A lot of sites and services do this. So there's really two places that we need to enable and you may have done that already with your Moodle site. There's a recapture element optionally as well and where that fits, just to give you a little more context if you haven't come across this before. Again, Moodle, like a lot of sites and services on the web, allows users to self-register. So you sign up, you nominate a username, a password, an email address and then toward the bottom of this signup form is perhaps an image with a string of numbers and letters and it's a challenge and response, Moodle's kind of challenging the new user to say, hey, I'm a human, I'm not a robot. So it's one mechanism to keep out the spammers. The next thing Moodle does, we'll send a verification or welcome email with a containing a link. So again, the new user needs to go to the mailbox, click the link and then return to Moodle to log in, okay? So that's sort of the process, the workflow, if you're not familiar with it. You need to be cognizant of that. Sometimes these welcome or verification emails don't arrive in the inbox, they might go to spam for whatever reason. To that end, I guess beyond email-based self-registration, what about guests? Do we open our sites to anonymous users who may be able to browse your Moodle site? Is that a good or a bad thing? Is it desirable or not? So consider that. So we would need to enable the guest login button, okay? So by default there, if guests could browse the site, they would be able to look at your course catalog. It's unlikely by default that they can access courses and see what's going on inside, so fear not, okay? You'd need to open up the guest access enrollment method for that to happen. So they could sort of window shot, you know, look but not touch and see too much. Forcing users to log in. This is a serious consideration, I guess, when any user known or anonymous points their browser at your Moodle site, where do you send them? Okay, and do you force them to log in before they can see or do anything? Auto-focusing the login page. And we'll revisit these elements in a moment on the login page to recap it. But the idea is we can place the cursor in the username field that can make it very convenient for users just to type in their credentials in a way they go, okay? But there are considerations for the visually impaired. You know, there's accessibility considerations there. On the same token, do we try and make it easier for our users to access the system? Do we allow not just a username but the email to be entered in the said field for users to access Moodle? Again, it could mitigate a support payload where people forget usernames and it can't access your Moodle site. Remembering usernames, okay? This is an option we can enable as well. It's all about ease of access. So sort of streamlining that initial user workflow and again, just a more pleasant user experience potentially. These are little considerations and we add these little things together. It could make a big difference to an end user's first impression of your Moodle site. Authentication, so what system are we logging in against? If it's not one of the default systems, it may well be a third party of proprietary system. So, you know, you could connect your system to Microsoft or Google or some other system for SSO or single sign-on. Again, the benefit there being users don't need to remember two sets of credentials. So, a quick recap. Again, we could force users to log in before they see or get anything. We could autofocus the cursor in the username field. We could optionally allow users to allow their browser to remember their username for subsequent visits. That's not recommended, incidentally, on public or shared devices. Guest access, that's a consideration. And if enabled, naturally the guest button is there or else it would be out of sight. And then, of course, down the bottom, we've got create a new account. We would have enabled email-based self-registration. A quick show of hands, perhaps, who's got that enabled on their Moodle site, who has a Moodle site open for an external audience. Looks like perhaps about 20, 25%. That's curious. Look, beyond authentication or logging, the next consideration around LX for our first-time users is where do we direct that traffic? Where do they go? What do they see? So, by default, Moodle has set up Dashboard as that place. So, it's the next stop on the journey. If you're using Boost in a fairly recent version of Moodle, it may look something like this. It does speak to the learner. You know, we've got the learner's name and avatar at the top there, and perhaps a list of courses or learning that are current or present, and then perhaps future or past completed learning as well. So, a very personalized page, I believe. In contrast, another option with that navigation is to direct users upon login to the front page of what's known as Site Home. So, think about your Moodle site and the user workflow. Where do you send your users upon login? This is perhaps a little more generic. One size fits all. It maybe does not speak to the learner in quite the same way. All right. Key ingredient, too, I believe, is course design. So, what does that mean? What does it look like in the context of Moodle? Firstly, a quote from Leonardo da Vinci. Simplicity is the ultimate sophistication. So, I think we need to keep it very simple. That's sometimes said that any edit can make something complicated. Okay? So, we really do want to go by the mantra of less is best. Okay? So, how does that apply to the context of course design? Well, now for Moodle, with what we've got here, some of these settings, thankfully, we won't be dependent on a system administrator. We, as editing trainers or teachers, can access some of these settings within our course. So, course layout is something to bear in mind there. So, I don't believe this is the default, but to show one section per page. So, a section is like a week or a topic, depending on your course format. What does that do for us? Well, it can mitigate this thing known as the scroll of death. Okay? Which is, I guess, it's a usability nightmare, especially on a small handheld device. So, we want to aim to chunk the learning into bite-sized bits. That's, you know, that's recommended its best practice for course design. Okay? So, this is just maybe a snippet from a course that's set up to show all sections on the single course page. So, also known as the scroll of death. So, a section, again, being just simply a topic or a week, there could be a lot more down here that we don't see at the moment. So, imagine that on a tablet or a mobile, there would be a lot of swiping. Not highly usable. Very overwhelming, I'd imagine, for a first-time user as well. Imagine you had 10 topics or sections looking just like this, and the user comes in, they see it all in their initial view. It could be quite demoralizing. So, what do we do? We chunk up the learning into bite-sized digestible bits. So, this is the alternate layout, one section per page. So, you've got the topics there, or the sections, or the weeks, depending on your course format. And then over on the right side, we've got an indication, I suppose, of the activities that are resources that sit there behind. So, we would click the relevant section, and then we go in there and focus our attention on this particular section, so that might be an activity or a resource. We can navigate forward or back using the links or the jump-to menu as well, okay? So, it's highly usable, and it flows quite nicely, in fact, for, you know, a unified experience across desktop, tablet, and mobile, especially via the Boost theme. Next consideration, as far as course design is concerned, will be file size upload. So, I reckon 10 megabytes is fairly adequate for a simple piece of media, a typical document or presentation. You will be completely fine, and so will be your learners if they're uploading, sharing, collaborating. I'd say the general rule is this, if it's too big to be an email attachment, it may be too big for Moodle, all right? So, you have to think, again, about chunking this up or breaking it down into smaller, quite-sized bits.  It would be a very painful experience if we're constantly sharing very large files with them or very big pieces of media. Okay, so, further than that is this idea of columns, and that flows into the notion of blocks, and you might be familiar with each or both of those things, but this is very much a single-column layout. The Boost theme does encourage that. It seems that Moodle is moving away from blocks and promoting this single-column layout, and it unifies, again, across desktop, tablet, and mobile. Incidentally, if you've used, for example, Boost or some of these modern web-responsive themes, Vira browser on a tablet or mobile, and you've got blocks in, say, a second or a third column, maybe on the right or the left, you might have noticed on your tablet or mobile those blocks get demoted to the bottom of the page. So it is really, it's telling us, hey, let's think about this single-column layout. So what's the benefit of that? Well, the idea really is to focus the learner's attention. So we can see here we've got some, you know, we've got some blocks, perhaps, on the left side there. You could argue that may be a distraction. Certainly with the Boost theme, we know that we can, if I point there, we can, we can collapse that left block and it's out of view for our end users. Okay, repositories moving along. So we can go beyond text, and I mean there's empirical studies and research that does show that, you know, online learners have less tolerance for text, and in fact we could go further than that and say the smaller the device or the screen real estate, the less time we can expect from them. Okay, so again that idea of simplicity, less is best, chunking up learning. We've got to go beyond text if we're going to engage and captivate. So thankfully Moodle has a suite of repositories that we can enable and configure. This is just some of them. Who's using any of these? A quick show of hands. Okay, about 40 or 50%. That's tremendous. And again there might be a couple there that are relevant to your organization. Say for example, you know, maybe Google Drive or OneDrive or YouTube, and you can hook into these. Not just for teachers and trainers, but your learners can also be sharing their resources with the course and the community. So it works like this. We can configure the repositories. These are the default ones, and they're typically enabled. But if we go beyond that, there's the list there. Okay, so we enable them, configure them, and away we go. So these come into play wherever you see Ato, the default editor, text editor and Moodle, you know, you might be going to insert an image, insert a video, you're uploading a file, and you will see the enabled and configured repositories in the left pane here. There could be, you know, Google Drive, YouTube and so forth. So it gives you more options to make the learning experience and the course rich. Discussion forums. Look, in two words, use them. I see a lot of Moodle sites, and unfortunately forums tend to be underutilized. I think there's a reason that every new Moodle course is given one activity to start with, and it happens to be a forum. They really ought to be part of the staple diet for blended and online learning. Okay, we can post announcements, share ideas, ask questions, get answers, and help each other. Okay, more to the point. You know, regardless of your industry or sector, you can build a community of practice.  Okay, ingredient three is assessments. So this is where we as educators get a chance to measure learning, define the sequence of learning, and gather feedback, and we can reward achievement. Hopefully a combination of those things. I see this a lot. Too many sticks. So what do I mean by sticks?   You know, you've got to do this to keep your job. You know, I want you to do this so I get to keep my job. We need to do this together so we can tick that box. So a lot of sticks in training and learning. I'd love to see more carrots. Carrots are like, you know, incentives, motivators to learn and achieve. So let's recognize that achievement, and that could be the recognition of competence, knowledge, skill, understanding, and the like. Okay, to that end, we've got completion tracking. So firstly, this needs to be enabled globally by your system administrator, and then you can come into the course settings right here and just ensure that it's enabled. You may not want to track everything in your course, but you can be, you know, use your professional judgment and be judicious about it. So you come in, you add an activity or resource, you'd be familiar with this, and if you're doing activity tracking, you may have wondered what's in here, so here it is. We open that up and there's a raft of options. There's essentially three modes for activity tracking. Either don't track. Option two is allow students to manually tick a box. Very dangerous. I don't generally recommend it. The third option is desirable. So we can show an activity as complete when conditions are met. And you can see that the requisites there and the tick boxes alongside them, we can choose what the conditions for completion are. And the requisites will vary, you know, depending on the nature of the activity or resource. Is it an assignment? Is it a quiz, a forum, or just a, you know, a plain document or presentation, a file. Okay?  It's not a firm date, like an absolute deadline, like an assignment or a quiz, but that date will flow through into the user's dashboard. If you've seen the timeline there and things can be flagged as, sort of, due in the next seven days or 30 days, that's where this expected completed flows to. So that's a quite a neat little thing. If you're using, say, Moodle 3.5, you can hook into that. Okay. Restricting access. So our learning, it's not everyone's pot of tea, but if your learning needs to be conditional by nature, very sequential, you know, sort of do A and then B, then C, this could be very pertinent to you. So we add a restriction. There's some options there. I think the easiest way to get started is with an activity completion restriction. Right? And this is an example. I prepared this one earlier. So the student must, in this case, complete a forum before they can do this particular activity. So do A and then it unlocks B. And this is an example of how it might be in a course. Again, the forum's there, so the student may need to read the forum or respond to the post or start their own discussion, depending on the requisite conditions, and then it will unlock this activity that's restricted at the moment. Quick show of hands. Who's using restricted access or conditional activities? Well, lots of us. So if you're using that, that was maybe 60% or more. It's fair to say you're probably tracking activities as well. I wonder if you're doing this next thing and we'll get to it in a moment. Now, we've got feedback. Naturally, you know, if you're serious about education and continuous improvement, you want to refine what you're doing version for version, year for year. We need to give an opportunity for our learners to tell us what worked well and what could be improved on. Okay, so a feedback, you know, if you use a survey, a questionnaire, this wonderful tool in Built Within Moodle allows you to build one quickly on the fly. You can collect some very helpful, qualitative and quantitative data and then analyze it. Refine what you do for next time. So my advice would be this. Ensure that the feedback is set up as anonymous. That way, look, firstly, your students are more likely to complete the feedback and then secondly, be honest about it, okay? So there's no fear or concern that, you know, if they give some brutal feedback, that it's going to affect their final grade. Okay, badges. So look, with everything we've done here, we've learned experience, course design, assessment, tying it together again, recognizing learning in a digital sense. I guess badges are sort of the 21st century equivalent of a certificate in a lot of ways. So firstly here, look, your system administrator needs to enable this globally and then we as teachers and trainers can add badges to our courses, okay? So again, it's all about recognition of learner achievement, motivating, rewarding, incentivizing. So it's turned on there by the system admin. We come into our course and we manage badges, okay? So we add a badge. We give it a name, a description, and then we add the badge itself. So the badge should be like, I guess, an avatar. It's a little image, maybe circular, colorful, meaningful. If you've got an array of badges that you're planning to issue, because your organization in this case would become an issuing authority, I'd suggest the badges should look like they're part of the same family, all right? If you've got a graphic designer, that's terrific. If you don't, come and see me. I've got a couple hundred badges that'll help you get started. So we set that up. We specify the criteria. In this case, it may be activity completion. I reckon course completion, okay? And then we enable it and set it off into the wild. So the idea is the learner earns the badge, or they're issued with the badge. It'll likely get emailed to them and they get notified via Moodle.  And they can push this badge out to Mozilla, potentially. It's an open backpack. And then, alternatively, you can add the badge in third-party sites and services. So maybe LinkedIn, Facebook, or elsewhere. It might actually help your learners earn a job or a promotion, all right? So at the very least, show off their digital competence. Okay, reporting. Let's track progress and measure outcomes. So the simple ways to do this, naturally, if you're tracking activities, we can report on them. This is the learner snapshot, I suppose, for us as trainers, teachers, administrators. That's the bird's-eye view of what's going on in your course. Before this, back in, say, Moodle version 1.9 or 2, it was very much sort of learning limbo. No one knew where anyone was at in a course. So this has been a quantum leap. We can go one better. We can aggregate some or all of those activities that we're tracking through to course completion, okay? And the end result is this is a course completion report. We know who is inducted or on-boarded, who's compliant, who's finished the training, whatever its nature may be. So the rightmost column there will tell us the truth of the tale, okay? And naturally, you won't expect to see a tick in the rightmost course completion column unless you've seen ticks in the preceding columns. Righto? I know we said Moodle's getting away from adding badges to their courses and to lay out the theme supporting that, but if you were to add one block, it may be the course completion status block. Looks a bit like this on the right side there. So the learner comes in, sees their status and where they're at and what they need to do to complete the course. So they click in there for more details, and you can see, you know, the requisites, the criteria and the status. So it's very visible. I suppose it will become more visual with time, I think more graphical perhaps, and that can certainly, as it does already, flow into the dashboard. Lastly, mobile. Let's face it, many humans are attached, some would say addicted to their mobile devices, okay? What does that mean for us as educators, online educators? We've got a potential, a massive potential audience waiting to be captivated, okay? Some would say it's like shooting fish in a barrel for one of a better phrase. So here's a big stat. 80% of internet use will be mobile by 2019, according to ROI agency Zenith. So that's a big stat. And look, the mobile share of global internet use is growing, it continues to. In fact, in the developing world, many people's first interaction with the internet is on a small handheld device, a mobile or tablet, okay? They never use a laptop or a desktop device. So what does that mean for us as Moodlers? And how do we get mobile ready or mobile friendly? A few simple things. Firstly, ensure your system admin has enabled device detection. This is for a browser-driven experience, incidentally, okay? So Moodle then becomes intelligent enough to know if the user's accessing the system on desktop, tablet or mobile. And if you've got a theme optimized for the said device, it will be a better user experience, okay? I see this too often. The default device is set up in the theme selector, maybe for Boost or something that's clean, modern and web responsive, that's terrific. But mobile and tablet down the bottom of this particular settings page are neglected. There's nothing set there. That's disastrous, okay? If the very least come in or get your system administrator to select, the Boost theme for tablet and mobile. And if you're wondering about legacy, that pertains to antiquated, outdated mobile, mobile, I should say, browsers. Right, so there's Boost. And you might have seen this already. All right, getting away just quickly from the browser-driven mobile experience. The other option is an app. So, you know, Moodle's got a freely available mobile app on the various stores. You want to enable web services for mobile devices. This is a sysadmin setting. Make sure that's ticked. And then come into message outputs and enable mobile as well. So, you'll have something like this. So, very unified across the tablet, mobile, and even desktop. Plug-ins, so as we said there before, people have got less tolerance for text. We've got to really have some pop and wow to our courses. Media could help to that end. Video consumption is paralleling, if you like, internet consumption via mobile devices. It's a similar trend, okay? So, enable a multimedia plugin, and then you come in here and select the players that you want to tap into. So, VideoJS, Vimeo, YouTube, HTML5. I'd suggest Flash is dead. It will be very soon, 2020. So, this is it, enclosure. Just bringing all this together. Here's the recipe. So, less is best. We've said Streamline. We want to minimize things like click, scrolls, and text. We're going to maximize media where appropriate. Display this essential information at the top in the area they call Section Zero, whatever's pinned at the top and persists. Chunk the learning into bite-sized bits and consistency everywhere across Moodle. So, that's from the theme to the courses, the layouts to the blocks. If we use them, where do we position them, et cetera. And, furthermore, enabling these things. Think about repositories. Use forums if you're not already. Let's get mobile ready and friendly. Configuring. So, we can track activities through to completion and report on it. Listen to your learners. Gather feedback. And, again, as we said there before, less sticks, more carrots. Finished with a quote from Archimedes. He was a Greek thinker, a mathematician around 200 BC. He said, give me a platform strong enough, a lever long enough, and I'll move the world. So, I trust you've now got some leverage to better use Moodle to move your world. Thank you.